From 86aed4e0732a1a61bff5af943b581b58e26e541d Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Wed, 29 Sep 2021 12:14:15 -0400 Subject: [PATCH 001/289] Closes #7318: Raise minimum required PostgreSQL version from 9.6 to 10 --- docs/configuration/required-settings.md | 2 +- docs/index.md | 2 +- docs/installation/1-postgresql.md | 4 ++-- docs/installation/index.md | 2 +- docs/installation/upgrading.md | 2 +- docs/release-notes/version-3.1.md | 8 ++++++++ 6 files changed, 14 insertions(+), 6 deletions(-) create mode 100644 docs/release-notes/version-3.1.md diff --git a/docs/configuration/required-settings.md b/docs/configuration/required-settings.md index 3158fc73a..a62d14fef 100644 --- a/docs/configuration/required-settings.md +++ b/docs/configuration/required-settings.md @@ -25,7 +25,7 @@ ALLOWED_HOSTS = ['*'] ## DATABASE -NetBox requires access to a PostgreSQL 9.6 or later database service to store data. This service can run locally on the NetBox server or on a remote system. The following parameters must be defined within the `DATABASE` dictionary: +NetBox requires access to a PostgreSQL 10 or later database service to store data. This service can run locally on the NetBox server or on a remote system. The following parameters must be defined within the `DATABASE` dictionary: * `NAME` - Database name * `USER` - PostgreSQL username diff --git a/docs/index.md b/docs/index.md index c25c5be16..7abbd9310 100644 --- a/docs/index.md +++ b/docs/index.md @@ -48,7 +48,7 @@ NetBox is built on the [Django](https://djangoproject.com/) Python framework and | HTTP service | nginx or Apache | | WSGI service | gunicorn or uWSGI | | Application | Django/Python | -| Database | PostgreSQL 9.6+ | +| Database | PostgreSQL 10+ | | Task queuing | Redis/django-rq | | Live device access | NAPALM | diff --git a/docs/installation/1-postgresql.md b/docs/installation/1-postgresql.md index 43b12f0e8..36a4f87b9 100644 --- a/docs/installation/1-postgresql.md +++ b/docs/installation/1-postgresql.md @@ -3,7 +3,7 @@ This section entails the installation and configuration of a local PostgreSQL database. If you already have a PostgreSQL database service in place, skip to [the next section](2-redis.md). !!! warning - NetBox requires PostgreSQL 9.6 or higher. Please note that MySQL and other relational databases are **not** currently supported. + NetBox requires PostgreSQL 10 or later. Please note that MySQL and other relational databases are **not** supported. ## Installation @@ -22,7 +22,7 @@ This section entails the installation and configuration of a local PostgreSQL da ``` !!! info - PostgreSQL 9.6 and later are available natively on CentOS 8.2. If using an earlier CentOS release, you may need to [install it from an RPM](https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/). + PostgreSQL 10 and later are available natively on CentOS 8.2. If using an earlier CentOS release, you may need to [install it from an RPM](https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/). CentOS configures ident host-based authentication for PostgreSQL by default. Because NetBox will need to authenticate using a username and password, modify `/var/lib/pgsql/data/pg_hba.conf` to support MD5 authentication by changing `ident` to `md5` for the lines below: diff --git a/docs/installation/index.md b/docs/installation/index.md index 893b1f639..375338d7e 100644 --- a/docs/installation/index.md +++ b/docs/installation/index.md @@ -20,7 +20,7 @@ The video below demonstrates the installation of NetBox v2.10.3 on Ubuntu 20.04 | Dependency | Minimum Version | |------------|-----------------| | Python | 3.7 | -| PostgreSQL | 9.6 | +| PostgreSQL | 10 | | Redis | 4.0 | Below is a simplified overview of the NetBox application stack for reference: diff --git a/docs/installation/upgrading.md b/docs/installation/upgrading.md index 9854afeb4..cd14bf8f0 100644 --- a/docs/installation/upgrading.md +++ b/docs/installation/upgrading.md @@ -11,7 +11,7 @@ NetBox v3.0 and later requires the following: | Dependency | Minimum Version | |------------|-----------------| | Python | 3.7 | -| PostgreSQL | 9.6 | +| PostgreSQL | 10 | | Redis | 4.0 | ## Install the Latest Release diff --git a/docs/release-notes/version-3.1.md b/docs/release-notes/version-3.1.md new file mode 100644 index 000000000..4758177e3 --- /dev/null +++ b/docs/release-notes/version-3.1.md @@ -0,0 +1,8 @@ +## v3.1-beta1 (FUTURE) + +!!! warning "PostgreSQL 10 Required" + NetBox v3.1 requires PostgreSQL 10 or later. + +### Other Changes + +* [#7318](https://github.com/netbox-community/netbox/issues/7318) - Raise minimum required PostgreSQL version from 9.6 to 10 From 18c3bb673f762ec92e96ce75c0d21b2e98664348 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Thu, 7 Oct 2021 15:09:42 -0400 Subject: [PATCH 002/289] Closes #1337: Add WWN field to interfaces --- docs/release-notes/version-3.1.md | 4 ++ netbox/dcim/api/serializers.py | 2 +- netbox/dcim/fields.py | 55 +++++++++++++++++--- netbox/dcim/filtersets.py | 3 +- netbox/dcim/forms/bulk_edit.py | 6 ++- netbox/dcim/forms/bulk_import.py | 4 +- netbox/dcim/forms/filtersets.py | 6 ++- netbox/dcim/forms/models.py | 2 +- netbox/dcim/migrations/0134_interface_wwn.py | 17 ++++++ netbox/dcim/models/device_components.py | 8 ++- netbox/dcim/tables/devices.py | 4 +- netbox/dcim/tests/test_views.py | 3 ++ netbox/netbox/graphql/__init__.py | 3 +- netbox/templates/dcim/interface.html | 4 ++ netbox/templates/dcim/interface_edit.html | 1 + netbox/utilities/filters.py | 4 ++ 16 files changed, 107 insertions(+), 19 deletions(-) create mode 100644 netbox/dcim/migrations/0134_interface_wwn.py diff --git a/docs/release-notes/version-3.1.md b/docs/release-notes/version-3.1.md index 4758177e3..4856c1a4c 100644 --- a/docs/release-notes/version-3.1.md +++ b/docs/release-notes/version-3.1.md @@ -3,6 +3,10 @@ !!! warning "PostgreSQL 10 Required" NetBox v3.1 requires PostgreSQL 10 or later. +### Enhancements + +* [#1337](https://github.com/netbox-community/netbox/issues/1337) - Add WWN field to interfaces + ### Other Changes * [#7318](https://github.com/netbox-community/netbox/issues/7318) - Raise minimum required PostgreSQL version from 9.6 to 10 diff --git a/netbox/dcim/api/serializers.py b/netbox/dcim/api/serializers.py index 8e2fa15af..a7d2e88da 100644 --- a/netbox/dcim/api/serializers.py +++ b/netbox/dcim/api/serializers.py @@ -645,7 +645,7 @@ class InterfaceSerializer(PrimaryModelSerializer, CableTerminationSerializer, Co model = Interface fields = [ 'id', 'url', 'display', 'device', 'name', 'label', 'type', 'enabled', 'parent', 'lag', 'mtu', 'mac_address', - 'mgmt_only', 'description', 'mode', 'untagged_vlan', 'tagged_vlans', 'mark_connected', 'cable', + 'wwn', 'mgmt_only', 'description', 'mode', 'untagged_vlan', 'tagged_vlans', 'mark_connected', 'cable', 'cable_peer', 'cable_peer_type', 'connected_endpoint', 'connected_endpoint_type', 'connected_endpoint_reachable', 'tags', 'custom_fields', 'created', 'last_updated', 'count_ipaddresses', '_occupied', diff --git a/netbox/dcim/fields.py b/netbox/dcim/fields.py index 21af2ed14..d3afe5c08 100644 --- a/netbox/dcim/fields.py +++ b/netbox/dcim/fields.py @@ -2,11 +2,30 @@ from django.contrib.postgres.fields import ArrayField from django.core.exceptions import ValidationError from django.core.validators import MinValueValidator, MaxValueValidator from django.db import models -from netaddr import AddrFormatError, EUI, mac_unix_expanded +from netaddr import AddrFormatError, EUI, eui64_unix_expanded, mac_unix_expanded from ipam.constants import BGP_ASN_MAX, BGP_ASN_MIN from .lookups import PathContains +__all__ = ( + 'ASNField', + 'MACAddressField', + 'PathField', + 'WWNField', +) + + +class mac_unix_expanded_uppercase(mac_unix_expanded): + word_fmt = '%.2X' + + +class eui64_unix_expanded_uppercase(eui64_unix_expanded): + word_fmt = '%.2X' + + +# +# Fields +# class ASNField(models.BigIntegerField): description = "32-bit ASN field" @@ -24,10 +43,6 @@ class ASNField(models.BigIntegerField): return super().formfield(**defaults) -class mac_unix_expanded_uppercase(mac_unix_expanded): - word_fmt = '%.2X' - - class MACAddressField(models.Field): description = "PostgreSQL MAC Address field" @@ -42,8 +57,8 @@ class MACAddressField(models.Field): return value try: return EUI(value, version=48, dialect=mac_unix_expanded_uppercase) - except AddrFormatError as e: - raise ValidationError("Invalid MAC address format: {}".format(value)) + except AddrFormatError: + raise ValidationError(f"Invalid MAC address format: {value}") def db_type(self, connection): return 'macaddr' @@ -54,6 +69,32 @@ class MACAddressField(models.Field): return str(self.to_python(value)) +class WWNField(models.Field): + description = "World Wide Name field" + + def python_type(self): + return EUI + + def from_db_value(self, value, expression, connection): + return self.to_python(value) + + def to_python(self, value): + if value is None: + return value + try: + return EUI(value, version=64, dialect=eui64_unix_expanded_uppercase) + except AddrFormatError: + raise ValidationError(f"Invalid WWN format: {value}") + + def db_type(self, connection): + return 'macaddr8' + + def get_prep_value(self, value): + if not value: + return None + return str(self.to_python(value)) + + class PathField(ArrayField): """ An ArrayField which holds a set of objects, each identified by a (type, ID) tuple. diff --git a/netbox/dcim/filtersets.py b/netbox/dcim/filtersets.py index 6f2c23c90..9457507bb 100644 --- a/netbox/dcim/filtersets.py +++ b/netbox/dcim/filtersets.py @@ -10,7 +10,7 @@ from tenancy.filtersets import TenancyFilterSet from tenancy.models import Tenant from utilities.choices import ColorChoices from utilities.filters import ( - ContentTypeFilter, MultiValueCharFilter, MultiValueMACAddressFilter, MultiValueNumberFilter, + ContentTypeFilter, MultiValueCharFilter, MultiValueMACAddressFilter, MultiValueNumberFilter, MultiValueWWNFilter, TreeNodeMultipleChoiceFilter, ) from virtualization.models import Cluster @@ -964,6 +964,7 @@ class InterfaceFilterSet(PrimaryModelFilterSet, DeviceComponentFilterSet, CableT label='LAG interface (ID)', ) mac_address = MultiValueMACAddressFilter() + wwn = MultiValueWWNFilter() tag = TagFilter() vlan_id = django_filters.CharFilter( method='filter_vlan_id', diff --git a/netbox/dcim/forms/bulk_edit.py b/netbox/dcim/forms/bulk_edit.py index c1b1bcb3a..5cfe86118 100644 --- a/netbox/dcim/forms/bulk_edit.py +++ b/netbox/dcim/forms/bulk_edit.py @@ -921,7 +921,8 @@ class PowerOutletBulkEditForm( class InterfaceBulkEditForm( form_from_model(Interface, [ - 'label', 'type', 'parent', 'lag', 'mac_address', 'mtu', 'mgmt_only', 'mark_connected', 'description', 'mode', + 'label', 'type', 'parent', 'lag', 'mac_address', 'wwn', 'mtu', 'mgmt_only', 'mark_connected', 'description', + 'mode', ]), BootstrapMixin, AddRemoveTagsForm, @@ -972,7 +973,8 @@ class InterfaceBulkEditForm( class Meta: nullable_fields = [ - 'label', 'parent', 'lag', 'mac_address', 'mtu', 'description', 'mode', 'untagged_vlan', 'tagged_vlans' + 'label', 'parent', 'lag', 'mac_address', 'wwn', 'mtu', 'description', 'mode', 'untagged_vlan', + 'tagged_vlans', ] def __init__(self, *args, **kwargs): diff --git a/netbox/dcim/forms/bulk_import.py b/netbox/dcim/forms/bulk_import.py index 072cdf0e0..8f7755869 100644 --- a/netbox/dcim/forms/bulk_import.py +++ b/netbox/dcim/forms/bulk_import.py @@ -577,8 +577,8 @@ class InterfaceCSVForm(CustomFieldModelCSVForm): class Meta: model = Interface fields = ( - 'device', 'name', 'label', 'parent', 'lag', 'type', 'enabled', 'mark_connected', 'mac_address', 'mtu', - 'mgmt_only', 'description', 'mode', + 'device', 'name', 'label', 'parent', 'lag', 'type', 'enabled', 'mark_connected', 'mac_address', 'wwn', + 'mtu', 'mgmt_only', 'description', 'mode', ) def __init__(self, *args, **kwargs): diff --git a/netbox/dcim/forms/filtersets.py b/netbox/dcim/forms/filtersets.py index 95ff9aa3d..0079217ab 100644 --- a/netbox/dcim/forms/filtersets.py +++ b/netbox/dcim/forms/filtersets.py @@ -957,7 +957,7 @@ class InterfaceFilterForm(DeviceComponentFilterForm): model = Interface field_groups = [ ['q', 'tag'], - ['name', 'label', 'type', 'enabled', 'mgmt_only', 'mac_address'], + ['name', 'label', 'type', 'enabled', 'mgmt_only', 'mac_address', 'wwn'], ['region_id', 'site_group_id', 'site_id', 'location_id', 'device_id'], ] type = forms.MultipleChoiceField( @@ -981,6 +981,10 @@ class InterfaceFilterForm(DeviceComponentFilterForm): required=False, label='MAC address' ) + wwn = forms.CharField( + required=False, + label='WWN' + ) tag = TagFilterField(model) diff --git a/netbox/dcim/forms/models.py b/netbox/dcim/forms/models.py index 009e1fe3f..0b6e66c3c 100644 --- a/netbox/dcim/forms/models.py +++ b/netbox/dcim/forms/models.py @@ -1091,7 +1091,7 @@ class InterfaceForm(BootstrapMixin, InterfaceCommonForm, CustomFieldModelForm): class Meta: model = Interface fields = [ - 'device', 'name', 'label', 'type', 'enabled', 'parent', 'lag', 'mac_address', 'mtu', 'mgmt_only', + 'device', 'name', 'label', 'type', 'enabled', 'parent', 'lag', 'mac_address', 'wwn', 'mtu', 'mgmt_only', 'mark_connected', 'description', 'mode', 'untagged_vlan', 'tagged_vlans', 'tags', ] widgets = { diff --git a/netbox/dcim/migrations/0134_interface_wwn.py b/netbox/dcim/migrations/0134_interface_wwn.py new file mode 100644 index 000000000..0739edbbb --- /dev/null +++ b/netbox/dcim/migrations/0134_interface_wwn.py @@ -0,0 +1,17 @@ +import dcim.fields +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('dcim', '0133_port_colors'), + ] + + operations = [ + migrations.AddField( + model_name='interface', + name='wwn', + field=dcim.fields.WWNField(blank=True, null=True), + ), + ] diff --git a/netbox/dcim/models/device_components.py b/netbox/dcim/models/device_components.py index a321c8059..386776b41 100644 --- a/netbox/dcim/models/device_components.py +++ b/netbox/dcim/models/device_components.py @@ -9,7 +9,7 @@ from mptt.models import MPTTModel, TreeForeignKey from dcim.choices import * from dcim.constants import * -from dcim.fields import MACAddressField +from dcim.fields import MACAddressField, WWNField from dcim.svg import CableTraceSVG from extras.utils import extras_features from netbox.models import PrimaryModel @@ -511,6 +511,12 @@ class Interface(ComponentModel, BaseInterface, CableTermination, PathEndpoint): verbose_name='Management only', help_text='This interface is used only for out-of-band management' ) + wwn = WWNField( + null=True, + blank=True, + verbose_name='WWN', + help_text='64-bit World Wide Name' + ) untagged_vlan = models.ForeignKey( to='ipam.VLAN', on_delete=models.SET_NULL, diff --git a/netbox/dcim/tables/devices.py b/netbox/dcim/tables/devices.py index c22e673b7..c2b4b907b 100644 --- a/netbox/dcim/tables/devices.py +++ b/netbox/dcim/tables/devices.py @@ -492,7 +492,7 @@ class InterfaceTable(DeviceComponentTable, BaseInterfaceTable, PathEndpointTable class Meta(DeviceComponentTable.Meta): model = Interface fields = ( - 'pk', 'name', 'device', 'label', 'enabled', 'type', 'mgmt_only', 'mtu', 'mode', 'mac_address', + 'pk', 'name', 'device', 'label', 'enabled', 'type', 'mgmt_only', 'mtu', 'mode', 'mac_address', 'wwn', 'description', 'mark_connected', 'cable', 'cable_color', 'cable_peer', 'connection', 'tags', 'ip_addresses', 'untagged_vlan', 'tagged_vlans', ) @@ -524,7 +524,7 @@ class DeviceInterfaceTable(InterfaceTable): class Meta(DeviceComponentTable.Meta): model = Interface fields = ( - 'pk', 'name', 'label', 'enabled', 'type', 'parent', 'lag', 'mgmt_only', 'mtu', 'mode', 'mac_address', + 'pk', 'name', 'label', 'enabled', 'type', 'parent', 'lag', 'mgmt_only', 'mtu', 'mode', 'mac_address', 'wwn', 'description', 'mark_connected', 'cable', 'cable_color', 'cable_peer', 'connection', 'tags', 'ip_addresses', 'untagged_vlan', 'tagged_vlans', 'actions', ) diff --git a/netbox/dcim/tests/test_views.py b/netbox/dcim/tests/test_views.py index 18eaeec3b..00904d444 100644 --- a/netbox/dcim/tests/test_views.py +++ b/netbox/dcim/tests/test_views.py @@ -1469,6 +1469,7 @@ class InterfaceTestCase(ViewTestCases.DeviceComponentViewTestCase): 'enabled': False, 'lag': interfaces[3].pk, 'mac_address': EUI('01:02:03:04:05:06'), + 'wwn': EUI('01:02:03:04:05:06:07:08', version=64), 'mtu': 65000, 'mgmt_only': True, 'description': 'A front port', @@ -1485,6 +1486,7 @@ class InterfaceTestCase(ViewTestCases.DeviceComponentViewTestCase): 'enabled': False, 'lag': interfaces[3].pk, 'mac_address': EUI('01:02:03:04:05:06'), + 'wwn': EUI('01:02:03:04:05:06:07:08', version=64), 'mtu': 2000, 'mgmt_only': True, 'description': 'A front port', @@ -1499,6 +1501,7 @@ class InterfaceTestCase(ViewTestCases.DeviceComponentViewTestCase): 'enabled': True, 'lag': interfaces[3].pk, 'mac_address': EUI('01:02:03:04:05:06'), + 'wwn': EUI('01:02:03:04:05:06:07:08', version=64), 'mtu': 2000, 'mgmt_only': True, 'description': 'New description', diff --git a/netbox/netbox/graphql/__init__.py b/netbox/netbox/graphql/__init__.py index 069f6a9c8..0ad25a541 100644 --- a/netbox/netbox/graphql/__init__.py +++ b/netbox/netbox/graphql/__init__.py @@ -2,7 +2,7 @@ import graphene from graphene_django.converter import convert_django_field from taggit.managers import TaggableManager -from dcim.fields import MACAddressField +from dcim.fields import MACAddressField, WWNField from ipam.fields import IPAddressField, IPNetworkField @@ -17,6 +17,7 @@ def convert_field_to_tags_list(field, registry=None): @convert_django_field.register(IPAddressField) @convert_django_field.register(IPNetworkField) @convert_django_field.register(MACAddressField) +@convert_django_field.register(WWNField) def convert_field_to_string(field, registry=None): # TODO: Update to use get_django_field_description under django_graphene v3.0 return graphene.String(description=field.help_text, required=not field.null) diff --git a/netbox/templates/dcim/interface.html b/netbox/templates/dcim/interface.html index 3a4d16db3..f9a9b0425 100644 --- a/netbox/templates/dcim/interface.html +++ b/netbox/templates/dcim/interface.html @@ -91,6 +91,10 @@ MAC Address {{ object.mac_address|placeholder }} + + WWN + {{ object.wwn|placeholder }} + 802.1Q Mode {{ object.get_mode_display|placeholder }} diff --git a/netbox/templates/dcim/interface_edit.html b/netbox/templates/dcim/interface_edit.html index 38b22fe5e..041eab73a 100644 --- a/netbox/templates/dcim/interface_edit.html +++ b/netbox/templates/dcim/interface_edit.html @@ -20,6 +20,7 @@ {% render_field form.parent %} {% render_field form.lag %} {% render_field form.mac_address %} + {% render_field form.wwn %} {% render_field form.mtu %} {% render_field form.description %} {% render_field form.tags %} diff --git a/netbox/utilities/filters.py b/netbox/utilities/filters.py index ed71afc1b..8dac65aac 100644 --- a/netbox/utilities/filters.py +++ b/netbox/utilities/filters.py @@ -57,6 +57,10 @@ class MultiValueMACAddressFilter(django_filters.MultipleChoiceFilter): field_class = multivalue_field_factory(MACAddressField) +class MultiValueWWNFilter(django_filters.MultipleChoiceFilter): + field_class = multivalue_field_factory(MACAddressField) + + class TreeNodeMultipleChoiceFilter(django_filters.ModelMultipleChoiceFilter): """ Filters for a set of Models, including all descendant models within a Tree. Example: [,] From 5a6190e321e9494d458fa7d4fa56520b5d50ed17 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Thu, 7 Oct 2021 15:46:21 -0400 Subject: [PATCH 003/289] Closes #6874: Add tenant assignment for locations --- docs/release-notes/version-3.1.md | 1 + netbox/dcim/api/serializers.py | 5 +++-- netbox/dcim/forms/bulk_edit.py | 6 +++++- netbox/dcim/forms/bulk_import.py | 8 +++++++- netbox/dcim/forms/filtersets.py | 7 ++++++- netbox/dcim/forms/models.py | 10 ++++++++-- .../dcim/migrations/0135_location_tenant.py | 18 +++++++++++++++++ netbox/dcim/models/sites.py | 8 +++++++- netbox/dcim/tables/sites.py | 5 +++-- netbox/dcim/tests/test_views.py | 20 ++++++++++--------- netbox/templates/dcim/location.html | 13 ++++++++++++ 11 files changed, 82 insertions(+), 19 deletions(-) create mode 100644 netbox/dcim/migrations/0135_location_tenant.py diff --git a/docs/release-notes/version-3.1.md b/docs/release-notes/version-3.1.md index 4856c1a4c..00a6e2fda 100644 --- a/docs/release-notes/version-3.1.md +++ b/docs/release-notes/version-3.1.md @@ -6,6 +6,7 @@ ### Enhancements * [#1337](https://github.com/netbox-community/netbox/issues/1337) - Add WWN field to interfaces +* [#6874](https://github.com/netbox-community/netbox/issues/6874) - Add tenant assignment for locations ### Other Changes diff --git a/netbox/dcim/api/serializers.py b/netbox/dcim/api/serializers.py index a7d2e88da..d6e44c281 100644 --- a/netbox/dcim/api/serializers.py +++ b/netbox/dcim/api/serializers.py @@ -138,14 +138,15 @@ class LocationSerializer(NestedGroupModelSerializer): url = serializers.HyperlinkedIdentityField(view_name='dcim-api:location-detail') site = NestedSiteSerializer() parent = NestedLocationSerializer(required=False, allow_null=True) + tenant = NestedTenantSerializer(required=False, allow_null=True) rack_count = serializers.IntegerField(read_only=True) device_count = serializers.IntegerField(read_only=True) class Meta: model = Location fields = [ - 'id', 'url', 'display', 'name', 'slug', 'site', 'parent', 'description', 'custom_fields', 'created', - 'last_updated', 'rack_count', 'device_count', '_depth', + 'id', 'url', 'display', 'name', 'slug', 'site', 'parent', 'tenant', 'description', 'custom_fields', + 'created', 'last_updated', 'rack_count', 'device_count', '_depth', ] diff --git a/netbox/dcim/forms/bulk_edit.py b/netbox/dcim/forms/bulk_edit.py index 5cfe86118..fd87d7304 100644 --- a/netbox/dcim/forms/bulk_edit.py +++ b/netbox/dcim/forms/bulk_edit.py @@ -148,13 +148,17 @@ class LocationBulkEditForm(BootstrapMixin, CustomFieldModelBulkEditForm): 'site_id': '$site' } ) + tenant = DynamicModelChoiceField( + queryset=Tenant.objects.all(), + required=False + ) description = forms.CharField( max_length=200, required=False ) class Meta: - nullable_fields = ['parent', 'description'] + nullable_fields = ['parent', 'tenant', 'description'] class RackRoleBulkEditForm(BootstrapMixin, CustomFieldModelBulkEditForm): diff --git a/netbox/dcim/forms/bulk_import.py b/netbox/dcim/forms/bulk_import.py index 8f7755869..ff9ab6fff 100644 --- a/netbox/dcim/forms/bulk_import.py +++ b/netbox/dcim/forms/bulk_import.py @@ -120,10 +120,16 @@ class LocationCSVForm(CustomFieldModelCSVForm): 'invalid_choice': 'Location not found.', } ) + tenant = CSVModelChoiceField( + queryset=Tenant.objects.all(), + required=False, + to_field_name='name', + help_text='Assigned tenant' + ) class Meta: model = Location - fields = ('site', 'parent', 'name', 'slug', 'description') + fields = ('site', 'parent', 'name', 'slug', 'tenant', 'description') class RackRoleCSVForm(CustomFieldModelCSVForm): diff --git a/netbox/dcim/forms/filtersets.py b/netbox/dcim/forms/filtersets.py index 0079217ab..4f4e10e96 100644 --- a/netbox/dcim/forms/filtersets.py +++ b/netbox/dcim/forms/filtersets.py @@ -175,8 +175,13 @@ class SiteFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldModelFilterFo tag = TagFilterField(model) -class LocationFilterForm(BootstrapMixin, CustomFieldModelFilterForm): +class LocationFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldModelFilterForm): model = Location + field_groups = [ + ['q'], + ['region_id', 'site_group_id', 'site_id', 'parent_id'], + ['tenant_group_id', 'tenant_id'], + ] q = forms.CharField( required=False, widget=forms.TextInput(attrs={'placeholder': _('All Fields')}), diff --git a/netbox/dcim/forms/models.py b/netbox/dcim/forms/models.py index 0b6e66c3c..a8c2991a4 100644 --- a/netbox/dcim/forms/models.py +++ b/netbox/dcim/forms/models.py @@ -157,7 +157,7 @@ class SiteForm(BootstrapMixin, TenancyForm, CustomFieldModelForm): } -class LocationForm(BootstrapMixin, CustomFieldModelForm): +class LocationForm(BootstrapMixin, TenancyForm, CustomFieldModelForm): region = DynamicModelChoiceField( queryset=Region.objects.all(), required=False, @@ -191,7 +191,13 @@ class LocationForm(BootstrapMixin, CustomFieldModelForm): class Meta: model = Location fields = ( - 'region', 'site_group', 'site', 'parent', 'name', 'slug', 'description', + 'region', 'site_group', 'site', 'parent', 'name', 'slug', 'description', 'tenant_group', 'tenant', + ) + fieldsets = ( + ('Location', ( + 'region', 'site_group', 'site', 'parent', 'name', 'slug', 'description', + )), + ('Tenancy', ('tenant_group', 'tenant')), ) diff --git a/netbox/dcim/migrations/0135_location_tenant.py b/netbox/dcim/migrations/0135_location_tenant.py new file mode 100644 index 000000000..0b1f429f9 --- /dev/null +++ b/netbox/dcim/migrations/0135_location_tenant.py @@ -0,0 +1,18 @@ +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('tenancy', '0002_tenant_ordering'), + ('dcim', '0134_interface_wwn'), + ] + + operations = [ + migrations.AddField( + model_name='location', + name='tenant', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='locations', to='tenancy.tenant'), + ), + ] diff --git a/netbox/dcim/models/sites.py b/netbox/dcim/models/sites.py index 56946642b..b343f61f2 100644 --- a/netbox/dcim/models/sites.py +++ b/netbox/dcim/models/sites.py @@ -7,7 +7,6 @@ from timezone_field import TimeZoneField from dcim.choices import * from dcim.constants import * -from django.core.exceptions import ValidationError from dcim.fields import ASNField from extras.utils import extras_features from netbox.models import NestedGroupModel, PrimaryModel @@ -281,6 +280,13 @@ class Location(NestedGroupModel): null=True, db_index=True ) + tenant = models.ForeignKey( + to='tenancy.Tenant', + on_delete=models.PROTECT, + related_name='locations', + blank=True, + null=True + ) description = models.CharField( max_length=200, blank=True diff --git a/netbox/dcim/tables/sites.py b/netbox/dcim/tables/sites.py index 37fa019a1..3ff6ab75b 100644 --- a/netbox/dcim/tables/sites.py +++ b/netbox/dcim/tables/sites.py @@ -103,6 +103,7 @@ class LocationTable(BaseTable): site = tables.Column( linkify=True ) + tenant = TenantColumn() rack_count = LinkedCountColumn( viewname='dcim:rack_list', url_params={'location_id': 'pk'}, @@ -120,5 +121,5 @@ class LocationTable(BaseTable): class Meta(BaseTable.Meta): model = Location - fields = ('pk', 'name', 'site', 'rack_count', 'device_count', 'description', 'slug', 'actions') - default_columns = ('pk', 'name', 'site', 'rack_count', 'device_count', 'description', 'actions') + fields = ('pk', 'name', 'site', 'tenant', 'rack_count', 'device_count', 'description', 'slug', 'actions') + default_columns = ('pk', 'name', 'site', 'tenant', 'rack_count', 'device_count', 'description', 'actions') diff --git a/netbox/dcim/tests/test_views.py b/netbox/dcim/tests/test_views.py index 00904d444..545a56f81 100644 --- a/netbox/dcim/tests/test_views.py +++ b/netbox/dcim/tests/test_views.py @@ -12,6 +12,7 @@ from dcim.choices import * from dcim.constants import * from dcim.models import * from ipam.models import VLAN +from tenancy.models import Tenant from utilities.testing import ViewTestCases, create_tags, create_test_device @@ -157,13 +158,13 @@ class LocationTestCase(ViewTestCases.OrganizationalObjectViewTestCase): @classmethod def setUpTestData(cls): - site = Site(name='Site 1', slug='site-1') - site.save() + site = Site.objects.create(name='Site 1', slug='site-1') + tenant = Tenant.objects.create(name='Tenant 1', slug='tenant-1') locations = ( - Location(name='Location 1', slug='location-1', site=site), - Location(name='Location 2', slug='location-2', site=site), - Location(name='Location 3', slug='location-3', site=site), + Location(name='Location 1', slug='location-1', site=site, tenant=tenant), + Location(name='Location 2', slug='location-2', site=site, tenant=tenant), + Location(name='Location 3', slug='location-3', site=site, tenant=tenant), ) for location in locations: location.save() @@ -172,14 +173,15 @@ class LocationTestCase(ViewTestCases.OrganizationalObjectViewTestCase): 'name': 'Location X', 'slug': 'location-x', 'site': site.pk, + 'tenant': tenant.pk, 'description': 'A new location', } cls.csv_data = ( - "site,name,slug,description", - "Site 1,Location 4,location-4,Fourth location", - "Site 1,Location 5,location-5,Fifth location", - "Site 1,Location 6,location-6,Sixth location", + "site,tenant,name,slug,description", + "Site 1,Tenant 1,Location 4,location-4,Fourth location", + "Site 1,Tenant 1,Location 5,location-5,Fifth location", + "Site 1,Tenant 1,Location 6,location-6,Sixth location", ) cls.bulk_edit_data = { diff --git a/netbox/templates/dcim/location.html b/netbox/templates/dcim/location.html index b062ddcb5..cd0f2a92a 100644 --- a/netbox/templates/dcim/location.html +++ b/netbox/templates/dcim/location.html @@ -40,6 +40,19 @@ {% endif %} + + Tenant + + {% if object.tenant %} + {% if object.tenant.group %} + {{ object.tenant.group }} / + {% endif %} + {{ object.tenant }} + {% else %} + None + {% endif %} + + Racks From 8e1535f7ecba14aa9259b0ad62f0eabeccc12d82 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Tue, 12 Oct 2021 10:46:41 -0400 Subject: [PATCH 004/289] Add RF channel fields to Interface --- netbox/dcim/api/serializers.py | 10 +- netbox/dcim/choices.py | 131 ++++++++++++++++++++++ netbox/dcim/constants.py | 1 + netbox/dcim/filtersets.py | 5 +- netbox/dcim/forms/bulk_edit.py | 6 +- netbox/dcim/forms/bulk_import.py | 2 +- netbox/dcim/forms/filtersets.py | 11 ++ netbox/dcim/forms/models.py | 5 +- netbox/dcim/forms/object_create.py | 15 ++- netbox/dcim/migrations/0136_wireless.py | 21 ++++ netbox/dcim/models/device_components.py | 18 +++ netbox/dcim/tables/devices.py | 4 +- netbox/templates/dcim/interface.html | 10 ++ netbox/templates/dcim/interface_edit.html | 10 ++ 14 files changed, 236 insertions(+), 13 deletions(-) create mode 100644 netbox/dcim/migrations/0136_wireless.py diff --git a/netbox/dcim/api/serializers.py b/netbox/dcim/api/serializers.py index d6e44c281..edd73b87e 100644 --- a/netbox/dcim/api/serializers.py +++ b/netbox/dcim/api/serializers.py @@ -632,6 +632,8 @@ class InterfaceSerializer(PrimaryModelSerializer, CableTerminationSerializer, Co parent = NestedInterfaceSerializer(required=False, allow_null=True) lag = NestedInterfaceSerializer(required=False, allow_null=True) mode = ChoiceField(choices=InterfaceModeChoices, allow_blank=True, required=False) + rf_channel = ChoiceField(choices=WirelessChannelChoices) + rf_channel_width = ChoiceField(choices=WirelessChannelWidthChoices) untagged_vlan = NestedVLANSerializer(required=False, allow_null=True) tagged_vlans = SerializedPKRelatedField( queryset=VLAN.objects.all(), @@ -646,10 +648,10 @@ class InterfaceSerializer(PrimaryModelSerializer, CableTerminationSerializer, Co model = Interface fields = [ 'id', 'url', 'display', 'device', 'name', 'label', 'type', 'enabled', 'parent', 'lag', 'mtu', 'mac_address', - 'wwn', 'mgmt_only', 'description', 'mode', 'untagged_vlan', 'tagged_vlans', 'mark_connected', 'cable', - 'cable_peer', 'cable_peer_type', 'connected_endpoint', 'connected_endpoint_type', - 'connected_endpoint_reachable', 'tags', 'custom_fields', 'created', 'last_updated', 'count_ipaddresses', - '_occupied', + 'wwn', 'mgmt_only', 'description', 'mode', 'rf_channel', 'rf_channel_width', 'untagged_vlan', + 'tagged_vlans', 'mark_connected', 'cable', 'cable_peer', 'cable_peer_type', 'connected_endpoint', + 'connected_endpoint_type', 'connected_endpoint_reachable', 'tags', 'custom_fields', 'created', + 'last_updated', 'count_ipaddresses', '_occupied', ] def validate(self, data): diff --git a/netbox/dcim/choices.py b/netbox/dcim/choices.py index acea294f8..9a78a74f9 100644 --- a/netbox/dcim/choices.py +++ b/netbox/dcim/choices.py @@ -1135,6 +1135,137 @@ class CableLengthUnitChoices(ChoiceSet): ) +# +# Wireless +# + +class WirelessChannelChoices(ChoiceSet): + CHANNEL_AUTO = 'auto' + + # 2.4 GHz + CHANNEL_24G_1 = '2.4g-1' + CHANNEL_24G_2 = '2.4g-2' + CHANNEL_24G_3 = '2.4g-3' + CHANNEL_24G_4 = '2.4g-4' + CHANNEL_24G_5 = '2.4g-5' + CHANNEL_24G_6 = '2.4g-6' + CHANNEL_24G_7 = '2.4g-7' + CHANNEL_24G_8 = '2.4g-8' + CHANNEL_24G_9 = '2.4g-9' + CHANNEL_24G_10 = '2.4g-10' + CHANNEL_24G_11 = '2.4g-11' + CHANNEL_24G_12 = '2.4g-12' + CHANNEL_24G_13 = '2.4g-13' + + # 5 GHz + CHANNEL_5G_32 = '5g-32' + CHANNEL_5G_34 = '5g-34' + CHANNEL_5G_36 = '5g-36' + CHANNEL_5G_38 = '5g-38' + CHANNEL_5G_40 = '5g-40' + CHANNEL_5G_42 = '5g-42' + CHANNEL_5G_44 = '5g-44' + CHANNEL_5G_46 = '5g-46' + CHANNEL_5G_48 = '5g-48' + CHANNEL_5G_50 = '5g-50' + CHANNEL_5G_52 = '5g-52' + CHANNEL_5G_54 = '5g-54' + CHANNEL_5G_56 = '5g-56' + CHANNEL_5G_58 = '5g-58' + CHANNEL_5G_60 = '5g-60' + CHANNEL_5G_62 = '5g-62' + CHANNEL_5G_64 = '5g-64' + CHANNEL_5G_100 = '5g-100' + CHANNEL_5G_102 = '5g-102' + CHANNEL_5G_104 = '5g-104' + CHANNEL_5G_106 = '5g-106' + CHANNEL_5G_108 = '5g-108' + CHANNEL_5G_110 = '5g-110' + CHANNEL_5G_112 = '5g-112' + CHANNEL_5G_114 = '5g-114' + CHANNEL_5G_116 = '5g-116' + CHANNEL_5G_118 = '5g-118' + CHANNEL_5G_120 = '5g-120' + CHANNEL_5G_122 = '5g-122' + CHANNEL_5G_124 = '5g-124' + CHANNEL_5G_126 = '5g-126' + CHANNEL_5G_128 = '5g-128' + + CHOICES = ( + (CHANNEL_AUTO, 'Auto'), + ( + '2.4 GHz (802.11b/g/n/ax)', + ( + (CHANNEL_24G_1, '1 (2412 MHz)'), + (CHANNEL_24G_2, '2 (2417 MHz)'), + (CHANNEL_24G_3, '3 (2422 MHz)'), + (CHANNEL_24G_4, '4 (2427 MHz)'), + (CHANNEL_24G_5, '5 (2432 MHz)'), + (CHANNEL_24G_6, '6 (2437 MHz)'), + (CHANNEL_24G_7, '7 (2442 MHz)'), + (CHANNEL_24G_8, '8 (2447 MHz)'), + (CHANNEL_24G_9, '9 (2452 MHz)'), + (CHANNEL_24G_10, '10 (2457 MHz)'), + (CHANNEL_24G_11, '11 (2462 MHz)'), + (CHANNEL_24G_12, '12 (2467 MHz)'), + (CHANNEL_24G_13, '13 (2472 MHz)'), + ) + ), + ( + '5 GHz (802.11a/n/ac/ax)', + ( + (CHANNEL_5G_32, '32 (5160 MHz)'), + (CHANNEL_5G_34, '34 (5170 MHz)'), + (CHANNEL_5G_36, '36 (5180 MHz)'), + (CHANNEL_5G_38, '38 (5190 MHz)'), + (CHANNEL_5G_40, '40 (5200 MHz)'), + (CHANNEL_5G_42, '42 (5210 MHz)'), + (CHANNEL_5G_44, '44 (5220 MHz)'), + (CHANNEL_5G_46, '46 (5230 MHz)'), + (CHANNEL_5G_48, '48 (5240 MHz)'), + (CHANNEL_5G_50, '50 (5250 MHz)'), + (CHANNEL_5G_52, '52 (5260 MHz)'), + (CHANNEL_5G_54, '54 (5270 MHz)'), + (CHANNEL_5G_56, '56 (5280 MHz)'), + (CHANNEL_5G_58, '58 (5290 MHz)'), + (CHANNEL_5G_60, '60 (5300 MHz)'), + (CHANNEL_5G_62, '62 (5310 MHz)'), + (CHANNEL_5G_64, '64 (5320 MHz)'), + (CHANNEL_5G_100, '100 (5500 MHz)'), + (CHANNEL_5G_102, '102 (5510 MHz)'), + (CHANNEL_5G_104, '104 (5520 MHz)'), + (CHANNEL_5G_106, '106 (5530 MHz)'), + (CHANNEL_5G_108, '108 (5540 MHz)'), + (CHANNEL_5G_110, '110 (5550 MHz)'), + (CHANNEL_5G_112, '112 (5560 MHz)'), + (CHANNEL_5G_114, '114 (5570 MHz)'), + (CHANNEL_5G_116, '116 (5580 MHz)'), + (CHANNEL_5G_118, '118 (5590 MHz)'), + (CHANNEL_5G_120, '120 (5600 MHz)'), + (CHANNEL_5G_122, '122 (5610 MHz)'), + (CHANNEL_5G_124, '124 (5620 MHz)'), + (CHANNEL_5G_126, '126 (5630 MHz)'), + (CHANNEL_5G_128, '128 (5640 MHz)'), + ) + ), + ) + + +class WirelessChannelWidthChoices(ChoiceSet): + + CHANNEL_WIDTH_20 = 20 + CHANNEL_WIDTH_40 = 40 + CHANNEL_WIDTH_80 = 80 + CHANNEL_WIDTH_160 = 160 + + CHOICES = ( + (CHANNEL_WIDTH_20, '20 MHz'), + (CHANNEL_WIDTH_40, '40 MHz'), + (CHANNEL_WIDTH_80, '80 MHz'), + (CHANNEL_WIDTH_160, '160 MHz'), + ) + + # # PowerFeeds # diff --git a/netbox/dcim/constants.py b/netbox/dcim/constants.py index 2a4d368f4..0d64b357b 100644 --- a/netbox/dcim/constants.py +++ b/netbox/dcim/constants.py @@ -42,6 +42,7 @@ WIRELESS_IFACE_TYPES = [ InterfaceTypeChoices.TYPE_80211N, InterfaceTypeChoices.TYPE_80211AC, InterfaceTypeChoices.TYPE_80211AD, + InterfaceTypeChoices.TYPE_80211AX, ] NONCONNECTABLE_IFACE_TYPES = VIRTUAL_IFACE_TYPES + WIRELESS_IFACE_TYPES diff --git a/netbox/dcim/filtersets.py b/netbox/dcim/filtersets.py index 7f029097e..0c756957a 100644 --- a/netbox/dcim/filtersets.py +++ b/netbox/dcim/filtersets.py @@ -990,7 +990,10 @@ class InterfaceFilterSet(PrimaryModelFilterSet, DeviceComponentFilterSet, CableT class Meta: model = Interface - fields = ['id', 'name', 'label', 'type', 'enabled', 'mtu', 'mgmt_only', 'mode', 'description'] + fields = [ + 'id', 'name', 'label', 'type', 'enabled', 'mtu', 'mgmt_only', 'mode', 'rf_channel', 'rf_channel_width', + 'description', + ] def filter_device(self, queryset, name, value): try: diff --git a/netbox/dcim/forms/bulk_edit.py b/netbox/dcim/forms/bulk_edit.py index fd87d7304..67a482a26 100644 --- a/netbox/dcim/forms/bulk_edit.py +++ b/netbox/dcim/forms/bulk_edit.py @@ -926,7 +926,7 @@ class PowerOutletBulkEditForm( class InterfaceBulkEditForm( form_from_model(Interface, [ 'label', 'type', 'parent', 'lag', 'mac_address', 'wwn', 'mtu', 'mgmt_only', 'mark_connected', 'description', - 'mode', + 'mode', 'rf_channel', 'rf_channel_width', ]), BootstrapMixin, AddRemoveTagsForm, @@ -977,8 +977,8 @@ class InterfaceBulkEditForm( class Meta: nullable_fields = [ - 'label', 'parent', 'lag', 'mac_address', 'wwn', 'mtu', 'description', 'mode', 'untagged_vlan', - 'tagged_vlans', + 'label', 'parent', 'lag', 'mac_address', 'wwn', 'mtu', 'description', 'mode', 'rf_channel', + 'rf_channel_width', 'untagged_vlan', 'tagged_vlans', ] def __init__(self, *args, **kwargs): diff --git a/netbox/dcim/forms/bulk_import.py b/netbox/dcim/forms/bulk_import.py index ff9ab6fff..a2685c8e0 100644 --- a/netbox/dcim/forms/bulk_import.py +++ b/netbox/dcim/forms/bulk_import.py @@ -584,7 +584,7 @@ class InterfaceCSVForm(CustomFieldModelCSVForm): model = Interface fields = ( 'device', 'name', 'label', 'parent', 'lag', 'type', 'enabled', 'mark_connected', 'mac_address', 'wwn', - 'mtu', 'mgmt_only', 'description', 'mode', + 'mtu', 'mgmt_only', 'description', 'mode', 'rf_channel', 'rf_channel_width', ) def __init__(self, *args, **kwargs): diff --git a/netbox/dcim/forms/filtersets.py b/netbox/dcim/forms/filtersets.py index 4f4e10e96..605139c1b 100644 --- a/netbox/dcim/forms/filtersets.py +++ b/netbox/dcim/forms/filtersets.py @@ -963,6 +963,7 @@ class InterfaceFilterForm(DeviceComponentFilterForm): field_groups = [ ['q', 'tag'], ['name', 'label', 'type', 'enabled', 'mgmt_only', 'mac_address', 'wwn'], + ['rf_channel', 'rf_channel_width'], ['region_id', 'site_group_id', 'site_id', 'location_id', 'device_id'], ] type = forms.MultipleChoiceField( @@ -990,6 +991,16 @@ class InterfaceFilterForm(DeviceComponentFilterForm): required=False, label='WWN' ) + rf_channel = forms.MultipleChoiceField( + choices=WirelessChannelChoices, + required=False, + widget=StaticSelectMultiple() + ) + rf_channel_width = forms.MultipleChoiceField( + choices=WirelessChannelWidthChoices, + required=False, + widget=StaticSelectMultiple() + ) tag = TagFilterField(model) diff --git a/netbox/dcim/forms/models.py b/netbox/dcim/forms/models.py index a8c2991a4..435fab309 100644 --- a/netbox/dcim/forms/models.py +++ b/netbox/dcim/forms/models.py @@ -1098,12 +1098,15 @@ class InterfaceForm(BootstrapMixin, InterfaceCommonForm, CustomFieldModelForm): model = Interface fields = [ 'device', 'name', 'label', 'type', 'enabled', 'parent', 'lag', 'mac_address', 'wwn', 'mtu', 'mgmt_only', - 'mark_connected', 'description', 'mode', 'untagged_vlan', 'tagged_vlans', 'tags', + 'mark_connected', 'description', 'mode', 'rf_channel', 'rf_channel_width', 'untagged_vlan', 'tagged_vlans', + 'tags', ] widgets = { 'device': forms.HiddenInput(), 'type': StaticSelect(), 'mode': StaticSelect(), + 'rf_channel': StaticSelect(), + 'rf_channel_width': StaticSelect(), } labels = { 'mode': '802.1Q Mode', diff --git a/netbox/dcim/forms/object_create.py b/netbox/dcim/forms/object_create.py index 7577ad355..db28412e6 100644 --- a/netbox/dcim/forms/object_create.py +++ b/netbox/dcim/forms/object_create.py @@ -465,7 +465,19 @@ class InterfaceCreateForm(ComponentCreateForm, InterfaceCommonForm): mode = forms.ChoiceField( choices=add_blank_choice(InterfaceModeChoices), required=False, + widget=StaticSelect() + ) + rf_channel = forms.ChoiceField( + choices=add_blank_choice(WirelessChannelChoices), + required=False, widget=StaticSelect(), + label='Wireless channel' + ) + rf_channel_width = forms.ChoiceField( + choices=add_blank_choice(WirelessChannelWidthChoices), + required=False, + widget=StaticSelect(), + label='Channel width' ) untagged_vlan = DynamicModelChoiceField( queryset=VLAN.objects.all(), @@ -477,7 +489,8 @@ class InterfaceCreateForm(ComponentCreateForm, InterfaceCommonForm): ) field_order = ( 'device', 'name_pattern', 'label_pattern', 'type', 'enabled', 'parent', 'lag', 'mtu', 'mac_address', - 'description', 'mgmt_only', 'mark_connected', 'mode', 'untagged_vlan', 'tagged_vlans', 'tags' + 'description', 'mgmt_only', 'mark_connected', 'rf_channel', 'rf_channel_width', 'mode' 'untagged_vlan', + 'tagged_vlans', 'tags' ) def __init__(self, *args, **kwargs): diff --git a/netbox/dcim/migrations/0136_wireless.py b/netbox/dcim/migrations/0136_wireless.py new file mode 100644 index 000000000..429a72694 --- /dev/null +++ b/netbox/dcim/migrations/0136_wireless.py @@ -0,0 +1,21 @@ +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('dcim', '0135_location_tenant'), + ] + + operations = [ + migrations.AddField( + model_name='interface', + name='rf_channel', + field=models.CharField(blank=True, max_length=50), + ), + migrations.AddField( + model_name='interface', + name='rf_channel_width', + field=models.PositiveSmallIntegerField(blank=True, null=True), + ), + ] diff --git a/netbox/dcim/models/device_components.py b/netbox/dcim/models/device_components.py index 386776b41..4e0d65f86 100644 --- a/netbox/dcim/models/device_components.py +++ b/netbox/dcim/models/device_components.py @@ -517,6 +517,18 @@ class Interface(ComponentModel, BaseInterface, CableTermination, PathEndpoint): verbose_name='WWN', help_text='64-bit World Wide Name' ) + rf_channel = models.CharField( + max_length=50, + choices=WirelessChannelChoices, + blank=True, + verbose_name='Wireless channel' + ) + rf_channel_width = models.PositiveSmallIntegerField( + choices=WirelessChannelWidthChoices, + blank=True, + null=True, + verbose_name='Channel width' + ) untagged_vlan = models.ForeignKey( to='ipam.VLAN', on_delete=models.SET_NULL, @@ -603,6 +615,12 @@ class Interface(ComponentModel, BaseInterface, CableTermination, PathEndpoint): if self.pk and self.lag_id == self.pk: raise ValidationError({'lag': "A LAG interface cannot be its own parent."}) + # RF channel attributes may be set only for wireless interfaces + if self.rf_channel and self.type not in WIRELESS_IFACE_TYPES: + raise ValidationError({'rf_channel': "Channel may be set only on wireless interfaces."}) + if self.rf_channel_width and self.type not in WIRELESS_IFACE_TYPES: + raise ValidationError({'rf_channel_width': "Channel width may be set only on wireless interfaces."}) + # Validate untagged VLAN if self.untagged_vlan and self.untagged_vlan.site not in [self.device.site, None]: raise ValidationError({ diff --git a/netbox/dcim/tables/devices.py b/netbox/dcim/tables/devices.py index c2b4b907b..1eae62a05 100644 --- a/netbox/dcim/tables/devices.py +++ b/netbox/dcim/tables/devices.py @@ -493,8 +493,8 @@ class InterfaceTable(DeviceComponentTable, BaseInterfaceTable, PathEndpointTable model = Interface fields = ( 'pk', 'name', 'device', 'label', 'enabled', 'type', 'mgmt_only', 'mtu', 'mode', 'mac_address', 'wwn', - 'description', 'mark_connected', 'cable', 'cable_color', 'cable_peer', 'connection', 'tags', 'ip_addresses', - 'untagged_vlan', 'tagged_vlans', + 'rf_channel', 'rf_channel_width', 'description', 'mark_connected', 'cable', 'cable_color', 'cable_peer', + 'connection', 'tags', 'ip_addresses', 'untagged_vlan', 'tagged_vlans', ) default_columns = ('pk', 'name', 'device', 'label', 'enabled', 'type', 'description') diff --git a/netbox/templates/dcim/interface.html b/netbox/templates/dcim/interface.html index f9a9b0425..3283aac4f 100644 --- a/netbox/templates/dcim/interface.html +++ b/netbox/templates/dcim/interface.html @@ -39,6 +39,16 @@ Type {{ object.get_type_display }} + {% if object.is_wireless %} + + Channel + {{ object.get_rf_channel_display|placeholder }} + + + Channel Width + {{ object.get_rf_channel_width_display|placeholder }} + + {% endif %} Enabled diff --git a/netbox/templates/dcim/interface_edit.html b/netbox/templates/dcim/interface_edit.html index 041eab73a..e91c74d31 100644 --- a/netbox/templates/dcim/interface_edit.html +++ b/netbox/templates/dcim/interface_edit.html @@ -29,6 +29,16 @@ {% render_field form.mark_connected %} + {% if form.instance.is_wireless %} +
+
+
Wireless
+
+ {% render_field form.rf_channel %} + {% render_field form.rf_channel_width %} +
+ {% endif %} +
802.1Q Switching
From 8b80b0c3df451a894c1286f7afdbb5cd940b8f61 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Tue, 12 Oct 2021 12:27:12 -0400 Subject: [PATCH 005/289] Introduce the wireless app and SSID model --- netbox/netbox/api/views.py | 1 + netbox/netbox/graphql/schema.py | 2 + netbox/netbox/navigation_menu.py | 14 +++++++ netbox/netbox/settings.py | 1 + netbox/netbox/urls.py | 2 + netbox/templates/wireless/ssid.html | 46 ++++++++++++++++++++++ netbox/wireless/__init__.py | 0 netbox/wireless/api/__init__.py | 0 netbox/wireless/api/nested_serializers.py | 16 ++++++++ netbox/wireless/api/serializers.py | 21 ++++++++++ netbox/wireless/api/urls.py | 12 ++++++ netbox/wireless/api/views.py | 24 +++++++++++ netbox/wireless/apps.py | 5 +++ netbox/wireless/filtersets.py | 31 +++++++++++++++ netbox/wireless/forms/__init__.py | 4 ++ netbox/wireless/forms/bulk_edit.py | 29 ++++++++++++++ netbox/wireless/forms/bulk_import.py | 20 ++++++++++ netbox/wireless/forms/filtersets.py | 19 +++++++++ netbox/wireless/forms/models.py | 32 +++++++++++++++ netbox/wireless/graphql/__init__.py | 0 netbox/wireless/graphql/schema.py | 9 +++++ netbox/wireless/graphql/types.py | 14 +++++++ netbox/wireless/migrations/0001_initial.py | 36 +++++++++++++++++ netbox/wireless/migrations/__init__.py | 0 netbox/wireless/models.py | 40 +++++++++++++++++++ netbox/wireless/tables.py | 24 +++++++++++ netbox/wireless/urls.py | 22 +++++++++++ netbox/wireless/views.py | 46 ++++++++++++++++++++++ 28 files changed, 470 insertions(+) create mode 100644 netbox/templates/wireless/ssid.html create mode 100644 netbox/wireless/__init__.py create mode 100644 netbox/wireless/api/__init__.py create mode 100644 netbox/wireless/api/nested_serializers.py create mode 100644 netbox/wireless/api/serializers.py create mode 100644 netbox/wireless/api/urls.py create mode 100644 netbox/wireless/api/views.py create mode 100644 netbox/wireless/apps.py create mode 100644 netbox/wireless/filtersets.py create mode 100644 netbox/wireless/forms/__init__.py create mode 100644 netbox/wireless/forms/bulk_edit.py create mode 100644 netbox/wireless/forms/bulk_import.py create mode 100644 netbox/wireless/forms/filtersets.py create mode 100644 netbox/wireless/forms/models.py create mode 100644 netbox/wireless/graphql/__init__.py create mode 100644 netbox/wireless/graphql/schema.py create mode 100644 netbox/wireless/graphql/types.py create mode 100644 netbox/wireless/migrations/0001_initial.py create mode 100644 netbox/wireless/migrations/__init__.py create mode 100644 netbox/wireless/models.py create mode 100644 netbox/wireless/tables.py create mode 100644 netbox/wireless/urls.py create mode 100644 netbox/wireless/views.py diff --git a/netbox/netbox/api/views.py b/netbox/netbox/api/views.py index 74000e978..7ad64aeae 100644 --- a/netbox/netbox/api/views.py +++ b/netbox/netbox/api/views.py @@ -308,6 +308,7 @@ class APIRootView(APIView): ('tenancy', reverse('tenancy-api:api-root', request=request, format=format)), ('users', reverse('users-api:api-root', request=request, format=format)), ('virtualization', reverse('virtualization-api:api-root', request=request, format=format)), + ('wireless', reverse('wireless-api:api-root', request=request, format=format)), ))) diff --git a/netbox/netbox/graphql/schema.py b/netbox/netbox/graphql/schema.py index bb752b8c4..812c1656d 100644 --- a/netbox/netbox/graphql/schema.py +++ b/netbox/netbox/graphql/schema.py @@ -7,6 +7,7 @@ from ipam.graphql.schema import IPAMQuery from tenancy.graphql.schema import TenancyQuery from users.graphql.schema import UsersQuery from virtualization.graphql.schema import VirtualizationQuery +from wireless.graphql.schema import WirelessQuery class Query( @@ -17,6 +18,7 @@ class Query( TenancyQuery, UsersQuery, VirtualizationQuery, + WirelessQuery, graphene.ObjectType ): pass diff --git a/netbox/netbox/navigation_menu.py b/netbox/netbox/navigation_menu.py index a3978f16e..0a78f35ab 100644 --- a/netbox/netbox/navigation_menu.py +++ b/netbox/netbox/navigation_menu.py @@ -188,6 +188,19 @@ CONNECTIONS_MENU = Menu( ), ) +WIRELESS_MENU = Menu( + label='Wireless', + icon_class='mdi mdi-wifi', + groups=( + MenuGroup( + label='Wireless', + items=( + get_model_item('wireless', 'ssid', 'SSIDs'), + ), + ), + ), +) + IPAM_MENU = Menu( label='IPAM', icon_class='mdi mdi-counter', @@ -343,6 +356,7 @@ MENUS = [ ORGANIZATION_MENU, DEVICES_MENU, CONNECTIONS_MENU, + WIRELESS_MENU, IPAM_MENU, VIRTUALIZATION_MENU, CIRCUITS_MENU, diff --git a/netbox/netbox/settings.py b/netbox/netbox/settings.py index 3df9a855a..e41c77d1d 100644 --- a/netbox/netbox/settings.py +++ b/netbox/netbox/settings.py @@ -326,6 +326,7 @@ INSTALLED_APPS = [ 'users', 'utilities', 'virtualization', + 'wireless', 'django_rq', # Must come after extras to allow overriding management commands 'drf_yasg', ] diff --git a/netbox/netbox/urls.py b/netbox/netbox/urls.py index 3d4c60c93..4e0a2e2c6 100644 --- a/netbox/netbox/urls.py +++ b/netbox/netbox/urls.py @@ -48,6 +48,7 @@ _patterns = [ path('tenancy/', include('tenancy.urls')), path('user/', include('users.urls')), path('virtualization/', include('virtualization.urls')), + path('wireless/', include('wireless.urls')), # API path('api/', APIRootView.as_view(), name='api-root'), @@ -58,6 +59,7 @@ _patterns = [ path('api/tenancy/', include('tenancy.api.urls')), path('api/users/', include('users.api.urls')), path('api/virtualization/', include('virtualization.api.urls')), + path('api/wireless/', include('wireless.api.urls')), path('api/status/', StatusView.as_view(), name='api-status'), path('api/docs/', schema_view.with_ui('swagger', cache_timeout=86400), name='api_docs'), path('api/redoc/', schema_view.with_ui('redoc', cache_timeout=86400), name='api_redocs'), diff --git a/netbox/templates/wireless/ssid.html b/netbox/templates/wireless/ssid.html new file mode 100644 index 000000000..5425149aa --- /dev/null +++ b/netbox/templates/wireless/ssid.html @@ -0,0 +1,46 @@ +{% extends 'generic/object.html' %} +{% load helpers %} +{% load plugins %} + +{% block content %} +
+
+
+
SSID
+
+ + + + + + + + + + + + + +
Name{{ object.name }}
Description{{ object.description|placeholder }}
VLAN + {% if object.vlan %} + {{ object.vlan }} + {% else %} + None + {% endif %} +
+
+
+ {% include 'extras/inc/tags_panel.html' with tags=object.tags.all url='dcim:site_list' %} + {% plugin_left_page object %} +
+
+ {% include 'inc/custom_fields_panel.html' %} + {% plugin_right_page object %} +
+
+
+
+ {% plugin_full_width_page object %} +
+
+{% endblock %} diff --git a/netbox/wireless/__init__.py b/netbox/wireless/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/netbox/wireless/api/__init__.py b/netbox/wireless/api/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/netbox/wireless/api/nested_serializers.py b/netbox/wireless/api/nested_serializers.py new file mode 100644 index 000000000..50454a641 --- /dev/null +++ b/netbox/wireless/api/nested_serializers.py @@ -0,0 +1,16 @@ +from rest_framework import serializers + +from netbox.api import WritableNestedSerializer +from wireless.models import * + +__all__ = ( + 'NestedSSIDSerializer', +) + + +class NestedSSIDSerializer(WritableNestedSerializer): + url = serializers.HyperlinkedIdentityField(view_name='wireless-api:ssid-detail') + + class Meta: + model = SSID + fields = ['id', 'url', 'display', 'name'] diff --git a/netbox/wireless/api/serializers.py b/netbox/wireless/api/serializers.py new file mode 100644 index 000000000..c129e5c96 --- /dev/null +++ b/netbox/wireless/api/serializers.py @@ -0,0 +1,21 @@ +from rest_framework import serializers + +from dcim.api.serializers import NestedInterfaceSerializer +from ipam.api.serializers import NestedVLANSerializer +from netbox.api.serializers import PrimaryModelSerializer +from wireless.models import * + +__all__ = ( + 'SSIDSerializer', +) + + +class SSIDSerializer(PrimaryModelSerializer): + url = serializers.HyperlinkedIdentityField(view_name='wireless-api:ssid-detail') + vlan = NestedVLANSerializer(required=False, allow_null=True) + + class Meta: + model = SSID + fields = [ + 'id', 'url', 'display', 'name', 'description', 'vlan', + ] diff --git a/netbox/wireless/api/urls.py b/netbox/wireless/api/urls.py new file mode 100644 index 000000000..f6936708c --- /dev/null +++ b/netbox/wireless/api/urls.py @@ -0,0 +1,12 @@ +from netbox.api import OrderedDefaultRouter +from . import views + + +router = OrderedDefaultRouter() +router.APIRootView = views.WirelessRootView + +# SSIDs +router.register('ssids', views.SSIDViewSet) + +app_name = 'wireless-api' +urlpatterns = router.urls diff --git a/netbox/wireless/api/views.py b/netbox/wireless/api/views.py new file mode 100644 index 000000000..97827eb7e --- /dev/null +++ b/netbox/wireless/api/views.py @@ -0,0 +1,24 @@ +from rest_framework.routers import APIRootView + +from extras.api.views import CustomFieldModelViewSet +from wireless import filtersets +from wireless.models import * +from . import serializers + + +class WirelessRootView(APIRootView): + """ + Wireless API root view + """ + def get_view_name(self): + return 'Wireless' + + +# +# Providers +# + +class SSIDViewSet(CustomFieldModelViewSet): + queryset = SSID.objects.prefetch_related('tags') + serializer_class = serializers.SSIDSerializer + filterset_class = filtersets.SSIDFilterSet diff --git a/netbox/wireless/apps.py b/netbox/wireless/apps.py new file mode 100644 index 000000000..1f6deff22 --- /dev/null +++ b/netbox/wireless/apps.py @@ -0,0 +1,5 @@ +from django.apps import AppConfig + + +class WirelessConfig(AppConfig): + name = 'wireless' diff --git a/netbox/wireless/filtersets.py b/netbox/wireless/filtersets.py new file mode 100644 index 000000000..232bc74ff --- /dev/null +++ b/netbox/wireless/filtersets.py @@ -0,0 +1,31 @@ +import django_filters +from django.db.models import Q + +from extras.filters import TagFilter +from netbox.filtersets import PrimaryModelFilterSet +from .models import * + +__all__ = ( + 'SSIDFilterSet', +) + + +class SSIDFilterSet(PrimaryModelFilterSet): + q = django_filters.CharFilter( + method='search', + label='Search', + ) + tag = TagFilter() + + class Meta: + model = SSID + fields = ['id', 'name'] + + def search(self, queryset, name, value): + if not value.strip(): + return queryset + qs_filter = ( + Q(name__icontains=value) | + Q(description__icontains=value) + ) + return queryset.filter(qs_filter) diff --git a/netbox/wireless/forms/__init__.py b/netbox/wireless/forms/__init__.py new file mode 100644 index 000000000..62c2ec2d9 --- /dev/null +++ b/netbox/wireless/forms/__init__.py @@ -0,0 +1,4 @@ +from .models import * +from .filtersets import * +from .bulk_edit import * +from .bulk_import import * diff --git a/netbox/wireless/forms/bulk_edit.py b/netbox/wireless/forms/bulk_edit.py new file mode 100644 index 000000000..ed9fb650b --- /dev/null +++ b/netbox/wireless/forms/bulk_edit.py @@ -0,0 +1,29 @@ +from django import forms + +from dcim.models import * +from extras.forms import AddRemoveTagsForm, CustomFieldModelBulkEditForm +from ipam.models import VLAN +from utilities.forms import BootstrapMixin, DynamicModelChoiceField + +__all__ = ( + 'SSIDBulkEditForm', +) + + +class SSIDBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldModelBulkEditForm): + pk = forms.ModelMultipleChoiceField( + queryset=PowerFeed.objects.all(), + widget=forms.MultipleHiddenInput + ) + vlan = DynamicModelChoiceField( + queryset=VLAN.objects.all(), + required=False, + ) + description = forms.CharField( + required=False + ) + + class Meta: + nullable_fields = [ + 'vlan', 'description', + ] diff --git a/netbox/wireless/forms/bulk_import.py b/netbox/wireless/forms/bulk_import.py new file mode 100644 index 000000000..0cf997fd3 --- /dev/null +++ b/netbox/wireless/forms/bulk_import.py @@ -0,0 +1,20 @@ +from extras.forms import CustomFieldModelCSVForm +from ipam.models import VLAN +from utilities.forms import CSVModelChoiceField +from wireless.models import SSID + +__all__ = ( + 'SSIDCSVForm', +) + + +class SSIDCSVForm(CustomFieldModelCSVForm): + vlan = CSVModelChoiceField( + queryset=VLAN.objects.all(), + to_field_name='name', + help_text='Bridged VLAN' + ) + + class Meta: + model = SSID + fields = ('name', 'description', 'vlan') diff --git a/netbox/wireless/forms/filtersets.py b/netbox/wireless/forms/filtersets.py new file mode 100644 index 000000000..733b807f7 --- /dev/null +++ b/netbox/wireless/forms/filtersets.py @@ -0,0 +1,19 @@ +from django import forms +from django.utils.translation import gettext as _ + +from dcim.models import * +from extras.forms import CustomFieldModelFilterForm +from utilities.forms import BootstrapMixin, TagFilterField + + +class SSIDFilterForm(BootstrapMixin, CustomFieldModelFilterForm): + model = PowerFeed + field_groups = [ + ['q', 'tag'], + ] + q = forms.CharField( + required=False, + widget=forms.TextInput(attrs={'placeholder': _('All Fields')}), + label=_('Search') + ) + tag = TagFilterField(model) diff --git a/netbox/wireless/forms/models.py b/netbox/wireless/forms/models.py new file mode 100644 index 000000000..ea6d51223 --- /dev/null +++ b/netbox/wireless/forms/models.py @@ -0,0 +1,32 @@ +from dcim.constants import * +from dcim.models import * +from extras.forms import CustomFieldModelForm +from extras.models import Tag +from ipam.models import VLAN +from utilities.forms import BootstrapMixin, DynamicModelChoiceField, DynamicModelMultipleChoiceField +from wireless.models import SSID + +__all__ = ( + 'SSIDForm', +) + + +class SSIDForm(BootstrapMixin, CustomFieldModelForm): + vlan = DynamicModelChoiceField( + queryset=VLAN.objects.all(), + required=False + ) + tags = DynamicModelMultipleChoiceField( + queryset=Tag.objects.all(), + required=False + ) + + class Meta: + model = SSID + fields = [ + 'name', 'description', 'vlan', 'tags', + ] + fieldsets = ( + ('SSID', ('name', 'description', 'tags')), + ('VLAN', ('vlan',)), + ) diff --git a/netbox/wireless/graphql/__init__.py b/netbox/wireless/graphql/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/netbox/wireless/graphql/schema.py b/netbox/wireless/graphql/schema.py new file mode 100644 index 000000000..d0beec7d9 --- /dev/null +++ b/netbox/wireless/graphql/schema.py @@ -0,0 +1,9 @@ +import graphene + +from netbox.graphql.fields import ObjectField, ObjectListField +from .types import * + + +class WirelessQuery(graphene.ObjectType): + ssid = ObjectField(SSIDType) + ssid_list = ObjectListField(SSIDType) diff --git a/netbox/wireless/graphql/types.py b/netbox/wireless/graphql/types.py new file mode 100644 index 000000000..66e73429d --- /dev/null +++ b/netbox/wireless/graphql/types.py @@ -0,0 +1,14 @@ +from wireless import filtersets, models +from netbox.graphql.types import ObjectType + +__all__ = ( + 'SSIDType', +) + + +class SSIDType(ObjectType): + + class Meta: + model = models.SSID + fields = '__all__' + filterset_class = filtersets.SSIDFilterSet diff --git a/netbox/wireless/migrations/0001_initial.py b/netbox/wireless/migrations/0001_initial.py new file mode 100644 index 000000000..b0011dad9 --- /dev/null +++ b/netbox/wireless/migrations/0001_initial.py @@ -0,0 +1,36 @@ +import django.core.serializers.json +from django.db import migrations, models +import django.db.models.deletion +import taggit.managers + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ('dcim', '0136_wireless'), + ('extras', '0062_clear_secrets_changelog'), + ('ipam', '0050_iprange'), + ] + + operations = [ + migrations.CreateModel( + name='SSID', + fields=[ + ('created', models.DateField(auto_now_add=True, null=True)), + ('last_updated', models.DateTimeField(auto_now=True, null=True)), + ('custom_field_data', models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder)), + ('id', models.BigAutoField(primary_key=True, serialize=False)), + ('name', models.CharField(max_length=32)), + ('description', models.CharField(blank=True, max_length=200)), + ('tags', taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag')), + ('vlan', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='ipam.vlan')), + ], + options={ + 'verbose_name': 'SSID', + 'verbose_name_plural': 'SSIDs', + 'ordering': ('name', 'pk'), + }, + ), + ] diff --git a/netbox/wireless/migrations/__init__.py b/netbox/wireless/migrations/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/netbox/wireless/models.py b/netbox/wireless/models.py new file mode 100644 index 000000000..5bb964345 --- /dev/null +++ b/netbox/wireless/models.py @@ -0,0 +1,40 @@ +from django.db import models + +from extras.utils import extras_features +from netbox.models import PrimaryModel +from utilities.querysets import RestrictedQuerySet + +__all__ = ( + 'SSID', +) + + +@extras_features('custom_fields', 'custom_links', 'export_templates', 'tags', 'webhooks') +class SSID(PrimaryModel): + """ + A service set identifier belonging to a wireless network. + """ + name = models.CharField( + max_length=32 + ) + vlan = models.ForeignKey( + to='ipam.VLAN', + on_delete=models.PROTECT, + blank=True, + null=True, + verbose_name='VLAN' + ) + description = models.CharField( + max_length=200, + blank=True + ) + + objects = RestrictedQuerySet.as_manager() + + class Meta: + ordering = ('name', 'pk') + verbose_name = 'SSID' + verbose_name_plural = 'SSIDs' + + def __str__(self): + return self.name diff --git a/netbox/wireless/tables.py b/netbox/wireless/tables.py new file mode 100644 index 000000000..846296bb4 --- /dev/null +++ b/netbox/wireless/tables.py @@ -0,0 +1,24 @@ +import django_tables2 as tables + +from .models import SSID +from utilities.tables import BaseTable, TagColumn, ToggleColumn + +__all__ = ( + 'SSIDTable', +) + + +class SSIDTable(BaseTable): + pk = ToggleColumn() + id = tables.Column( + linkify=True, + verbose_name='ID' + ) + tags = TagColumn( + url_name='dcim:cable_list' + ) + + class Meta(BaseTable.Meta): + model = SSID + fields = ('pk', 'id', 'name', 'description', 'vlan') + default_columns = ('pk', 'name', 'description', 'vlan') diff --git a/netbox/wireless/urls.py b/netbox/wireless/urls.py new file mode 100644 index 000000000..57e0eab9b --- /dev/null +++ b/netbox/wireless/urls.py @@ -0,0 +1,22 @@ +from django.urls import path + +from extras.views import ObjectChangeLogView, ObjectJournalView +from . import views +from .models import * + +app_name = 'wireless' +urlpatterns = ( + + # SSIDs + path('ssids/', views.SSIDListView.as_view(), name='ssid_list'), + path('ssids/add/', views.SSIDEditView.as_view(), name='ssid_add'), + path('ssids/import/', views.SSIDBulkImportView.as_view(), name='ssid_import'), + path('ssids/edit/', views.SSIDBulkEditView.as_view(), name='ssid_bulk_edit'), + path('ssids/delete/', views.SSIDBulkDeleteView.as_view(), name='ssid_bulk_delete'), + path('ssids//', views.SSIDView.as_view(), name='ssid'), + path('ssids//edit/', views.SSIDEditView.as_view(), name='ssid_edit'), + path('ssids//delete/', views.SSIDDeleteView.as_view(), name='ssid_delete'), + path('ssids//changelog/', ObjectChangeLogView.as_view(), name='ssid_changelog', kwargs={'model': SSID}), + path('ssids//journal/', ObjectJournalView.as_view(), name='ssid_journal', kwargs={'model': SSID}), + +) diff --git a/netbox/wireless/views.py b/netbox/wireless/views.py new file mode 100644 index 000000000..b0d1f5156 --- /dev/null +++ b/netbox/wireless/views.py @@ -0,0 +1,46 @@ +from netbox.views import generic +from . import filtersets, forms, tables +from .models import * + + +# +# SSIDs +# + +class SSIDListView(generic.ObjectListView): + queryset = SSID.objects.all() + filterset = filtersets.SSIDFilterSet + filterset_form = forms.SSIDFilterForm + table = tables.SSIDTable + + +class SSIDView(generic.ObjectView): + queryset = SSID.objects.prefetch_related('power_panel', 'rack') + + +class SSIDEditView(generic.ObjectEditView): + queryset = SSID.objects.all() + model_form = forms.SSIDForm + + +class SSIDDeleteView(generic.ObjectDeleteView): + queryset = SSID.objects.all() + + +class SSIDBulkImportView(generic.BulkImportView): + queryset = SSID.objects.all() + model_form = forms.SSIDCSVForm + table = tables.SSIDTable + + +class SSIDBulkEditView(generic.BulkEditView): + queryset = SSID.objects.prefetch_related('power_panel', 'rack') + filterset = filtersets.SSIDFilterSet + table = tables.SSIDTable + form = forms.SSIDBulkEditForm + + +class SSIDBulkDeleteView(generic.BulkDeleteView): + queryset = SSID.objects.prefetch_related('power_panel', 'rack') + filterset = filtersets.SSIDFilterSet + table = tables.SSIDTable From 38f6d22d2d7ac412efa9b50ef4f598d17726e0a9 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Tue, 12 Oct 2021 13:48:06 -0400 Subject: [PATCH 006/289] Enable attachment of wireless interfaces to SSIDs --- netbox/dcim/forms/models.py | 10 ++++++-- netbox/dcim/migrations/0136_wireless.py | 6 +++++ netbox/dcim/models/device_components.py | 6 +++++ netbox/templates/dcim/interface.html | 27 ++++++++++++++++++++++ netbox/templates/dcim/interface_edit.html | 1 + netbox/wireless/migrations/0001_initial.py | 1 - netbox/wireless/models.py | 10 +++++++- netbox/wireless/tables.py | 7 +++--- netbox/wireless/views.py | 6 ++--- 9 files changed, 63 insertions(+), 11 deletions(-) diff --git a/netbox/dcim/forms/models.py b/netbox/dcim/forms/models.py index 435fab309..2a6dc1f6f 100644 --- a/netbox/dcim/forms/models.py +++ b/netbox/dcim/forms/models.py @@ -16,6 +16,7 @@ from utilities.forms import ( SlugField, StaticSelect, ) from virtualization.models import Cluster, ClusterGroup +from wireless.models import SSID from .common import InterfaceCommonForm __all__ = ( @@ -1068,6 +1069,11 @@ class InterfaceForm(BootstrapMixin, InterfaceCommonForm, CustomFieldModelForm): 'type': 'lag', } ) + ssids = DynamicModelMultipleChoiceField( + queryset=SSID.objects.all(), + required=False, + label='SSIDs' + ) vlan_group = DynamicModelChoiceField( queryset=VLANGroup.objects.all(), required=False, @@ -1098,8 +1104,8 @@ class InterfaceForm(BootstrapMixin, InterfaceCommonForm, CustomFieldModelForm): model = Interface fields = [ 'device', 'name', 'label', 'type', 'enabled', 'parent', 'lag', 'mac_address', 'wwn', 'mtu', 'mgmt_only', - 'mark_connected', 'description', 'mode', 'rf_channel', 'rf_channel_width', 'untagged_vlan', 'tagged_vlans', - 'tags', + 'mark_connected', 'description', 'mode', 'rf_channel', 'rf_channel_width', 'ssids', 'untagged_vlan', + 'tagged_vlans', 'tags', ] widgets = { 'device': forms.HiddenInput(), diff --git a/netbox/dcim/migrations/0136_wireless.py b/netbox/dcim/migrations/0136_wireless.py index 429a72694..0a1d15365 100644 --- a/netbox/dcim/migrations/0136_wireless.py +++ b/netbox/dcim/migrations/0136_wireless.py @@ -4,6 +4,7 @@ from django.db import migrations, models class Migration(migrations.Migration): dependencies = [ + ('wireless', '__first__'), ('dcim', '0135_location_tenant'), ] @@ -18,4 +19,9 @@ class Migration(migrations.Migration): name='rf_channel_width', field=models.PositiveSmallIntegerField(blank=True, null=True), ), + migrations.AddField( + model_name='interface', + name='ssids', + field=models.ManyToManyField(blank=True, related_name='interfaces', to='wireless.SSID'), + ), ] diff --git a/netbox/dcim/models/device_components.py b/netbox/dcim/models/device_components.py index 4e0d65f86..5e3e7e6db 100644 --- a/netbox/dcim/models/device_components.py +++ b/netbox/dcim/models/device_components.py @@ -529,6 +529,12 @@ class Interface(ComponentModel, BaseInterface, CableTermination, PathEndpoint): null=True, verbose_name='Channel width' ) + ssids = models.ManyToManyField( + to='wireless.SSID', + related_name='interfaces', + blank=True, + verbose_name='SSIDs' + ) untagged_vlan = models.ForeignKey( to='ipam.VLAN', on_delete=models.SET_NULL, diff --git a/netbox/templates/dcim/interface.html b/netbox/templates/dcim/interface.html index 3283aac4f..bc4fc23e2 100644 --- a/netbox/templates/dcim/interface.html +++ b/netbox/templates/dcim/interface.html @@ -258,6 +258,33 @@
{% endif %} + {% if object.is_wireless %} +
+
SSIDs
+
+ + + + + + + + {% for ssid in object.ssids.all %} + + + + {% empty %} + + + + {% endfor %} + +
Name
+ {{ ssid.name }} +
None
+
+
+ {% endif %} {% if object.is_lag %}
LAG Members
diff --git a/netbox/templates/dcim/interface_edit.html b/netbox/templates/dcim/interface_edit.html index e91c74d31..9fc752432 100644 --- a/netbox/templates/dcim/interface_edit.html +++ b/netbox/templates/dcim/interface_edit.html @@ -36,6 +36,7 @@
{% render_field form.rf_channel %} {% render_field form.rf_channel_width %} + {% render_field form.ssids %} {% endif %} diff --git a/netbox/wireless/migrations/0001_initial.py b/netbox/wireless/migrations/0001_initial.py index b0011dad9..78d1dfc73 100644 --- a/netbox/wireless/migrations/0001_initial.py +++ b/netbox/wireless/migrations/0001_initial.py @@ -9,7 +9,6 @@ class Migration(migrations.Migration): initial = True dependencies = [ - ('dcim', '0136_wireless'), ('extras', '0062_clear_secrets_changelog'), ('ipam', '0050_iprange'), ] diff --git a/netbox/wireless/models.py b/netbox/wireless/models.py index 5bb964345..2bdcecd79 100644 --- a/netbox/wireless/models.py +++ b/netbox/wireless/models.py @@ -1,7 +1,8 @@ from django.db import models +from django.urls import reverse from extras.utils import extras_features -from netbox.models import PrimaryModel +from netbox.models import BigIDModel, PrimaryModel from utilities.querysets import RestrictedQuerySet __all__ = ( @@ -9,6 +10,10 @@ __all__ = ( ) +# +# SSIDs +# + @extras_features('custom_fields', 'custom_links', 'export_templates', 'tags', 'webhooks') class SSID(PrimaryModel): """ @@ -38,3 +43,6 @@ class SSID(PrimaryModel): def __str__(self): return self.name + + def get_absolute_url(self): + return reverse('wireless:ssid', args=[self.pk]) diff --git a/netbox/wireless/tables.py b/netbox/wireless/tables.py index 846296bb4..9d3705549 100644 --- a/netbox/wireless/tables.py +++ b/netbox/wireless/tables.py @@ -10,9 +10,8 @@ __all__ = ( class SSIDTable(BaseTable): pk = ToggleColumn() - id = tables.Column( - linkify=True, - verbose_name='ID' + name = tables.Column( + linkify=True ) tags = TagColumn( url_name='dcim:cable_list' @@ -20,5 +19,5 @@ class SSIDTable(BaseTable): class Meta(BaseTable.Meta): model = SSID - fields = ('pk', 'id', 'name', 'description', 'vlan') + fields = ('pk', 'name', 'description', 'vlan') default_columns = ('pk', 'name', 'description', 'vlan') diff --git a/netbox/wireless/views.py b/netbox/wireless/views.py index b0d1f5156..b741330b7 100644 --- a/netbox/wireless/views.py +++ b/netbox/wireless/views.py @@ -15,7 +15,7 @@ class SSIDListView(generic.ObjectListView): class SSIDView(generic.ObjectView): - queryset = SSID.objects.prefetch_related('power_panel', 'rack') + queryset = SSID.objects.all() class SSIDEditView(generic.ObjectEditView): @@ -34,13 +34,13 @@ class SSIDBulkImportView(generic.BulkImportView): class SSIDBulkEditView(generic.BulkEditView): - queryset = SSID.objects.prefetch_related('power_panel', 'rack') + queryset = SSID.objects.all() filterset = filtersets.SSIDFilterSet table = tables.SSIDTable form = forms.SSIDBulkEditForm class SSIDBulkDeleteView(generic.BulkDeleteView): - queryset = SSID.objects.prefetch_related('power_panel', 'rack') + queryset = SSID.objects.all() filterset = filtersets.SSIDFilterSet table = tables.SSIDTable From 5271680483709114760dc0695e3d1dbbb6f45186 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Tue, 12 Oct 2021 17:02:53 -0400 Subject: [PATCH 007/289] Rename SSID model to WirelessLAN --- netbox/dcim/forms/models.py | 10 ++-- netbox/dcim/migrations/0136_wireless.py | 6 +-- netbox/dcim/models/device_components.py | 6 +-- netbox/netbox/navigation_menu.py | 2 +- netbox/templates/dcim/interface.html | 8 +-- netbox/templates/dcim/interface_edit.html | 2 +- .../wireless/{ssid.html => wirelesslan.html} | 6 +-- netbox/wireless/api/nested_serializers.py | 8 +-- netbox/wireless/api/serializers.py | 9 ++-- netbox/wireless/api/urls.py | 3 +- netbox/wireless/api/views.py | 8 +-- netbox/wireless/constants.py | 1 + netbox/wireless/filtersets.py | 10 ++-- netbox/wireless/forms/bulk_edit.py | 4 +- netbox/wireless/forms/bulk_import.py | 10 ++-- netbox/wireless/forms/filtersets.py | 6 +-- netbox/wireless/forms/models.py | 14 +++-- netbox/wireless/graphql/schema.py | 4 +- netbox/wireless/graphql/types.py | 8 +-- netbox/wireless/migrations/0001_initial.py | 11 ++-- netbox/wireless/models.py | 19 +++---- netbox/wireless/tables.py | 16 +++--- netbox/wireless/urls.py | 22 ++++---- netbox/wireless/views.py | 52 +++++++++---------- 24 files changed, 119 insertions(+), 126 deletions(-) rename netbox/templates/wireless/{ssid.html => wirelesslan.html} (90%) create mode 100644 netbox/wireless/constants.py diff --git a/netbox/dcim/forms/models.py b/netbox/dcim/forms/models.py index 2a6dc1f6f..cd697e9f3 100644 --- a/netbox/dcim/forms/models.py +++ b/netbox/dcim/forms/models.py @@ -16,7 +16,7 @@ from utilities.forms import ( SlugField, StaticSelect, ) from virtualization.models import Cluster, ClusterGroup -from wireless.models import SSID +from wireless.models import WirelessLAN from .common import InterfaceCommonForm __all__ = ( @@ -1069,10 +1069,10 @@ class InterfaceForm(BootstrapMixin, InterfaceCommonForm, CustomFieldModelForm): 'type': 'lag', } ) - ssids = DynamicModelMultipleChoiceField( - queryset=SSID.objects.all(), + wireless_lans = DynamicModelMultipleChoiceField( + queryset=WirelessLAN.objects.all(), required=False, - label='SSIDs' + label='Wireless LANs' ) vlan_group = DynamicModelChoiceField( queryset=VLANGroup.objects.all(), @@ -1104,7 +1104,7 @@ class InterfaceForm(BootstrapMixin, InterfaceCommonForm, CustomFieldModelForm): model = Interface fields = [ 'device', 'name', 'label', 'type', 'enabled', 'parent', 'lag', 'mac_address', 'wwn', 'mtu', 'mgmt_only', - 'mark_connected', 'description', 'mode', 'rf_channel', 'rf_channel_width', 'ssids', 'untagged_vlan', + 'mark_connected', 'description', 'mode', 'rf_channel', 'rf_channel_width', 'wireless_lans', 'untagged_vlan', 'tagged_vlans', 'tags', ] widgets = { diff --git a/netbox/dcim/migrations/0136_wireless.py b/netbox/dcim/migrations/0136_wireless.py index 0a1d15365..108e63802 100644 --- a/netbox/dcim/migrations/0136_wireless.py +++ b/netbox/dcim/migrations/0136_wireless.py @@ -4,7 +4,7 @@ from django.db import migrations, models class Migration(migrations.Migration): dependencies = [ - ('wireless', '__first__'), + ('wireless', '0001_initial'), ('dcim', '0135_location_tenant'), ] @@ -21,7 +21,7 @@ class Migration(migrations.Migration): ), migrations.AddField( model_name='interface', - name='ssids', - field=models.ManyToManyField(blank=True, related_name='interfaces', to='wireless.SSID'), + name='wireless_lans', + field=models.ManyToManyField(blank=True, related_name='interfaces', to='wireless.WirelessLAN'), ), ] diff --git a/netbox/dcim/models/device_components.py b/netbox/dcim/models/device_components.py index 5e3e7e6db..60eb4c368 100644 --- a/netbox/dcim/models/device_components.py +++ b/netbox/dcim/models/device_components.py @@ -529,11 +529,11 @@ class Interface(ComponentModel, BaseInterface, CableTermination, PathEndpoint): null=True, verbose_name='Channel width' ) - ssids = models.ManyToManyField( - to='wireless.SSID', + wireless_lans = models.ManyToManyField( + to='wireless.WirelessLAN', related_name='interfaces', blank=True, - verbose_name='SSIDs' + verbose_name='Wireless LANs' ) untagged_vlan = models.ForeignKey( to='ipam.VLAN', diff --git a/netbox/netbox/navigation_menu.py b/netbox/netbox/navigation_menu.py index 0a78f35ab..073189d31 100644 --- a/netbox/netbox/navigation_menu.py +++ b/netbox/netbox/navigation_menu.py @@ -195,7 +195,7 @@ WIRELESS_MENU = Menu( MenuGroup( label='Wireless', items=( - get_model_item('wireless', 'ssid', 'SSIDs'), + get_model_item('wireless', 'wirelesslan', 'Wireless LANs'), ), ), ), diff --git a/netbox/templates/dcim/interface.html b/netbox/templates/dcim/interface.html index bc4fc23e2..33eaa95db 100644 --- a/netbox/templates/dcim/interface.html +++ b/netbox/templates/dcim/interface.html @@ -260,19 +260,19 @@ {% endif %} {% if object.is_wireless %}
-
SSIDs
+
Wireless LANs
- + - {% for ssid in object.ssids.all %} + {% for wlan in object.wlans.all %} {% empty %} diff --git a/netbox/templates/dcim/interface_edit.html b/netbox/templates/dcim/interface_edit.html index 9fc752432..51834f4e2 100644 --- a/netbox/templates/dcim/interface_edit.html +++ b/netbox/templates/dcim/interface_edit.html @@ -36,7 +36,7 @@ {% render_field form.rf_channel %} {% render_field form.rf_channel_width %} - {% render_field form.ssids %} + {% render_field form.wireless_lans %} {% endif %} diff --git a/netbox/templates/wireless/ssid.html b/netbox/templates/wireless/wirelesslan.html similarity index 90% rename from netbox/templates/wireless/ssid.html rename to netbox/templates/wireless/wirelesslan.html index 5425149aa..98bde8688 100644 --- a/netbox/templates/wireless/ssid.html +++ b/netbox/templates/wireless/wirelesslan.html @@ -6,12 +6,12 @@
-
SSID
+
Wireless LAN
NameSSID
- {{ ssid.name }} + {{ wlan.ssid }}
- - + + diff --git a/netbox/wireless/api/nested_serializers.py b/netbox/wireless/api/nested_serializers.py index 50454a641..e290653a2 100644 --- a/netbox/wireless/api/nested_serializers.py +++ b/netbox/wireless/api/nested_serializers.py @@ -4,13 +4,13 @@ from netbox.api import WritableNestedSerializer from wireless.models import * __all__ = ( - 'NestedSSIDSerializer', + 'NestedWirelessLANSerializer', ) -class NestedSSIDSerializer(WritableNestedSerializer): +class NestedWirelessLANSerializer(WritableNestedSerializer): url = serializers.HyperlinkedIdentityField(view_name='wireless-api:ssid-detail') class Meta: - model = SSID - fields = ['id', 'url', 'display', 'name'] + model = WirelessLAN + fields = ['id', 'url', 'display', 'ssid'] diff --git a/netbox/wireless/api/serializers.py b/netbox/wireless/api/serializers.py index c129e5c96..08642259f 100644 --- a/netbox/wireless/api/serializers.py +++ b/netbox/wireless/api/serializers.py @@ -1,21 +1,20 @@ from rest_framework import serializers -from dcim.api.serializers import NestedInterfaceSerializer from ipam.api.serializers import NestedVLANSerializer from netbox.api.serializers import PrimaryModelSerializer from wireless.models import * __all__ = ( - 'SSIDSerializer', + 'WirelessLANSerializer', ) -class SSIDSerializer(PrimaryModelSerializer): +class WirelessLANSerializer(PrimaryModelSerializer): url = serializers.HyperlinkedIdentityField(view_name='wireless-api:ssid-detail') vlan = NestedVLANSerializer(required=False, allow_null=True) class Meta: - model = SSID + model = WirelessLAN fields = [ - 'id', 'url', 'display', 'name', 'description', 'vlan', + 'id', 'url', 'display', 'ssid', 'description', 'vlan', ] diff --git a/netbox/wireless/api/urls.py b/netbox/wireless/api/urls.py index f6936708c..638f31bbf 100644 --- a/netbox/wireless/api/urls.py +++ b/netbox/wireless/api/urls.py @@ -5,8 +5,7 @@ from . import views router = OrderedDefaultRouter() router.APIRootView = views.WirelessRootView -# SSIDs -router.register('ssids', views.SSIDViewSet) +router.register('wireless-lans', views.WirelessLANViewSet) app_name = 'wireless-api' urlpatterns = router.urls diff --git a/netbox/wireless/api/views.py b/netbox/wireless/api/views.py index 97827eb7e..a09b2e23d 100644 --- a/netbox/wireless/api/views.py +++ b/netbox/wireless/api/views.py @@ -18,7 +18,7 @@ class WirelessRootView(APIRootView): # Providers # -class SSIDViewSet(CustomFieldModelViewSet): - queryset = SSID.objects.prefetch_related('tags') - serializer_class = serializers.SSIDSerializer - filterset_class = filtersets.SSIDFilterSet +class WirelessLANViewSet(CustomFieldModelViewSet): + queryset = WirelessLAN.objects.prefetch_related('tags') + serializer_class = serializers.WirelessLANSerializer + filterset_class = filtersets.WirelessLANFilterSet diff --git a/netbox/wireless/constants.py b/netbox/wireless/constants.py new file mode 100644 index 000000000..188c4abd9 --- /dev/null +++ b/netbox/wireless/constants.py @@ -0,0 +1 @@ +SSID_MAX_LENGTH = 32 # Per IEEE 802.11-2007 diff --git a/netbox/wireless/filtersets.py b/netbox/wireless/filtersets.py index 232bc74ff..c148354a0 100644 --- a/netbox/wireless/filtersets.py +++ b/netbox/wireless/filtersets.py @@ -6,11 +6,11 @@ from netbox.filtersets import PrimaryModelFilterSet from .models import * __all__ = ( - 'SSIDFilterSet', + 'WirelessLANFilterSet', ) -class SSIDFilterSet(PrimaryModelFilterSet): +class WirelessLANFilterSet(PrimaryModelFilterSet): q = django_filters.CharFilter( method='search', label='Search', @@ -18,14 +18,14 @@ class SSIDFilterSet(PrimaryModelFilterSet): tag = TagFilter() class Meta: - model = SSID - fields = ['id', 'name'] + model = WirelessLAN + fields = ['id', 'ssid'] def search(self, queryset, name, value): if not value.strip(): return queryset qs_filter = ( - Q(name__icontains=value) | + Q(ssid__icontains=value) | Q(description__icontains=value) ) return queryset.filter(qs_filter) diff --git a/netbox/wireless/forms/bulk_edit.py b/netbox/wireless/forms/bulk_edit.py index ed9fb650b..c11a16239 100644 --- a/netbox/wireless/forms/bulk_edit.py +++ b/netbox/wireless/forms/bulk_edit.py @@ -6,11 +6,11 @@ from ipam.models import VLAN from utilities.forms import BootstrapMixin, DynamicModelChoiceField __all__ = ( - 'SSIDBulkEditForm', + 'WirelessLANBulkEditForm', ) -class SSIDBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldModelBulkEditForm): +class WirelessLANBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldModelBulkEditForm): pk = forms.ModelMultipleChoiceField( queryset=PowerFeed.objects.all(), widget=forms.MultipleHiddenInput diff --git a/netbox/wireless/forms/bulk_import.py b/netbox/wireless/forms/bulk_import.py index 0cf997fd3..5dc07f91a 100644 --- a/netbox/wireless/forms/bulk_import.py +++ b/netbox/wireless/forms/bulk_import.py @@ -1,14 +1,14 @@ from extras.forms import CustomFieldModelCSVForm from ipam.models import VLAN from utilities.forms import CSVModelChoiceField -from wireless.models import SSID +from wireless.models import WirelessLAN __all__ = ( - 'SSIDCSVForm', + 'WirelessLANCSVForm', ) -class SSIDCSVForm(CustomFieldModelCSVForm): +class WirelessLANCSVForm(CustomFieldModelCSVForm): vlan = CSVModelChoiceField( queryset=VLAN.objects.all(), to_field_name='name', @@ -16,5 +16,5 @@ class SSIDCSVForm(CustomFieldModelCSVForm): ) class Meta: - model = SSID - fields = ('name', 'description', 'vlan') + model = WirelessLAN + fields = ('ssid', 'description', 'vlan') diff --git a/netbox/wireless/forms/filtersets.py b/netbox/wireless/forms/filtersets.py index 733b807f7..99e38918e 100644 --- a/netbox/wireless/forms/filtersets.py +++ b/netbox/wireless/forms/filtersets.py @@ -1,13 +1,13 @@ from django import forms from django.utils.translation import gettext as _ -from dcim.models import * from extras.forms import CustomFieldModelFilterForm from utilities.forms import BootstrapMixin, TagFilterField +from .models import WirelessLAN -class SSIDFilterForm(BootstrapMixin, CustomFieldModelFilterForm): - model = PowerFeed +class WirelessLANFilterForm(BootstrapMixin, CustomFieldModelFilterForm): + model = WirelessLAN field_groups = [ ['q', 'tag'], ] diff --git a/netbox/wireless/forms/models.py b/netbox/wireless/forms/models.py index ea6d51223..95b43c7d3 100644 --- a/netbox/wireless/forms/models.py +++ b/netbox/wireless/forms/models.py @@ -1,17 +1,15 @@ -from dcim.constants import * -from dcim.models import * from extras.forms import CustomFieldModelForm from extras.models import Tag from ipam.models import VLAN from utilities.forms import BootstrapMixin, DynamicModelChoiceField, DynamicModelMultipleChoiceField -from wireless.models import SSID +from wireless.models import WirelessLAN __all__ = ( - 'SSIDForm', + 'WirelessLANForm', ) -class SSIDForm(BootstrapMixin, CustomFieldModelForm): +class WirelessLANForm(BootstrapMixin, CustomFieldModelForm): vlan = DynamicModelChoiceField( queryset=VLAN.objects.all(), required=False @@ -22,11 +20,11 @@ class SSIDForm(BootstrapMixin, CustomFieldModelForm): ) class Meta: - model = SSID + model = WirelessLAN fields = [ - 'name', 'description', 'vlan', 'tags', + 'ssid', 'description', 'vlan', 'tags', ] fieldsets = ( - ('SSID', ('name', 'description', 'tags')), + ('Wireless LAN', ('ssid', 'description', 'tags')), ('VLAN', ('vlan',)), ) diff --git a/netbox/wireless/graphql/schema.py b/netbox/wireless/graphql/schema.py index d0beec7d9..8297f4545 100644 --- a/netbox/wireless/graphql/schema.py +++ b/netbox/wireless/graphql/schema.py @@ -5,5 +5,5 @@ from .types import * class WirelessQuery(graphene.ObjectType): - ssid = ObjectField(SSIDType) - ssid_list = ObjectListField(SSIDType) + wirelesslan = ObjectField(WirelessLANType) + wirelesslan_list = ObjectListField(WirelessLANType) diff --git a/netbox/wireless/graphql/types.py b/netbox/wireless/graphql/types.py index 66e73429d..4cdb75ebe 100644 --- a/netbox/wireless/graphql/types.py +++ b/netbox/wireless/graphql/types.py @@ -2,13 +2,13 @@ from wireless import filtersets, models from netbox.graphql.types import ObjectType __all__ = ( - 'SSIDType', + 'WirelessLANType', ) -class SSIDType(ObjectType): +class WirelessLANType(ObjectType): class Meta: - model = models.SSID + model = models.WirelessLAN fields = '__all__' - filterset_class = filtersets.SSIDFilterSet + filterset_class = filtersets.WirelessLANFilterSet diff --git a/netbox/wireless/migrations/0001_initial.py b/netbox/wireless/migrations/0001_initial.py index 78d1dfc73..c93a17190 100644 --- a/netbox/wireless/migrations/0001_initial.py +++ b/netbox/wireless/migrations/0001_initial.py @@ -9,27 +9,26 @@ class Migration(migrations.Migration): initial = True dependencies = [ - ('extras', '0062_clear_secrets_changelog'), ('ipam', '0050_iprange'), + ('extras', '0062_clear_secrets_changelog'), ] operations = [ migrations.CreateModel( - name='SSID', + name='WirelessLAN', fields=[ ('created', models.DateField(auto_now_add=True, null=True)), ('last_updated', models.DateTimeField(auto_now=True, null=True)), ('custom_field_data', models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder)), ('id', models.BigAutoField(primary_key=True, serialize=False)), - ('name', models.CharField(max_length=32)), + ('ssid', models.CharField(max_length=32)), ('description', models.CharField(blank=True, max_length=200)), ('tags', taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag')), ('vlan', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='ipam.vlan')), ], options={ - 'verbose_name': 'SSID', - 'verbose_name_plural': 'SSIDs', - 'ordering': ('name', 'pk'), + 'verbose_name': 'Wireless LAN', + 'ordering': ('ssid', 'pk'), }, ), ] diff --git a/netbox/wireless/models.py b/netbox/wireless/models.py index 2bdcecd79..363631ef5 100644 --- a/netbox/wireless/models.py +++ b/netbox/wireless/models.py @@ -1,25 +1,23 @@ +from django.core.exceptions import ValidationError from django.db import models from django.urls import reverse +from dcim.constants import WIRELESS_IFACE_TYPES from extras.utils import extras_features from netbox.models import BigIDModel, PrimaryModel from utilities.querysets import RestrictedQuerySet __all__ = ( - 'SSID', + 'WirelessLAN', ) -# -# SSIDs -# - @extras_features('custom_fields', 'custom_links', 'export_templates', 'tags', 'webhooks') -class SSID(PrimaryModel): +class WirelessLAN(PrimaryModel): """ A service set identifier belonging to a wireless network. """ - name = models.CharField( + ssid = models.CharField( max_length=32 ) vlan = models.ForeignKey( @@ -37,12 +35,11 @@ class SSID(PrimaryModel): objects = RestrictedQuerySet.as_manager() class Meta: - ordering = ('name', 'pk') - verbose_name = 'SSID' - verbose_name_plural = 'SSIDs' + ordering = ('ssid', 'pk') + verbose_name = 'Wireless LAN' def __str__(self): - return self.name + return self.ssid def get_absolute_url(self): return reverse('wireless:ssid', args=[self.pk]) diff --git a/netbox/wireless/tables.py b/netbox/wireless/tables.py index 9d3705549..133353f57 100644 --- a/netbox/wireless/tables.py +++ b/netbox/wireless/tables.py @@ -1,23 +1,23 @@ import django_tables2 as tables -from .models import SSID +from .models import WirelessLAN from utilities.tables import BaseTable, TagColumn, ToggleColumn __all__ = ( - 'SSIDTable', + 'WirelessLANTable', ) -class SSIDTable(BaseTable): +class WirelessLANTable(BaseTable): pk = ToggleColumn() - name = tables.Column( + ssid = tables.Column( linkify=True ) tags = TagColumn( - url_name='dcim:cable_list' + url_name='wireless:wirelesslan_list' ) class Meta(BaseTable.Meta): - model = SSID - fields = ('pk', 'name', 'description', 'vlan') - default_columns = ('pk', 'name', 'description', 'vlan') + model = WirelessLAN + fields = ('pk', 'ssid', 'description', 'vlan') + default_columns = ('pk', 'ssid', 'description', 'vlan') diff --git a/netbox/wireless/urls.py b/netbox/wireless/urls.py index 57e0eab9b..c30ca472c 100644 --- a/netbox/wireless/urls.py +++ b/netbox/wireless/urls.py @@ -7,16 +7,16 @@ from .models import * app_name = 'wireless' urlpatterns = ( - # SSIDs - path('ssids/', views.SSIDListView.as_view(), name='ssid_list'), - path('ssids/add/', views.SSIDEditView.as_view(), name='ssid_add'), - path('ssids/import/', views.SSIDBulkImportView.as_view(), name='ssid_import'), - path('ssids/edit/', views.SSIDBulkEditView.as_view(), name='ssid_bulk_edit'), - path('ssids/delete/', views.SSIDBulkDeleteView.as_view(), name='ssid_bulk_delete'), - path('ssids//', views.SSIDView.as_view(), name='ssid'), - path('ssids//edit/', views.SSIDEditView.as_view(), name='ssid_edit'), - path('ssids//delete/', views.SSIDDeleteView.as_view(), name='ssid_delete'), - path('ssids//changelog/', ObjectChangeLogView.as_view(), name='ssid_changelog', kwargs={'model': SSID}), - path('ssids//journal/', ObjectJournalView.as_view(), name='ssid_journal', kwargs={'model': SSID}), + # Wireless LANs + path('wireless-lans/', views.WirelessLANListView.as_view(), name='wirelesslan_list'), + path('wireless-lans/add/', views.WirelessLANEditView.as_view(), name='wirelesslan_add'), + path('wireless-lans/import/', views.WirelessLANBulkImportView.as_view(), name='wirelesslan_import'), + path('wireless-lans/edit/', views.WirelessLANBulkEditView.as_view(), name='wirelesslan_bulk_edit'), + path('wireless-lans/delete/', views.WirelessLANBulkDeleteView.as_view(), name='wirelesslan_bulk_delete'), + path('wireless-lans//', views.WirelessLANView.as_view(), name='wirelesslan'), + path('wireless-lans//edit/', views.WirelessLANEditView.as_view(), name='wirelesslan_edit'), + path('wireless-lans//delete/', views.WirelessLANDeleteView.as_view(), name='wirelesslan_delete'), + path('wireless-lans//changelog/', ObjectChangeLogView.as_view(), name='wirelesslan_changelog', kwargs={'model': WirelessLAN}), + path('wireless-lans//journal/', ObjectJournalView.as_view(), name='wirelesslan_journal', kwargs={'model': WirelessLAN}), ) diff --git a/netbox/wireless/views.py b/netbox/wireless/views.py index b741330b7..6e1c0b1b7 100644 --- a/netbox/wireless/views.py +++ b/netbox/wireless/views.py @@ -4,43 +4,43 @@ from .models import * # -# SSIDs +# Wireless LANs # -class SSIDListView(generic.ObjectListView): - queryset = SSID.objects.all() - filterset = filtersets.SSIDFilterSet - filterset_form = forms.SSIDFilterForm - table = tables.SSIDTable +class WirelessLANListView(generic.ObjectListView): + queryset = WirelessLAN.objects.all() + filterset = filtersets.WirelessLANFilterSet + filterset_form = forms.WirelessLANFilterForm + table = tables.WirelessLANTable -class SSIDView(generic.ObjectView): - queryset = SSID.objects.all() +class WirelessLANView(generic.ObjectView): + queryset = WirelessLAN.objects.all() -class SSIDEditView(generic.ObjectEditView): - queryset = SSID.objects.all() - model_form = forms.SSIDForm +class WirelessLANEditView(generic.ObjectEditView): + queryset = WirelessLAN.objects.all() + model_form = forms.WirelessLANForm -class SSIDDeleteView(generic.ObjectDeleteView): - queryset = SSID.objects.all() +class WirelessLANDeleteView(generic.ObjectDeleteView): + queryset = WirelessLAN.objects.all() -class SSIDBulkImportView(generic.BulkImportView): - queryset = SSID.objects.all() - model_form = forms.SSIDCSVForm - table = tables.SSIDTable +class WirelessLANBulkImportView(generic.BulkImportView): + queryset = WirelessLAN.objects.all() + model_form = forms.WirelessLANCSVForm + table = tables.WirelessLANTable -class SSIDBulkEditView(generic.BulkEditView): - queryset = SSID.objects.all() - filterset = filtersets.SSIDFilterSet - table = tables.SSIDTable - form = forms.SSIDBulkEditForm +class WirelessLANBulkEditView(generic.BulkEditView): + queryset = WirelessLAN.objects.all() + filterset = filtersets.WirelessLANFilterSet + table = tables.WirelessLANTable + form = forms.WirelessLANBulkEditForm -class SSIDBulkDeleteView(generic.BulkDeleteView): - queryset = SSID.objects.all() - filterset = filtersets.SSIDFilterSet - table = tables.SSIDTable +class WirelessLANBulkDeleteView(generic.BulkDeleteView): + queryset = WirelessLAN.objects.all() + filterset = filtersets.WirelessLANFilterSet + table = tables.WirelessLANTable From 90e9f344944ef192b4b3ebc56a895d93e2995440 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Wed, 13 Oct 2021 09:46:17 -0400 Subject: [PATCH 008/289] Add WirelessLink model --- netbox/dcim/migrations/0136_wireless.py | 8 +- netbox/dcim/migrations/0137_wireless.py | 19 +++++ netbox/netbox/navigation_menu.py | 1 + .../wireless/inc/wirelesslink_interface.html | 20 +++++ netbox/templates/wireless/wirelesslan.html | 2 +- netbox/templates/wireless/wirelesslink.html | 48 +++++++++++ netbox/wireless/api/nested_serializers.py | 11 ++- netbox/wireless/api/serializers.py | 17 +++- netbox/wireless/api/urls.py | 1 + netbox/wireless/api/views.py | 12 +-- netbox/wireless/filtersets.py | 22 +++++ netbox/wireless/forms/bulk_edit.py | 27 +++++- netbox/wireless/forms/bulk_import.py | 17 +++- netbox/wireless/forms/filtersets.py | 28 ++++++- netbox/wireless/forms/models.py | 29 ++++++- netbox/wireless/migrations/0001_initial.py | 34 -------- netbox/wireless/migrations/0001_wireless.py | 57 +++++++++++++ netbox/wireless/models.py | 83 ++++++++++++++++++- netbox/wireless/tables.py | 25 +++++- netbox/wireless/urls.py | 12 +++ netbox/wireless/views.py | 43 ++++++++++ 21 files changed, 458 insertions(+), 58 deletions(-) create mode 100644 netbox/dcim/migrations/0137_wireless.py create mode 100644 netbox/templates/wireless/inc/wirelesslink_interface.html create mode 100644 netbox/templates/wireless/wirelesslink.html delete mode 100644 netbox/wireless/migrations/0001_initial.py create mode 100644 netbox/wireless/migrations/0001_wireless.py diff --git a/netbox/dcim/migrations/0136_wireless.py b/netbox/dcim/migrations/0136_wireless.py index 108e63802..3b33f7d3f 100644 --- a/netbox/dcim/migrations/0136_wireless.py +++ b/netbox/dcim/migrations/0136_wireless.py @@ -1,10 +1,11 @@ +# Generated by Django 3.2.8 on 2021-10-13 13:44 + from django.db import migrations, models class Migration(migrations.Migration): dependencies = [ - ('wireless', '0001_initial'), ('dcim', '0135_location_tenant'), ] @@ -19,9 +20,4 @@ class Migration(migrations.Migration): name='rf_channel_width', field=models.PositiveSmallIntegerField(blank=True, null=True), ), - migrations.AddField( - model_name='interface', - name='wireless_lans', - field=models.ManyToManyField(blank=True, related_name='interfaces', to='wireless.WirelessLAN'), - ), ] diff --git a/netbox/dcim/migrations/0137_wireless.py b/netbox/dcim/migrations/0137_wireless.py new file mode 100644 index 000000000..9108735a1 --- /dev/null +++ b/netbox/dcim/migrations/0137_wireless.py @@ -0,0 +1,19 @@ +# Generated by Django 3.2.8 on 2021-10-13 13:44 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('dcim', '0136_wireless'), + ('wireless', '0001_wireless'), + ] + + operations = [ + migrations.AddField( + model_name='interface', + name='wireless_lans', + field=models.ManyToManyField(blank=True, related_name='interfaces', to='wireless.WirelessLAN'), + ), + ] diff --git a/netbox/netbox/navigation_menu.py b/netbox/netbox/navigation_menu.py index 073189d31..b3e11f6ce 100644 --- a/netbox/netbox/navigation_menu.py +++ b/netbox/netbox/navigation_menu.py @@ -196,6 +196,7 @@ WIRELESS_MENU = Menu( label='Wireless', items=( get_model_item('wireless', 'wirelesslan', 'Wireless LANs'), + get_model_item('wireless', 'wirelesslink', 'Wirelesss Links', actions=['import']), ), ), ), diff --git a/netbox/templates/wireless/inc/wirelesslink_interface.html b/netbox/templates/wireless/inc/wirelesslink_interface.html new file mode 100644 index 000000000..9c4669ad1 --- /dev/null +++ b/netbox/templates/wireless/inc/wirelesslink_interface.html @@ -0,0 +1,20 @@ +
Name{{ object.name }}SSID{{ object.ssid }}
Description
+ + + + + + + + + + + + +
Device + {{ interface.device }} +
Interface + {{ interface }} +
Type + {{ interface.get_type_display }} +
diff --git a/netbox/templates/wireless/wirelesslan.html b/netbox/templates/wireless/wirelesslan.html index 98bde8688..f8fabf558 100644 --- a/netbox/templates/wireless/wirelesslan.html +++ b/netbox/templates/wireless/wirelesslan.html @@ -30,7 +30,7 @@
- {% include 'extras/inc/tags_panel.html' with tags=object.tags.all url='dcim:site_list' %} + {% include 'extras/inc/tags_panel.html' with tags=object.tags.all url='wireless:wirelesslan_list' %} {% plugin_left_page object %}
diff --git a/netbox/templates/wireless/wirelesslink.html b/netbox/templates/wireless/wirelesslink.html new file mode 100644 index 000000000..6196adae4 --- /dev/null +++ b/netbox/templates/wireless/wirelesslink.html @@ -0,0 +1,48 @@ +{% extends 'generic/object.html' %} +{% load helpers %} +{% load plugins %} + +{% block content %} +
+
+
+
Interface A
+
+ {% include 'wireless/inc/wirelesslink_interface.html' with interface=object.interface_a %} +
+
+
+
Link Properties
+
+ + + + + + + + + +
SSID{{ object.ssid|placeholder }}
Description{{ object.description|placeholder }}
+
+
+ {% plugin_left_page object %} +
+
+
+
Interface B
+
+ {% include 'wireless/inc/wirelesslink_interface.html' with interface=object.interface_b %} +
+
+ {% include 'inc/custom_fields_panel.html' %} + {% include 'extras/inc/tags_panel.html' with tags=object.tags.all url='wireless:wirelesslink_list' %} + {% plugin_right_page object %} +
+
+
+
+ {% plugin_full_width_page object %} +
+
+{% endblock %} diff --git a/netbox/wireless/api/nested_serializers.py b/netbox/wireless/api/nested_serializers.py index e290653a2..5a8cf6671 100644 --- a/netbox/wireless/api/nested_serializers.py +++ b/netbox/wireless/api/nested_serializers.py @@ -5,12 +5,21 @@ from wireless.models import * __all__ = ( 'NestedWirelessLANSerializer', + 'NestedWirelessLinkSerializer', ) class NestedWirelessLANSerializer(WritableNestedSerializer): - url = serializers.HyperlinkedIdentityField(view_name='wireless-api:ssid-detail') + url = serializers.HyperlinkedIdentityField(view_name='wireless-api:wirelesslan-detail') class Meta: model = WirelessLAN fields = ['id', 'url', 'display', 'ssid'] + + +class NestedWirelessLinkSerializer(WritableNestedSerializer): + url = serializers.HyperlinkedIdentityField(view_name='wireless-api:wirelesslink-detail') + + class Meta: + model = WirelessLink + fields = ['id', 'url', 'display', 'ssid'] diff --git a/netbox/wireless/api/serializers.py b/netbox/wireless/api/serializers.py index 08642259f..90515f53e 100644 --- a/netbox/wireless/api/serializers.py +++ b/netbox/wireless/api/serializers.py @@ -1,16 +1,19 @@ from rest_framework import serializers +from dcim.api.serializers import NestedInterfaceSerializer from ipam.api.serializers import NestedVLANSerializer from netbox.api.serializers import PrimaryModelSerializer from wireless.models import * +from .nested_serializers import * __all__ = ( 'WirelessLANSerializer', + 'WirelessLinkSerializer', ) class WirelessLANSerializer(PrimaryModelSerializer): - url = serializers.HyperlinkedIdentityField(view_name='wireless-api:ssid-detail') + url = serializers.HyperlinkedIdentityField(view_name='wireless-api:wirelesslan-detail') vlan = NestedVLANSerializer(required=False, allow_null=True) class Meta: @@ -18,3 +21,15 @@ class WirelessLANSerializer(PrimaryModelSerializer): fields = [ 'id', 'url', 'display', 'ssid', 'description', 'vlan', ] + + +class WirelessLinkSerializer(PrimaryModelSerializer): + url = serializers.HyperlinkedIdentityField(view_name='wireless-api:wirelesslink-detail') + interface_a = NestedInterfaceSerializer() + interface_b = NestedInterfaceSerializer() + + class Meta: + model = WirelessLAN + fields = [ + 'id', 'url', 'display', 'interface_a', 'interface_b', 'ssid', 'description', + ] diff --git a/netbox/wireless/api/urls.py b/netbox/wireless/api/urls.py index 638f31bbf..431bb05f8 100644 --- a/netbox/wireless/api/urls.py +++ b/netbox/wireless/api/urls.py @@ -6,6 +6,7 @@ router = OrderedDefaultRouter() router.APIRootView = views.WirelessRootView router.register('wireless-lans', views.WirelessLANViewSet) +router.register('wireless-links', views.WirelessLinkViewSet) app_name = 'wireless-api' urlpatterns = router.urls diff --git a/netbox/wireless/api/views.py b/netbox/wireless/api/views.py index a09b2e23d..aa361a7f7 100644 --- a/netbox/wireless/api/views.py +++ b/netbox/wireless/api/views.py @@ -14,11 +14,13 @@ class WirelessRootView(APIRootView): return 'Wireless' -# -# Providers -# - class WirelessLANViewSet(CustomFieldModelViewSet): - queryset = WirelessLAN.objects.prefetch_related('tags') + queryset = WirelessLAN.objects.prefetch_related('vlan', 'tags') serializer_class = serializers.WirelessLANSerializer filterset_class = filtersets.WirelessLANFilterSet + + +class WirelessLinkViewSet(CustomFieldModelViewSet): + queryset = WirelessLink.objects.prefetch_related('interface_a', 'interface_b', 'tags') + serializer_class = serializers.WirelessLinkSerializer + filterset_class = filtersets.WirelessLinkFilterSet diff --git a/netbox/wireless/filtersets.py b/netbox/wireless/filtersets.py index c148354a0..7341ada9d 100644 --- a/netbox/wireless/filtersets.py +++ b/netbox/wireless/filtersets.py @@ -7,6 +7,7 @@ from .models import * __all__ = ( 'WirelessLANFilterSet', + 'WirelessLinkFilterSet', ) @@ -29,3 +30,24 @@ class WirelessLANFilterSet(PrimaryModelFilterSet): Q(description__icontains=value) ) return queryset.filter(qs_filter) + + +class WirelessLinkFilterSet(PrimaryModelFilterSet): + q = django_filters.CharFilter( + method='search', + label='Search', + ) + tag = TagFilter() + + class Meta: + model = WirelessLink + fields = ['id', 'ssid'] + + def search(self, queryset, name, value): + if not value.strip(): + return queryset + qs_filter = ( + Q(ssid__icontains=value) | + Q(description__icontains=value) + ) + return queryset.filter(qs_filter) diff --git a/netbox/wireless/forms/bulk_edit.py b/netbox/wireless/forms/bulk_edit.py index c11a16239..65666ccb1 100644 --- a/netbox/wireless/forms/bulk_edit.py +++ b/netbox/wireless/forms/bulk_edit.py @@ -4,9 +4,11 @@ from dcim.models import * from extras.forms import AddRemoveTagsForm, CustomFieldModelBulkEditForm from ipam.models import VLAN from utilities.forms import BootstrapMixin, DynamicModelChoiceField +from wireless.constants import SSID_MAX_LENGTH __all__ = ( 'WirelessLANBulkEditForm', + 'WirelessLinkBulkEditForm', ) @@ -19,11 +21,30 @@ class WirelessLANBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldMode queryset=VLAN.objects.all(), required=False, ) + ssid = forms.CharField( + max_length=SSID_MAX_LENGTH, + required=False + ) description = forms.CharField( required=False ) class Meta: - nullable_fields = [ - 'vlan', 'description', - ] + nullable_fields = ['vlan', 'ssid', 'description'] + + +class WirelessLinkBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldModelBulkEditForm): + pk = forms.ModelMultipleChoiceField( + queryset=PowerFeed.objects.all(), + widget=forms.MultipleHiddenInput + ) + ssid = forms.CharField( + max_length=SSID_MAX_LENGTH, + required=False + ) + description = forms.CharField( + required=False + ) + + class Meta: + nullable_fields = ['ssid', 'description'] diff --git a/netbox/wireless/forms/bulk_import.py b/netbox/wireless/forms/bulk_import.py index 5dc07f91a..caf322dc1 100644 --- a/netbox/wireless/forms/bulk_import.py +++ b/netbox/wireless/forms/bulk_import.py @@ -1,10 +1,12 @@ +from dcim.models import Interface from extras.forms import CustomFieldModelCSVForm from ipam.models import VLAN from utilities.forms import CSVModelChoiceField -from wireless.models import WirelessLAN +from wireless.models import * __all__ = ( 'WirelessLANCSVForm', + 'WirelessLinkCSVForm', ) @@ -18,3 +20,16 @@ class WirelessLANCSVForm(CustomFieldModelCSVForm): class Meta: model = WirelessLAN fields = ('ssid', 'description', 'vlan') + + +class WirelessLinkCSVForm(CustomFieldModelCSVForm): + interface_a = CSVModelChoiceField( + queryset=Interface.objects.all() + ) + interface_b = CSVModelChoiceField( + queryset=Interface.objects.all() + ) + + class Meta: + model = WirelessLink + fields = ('interface_a', 'interface_b', 'ssid', 'description') diff --git a/netbox/wireless/forms/filtersets.py b/netbox/wireless/forms/filtersets.py index 99e38918e..fa1912099 100644 --- a/netbox/wireless/forms/filtersets.py +++ b/netbox/wireless/forms/filtersets.py @@ -3,7 +3,12 @@ from django.utils.translation import gettext as _ from extras.forms import CustomFieldModelFilterForm from utilities.forms import BootstrapMixin, TagFilterField -from .models import WirelessLAN +from wireless.models import * + +__all__ = ( + 'WirelessLANFilterForm', + 'WirelessLinkFilterForm', +) class WirelessLANFilterForm(BootstrapMixin, CustomFieldModelFilterForm): @@ -16,4 +21,25 @@ class WirelessLANFilterForm(BootstrapMixin, CustomFieldModelFilterForm): widget=forms.TextInput(attrs={'placeholder': _('All Fields')}), label=_('Search') ) + ssid = forms.CharField( + required=False, + label='SSID' + ) + tag = TagFilterField(model) + + +class WirelessLinkFilterForm(BootstrapMixin, CustomFieldModelFilterForm): + model = WirelessLink + field_groups = [ + ['q', 'tag'], + ] + q = forms.CharField( + required=False, + widget=forms.TextInput(attrs={'placeholder': _('All Fields')}), + label=_('Search') + ) + ssid = forms.CharField( + required=False, + label='SSID' + ) tag = TagFilterField(model) diff --git a/netbox/wireless/forms/models.py b/netbox/wireless/forms/models.py index 95b43c7d3..08e864340 100644 --- a/netbox/wireless/forms/models.py +++ b/netbox/wireless/forms/models.py @@ -1,11 +1,13 @@ +from dcim.models import Interface from extras.forms import CustomFieldModelForm from extras.models import Tag from ipam.models import VLAN from utilities.forms import BootstrapMixin, DynamicModelChoiceField, DynamicModelMultipleChoiceField -from wireless.models import WirelessLAN +from wireless.models import * __all__ = ( 'WirelessLANForm', + 'WirelessLinkForm', ) @@ -28,3 +30,28 @@ class WirelessLANForm(BootstrapMixin, CustomFieldModelForm): ('Wireless LAN', ('ssid', 'description', 'tags')), ('VLAN', ('vlan',)), ) + + +class WirelessLinkForm(BootstrapMixin, CustomFieldModelForm): + interface_a = DynamicModelChoiceField( + queryset=Interface.objects.all(), + query_params={ + 'kind': 'wireless' + } + ) + interface_b = DynamicModelChoiceField( + queryset=Interface.objects.all(), + query_params={ + 'kind': 'wireless' + } + ) + tags = DynamicModelMultipleChoiceField( + queryset=Tag.objects.all(), + required=False + ) + + class Meta: + model = WirelessLink + fields = [ + 'interface_a', 'interface_b', 'ssid', 'description', 'tags', + ] diff --git a/netbox/wireless/migrations/0001_initial.py b/netbox/wireless/migrations/0001_initial.py deleted file mode 100644 index c93a17190..000000000 --- a/netbox/wireless/migrations/0001_initial.py +++ /dev/null @@ -1,34 +0,0 @@ -import django.core.serializers.json -from django.db import migrations, models -import django.db.models.deletion -import taggit.managers - - -class Migration(migrations.Migration): - - initial = True - - dependencies = [ - ('ipam', '0050_iprange'), - ('extras', '0062_clear_secrets_changelog'), - ] - - operations = [ - migrations.CreateModel( - name='WirelessLAN', - fields=[ - ('created', models.DateField(auto_now_add=True, null=True)), - ('last_updated', models.DateTimeField(auto_now=True, null=True)), - ('custom_field_data', models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder)), - ('id', models.BigAutoField(primary_key=True, serialize=False)), - ('ssid', models.CharField(max_length=32)), - ('description', models.CharField(blank=True, max_length=200)), - ('tags', taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag')), - ('vlan', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='ipam.vlan')), - ], - options={ - 'verbose_name': 'Wireless LAN', - 'ordering': ('ssid', 'pk'), - }, - ), - ] diff --git a/netbox/wireless/migrations/0001_wireless.py b/netbox/wireless/migrations/0001_wireless.py new file mode 100644 index 000000000..2fb07e5fd --- /dev/null +++ b/netbox/wireless/migrations/0001_wireless.py @@ -0,0 +1,57 @@ +# Generated by Django 3.2.8 on 2021-10-13 13:44 + +import django.core.serializers.json +from django.db import migrations, models +import django.db.models.deletion +import taggit.managers + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ('dcim', '0136_wireless'), + ('extras', '0062_clear_secrets_changelog'), + ('ipam', '0050_iprange'), + ] + + operations = [ + migrations.CreateModel( + name='WirelessLAN', + fields=[ + ('created', models.DateField(auto_now_add=True, null=True)), + ('last_updated', models.DateTimeField(auto_now=True, null=True)), + ('custom_field_data', models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder)), + ('id', models.BigAutoField(primary_key=True, serialize=False)), + ('ssid', models.CharField(max_length=32)), + ('description', models.CharField(blank=True, max_length=200)), + ('tags', taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag')), + ('vlan', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='ipam.vlan')), + ], + options={ + 'verbose_name': 'Wireless LAN', + 'ordering': ('ssid', 'pk'), + }, + ), + migrations.CreateModel( + name='WirelessLink', + fields=[ + ('created', models.DateField(auto_now_add=True, null=True)), + ('last_updated', models.DateTimeField(auto_now=True, null=True)), + ('custom_field_data', models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder)), + ('id', models.BigAutoField(primary_key=True, serialize=False)), + ('ssid', models.CharField(blank=True, max_length=32)), + ('description', models.CharField(blank=True, max_length=200)), + ('_interface_a_device', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='+', to='dcim.device')), + ('_interface_b_device', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='+', to='dcim.device')), + ('interface_a', models.ForeignKey(limit_choices_to={'type__in': ['ieee802.11a', 'ieee802.11g', 'ieee802.11n', 'ieee802.11ac', 'ieee802.11ad', 'ieee802.11ax']}, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='dcim.interface')), + ('interface_b', models.ForeignKey(limit_choices_to={'type__in': ['ieee802.11a', 'ieee802.11g', 'ieee802.11n', 'ieee802.11ac', 'ieee802.11ad', 'ieee802.11ax']}, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='dcim.interface')), + ('tags', taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag')), + ], + options={ + 'ordering': ['pk'], + 'unique_together': {('interface_a', 'interface_b')}, + }, + ), + ] diff --git a/netbox/wireless/models.py b/netbox/wireless/models.py index 363631ef5..41f3dbf6d 100644 --- a/netbox/wireless/models.py +++ b/netbox/wireless/models.py @@ -6,19 +6,22 @@ from dcim.constants import WIRELESS_IFACE_TYPES from extras.utils import extras_features from netbox.models import BigIDModel, PrimaryModel from utilities.querysets import RestrictedQuerySet +from .constants import SSID_MAX_LENGTH __all__ = ( 'WirelessLAN', + 'WirelessLink', ) @extras_features('custom_fields', 'custom_links', 'export_templates', 'tags', 'webhooks') class WirelessLAN(PrimaryModel): """ - A service set identifier belonging to a wireless network. + A wireless network formed among an arbitrary number of access point and clients. """ ssid = models.CharField( - max_length=32 + max_length=SSID_MAX_LENGTH, + verbose_name='SSID' ) vlan = models.ForeignKey( to='ipam.VLAN', @@ -42,4 +45,78 @@ class WirelessLAN(PrimaryModel): return self.ssid def get_absolute_url(self): - return reverse('wireless:ssid', args=[self.pk]) + return reverse('wireless:wirelesslan', args=[self.pk]) + + +@extras_features('custom_fields', 'custom_links', 'export_templates', 'tags', 'webhooks') +class WirelessLink(PrimaryModel): + """ + A point-to-point connection between two wireless Interfaces. + """ + interface_a = models.ForeignKey( + to='dcim.Interface', + limit_choices_to={'type__in': WIRELESS_IFACE_TYPES}, + on_delete=models.PROTECT, + related_name='+' + ) + interface_b = models.ForeignKey( + to='dcim.Interface', + limit_choices_to={'type__in': WIRELESS_IFACE_TYPES}, + on_delete=models.PROTECT, + related_name='+' + ) + ssid = models.CharField( + max_length=SSID_MAX_LENGTH, + blank=True, + verbose_name='SSID' + ) + description = models.CharField( + max_length=200, + blank=True + ) + + # Cache the associated device for the A and B interfaces. This enables filtering of WirelessLinks by their + # associated Devices. + _interface_a_device = models.ForeignKey( + to='dcim.Device', + on_delete=models.CASCADE, + related_name='+', + blank=True, + null=True + ) + _interface_b_device = models.ForeignKey( + to='dcim.Device', + on_delete=models.CASCADE, + related_name='+', + blank=True, + null=True + ) + + objects = RestrictedQuerySet.as_manager() + + class Meta: + ordering = ['pk'] + unique_together = ('interface_a', 'interface_b') + + def get_absolute_url(self): + return reverse('wireless:wirelesslink', args=[self.pk]) + + def clean(self): + + # Validate interface types + if self.interface_a.type not in WIRELESS_IFACE_TYPES: + raise ValidationError({ + 'interface_a': f"{self.interface_a.get_type_display()} is not a wireless interface." + }) + if self.interface_b.type not in WIRELESS_IFACE_TYPES: + raise ValidationError({ + 'interface_a': f"{self.interface_b.get_type_display()} is not a wireless interface." + }) + + def save(self, *args, **kwargs): + + # Store the parent Device for the A and B interfaces + self._interface_a_device = self.interface_a.device + self._interface_b_device = self.interface_b.device + + super().save(*args, **kwargs) diff --git a/netbox/wireless/tables.py b/netbox/wireless/tables.py index 133353f57..31c9e56a8 100644 --- a/netbox/wireless/tables.py +++ b/netbox/wireless/tables.py @@ -1,10 +1,11 @@ import django_tables2 as tables -from .models import WirelessLAN +from .models import * from utilities.tables import BaseTable, TagColumn, ToggleColumn __all__ = ( 'WirelessLANTable', + 'WirelessLinkTable', ) @@ -21,3 +22,25 @@ class WirelessLANTable(BaseTable): model = WirelessLAN fields = ('pk', 'ssid', 'description', 'vlan') default_columns = ('pk', 'ssid', 'description', 'vlan') + + +class WirelessLinkTable(BaseTable): + pk = ToggleColumn() + id = tables.Column( + linkify=True, + verbose_name='ID' + ) + interface_a = tables.Column( + linkify=True + ) + interface_b = tables.Column( + linkify=True + ) + tags = TagColumn( + url_name='wireless:wirelesslink_list' + ) + + class Meta(BaseTable.Meta): + model = WirelessLink + fields = ('pk', 'id', 'interface_a', 'interface_b', 'ssid', 'description') + default_columns = ('pk', 'id', 'interface_a', 'interface_b', 'ssid', 'description') diff --git a/netbox/wireless/urls.py b/netbox/wireless/urls.py index c30ca472c..21d704e6a 100644 --- a/netbox/wireless/urls.py +++ b/netbox/wireless/urls.py @@ -19,4 +19,16 @@ urlpatterns = ( path('wireless-lans//changelog/', ObjectChangeLogView.as_view(), name='wirelesslan_changelog', kwargs={'model': WirelessLAN}), path('wireless-lans//journal/', ObjectJournalView.as_view(), name='wirelesslan_journal', kwargs={'model': WirelessLAN}), + # Wireless links + path('wireless-links/', views.WirelessLinkListView.as_view(), name='wirelesslink_list'), + path('wireless-links/add/', views.WirelessLinkEditView.as_view(), name='wirelesslink_add'), + path('wireless-links/import/', views.WirelessLinkBulkImportView.as_view(), name='wirelesslink_import'), + path('wireless-links/edit/', views.WirelessLinkBulkEditView.as_view(), name='wirelesslink_bulk_edit'), + path('wireless-links/delete/', views.WirelessLinkBulkDeleteView.as_view(), name='wirelesslink_bulk_delete'), + path('wireless-links//', views.WirelessLinkView.as_view(), name='wirelesslink'), + path('wireless-links//edit/', views.WirelessLinkEditView.as_view(), name='wirelesslink_edit'), + path('wireless-links//delete/', views.WirelessLinkDeleteView.as_view(), name='wirelesslink_delete'), + path('wireless-links//changelog/', ObjectChangeLogView.as_view(), name='wirelesslink_changelog', kwargs={'model': WirelessLink}), + path('wireless-links//journal/', ObjectJournalView.as_view(), name='wirelesslink_journal', kwargs={'model': WirelessLink}), + ) diff --git a/netbox/wireless/views.py b/netbox/wireless/views.py index 6e1c0b1b7..041ffbd42 100644 --- a/netbox/wireless/views.py +++ b/netbox/wireless/views.py @@ -44,3 +44,46 @@ class WirelessLANBulkDeleteView(generic.BulkDeleteView): queryset = WirelessLAN.objects.all() filterset = filtersets.WirelessLANFilterSet table = tables.WirelessLANTable + + +# +# Wireless Links +# + +class WirelessLinkListView(generic.ObjectListView): + queryset = WirelessLink.objects.all() + filterset = filtersets.WirelessLinkFilterSet + filterset_form = forms.WirelessLinkFilterForm + table = tables.WirelessLinkTable + + +class WirelessLinkView(generic.ObjectView): + queryset = WirelessLink.objects.all() + + +class WirelessLinkEditView(generic.ObjectEditView): + queryset = WirelessLink.objects.all() + model_form = forms.WirelessLinkForm + + +class WirelessLinkDeleteView(generic.ObjectDeleteView): + queryset = WirelessLink.objects.all() + + +class WirelessLinkBulkImportView(generic.BulkImportView): + queryset = WirelessLink.objects.all() + model_form = forms.WirelessLinkCSVForm + table = tables.WirelessLinkTable + + +class WirelessLinkBulkEditView(generic.BulkEditView): + queryset = WirelessLink.objects.all() + filterset = filtersets.WirelessLinkFilterSet + table = tables.WirelessLinkTable + form = forms.WirelessLinkBulkEditForm + + +class WirelessLinkBulkDeleteView(generic.BulkDeleteView): + queryset = WirelessLink.objects.all() + filterset = filtersets.WirelessLinkFilterSet + table = tables.WirelessLinkTable From 445e16f6682e250f855c2cc5185e8dce4f146e51 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Wed, 13 Oct 2021 11:48:15 -0400 Subject: [PATCH 009/289] Reference WirelessLink on both attached Interfaces --- .../0138_interface_wireless_link.py | 20 +++++++ netbox/dcim/models/device_components.py | 19 ++++-- netbox/dcim/tables/template_code.py | 2 +- netbox/templates/dcim/interface.html | 19 +++++- netbox/wireless/apps.py | 3 + netbox/wireless/forms/models.py | 6 +- netbox/wireless/signals.py | 58 +++++++++++++++++++ 7 files changed, 116 insertions(+), 11 deletions(-) create mode 100644 netbox/dcim/migrations/0138_interface_wireless_link.py create mode 100644 netbox/wireless/signals.py diff --git a/netbox/dcim/migrations/0138_interface_wireless_link.py b/netbox/dcim/migrations/0138_interface_wireless_link.py new file mode 100644 index 000000000..42b7a1042 --- /dev/null +++ b/netbox/dcim/migrations/0138_interface_wireless_link.py @@ -0,0 +1,20 @@ +# Generated by Django 3.2.8 on 2021-10-13 15:29 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('wireless', '0001_wireless'), + ('dcim', '0137_wireless'), + ] + + operations = [ + migrations.AddField( + model_name='interface', + name='wireless_link', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='wireless.wirelesslink'), + ), + ] diff --git a/netbox/dcim/models/device_components.py b/netbox/dcim/models/device_components.py index 60eb4c368..dc8246990 100644 --- a/netbox/dcim/models/device_components.py +++ b/netbox/dcim/models/device_components.py @@ -529,6 +529,13 @@ class Interface(ComponentModel, BaseInterface, CableTermination, PathEndpoint): null=True, verbose_name='Channel width' ) + wireless_link = models.ForeignKey( + to='wireless.WirelessLink', + on_delete=models.SET_NULL, + related_name='+', + blank=True, + null=True + ) wireless_lans = models.ManyToManyField( to='wireless.WirelessLAN', related_name='interfaces', @@ -568,14 +575,14 @@ class Interface(ComponentModel, BaseInterface, CableTermination, PathEndpoint): def clean(self): super().clean() - # Virtual interfaces cannot be connected - if not self.is_connectable and self.cable: + # Virtual Interfaces cannot have a Cable attached + if self.is_virtual and self.cable: raise ValidationError({ 'type': f"{self.get_type_display()} interfaces cannot have a cable attached." }) - # Non-connectable interfaces cannot be marked as connected - if not self.is_connectable and self.mark_connected: + # Virtual Interfaces cannot be marked as connected + if self.is_virtual and self.mark_connected: raise ValidationError({ 'mark_connected': f"{self.get_type_display()} interfaces cannot be marked as connected." }) @@ -635,8 +642,8 @@ class Interface(ComponentModel, BaseInterface, CableTermination, PathEndpoint): }) @property - def is_connectable(self): - return self.type not in NONCONNECTABLE_IFACE_TYPES + def is_wired(self): + return not self.is_virtual and not self.is_wireless @property def is_virtual(self): diff --git a/netbox/dcim/tables/template_code.py b/netbox/dcim/tables/template_code.py index 2f359e1b9..9e2dc519b 100644 --- a/netbox/dcim/tables/template_code.py +++ b/netbox/dcim/tables/template_code.py @@ -203,7 +203,7 @@ INTERFACE_BUTTONS = """ {% endif %} -{% elif record.is_connectable and perms.dcim.add_cable %} +{% elif record.is_wired and perms.dcim.add_cable %} {% if not record.mark_connected %} diff --git a/netbox/templates/dcim/interface.html b/netbox/templates/dcim/interface.html index 33eaa95db..bf24a89ef 100644 --- a/netbox/templates/dcim/interface.html +++ b/netbox/templates/dcim/interface.html @@ -117,7 +117,7 @@ {% plugin_left_page object %}
- {% if object.is_connectable %} + {% if not object.is_virtual %}
Connection @@ -221,10 +221,19 @@ + {% elif object.wireless_link %} + + + + + +
Wireless Link + {{ object.wireless_link }} +
{% else %}
Not Connected - {% if perms.dcim.add_cable %} + {% if object.is_wired and perms.dcim.add_cable %} + {% elif object.is_wireless and perms.wireless.add_wirelesslink %} + {% endif %}
{% endif %} diff --git a/netbox/wireless/apps.py b/netbox/wireless/apps.py index 1f6deff22..59e47aba5 100644 --- a/netbox/wireless/apps.py +++ b/netbox/wireless/apps.py @@ -3,3 +3,6 @@ from django.apps import AppConfig class WirelessConfig(AppConfig): name = 'wireless' + + def ready(self): + import wireless.signals diff --git a/netbox/wireless/forms/models.py b/netbox/wireless/forms/models.py index 08e864340..c494fb5a2 100644 --- a/netbox/wireless/forms/models.py +++ b/netbox/wireless/forms/models.py @@ -37,13 +37,15 @@ class WirelessLinkForm(BootstrapMixin, CustomFieldModelForm): queryset=Interface.objects.all(), query_params={ 'kind': 'wireless' - } + }, + label='Interface A' ) interface_b = DynamicModelChoiceField( queryset=Interface.objects.all(), query_params={ 'kind': 'wireless' - } + }, + label='Interface B' ) tags = DynamicModelMultipleChoiceField( queryset=Tag.objects.all(), diff --git a/netbox/wireless/signals.py b/netbox/wireless/signals.py new file mode 100644 index 000000000..a42566a00 --- /dev/null +++ b/netbox/wireless/signals.py @@ -0,0 +1,58 @@ +import logging + +from django.db.models.signals import post_save, post_delete +from django.dispatch import receiver + +from dcim.models import Interface +from .models import WirelessLink + + +# +# Wireless links +# + +@receiver(post_save, sender=WirelessLink) +def update_connected_interfaces(instance, raw=False, **kwargs): + """ + When a WirelessLink is saved, save a reference to it on each connected interface. + """ + print('update_connected_interfaces') + logger = logging.getLogger('netbox.wireless.wirelesslink') + if raw: + logger.debug(f"Skipping endpoint updates for imported wireless link {instance}") + return + + if instance.interface_a.wireless_link != instance: + logger.debug(f"Updating interface A for wireless link {instance}") + instance.interface_a.wireless_link = instance + # instance.interface_a._cable_peer = instance.interface_b # TODO: Rename _cable_peer field + instance.interface_a.save() + if instance.interface_b.cable != instance: + logger.debug(f"Updating interface B for wireless link {instance}") + instance.interface_b.wireless_link = instance + # instance.interface_b._cable_peer = instance.interface_a + instance.interface_b.save() + + +@receiver(post_delete, sender=WirelessLink) +def nullify_connected_interfaces(instance, **kwargs): + """ + When a WirelessLink is deleted, update its two connected Interfaces + """ + print('nullify_connected_interfaces') + logger = logging.getLogger('netbox.wireless.wirelesslink') + + if instance.interface_a is not None: + logger.debug(f"Nullifying interface A for wireless link {instance}") + Interface.objects.filter(pk=instance.interface_a.pk).update( + wireless_link=None, + _cable_peer_type=None, + _cable_peer_id=None + ) + if instance.interface_b is not None: + logger.debug(f"Nullifying interface B for wireless link {instance}") + Interface.objects.filter(pk=instance.interface_b.pk).update( + wireless_link=None, + _cable_peer_type=None, + _cable_peer_id=None + ) From 138af27bf7c18d6833233ff84029eb8ef6a186bf Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Wed, 13 Oct 2021 13:28:14 -0400 Subject: [PATCH 010/289] Record wireless links as part of cable path --- netbox/dcim/models/cables.py | 10 ++++----- netbox/dcim/models/device_components.py | 11 ++++++++++ netbox/dcim/signals.py | 28 +------------------------ netbox/dcim/utils.py | 27 ++++++++++++++++++++++++ netbox/wireless/signals.py | 21 +++++++++++++------ 5 files changed, 59 insertions(+), 38 deletions(-) diff --git a/netbox/dcim/models/cables.py b/netbox/dcim/models/cables.py index c3f8cac3f..6c61c0712 100644 --- a/netbox/dcim/models/cables.py +++ b/netbox/dcim/models/cables.py @@ -379,7 +379,7 @@ class CablePath(BigIDModel): """ from circuits.models import CircuitTermination - if origin is None or origin.cable is None: + if origin is None or origin.link is None: return None destination = None @@ -389,12 +389,12 @@ class CablePath(BigIDModel): is_split = False node = origin - while node.cable is not None: - if node.cable.status != CableStatusChoices.STATUS_CONNECTED: + while node.link is not None: + if hasattr(node.link, 'status') and node.link.status != CableStatusChoices.STATUS_CONNECTED: is_active = False - # Follow the cable to its far-end termination - path.append(object_to_path_node(node.cable)) + # Follow the link to its far-end termination + path.append(object_to_path_node(node.link)) peer_termination = node.get_cable_peer() # Follow a FrontPort to its corresponding RearPort diff --git a/netbox/dcim/models/device_components.py b/netbox/dcim/models/device_components.py index dc8246990..38e902f22 100644 --- a/netbox/dcim/models/device_components.py +++ b/netbox/dcim/models/device_components.py @@ -157,6 +157,13 @@ class CableTermination(models.Model): def parent_object(self): raise NotImplementedError("CableTermination models must implement parent_object()") + @property + def link(self): + """ + Generic wrapper for a Cable, WirelessLink, or some other relation to a connected termination. + """ + return self.cable + class PathEndpoint(models.Model): """ @@ -657,6 +664,10 @@ class Interface(ComponentModel, BaseInterface, CableTermination, PathEndpoint): def is_lag(self): return self.type == InterfaceTypeChoices.TYPE_LAG + @property + def link(self): + return self.cable or self.wireless_link + # # Pass-through ports diff --git a/netbox/dcim/signals.py b/netbox/dcim/signals.py index 9fc68ee70..942bf04e4 100644 --- a/netbox/dcim/signals.py +++ b/netbox/dcim/signals.py @@ -2,37 +2,11 @@ import logging from django.contrib.contenttypes.models import ContentType from django.db.models.signals import post_save, post_delete, pre_delete -from django.db import transaction from django.dispatch import receiver from .choices import CableStatusChoices from .models import Cable, CablePath, Device, PathEndpoint, PowerPanel, Rack, Location, VirtualChassis - - -def create_cablepath(node): - """ - Create CablePaths for all paths originating from the specified node. - """ - cp = CablePath.from_origin(node) - if cp: - try: - cp.save() - except Exception as e: - print(node, node.pk) - raise e - - -def rebuild_paths(obj): - """ - Rebuild all CablePaths which traverse the specified node - """ - cable_paths = CablePath.objects.filter(path__contains=obj) - - with transaction.atomic(): - for cp in cable_paths: - cp.delete() - if cp.origin: - create_cablepath(cp.origin) +from .utils import create_cablepath, rebuild_paths # diff --git a/netbox/dcim/utils.py b/netbox/dcim/utils.py index 91c5c7c77..ec3a44603 100644 --- a/netbox/dcim/utils.py +++ b/netbox/dcim/utils.py @@ -1,4 +1,5 @@ from django.contrib.contenttypes.models import ContentType +from django.db import transaction def compile_path_node(ct_id, object_id): @@ -26,3 +27,29 @@ def path_node_to_object(repr): ct_id, object_id = decompile_path_node(repr) ct = ContentType.objects.get_for_id(ct_id) return ct.model_class().objects.get(pk=object_id) + + +def create_cablepath(node): + """ + Create CablePaths for all paths originating from the specified node. + """ + from dcim.models import CablePath + + cp = CablePath.from_origin(node) + if cp: + cp.save() + + +def rebuild_paths(obj): + """ + Rebuild all CablePaths which traverse the specified node + """ + from dcim.models import CablePath + + cable_paths = CablePath.objects.filter(path__contains=obj) + + with transaction.atomic(): + for cp in cable_paths: + cp.delete() + if cp.origin: + create_cablepath(cp.origin) diff --git a/netbox/wireless/signals.py b/netbox/wireless/signals.py index a42566a00..b8dc8a186 100644 --- a/netbox/wireless/signals.py +++ b/netbox/wireless/signals.py @@ -3,7 +3,8 @@ import logging from django.db.models.signals import post_save, post_delete from django.dispatch import receiver -from dcim.models import Interface +from dcim.models import CablePath, Interface +from dcim.utils import create_cablepath from .models import WirelessLink @@ -12,11 +13,10 @@ from .models import WirelessLink # @receiver(post_save, sender=WirelessLink) -def update_connected_interfaces(instance, raw=False, **kwargs): +def update_connected_interfaces(instance, created, raw=False, **kwargs): """ When a WirelessLink is saved, save a reference to it on each connected interface. """ - print('update_connected_interfaces') logger = logging.getLogger('netbox.wireless.wirelesslink') if raw: logger.debug(f"Skipping endpoint updates for imported wireless link {instance}") @@ -25,21 +25,25 @@ def update_connected_interfaces(instance, raw=False, **kwargs): if instance.interface_a.wireless_link != instance: logger.debug(f"Updating interface A for wireless link {instance}") instance.interface_a.wireless_link = instance - # instance.interface_a._cable_peer = instance.interface_b # TODO: Rename _cable_peer field + instance.interface_a._cable_peer = instance.interface_b # TODO: Rename _cable_peer field instance.interface_a.save() if instance.interface_b.cable != instance: logger.debug(f"Updating interface B for wireless link {instance}") instance.interface_b.wireless_link = instance - # instance.interface_b._cable_peer = instance.interface_a + instance.interface_b._cable_peer = instance.interface_a instance.interface_b.save() + # Create/update cable paths + if created: + for interface in (instance.interface_a, instance.interface_b): + create_cablepath(interface) + @receiver(post_delete, sender=WirelessLink) def nullify_connected_interfaces(instance, **kwargs): """ When a WirelessLink is deleted, update its two connected Interfaces """ - print('nullify_connected_interfaces') logger = logging.getLogger('netbox.wireless.wirelesslink') if instance.interface_a is not None: @@ -56,3 +60,8 @@ def nullify_connected_interfaces(instance, **kwargs): _cable_peer_type=None, _cable_peer_id=None ) + + # Delete and retrace any dependent cable paths + for cablepath in CablePath.objects.filter(path__contains=instance): + print(f'Deleting cable path {cablepath.pk}') + cablepath.delete() From 1c73bd5079876cec632d8a7eafa71e01e701a369 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Wed, 13 Oct 2021 13:39:14 -0400 Subject: [PATCH 011/289] Resolve test errors --- netbox/dcim/api/serializers.py | 4 ++-- netbox/dcim/graphql/types.py | 3 +++ netbox/wireless/api/serializers.py | 2 +- netbox/wireless/graphql/types.py | 9 +++++++++ 4 files changed, 15 insertions(+), 3 deletions(-) diff --git a/netbox/dcim/api/serializers.py b/netbox/dcim/api/serializers.py index edd73b87e..28d3a143b 100644 --- a/netbox/dcim/api/serializers.py +++ b/netbox/dcim/api/serializers.py @@ -632,8 +632,8 @@ class InterfaceSerializer(PrimaryModelSerializer, CableTerminationSerializer, Co parent = NestedInterfaceSerializer(required=False, allow_null=True) lag = NestedInterfaceSerializer(required=False, allow_null=True) mode = ChoiceField(choices=InterfaceModeChoices, allow_blank=True, required=False) - rf_channel = ChoiceField(choices=WirelessChannelChoices) - rf_channel_width = ChoiceField(choices=WirelessChannelWidthChoices) + rf_channel = ChoiceField(choices=WirelessChannelChoices, required=False) + rf_channel_width = ChoiceField(choices=WirelessChannelWidthChoices, required=False, allow_null=True) untagged_vlan = NestedVLANSerializer(required=False, allow_null=True) tagged_vlans = SerializedPKRelatedField( queryset=VLAN.objects.all(), diff --git a/netbox/dcim/graphql/types.py b/netbox/dcim/graphql/types.py index be10556be..55f1ba150 100644 --- a/netbox/dcim/graphql/types.py +++ b/netbox/dcim/graphql/types.py @@ -206,6 +206,9 @@ class InterfaceType(IPAddressesMixin, ComponentObjectType): def resolve_mode(self, info): return self.mode or None + def resolve_rf_channel(self, info): + return self.rf_channel or None + class InterfaceTemplateType(ComponentTemplateObjectType): diff --git a/netbox/wireless/api/serializers.py b/netbox/wireless/api/serializers.py index 90515f53e..9337d6864 100644 --- a/netbox/wireless/api/serializers.py +++ b/netbox/wireless/api/serializers.py @@ -29,7 +29,7 @@ class WirelessLinkSerializer(PrimaryModelSerializer): interface_b = NestedInterfaceSerializer() class Meta: - model = WirelessLAN + model = WirelessLink fields = [ 'id', 'url', 'display', 'interface_a', 'interface_b', 'ssid', 'description', ] diff --git a/netbox/wireless/graphql/types.py b/netbox/wireless/graphql/types.py index 4cdb75ebe..0afd8e69a 100644 --- a/netbox/wireless/graphql/types.py +++ b/netbox/wireless/graphql/types.py @@ -3,6 +3,7 @@ from netbox.graphql.types import ObjectType __all__ = ( 'WirelessLANType', + 'WirelessLinkType', ) @@ -12,3 +13,11 @@ class WirelessLANType(ObjectType): model = models.WirelessLAN fields = '__all__' filterset_class = filtersets.WirelessLANFilterSet + + +class WirelessLinkType(ObjectType): + + class Meta: + model = models.WirelessLink + fields = '__all__' + filterset_class = filtersets.WirelessLinkFilterSet From ac2cd552b9641023e7ddf615fcb461e24fe42ea4 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Wed, 13 Oct 2021 14:04:53 -0400 Subject: [PATCH 012/289] Rename cable_peer fields to link_peer --- netbox/circuits/api/serializers.py | 6 +- .../migrations/0003_rename_cable_peer.py | 23 +++++ netbox/circuits/models.py | 4 +- netbox/dcim/api/serializers.py | 54 +++++------ netbox/dcim/api/views.py | 12 +-- .../dcim/migrations/0139_rename_cable_peer.py | 93 +++++++++++++++++++ netbox/dcim/models/__init__.py | 2 +- netbox/dcim/models/cables.py | 2 +- netbox/dcim/models/device_components.py | 52 +++++------ netbox/dcim/models/power.py | 4 +- netbox/dcim/models/racks.py | 8 +- netbox/dcim/signals.py | 8 +- netbox/dcim/tables/devices.py | 51 +++++----- netbox/dcim/tables/power.py | 4 +- netbox/dcim/tables/template_code.py | 2 +- netbox/dcim/tests/test_models.py | 8 +- .../circuits/inc/circuit_termination.html | 2 +- netbox/wireless/models.py | 3 + netbox/wireless/signals.py | 12 +-- 19 files changed, 236 insertions(+), 114 deletions(-) create mode 100644 netbox/circuits/migrations/0003_rename_cable_peer.py create mode 100644 netbox/dcim/migrations/0139_rename_cable_peer.py diff --git a/netbox/circuits/api/serializers.py b/netbox/circuits/api/serializers.py index ac6285610..e00b3dfc8 100644 --- a/netbox/circuits/api/serializers.py +++ b/netbox/circuits/api/serializers.py @@ -3,7 +3,7 @@ from rest_framework import serializers from circuits.choices import CircuitStatusChoices from circuits.models import * from dcim.api.nested_serializers import NestedCableSerializer, NestedSiteSerializer -from dcim.api.serializers import CableTerminationSerializer +from dcim.api.serializers import LinkTerminationSerializer from netbox.api import ChoiceField from netbox.api.serializers import ( OrganizationalModelSerializer, PrimaryModelSerializer, ValidatedModelSerializer, WritableNestedSerializer @@ -90,7 +90,7 @@ class CircuitSerializer(PrimaryModelSerializer): ] -class CircuitTerminationSerializer(ValidatedModelSerializer, CableTerminationSerializer): +class CircuitTerminationSerializer(ValidatedModelSerializer, LinkTerminationSerializer): url = serializers.HyperlinkedIdentityField(view_name='circuits-api:circuittermination-detail') circuit = NestedCircuitSerializer() site = NestedSiteSerializer(required=False, allow_null=True) @@ -101,6 +101,6 @@ class CircuitTerminationSerializer(ValidatedModelSerializer, CableTerminationSer model = CircuitTermination fields = [ 'id', 'url', 'display', 'circuit', 'term_side', 'site', 'provider_network', 'port_speed', 'upstream_speed', - 'xconnect_id', 'pp_info', 'description', 'mark_connected', 'cable', 'cable_peer', 'cable_peer_type', + 'xconnect_id', 'pp_info', 'description', 'mark_connected', 'cable', 'link_peer', 'link_peer_type', '_occupied', ] diff --git a/netbox/circuits/migrations/0003_rename_cable_peer.py b/netbox/circuits/migrations/0003_rename_cable_peer.py new file mode 100644 index 000000000..475a84d0f --- /dev/null +++ b/netbox/circuits/migrations/0003_rename_cable_peer.py @@ -0,0 +1,23 @@ +# Generated by Django 3.2.8 on 2021-10-13 17:47 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('circuits', '0002_squashed_0029'), + ] + + operations = [ + migrations.RenameField( + model_name='circuittermination', + old_name='_cable_peer_id', + new_name='_link_peer_id', + ), + migrations.RenameField( + model_name='circuittermination', + old_name='_cable_peer_type', + new_name='_link_peer_type', + ), + ] diff --git a/netbox/circuits/models.py b/netbox/circuits/models.py index bc7dcc219..8420db563 100644 --- a/netbox/circuits/models.py +++ b/netbox/circuits/models.py @@ -4,7 +4,7 @@ from django.db import models from django.urls import reverse from dcim.fields import ASNField -from dcim.models import CableTermination, PathEndpoint +from dcim.models import LinkTermination, PathEndpoint from extras.models import ObjectChange from extras.utils import extras_features from netbox.models import BigIDModel, ChangeLoggedModel, OrganizationalModel, PrimaryModel @@ -246,7 +246,7 @@ class Circuit(PrimaryModel): @extras_features('webhooks') -class CircuitTermination(ChangeLoggedModel, CableTermination): +class CircuitTermination(ChangeLoggedModel, LinkTermination): circuit = models.ForeignKey( to='circuits.Circuit', on_delete=models.CASCADE, diff --git a/netbox/dcim/api/serializers.py b/netbox/dcim/api/serializers.py index 28d3a143b..9187901f0 100644 --- a/netbox/dcim/api/serializers.py +++ b/netbox/dcim/api/serializers.py @@ -22,25 +22,25 @@ from virtualization.api.nested_serializers import NestedClusterSerializer from .nested_serializers import * -class CableTerminationSerializer(serializers.ModelSerializer): - cable_peer_type = serializers.SerializerMethodField(read_only=True) - cable_peer = serializers.SerializerMethodField(read_only=True) +class LinkTerminationSerializer(serializers.ModelSerializer): + link_peer_type = serializers.SerializerMethodField(read_only=True) + link_peer = serializers.SerializerMethodField(read_only=True) _occupied = serializers.SerializerMethodField(read_only=True) - def get_cable_peer_type(self, obj): - if obj._cable_peer is not None: - return f'{obj._cable_peer._meta.app_label}.{obj._cable_peer._meta.model_name}' + def get_link_peer_type(self, obj): + if obj._link_peer is not None: + return f'{obj._link_peer._meta.app_label}.{obj._link_peer._meta.model_name}' return None @swagger_serializer_method(serializer_or_field=serializers.DictField) - def get_cable_peer(self, obj): + def get_link_peer(self, obj): """ - Return the appropriate serializer for the cable termination model. + Return the appropriate serializer for the link termination model. """ - if obj._cable_peer is not None: - serializer = get_serializer_for_model(obj._cable_peer, prefix='Nested') + if obj._link_peer is not None: + serializer = get_serializer_for_model(obj._link_peer, prefix='Nested') context = {'request': self.context['request']} - return serializer(obj._cable_peer, context=context).data + return serializer(obj._link_peer, context=context).data return None @swagger_serializer_method(serializer_or_field=serializers.BooleanField) @@ -529,7 +529,7 @@ class DeviceNAPALMSerializer(serializers.Serializer): # Device components # -class ConsoleServerPortSerializer(PrimaryModelSerializer, CableTerminationSerializer, ConnectedEndpointSerializer): +class ConsoleServerPortSerializer(PrimaryModelSerializer, LinkTerminationSerializer, ConnectedEndpointSerializer): url = serializers.HyperlinkedIdentityField(view_name='dcim-api:consoleserverport-detail') device = NestedDeviceSerializer() type = ChoiceField( @@ -548,12 +548,12 @@ class ConsoleServerPortSerializer(PrimaryModelSerializer, CableTerminationSerial model = ConsoleServerPort fields = [ 'id', 'url', 'display', 'device', 'name', 'label', 'type', 'speed', 'description', 'mark_connected', - 'cable', 'cable_peer', 'cable_peer_type', 'connected_endpoint', 'connected_endpoint_type', + 'cable', 'link_peer', 'link_peer_type', 'connected_endpoint', 'connected_endpoint_type', 'connected_endpoint_reachable', 'tags', 'custom_fields', 'created', 'last_updated', '_occupied', ] -class ConsolePortSerializer(PrimaryModelSerializer, CableTerminationSerializer, ConnectedEndpointSerializer): +class ConsolePortSerializer(PrimaryModelSerializer, LinkTerminationSerializer, ConnectedEndpointSerializer): url = serializers.HyperlinkedIdentityField(view_name='dcim-api:consoleport-detail') device = NestedDeviceSerializer() type = ChoiceField( @@ -572,12 +572,12 @@ class ConsolePortSerializer(PrimaryModelSerializer, CableTerminationSerializer, model = ConsolePort fields = [ 'id', 'url', 'display', 'device', 'name', 'label', 'type', 'speed', 'description', 'mark_connected', - 'cable', 'cable_peer', 'cable_peer_type', 'connected_endpoint', 'connected_endpoint_type', + 'cable', 'link_peer', 'link_peer_type', 'connected_endpoint', 'connected_endpoint_type', 'connected_endpoint_reachable', 'tags', 'custom_fields', 'created', 'last_updated', '_occupied', ] -class PowerOutletSerializer(PrimaryModelSerializer, CableTerminationSerializer, ConnectedEndpointSerializer): +class PowerOutletSerializer(PrimaryModelSerializer, LinkTerminationSerializer, ConnectedEndpointSerializer): url = serializers.HyperlinkedIdentityField(view_name='dcim-api:poweroutlet-detail') device = NestedDeviceSerializer() type = ChoiceField( @@ -601,12 +601,12 @@ class PowerOutletSerializer(PrimaryModelSerializer, CableTerminationSerializer, model = PowerOutlet fields = [ 'id', 'url', 'display', 'device', 'name', 'label', 'type', 'power_port', 'feed_leg', 'description', - 'mark_connected', 'cable', 'cable_peer', 'cable_peer_type', 'connected_endpoint', 'connected_endpoint_type', + 'mark_connected', 'cable', 'link_peer', 'link_peer_type', 'connected_endpoint', 'connected_endpoint_type', 'connected_endpoint_reachable', 'tags', 'custom_fields', 'created', 'last_updated', '_occupied', ] -class PowerPortSerializer(PrimaryModelSerializer, CableTerminationSerializer, ConnectedEndpointSerializer): +class PowerPortSerializer(PrimaryModelSerializer, LinkTerminationSerializer, ConnectedEndpointSerializer): url = serializers.HyperlinkedIdentityField(view_name='dcim-api:powerport-detail') device = NestedDeviceSerializer() type = ChoiceField( @@ -620,12 +620,12 @@ class PowerPortSerializer(PrimaryModelSerializer, CableTerminationSerializer, Co model = PowerPort fields = [ 'id', 'url', 'display', 'device', 'name', 'label', 'type', 'maximum_draw', 'allocated_draw', 'description', - 'mark_connected', 'cable', 'cable_peer', 'cable_peer_type', 'connected_endpoint', 'connected_endpoint_type', + 'mark_connected', 'cable', 'link_peer', 'link_peer_type', 'connected_endpoint', 'connected_endpoint_type', 'connected_endpoint_reachable', 'tags', 'custom_fields', 'created', 'last_updated', '_occupied', ] -class InterfaceSerializer(PrimaryModelSerializer, CableTerminationSerializer, ConnectedEndpointSerializer): +class InterfaceSerializer(PrimaryModelSerializer, LinkTerminationSerializer, ConnectedEndpointSerializer): url = serializers.HyperlinkedIdentityField(view_name='dcim-api:interface-detail') device = NestedDeviceSerializer() type = ChoiceField(choices=InterfaceTypeChoices) @@ -649,7 +649,7 @@ class InterfaceSerializer(PrimaryModelSerializer, CableTerminationSerializer, Co fields = [ 'id', 'url', 'display', 'device', 'name', 'label', 'type', 'enabled', 'parent', 'lag', 'mtu', 'mac_address', 'wwn', 'mgmt_only', 'description', 'mode', 'rf_channel', 'rf_channel_width', 'untagged_vlan', - 'tagged_vlans', 'mark_connected', 'cable', 'cable_peer', 'cable_peer_type', 'connected_endpoint', + 'tagged_vlans', 'mark_connected', 'cable', 'link_peer', 'link_peer_type', 'connected_endpoint', 'connected_endpoint_type', 'connected_endpoint_reachable', 'tags', 'custom_fields', 'created', 'last_updated', 'count_ipaddresses', '_occupied', ] @@ -668,7 +668,7 @@ class InterfaceSerializer(PrimaryModelSerializer, CableTerminationSerializer, Co return super().validate(data) -class RearPortSerializer(PrimaryModelSerializer, CableTerminationSerializer): +class RearPortSerializer(PrimaryModelSerializer, LinkTerminationSerializer): url = serializers.HyperlinkedIdentityField(view_name='dcim-api:rearport-detail') device = NestedDeviceSerializer() type = ChoiceField(choices=PortTypeChoices) @@ -678,7 +678,7 @@ class RearPortSerializer(PrimaryModelSerializer, CableTerminationSerializer): model = RearPort fields = [ 'id', 'url', 'display', 'device', 'name', 'label', 'type', 'color', 'positions', 'description', - 'mark_connected', 'cable', 'cable_peer', 'cable_peer_type', 'tags', 'custom_fields', 'created', + 'mark_connected', 'cable', 'link_peer', 'link_peer_type', 'tags', 'custom_fields', 'created', 'last_updated', '_occupied', ] @@ -694,7 +694,7 @@ class FrontPortRearPortSerializer(WritableNestedSerializer): fields = ['id', 'url', 'display', 'name', 'label'] -class FrontPortSerializer(PrimaryModelSerializer, CableTerminationSerializer): +class FrontPortSerializer(PrimaryModelSerializer, LinkTerminationSerializer): url = serializers.HyperlinkedIdentityField(view_name='dcim-api:frontport-detail') device = NestedDeviceSerializer() type = ChoiceField(choices=PortTypeChoices) @@ -705,7 +705,7 @@ class FrontPortSerializer(PrimaryModelSerializer, CableTerminationSerializer): model = FrontPort fields = [ 'id', 'url', 'display', 'device', 'name', 'label', 'type', 'color', 'rear_port', 'rear_port_position', - 'description', 'mark_connected', 'cable', 'cable_peer', 'cable_peer_type', 'tags', 'custom_fields', + 'description', 'mark_connected', 'cable', 'link_peer', 'link_peer_type', 'tags', 'custom_fields', 'created', 'last_updated', '_occupied', ] @@ -881,7 +881,7 @@ class PowerPanelSerializer(PrimaryModelSerializer): fields = ['id', 'url', 'display', 'site', 'location', 'name', 'tags', 'custom_fields', 'powerfeed_count'] -class PowerFeedSerializer(PrimaryModelSerializer, CableTerminationSerializer, ConnectedEndpointSerializer): +class PowerFeedSerializer(PrimaryModelSerializer, LinkTerminationSerializer, ConnectedEndpointSerializer): url = serializers.HyperlinkedIdentityField(view_name='dcim-api:powerfeed-detail') power_panel = NestedPowerPanelSerializer() rack = NestedRackSerializer( @@ -911,7 +911,7 @@ class PowerFeedSerializer(PrimaryModelSerializer, CableTerminationSerializer, Co model = PowerFeed fields = [ 'id', 'url', 'display', 'power_panel', 'rack', 'name', 'status', 'type', 'supply', 'phase', 'voltage', - 'amperage', 'max_utilization', 'comments', 'mark_connected', 'cable', 'cable_peer', 'cable_peer_type', + 'amperage', 'max_utilization', 'comments', 'mark_connected', 'cable', 'link_peer', 'link_peer_type', 'connected_endpoint', 'connected_endpoint_type', 'connected_endpoint_reachable', 'tags', 'custom_fields', 'created', 'last_updated', '_occupied', ] diff --git a/netbox/dcim/api/views.py b/netbox/dcim/api/views.py index 2b9d9734c..43ced046c 100644 --- a/netbox/dcim/api/views.py +++ b/netbox/dcim/api/views.py @@ -513,7 +513,7 @@ class DeviceViewSet(ConfigContextQuerySetMixin, CustomFieldModelViewSet): # class ConsolePortViewSet(PathEndpointMixin, ModelViewSet): - queryset = ConsolePort.objects.prefetch_related('device', '_path__destination', 'cable', '_cable_peer', 'tags') + queryset = ConsolePort.objects.prefetch_related('device', '_path__destination', 'cable', '_link_peer', 'tags') serializer_class = serializers.ConsolePortSerializer filterset_class = filtersets.ConsolePortFilterSet brief_prefetch_fields = ['device'] @@ -521,7 +521,7 @@ class ConsolePortViewSet(PathEndpointMixin, ModelViewSet): class ConsoleServerPortViewSet(PathEndpointMixin, ModelViewSet): queryset = ConsoleServerPort.objects.prefetch_related( - 'device', '_path__destination', 'cable', '_cable_peer', 'tags' + 'device', '_path__destination', 'cable', '_link_peer', 'tags' ) serializer_class = serializers.ConsoleServerPortSerializer filterset_class = filtersets.ConsoleServerPortFilterSet @@ -529,14 +529,14 @@ class ConsoleServerPortViewSet(PathEndpointMixin, ModelViewSet): class PowerPortViewSet(PathEndpointMixin, ModelViewSet): - queryset = PowerPort.objects.prefetch_related('device', '_path__destination', 'cable', '_cable_peer', 'tags') + queryset = PowerPort.objects.prefetch_related('device', '_path__destination', 'cable', '_link_peer', 'tags') serializer_class = serializers.PowerPortSerializer filterset_class = filtersets.PowerPortFilterSet brief_prefetch_fields = ['device'] class PowerOutletViewSet(PathEndpointMixin, ModelViewSet): - queryset = PowerOutlet.objects.prefetch_related('device', '_path__destination', 'cable', '_cable_peer', 'tags') + queryset = PowerOutlet.objects.prefetch_related('device', '_path__destination', 'cable', '_link_peer', 'tags') serializer_class = serializers.PowerOutletSerializer filterset_class = filtersets.PowerOutletFilterSet brief_prefetch_fields = ['device'] @@ -544,7 +544,7 @@ class PowerOutletViewSet(PathEndpointMixin, ModelViewSet): class InterfaceViewSet(PathEndpointMixin, ModelViewSet): queryset = Interface.objects.prefetch_related( - 'device', 'parent', 'lag', '_path__destination', 'cable', '_cable_peer', 'ip_addresses', 'tags' + 'device', 'parent', 'lag', '_path__destination', 'cable', '_link_peer', 'ip_addresses', 'tags' ) serializer_class = serializers.InterfaceSerializer filterset_class = filtersets.InterfaceFilterSet @@ -625,7 +625,7 @@ class PowerPanelViewSet(ModelViewSet): class PowerFeedViewSet(PathEndpointMixin, CustomFieldModelViewSet): queryset = PowerFeed.objects.prefetch_related( - 'power_panel', 'rack', '_path__destination', 'cable', '_cable_peer', 'tags' + 'power_panel', 'rack', '_path__destination', 'cable', '_link_peer', 'tags' ) serializer_class = serializers.PowerFeedSerializer filterset_class = filtersets.PowerFeedFilterSet diff --git a/netbox/dcim/migrations/0139_rename_cable_peer.py b/netbox/dcim/migrations/0139_rename_cable_peer.py new file mode 100644 index 000000000..62a4bacdd --- /dev/null +++ b/netbox/dcim/migrations/0139_rename_cable_peer.py @@ -0,0 +1,93 @@ +# Generated by Django 3.2.8 on 2021-10-13 17:47 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('dcim', '0138_interface_wireless_link'), + ] + + operations = [ + migrations.RenameField( + model_name='consoleport', + old_name='_cable_peer_id', + new_name='_link_peer_id', + ), + migrations.RenameField( + model_name='consoleport', + old_name='_cable_peer_type', + new_name='_link_peer_type', + ), + migrations.RenameField( + model_name='consoleserverport', + old_name='_cable_peer_id', + new_name='_link_peer_id', + ), + migrations.RenameField( + model_name='consoleserverport', + old_name='_cable_peer_type', + new_name='_link_peer_type', + ), + migrations.RenameField( + model_name='frontport', + old_name='_cable_peer_id', + new_name='_link_peer_id', + ), + migrations.RenameField( + model_name='frontport', + old_name='_cable_peer_type', + new_name='_link_peer_type', + ), + migrations.RenameField( + model_name='interface', + old_name='_cable_peer_id', + new_name='_link_peer_id', + ), + migrations.RenameField( + model_name='interface', + old_name='_cable_peer_type', + new_name='_link_peer_type', + ), + migrations.RenameField( + model_name='powerfeed', + old_name='_cable_peer_id', + new_name='_link_peer_id', + ), + migrations.RenameField( + model_name='powerfeed', + old_name='_cable_peer_type', + new_name='_link_peer_type', + ), + migrations.RenameField( + model_name='poweroutlet', + old_name='_cable_peer_id', + new_name='_link_peer_id', + ), + migrations.RenameField( + model_name='poweroutlet', + old_name='_cable_peer_type', + new_name='_link_peer_type', + ), + migrations.RenameField( + model_name='powerport', + old_name='_cable_peer_id', + new_name='_link_peer_id', + ), + migrations.RenameField( + model_name='powerport', + old_name='_cable_peer_type', + new_name='_link_peer_type', + ), + migrations.RenameField( + model_name='rearport', + old_name='_cable_peer_id', + new_name='_link_peer_id', + ), + migrations.RenameField( + model_name='rearport', + old_name='_cable_peer_type', + new_name='_link_peer_type', + ), + ] diff --git a/netbox/dcim/models/__init__.py b/netbox/dcim/models/__init__.py index 0375a9fb4..58a3e1de5 100644 --- a/netbox/dcim/models/__init__.py +++ b/netbox/dcim/models/__init__.py @@ -10,7 +10,7 @@ __all__ = ( 'BaseInterface', 'Cable', 'CablePath', - 'CableTermination', + 'LinkTermination', 'ConsolePort', 'ConsolePortTemplate', 'ConsoleServerPort', diff --git a/netbox/dcim/models/cables.py b/netbox/dcim/models/cables.py index 6c61c0712..fb3e71543 100644 --- a/netbox/dcim/models/cables.py +++ b/netbox/dcim/models/cables.py @@ -395,7 +395,7 @@ class CablePath(BigIDModel): # Follow the link to its far-end termination path.append(object_to_path_node(node.link)) - peer_termination = node.get_cable_peer() + peer_termination = node.get_link_peer() # Follow a FrontPort to its corresponding RearPort if isinstance(peer_termination, FrontPort): diff --git a/netbox/dcim/models/device_components.py b/netbox/dcim/models/device_components.py index 38e902f22..f8649b419 100644 --- a/netbox/dcim/models/device_components.py +++ b/netbox/dcim/models/device_components.py @@ -22,7 +22,7 @@ from utilities.query_functions import CollateAsChar __all__ = ( 'BaseInterface', - 'CableTermination', + 'LinkTermination', 'ConsolePort', 'ConsoleServerPort', 'DeviceBay', @@ -87,14 +87,14 @@ class ComponentModel(PrimaryModel): return self.device -class CableTermination(models.Model): +class LinkTermination(models.Model): """ - An abstract model inherited by all models to which a Cable can terminate (certain device components, PowerFeed, and - CircuitTermination instances). The `cable` field indicates the Cable instance which is terminated to this instance. + An abstract model inherited by all models to which a Cable, WirelessLink, or other such link can terminate. Examples + include most device components, CircuitTerminations, and PowerFeeds. The `cable` and `wireless_link` fields + reference the attached Cable or WirelessLink instance, respectively. - `_cable_peer` is a GenericForeignKey used to cache the far-end CableTermination on the local instance; this is a - shortcut to referencing `cable.termination_b`, for example. `_cable_peer` is set or cleared by the receivers in - dcim.signals when a Cable instance is created or deleted, respectively. + `_link_peer` is a GenericForeignKey used to cache the far-end LinkTermination on the local instance; this is a + shortcut to referencing `instance.link.termination_b`, for example. """ cable = models.ForeignKey( to='dcim.Cable', @@ -103,20 +103,20 @@ class CableTermination(models.Model): blank=True, null=True ) - _cable_peer_type = models.ForeignKey( + _link_peer_type = models.ForeignKey( to=ContentType, on_delete=models.SET_NULL, related_name='+', blank=True, null=True ) - _cable_peer_id = models.PositiveIntegerField( + _link_peer_id = models.PositiveIntegerField( blank=True, null=True ) - _cable_peer = GenericForeignKey( - ct_field='_cable_peer_type', - fk_field='_cable_peer_id' + _link_peer = GenericForeignKey( + ct_field='_link_peer_type', + fk_field='_link_peer_id' ) mark_connected = models.BooleanField( default=False, @@ -146,8 +146,8 @@ class CableTermination(models.Model): "mark_connected": "Cannot mark as connected with a cable attached." }) - def get_cable_peer(self): - return self._cable_peer + def get_link_peer(self): + return self._link_peer @property def _occupied(self): @@ -226,7 +226,7 @@ class PathEndpoint(models.Model): # @extras_features('custom_fields', 'custom_links', 'export_templates', 'tags', 'webhooks') -class ConsolePort(ComponentModel, CableTermination, PathEndpoint): +class ConsolePort(ComponentModel, LinkTermination, PathEndpoint): """ A physical console port within a Device. ConsolePorts connect to ConsoleServerPorts. """ @@ -258,7 +258,7 @@ class ConsolePort(ComponentModel, CableTermination, PathEndpoint): # @extras_features('custom_fields', 'custom_links', 'export_templates', 'tags', 'webhooks') -class ConsoleServerPort(ComponentModel, CableTermination, PathEndpoint): +class ConsoleServerPort(ComponentModel, LinkTermination, PathEndpoint): """ A physical port within a Device (typically a designated console server) which provides access to ConsolePorts. """ @@ -290,7 +290,7 @@ class ConsoleServerPort(ComponentModel, CableTermination, PathEndpoint): # @extras_features('custom_fields', 'custom_links', 'export_templates', 'tags', 'webhooks') -class PowerPort(ComponentModel, CableTermination, PathEndpoint): +class PowerPort(ComponentModel, LinkTermination, PathEndpoint): """ A physical power supply (intake) port within a Device. PowerPorts connect to PowerOutlets. """ @@ -340,8 +340,8 @@ class PowerPort(ComponentModel, CableTermination, PathEndpoint): poweroutlet_ct = ContentType.objects.get_for_model(PowerOutlet) outlet_ids = PowerOutlet.objects.filter(power_port=self).values_list('pk', flat=True) utilization = PowerPort.objects.filter( - _cable_peer_type=poweroutlet_ct, - _cable_peer_id__in=outlet_ids + _link_peer_type=poweroutlet_ct, + _link_peer_id__in=outlet_ids ).aggregate( maximum_draw_total=Sum('maximum_draw'), allocated_draw_total=Sum('allocated_draw'), @@ -354,12 +354,12 @@ class PowerPort(ComponentModel, CableTermination, PathEndpoint): } # Calculate per-leg aggregates for three-phase feeds - if getattr(self._cable_peer, 'phase', None) == PowerFeedPhaseChoices.PHASE_3PHASE: + if getattr(self._link_peer, 'phase', None) == PowerFeedPhaseChoices.PHASE_3PHASE: for leg, leg_name in PowerOutletFeedLegChoices: outlet_ids = PowerOutlet.objects.filter(power_port=self, feed_leg=leg).values_list('pk', flat=True) utilization = PowerPort.objects.filter( - _cable_peer_type=poweroutlet_ct, - _cable_peer_id__in=outlet_ids + _link_peer_type=poweroutlet_ct, + _link_peer_id__in=outlet_ids ).aggregate( maximum_draw_total=Sum('maximum_draw'), allocated_draw_total=Sum('allocated_draw'), @@ -387,7 +387,7 @@ class PowerPort(ComponentModel, CableTermination, PathEndpoint): # @extras_features('custom_fields', 'custom_links', 'export_templates', 'tags', 'webhooks') -class PowerOutlet(ComponentModel, CableTermination, PathEndpoint): +class PowerOutlet(ComponentModel, LinkTermination, PathEndpoint): """ A physical power outlet (output) within a Device which provides power to a PowerPort. """ @@ -482,7 +482,7 @@ class BaseInterface(models.Model): @extras_features('custom_fields', 'custom_links', 'export_templates', 'tags', 'webhooks') -class Interface(ComponentModel, BaseInterface, CableTermination, PathEndpoint): +class Interface(ComponentModel, BaseInterface, LinkTermination, PathEndpoint): """ A network interface within a Device. A physical Interface can connect to exactly one other Interface. """ @@ -674,7 +674,7 @@ class Interface(ComponentModel, BaseInterface, CableTermination, PathEndpoint): # @extras_features('custom_fields', 'custom_links', 'export_templates', 'tags', 'webhooks') -class FrontPort(ComponentModel, CableTermination): +class FrontPort(ComponentModel, LinkTermination): """ A pass-through port on the front of a Device. """ @@ -728,7 +728,7 @@ class FrontPort(ComponentModel, CableTermination): @extras_features('custom_fields', 'custom_links', 'export_templates', 'tags', 'webhooks') -class RearPort(ComponentModel, CableTermination): +class RearPort(ComponentModel, LinkTermination): """ A pass-through port on the rear of a Device. """ diff --git a/netbox/dcim/models/power.py b/netbox/dcim/models/power.py index 0e9520b36..6d6a04cea 100644 --- a/netbox/dcim/models/power.py +++ b/netbox/dcim/models/power.py @@ -10,7 +10,7 @@ from extras.utils import extras_features from netbox.models import PrimaryModel from utilities.querysets import RestrictedQuerySet from utilities.validators import ExclusionValidator -from .device_components import CableTermination, PathEndpoint +from .device_components import LinkTermination, PathEndpoint __all__ = ( 'PowerFeed', @@ -67,7 +67,7 @@ class PowerPanel(PrimaryModel): @extras_features('custom_fields', 'custom_links', 'export_templates', 'tags', 'webhooks') -class PowerFeed(PrimaryModel, PathEndpoint, CableTermination): +class PowerFeed(PrimaryModel, PathEndpoint, LinkTermination): """ An electrical circuit delivered from a PowerPanel. """ diff --git a/netbox/dcim/models/racks.py b/netbox/dcim/models/racks.py index c287d7d6c..94e7bf53a 100644 --- a/netbox/dcim/models/racks.py +++ b/netbox/dcim/models/racks.py @@ -422,13 +422,13 @@ class Rack(PrimaryModel): return 0 pf_powerports = PowerPort.objects.filter( - _cable_peer_type=ContentType.objects.get_for_model(PowerFeed), - _cable_peer_id__in=powerfeeds.values_list('id', flat=True) + _link_peer_type=ContentType.objects.get_for_model(PowerFeed), + _link_peer_id__in=powerfeeds.values_list('id', flat=True) ) poweroutlets = PowerOutlet.objects.filter(power_port_id__in=pf_powerports) allocated_draw_total = PowerPort.objects.filter( - _cable_peer_type=ContentType.objects.get_for_model(PowerOutlet), - _cable_peer_id__in=poweroutlets.values_list('id', flat=True) + _link_peer_type=ContentType.objects.get_for_model(PowerOutlet), + _link_peer_id__in=poweroutlets.values_list('id', flat=True) ).aggregate(Sum('allocated_draw'))['allocated_draw__sum'] or 0 return int(allocated_draw_total / available_power_total * 100) diff --git a/netbox/dcim/signals.py b/netbox/dcim/signals.py index 942bf04e4..616546525 100644 --- a/netbox/dcim/signals.py +++ b/netbox/dcim/signals.py @@ -83,12 +83,12 @@ def update_connected_endpoints(instance, created, raw=False, **kwargs): if instance.termination_a.cable != instance: logger.debug(f"Updating termination A for cable {instance}") instance.termination_a.cable = instance - instance.termination_a._cable_peer = instance.termination_b + instance.termination_a._link_peer = instance.termination_b instance.termination_a.save() if instance.termination_b.cable != instance: logger.debug(f"Updating termination B for cable {instance}") instance.termination_b.cable = instance - instance.termination_b._cable_peer = instance.termination_a + instance.termination_b._link_peer = instance.termination_a instance.termination_b.save() # Create/update cable paths @@ -119,11 +119,11 @@ def nullify_connected_endpoints(instance, **kwargs): if instance.termination_a is not None: logger.debug(f"Nullifying termination A for cable {instance}") model = instance.termination_a._meta.model - model.objects.filter(pk=instance.termination_a.pk).update(_cable_peer_type=None, _cable_peer_id=None) + model.objects.filter(pk=instance.termination_a.pk).update(_link_peer_type=None, _link_peer_id=None) if instance.termination_b is not None: logger.debug(f"Nullifying termination B for cable {instance}") model = instance.termination_b._meta.model - model.objects.filter(pk=instance.termination_b.pk).update(_cable_peer_type=None, _cable_peer_id=None) + model.objects.filter(pk=instance.termination_b.pk).update(_link_peer_type=None, _link_peer_id=None) # Delete and retrace any dependent cable paths for cablepath in CablePath.objects.filter(path__contains=instance): diff --git a/netbox/dcim/tables/devices.py b/netbox/dcim/tables/devices.py index 1eae62a05..a375a77cc 100644 --- a/netbox/dcim/tables/devices.py +++ b/netbox/dcim/tables/devices.py @@ -12,7 +12,7 @@ from utilities.tables import ( MarkdownColumn, TagColumn, TemplateColumn, ToggleColumn, ) from .template_code import ( - CABLETERMINATION, CONSOLEPORT_BUTTONS, CONSOLESERVERPORT_BUTTONS, DEVICE_LINK, DEVICEBAY_BUTTONS, DEVICEBAY_STATUS, + LINKTERMINATION, CONSOLEPORT_BUTTONS, CONSOLESERVERPORT_BUTTONS, DEVICE_LINK, DEVICEBAY_BUTTONS, DEVICEBAY_STATUS, FRONTPORT_BUTTONS, INTERFACE_BUTTONS, INTERFACE_IPADDRESSES, INTERFACE_TAGGED_VLANS, POWEROUTLET_BUTTONS, POWERPORT_BUTTONS, REARPORT_BUTTONS, ) @@ -258,11 +258,11 @@ class CableTerminationTable(BaseTable): orderable=False, verbose_name='Cable Color' ) - cable_peer = TemplateColumn( - accessor='_cable_peer', - template_code=CABLETERMINATION, + link_peer = TemplateColumn( + accessor='_link_peer', + template_code=LINKTERMINATION, orderable=False, - verbose_name='Cable Peer' + verbose_name='Link Peer' ) mark_connected = BooleanColumn() @@ -270,7 +270,7 @@ class CableTerminationTable(BaseTable): class PathEndpointTable(CableTerminationTable): connection = TemplateColumn( accessor='_path.last_node', - template_code=CABLETERMINATION, + template_code=LINKTERMINATION, verbose_name='Connection', orderable=False ) @@ -291,7 +291,7 @@ class ConsolePortTable(DeviceComponentTable, PathEndpointTable): model = ConsolePort fields = ( 'pk', 'name', 'device', 'label', 'type', 'speed', 'description', 'mark_connected', 'cable', 'cable_color', - 'cable_peer', 'connection', 'tags', + 'link_peer', 'connection', 'tags', ) default_columns = ('pk', 'name', 'device', 'label', 'type', 'speed', 'description') @@ -312,7 +312,7 @@ class DeviceConsolePortTable(ConsolePortTable): model = ConsolePort fields = ( 'pk', 'name', 'label', 'type', 'speed', 'description', 'mark_connected', 'cable', 'cable_color', - 'cable_peer', 'connection', 'tags', 'actions' + 'link_peer', 'connection', 'tags', 'actions' ) default_columns = ('pk', 'name', 'label', 'type', 'speed', 'description', 'cable', 'connection', 'actions') row_attrs = { @@ -335,7 +335,7 @@ class ConsoleServerPortTable(DeviceComponentTable, PathEndpointTable): model = ConsoleServerPort fields = ( 'pk', 'name', 'device', 'label', 'type', 'speed', 'description', 'mark_connected', 'cable', 'cable_color', - 'cable_peer', 'connection', 'tags', + 'link_peer', 'connection', 'tags', ) default_columns = ('pk', 'name', 'device', 'label', 'type', 'speed', 'description') @@ -357,7 +357,7 @@ class DeviceConsoleServerPortTable(ConsoleServerPortTable): model = ConsoleServerPort fields = ( 'pk', 'name', 'label', 'type', 'speed', 'description', 'mark_connected', 'cable', 'cable_color', - 'cable_peer', 'connection', 'tags', 'actions', + 'link_peer', 'connection', 'tags', 'actions', ) default_columns = ('pk', 'name', 'label', 'type', 'speed', 'description', 'cable', 'connection', 'actions') row_attrs = { @@ -380,7 +380,7 @@ class PowerPortTable(DeviceComponentTable, PathEndpointTable): model = PowerPort fields = ( 'pk', 'name', 'device', 'label', 'type', 'description', 'mark_connected', 'maximum_draw', 'allocated_draw', - 'cable', 'cable_color', 'cable_peer', 'connection', 'tags', + 'cable', 'cable_color', 'link_peer', 'connection', 'tags', ) default_columns = ('pk', 'name', 'device', 'label', 'type', 'maximum_draw', 'allocated_draw', 'description') @@ -402,7 +402,7 @@ class DevicePowerPortTable(PowerPortTable): model = PowerPort fields = ( 'pk', 'name', 'label', 'type', 'maximum_draw', 'allocated_draw', 'description', 'mark_connected', 'cable', - 'cable_color', 'cable_peer', 'connection', 'tags', 'actions', + 'cable_color', 'link_peer', 'connection', 'tags', 'actions', ) default_columns = ( 'pk', 'name', 'label', 'type', 'maximum_draw', 'allocated_draw', 'description', 'cable', 'connection', @@ -431,7 +431,7 @@ class PowerOutletTable(DeviceComponentTable, PathEndpointTable): model = PowerOutlet fields = ( 'pk', 'name', 'device', 'label', 'type', 'description', 'power_port', 'feed_leg', 'mark_connected', 'cable', - 'cable_color', 'cable_peer', 'connection', 'tags', + 'cable_color', 'link_peer', 'connection', 'tags', ) default_columns = ('pk', 'name', 'device', 'label', 'type', 'power_port', 'feed_leg', 'description') @@ -452,7 +452,7 @@ class DevicePowerOutletTable(PowerOutletTable): model = PowerOutlet fields = ( 'pk', 'name', 'label', 'type', 'power_port', 'feed_leg', 'description', 'mark_connected', 'cable', - 'cable_color', 'cable_peer', 'connection', 'tags', 'actions', + 'cable_color', 'link_peer', 'connection', 'tags', 'actions', ) default_columns = ( 'pk', 'name', 'label', 'type', 'power_port', 'feed_leg', 'description', 'cable', 'connection', 'actions', @@ -485,6 +485,9 @@ class InterfaceTable(DeviceComponentTable, BaseInterfaceTable, PathEndpointTable } ) mgmt_only = BooleanColumn() + wireless_link = tables.Column( + linkify=True + ) tags = TagColumn( url_name='dcim:interface_list' ) @@ -493,8 +496,8 @@ class InterfaceTable(DeviceComponentTable, BaseInterfaceTable, PathEndpointTable model = Interface fields = ( 'pk', 'name', 'device', 'label', 'enabled', 'type', 'mgmt_only', 'mtu', 'mode', 'mac_address', 'wwn', - 'rf_channel', 'rf_channel_width', 'description', 'mark_connected', 'cable', 'cable_color', 'cable_peer', - 'connection', 'tags', 'ip_addresses', 'untagged_vlan', 'tagged_vlans', + 'rf_channel', 'rf_channel_width', 'description', 'mark_connected', 'cable', 'cable_color', 'wireless_link', + 'link_peer', 'connection', 'tags', 'ip_addresses', 'untagged_vlan', 'tagged_vlans', ) default_columns = ('pk', 'name', 'device', 'label', 'enabled', 'type', 'description') @@ -525,8 +528,8 @@ class DeviceInterfaceTable(InterfaceTable): model = Interface fields = ( 'pk', 'name', 'label', 'enabled', 'type', 'parent', 'lag', 'mgmt_only', 'mtu', 'mode', 'mac_address', 'wwn', - 'description', 'mark_connected', 'cable', 'cable_color', 'cable_peer', 'connection', 'tags', 'ip_addresses', - 'untagged_vlan', 'tagged_vlans', 'actions', + 'description', 'mark_connected', 'cable', 'cable_color', 'wireless_link', 'link_peer', 'connection', 'tags', + 'ip_addresses', 'untagged_vlan', 'tagged_vlans', 'actions', ) order_by = ('name',) default_columns = ( @@ -562,7 +565,7 @@ class FrontPortTable(DeviceComponentTable, CableTerminationTable): model = FrontPort fields = ( 'pk', 'name', 'device', 'label', 'type', 'color', 'rear_port', 'rear_port_position', 'description', - 'mark_connected', 'cable', 'cable_color', 'cable_peer', 'tags', + 'mark_connected', 'cable', 'cable_color', 'link_peer', 'tags', ) default_columns = ( 'pk', 'name', 'device', 'label', 'type', 'color', 'rear_port', 'rear_port_position', 'description', @@ -586,10 +589,10 @@ class DeviceFrontPortTable(FrontPortTable): model = FrontPort fields = ( 'pk', 'name', 'label', 'type', 'rear_port', 'rear_port_position', 'description', 'mark_connected', 'cable', - 'cable_color', 'cable_peer', 'tags', 'actions', + 'cable_color', 'link_peer', 'tags', 'actions', ) default_columns = ( - 'pk', 'name', 'label', 'type', 'rear_port', 'rear_port_position', 'description', 'cable', 'cable_peer', + 'pk', 'name', 'label', 'type', 'rear_port', 'rear_port_position', 'description', 'cable', 'link_peer', 'actions', ) row_attrs = { @@ -613,7 +616,7 @@ class RearPortTable(DeviceComponentTable, CableTerminationTable): model = RearPort fields = ( 'pk', 'name', 'device', 'label', 'type', 'color', 'positions', 'description', 'mark_connected', 'cable', - 'cable_color', 'cable_peer', 'tags', + 'cable_color', 'link_peer', 'tags', ) default_columns = ('pk', 'name', 'device', 'label', 'type', 'color', 'description') @@ -635,10 +638,10 @@ class DeviceRearPortTable(RearPortTable): model = RearPort fields = ( 'pk', 'name', 'label', 'type', 'positions', 'description', 'mark_connected', 'cable', 'cable_color', - 'cable_peer', 'tags', 'actions', + 'link_peer', 'tags', 'actions', ) default_columns = ( - 'pk', 'name', 'label', 'type', 'positions', 'description', 'cable', 'cable_peer', 'actions', + 'pk', 'name', 'label', 'type', 'positions', 'description', 'cable', 'link_peer', 'actions', ) row_attrs = { 'class': get_cabletermination_row_class diff --git a/netbox/dcim/tables/power.py b/netbox/dcim/tables/power.py index b8e032e7f..956282911 100644 --- a/netbox/dcim/tables/power.py +++ b/netbox/dcim/tables/power.py @@ -71,10 +71,10 @@ class PowerFeedTable(CableTerminationTable): model = PowerFeed fields = ( 'pk', 'name', 'power_panel', 'rack', 'status', 'type', 'supply', 'voltage', 'amperage', 'phase', - 'max_utilization', 'mark_connected', 'cable', 'cable_color', 'cable_peer', 'connection', 'available_power', + 'max_utilization', 'mark_connected', 'cable', 'cable_color', 'link_peer', 'connection', 'available_power', 'comments', 'tags', ) default_columns = ( 'pk', 'name', 'power_panel', 'rack', 'status', 'type', 'supply', 'voltage', 'amperage', 'phase', 'cable', - 'cable_peer', + 'link_peer', ) diff --git a/netbox/dcim/tables/template_code.py b/netbox/dcim/tables/template_code.py index 9e2dc519b..7e78cb97d 100644 --- a/netbox/dcim/tables/template_code.py +++ b/netbox/dcim/tables/template_code.py @@ -1,4 +1,4 @@ -CABLETERMINATION = """ +LINKTERMINATION = """ {% if value %} {% if value.parent_object %} {{ value.parent_object }} diff --git a/netbox/dcim/tests/test_models.py b/netbox/dcim/tests/test_models.py index ae280365e..1042057de 100644 --- a/netbox/dcim/tests/test_models.py +++ b/netbox/dcim/tests/test_models.py @@ -494,9 +494,9 @@ class CableTestCase(TestCase): interface1 = Interface.objects.get(pk=self.interface1.pk) interface2 = Interface.objects.get(pk=self.interface2.pk) self.assertEqual(self.cable.termination_a, interface1) - self.assertEqual(interface1._cable_peer, interface2) + self.assertEqual(interface1._link_peer, interface2) self.assertEqual(self.cable.termination_b, interface2) - self.assertEqual(interface2._cable_peer, interface1) + self.assertEqual(interface2._link_peer, interface1) def test_cable_deletion(self): """ @@ -508,10 +508,10 @@ class CableTestCase(TestCase): self.assertNotEqual(str(self.cable), '#None') interface1 = Interface.objects.get(pk=self.interface1.pk) self.assertIsNone(interface1.cable) - self.assertIsNone(interface1._cable_peer) + self.assertIsNone(interface1._link_peer) interface2 = Interface.objects.get(pk=self.interface2.pk) self.assertIsNone(interface2.cable) - self.assertIsNone(interface2._cable_peer) + self.assertIsNone(interface2._link_peer) def test_cabletermination_deletion(self): """ diff --git a/netbox/templates/circuits/inc/circuit_termination.html b/netbox/templates/circuits/inc/circuit_termination.html index e2fe6af29..5c224f7c0 100644 --- a/netbox/templates/circuits/inc/circuit_termination.html +++ b/netbox/templates/circuits/inc/circuit_termination.html @@ -45,7 +45,7 @@ Marked as connected {% elif termination.cable %} {{ termination.cable }} - {% with peer=termination.get_cable_peer %} + {% with peer=termination.get_link_peer %} to {% if peer.device %} {{ peer.device }}
diff --git a/netbox/wireless/models.py b/netbox/wireless/models.py index 41f3dbf6d..f8c947385 100644 --- a/netbox/wireless/models.py +++ b/netbox/wireless/models.py @@ -98,6 +98,9 @@ class WirelessLink(PrimaryModel): ordering = ['pk'] unique_together = ('interface_a', 'interface_b') + def __str__(self): + return f'#{self.pk}' + def get_absolute_url(self): return reverse('wireless:wirelesslink', args=[self.pk]) diff --git a/netbox/wireless/signals.py b/netbox/wireless/signals.py index b8dc8a186..935e11677 100644 --- a/netbox/wireless/signals.py +++ b/netbox/wireless/signals.py @@ -25,12 +25,12 @@ def update_connected_interfaces(instance, created, raw=False, **kwargs): if instance.interface_a.wireless_link != instance: logger.debug(f"Updating interface A for wireless link {instance}") instance.interface_a.wireless_link = instance - instance.interface_a._cable_peer = instance.interface_b # TODO: Rename _cable_peer field + instance.interface_a._link_peer = instance.interface_b instance.interface_a.save() if instance.interface_b.cable != instance: logger.debug(f"Updating interface B for wireless link {instance}") instance.interface_b.wireless_link = instance - instance.interface_b._cable_peer = instance.interface_a + instance.interface_b._link_peer = instance.interface_a instance.interface_b.save() # Create/update cable paths @@ -50,15 +50,15 @@ def nullify_connected_interfaces(instance, **kwargs): logger.debug(f"Nullifying interface A for wireless link {instance}") Interface.objects.filter(pk=instance.interface_a.pk).update( wireless_link=None, - _cable_peer_type=None, - _cable_peer_id=None + _link_peer_type=None, + _link_peer_id=None ) if instance.interface_b is not None: logger.debug(f"Nullifying interface B for wireless link {instance}") Interface.objects.filter(pk=instance.interface_b.pk).update( wireless_link=None, - _cable_peer_type=None, - _cable_peer_id=None + _link_peer_type=None, + _link_peer_id=None ) # Delete and retrace any dependent cable paths From ec0560a2c547c6f480ab67b025fa979a939e5f3c Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Wed, 13 Oct 2021 14:16:10 -0400 Subject: [PATCH 013/289] Fix trace_paths command for wireless links --- netbox/dcim/management/commands/trace_paths.py | 6 +++++- netbox/dcim/tables/template_code.py | 4 +++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/netbox/dcim/management/commands/trace_paths.py b/netbox/dcim/management/commands/trace_paths.py index fd5f9cfab..d0cd64486 100644 --- a/netbox/dcim/management/commands/trace_paths.py +++ b/netbox/dcim/management/commands/trace_paths.py @@ -1,6 +1,7 @@ from django.core.management.base import BaseCommand from django.core.management.color import no_style from django.db import connection +from django.db.models import Q from dcim.models import CablePath, ConsolePort, ConsoleServerPort, Interface, PowerFeed, PowerOutlet, PowerPort from dcim.signals import create_cablepath @@ -67,7 +68,10 @@ class Command(BaseCommand): # Retrace paths for model in ENDPOINT_MODELS: - origins = model.objects.filter(cable__isnull=False) + params = Q(cable__isnull=False) + if hasattr(model, 'wireless_link'): + params |= Q(wireless_link__isnull=False) + origins = model.objects.filter(params) if not options['force']: origins = origins.filter(_path__isnull=True) origins_count = origins.count() diff --git a/netbox/dcim/tables/template_code.py b/netbox/dcim/tables/template_code.py index 7e78cb97d..a5a4d9979 100644 --- a/netbox/dcim/tables/template_code.py +++ b/netbox/dcim/tables/template_code.py @@ -195,8 +195,10 @@ INTERFACE_BUTTONS = """ {% endif %} -{% if record.cable %} +{% if record.link %} +{% endif %} +{% if record.cable %} {% include 'dcim/inc/cable_toggle_buttons.html' with cable=record.cable %} {% if perms.dcim.delete_cable %} From 95ed07a95ec0fe2f71441311cb3e6bb9047ef17a Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Wed, 13 Oct 2021 14:31:30 -0400 Subject: [PATCH 014/289] Add status field to WirelessLink --- netbox/dcim/api/serializers.py | 2 +- netbox/dcim/choices.py | 4 ++-- netbox/dcim/filtersets.py | 2 +- netbox/dcim/forms/bulk_edit.py | 2 +- netbox/dcim/forms/bulk_import.py | 2 +- netbox/dcim/forms/filtersets.py | 2 +- netbox/dcim/models/cables.py | 8 ++++---- netbox/dcim/signals.py | 4 ++-- netbox/dcim/tests/test_cablepaths.py | 6 +++--- netbox/dcim/tests/test_filtersets.py | 16 ++++++++-------- netbox/dcim/tests/test_views.py | 4 ++-- netbox/templates/wireless/wirelesslink.html | 4 ++++ netbox/wireless/api/serializers.py | 5 ++++- netbox/wireless/filtersets.py | 4 ++++ netbox/wireless/forms/bulk_edit.py | 11 ++++++++--- netbox/wireless/forms/bulk_import.py | 7 ++++++- netbox/wireless/forms/filtersets.py | 8 +++++++- netbox/wireless/forms/models.py | 7 +++++-- netbox/wireless/migrations/0001_wireless.py | 1 + netbox/wireless/models.py | 11 +++++++++++ netbox/wireless/tables.py | 7 ++++--- 21 files changed, 80 insertions(+), 37 deletions(-) diff --git a/netbox/dcim/api/serializers.py b/netbox/dcim/api/serializers.py index 9187901f0..03d14a160 100644 --- a/netbox/dcim/api/serializers.py +++ b/netbox/dcim/api/serializers.py @@ -757,7 +757,7 @@ class CableSerializer(PrimaryModelSerializer): ) termination_a = serializers.SerializerMethodField(read_only=True) termination_b = serializers.SerializerMethodField(read_only=True) - status = ChoiceField(choices=CableStatusChoices, required=False) + status = ChoiceField(choices=LinkStatusChoices, required=False) length_unit = ChoiceField(choices=CableLengthUnitChoices, allow_blank=True, required=False) class Meta: diff --git a/netbox/dcim/choices.py b/netbox/dcim/choices.py index 9a78a74f9..d58d5466d 100644 --- a/netbox/dcim/choices.py +++ b/netbox/dcim/choices.py @@ -1030,7 +1030,7 @@ class PortTypeChoices(ChoiceSet): # -# Cables +# Cables/links # class CableTypeChoices(ChoiceSet): @@ -1094,7 +1094,7 @@ class CableTypeChoices(ChoiceSet): ) -class CableStatusChoices(ChoiceSet): +class LinkStatusChoices(ChoiceSet): STATUS_CONNECTED = 'connected' STATUS_PLANNED = 'planned' diff --git a/netbox/dcim/filtersets.py b/netbox/dcim/filtersets.py index 0c756957a..f778fd083 100644 --- a/netbox/dcim/filtersets.py +++ b/netbox/dcim/filtersets.py @@ -1205,7 +1205,7 @@ class CableFilterSet(PrimaryModelFilterSet): choices=CableTypeChoices ) status = django_filters.MultipleChoiceFilter( - choices=CableStatusChoices + choices=LinkStatusChoices ) color = django_filters.MultipleChoiceFilter( choices=ColorChoices diff --git a/netbox/dcim/forms/bulk_edit.py b/netbox/dcim/forms/bulk_edit.py index 67a482a26..f710e7d8c 100644 --- a/netbox/dcim/forms/bulk_edit.py +++ b/netbox/dcim/forms/bulk_edit.py @@ -453,7 +453,7 @@ class CableBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldModelBulkE widget=StaticSelect() ) status = forms.ChoiceField( - choices=add_blank_choice(CableStatusChoices), + choices=add_blank_choice(LinkStatusChoices), required=False, widget=StaticSelect(), initial='' diff --git a/netbox/dcim/forms/bulk_import.py b/netbox/dcim/forms/bulk_import.py index a2685c8e0..95b4dd136 100644 --- a/netbox/dcim/forms/bulk_import.py +++ b/netbox/dcim/forms/bulk_import.py @@ -807,7 +807,7 @@ class CableCSVForm(CustomFieldModelCSVForm): # Cable attributes status = CSVChoiceField( - choices=CableStatusChoices, + choices=LinkStatusChoices, required=False, help_text='Connection status' ) diff --git a/netbox/dcim/forms/filtersets.py b/netbox/dcim/forms/filtersets.py index 605139c1b..169b93028 100644 --- a/netbox/dcim/forms/filtersets.py +++ b/netbox/dcim/forms/filtersets.py @@ -732,7 +732,7 @@ class CableFilterForm(BootstrapMixin, CustomFieldModelFilterForm): ) status = forms.ChoiceField( required=False, - choices=add_blank_choice(CableStatusChoices), + choices=add_blank_choice(LinkStatusChoices), widget=StaticSelect() ) color = ColorField( diff --git a/netbox/dcim/models/cables.py b/netbox/dcim/models/cables.py index fb3e71543..129617746 100644 --- a/netbox/dcim/models/cables.py +++ b/netbox/dcim/models/cables.py @@ -64,8 +64,8 @@ class Cable(PrimaryModel): ) status = models.CharField( max_length=50, - choices=CableStatusChoices, - default=CableStatusChoices.STATUS_CONNECTED + choices=LinkStatusChoices, + default=LinkStatusChoices.STATUS_CONNECTED ) label = models.CharField( max_length=100, @@ -285,7 +285,7 @@ class Cable(PrimaryModel): self._pk = self.pk def get_status_class(self): - return CableStatusChoices.CSS_CLASSES.get(self.status) + return LinkStatusChoices.CSS_CLASSES.get(self.status) def get_compatible_types(self): """ @@ -390,7 +390,7 @@ class CablePath(BigIDModel): node = origin while node.link is not None: - if hasattr(node.link, 'status') and node.link.status != CableStatusChoices.STATUS_CONNECTED: + if hasattr(node.link, 'status') and node.link.status != LinkStatusChoices.STATUS_CONNECTED: is_active = False # Follow the link to its far-end termination diff --git a/netbox/dcim/signals.py b/netbox/dcim/signals.py index 616546525..79e9c6687 100644 --- a/netbox/dcim/signals.py +++ b/netbox/dcim/signals.py @@ -4,7 +4,7 @@ from django.contrib.contenttypes.models import ContentType from django.db.models.signals import post_save, post_delete, pre_delete from django.dispatch import receiver -from .choices import CableStatusChoices +from .choices import LinkStatusChoices from .models import Cable, CablePath, Device, PathEndpoint, PowerPanel, Rack, Location, VirtualChassis from .utils import create_cablepath, rebuild_paths @@ -102,7 +102,7 @@ def update_connected_endpoints(instance, created, raw=False, **kwargs): # We currently don't support modifying either termination of an existing Cable. (This # may change in the future.) However, we do need to capture status changes and update # any CablePaths accordingly. - if instance.status != CableStatusChoices.STATUS_CONNECTED: + if instance.status != LinkStatusChoices.STATUS_CONNECTED: CablePath.objects.filter(path__contains=instance).update(is_active=False) else: rebuild_paths(instance) diff --git a/netbox/dcim/tests/test_cablepaths.py b/netbox/dcim/tests/test_cablepaths.py index c0fc89f83..6849df012 100644 --- a/netbox/dcim/tests/test_cablepaths.py +++ b/netbox/dcim/tests/test_cablepaths.py @@ -2,7 +2,7 @@ from django.contrib.contenttypes.models import ContentType from django.test import TestCase from circuits.models import * -from dcim.choices import CableStatusChoices +from dcim.choices import LinkStatusChoices from dcim.models import * from dcim.utils import object_to_path_node @@ -1142,7 +1142,7 @@ class CablePathTestCase(TestCase): self.assertEqual(CablePath.objects.count(), 2) # Change cable 2's status to "planned" - cable2.status = CableStatusChoices.STATUS_PLANNED + cable2.status = LinkStatusChoices.STATUS_PLANNED cable2.save() self.assertPathExists( origin=interface1, @@ -1160,7 +1160,7 @@ class CablePathTestCase(TestCase): # Change cable 2's status to "connected" cable2 = Cable.objects.get(pk=cable2.pk) - cable2.status = CableStatusChoices.STATUS_CONNECTED + cable2.status = LinkStatusChoices.STATUS_CONNECTED cable2.save() self.assertPathExists( origin=interface1, diff --git a/netbox/dcim/tests/test_filtersets.py b/netbox/dcim/tests/test_filtersets.py index fb94bde08..0c1ffd54b 100644 --- a/netbox/dcim/tests/test_filtersets.py +++ b/netbox/dcim/tests/test_filtersets.py @@ -2855,12 +2855,12 @@ class CableTestCase(TestCase, ChangeLoggedFilterSetTests): console_server_port = ConsoleServerPort.objects.create(device=devices[0], name='Console Server Port 1') # Cables - Cable(termination_a=interfaces[1], termination_b=interfaces[2], label='Cable 1', type=CableTypeChoices.TYPE_CAT3, status=CableStatusChoices.STATUS_CONNECTED, color='aa1409', length=10, length_unit=CableLengthUnitChoices.UNIT_FOOT).save() - Cable(termination_a=interfaces[3], termination_b=interfaces[4], label='Cable 2', type=CableTypeChoices.TYPE_CAT3, status=CableStatusChoices.STATUS_CONNECTED, color='aa1409', length=20, length_unit=CableLengthUnitChoices.UNIT_FOOT).save() - Cable(termination_a=interfaces[5], termination_b=interfaces[6], label='Cable 3', type=CableTypeChoices.TYPE_CAT5E, status=CableStatusChoices.STATUS_CONNECTED, color='f44336', length=30, length_unit=CableLengthUnitChoices.UNIT_FOOT).save() - Cable(termination_a=interfaces[7], termination_b=interfaces[8], label='Cable 4', type=CableTypeChoices.TYPE_CAT5E, status=CableStatusChoices.STATUS_PLANNED, color='f44336', length=40, length_unit=CableLengthUnitChoices.UNIT_FOOT).save() - Cable(termination_a=interfaces[9], termination_b=interfaces[10], label='Cable 5', type=CableTypeChoices.TYPE_CAT6, status=CableStatusChoices.STATUS_PLANNED, color='e91e63', length=10, length_unit=CableLengthUnitChoices.UNIT_METER).save() - Cable(termination_a=interfaces[11], termination_b=interfaces[0], label='Cable 6', type=CableTypeChoices.TYPE_CAT6, status=CableStatusChoices.STATUS_PLANNED, color='e91e63', length=20, length_unit=CableLengthUnitChoices.UNIT_METER).save() + Cable(termination_a=interfaces[1], termination_b=interfaces[2], label='Cable 1', type=CableTypeChoices.TYPE_CAT3, status=LinkStatusChoices.STATUS_CONNECTED, color='aa1409', length=10, length_unit=CableLengthUnitChoices.UNIT_FOOT).save() + Cable(termination_a=interfaces[3], termination_b=interfaces[4], label='Cable 2', type=CableTypeChoices.TYPE_CAT3, status=LinkStatusChoices.STATUS_CONNECTED, color='aa1409', length=20, length_unit=CableLengthUnitChoices.UNIT_FOOT).save() + Cable(termination_a=interfaces[5], termination_b=interfaces[6], label='Cable 3', type=CableTypeChoices.TYPE_CAT5E, status=LinkStatusChoices.STATUS_CONNECTED, color='f44336', length=30, length_unit=CableLengthUnitChoices.UNIT_FOOT).save() + Cable(termination_a=interfaces[7], termination_b=interfaces[8], label='Cable 4', type=CableTypeChoices.TYPE_CAT5E, status=LinkStatusChoices.STATUS_PLANNED, color='f44336', length=40, length_unit=CableLengthUnitChoices.UNIT_FOOT).save() + Cable(termination_a=interfaces[9], termination_b=interfaces[10], label='Cable 5', type=CableTypeChoices.TYPE_CAT6, status=LinkStatusChoices.STATUS_PLANNED, color='e91e63', length=10, length_unit=CableLengthUnitChoices.UNIT_METER).save() + Cable(termination_a=interfaces[11], termination_b=interfaces[0], label='Cable 6', type=CableTypeChoices.TYPE_CAT6, status=LinkStatusChoices.STATUS_PLANNED, color='e91e63', length=20, length_unit=CableLengthUnitChoices.UNIT_METER).save() Cable(termination_a=console_port, termination_b=console_server_port, label='Cable 7').save() def test_label(self): @@ -2880,9 +2880,9 @@ class CableTestCase(TestCase, ChangeLoggedFilterSetTests): self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4) def test_status(self): - params = {'status': [CableStatusChoices.STATUS_CONNECTED]} + params = {'status': [LinkStatusChoices.STATUS_CONNECTED]} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4) - params = {'status': [CableStatusChoices.STATUS_PLANNED]} + params = {'status': [LinkStatusChoices.STATUS_PLANNED]} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 3) def test_color(self): diff --git a/netbox/dcim/tests/test_views.py b/netbox/dcim/tests/test_views.py index 545a56f81..c0af2d438 100644 --- a/netbox/dcim/tests/test_views.py +++ b/netbox/dcim/tests/test_views.py @@ -1813,7 +1813,7 @@ class CableTestCase( 'termination_b_type': interface_ct.pk, 'termination_b_id': interfaces[3].pk, 'type': CableTypeChoices.TYPE_CAT6, - 'status': CableStatusChoices.STATUS_PLANNED, + 'status': LinkStatusChoices.STATUS_PLANNED, 'label': 'Label', 'color': 'c0c0c0', 'length': 100, @@ -1830,7 +1830,7 @@ class CableTestCase( cls.bulk_edit_data = { 'type': CableTypeChoices.TYPE_CAT5E, - 'status': CableStatusChoices.STATUS_CONNECTED, + 'status': LinkStatusChoices.STATUS_CONNECTED, 'label': 'New label', 'color': '00ff00', 'length': 50, diff --git a/netbox/templates/wireless/wirelesslink.html b/netbox/templates/wireless/wirelesslink.html index 6196adae4..45ec6b0c9 100644 --- a/netbox/templates/wireless/wirelesslink.html +++ b/netbox/templates/wireless/wirelesslink.html @@ -15,6 +15,10 @@
Link Properties
+ + + + diff --git a/netbox/wireless/api/serializers.py b/netbox/wireless/api/serializers.py index 9337d6864..5a7330129 100644 --- a/netbox/wireless/api/serializers.py +++ b/netbox/wireless/api/serializers.py @@ -1,7 +1,9 @@ from rest_framework import serializers +from dcim.choices import LinkStatusChoices from dcim.api.serializers import NestedInterfaceSerializer from ipam.api.serializers import NestedVLANSerializer +from netbox.api import ChoiceField from netbox.api.serializers import PrimaryModelSerializer from wireless.models import * from .nested_serializers import * @@ -25,11 +27,12 @@ class WirelessLANSerializer(PrimaryModelSerializer): class WirelessLinkSerializer(PrimaryModelSerializer): url = serializers.HyperlinkedIdentityField(view_name='wireless-api:wirelesslink-detail') + status = ChoiceField(choices=LinkStatusChoices, required=False) interface_a = NestedInterfaceSerializer() interface_b = NestedInterfaceSerializer() class Meta: model = WirelessLink fields = [ - 'id', 'url', 'display', 'interface_a', 'interface_b', 'ssid', 'description', + 'id', 'url', 'display', 'interface_a', 'interface_b', 'ssid', 'status', 'description', ] diff --git a/netbox/wireless/filtersets.py b/netbox/wireless/filtersets.py index 7341ada9d..f765172dd 100644 --- a/netbox/wireless/filtersets.py +++ b/netbox/wireless/filtersets.py @@ -1,6 +1,7 @@ import django_filters from django.db.models import Q +from dcim.choices import LinkStatusChoices from extras.filters import TagFilter from netbox.filtersets import PrimaryModelFilterSet from .models import * @@ -37,6 +38,9 @@ class WirelessLinkFilterSet(PrimaryModelFilterSet): method='search', label='Search', ) + status = django_filters.MultipleChoiceFilter( + choices=LinkStatusChoices + ) tag = TagFilter() class Meta: diff --git a/netbox/wireless/forms/bulk_edit.py b/netbox/wireless/forms/bulk_edit.py index 65666ccb1..72af81f56 100644 --- a/netbox/wireless/forms/bulk_edit.py +++ b/netbox/wireless/forms/bulk_edit.py @@ -1,10 +1,11 @@ from django import forms -from dcim.models import * +from dcim.choices import LinkStatusChoices from extras.forms import AddRemoveTagsForm, CustomFieldModelBulkEditForm from ipam.models import VLAN from utilities.forms import BootstrapMixin, DynamicModelChoiceField from wireless.constants import SSID_MAX_LENGTH +from wireless.models import * __all__ = ( 'WirelessLANBulkEditForm', @@ -14,7 +15,7 @@ __all__ = ( class WirelessLANBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldModelBulkEditForm): pk = forms.ModelMultipleChoiceField( - queryset=PowerFeed.objects.all(), + queryset=WirelessLAN.objects.all(), widget=forms.MultipleHiddenInput ) vlan = DynamicModelChoiceField( @@ -35,13 +36,17 @@ class WirelessLANBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldMode class WirelessLinkBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldModelBulkEditForm): pk = forms.ModelMultipleChoiceField( - queryset=PowerFeed.objects.all(), + queryset=WirelessLink.objects.all(), widget=forms.MultipleHiddenInput ) ssid = forms.CharField( max_length=SSID_MAX_LENGTH, required=False ) + status = forms.ChoiceField( + choices=LinkStatusChoices, + required=False + ) description = forms.CharField( required=False ) diff --git a/netbox/wireless/forms/bulk_import.py b/netbox/wireless/forms/bulk_import.py index caf322dc1..763305c38 100644 --- a/netbox/wireless/forms/bulk_import.py +++ b/netbox/wireless/forms/bulk_import.py @@ -1,7 +1,8 @@ +from dcim.choices import LinkStatusChoices from dcim.models import Interface from extras.forms import CustomFieldModelCSVForm from ipam.models import VLAN -from utilities.forms import CSVModelChoiceField +from utilities.forms import CSVChoiceField, CSVModelChoiceField from wireless.models import * __all__ = ( @@ -23,6 +24,10 @@ class WirelessLANCSVForm(CustomFieldModelCSVForm): class WirelessLinkCSVForm(CustomFieldModelCSVForm): + status = CSVChoiceField( + choices=LinkStatusChoices, + help_text='Connection status' + ) interface_a = CSVModelChoiceField( queryset=Interface.objects.all() ) diff --git a/netbox/wireless/forms/filtersets.py b/netbox/wireless/forms/filtersets.py index fa1912099..6da3cd716 100644 --- a/netbox/wireless/forms/filtersets.py +++ b/netbox/wireless/forms/filtersets.py @@ -1,8 +1,9 @@ from django import forms from django.utils.translation import gettext as _ +from dcim.choices import LinkStatusChoices from extras.forms import CustomFieldModelFilterForm -from utilities.forms import BootstrapMixin, TagFilterField +from utilities.forms import add_blank_choice, BootstrapMixin, StaticSelect, TagFilterField from wireless.models import * __all__ = ( @@ -42,4 +43,9 @@ class WirelessLinkFilterForm(BootstrapMixin, CustomFieldModelFilterForm): required=False, label='SSID' ) + status = forms.ChoiceField( + required=False, + choices=add_blank_choice(LinkStatusChoices), + widget=StaticSelect() + ) tag = TagFilterField(model) diff --git a/netbox/wireless/forms/models.py b/netbox/wireless/forms/models.py index c494fb5a2..174eb5983 100644 --- a/netbox/wireless/forms/models.py +++ b/netbox/wireless/forms/models.py @@ -2,7 +2,7 @@ from dcim.models import Interface from extras.forms import CustomFieldModelForm from extras.models import Tag from ipam.models import VLAN -from utilities.forms import BootstrapMixin, DynamicModelChoiceField, DynamicModelMultipleChoiceField +from utilities.forms import BootstrapMixin, DynamicModelChoiceField, DynamicModelMultipleChoiceField, StaticSelect from wireless.models import * __all__ = ( @@ -55,5 +55,8 @@ class WirelessLinkForm(BootstrapMixin, CustomFieldModelForm): class Meta: model = WirelessLink fields = [ - 'interface_a', 'interface_b', 'ssid', 'description', 'tags', + 'interface_a', 'interface_b', 'status', 'ssid', 'description', 'tags', ] + widgets = { + 'status': StaticSelect, + } diff --git a/netbox/wireless/migrations/0001_wireless.py b/netbox/wireless/migrations/0001_wireless.py index 2fb07e5fd..8eb042d7d 100644 --- a/netbox/wireless/migrations/0001_wireless.py +++ b/netbox/wireless/migrations/0001_wireless.py @@ -42,6 +42,7 @@ class Migration(migrations.Migration): ('custom_field_data', models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder)), ('id', models.BigAutoField(primary_key=True, serialize=False)), ('ssid', models.CharField(blank=True, max_length=32)), + ('status', models.CharField(default='connected', max_length=50)), ('description', models.CharField(blank=True, max_length=200)), ('_interface_a_device', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='+', to='dcim.device')), ('_interface_b_device', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='+', to='dcim.device')), diff --git a/netbox/wireless/models.py b/netbox/wireless/models.py index f8c947385..d02358f1c 100644 --- a/netbox/wireless/models.py +++ b/netbox/wireless/models.py @@ -2,6 +2,7 @@ from django.core.exceptions import ValidationError from django.db import models from django.urls import reverse +from dcim.choices import LinkStatusChoices from dcim.constants import WIRELESS_IFACE_TYPES from extras.utils import extras_features from netbox.models import BigIDModel, PrimaryModel @@ -70,6 +71,11 @@ class WirelessLink(PrimaryModel): blank=True, verbose_name='SSID' ) + status = models.CharField( + max_length=50, + choices=LinkStatusChoices, + default=LinkStatusChoices.STATUS_CONNECTED + ) description = models.CharField( max_length=200, blank=True @@ -94,6 +100,8 @@ class WirelessLink(PrimaryModel): objects = RestrictedQuerySet.as_manager() + clone_fields = ('ssid', 'status') + class Meta: ordering = ['pk'] unique_together = ('interface_a', 'interface_b') @@ -104,6 +112,9 @@ class WirelessLink(PrimaryModel): def get_absolute_url(self): return reverse('wireless:wirelesslink', args=[self.pk]) + def get_status_class(self): + return LinkStatusChoices.CSS_CLASSES.get(self.status) + def clean(self): # Validate interface types diff --git a/netbox/wireless/tables.py b/netbox/wireless/tables.py index 31c9e56a8..9b0ef7291 100644 --- a/netbox/wireless/tables.py +++ b/netbox/wireless/tables.py @@ -1,7 +1,7 @@ import django_tables2 as tables from .models import * -from utilities.tables import BaseTable, TagColumn, ToggleColumn +from utilities.tables import BaseTable, ChoiceFieldColumn, TagColumn, ToggleColumn __all__ = ( 'WirelessLANTable', @@ -30,6 +30,7 @@ class WirelessLinkTable(BaseTable): linkify=True, verbose_name='ID' ) + status = ChoiceFieldColumn() interface_a = tables.Column( linkify=True ) @@ -42,5 +43,5 @@ class WirelessLinkTable(BaseTable): class Meta(BaseTable.Meta): model = WirelessLink - fields = ('pk', 'id', 'interface_a', 'interface_b', 'ssid', 'description') - default_columns = ('pk', 'id', 'interface_a', 'interface_b', 'ssid', 'description') + fields = ('pk', 'id', 'status', 'interface_a', 'interface_b', 'ssid', 'description') + default_columns = ('pk', 'id', 'status', 'interface_a', 'interface_b', 'ssid', 'description') From 43f2d4a331253ababf5a2f7e3dcb809cfa98200d Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Wed, 13 Oct 2021 15:00:35 -0400 Subject: [PATCH 015/289] Add SVG trace support for WirelessLinks --- netbox/dcim/svg.py | 81 +++++++++++++++---- netbox/project-static/dist/cable_trace.css | 2 +- netbox/project-static/styles/cable-trace.scss | 7 +- 3 files changed, 73 insertions(+), 17 deletions(-) diff --git a/netbox/dcim/svg.py b/netbox/dcim/svg.py index 5601bc591..b7f1576ee 100644 --- a/netbox/dcim/svg.py +++ b/netbox/dcim/svg.py @@ -398,6 +398,39 @@ class CableTraceSVG: return group + def _draw_wirelesslink(self, url, labels): + """ + Draw a line with labels representing a WirelessLink. + + :param url: Hyperlink URL + :param labels: Iterable of text labels + """ + group = Group(class_='connector') + + # Draw the wireless link + start = (OFFSET + self.center, self.cursor) + height = PADDING * 2 + LINE_HEIGHT * len(labels) + PADDING * 2 + end = (start[0], start[1] + height) + line = Line(start=start, end=end, class_='wireless-link') + group.add(line) + + self.cursor += PADDING * 2 + + # Add link + link = Hyperlink(href=f'{self.base_url}{url}', target='_blank') + + # Add text label(s) + for i, label in enumerate(labels): + self.cursor += LINE_HEIGHT + text_coords = (self.center + PADDING * 2, self.cursor - LINE_HEIGHT / 2) + text = Text(label, insert=text_coords, class_='bold' if not i else []) + link.add(text) + + group.add(link) + self.cursor += PADDING * 2 + + return group + def _draw_attachment(self): """ Return an SVG group containing a line element and "Attachment" label. @@ -418,6 +451,9 @@ class CableTraceSVG: """ Return an SVG document representing a cable trace. """ + from dcim.models import Cable + from wireless.models import WirelessLink + traced_path = self.origin.trace() # Prep elements list @@ -452,24 +488,39 @@ class CableTraceSVG: ) terminations.append(termination) - # Connector (either a Cable or attachment to a ProviderNetwork) + # Connector (a Cable or WirelessLink) if connector is not None: # Cable - cable_labels = [ - f'Cable {connector}', - connector.get_status_display() - ] - if connector.type: - cable_labels.append(connector.get_type_display()) - if connector.length and connector.length_unit: - cable_labels.append(f'{connector.length} {connector.get_length_unit_display()}') - cable = self._draw_cable( - color=connector.color or '000000', - url=connector.get_absolute_url(), - labels=cable_labels - ) - connectors.append(cable) + if type(connector) is Cable: + connector_labels = [ + f'Cable {connector}', + connector.get_status_display() + ] + if connector.type: + connector_labels.append(connector.get_type_display()) + if connector.length and connector.length_unit: + connector_labels.append(f'{connector.length} {connector.get_length_unit_display()}') + cable = self._draw_cable( + color=connector.color or '000000', + url=connector.get_absolute_url(), + labels=connector_labels + ) + connectors.append(cable) + + # WirelessLink + elif type(connector) is WirelessLink: + connector_labels = [ + f'Wireless link {connector}', + connector.get_status_display() + ] + if connector.ssid: + connector_labels.append(connector.ssid) + wirelesslink = self._draw_wirelesslink( + url=connector.get_absolute_url(), + labels=connector_labels + ) + connectors.append(wirelesslink) # Far end termination termination = self._draw_box( diff --git a/netbox/project-static/dist/cable_trace.css b/netbox/project-static/dist/cable_trace.css index 633ccd572..50622f128 100644 --- a/netbox/project-static/dist/cable_trace.css +++ b/netbox/project-static/dist/cable_trace.css @@ -1 +1 @@ -:root{--nbx-trace-color: #000;--nbx-trace-node-bg: #e9ecef;--nbx-trace-termination-bg: #f8f9fa;--nbx-trace-cable-shadow: #343a40;--nbx-trace-attachment: #ced4da}:root[data-netbox-color-mode=dark]{--nbx-trace-color: #fff;--nbx-trace-node-bg: #212529;--nbx-trace-termination-bg: #343a40;--nbx-trace-cable-shadow: #e9ecef;--nbx-trace-attachment: #6c757d}*{font-family:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-size:.875rem}text{text-anchor:middle;dominant-baseline:middle}text:not([fill]){fill:var(--nbx-trace-color)}text.bold{font-weight:700}svg rect{fill:var(--nbx-trace-node-bg);stroke:#606060;stroke-width:1}svg rect .termination{fill:var(--nbx-trace-termination-bg)}svg .connector text{text-anchor:start}svg line{stroke-width:5px}svg line.cable-shadow{stroke:var(--nbx-trace-cable-shadow);stroke-width:7px}svg line.attachment{stroke:var(--nbx-trace-attachment);stroke-dasharray:5px,5px} +:root{--nbx-trace-color: #000;--nbx-trace-node-bg: #e9ecef;--nbx-trace-termination-bg: #f8f9fa;--nbx-trace-cable-shadow: #343a40;--nbx-trace-attachment: #ced4da}:root[data-netbox-color-mode=dark]{--nbx-trace-color: #fff;--nbx-trace-node-bg: #212529;--nbx-trace-termination-bg: #343a40;--nbx-trace-cable-shadow: #e9ecef;--nbx-trace-attachment: #6c757d}*{font-family:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-size:.875rem}text{text-anchor:middle;dominant-baseline:middle}text:not([fill]){fill:var(--nbx-trace-color)}text.bold{font-weight:700}svg rect{fill:var(--nbx-trace-node-bg);stroke:#606060;stroke-width:1}svg rect .termination{fill:var(--nbx-trace-termination-bg)}svg .connector text{text-anchor:start}svg line{stroke-width:5px}svg line.cable-shadow{stroke:var(--nbx-trace-cable-shadow);stroke-width:7px}svg line.wireless-link{stroke:var(--nbx-trace-attachment);stroke-dasharray:4px 12px;stroke-linecap:round}svg line.attachment{stroke:var(--nbx-trace-attachment);stroke-dasharray:5px} diff --git a/netbox/project-static/styles/cable-trace.scss b/netbox/project-static/styles/cable-trace.scss index 85deafe96..51d94d38a 100644 --- a/netbox/project-static/styles/cable-trace.scss +++ b/netbox/project-static/styles/cable-trace.scss @@ -59,8 +59,13 @@ svg { stroke: var(--nbx-trace-cable-shadow); stroke-width: 7px; } + line.wireless-link { + stroke: var(--nbx-trace-attachment); + stroke-dasharray: 4px 12px; + stroke-linecap: round; + } line.attachment { stroke: var(--nbx-trace-attachment); - stroke-dasharray: 5px, 5px; + stroke-dasharray: 5px; } } From 01f791a44ee93b0342a204c5dffdf7a71c783267 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Wed, 13 Oct 2021 16:40:12 -0400 Subject: [PATCH 016/289] Add WirelessLANGroup model --- netbox/netbox/navigation_menu.py | 3 +- netbox/templates/wireless/wirelesslan.html | 10 +++ .../templates/wireless/wirelesslangroup.html | 72 ++++++++++++++++++ netbox/wireless/api/nested_serializers.py | 11 +++ netbox/wireless/api/serializers.py | 15 +++- netbox/wireless/api/urls.py | 1 + netbox/wireless/api/views.py | 12 +++ netbox/wireless/filtersets.py | 18 ++++- netbox/wireless/forms/bulk_edit.py | 25 ++++++- netbox/wireless/forms/bulk_import.py | 25 ++++++- netbox/wireless/forms/filtersets.py | 30 +++++++- netbox/wireless/forms/models.py | 27 ++++++- netbox/wireless/graphql/schema.py | 6 ++ netbox/wireless/graphql/types.py | 9 +++ netbox/wireless/migrations/0001_wireless.py | 25 ++++++- netbox/wireless/models.py | 49 ++++++++++++- netbox/wireless/tables.py | 23 +++++- netbox/wireless/urls.py | 11 +++ netbox/wireless/views.py | 73 +++++++++++++++++++ 19 files changed, 429 insertions(+), 16 deletions(-) create mode 100644 netbox/templates/wireless/wirelesslangroup.html diff --git a/netbox/netbox/navigation_menu.py b/netbox/netbox/navigation_menu.py index b3e11f6ce..7f64a2df8 100644 --- a/netbox/netbox/navigation_menu.py +++ b/netbox/netbox/navigation_menu.py @@ -168,6 +168,7 @@ CONNECTIONS_MENU = Menu( label='Connections', items=( get_model_item('dcim', 'cable', 'Cables', actions=['import']), + get_model_item('wireless', 'wirelesslink', 'Wirelesss Links', actions=['import']), MenuItem( link='dcim:interface_connections_list', link_text='Interface Connections', @@ -196,7 +197,7 @@ WIRELESS_MENU = Menu( label='Wireless', items=( get_model_item('wireless', 'wirelesslan', 'Wireless LANs'), - get_model_item('wireless', 'wirelesslink', 'Wirelesss Links', actions=['import']), + get_model_item('wireless', 'wirelesslangroup', 'Wireless LAN Groups'), ), ), ), diff --git a/netbox/templates/wireless/wirelesslan.html b/netbox/templates/wireless/wirelesslan.html index f8fabf558..f2133cd54 100644 --- a/netbox/templates/wireless/wirelesslan.html +++ b/netbox/templates/wireless/wirelesslan.html @@ -13,6 +13,16 @@ + + + + diff --git a/netbox/templates/wireless/wirelesslangroup.html b/netbox/templates/wireless/wirelesslangroup.html new file mode 100644 index 000000000..170f72eff --- /dev/null +++ b/netbox/templates/wireless/wirelesslangroup.html @@ -0,0 +1,72 @@ +{% extends 'generic/object.html' %} +{% load helpers %} +{% load plugins %} + +{% block breadcrumbs %} + {{ block.super }} + {% for group in object.get_ancestors %} + + {% endfor %} +{% endblock %} + +{% block content %} +
+
+
+
Wireless LAN Group
+
+
Status{{ object.get_status_display }}
SSID {{ object.ssid|placeholder }}SSID {{ object.ssid }}
Group + {% if object.group %} + {{ object.group }} + {% else %} + None + {% endif %} +
Description {{ object.description|placeholder }}
+ + + + + + + + + + + + + + + + +
Name{{ object.name }}
Description{{ object.description|placeholder }}
Parent + {% if object.parent %} + {{ object.parent }} + {% else %} + + {% endif %} +
Wireless LANs + {{ wirelesslans_table.rows|length }} +
+
+
+ {% plugin_left_page object %} +
+
+ {% include 'inc/custom_fields_panel.html' %} + {% plugin_right_page object %} +
+ +
+
+
+
Wireless LANs
+
+ {% include 'inc/table.html' with table=wirelesslans_table %} +
+ {% if perms.wireless.add_wirelesslan %} + + {% endif %} +
+ {% include 'inc/paginator.html' with paginator=wirelesslans_table.paginator page=wirelesslans_table.page %} + {% plugin_full_width_page object %} +
+
+{% endblock %} diff --git a/netbox/wireless/api/nested_serializers.py b/netbox/wireless/api/nested_serializers.py index 5a8cf6671..e9a840bfc 100644 --- a/netbox/wireless/api/nested_serializers.py +++ b/netbox/wireless/api/nested_serializers.py @@ -5,10 +5,21 @@ from wireless.models import * __all__ = ( 'NestedWirelessLANSerializer', + 'NestedWirelessLANGroupSerializer', 'NestedWirelessLinkSerializer', ) +class NestedWirelessLANGroupSerializer(WritableNestedSerializer): + url = serializers.HyperlinkedIdentityField(view_name='wireless-api:wirelesslangroup-detail') + wirelesslan_count = serializers.IntegerField(read_only=True) + _depth = serializers.IntegerField(source='level', read_only=True) + + class Meta: + model = WirelessLANGroup + fields = ['id', 'url', 'display', 'name', 'slug', 'wirelesslan_count', '_depth'] + + class NestedWirelessLANSerializer(WritableNestedSerializer): url = serializers.HyperlinkedIdentityField(view_name='wireless-api:wirelesslan-detail') diff --git a/netbox/wireless/api/serializers.py b/netbox/wireless/api/serializers.py index 5a7330129..24395b77c 100644 --- a/netbox/wireless/api/serializers.py +++ b/netbox/wireless/api/serializers.py @@ -4,7 +4,7 @@ from dcim.choices import LinkStatusChoices from dcim.api.serializers import NestedInterfaceSerializer from ipam.api.serializers import NestedVLANSerializer from netbox.api import ChoiceField -from netbox.api.serializers import PrimaryModelSerializer +from netbox.api.serializers import NestedGroupModelSerializer, PrimaryModelSerializer from wireless.models import * from .nested_serializers import * @@ -14,6 +14,19 @@ __all__ = ( ) +class WirelessLANGroupSerializer(NestedGroupModelSerializer): + url = serializers.HyperlinkedIdentityField(view_name='wireless-api:wirelesslangroup-detail') + parent = NestedWirelessLANGroupSerializer(required=False, allow_null=True) + wirelesslan_count = serializers.IntegerField(read_only=True) + + class Meta: + model = WirelessLANGroup + fields = [ + 'id', 'url', 'display', 'name', 'slug', 'parent', 'description', 'custom_fields', 'created', 'last_updated', + 'wirelesslan_count', '_depth', + ] + + class WirelessLANSerializer(PrimaryModelSerializer): url = serializers.HyperlinkedIdentityField(view_name='wireless-api:wirelesslan-detail') vlan = NestedVLANSerializer(required=False, allow_null=True) diff --git a/netbox/wireless/api/urls.py b/netbox/wireless/api/urls.py index 431bb05f8..54f764db6 100644 --- a/netbox/wireless/api/urls.py +++ b/netbox/wireless/api/urls.py @@ -5,6 +5,7 @@ from . import views router = OrderedDefaultRouter() router.APIRootView = views.WirelessRootView +router.register('wireless-lan-groupss', views.WirelessLANGroupViewSet) router.register('wireless-lans', views.WirelessLANViewSet) router.register('wireless-links', views.WirelessLinkViewSet) diff --git a/netbox/wireless/api/views.py b/netbox/wireless/api/views.py index aa361a7f7..734f6940f 100644 --- a/netbox/wireless/api/views.py +++ b/netbox/wireless/api/views.py @@ -14,6 +14,18 @@ class WirelessRootView(APIRootView): return 'Wireless' +class WirelessLANGroupViewSet(CustomFieldModelViewSet): + queryset = WirelessLANGroup.objects.add_related_count( + WirelessLANGroup.objects.all(), + WirelessLAN, + 'group', + 'wirelesslan_count', + cumulative=True + ) + serializer_class = serializers.WirelessLANGroupSerializer + filterset_class = filtersets.WirelessLANGroupFilterSet + + class WirelessLANViewSet(CustomFieldModelViewSet): queryset = WirelessLAN.objects.prefetch_related('vlan', 'tags') serializer_class = serializers.WirelessLANSerializer diff --git a/netbox/wireless/filtersets.py b/netbox/wireless/filtersets.py index f765172dd..ac503e474 100644 --- a/netbox/wireless/filtersets.py +++ b/netbox/wireless/filtersets.py @@ -3,15 +3,31 @@ from django.db.models import Q from dcim.choices import LinkStatusChoices from extras.filters import TagFilter -from netbox.filtersets import PrimaryModelFilterSet +from netbox.filtersets import OrganizationalModelFilterSet, PrimaryModelFilterSet from .models import * __all__ = ( 'WirelessLANFilterSet', + 'WirelessLANGroupFilterSet', 'WirelessLinkFilterSet', ) +class WirelessLANGroupFilterSet(OrganizationalModelFilterSet): + parent_id = django_filters.ModelMultipleChoiceFilter( + queryset=WirelessLANGroup.objects.all() + ) + parent = django_filters.ModelMultipleChoiceFilter( + field_name='parent__slug', + queryset=WirelessLANGroup.objects.all(), + to_field_name='slug' + ) + + class Meta: + model = WirelessLANGroup + fields = ['id', 'name', 'slug', 'description'] + + class WirelessLANFilterSet(PrimaryModelFilterSet): q = django_filters.CharFilter( method='search', diff --git a/netbox/wireless/forms/bulk_edit.py b/netbox/wireless/forms/bulk_edit.py index 72af81f56..c0d5a925e 100644 --- a/netbox/wireless/forms/bulk_edit.py +++ b/netbox/wireless/forms/bulk_edit.py @@ -9,15 +9,38 @@ from wireless.models import * __all__ = ( 'WirelessLANBulkEditForm', + 'WirelessLANGroupBulkEditForm', 'WirelessLinkBulkEditForm', ) +class WirelessLANGroupBulkEditForm(BootstrapMixin, CustomFieldModelBulkEditForm): + pk = forms.ModelMultipleChoiceField( + queryset=WirelessLANGroup.objects.all(), + widget=forms.MultipleHiddenInput + ) + parent = DynamicModelChoiceField( + queryset=WirelessLANGroup.objects.all(), + required=False + ) + description = forms.CharField( + max_length=200, + required=False + ) + + class Meta: + nullable_fields = ['parent', 'description'] + + class WirelessLANBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldModelBulkEditForm): pk = forms.ModelMultipleChoiceField( queryset=WirelessLAN.objects.all(), widget=forms.MultipleHiddenInput ) + group = DynamicModelChoiceField( + queryset=WirelessLANGroup.objects.all(), + required=False + ) vlan = DynamicModelChoiceField( queryset=VLAN.objects.all(), required=False, @@ -31,7 +54,7 @@ class WirelessLANBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldMode ) class Meta: - nullable_fields = ['vlan', 'ssid', 'description'] + nullable_fields = ['ssid', 'group', 'vlan', 'description'] class WirelessLinkBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldModelBulkEditForm): diff --git a/netbox/wireless/forms/bulk_import.py b/netbox/wireless/forms/bulk_import.py index 763305c38..6b22728f6 100644 --- a/netbox/wireless/forms/bulk_import.py +++ b/netbox/wireless/forms/bulk_import.py @@ -2,16 +2,37 @@ from dcim.choices import LinkStatusChoices from dcim.models import Interface from extras.forms import CustomFieldModelCSVForm from ipam.models import VLAN -from utilities.forms import CSVChoiceField, CSVModelChoiceField +from utilities.forms import CSVChoiceField, CSVModelChoiceField, SlugField from wireless.models import * __all__ = ( 'WirelessLANCSVForm', + 'WirelessLANGroupCSVForm', 'WirelessLinkCSVForm', ) +class WirelessLANGroupCSVForm(CustomFieldModelCSVForm): + parent = CSVModelChoiceField( + queryset=WirelessLANGroup.objects.all(), + required=False, + to_field_name='name', + help_text='Parent group' + ) + slug = SlugField() + + class Meta: + model = WirelessLANGroup + fields = ('name', 'slug', 'parent', 'description') + + class WirelessLANCSVForm(CustomFieldModelCSVForm): + group = CSVModelChoiceField( + queryset=WirelessLANGroup.objects.all(), + required=False, + to_field_name='name', + help_text='Assigned group' + ) vlan = CSVModelChoiceField( queryset=VLAN.objects.all(), to_field_name='name', @@ -20,7 +41,7 @@ class WirelessLANCSVForm(CustomFieldModelCSVForm): class Meta: model = WirelessLAN - fields = ('ssid', 'description', 'vlan') + fields = ('ssid', 'group', 'description', 'vlan') class WirelessLinkCSVForm(CustomFieldModelCSVForm): diff --git a/netbox/wireless/forms/filtersets.py b/netbox/wireless/forms/filtersets.py index 6da3cd716..13aae99a5 100644 --- a/netbox/wireless/forms/filtersets.py +++ b/netbox/wireless/forms/filtersets.py @@ -3,19 +3,38 @@ from django.utils.translation import gettext as _ from dcim.choices import LinkStatusChoices from extras.forms import CustomFieldModelFilterForm -from utilities.forms import add_blank_choice, BootstrapMixin, StaticSelect, TagFilterField +from utilities.forms import ( + add_blank_choice, BootstrapMixin, DynamicModelMultipleChoiceField, StaticSelect, TagFilterField, +) from wireless.models import * __all__ = ( 'WirelessLANFilterForm', + 'WirelessLANGroupFilterForm', 'WirelessLinkFilterForm', ) +class WirelessLANGroupFilterForm(BootstrapMixin, CustomFieldModelFilterForm): + model = WirelessLANGroup + q = forms.CharField( + required=False, + widget=forms.TextInput(attrs={'placeholder': _('All Fields')}), + label=_('Search') + ) + parent_id = DynamicModelMultipleChoiceField( + queryset=WirelessLANGroup.objects.all(), + required=False, + label=_('Parent group'), + fetch_trigger='open' + ) + + class WirelessLANFilterForm(BootstrapMixin, CustomFieldModelFilterForm): model = WirelessLAN field_groups = [ - ['q', 'tag'], + ('q', 'tag'), + ('group_id',), ] q = forms.CharField( required=False, @@ -26,6 +45,13 @@ class WirelessLANFilterForm(BootstrapMixin, CustomFieldModelFilterForm): required=False, label='SSID' ) + group_id = DynamicModelMultipleChoiceField( + queryset=WirelessLANGroup.objects.all(), + required=False, + null_option='None', + label=_('Group'), + fetch_trigger='open' + ) tag = TagFilterField(model) diff --git a/netbox/wireless/forms/models.py b/netbox/wireless/forms/models.py index 174eb5983..ca20b6ea8 100644 --- a/netbox/wireless/forms/models.py +++ b/netbox/wireless/forms/models.py @@ -2,16 +2,37 @@ from dcim.models import Interface from extras.forms import CustomFieldModelForm from extras.models import Tag from ipam.models import VLAN -from utilities.forms import BootstrapMixin, DynamicModelChoiceField, DynamicModelMultipleChoiceField, StaticSelect +from utilities.forms import ( + BootstrapMixin, DynamicModelChoiceField, DynamicModelMultipleChoiceField, SlugField, StaticSelect, +) from wireless.models import * __all__ = ( 'WirelessLANForm', + 'WirelessLANGroupForm', 'WirelessLinkForm', ) +class WirelessLANGroupForm(BootstrapMixin, CustomFieldModelForm): + parent = DynamicModelChoiceField( + queryset=WirelessLANGroup.objects.all(), + required=False + ) + slug = SlugField() + + class Meta: + model = WirelessLANGroup + fields = [ + 'parent', 'name', 'slug', 'description', + ] + + class WirelessLANForm(BootstrapMixin, CustomFieldModelForm): + group = DynamicModelChoiceField( + queryset=WirelessLANGroup.objects.all(), + required=False + ) vlan = DynamicModelChoiceField( queryset=VLAN.objects.all(), required=False @@ -24,10 +45,10 @@ class WirelessLANForm(BootstrapMixin, CustomFieldModelForm): class Meta: model = WirelessLAN fields = [ - 'ssid', 'description', 'vlan', 'tags', + 'ssid', 'group', 'description', 'vlan', 'tags', ] fieldsets = ( - ('Wireless LAN', ('ssid', 'description', 'tags')), + ('Wireless LAN', ('ssid', 'group', 'description', 'tags')), ('VLAN', ('vlan',)), ) diff --git a/netbox/wireless/graphql/schema.py b/netbox/wireless/graphql/schema.py index 8297f4545..05fc57c4d 100644 --- a/netbox/wireless/graphql/schema.py +++ b/netbox/wireless/graphql/schema.py @@ -7,3 +7,9 @@ from .types import * class WirelessQuery(graphene.ObjectType): wirelesslan = ObjectField(WirelessLANType) wirelesslan_list = ObjectListField(WirelessLANType) + + wirelesslangroup = ObjectField(WirelessLANGroupType) + wirelesslangroup_list = ObjectListField(WirelessLANGroupType) + + wirelesslink = ObjectField(WirelessLinkType) + wirelesslink_list = ObjectListField(WirelessLinkType) diff --git a/netbox/wireless/graphql/types.py b/netbox/wireless/graphql/types.py index 0afd8e69a..4697cc44b 100644 --- a/netbox/wireless/graphql/types.py +++ b/netbox/wireless/graphql/types.py @@ -3,10 +3,19 @@ from netbox.graphql.types import ObjectType __all__ = ( 'WirelessLANType', + 'WirelessLANGroupType', 'WirelessLinkType', ) +class WirelessLANGroupType(ObjectType): + + class Meta: + model = models.WirelessLANGroup + fields = '__all__' + filterset_class = filtersets.WirelessLANGroupFilterSet + + class WirelessLANType(ObjectType): class Meta: diff --git a/netbox/wireless/migrations/0001_wireless.py b/netbox/wireless/migrations/0001_wireless.py index 8eb042d7d..068f4d64a 100644 --- a/netbox/wireless/migrations/0001_wireless.py +++ b/netbox/wireless/migrations/0001_wireless.py @@ -1,8 +1,7 @@ -# Generated by Django 3.2.8 on 2021-10-13 13:44 - import django.core.serializers.json from django.db import migrations, models import django.db.models.deletion +import mptt.fields import taggit.managers @@ -17,6 +16,27 @@ class Migration(migrations.Migration): ] operations = [ + migrations.CreateModel( + name='WirelessLANGroup', + fields=[ + ('created', models.DateField(auto_now_add=True, null=True)), + ('last_updated', models.DateTimeField(auto_now=True, null=True)), + ('custom_field_data', models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder)), + ('id', models.BigAutoField(primary_key=True, serialize=False)), + ('name', models.CharField(max_length=100, unique=True)), + ('slug', models.SlugField(max_length=100, unique=True)), + ('description', models.CharField(blank=True, max_length=200)), + ('lft', models.PositiveIntegerField(editable=False)), + ('rght', models.PositiveIntegerField(editable=False)), + ('tree_id', models.PositiveIntegerField(db_index=True, editable=False)), + ('level', models.PositiveIntegerField(editable=False)), + ('parent', mptt.fields.TreeForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='children', to='wireless.wirelesslangroup')), + ], + options={ + 'ordering': ('name', 'pk'), + 'unique_together': {('parent', 'name')}, + }, + ), migrations.CreateModel( name='WirelessLAN', fields=[ @@ -25,6 +45,7 @@ class Migration(migrations.Migration): ('custom_field_data', models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder)), ('id', models.BigAutoField(primary_key=True, serialize=False)), ('ssid', models.CharField(max_length=32)), + ('group', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='wireless_lans', to='wireless.wirelesslangroup')), ('description', models.CharField(blank=True, max_length=200)), ('tags', taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag')), ('vlan', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='ipam.vlan')), diff --git a/netbox/wireless/models.py b/netbox/wireless/models.py index d02358f1c..12c4e55aa 100644 --- a/netbox/wireless/models.py +++ b/netbox/wireless/models.py @@ -1,20 +1,58 @@ from django.core.exceptions import ValidationError from django.db import models from django.urls import reverse +from mptt.models import MPTTModel, TreeForeignKey from dcim.choices import LinkStatusChoices from dcim.constants import WIRELESS_IFACE_TYPES from extras.utils import extras_features -from netbox.models import BigIDModel, PrimaryModel +from netbox.models import BigIDModel, NestedGroupModel, PrimaryModel from utilities.querysets import RestrictedQuerySet from .constants import SSID_MAX_LENGTH __all__ = ( 'WirelessLAN', + 'WirelessLANGroup', 'WirelessLink', ) +@extras_features('custom_fields', 'custom_links', 'export_templates', 'webhooks') +class WirelessLANGroup(NestedGroupModel): + """ + A nested grouping of WirelessLANs + """ + name = models.CharField( + max_length=100, + unique=True + ) + slug = models.SlugField( + max_length=100, + unique=True + ) + parent = TreeForeignKey( + to='self', + on_delete=models.CASCADE, + related_name='children', + blank=True, + null=True, + db_index=True + ) + description = models.CharField( + max_length=200, + blank=True + ) + + class Meta: + ordering = ('name', 'pk') + unique_together = ( + ('parent', 'name') + ) + + def get_absolute_url(self): + return reverse('wireless:wirelesslangroup', args=[self.pk]) + + @extras_features('custom_fields', 'custom_links', 'export_templates', 'tags', 'webhooks') class WirelessLAN(PrimaryModel): """ @@ -24,6 +62,13 @@ class WirelessLAN(PrimaryModel): max_length=SSID_MAX_LENGTH, verbose_name='SSID' ) + group = models.ForeignKey( + to='wireless.WirelessLANGroup', + on_delete=models.SET_NULL, + related_name='wireless_lans', + blank=True, + null=True + ) vlan = models.ForeignKey( to='ipam.VLAN', on_delete=models.PROTECT, @@ -100,7 +145,7 @@ class WirelessLink(PrimaryModel): objects = RestrictedQuerySet.as_manager() - clone_fields = ('ssid', 'status') + clone_fields = ('ssid', 'group', 'status') class Meta: ordering = ['pk'] diff --git a/netbox/wireless/tables.py b/netbox/wireless/tables.py index 9b0ef7291..58d77b56f 100644 --- a/netbox/wireless/tables.py +++ b/netbox/wireless/tables.py @@ -1,14 +1,35 @@ import django_tables2 as tables +from utilities.tables import ( + BaseTable, ButtonsColumn, ChoiceFieldColumn, LinkedCountColumn, MPTTColumn, TagColumn, ToggleColumn, +) from .models import * -from utilities.tables import BaseTable, ChoiceFieldColumn, TagColumn, ToggleColumn __all__ = ( 'WirelessLANTable', + 'WirelessLANGroupTable', 'WirelessLinkTable', ) +class WirelessLANGroupTable(BaseTable): + pk = ToggleColumn() + name = MPTTColumn( + linkify=True + ) + wirelesslan_count = LinkedCountColumn( + viewname='wireless:wirelesslan_list', + url_params={'group_id': 'pk'}, + verbose_name='Wireless LANs' + ) + actions = ButtonsColumn(WirelessLANGroup) + + class Meta(BaseTable.Meta): + model = WirelessLANGroup + fields = ('pk', 'name', 'wirelesslan_count', 'description', 'slug', 'actions') + default_columns = ('pk', 'name', 'wirelesslan_count', 'description', 'actions') + + class WirelessLANTable(BaseTable): pk = ToggleColumn() ssid = tables.Column( diff --git a/netbox/wireless/urls.py b/netbox/wireless/urls.py index 21d704e6a..684f55ad5 100644 --- a/netbox/wireless/urls.py +++ b/netbox/wireless/urls.py @@ -7,6 +7,17 @@ from .models import * app_name = 'wireless' urlpatterns = ( + # Wireless LAN groups + path('wireless-lan-groups/', views.WirelessLANGroupListView.as_view(), name='wirelesslangroup_list'), + path('wireless-lan-groups/add/', views.WirelessLANGroupEditView.as_view(), name='wirelesslangroup_add'), + path('wireless-lan-groups/import/', views.WirelessLANGroupBulkImportView.as_view(), name='wirelesslangroup_import'), + path('wireless-lan-groups/edit/', views.WirelessLANGroupBulkEditView.as_view(), name='wirelesslangroup_bulk_edit'), + path('wireless-lan-groups/delete/', views.WirelessLANGroupBulkDeleteView.as_view(), name='wirelesslangroup_bulk_delete'), + path('wireless-lan-groups//', views.WirelessLANGroupView.as_view(), name='wirelesslangroup'), + path('wireless-lan-groups//edit/', views.WirelessLANGroupEditView.as_view(), name='wirelesslangroup_edit'), + path('wireless-lan-groups//delete/', views.WirelessLANGroupDeleteView.as_view(), name='wirelesslangroup_delete'), + path('wireless-lan-groups//changelog/', ObjectChangeLogView.as_view(), name='wirelesslangroup_changelog', kwargs={'model': WirelessLANGroup}), + # Wireless LANs path('wireless-lans/', views.WirelessLANListView.as_view(), name='wirelesslan_list'), path('wireless-lans/add/', views.WirelessLANEditView.as_view(), name='wirelesslan_add'), diff --git a/netbox/wireless/views.py b/netbox/wireless/views.py index 041ffbd42..6405d46df 100644 --- a/netbox/wireless/views.py +++ b/netbox/wireless/views.py @@ -1,8 +1,81 @@ from netbox.views import generic +from utilities.tables import paginate_table from . import filtersets, forms, tables from .models import * +# +# Wireless LAN groups +# + +class WirelessLANGroupListView(generic.ObjectListView): + queryset = WirelessLANGroup.objects.add_related_count( + WirelessLANGroup.objects.all(), + WirelessLAN, + 'group', + 'wirelesslan_count', + cumulative=True + ) + filterset = filtersets.WirelessLANGroupFilterSet + filterset_form = forms.WirelessLANGroupFilterForm + table = tables.WirelessLANGroupTable + + +class WirelessLANGroupView(generic.ObjectView): + queryset = WirelessLANGroup.objects.all() + + def get_extra_context(self, request, instance): + wirelesslans = WirelessLAN.objects.restrict(request.user, 'view').filter( + group=instance + ) + wirelesslans_table = tables.WirelessLANTable(wirelesslans, exclude=('group',)) + paginate_table(wirelesslans_table, request) + + return { + 'wirelesslans_table': wirelesslans_table, + } + + +class WirelessLANGroupEditView(generic.ObjectEditView): + queryset = WirelessLANGroup.objects.all() + model_form = forms.WirelessLANGroupForm + + +class WirelessLANGroupDeleteView(generic.ObjectDeleteView): + queryset = WirelessLANGroup.objects.all() + + +class WirelessLANGroupBulkImportView(generic.BulkImportView): + queryset = WirelessLANGroup.objects.all() + model_form = forms.WirelessLANGroupCSVForm + table = tables.WirelessLANGroupTable + + +class WirelessLANGroupBulkEditView(generic.BulkEditView): + queryset = WirelessLANGroup.objects.add_related_count( + WirelessLANGroup.objects.all(), + WirelessLAN, + 'group', + 'wirelesslan_count', + cumulative=True + ) + filterset = filtersets.WirelessLANGroupFilterSet + table = tables.WirelessLANGroupTable + form = forms.WirelessLANGroupBulkEditForm + + +class WirelessLANGroupBulkDeleteView(generic.BulkDeleteView): + queryset = WirelessLANGroup.objects.add_related_count( + WirelessLANGroup.objects.all(), + WirelessLAN, + 'group', + 'wirelesslan_count', + cumulative=True + ) + filterset = filtersets.WirelessLANGroupFilterSet + table = tables.WirelessLANGroupTable + + # # Wireless LANs # From 438b4b47581f2b47a19243f3e848aabe52830b38 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Wed, 13 Oct 2021 20:16:36 -0400 Subject: [PATCH 017/289] Add rf_role to Interface --- netbox/dcim/api/serializers.py | 3 ++- netbox/dcim/choices.py | 10 ++++++++ netbox/dcim/filtersets.py | 4 ++-- netbox/dcim/forms/bulk_edit.py | 2 +- netbox/dcim/forms/bulk_import.py | 7 +++++- netbox/dcim/forms/filtersets.py | 14 ++++++++--- netbox/dcim/forms/models.py | 5 ++-- netbox/dcim/forms/object_create.py | 10 ++++++-- netbox/dcim/graphql/types.py | 3 +++ netbox/dcim/migrations/0136_wireless.py | 7 ++++-- netbox/dcim/models/device_components.py | 12 ++++++++-- netbox/dcim/tables/devices.py | 9 +++---- netbox/templates/dcim/interface.html | 29 +++++++++++++++-------- netbox/templates/dcim/interface_edit.html | 1 + 14 files changed, 86 insertions(+), 30 deletions(-) diff --git a/netbox/dcim/api/serializers.py b/netbox/dcim/api/serializers.py index 03d14a160..af1b6eeb0 100644 --- a/netbox/dcim/api/serializers.py +++ b/netbox/dcim/api/serializers.py @@ -632,6 +632,7 @@ class InterfaceSerializer(PrimaryModelSerializer, LinkTerminationSerializer, Con parent = NestedInterfaceSerializer(required=False, allow_null=True) lag = NestedInterfaceSerializer(required=False, allow_null=True) mode = ChoiceField(choices=InterfaceModeChoices, allow_blank=True, required=False) + rf_role = ChoiceField(choices=WirelessRoleChoices, required=False, allow_null=True) rf_channel = ChoiceField(choices=WirelessChannelChoices, required=False) rf_channel_width = ChoiceField(choices=WirelessChannelWidthChoices, required=False, allow_null=True) untagged_vlan = NestedVLANSerializer(required=False, allow_null=True) @@ -648,7 +649,7 @@ class InterfaceSerializer(PrimaryModelSerializer, LinkTerminationSerializer, Con model = Interface fields = [ 'id', 'url', 'display', 'device', 'name', 'label', 'type', 'enabled', 'parent', 'lag', 'mtu', 'mac_address', - 'wwn', 'mgmt_only', 'description', 'mode', 'rf_channel', 'rf_channel_width', 'untagged_vlan', + 'wwn', 'mgmt_only', 'description', 'mode', 'rf_role', 'rf_channel', 'rf_channel_width', 'untagged_vlan', 'tagged_vlans', 'mark_connected', 'cable', 'link_peer', 'link_peer_type', 'connected_endpoint', 'connected_endpoint_type', 'connected_endpoint_reachable', 'tags', 'custom_fields', 'created', 'last_updated', 'count_ipaddresses', '_occupied', diff --git a/netbox/dcim/choices.py b/netbox/dcim/choices.py index d58d5466d..b0ebf7cf4 100644 --- a/netbox/dcim/choices.py +++ b/netbox/dcim/choices.py @@ -1139,6 +1139,16 @@ class CableLengthUnitChoices(ChoiceSet): # Wireless # +class WirelessRoleChoices(ChoiceSet): + ROLE_AP = 'ap' + ROLE_STATION = 'station' + + CHOICES = ( + (ROLE_AP, 'Access point'), + (ROLE_STATION, 'Station'), + ) + + class WirelessChannelChoices(ChoiceSet): CHANNEL_AUTO = 'auto' diff --git a/netbox/dcim/filtersets.py b/netbox/dcim/filtersets.py index f778fd083..ab4336dbf 100644 --- a/netbox/dcim/filtersets.py +++ b/netbox/dcim/filtersets.py @@ -991,8 +991,8 @@ class InterfaceFilterSet(PrimaryModelFilterSet, DeviceComponentFilterSet, CableT class Meta: model = Interface fields = [ - 'id', 'name', 'label', 'type', 'enabled', 'mtu', 'mgmt_only', 'mode', 'rf_channel', 'rf_channel_width', - 'description', + 'id', 'name', 'label', 'type', 'enabled', 'mtu', 'mgmt_only', 'mode', 'rf_role', 'rf_channel', + 'rf_channel_width', 'description', ] def filter_device(self, queryset, name, value): diff --git a/netbox/dcim/forms/bulk_edit.py b/netbox/dcim/forms/bulk_edit.py index f710e7d8c..382a0570e 100644 --- a/netbox/dcim/forms/bulk_edit.py +++ b/netbox/dcim/forms/bulk_edit.py @@ -926,7 +926,7 @@ class PowerOutletBulkEditForm( class InterfaceBulkEditForm( form_from_model(Interface, [ 'label', 'type', 'parent', 'lag', 'mac_address', 'wwn', 'mtu', 'mgmt_only', 'mark_connected', 'description', - 'mode', 'rf_channel', 'rf_channel_width', + 'mode', 'rf_role', 'rf_channel', 'rf_channel_width', ]), BootstrapMixin, AddRemoveTagsForm, diff --git a/netbox/dcim/forms/bulk_import.py b/netbox/dcim/forms/bulk_import.py index 95b4dd136..675e850ed 100644 --- a/netbox/dcim/forms/bulk_import.py +++ b/netbox/dcim/forms/bulk_import.py @@ -579,12 +579,17 @@ class InterfaceCSVForm(CustomFieldModelCSVForm): required=False, help_text='IEEE 802.1Q operational mode (for L2 interfaces)' ) + rf_role = CSVChoiceField( + choices=WirelessRoleChoices, + required=False, + help_text='Wireless role (AP/station)' + ) class Meta: model = Interface fields = ( 'device', 'name', 'label', 'parent', 'lag', 'type', 'enabled', 'mark_connected', 'mac_address', 'wwn', - 'mtu', 'mgmt_only', 'description', 'mode', 'rf_channel', 'rf_channel_width', + 'mtu', 'mgmt_only', 'description', 'mode', 'rf_role', 'rf_channel', 'rf_channel_width', ) def __init__(self, *args, **kwargs): diff --git a/netbox/dcim/forms/filtersets.py b/netbox/dcim/forms/filtersets.py index 169b93028..a6f25ae00 100644 --- a/netbox/dcim/forms/filtersets.py +++ b/netbox/dcim/forms/filtersets.py @@ -963,7 +963,7 @@ class InterfaceFilterForm(DeviceComponentFilterForm): field_groups = [ ['q', 'tag'], ['name', 'label', 'type', 'enabled', 'mgmt_only', 'mac_address', 'wwn'], - ['rf_channel', 'rf_channel_width'], + ['rf_role', 'rf_channel', 'rf_channel_width'], ['region_id', 'site_group_id', 'site_id', 'location_id', 'device_id'], ] type = forms.MultipleChoiceField( @@ -991,15 +991,23 @@ class InterfaceFilterForm(DeviceComponentFilterForm): required=False, label='WWN' ) + rf_role = forms.MultipleChoiceField( + choices=WirelessRoleChoices, + required=False, + widget=StaticSelectMultiple(), + label='Wireless role' + ) rf_channel = forms.MultipleChoiceField( choices=WirelessChannelChoices, required=False, - widget=StaticSelectMultiple() + widget=StaticSelectMultiple(), + label='Wireless channel' ) rf_channel_width = forms.MultipleChoiceField( choices=WirelessChannelWidthChoices, required=False, - widget=StaticSelectMultiple() + widget=StaticSelectMultiple(), + label='Channel width' ) tag = TagFilterField(model) diff --git a/netbox/dcim/forms/models.py b/netbox/dcim/forms/models.py index cd697e9f3..4cfa40fe2 100644 --- a/netbox/dcim/forms/models.py +++ b/netbox/dcim/forms/models.py @@ -1104,13 +1104,14 @@ class InterfaceForm(BootstrapMixin, InterfaceCommonForm, CustomFieldModelForm): model = Interface fields = [ 'device', 'name', 'label', 'type', 'enabled', 'parent', 'lag', 'mac_address', 'wwn', 'mtu', 'mgmt_only', - 'mark_connected', 'description', 'mode', 'rf_channel', 'rf_channel_width', 'wireless_lans', 'untagged_vlan', - 'tagged_vlans', 'tags', + 'mark_connected', 'description', 'mode', 'rf_role', 'rf_channel', 'rf_channel_width', 'wireless_lans', + 'untagged_vlan', 'tagged_vlans', 'tags', ] widgets = { 'device': forms.HiddenInput(), 'type': StaticSelect(), 'mode': StaticSelect(), + 'rf_role': StaticSelect(), 'rf_channel': StaticSelect(), 'rf_channel_width': StaticSelect(), } diff --git a/netbox/dcim/forms/object_create.py b/netbox/dcim/forms/object_create.py index db28412e6..3998dcbc1 100644 --- a/netbox/dcim/forms/object_create.py +++ b/netbox/dcim/forms/object_create.py @@ -467,6 +467,12 @@ class InterfaceCreateForm(ComponentCreateForm, InterfaceCommonForm): required=False, widget=StaticSelect() ) + rf_role = forms.ChoiceField( + choices=add_blank_choice(WirelessRoleChoices), + required=False, + widget=StaticSelect(), + label='Wireless role' + ) rf_channel = forms.ChoiceField( choices=add_blank_choice(WirelessChannelChoices), required=False, @@ -489,8 +495,8 @@ class InterfaceCreateForm(ComponentCreateForm, InterfaceCommonForm): ) field_order = ( 'device', 'name_pattern', 'label_pattern', 'type', 'enabled', 'parent', 'lag', 'mtu', 'mac_address', - 'description', 'mgmt_only', 'mark_connected', 'rf_channel', 'rf_channel_width', 'mode' 'untagged_vlan', - 'tagged_vlans', 'tags' + 'description', 'mgmt_only', 'mark_connected', 'rf_role', 'rf_channel', 'rf_channel_width', 'mode', + 'untagged_vlan', 'tagged_vlans', 'tags' ) def __init__(self, *args, **kwargs): diff --git a/netbox/dcim/graphql/types.py b/netbox/dcim/graphql/types.py index 55f1ba150..3d489973c 100644 --- a/netbox/dcim/graphql/types.py +++ b/netbox/dcim/graphql/types.py @@ -206,6 +206,9 @@ class InterfaceType(IPAddressesMixin, ComponentObjectType): def resolve_mode(self, info): return self.mode or None + def resolve_rf_role(self, info): + return self.rf_role or None + def resolve_rf_channel(self, info): return self.rf_channel or None diff --git a/netbox/dcim/migrations/0136_wireless.py b/netbox/dcim/migrations/0136_wireless.py index 3b33f7d3f..7a3ee9673 100644 --- a/netbox/dcim/migrations/0136_wireless.py +++ b/netbox/dcim/migrations/0136_wireless.py @@ -1,5 +1,3 @@ -# Generated by Django 3.2.8 on 2021-10-13 13:44 - from django.db import migrations, models @@ -10,6 +8,11 @@ class Migration(migrations.Migration): ] operations = [ + migrations.AddField( + model_name='interface', + name='rf_role', + field=models.CharField(blank=True, max_length=30), + ), migrations.AddField( model_name='interface', name='rf_channel', diff --git a/netbox/dcim/models/device_components.py b/netbox/dcim/models/device_components.py index f8649b419..74724baf8 100644 --- a/netbox/dcim/models/device_components.py +++ b/netbox/dcim/models/device_components.py @@ -524,6 +524,12 @@ class Interface(ComponentModel, BaseInterface, LinkTermination, PathEndpoint): verbose_name='WWN', help_text='64-bit World Wide Name' ) + rf_role = models.CharField( + max_length=30, + choices=WirelessRoleChoices, + blank=True, + verbose_name='Wireless role' + ) rf_channel = models.CharField( max_length=50, choices=WirelessChannelChoices, @@ -636,9 +642,11 @@ class Interface(ComponentModel, BaseInterface, LinkTermination, PathEndpoint): raise ValidationError({'lag': "A LAG interface cannot be its own parent."}) # RF channel attributes may be set only for wireless interfaces - if self.rf_channel and self.type not in WIRELESS_IFACE_TYPES: + if self.rf_role and not self.is_wireless: + raise ValidationError({'rf_role': "Wireless role may be set only on wireless interfaces."}) + if self.rf_channel and not self.is_wireless: raise ValidationError({'rf_channel': "Channel may be set only on wireless interfaces."}) - if self.rf_channel_width and self.type not in WIRELESS_IFACE_TYPES: + if self.rf_channel_width and not self.is_wireless: raise ValidationError({'rf_channel_width': "Channel width may be set only on wireless interfaces."}) # Validate untagged VLAN diff --git a/netbox/dcim/tables/devices.py b/netbox/dcim/tables/devices.py index a375a77cc..7f2ff1c71 100644 --- a/netbox/dcim/tables/devices.py +++ b/netbox/dcim/tables/devices.py @@ -496,8 +496,8 @@ class InterfaceTable(DeviceComponentTable, BaseInterfaceTable, PathEndpointTable model = Interface fields = ( 'pk', 'name', 'device', 'label', 'enabled', 'type', 'mgmt_only', 'mtu', 'mode', 'mac_address', 'wwn', - 'rf_channel', 'rf_channel_width', 'description', 'mark_connected', 'cable', 'cable_color', 'wireless_link', - 'link_peer', 'connection', 'tags', 'ip_addresses', 'untagged_vlan', 'tagged_vlans', + 'rf_role', 'rf_channel', 'rf_channel_width', 'description', 'mark_connected', 'cable', 'cable_color', + 'wireless_link', 'link_peer', 'connection', 'tags', 'ip_addresses', 'untagged_vlan', 'tagged_vlans', ) default_columns = ('pk', 'name', 'device', 'label', 'enabled', 'type', 'description') @@ -528,8 +528,9 @@ class DeviceInterfaceTable(InterfaceTable): model = Interface fields = ( 'pk', 'name', 'label', 'enabled', 'type', 'parent', 'lag', 'mgmt_only', 'mtu', 'mode', 'mac_address', 'wwn', - 'description', 'mark_connected', 'cable', 'cable_color', 'wireless_link', 'link_peer', 'connection', 'tags', - 'ip_addresses', 'untagged_vlan', 'tagged_vlans', 'actions', + 'rf_role', 'rf_channel', 'rf_channel_width', 'description', 'mark_connected', 'cable', 'cable_color', + 'wireless_link', 'link_peer', 'connection', 'tags', 'ip_addresses', 'untagged_vlan', 'tagged_vlans', + 'actions', ) order_by = ('name',) default_columns = ( diff --git a/netbox/templates/dcim/interface.html b/netbox/templates/dcim/interface.html index bf24a89ef..90c9497ef 100644 --- a/netbox/templates/dcim/interface.html +++ b/netbox/templates/dcim/interface.html @@ -39,16 +39,6 @@ Type {{ object.get_type_display }} - {% if object.is_wireless %} - - Channel - {{ object.get_rf_channel_display|placeholder }} - - - Channel Width - {{ object.get_rf_channel_width_display|placeholder }} - - {% endif %} Enabled @@ -274,6 +264,25 @@ {% endif %} {% if object.is_wireless %} +
+
Wireless
+
+ + + + + + + + + + + + + +
Role{{ object.get_rf_role_display|placeholder }}
Channel{{ object.get_rf_channel_display|placeholder }}
Channel Width{{ object.get_rf_channel_width_display|placeholder }}
+
+
Wireless LANs
diff --git a/netbox/templates/dcim/interface_edit.html b/netbox/templates/dcim/interface_edit.html index 51834f4e2..cb8d51828 100644 --- a/netbox/templates/dcim/interface_edit.html +++ b/netbox/templates/dcim/interface_edit.html @@ -34,6 +34,7 @@
Wireless
+ {% render_field form.rf_role %} {% render_field form.rf_channel %} {% render_field form.rf_channel_width %} {% render_field form.wireless_lans %} From 4c475c1b33018be900393a74082d381eb23d0429 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Wed, 13 Oct 2021 20:56:14 -0400 Subject: [PATCH 018/289] Extend wireless channel choices --- netbox/dcim/choices.py | 108 +++++++++++++++++++++++++++++------------ 1 file changed, 76 insertions(+), 32 deletions(-) diff --git a/netbox/dcim/choices.py b/netbox/dcim/choices.py index b0ebf7cf4..18537812c 100644 --- a/netbox/dcim/choices.py +++ b/netbox/dcim/choices.py @@ -1200,6 +1200,28 @@ class WirelessChannelChoices(ChoiceSet): CHANNEL_5G_124 = '5g-124' CHANNEL_5G_126 = '5g-126' CHANNEL_5G_128 = '5g-128' + CHANNEL_5G_132 = '5g-132' + CHANNEL_5G_134 = '5g-134' + CHANNEL_5G_136 = '5g-136' + CHANNEL_5G_138 = '5g-138' + CHANNEL_5G_140 = '5g-140' + CHANNEL_5G_142 = '5g-142' + CHANNEL_5G_144 = '5g-144' + CHANNEL_5G_149 = '5g-149' + CHANNEL_5G_151 = '5g-151' + CHANNEL_5G_153 = '5g-153' + CHANNEL_5G_155 = '5g-155' + CHANNEL_5G_157 = '5g-157' + CHANNEL_5G_159 = '5g-159' + CHANNEL_5G_161 = '5g-161' + CHANNEL_5G_163 = '5g-163' + CHANNEL_5G_165 = '5g-165' + CHANNEL_5G_167 = '5g-167' + CHANNEL_5G_169 = '5g-169' + CHANNEL_5G_171 = '5g-171' + CHANNEL_5G_173 = '5g-173' + CHANNEL_5G_175 = '5g-175' + CHANNEL_5G_177 = '5g-177' CHOICES = ( (CHANNEL_AUTO, 'Auto'), @@ -1224,38 +1246,60 @@ class WirelessChannelChoices(ChoiceSet): ( '5 GHz (802.11a/n/ac/ax)', ( - (CHANNEL_5G_32, '32 (5160 MHz)'), - (CHANNEL_5G_34, '34 (5170 MHz)'), - (CHANNEL_5G_36, '36 (5180 MHz)'), - (CHANNEL_5G_38, '38 (5190 MHz)'), - (CHANNEL_5G_40, '40 (5200 MHz)'), - (CHANNEL_5G_42, '42 (5210 MHz)'), - (CHANNEL_5G_44, '44 (5220 MHz)'), - (CHANNEL_5G_46, '46 (5230 MHz)'), - (CHANNEL_5G_48, '48 (5240 MHz)'), - (CHANNEL_5G_50, '50 (5250 MHz)'), - (CHANNEL_5G_52, '52 (5260 MHz)'), - (CHANNEL_5G_54, '54 (5270 MHz)'), - (CHANNEL_5G_56, '56 (5280 MHz)'), - (CHANNEL_5G_58, '58 (5290 MHz)'), - (CHANNEL_5G_60, '60 (5300 MHz)'), - (CHANNEL_5G_62, '62 (5310 MHz)'), - (CHANNEL_5G_64, '64 (5320 MHz)'), - (CHANNEL_5G_100, '100 (5500 MHz)'), - (CHANNEL_5G_102, '102 (5510 MHz)'), - (CHANNEL_5G_104, '104 (5520 MHz)'), - (CHANNEL_5G_106, '106 (5530 MHz)'), - (CHANNEL_5G_108, '108 (5540 MHz)'), - (CHANNEL_5G_110, '110 (5550 MHz)'), - (CHANNEL_5G_112, '112 (5560 MHz)'), - (CHANNEL_5G_114, '114 (5570 MHz)'), - (CHANNEL_5G_116, '116 (5580 MHz)'), - (CHANNEL_5G_118, '118 (5590 MHz)'), - (CHANNEL_5G_120, '120 (5600 MHz)'), - (CHANNEL_5G_122, '122 (5610 MHz)'), - (CHANNEL_5G_124, '124 (5620 MHz)'), - (CHANNEL_5G_126, '126 (5630 MHz)'), - (CHANNEL_5G_128, '128 (5640 MHz)'), + (CHANNEL_5G_32, '32 (5160/20 MHz)'), + (CHANNEL_5G_34, '34 (5170/40 MHz)'), + (CHANNEL_5G_36, '36 (5180/20 MHz)'), + (CHANNEL_5G_38, '38 (5190/40 MHz)'), + (CHANNEL_5G_40, '40 (5200/20 MHz)'), + (CHANNEL_5G_42, '42 (5210/80 MHz)'), + (CHANNEL_5G_44, '44 (5220/20 MHz)'), + (CHANNEL_5G_46, '46 (5230/40 MHz)'), + (CHANNEL_5G_48, '48 (5240/20 MHz)'), + (CHANNEL_5G_50, '50 (5250/160 MHz)'), + (CHANNEL_5G_52, '52 (5260/20 MHz)'), + (CHANNEL_5G_54, '54 (5270/40 MHz)'), + (CHANNEL_5G_56, '56 (5280/20 MHz)'), + (CHANNEL_5G_58, '58 (5290/80 MHz)'), + (CHANNEL_5G_60, '60 (5300/20 MHz)'), + (CHANNEL_5G_62, '62 (5310/40 MHz)'), + (CHANNEL_5G_64, '64 (5320/20 MHz)'), + (CHANNEL_5G_100, '100 (5500/20 MHz)'), + (CHANNEL_5G_102, '102 (5510/40 MHz)'), + (CHANNEL_5G_104, '104 (5520/20 MHz)'), + (CHANNEL_5G_106, '106 (5530/80 MHz)'), + (CHANNEL_5G_108, '108 (5540/20 MHz)'), + (CHANNEL_5G_110, '110 (5550/40 MHz)'), + (CHANNEL_5G_112, '112 (5560/20 MHz)'), + (CHANNEL_5G_114, '114 (5570/160 MHz)'), + (CHANNEL_5G_116, '116 (5580/20 MHz)'), + (CHANNEL_5G_118, '118 (5590/40 MHz)'), + (CHANNEL_5G_120, '120 (5600/20 MHz)'), + (CHANNEL_5G_122, '122 (5610/80 MHz)'), + (CHANNEL_5G_124, '124 (5620/20 MHz)'), + (CHANNEL_5G_126, '126 (5630/40 MHz)'), + (CHANNEL_5G_128, '128 (5640/20 MHz)'), + (CHANNEL_5G_132, '132 (5660/20 MHz)'), + (CHANNEL_5G_134, '134 (5670/40 MHz)'), + (CHANNEL_5G_136, '136 (5680/20 MHz)'), + (CHANNEL_5G_138, '138 (5690/80 MHz)'), + (CHANNEL_5G_140, '140 (5700/20 MHz)'), + (CHANNEL_5G_142, '142 (5710/40 MHz)'), + (CHANNEL_5G_144, '144 (5720/20 MHz)'), + (CHANNEL_5G_149, '149 (5745/20 MHz)'), + (CHANNEL_5G_151, '151 (5755/40 MHz)'), + (CHANNEL_5G_153, '153 (5765/20 MHz)'), + (CHANNEL_5G_155, '155 (5775/80 MHz)'), + (CHANNEL_5G_157, '157 (5785/20 MHz)'), + (CHANNEL_5G_159, '159 (5795/40 MHz)'), + (CHANNEL_5G_161, '161 (5805/20 MHz)'), + (CHANNEL_5G_163, '163 (5815/160 MHz)'), + (CHANNEL_5G_165, '165 (5825/20 MHz)'), + (CHANNEL_5G_167, '167 (5835/40 MHz)'), + (CHANNEL_5G_169, '169 (5845/20 MHz)'), + (CHANNEL_5G_171, '171 (5855/80 MHz)'), + (CHANNEL_5G_173, '173 (5865/20 MHz)'), + (CHANNEL_5G_175, '175 (5875/40 MHz)'), + (CHANNEL_5G_177, '177 (5885/20 MHz)'), ) ), ) From bdf359470ea749f46a98ffb7f163a1b04996e0f5 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Thu, 14 Oct 2021 09:48:12 -0400 Subject: [PATCH 019/289] Include WirelessLAN attached interfaces --- netbox/templates/wireless/wirelesslan.html | 11 +++++++-- netbox/wireless/models.py | 2 +- netbox/wireless/tables.py | 26 ++++++++++++++++++++-- netbox/wireless/views.py | 17 +++++++++++++- 4 files changed, 50 insertions(+), 6 deletions(-) diff --git a/netbox/templates/wireless/wirelesslan.html b/netbox/templates/wireless/wirelesslan.html index f2133cd54..cfe13ca45 100644 --- a/netbox/templates/wireless/wirelesslan.html +++ b/netbox/templates/wireless/wirelesslan.html @@ -49,8 +49,15 @@
-
- {% plugin_full_width_page object %} +
+
+
Attached Interfaces
+
+ {% include 'inc/table.html' with table=interfaces_table %} +
+ {% include 'inc/paginator.html' with paginator=interfaces_table.paginator page=interfaces_table.page %} + {% plugin_full_width_page object %} +
{% endblock %} diff --git a/netbox/wireless/models.py b/netbox/wireless/models.py index 12c4e55aa..b0cacde15 100644 --- a/netbox/wireless/models.py +++ b/netbox/wireless/models.py @@ -145,7 +145,7 @@ class WirelessLink(PrimaryModel): objects = RestrictedQuerySet.as_manager() - clone_fields = ('ssid', 'group', 'status') + clone_fields = ('ssid', 'status') class Meta: ordering = ['pk'] diff --git a/netbox/wireless/tables.py b/netbox/wireless/tables.py index 58d77b56f..671e948d2 100644 --- a/netbox/wireless/tables.py +++ b/netbox/wireless/tables.py @@ -1,5 +1,6 @@ import django_tables2 as tables +from dcim.models import Interface from utilities.tables import ( BaseTable, ButtonsColumn, ChoiceFieldColumn, LinkedCountColumn, MPTTColumn, TagColumn, ToggleColumn, ) @@ -35,14 +36,35 @@ class WirelessLANTable(BaseTable): ssid = tables.Column( linkify=True ) + group = tables.Column( + linkify=True + ) + interface_count = tables.Column( + verbose_name='Interfaces' + ) tags = TagColumn( url_name='wireless:wirelesslan_list' ) class Meta(BaseTable.Meta): model = WirelessLAN - fields = ('pk', 'ssid', 'description', 'vlan') - default_columns = ('pk', 'ssid', 'description', 'vlan') + fields = ('pk', 'ssid', 'group', 'description', 'vlan', 'interface_count', 'tags') + default_columns = ('pk', 'ssid', 'group', 'description', 'vlan', 'interface_count') + + +class WirelessLANInterfacesTable(BaseTable): + pk = ToggleColumn() + device = tables.Column( + linkify=True + ) + name = tables.Column( + linkify=True + ) + + class Meta(BaseTable.Meta): + model = Interface + fields = ('pk', 'device', 'name', 'rf_role', 'rf_channel') + default_columns = ('pk', 'device', 'name', 'rf_role', 'rf_channel') class WirelessLinkTable(BaseTable): diff --git a/netbox/wireless/views.py b/netbox/wireless/views.py index 6405d46df..a9238df33 100644 --- a/netbox/wireless/views.py +++ b/netbox/wireless/views.py @@ -1,5 +1,7 @@ +from dcim.models import Interface from netbox.views import generic from utilities.tables import paginate_table +from utilities.utils import count_related from . import filtersets, forms, tables from .models import * @@ -81,7 +83,9 @@ class WirelessLANGroupBulkDeleteView(generic.BulkDeleteView): # class WirelessLANListView(generic.ObjectListView): - queryset = WirelessLAN.objects.all() + queryset = WirelessLAN.objects.annotate( + interface_count=count_related(Interface, 'wireless_lans') + ) filterset = filtersets.WirelessLANFilterSet filterset_form = forms.WirelessLANFilterForm table = tables.WirelessLANTable @@ -90,6 +94,17 @@ class WirelessLANListView(generic.ObjectListView): class WirelessLANView(generic.ObjectView): queryset = WirelessLAN.objects.all() + def get_extra_context(self, request, instance): + attached_interfaces = Interface.objects.restrict(request.user, 'view').filter( + wireless_lans=instance + ) + interfaces_table = tables.WirelessLANInterfacesTable(attached_interfaces) + paginate_table(interfaces_table, request) + + return { + 'interfaces_table': interfaces_table, + } + class WirelessLANEditView(generic.ObjectEditView): queryset = WirelessLAN.objects.all() From fb9da87abb8462c811391bf5bba530394f9b9f25 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Thu, 14 Oct 2021 10:02:05 -0400 Subject: [PATCH 020/289] Add devices to WirelessLinkForm --- netbox/dcim/models/device_components.py | 4 ++++ netbox/wireless/forms/models.py | 20 ++++++++++++++++---- netbox/wireless/tables.py | 14 ++++++++++++-- 3 files changed, 32 insertions(+), 6 deletions(-) diff --git a/netbox/dcim/models/device_components.py b/netbox/dcim/models/device_components.py index 74724baf8..39c618f4d 100644 --- a/netbox/dcim/models/device_components.py +++ b/netbox/dcim/models/device_components.py @@ -656,6 +656,10 @@ class Interface(ComponentModel, BaseInterface, LinkTermination, PathEndpoint): "device, or it must be global".format(self.untagged_vlan) }) + @property + def _occupied(self): + return super()._occupied or bool(self.wireless_link_id) + @property def is_wired(self): return not self.is_virtual and not self.is_wireless diff --git a/netbox/wireless/forms/models.py b/netbox/wireless/forms/models.py index ca20b6ea8..a3454c79a 100644 --- a/netbox/wireless/forms/models.py +++ b/netbox/wireless/forms/models.py @@ -1,4 +1,4 @@ -from dcim.models import Interface +from dcim.models import Device, Interface from extras.forms import CustomFieldModelForm from extras.models import Tag from ipam.models import VLAN @@ -54,18 +54,30 @@ class WirelessLANForm(BootstrapMixin, CustomFieldModelForm): class WirelessLinkForm(BootstrapMixin, CustomFieldModelForm): + device_a = DynamicModelChoiceField( + queryset=Device.objects.all(), + label='Device A' + ) interface_a = DynamicModelChoiceField( queryset=Interface.objects.all(), query_params={ - 'kind': 'wireless' + 'kind': 'wireless', + 'device_id': '$device_a', }, + disabled_indicator='_occupied', label='Interface A' ) + device_b = DynamicModelChoiceField( + queryset=Device.objects.all(), + label='Device B' + ) interface_b = DynamicModelChoiceField( queryset=Interface.objects.all(), query_params={ - 'kind': 'wireless' + 'kind': 'wireless', + 'device_id': '$device_b', }, + disabled_indicator='_occupied', label='Interface B' ) tags = DynamicModelMultipleChoiceField( @@ -76,7 +88,7 @@ class WirelessLinkForm(BootstrapMixin, CustomFieldModelForm): class Meta: model = WirelessLink fields = [ - 'interface_a', 'interface_b', 'status', 'ssid', 'description', 'tags', + 'device_a', 'interface_a', 'device_b', 'interface_b', 'status', 'ssid', 'description', 'tags', ] widgets = { 'status': StaticSelect, diff --git a/netbox/wireless/tables.py b/netbox/wireless/tables.py index 671e948d2..486fa2a71 100644 --- a/netbox/wireless/tables.py +++ b/netbox/wireless/tables.py @@ -74,9 +74,17 @@ class WirelessLinkTable(BaseTable): verbose_name='ID' ) status = ChoiceFieldColumn() + device_a = tables.Column( + accessor=tables.A('interface_a__device'), + linkify=True + ) interface_a = tables.Column( linkify=True ) + device_b = tables.Column( + accessor=tables.A('interface_b__device'), + linkify=True + ) interface_b = tables.Column( linkify=True ) @@ -86,5 +94,7 @@ class WirelessLinkTable(BaseTable): class Meta(BaseTable.Meta): model = WirelessLink - fields = ('pk', 'id', 'status', 'interface_a', 'interface_b', 'ssid', 'description') - default_columns = ('pk', 'id', 'status', 'interface_a', 'interface_b', 'ssid', 'description') + fields = ('pk', 'id', 'status', 'device_a', 'interface_a', 'device_b', 'interface_b', 'ssid', 'description') + default_columns = ( + 'pk', 'id', 'status', 'device_a', 'interface_a', 'device_b', 'interface_b', 'ssid', 'description', + ) From 909b83c537cb08782802af17759f83c26f8237c5 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Thu, 14 Oct 2021 10:06:46 -0400 Subject: [PATCH 021/289] Include interface RF attributes on wireless link view --- .../wireless/inc/wirelesslink_interface.html | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/netbox/templates/wireless/inc/wirelesslink_interface.html b/netbox/templates/wireless/inc/wirelesslink_interface.html index 9c4669ad1..82f7cfd8d 100644 --- a/netbox/templates/wireless/inc/wirelesslink_interface.html +++ b/netbox/templates/wireless/inc/wirelesslink_interface.html @@ -1,3 +1,5 @@ +{% load helpers %} + @@ -17,4 +19,16 @@ {{ interface.get_type_display }} + + + + + + + +
Device
Role + {{ interface.get_rf_role_display|placeholder }} +
Channel + {{ interface.get_rf_channel_display|placeholder }} +
From 176bd2396be49c9783b2a2e86a4acb3d6aeb4612 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Thu, 14 Oct 2021 14:48:00 -0400 Subject: [PATCH 022/289] Closes #6711: Add longtext custom field type with Markdown support --- docs/models/extras/customfield.md | 1 + docs/release-notes/version-3.1.md | 1 + netbox/extras/choices.py | 2 + netbox/extras/models/customfields.py | 21 ++++- netbox/extras/tests/test_customfields.py | 86 ++++++++++++++++--- netbox/extras/tests/test_forms.py | 3 + netbox/templates/inc/custom_fields_panel.html | 6 +- 7 files changed, 101 insertions(+), 19 deletions(-) diff --git a/docs/models/extras/customfield.md b/docs/models/extras/customfield.md index 52b8bab1e..7294fbd34 100644 --- a/docs/models/extras/customfield.md +++ b/docs/models/extras/customfield.md @@ -11,6 +11,7 @@ Within the database, custom fields are stored as JSON data directly alongside ea Custom fields may be created by navigating to Customization > Custom Fields. NetBox supports six types of custom field: * Text: Free-form text (up to 255 characters) +* Long text: Free-form of any length; supports Markdown rendering * Integer: A whole number (positive or negative) * Boolean: True or false * Date: A date in ISO 8601 format (YYYY-MM-DD) diff --git a/docs/release-notes/version-3.1.md b/docs/release-notes/version-3.1.md index 00a6e2fda..23567d68e 100644 --- a/docs/release-notes/version-3.1.md +++ b/docs/release-notes/version-3.1.md @@ -6,6 +6,7 @@ ### Enhancements * [#1337](https://github.com/netbox-community/netbox/issues/1337) - Add WWN field to interfaces +* [#6711](https://github.com/netbox-community/netbox/issues/6711) - Add `longtext` custom field type with Markdown support * [#6874](https://github.com/netbox-community/netbox/issues/6874) - Add tenant assignment for locations ### Other Changes diff --git a/netbox/extras/choices.py b/netbox/extras/choices.py index 4452b5aad..4f350fc9b 100644 --- a/netbox/extras/choices.py +++ b/netbox/extras/choices.py @@ -8,6 +8,7 @@ from utilities.choices import ChoiceSet class CustomFieldTypeChoices(ChoiceSet): TYPE_TEXT = 'text' + TYPE_LONGTEXT = 'longtext' TYPE_INTEGER = 'integer' TYPE_BOOLEAN = 'boolean' TYPE_DATE = 'date' @@ -17,6 +18,7 @@ class CustomFieldTypeChoices(ChoiceSet): CHOICES = ( (TYPE_TEXT, 'Text'), + (TYPE_LONGTEXT, 'Text (long)'), (TYPE_INTEGER, 'Integer'), (TYPE_BOOLEAN, 'Boolean (true/false)'), (TYPE_DATE, 'Date'), diff --git a/netbox/extras/models/customfields.py b/netbox/extras/models/customfields.py index d8e2e11c9..8c0193eaa 100644 --- a/netbox/extras/models/customfields.py +++ b/netbox/extras/models/customfields.py @@ -166,7 +166,10 @@ class CustomField(ChangeLoggedModel): # Validate the field's default value (if any) if self.default is not None: try: - default_value = str(self.default) if self.type == CustomFieldTypeChoices.TYPE_TEXT else self.default + if self.type in (CustomFieldTypeChoices.TYPE_TEXT, CustomFieldTypeChoices.TYPE_LONGTEXT): + default_value = str(self.default) + else: + default_value = self.default self.validate(default_value) except ValidationError as err: raise ValidationError({ @@ -184,7 +187,11 @@ class CustomField(ChangeLoggedModel): }) # Regex validation can be set only for text fields - regex_types = (CustomFieldTypeChoices.TYPE_TEXT, CustomFieldTypeChoices.TYPE_URL) + regex_types = ( + CustomFieldTypeChoices.TYPE_TEXT, + CustomFieldTypeChoices.TYPE_LONGTEXT, + CustomFieldTypeChoices.TYPE_URL, + ) if self.validation_regex and self.type not in regex_types: raise ValidationError({ 'validation_regex': "Regular expression validation is supported only for text and URL fields" @@ -275,7 +282,13 @@ class CustomField(ChangeLoggedModel): # Text else: - field = forms.CharField(max_length=255, required=required, initial=initial) + if self.type == CustomFieldTypeChoices.TYPE_LONGTEXT: + max_length = None + widget = forms.Textarea + else: + max_length = 255 + widget = None + field = forms.CharField(max_length=max_length, required=required, initial=initial, widget=widget) if self.validation_regex: field.validators = [ RegexValidator( @@ -298,7 +311,7 @@ class CustomField(ChangeLoggedModel): if value not in [None, '']: # Validate text field - if self.type == CustomFieldTypeChoices.TYPE_TEXT: + if self.type in (CustomFieldTypeChoices.TYPE_TEXT, CustomFieldTypeChoices.TYPE_LONGTEXT): if type(value) is not str: raise ValidationError(f"Value must be a string.") if self.validation_regex and not re.match(self.validation_regex, value): diff --git a/netbox/extras/tests/test_customfields.py b/netbox/extras/tests/test_customfields.py index 32c473678..0a40aeba9 100644 --- a/netbox/extras/tests/test_customfields.py +++ b/netbox/extras/tests/test_customfields.py @@ -24,13 +24,46 @@ class CustomFieldTest(TestCase): def test_simple_fields(self): DATA = ( - {'field_type': CustomFieldTypeChoices.TYPE_TEXT, 'field_value': 'Foobar!', 'empty_value': ''}, - {'field_type': CustomFieldTypeChoices.TYPE_INTEGER, 'field_value': 0, 'empty_value': None}, - {'field_type': CustomFieldTypeChoices.TYPE_INTEGER, 'field_value': 42, 'empty_value': None}, - {'field_type': CustomFieldTypeChoices.TYPE_BOOLEAN, 'field_value': True, 'empty_value': None}, - {'field_type': CustomFieldTypeChoices.TYPE_BOOLEAN, 'field_value': False, 'empty_value': None}, - {'field_type': CustomFieldTypeChoices.TYPE_DATE, 'field_value': '2016-06-23', 'empty_value': None}, - {'field_type': CustomFieldTypeChoices.TYPE_URL, 'field_value': 'http://example.com/', 'empty_value': ''}, + { + 'field_type': CustomFieldTypeChoices.TYPE_TEXT, + 'field_value': 'Foobar!', + 'empty_value': '', + }, + { + 'field_type': CustomFieldTypeChoices.TYPE_LONGTEXT, + 'field_value': 'Text with **Markdown**', + 'empty_value': '', + }, + { + 'field_type': CustomFieldTypeChoices.TYPE_INTEGER, + 'field_value': 0, + 'empty_value': None, + }, + { + 'field_type': CustomFieldTypeChoices.TYPE_INTEGER, + 'field_value': 42, + 'empty_value': None, + }, + { + 'field_type': CustomFieldTypeChoices.TYPE_BOOLEAN, + 'field_value': True, + 'empty_value': None, + }, + { + 'field_type': CustomFieldTypeChoices.TYPE_BOOLEAN, + 'field_value': False, + 'empty_value': None, + }, + { + 'field_type': CustomFieldTypeChoices.TYPE_DATE, + 'field_value': '2016-06-23', + 'empty_value': None, + }, + { + 'field_type': CustomFieldTypeChoices.TYPE_URL, + 'field_value': 'http://example.com/', + 'empty_value': '', + }, ) obj_type = ContentType.objects.get_for_model(Site) @@ -149,6 +182,11 @@ class CustomFieldAPITest(APITestCase): cls.cf_text.save() cls.cf_text.content_types.set([content_type]) + # Long text custom field + cls.cf_longtext = CustomField(type=CustomFieldTypeChoices.TYPE_LONGTEXT, name='longtext_field', default='ABC') + cls.cf_longtext.save() + cls.cf_longtext.content_types.set([content_type]) + # Integer custom field cls.cf_integer = CustomField(type=CustomFieldTypeChoices.TYPE_INTEGER, name='number_field', default=123) cls.cf_integer.save() @@ -185,6 +223,7 @@ class CustomFieldAPITest(APITestCase): # Assign custom field values for site 2 cls.sites[1].custom_field_data = { cls.cf_text.name: 'bar', + cls.cf_longtext.name: 'DEF', cls.cf_integer.name: 456, cls.cf_boolean.name: True, cls.cf_date.name: '2020-01-02', @@ -204,6 +243,7 @@ class CustomFieldAPITest(APITestCase): self.assertEqual(response.data['name'], self.sites[0].name) self.assertEqual(response.data['custom_fields'], { 'text_field': None, + 'longtext_field': None, 'number_field': None, 'boolean_field': None, 'date_field': None, @@ -222,6 +262,7 @@ class CustomFieldAPITest(APITestCase): response = self.client.get(url, **self.header) self.assertEqual(response.data['name'], self.sites[1].name) self.assertEqual(response.data['custom_fields']['text_field'], site2_cfvs['text_field']) + self.assertEqual(response.data['custom_fields']['longtext_field'], site2_cfvs['longtext_field']) self.assertEqual(response.data['custom_fields']['number_field'], site2_cfvs['number_field']) self.assertEqual(response.data['custom_fields']['boolean_field'], site2_cfvs['boolean_field']) self.assertEqual(response.data['custom_fields']['date_field'], site2_cfvs['date_field']) @@ -245,6 +286,7 @@ class CustomFieldAPITest(APITestCase): # Validate response data response_cf = response.data['custom_fields'] self.assertEqual(response_cf['text_field'], self.cf_text.default) + self.assertEqual(response_cf['longtext_field'], self.cf_longtext.default) self.assertEqual(response_cf['number_field'], self.cf_integer.default) self.assertEqual(response_cf['boolean_field'], self.cf_boolean.default) self.assertEqual(response_cf['date_field'], self.cf_date.default) @@ -254,6 +296,7 @@ class CustomFieldAPITest(APITestCase): # Validate database data site = Site.objects.get(pk=response.data['id']) self.assertEqual(site.custom_field_data['text_field'], self.cf_text.default) + self.assertEqual(site.custom_field_data['longtext_field'], self.cf_longtext.default) self.assertEqual(site.custom_field_data['number_field'], self.cf_integer.default) self.assertEqual(site.custom_field_data['boolean_field'], self.cf_boolean.default) self.assertEqual(str(site.custom_field_data['date_field']), self.cf_date.default) @@ -269,6 +312,7 @@ class CustomFieldAPITest(APITestCase): 'slug': 'site-3', 'custom_fields': { 'text_field': 'bar', + 'longtext_field': 'blah blah blah', 'number_field': 456, 'boolean_field': True, 'date_field': '2020-01-02', @@ -286,6 +330,7 @@ class CustomFieldAPITest(APITestCase): response_cf = response.data['custom_fields'] data_cf = data['custom_fields'] self.assertEqual(response_cf['text_field'], data_cf['text_field']) + self.assertEqual(response_cf['longtext_field'], data_cf['longtext_field']) self.assertEqual(response_cf['number_field'], data_cf['number_field']) self.assertEqual(response_cf['boolean_field'], data_cf['boolean_field']) self.assertEqual(response_cf['date_field'], data_cf['date_field']) @@ -295,6 +340,7 @@ class CustomFieldAPITest(APITestCase): # Validate database data site = Site.objects.get(pk=response.data['id']) self.assertEqual(site.custom_field_data['text_field'], data_cf['text_field']) + self.assertEqual(site.custom_field_data['longtext_field'], data_cf['longtext_field']) self.assertEqual(site.custom_field_data['number_field'], data_cf['number_field']) self.assertEqual(site.custom_field_data['boolean_field'], data_cf['boolean_field']) self.assertEqual(str(site.custom_field_data['date_field']), data_cf['date_field']) @@ -332,6 +378,7 @@ class CustomFieldAPITest(APITestCase): # Validate response data response_cf = response.data[i]['custom_fields'] self.assertEqual(response_cf['text_field'], self.cf_text.default) + self.assertEqual(response_cf['longtext_field'], self.cf_longtext.default) self.assertEqual(response_cf['number_field'], self.cf_integer.default) self.assertEqual(response_cf['boolean_field'], self.cf_boolean.default) self.assertEqual(response_cf['date_field'], self.cf_date.default) @@ -341,6 +388,7 @@ class CustomFieldAPITest(APITestCase): # Validate database data site = Site.objects.get(pk=response.data[i]['id']) self.assertEqual(site.custom_field_data['text_field'], self.cf_text.default) + self.assertEqual(site.custom_field_data['longtext_field'], self.cf_longtext.default) self.assertEqual(site.custom_field_data['number_field'], self.cf_integer.default) self.assertEqual(site.custom_field_data['boolean_field'], self.cf_boolean.default) self.assertEqual(str(site.custom_field_data['date_field']), self.cf_date.default) @@ -353,6 +401,7 @@ class CustomFieldAPITest(APITestCase): """ custom_field_data = { 'text_field': 'bar', + 'longtext_field': 'abcdefghij', 'number_field': 456, 'boolean_field': True, 'date_field': '2020-01-02', @@ -388,6 +437,7 @@ class CustomFieldAPITest(APITestCase): # Validate response data response_cf = response.data[i]['custom_fields'] self.assertEqual(response_cf['text_field'], custom_field_data['text_field']) + self.assertEqual(response_cf['longtext_field'], custom_field_data['longtext_field']) self.assertEqual(response_cf['number_field'], custom_field_data['number_field']) self.assertEqual(response_cf['boolean_field'], custom_field_data['boolean_field']) self.assertEqual(response_cf['date_field'], custom_field_data['date_field']) @@ -397,6 +447,7 @@ class CustomFieldAPITest(APITestCase): # Validate database data site = Site.objects.get(pk=response.data[i]['id']) self.assertEqual(site.custom_field_data['text_field'], custom_field_data['text_field']) + self.assertEqual(site.custom_field_data['longtext_field'], custom_field_data['longtext_field']) self.assertEqual(site.custom_field_data['number_field'], custom_field_data['number_field']) self.assertEqual(site.custom_field_data['boolean_field'], custom_field_data['boolean_field']) self.assertEqual(str(site.custom_field_data['date_field']), custom_field_data['date_field']) @@ -426,6 +477,7 @@ class CustomFieldAPITest(APITestCase): response_cf = response.data['custom_fields'] self.assertEqual(response_cf['text_field'], data['custom_fields']['text_field']) self.assertEqual(response_cf['number_field'], data['custom_fields']['number_field']) + self.assertEqual(response_cf['longtext_field'], original_cfvs['longtext_field']) self.assertEqual(response_cf['boolean_field'], original_cfvs['boolean_field']) self.assertEqual(response_cf['date_field'], original_cfvs['date_field']) self.assertEqual(response_cf['url_field'], original_cfvs['url_field']) @@ -435,6 +487,7 @@ class CustomFieldAPITest(APITestCase): site.refresh_from_db() self.assertEqual(site.custom_field_data['text_field'], data['custom_fields']['text_field']) self.assertEqual(site.custom_field_data['number_field'], data['custom_fields']['number_field']) + self.assertEqual(site.custom_field_data['longtext_field'], original_cfvs['longtext_field']) self.assertEqual(site.custom_field_data['boolean_field'], original_cfvs['boolean_field']) self.assertEqual(site.custom_field_data['date_field'], original_cfvs['date_field']) self.assertEqual(site.custom_field_data['url_field'], original_cfvs['url_field']) @@ -491,11 +544,14 @@ class CustomFieldImportTest(TestCase): custom_fields = ( CustomField(name='text', type=CustomFieldTypeChoices.TYPE_TEXT), + CustomField(name='longtext', type=CustomFieldTypeChoices.TYPE_LONGTEXT), CustomField(name='integer', type=CustomFieldTypeChoices.TYPE_INTEGER), CustomField(name='boolean', type=CustomFieldTypeChoices.TYPE_BOOLEAN), CustomField(name='date', type=CustomFieldTypeChoices.TYPE_DATE), CustomField(name='url', type=CustomFieldTypeChoices.TYPE_URL), - CustomField(name='select', type=CustomFieldTypeChoices.TYPE_SELECT, choices=['Choice A', 'Choice B', 'Choice C']), + CustomField(name='select', type=CustomFieldTypeChoices.TYPE_SELECT, choices=[ + 'Choice A', 'Choice B', 'Choice C', + ]), ) for cf in custom_fields: cf.save() @@ -506,10 +562,10 @@ class CustomFieldImportTest(TestCase): Import a Site in CSV format, including a value for each CustomField. """ data = ( - ('name', 'slug', 'status', 'cf_text', 'cf_integer', 'cf_boolean', 'cf_date', 'cf_url', 'cf_select'), - ('Site 1', 'site-1', 'active', 'ABC', '123', 'True', '2020-01-01', 'http://example.com/1', 'Choice A'), - ('Site 2', 'site-2', 'active', 'DEF', '456', 'False', '2020-01-02', 'http://example.com/2', 'Choice B'), - ('Site 3', 'site-3', 'active', '', '', '', '', '', ''), + ('name', 'slug', 'status', 'cf_text', 'cf_longtext', 'cf_integer', 'cf_boolean', 'cf_date', 'cf_url', 'cf_select'), + ('Site 1', 'site-1', 'active', 'ABC', 'Foo', '123', 'True', '2020-01-01', 'http://example.com/1', 'Choice A'), + ('Site 2', 'site-2', 'active', 'DEF', 'Bar', '456', 'False', '2020-01-02', 'http://example.com/2', 'Choice B'), + ('Site 3', 'site-3', 'active', '', '', '', '', '', '', ''), ) csv_data = '\n'.join(','.join(row) for row in data) @@ -518,8 +574,9 @@ class CustomFieldImportTest(TestCase): # Validate data for site 1 site1 = Site.objects.get(name='Site 1') - self.assertEqual(len(site1.custom_field_data), 6) + self.assertEqual(len(site1.custom_field_data), 7) self.assertEqual(site1.custom_field_data['text'], 'ABC') + self.assertEqual(site1.custom_field_data['longtext'], 'Foo') self.assertEqual(site1.custom_field_data['integer'], 123) self.assertEqual(site1.custom_field_data['boolean'], True) self.assertEqual(site1.custom_field_data['date'], '2020-01-01') @@ -528,8 +585,9 @@ class CustomFieldImportTest(TestCase): # Validate data for site 2 site2 = Site.objects.get(name='Site 2') - self.assertEqual(len(site2.custom_field_data), 6) + self.assertEqual(len(site2.custom_field_data), 7) self.assertEqual(site2.custom_field_data['text'], 'DEF') + self.assertEqual(site2.custom_field_data['longtext'], 'Bar') self.assertEqual(site2.custom_field_data['integer'], 456) self.assertEqual(site2.custom_field_data['boolean'], False) self.assertEqual(site2.custom_field_data['date'], '2020-01-02') diff --git a/netbox/extras/tests/test_forms.py b/netbox/extras/tests/test_forms.py index cb0a9c081..1ccc2332b 100644 --- a/netbox/extras/tests/test_forms.py +++ b/netbox/extras/tests/test_forms.py @@ -17,6 +17,9 @@ class CustomFieldModelFormTest(TestCase): cf_text = CustomField.objects.create(name='text', type=CustomFieldTypeChoices.TYPE_TEXT) cf_text.content_types.set([obj_type]) + cf_longtext = CustomField.objects.create(name='longtext', type=CustomFieldTypeChoices.TYPE_LONGTEXT) + cf_longtext.content_types.set([obj_type]) + cf_integer = CustomField.objects.create(name='integer', type=CustomFieldTypeChoices.TYPE_INTEGER) cf_integer.content_types.set([obj_type]) diff --git a/netbox/templates/inc/custom_fields_panel.html b/netbox/templates/inc/custom_fields_panel.html index fd0379961..eb6e490e7 100644 --- a/netbox/templates/inc/custom_fields_panel.html +++ b/netbox/templates/inc/custom_fields_panel.html @@ -1,3 +1,5 @@ +{% load helpers %} + {% with custom_fields=object.get_custom_fields %} {% if custom_fields %}
@@ -10,7 +12,9 @@ {{ field }} - {% if field.type == 'boolean' and value == True %} + {% if field.type == 'longtext' and value %} + {{ value|render_markdown }} + {% elif field.type == 'boolean' and value == True %} {% elif field.type == 'boolean' and value == False %} From 64dad7dbd282b8576e9211b5ae3e7ba4d78e6d06 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Thu, 14 Oct 2021 15:11:03 -0400 Subject: [PATCH 023/289] Optimize migrations --- .../migrations/0003_rename_cable_peer.py | 2 -- ...able_peer.py => 0136_rename_cable_peer.py} | 4 +-- netbox/dcim/migrations/0136_wireless.py | 26 ------------------- netbox/dcim/migrations/0137_wireless.py | 25 +++++++++++++++--- .../0138_interface_wireless_link.py | 20 -------------- netbox/wireless/migrations/0001_wireless.py | 2 +- 6 files changed, 24 insertions(+), 55 deletions(-) rename netbox/dcim/migrations/{0139_rename_cable_peer.py => 0136_rename_cable_peer.py} (96%) delete mode 100644 netbox/dcim/migrations/0136_wireless.py delete mode 100644 netbox/dcim/migrations/0138_interface_wireless_link.py diff --git a/netbox/circuits/migrations/0003_rename_cable_peer.py b/netbox/circuits/migrations/0003_rename_cable_peer.py index 475a84d0f..63dc1006e 100644 --- a/netbox/circuits/migrations/0003_rename_cable_peer.py +++ b/netbox/circuits/migrations/0003_rename_cable_peer.py @@ -1,5 +1,3 @@ -# Generated by Django 3.2.8 on 2021-10-13 17:47 - from django.db import migrations diff --git a/netbox/dcim/migrations/0139_rename_cable_peer.py b/netbox/dcim/migrations/0136_rename_cable_peer.py similarity index 96% rename from netbox/dcim/migrations/0139_rename_cable_peer.py rename to netbox/dcim/migrations/0136_rename_cable_peer.py index 62a4bacdd..6958458e8 100644 --- a/netbox/dcim/migrations/0139_rename_cable_peer.py +++ b/netbox/dcim/migrations/0136_rename_cable_peer.py @@ -1,12 +1,10 @@ -# Generated by Django 3.2.8 on 2021-10-13 17:47 - from django.db import migrations class Migration(migrations.Migration): dependencies = [ - ('dcim', '0138_interface_wireless_link'), + ('dcim', '0135_location_tenant'), ] operations = [ diff --git a/netbox/dcim/migrations/0136_wireless.py b/netbox/dcim/migrations/0136_wireless.py deleted file mode 100644 index 7a3ee9673..000000000 --- a/netbox/dcim/migrations/0136_wireless.py +++ /dev/null @@ -1,26 +0,0 @@ -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0135_location_tenant'), - ] - - operations = [ - migrations.AddField( - model_name='interface', - name='rf_role', - field=models.CharField(blank=True, max_length=30), - ), - migrations.AddField( - model_name='interface', - name='rf_channel', - field=models.CharField(blank=True, max_length=50), - ), - migrations.AddField( - model_name='interface', - name='rf_channel_width', - field=models.PositiveSmallIntegerField(blank=True, null=True), - ), - ] diff --git a/netbox/dcim/migrations/0137_wireless.py b/netbox/dcim/migrations/0137_wireless.py index 9108735a1..788157c23 100644 --- a/netbox/dcim/migrations/0137_wireless.py +++ b/netbox/dcim/migrations/0137_wireless.py @@ -1,19 +1,38 @@ -# Generated by Django 3.2.8 on 2021-10-13 13:44 - from django.db import migrations, models +import django.db.models.deletion class Migration(migrations.Migration): dependencies = [ - ('dcim', '0136_wireless'), + ('dcim', '0136_rename_cable_peer'), ('wireless', '0001_wireless'), ] operations = [ + migrations.AddField( + model_name='interface', + name='rf_role', + field=models.CharField(blank=True, max_length=30), + ), + migrations.AddField( + model_name='interface', + name='rf_channel', + field=models.CharField(blank=True, max_length=50), + ), + migrations.AddField( + model_name='interface', + name='rf_channel_width', + field=models.PositiveSmallIntegerField(blank=True, null=True), + ), migrations.AddField( model_name='interface', name='wireless_lans', field=models.ManyToManyField(blank=True, related_name='interfaces', to='wireless.WirelessLAN'), ), + migrations.AddField( + model_name='interface', + name='wireless_link', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='wireless.wirelesslink'), + ), ] diff --git a/netbox/dcim/migrations/0138_interface_wireless_link.py b/netbox/dcim/migrations/0138_interface_wireless_link.py deleted file mode 100644 index 42b7a1042..000000000 --- a/netbox/dcim/migrations/0138_interface_wireless_link.py +++ /dev/null @@ -1,20 +0,0 @@ -# Generated by Django 3.2.8 on 2021-10-13 15:29 - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('wireless', '0001_wireless'), - ('dcim', '0137_wireless'), - ] - - operations = [ - migrations.AddField( - model_name='interface', - name='wireless_link', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='wireless.wirelesslink'), - ), - ] diff --git a/netbox/wireless/migrations/0001_wireless.py b/netbox/wireless/migrations/0001_wireless.py index 068f4d64a..9adc8757b 100644 --- a/netbox/wireless/migrations/0001_wireless.py +++ b/netbox/wireless/migrations/0001_wireless.py @@ -10,7 +10,7 @@ class Migration(migrations.Migration): initial = True dependencies = [ - ('dcim', '0136_wireless'), + ('dcim', '0136_rename_cable_peer'), ('extras', '0062_clear_secrets_changelog'), ('ipam', '0050_iprange'), ] From 2c2c2e9060db4b4243dbd20a9afc352f4aaa9887 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Thu, 14 Oct 2021 15:38:29 -0400 Subject: [PATCH 024/289] 3839: Add airflow field to DeviceType --- netbox/dcim/api/serializers.py | 3 ++- netbox/dcim/choices.py | 19 +++++++++++++++++++ netbox/dcim/filtersets.py | 2 +- netbox/dcim/forms/bulk_edit.py | 5 +++++ netbox/dcim/forms/filtersets.py | 7 ++++++- netbox/dcim/forms/models.py | 7 +++++-- netbox/dcim/forms/object_import.py | 2 +- netbox/dcim/graphql/types.py | 3 +++ .../migrations/0136_devicetype_airflow.py | 18 ++++++++++++++++++ netbox/dcim/models/devices.py | 9 ++++++++- netbox/dcim/tables/devicetypes.py | 2 +- netbox/dcim/tests/test_filtersets.py | 8 ++++++-- netbox/templates/dcim/devicetype.html | 6 ++++++ 13 files changed, 81 insertions(+), 10 deletions(-) create mode 100644 netbox/dcim/migrations/0136_devicetype_airflow.py diff --git a/netbox/dcim/api/serializers.py b/netbox/dcim/api/serializers.py index d6e44c281..e42b0246b 100644 --- a/netbox/dcim/api/serializers.py +++ b/netbox/dcim/api/serializers.py @@ -288,13 +288,14 @@ class DeviceTypeSerializer(PrimaryModelSerializer): url = serializers.HyperlinkedIdentityField(view_name='dcim-api:devicetype-detail') manufacturer = NestedManufacturerSerializer() subdevice_role = ChoiceField(choices=SubdeviceRoleChoices, allow_blank=True, required=False) + airflow = ChoiceField(choices=DeviceAirflowChoices, allow_blank=True, required=False) device_count = serializers.IntegerField(read_only=True) class Meta: model = DeviceType fields = [ 'id', 'url', 'display', 'manufacturer', 'model', 'slug', 'part_number', 'u_height', 'is_full_depth', - 'subdevice_role', 'front_image', 'rear_image', 'comments', 'tags', 'custom_fields', 'created', + 'subdevice_role', 'airflow', 'front_image', 'rear_image', 'comments', 'tags', 'custom_fields', 'created', 'last_updated', 'device_count', ] diff --git a/netbox/dcim/choices.py b/netbox/dcim/choices.py index acea294f8..a4c3cb983 100644 --- a/netbox/dcim/choices.py +++ b/netbox/dcim/choices.py @@ -174,6 +174,25 @@ class DeviceStatusChoices(ChoiceSet): } +class DeviceAirflowChoices(ChoiceSet): + + AIRFLOW_FRONT_TO_REAR = 'front-to-rear' + AIRFLOW_REAR_TO_FRONT = 'rear-to-front' + AIRFLOW_LEFT_TO_RIGHT = 'left-to-right' + AIRFLOW_RIGHT_TO_LEFT = 'right-to-left' + AIRFLOW_SIDE_TO_REAR = 'side-to-rear' + AIRFLOW_PASSIVE = 'passive' + + CHOICES = ( + (AIRFLOW_FRONT_TO_REAR, 'Front to rear'), + (AIRFLOW_REAR_TO_FRONT, 'Rear to front'), + (AIRFLOW_LEFT_TO_RIGHT, 'Left to right'), + (AIRFLOW_RIGHT_TO_LEFT, 'Right to left'), + (AIRFLOW_SIDE_TO_REAR, 'Side to rear'), + (AIRFLOW_PASSIVE, 'Passive'), + ) + + # # ConsolePorts # diff --git a/netbox/dcim/filtersets.py b/netbox/dcim/filtersets.py index 7f029097e..ee7957a92 100644 --- a/netbox/dcim/filtersets.py +++ b/netbox/dcim/filtersets.py @@ -441,7 +441,7 @@ class DeviceTypeFilterSet(PrimaryModelFilterSet): class Meta: model = DeviceType fields = [ - 'id', 'model', 'slug', 'part_number', 'u_height', 'is_full_depth', 'subdevice_role', + 'id', 'model', 'slug', 'part_number', 'u_height', 'is_full_depth', 'subdevice_role', 'airflow', ] def search(self, queryset, name, value): diff --git a/netbox/dcim/forms/bulk_edit.py b/netbox/dcim/forms/bulk_edit.py index fd87d7304..1cc79ee48 100644 --- a/netbox/dcim/forms/bulk_edit.py +++ b/netbox/dcim/forms/bulk_edit.py @@ -335,6 +335,11 @@ class DeviceTypeBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldModel widget=BulkEditNullBooleanSelect(), label='Is full depth' ) + airflow = forms.ChoiceField( + choices=add_blank_choice(DeviceAirflowChoices), + required=False, + widget=StaticSelect() + ) class Meta: nullable_fields = [] diff --git a/netbox/dcim/forms/filtersets.py b/netbox/dcim/forms/filtersets.py index 4f4e10e96..e6b9ec8c4 100644 --- a/netbox/dcim/forms/filtersets.py +++ b/netbox/dcim/forms/filtersets.py @@ -385,7 +385,7 @@ class DeviceTypeFilterForm(BootstrapMixin, CustomFieldModelFilterForm): model = DeviceType field_groups = [ ['q', 'tag'], - ['manufacturer_id', 'subdevice_role'], + ['manufacturer_id', 'subdevice_role', 'airflow'], ['console_ports', 'console_server_ports', 'power_ports', 'power_outlets', 'interfaces', 'pass_through_ports'], ] q = forms.CharField( @@ -404,6 +404,11 @@ class DeviceTypeFilterForm(BootstrapMixin, CustomFieldModelFilterForm): required=False, widget=StaticSelectMultiple() ) + airflow = forms.MultipleChoiceField( + choices=add_blank_choice(DeviceAirflowChoices), + required=False, + widget=StaticSelectMultiple() + ) console_ports = forms.NullBooleanField( required=False, label='Has console ports', diff --git a/netbox/dcim/forms/models.py b/netbox/dcim/forms/models.py index a8c2991a4..f0059e770 100644 --- a/netbox/dcim/forms/models.py +++ b/netbox/dcim/forms/models.py @@ -367,12 +367,15 @@ class DeviceTypeForm(BootstrapMixin, CustomFieldModelForm): class Meta: model = DeviceType fields = [ - 'manufacturer', 'model', 'slug', 'part_number', 'u_height', 'is_full_depth', 'subdevice_role', + 'manufacturer', 'model', 'slug', 'part_number', 'u_height', 'is_full_depth', 'subdevice_role', 'airflow', 'front_image', 'rear_image', 'comments', 'tags', ] fieldsets = ( ('Device Type', ( - 'manufacturer', 'model', 'slug', 'part_number', 'u_height', 'is_full_depth', 'subdevice_role', 'tags', + 'manufacturer', 'model', 'slug', 'part_number', 'tags', + )), + ('Chassis', ( + 'u_height', 'is_full_depth', 'subdevice_role', 'airflow', )), ('Images', ('front_image', 'rear_image')), ) diff --git a/netbox/dcim/forms/object_import.py b/netbox/dcim/forms/object_import.py index 0596261a6..03f040a00 100644 --- a/netbox/dcim/forms/object_import.py +++ b/netbox/dcim/forms/object_import.py @@ -26,7 +26,7 @@ class DeviceTypeImportForm(BootstrapMixin, forms.ModelForm): class Meta: model = DeviceType fields = [ - 'manufacturer', 'model', 'slug', 'part_number', 'u_height', 'is_full_depth', 'subdevice_role', + 'manufacturer', 'model', 'slug', 'part_number', 'u_height', 'is_full_depth', 'subdevice_role', 'airflow', 'comments', ] diff --git a/netbox/dcim/graphql/types.py b/netbox/dcim/graphql/types.py index be10556be..0f186c5d4 100644 --- a/netbox/dcim/graphql/types.py +++ b/netbox/dcim/graphql/types.py @@ -179,6 +179,9 @@ class DeviceTypeType(PrimaryObjectType): def resolve_subdevice_role(self, info): return self.subdevice_role or None + def resolve_airflow(self, info): + return self.airflow or None + class FrontPortType(ComponentObjectType): diff --git a/netbox/dcim/migrations/0136_devicetype_airflow.py b/netbox/dcim/migrations/0136_devicetype_airflow.py new file mode 100644 index 000000000..2b3bd215f --- /dev/null +++ b/netbox/dcim/migrations/0136_devicetype_airflow.py @@ -0,0 +1,18 @@ +# Generated by Django 3.2.8 on 2021-10-14 19:29 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('dcim', '0135_location_tenant'), + ] + + operations = [ + migrations.AddField( + model_name='devicetype', + name='airflow', + field=models.CharField(blank=True, max_length=50), + ), + ] diff --git a/netbox/dcim/models/devices.py b/netbox/dcim/models/devices.py index 10cd35c13..2a4f58d10 100644 --- a/netbox/dcim/models/devices.py +++ b/netbox/dcim/models/devices.py @@ -115,6 +115,12 @@ class DeviceType(PrimaryModel): help_text='Parent devices house child devices in device bays. Leave blank ' 'if this device type is neither a parent nor a child.' ) + airflow = models.CharField( + max_length=50, + choices=DeviceAirflowChoices, + blank=True, + verbose_name='Airflow direction' + ) front_image = models.ImageField( upload_to='devicetype-images', blank=True @@ -130,7 +136,7 @@ class DeviceType(PrimaryModel): objects = RestrictedQuerySet.as_manager() clone_fields = [ - 'manufacturer', 'u_height', 'is_full_depth', 'subdevice_role', + 'manufacturer', 'u_height', 'is_full_depth', 'subdevice_role', 'airflow', ] class Meta: @@ -165,6 +171,7 @@ class DeviceType(PrimaryModel): ('u_height', self.u_height), ('is_full_depth', self.is_full_depth), ('subdevice_role', self.subdevice_role), + ('airflow', self.airflow), ('comments', self.comments), )) diff --git a/netbox/dcim/tables/devicetypes.py b/netbox/dcim/tables/devicetypes.py index 3b11a180b..b3310d5d2 100644 --- a/netbox/dcim/tables/devicetypes.py +++ b/netbox/dcim/tables/devicetypes.py @@ -77,7 +77,7 @@ class DeviceTypeTable(BaseTable): model = DeviceType fields = ( 'pk', 'model', 'manufacturer', 'slug', 'part_number', 'u_height', 'is_full_depth', 'subdevice_role', - 'comments', 'instance_count', 'tags', + 'airflow', 'comments', 'instance_count', 'tags', ) default_columns = ( 'pk', 'model', 'manufacturer', 'part_number', 'u_height', 'is_full_depth', 'instance_count', diff --git a/netbox/dcim/tests/test_filtersets.py b/netbox/dcim/tests/test_filtersets.py index fb94bde08..f9ecf103f 100644 --- a/netbox/dcim/tests/test_filtersets.py +++ b/netbox/dcim/tests/test_filtersets.py @@ -638,8 +638,8 @@ class DeviceTypeTestCase(TestCase, ChangeLoggedFilterSetTests): device_types = ( DeviceType(manufacturer=manufacturers[0], model='Model 1', slug='model-1', part_number='Part Number 1', u_height=1, is_full_depth=True), - DeviceType(manufacturer=manufacturers[1], model='Model 2', slug='model-2', part_number='Part Number 2', u_height=2, is_full_depth=True, subdevice_role=SubdeviceRoleChoices.ROLE_PARENT), - DeviceType(manufacturer=manufacturers[2], model='Model 3', slug='model-3', part_number='Part Number 3', u_height=3, is_full_depth=False, subdevice_role=SubdeviceRoleChoices.ROLE_CHILD), + DeviceType(manufacturer=manufacturers[1], model='Model 2', slug='model-2', part_number='Part Number 2', u_height=2, is_full_depth=True, subdevice_role=SubdeviceRoleChoices.ROLE_PARENT, airflow=DeviceAirflowChoices.AIRFLOW_FRONT_TO_REAR), + DeviceType(manufacturer=manufacturers[2], model='Model 3', slug='model-3', part_number='Part Number 3', u_height=3, is_full_depth=False, subdevice_role=SubdeviceRoleChoices.ROLE_CHILD, airflow=DeviceAirflowChoices.AIRFLOW_REAR_TO_FRONT), ) DeviceType.objects.bulk_create(device_types) @@ -704,6 +704,10 @@ class DeviceTypeTestCase(TestCase, ChangeLoggedFilterSetTests): params = {'subdevice_role': SubdeviceRoleChoices.ROLE_PARENT} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + def test_airflow(self): + params = {'airflow': DeviceAirflowChoices.AIRFLOW_FRONT_TO_REAR} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + def test_manufacturer(self): manufacturers = Manufacturer.objects.all()[:2] params = {'manufacturer_id': [manufacturers[0].pk, manufacturers[1].pk]} diff --git a/netbox/templates/dcim/devicetype.html b/netbox/templates/dcim/devicetype.html index 2a9f4a93b..2db37121f 100644 --- a/netbox/templates/dcim/devicetype.html +++ b/netbox/templates/dcim/devicetype.html @@ -90,6 +90,12 @@ {{ object.get_subdevice_role_display|placeholder }} + + Airflow direction + + {{ object.get_airflow_display|placeholder }} + + Front Image From 33ea8763d51e6fcc3d34a29fa227eefd9238ad2a Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Thu, 14 Oct 2021 16:04:42 -0400 Subject: [PATCH 025/289] 3839: Add airflow field to Device --- docs/models/dcim/devicetype.md | 2 ++ docs/release-notes/version-3.1.md | 1 + netbox/dcim/api/serializers.py | 7 ++++--- netbox/dcim/filtersets.py | 2 +- netbox/dcim/forms/bulk_edit.py | 9 +++++++-- netbox/dcim/forms/bulk_import.py | 9 +++++++-- netbox/dcim/forms/filtersets.py | 7 ++++++- netbox/dcim/forms/models.py | 5 +++-- netbox/dcim/graphql/types.py | 3 +++ ...vicetype_airflow.py => 0136_device_airflow.py} | 7 +++++-- netbox/dcim/models/devices.py | 15 +++++++++++---- netbox/dcim/tables/devices.py | 4 ++-- netbox/dcim/tests/test_filtersets.py | 8 ++++++-- netbox/templates/dcim/device.html | 6 ++++++ netbox/templates/dcim/device_edit.html | 1 + netbox/templates/dcim/devicetype.html | 2 +- 16 files changed, 66 insertions(+), 22 deletions(-) rename netbox/dcim/migrations/{0136_devicetype_airflow.py => 0136_device_airflow.py} (67%) diff --git a/docs/models/dcim/devicetype.md b/docs/models/dcim/devicetype.md index a7e00dbc6..b919465c8 100644 --- a/docs/models/dcim/devicetype.md +++ b/docs/models/dcim/devicetype.md @@ -12,3 +12,5 @@ Some devices house child devices which share physical resources, like space and !!! note This parent/child relationship is **not** suitable for modeling chassis-based devices, wherein child members share a common control plane. Instead, line cards and similarly non-autonomous hardware should be modeled as inventory items within a device, with any associated interfaces or other components assigned directly to the device. + +A device type may optionally specify an airflow direction, such as front-to-rear, rear-to-front, or passive. Airflow direction may also be set separately per device. If it is not defined for a device at the time of its creation, it will inherit the airflow setting of its device type. diff --git a/docs/release-notes/version-3.1.md b/docs/release-notes/version-3.1.md index 23567d68e..c49552edd 100644 --- a/docs/release-notes/version-3.1.md +++ b/docs/release-notes/version-3.1.md @@ -6,6 +6,7 @@ ### Enhancements * [#1337](https://github.com/netbox-community/netbox/issues/1337) - Add WWN field to interfaces +* [#3839](https://github.com/netbox-community/netbox/issues/3839) - Add `airflow` field for devices types and devices * [#6711](https://github.com/netbox-community/netbox/issues/6711) - Add `longtext` custom field type with Markdown support * [#6874](https://github.com/netbox-community/netbox/issues/6874) - Add tenant assignment for locations diff --git a/netbox/dcim/api/serializers.py b/netbox/dcim/api/serializers.py index e42b0246b..9d261d9e8 100644 --- a/netbox/dcim/api/serializers.py +++ b/netbox/dcim/api/serializers.py @@ -465,6 +465,7 @@ class DeviceSerializer(PrimaryModelSerializer): rack = NestedRackSerializer(required=False, allow_null=True) face = ChoiceField(choices=DeviceFaceChoices, allow_blank=True, required=False) status = ChoiceField(choices=DeviceStatusChoices, required=False) + airflow = ChoiceField(choices=DeviceAirflowChoices, allow_blank=True, required=False) primary_ip = NestedIPAddressSerializer(read_only=True) primary_ip4 = NestedIPAddressSerializer(required=False, allow_null=True) primary_ip6 = NestedIPAddressSerializer(required=False, allow_null=True) @@ -476,9 +477,9 @@ class DeviceSerializer(PrimaryModelSerializer): model = Device fields = [ 'id', 'url', 'display', 'name', 'device_type', 'device_role', 'tenant', 'platform', 'serial', 'asset_tag', - 'site', 'location', 'rack', 'position', 'face', 'parent_device', 'status', 'primary_ip', 'primary_ip4', - 'primary_ip6', 'cluster', 'virtual_chassis', 'vc_position', 'vc_priority', 'comments', 'local_context_data', - 'tags', 'custom_fields', 'created', 'last_updated', + 'site', 'location', 'rack', 'position', 'face', 'parent_device', 'status', 'airflow', 'primary_ip', + 'primary_ip4', 'primary_ip6', 'cluster', 'virtual_chassis', 'vc_position', 'vc_priority', 'comments', + 'local_context_data', 'tags', 'custom_fields', 'created', 'last_updated', ] validators = [] diff --git a/netbox/dcim/filtersets.py b/netbox/dcim/filtersets.py index ee7957a92..c3de7cb08 100644 --- a/netbox/dcim/filtersets.py +++ b/netbox/dcim/filtersets.py @@ -751,7 +751,7 @@ class DeviceFilterSet(PrimaryModelFilterSet, TenancyFilterSet, LocalConfigContex class Meta: model = Device - fields = ['id', 'name', 'asset_tag', 'face', 'position', 'vc_position', 'vc_priority'] + fields = ['id', 'name', 'asset_tag', 'face', 'position', 'airflow', 'vc_position', 'vc_priority'] def search(self, queryset, name, value): if not value.strip(): diff --git a/netbox/dcim/forms/bulk_edit.py b/netbox/dcim/forms/bulk_edit.py index 1cc79ee48..289057be9 100644 --- a/netbox/dcim/forms/bulk_edit.py +++ b/netbox/dcim/forms/bulk_edit.py @@ -342,7 +342,7 @@ class DeviceTypeBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldModel ) class Meta: - nullable_fields = [] + nullable_fields = ['airflow'] class DeviceRoleBulkEditForm(BootstrapMixin, CustomFieldModelBulkEditForm): @@ -434,6 +434,11 @@ class DeviceBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldModelBulk required=False, widget=StaticSelect() ) + airflow = forms.ChoiceField( + choices=add_blank_choice(DeviceAirflowChoices), + required=False, + widget=StaticSelect() + ) serial = forms.CharField( max_length=50, required=False, @@ -442,7 +447,7 @@ class DeviceBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldModelBulk class Meta: nullable_fields = [ - 'tenant', 'platform', 'serial', + 'tenant', 'platform', 'serial', 'airflow', ] diff --git a/netbox/dcim/forms/bulk_import.py b/netbox/dcim/forms/bulk_import.py index ff9ab6fff..bd9e8cd4a 100644 --- a/netbox/dcim/forms/bulk_import.py +++ b/netbox/dcim/forms/bulk_import.py @@ -369,12 +369,17 @@ class DeviceCSVForm(BaseDeviceCSVForm): required=False, help_text='Mounted rack face' ) + airflow = CSVChoiceField( + choices=DeviceAirflowChoices, + required=False, + help_text='Airflow direction' + ) class Meta(BaseDeviceCSVForm.Meta): fields = [ 'name', 'device_role', 'tenant', 'manufacturer', 'device_type', 'platform', 'serial', 'asset_tag', 'status', - 'site', 'location', 'rack', 'position', 'face', 'virtual_chassis', 'vc_position', 'vc_priority', 'cluster', - 'comments', + 'site', 'location', 'rack', 'position', 'face', 'airflow', 'virtual_chassis', 'vc_position', 'vc_priority', + 'cluster', 'comments', ] def __init__(self, data=None, *args, **kwargs): diff --git a/netbox/dcim/forms/filtersets.py b/netbox/dcim/forms/filtersets.py index e6b9ec8c4..94e7bce05 100644 --- a/netbox/dcim/forms/filtersets.py +++ b/netbox/dcim/forms/filtersets.py @@ -490,7 +490,7 @@ class DeviceFilterForm(BootstrapMixin, LocalConfigContextFilterForm, TenancyFilt field_groups = [ ['q', 'tag'], ['region_id', 'site_group_id', 'site_id', 'location_id', 'rack_id'], - ['status', 'role_id', 'serial', 'asset_tag', 'mac_address'], + ['status', 'role_id', 'airflow', 'serial', 'asset_tag', 'mac_address'], ['manufacturer_id', 'device_type_id', 'platform_id'], ['tenant_group_id', 'tenant_id'], [ @@ -579,6 +579,11 @@ class DeviceFilterForm(BootstrapMixin, LocalConfigContextFilterForm, TenancyFilt required=False, widget=StaticSelectMultiple() ) + airflow = forms.MultipleChoiceField( + choices=add_blank_choice(DeviceAirflowChoices), + required=False, + widget=StaticSelectMultiple() + ) serial = forms.CharField( required=False ) diff --git a/netbox/dcim/forms/models.py b/netbox/dcim/forms/models.py index f0059e770..cb690840f 100644 --- a/netbox/dcim/forms/models.py +++ b/netbox/dcim/forms/models.py @@ -522,8 +522,8 @@ class DeviceForm(BootstrapMixin, TenancyForm, CustomFieldModelForm): model = Device fields = [ 'name', 'device_role', 'device_type', 'serial', 'asset_tag', 'region', 'site_group', 'site', 'rack', - 'location', 'position', 'face', 'status', 'platform', 'primary_ip4', 'primary_ip6', 'cluster_group', - 'cluster', 'tenant_group', 'tenant', 'comments', 'tags', 'local_context_data' + 'location', 'position', 'face', 'status', 'airflow', 'platform', 'primary_ip4', 'primary_ip6', + 'cluster_group', 'cluster', 'tenant_group', 'tenant', 'comments', 'tags', 'local_context_data' ] help_texts = { 'device_role': "The function this device serves", @@ -534,6 +534,7 @@ class DeviceForm(BootstrapMixin, TenancyForm, CustomFieldModelForm): widgets = { 'face': StaticSelect(), 'status': StaticSelect(), + 'airflow': StaticSelect(), 'primary_ip4': StaticSelect(), 'primary_ip6': StaticSelect(), } diff --git a/netbox/dcim/graphql/types.py b/netbox/dcim/graphql/types.py index 0f186c5d4..80c32e66d 100644 --- a/netbox/dcim/graphql/types.py +++ b/netbox/dcim/graphql/types.py @@ -144,6 +144,9 @@ class DeviceType(ConfigContextMixin, ImageAttachmentsMixin, PrimaryObjectType): def resolve_face(self, info): return self.face or None + def resolve_airflow(self, info): + return self.airflow or None + class DeviceBayType(ComponentObjectType): diff --git a/netbox/dcim/migrations/0136_devicetype_airflow.py b/netbox/dcim/migrations/0136_device_airflow.py similarity index 67% rename from netbox/dcim/migrations/0136_devicetype_airflow.py rename to netbox/dcim/migrations/0136_device_airflow.py index 2b3bd215f..a0887a0b4 100644 --- a/netbox/dcim/migrations/0136_devicetype_airflow.py +++ b/netbox/dcim/migrations/0136_device_airflow.py @@ -1,5 +1,3 @@ -# Generated by Django 3.2.8 on 2021-10-14 19:29 - from django.db import migrations, models @@ -15,4 +13,9 @@ class Migration(migrations.Migration): name='airflow', field=models.CharField(blank=True, max_length=50), ), + migrations.AddField( + model_name='device', + name='airflow', + field=models.CharField(blank=True, max_length=50), + ), ] diff --git a/netbox/dcim/models/devices.py b/netbox/dcim/models/devices.py index 2a4f58d10..669f5cfbd 100644 --- a/netbox/dcim/models/devices.py +++ b/netbox/dcim/models/devices.py @@ -118,8 +118,7 @@ class DeviceType(PrimaryModel): airflow = models.CharField( max_length=50, choices=DeviceAirflowChoices, - blank=True, - verbose_name='Airflow direction' + blank=True ) front_image = models.ImageField( upload_to='devicetype-images', @@ -537,6 +536,11 @@ class Device(PrimaryModel, ConfigContextModel): choices=DeviceStatusChoices, default=DeviceStatusChoices.STATUS_ACTIVE ) + airflow = models.CharField( + max_length=50, + choices=DeviceAirflowChoices, + blank=True + ) primary_ip4 = models.OneToOneField( to='ipam.IPAddress', on_delete=models.SET_NULL, @@ -587,7 +591,7 @@ class Device(PrimaryModel, ConfigContextModel): objects = ConfigContextModelQuerySet.as_manager() clone_fields = [ - 'device_type', 'device_role', 'tenant', 'platform', 'site', 'location', 'rack', 'status', 'cluster', + 'device_type', 'device_role', 'tenant', 'platform', 'site', 'location', 'rack', 'status', 'airflow', 'cluster', ] class Meta: @@ -748,9 +752,12 @@ class Device(PrimaryModel, ConfigContextModel): }) def save(self, *args, **kwargs): - is_new = not bool(self.pk) + # Inherit airflow attribute from DeviceType if not set + if is_new and not self.airflow: + self.airflow = self.device_type.airflow + super().save(*args, **kwargs) # If this is a new Device, instantiate all of the related components per the DeviceType definition diff --git a/netbox/dcim/tables/devices.py b/netbox/dcim/tables/devices.py index c2b4b907b..a2d3f3da2 100644 --- a/netbox/dcim/tables/devices.py +++ b/netbox/dcim/tables/devices.py @@ -197,8 +197,8 @@ class DeviceTable(BaseTable): model = Device fields = ( 'pk', 'name', 'status', 'tenant', 'device_role', 'manufacturer', 'device_type', 'platform', 'serial', - 'asset_tag', 'site', 'location', 'rack', 'position', 'face', 'primary_ip', 'primary_ip4', 'primary_ip6', - 'cluster', 'virtual_chassis', 'vc_position', 'vc_priority', 'comments', 'tags', + 'asset_tag', 'site', 'location', 'rack', 'position', 'face', 'airflow', 'primary_ip', 'primary_ip4', + 'primary_ip6', 'cluster', 'virtual_chassis', 'vc_position', 'vc_priority', 'comments', 'tags', ) default_columns = ( 'pk', 'name', 'status', 'tenant', 'site', 'location', 'rack', 'device_role', 'manufacturer', 'device_type', diff --git a/netbox/dcim/tests/test_filtersets.py b/netbox/dcim/tests/test_filtersets.py index f9ecf103f..fcee2914b 100644 --- a/netbox/dcim/tests/test_filtersets.py +++ b/netbox/dcim/tests/test_filtersets.py @@ -1239,8 +1239,8 @@ class DeviceTestCase(TestCase, ChangeLoggedFilterSetTests): devices = ( Device(name='Device 1', device_type=device_types[0], device_role=device_roles[0], platform=platforms[0], tenant=tenants[0], serial='ABC', asset_tag='1001', site=sites[0], location=locations[0], rack=racks[0], position=1, face=DeviceFaceChoices.FACE_FRONT, status=DeviceStatusChoices.STATUS_ACTIVE, cluster=clusters[0], local_context_data={"foo": 123}), - Device(name='Device 2', device_type=device_types[1], device_role=device_roles[1], platform=platforms[1], tenant=tenants[1], serial='DEF', asset_tag='1002', site=sites[1], location=locations[1], rack=racks[1], position=2, face=DeviceFaceChoices.FACE_FRONT, status=DeviceStatusChoices.STATUS_STAGED, cluster=clusters[1]), - Device(name='Device 3', device_type=device_types[2], device_role=device_roles[2], platform=platforms[2], tenant=tenants[2], serial='GHI', asset_tag='1003', site=sites[2], location=locations[2], rack=racks[2], position=3, face=DeviceFaceChoices.FACE_REAR, status=DeviceStatusChoices.STATUS_FAILED, cluster=clusters[2]), + Device(name='Device 2', device_type=device_types[1], device_role=device_roles[1], platform=platforms[1], tenant=tenants[1], serial='DEF', asset_tag='1002', site=sites[1], location=locations[1], rack=racks[1], position=2, face=DeviceFaceChoices.FACE_FRONT, status=DeviceStatusChoices.STATUS_STAGED, airflow=DeviceAirflowChoices.AIRFLOW_FRONT_TO_REAR, cluster=clusters[1]), + Device(name='Device 3', device_type=device_types[2], device_role=device_roles[2], platform=platforms[2], tenant=tenants[2], serial='GHI', asset_tag='1003', site=sites[2], location=locations[2], rack=racks[2], position=3, face=DeviceFaceChoices.FACE_REAR, status=DeviceStatusChoices.STATUS_FAILED, airflow=DeviceAirflowChoices.AIRFLOW_REAR_TO_FRONT, cluster=clusters[2]), ) Device.objects.bulk_create(devices) @@ -1394,6 +1394,10 @@ class DeviceTestCase(TestCase, ChangeLoggedFilterSetTests): params = {'is_full_depth': 'false'} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + def test_airflow(self): + params = {'airflow': DeviceAirflowChoices.AIRFLOW_FRONT_TO_REAR} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + def test_mac_address(self): params = {'mac_address': ['00-00-00-00-00-01', '00-00-00-00-00-02']} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) diff --git a/netbox/templates/dcim/device.html b/netbox/templates/dcim/device.html index 9d1868e1e..ec1ea3fa1 100644 --- a/netbox/templates/dcim/device.html +++ b/netbox/templates/dcim/device.html @@ -93,6 +93,12 @@ {{ object.device_type }} ({{ object.device_type.u_height }}U) + + Airflow + + {{ object.get_airflow_display|placeholder }} + + Serial Number {{ object.serial|placeholder }} diff --git a/netbox/templates/dcim/device_edit.html b/netbox/templates/dcim/device_edit.html index fbafa197d..1be272d3a 100644 --- a/netbox/templates/dcim/device_edit.html +++ b/netbox/templates/dcim/device_edit.html @@ -19,6 +19,7 @@
{% render_field form.manufacturer %} {% render_field form.device_type %} + {% render_field form.airflow %} {% render_field form.serial %} {% render_field form.asset_tag %}
diff --git a/netbox/templates/dcim/devicetype.html b/netbox/templates/dcim/devicetype.html index 2db37121f..40955f5d6 100644 --- a/netbox/templates/dcim/devicetype.html +++ b/netbox/templates/dcim/devicetype.html @@ -91,7 +91,7 @@ - Airflow direction + Airflow {{ object.get_airflow_display|placeholder }} From 01d3c062f210bcb59bc126a19dfb41a3ca421348 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Fri, 15 Oct 2021 10:00:03 -0400 Subject: [PATCH 026/289] Move wireless field choices to wireless app --- netbox/dcim/api/serializers.py | 1 + netbox/dcim/choices.py | 185 ------------------------ netbox/dcim/forms/bulk_import.py | 1 + netbox/dcim/forms/filtersets.py | 1 + netbox/dcim/forms/object_create.py | 1 + netbox/dcim/models/device_components.py | 1 + netbox/wireless/choices.py | 182 +++++++++++++++++++++++ 7 files changed, 187 insertions(+), 185 deletions(-) create mode 100644 netbox/wireless/choices.py diff --git a/netbox/dcim/api/serializers.py b/netbox/dcim/api/serializers.py index f50733163..d7857d5e8 100644 --- a/netbox/dcim/api/serializers.py +++ b/netbox/dcim/api/serializers.py @@ -19,6 +19,7 @@ from tenancy.api.nested_serializers import NestedTenantSerializer from users.api.nested_serializers import NestedUserSerializer from utilities.api import get_serializer_for_model from virtualization.api.nested_serializers import NestedClusterSerializer +from wireless.choices import * from .nested_serializers import * diff --git a/netbox/dcim/choices.py b/netbox/dcim/choices.py index ae713d687..9f87dded0 100644 --- a/netbox/dcim/choices.py +++ b/netbox/dcim/choices.py @@ -1154,191 +1154,6 @@ class CableLengthUnitChoices(ChoiceSet): ) -# -# Wireless -# - -class WirelessRoleChoices(ChoiceSet): - ROLE_AP = 'ap' - ROLE_STATION = 'station' - - CHOICES = ( - (ROLE_AP, 'Access point'), - (ROLE_STATION, 'Station'), - ) - - -class WirelessChannelChoices(ChoiceSet): - CHANNEL_AUTO = 'auto' - - # 2.4 GHz - CHANNEL_24G_1 = '2.4g-1' - CHANNEL_24G_2 = '2.4g-2' - CHANNEL_24G_3 = '2.4g-3' - CHANNEL_24G_4 = '2.4g-4' - CHANNEL_24G_5 = '2.4g-5' - CHANNEL_24G_6 = '2.4g-6' - CHANNEL_24G_7 = '2.4g-7' - CHANNEL_24G_8 = '2.4g-8' - CHANNEL_24G_9 = '2.4g-9' - CHANNEL_24G_10 = '2.4g-10' - CHANNEL_24G_11 = '2.4g-11' - CHANNEL_24G_12 = '2.4g-12' - CHANNEL_24G_13 = '2.4g-13' - - # 5 GHz - CHANNEL_5G_32 = '5g-32' - CHANNEL_5G_34 = '5g-34' - CHANNEL_5G_36 = '5g-36' - CHANNEL_5G_38 = '5g-38' - CHANNEL_5G_40 = '5g-40' - CHANNEL_5G_42 = '5g-42' - CHANNEL_5G_44 = '5g-44' - CHANNEL_5G_46 = '5g-46' - CHANNEL_5G_48 = '5g-48' - CHANNEL_5G_50 = '5g-50' - CHANNEL_5G_52 = '5g-52' - CHANNEL_5G_54 = '5g-54' - CHANNEL_5G_56 = '5g-56' - CHANNEL_5G_58 = '5g-58' - CHANNEL_5G_60 = '5g-60' - CHANNEL_5G_62 = '5g-62' - CHANNEL_5G_64 = '5g-64' - CHANNEL_5G_100 = '5g-100' - CHANNEL_5G_102 = '5g-102' - CHANNEL_5G_104 = '5g-104' - CHANNEL_5G_106 = '5g-106' - CHANNEL_5G_108 = '5g-108' - CHANNEL_5G_110 = '5g-110' - CHANNEL_5G_112 = '5g-112' - CHANNEL_5G_114 = '5g-114' - CHANNEL_5G_116 = '5g-116' - CHANNEL_5G_118 = '5g-118' - CHANNEL_5G_120 = '5g-120' - CHANNEL_5G_122 = '5g-122' - CHANNEL_5G_124 = '5g-124' - CHANNEL_5G_126 = '5g-126' - CHANNEL_5G_128 = '5g-128' - CHANNEL_5G_132 = '5g-132' - CHANNEL_5G_134 = '5g-134' - CHANNEL_5G_136 = '5g-136' - CHANNEL_5G_138 = '5g-138' - CHANNEL_5G_140 = '5g-140' - CHANNEL_5G_142 = '5g-142' - CHANNEL_5G_144 = '5g-144' - CHANNEL_5G_149 = '5g-149' - CHANNEL_5G_151 = '5g-151' - CHANNEL_5G_153 = '5g-153' - CHANNEL_5G_155 = '5g-155' - CHANNEL_5G_157 = '5g-157' - CHANNEL_5G_159 = '5g-159' - CHANNEL_5G_161 = '5g-161' - CHANNEL_5G_163 = '5g-163' - CHANNEL_5G_165 = '5g-165' - CHANNEL_5G_167 = '5g-167' - CHANNEL_5G_169 = '5g-169' - CHANNEL_5G_171 = '5g-171' - CHANNEL_5G_173 = '5g-173' - CHANNEL_5G_175 = '5g-175' - CHANNEL_5G_177 = '5g-177' - - CHOICES = ( - (CHANNEL_AUTO, 'Auto'), - ( - '2.4 GHz (802.11b/g/n/ax)', - ( - (CHANNEL_24G_1, '1 (2412 MHz)'), - (CHANNEL_24G_2, '2 (2417 MHz)'), - (CHANNEL_24G_3, '3 (2422 MHz)'), - (CHANNEL_24G_4, '4 (2427 MHz)'), - (CHANNEL_24G_5, '5 (2432 MHz)'), - (CHANNEL_24G_6, '6 (2437 MHz)'), - (CHANNEL_24G_7, '7 (2442 MHz)'), - (CHANNEL_24G_8, '8 (2447 MHz)'), - (CHANNEL_24G_9, '9 (2452 MHz)'), - (CHANNEL_24G_10, '10 (2457 MHz)'), - (CHANNEL_24G_11, '11 (2462 MHz)'), - (CHANNEL_24G_12, '12 (2467 MHz)'), - (CHANNEL_24G_13, '13 (2472 MHz)'), - ) - ), - ( - '5 GHz (802.11a/n/ac/ax)', - ( - (CHANNEL_5G_32, '32 (5160/20 MHz)'), - (CHANNEL_5G_34, '34 (5170/40 MHz)'), - (CHANNEL_5G_36, '36 (5180/20 MHz)'), - (CHANNEL_5G_38, '38 (5190/40 MHz)'), - (CHANNEL_5G_40, '40 (5200/20 MHz)'), - (CHANNEL_5G_42, '42 (5210/80 MHz)'), - (CHANNEL_5G_44, '44 (5220/20 MHz)'), - (CHANNEL_5G_46, '46 (5230/40 MHz)'), - (CHANNEL_5G_48, '48 (5240/20 MHz)'), - (CHANNEL_5G_50, '50 (5250/160 MHz)'), - (CHANNEL_5G_52, '52 (5260/20 MHz)'), - (CHANNEL_5G_54, '54 (5270/40 MHz)'), - (CHANNEL_5G_56, '56 (5280/20 MHz)'), - (CHANNEL_5G_58, '58 (5290/80 MHz)'), - (CHANNEL_5G_60, '60 (5300/20 MHz)'), - (CHANNEL_5G_62, '62 (5310/40 MHz)'), - (CHANNEL_5G_64, '64 (5320/20 MHz)'), - (CHANNEL_5G_100, '100 (5500/20 MHz)'), - (CHANNEL_5G_102, '102 (5510/40 MHz)'), - (CHANNEL_5G_104, '104 (5520/20 MHz)'), - (CHANNEL_5G_106, '106 (5530/80 MHz)'), - (CHANNEL_5G_108, '108 (5540/20 MHz)'), - (CHANNEL_5G_110, '110 (5550/40 MHz)'), - (CHANNEL_5G_112, '112 (5560/20 MHz)'), - (CHANNEL_5G_114, '114 (5570/160 MHz)'), - (CHANNEL_5G_116, '116 (5580/20 MHz)'), - (CHANNEL_5G_118, '118 (5590/40 MHz)'), - (CHANNEL_5G_120, '120 (5600/20 MHz)'), - (CHANNEL_5G_122, '122 (5610/80 MHz)'), - (CHANNEL_5G_124, '124 (5620/20 MHz)'), - (CHANNEL_5G_126, '126 (5630/40 MHz)'), - (CHANNEL_5G_128, '128 (5640/20 MHz)'), - (CHANNEL_5G_132, '132 (5660/20 MHz)'), - (CHANNEL_5G_134, '134 (5670/40 MHz)'), - (CHANNEL_5G_136, '136 (5680/20 MHz)'), - (CHANNEL_5G_138, '138 (5690/80 MHz)'), - (CHANNEL_5G_140, '140 (5700/20 MHz)'), - (CHANNEL_5G_142, '142 (5710/40 MHz)'), - (CHANNEL_5G_144, '144 (5720/20 MHz)'), - (CHANNEL_5G_149, '149 (5745/20 MHz)'), - (CHANNEL_5G_151, '151 (5755/40 MHz)'), - (CHANNEL_5G_153, '153 (5765/20 MHz)'), - (CHANNEL_5G_155, '155 (5775/80 MHz)'), - (CHANNEL_5G_157, '157 (5785/20 MHz)'), - (CHANNEL_5G_159, '159 (5795/40 MHz)'), - (CHANNEL_5G_161, '161 (5805/20 MHz)'), - (CHANNEL_5G_163, '163 (5815/160 MHz)'), - (CHANNEL_5G_165, '165 (5825/20 MHz)'), - (CHANNEL_5G_167, '167 (5835/40 MHz)'), - (CHANNEL_5G_169, '169 (5845/20 MHz)'), - (CHANNEL_5G_171, '171 (5855/80 MHz)'), - (CHANNEL_5G_173, '173 (5865/20 MHz)'), - (CHANNEL_5G_175, '175 (5875/40 MHz)'), - (CHANNEL_5G_177, '177 (5885/20 MHz)'), - ) - ), - ) - - -class WirelessChannelWidthChoices(ChoiceSet): - - CHANNEL_WIDTH_20 = 20 - CHANNEL_WIDTH_40 = 40 - CHANNEL_WIDTH_80 = 80 - CHANNEL_WIDTH_160 = 160 - - CHOICES = ( - (CHANNEL_WIDTH_20, '20 MHz'), - (CHANNEL_WIDTH_40, '40 MHz'), - (CHANNEL_WIDTH_80, '80 MHz'), - (CHANNEL_WIDTH_160, '160 MHz'), - ) - - # # PowerFeeds # diff --git a/netbox/dcim/forms/bulk_import.py b/netbox/dcim/forms/bulk_import.py index 4deda9df6..5ca009dee 100644 --- a/netbox/dcim/forms/bulk_import.py +++ b/netbox/dcim/forms/bulk_import.py @@ -11,6 +11,7 @@ from extras.forms import CustomFieldModelCSVForm from tenancy.models import Tenant from utilities.forms import CSVChoiceField, CSVContentTypeField, CSVModelChoiceField, CSVTypedChoiceField, SlugField from virtualization.models import Cluster +from wireless.choices import WirelessRoleChoices __all__ = ( 'CableCSVForm', diff --git a/netbox/dcim/forms/filtersets.py b/netbox/dcim/forms/filtersets.py index 6334cbff6..50954e534 100644 --- a/netbox/dcim/forms/filtersets.py +++ b/netbox/dcim/forms/filtersets.py @@ -12,6 +12,7 @@ from utilities.forms import ( APISelectMultiple, add_blank_choice, BootstrapMixin, ColorField, DynamicModelMultipleChoiceField, StaticSelect, StaticSelectMultiple, TagFilterField, BOOLEAN_WITH_BLANK_CHOICES, ) +from wireless.choices import * __all__ = ( 'CableFilterForm', diff --git a/netbox/dcim/forms/object_create.py b/netbox/dcim/forms/object_create.py index 3998dcbc1..ff8a19d47 100644 --- a/netbox/dcim/forms/object_create.py +++ b/netbox/dcim/forms/object_create.py @@ -10,6 +10,7 @@ from utilities.forms import ( add_blank_choice, BootstrapMixin, ColorField, DynamicModelChoiceField, DynamicModelMultipleChoiceField, ExpandableNameField, StaticSelect, ) +from wireless.choices import * from .common import InterfaceCommonForm __all__ = ( diff --git a/netbox/dcim/models/device_components.py b/netbox/dcim/models/device_components.py index 39c618f4d..381a2dcf6 100644 --- a/netbox/dcim/models/device_components.py +++ b/netbox/dcim/models/device_components.py @@ -18,6 +18,7 @@ from utilities.mptt import TreeManager from utilities.ordering import naturalize_interface from utilities.querysets import RestrictedQuerySet from utilities.query_functions import CollateAsChar +from wireless.choices import * __all__ = ( diff --git a/netbox/wireless/choices.py b/netbox/wireless/choices.py new file mode 100644 index 000000000..f33bf75a1 --- /dev/null +++ b/netbox/wireless/choices.py @@ -0,0 +1,182 @@ +from utilities.choices import ChoiceSet + + +class WirelessRoleChoices(ChoiceSet): + ROLE_AP = 'ap' + ROLE_STATION = 'station' + + CHOICES = ( + (ROLE_AP, 'Access point'), + (ROLE_STATION, 'Station'), + ) + + +class WirelessChannelChoices(ChoiceSet): + CHANNEL_AUTO = 'auto' + + # 2.4 GHz + CHANNEL_24G_1 = '2.4g-1' + CHANNEL_24G_2 = '2.4g-2' + CHANNEL_24G_3 = '2.4g-3' + CHANNEL_24G_4 = '2.4g-4' + CHANNEL_24G_5 = '2.4g-5' + CHANNEL_24G_6 = '2.4g-6' + CHANNEL_24G_7 = '2.4g-7' + CHANNEL_24G_8 = '2.4g-8' + CHANNEL_24G_9 = '2.4g-9' + CHANNEL_24G_10 = '2.4g-10' + CHANNEL_24G_11 = '2.4g-11' + CHANNEL_24G_12 = '2.4g-12' + CHANNEL_24G_13 = '2.4g-13' + + # 5 GHz + CHANNEL_5G_32 = '5g-32' + CHANNEL_5G_34 = '5g-34' + CHANNEL_5G_36 = '5g-36' + CHANNEL_5G_38 = '5g-38' + CHANNEL_5G_40 = '5g-40' + CHANNEL_5G_42 = '5g-42' + CHANNEL_5G_44 = '5g-44' + CHANNEL_5G_46 = '5g-46' + CHANNEL_5G_48 = '5g-48' + CHANNEL_5G_50 = '5g-50' + CHANNEL_5G_52 = '5g-52' + CHANNEL_5G_54 = '5g-54' + CHANNEL_5G_56 = '5g-56' + CHANNEL_5G_58 = '5g-58' + CHANNEL_5G_60 = '5g-60' + CHANNEL_5G_62 = '5g-62' + CHANNEL_5G_64 = '5g-64' + CHANNEL_5G_100 = '5g-100' + CHANNEL_5G_102 = '5g-102' + CHANNEL_5G_104 = '5g-104' + CHANNEL_5G_106 = '5g-106' + CHANNEL_5G_108 = '5g-108' + CHANNEL_5G_110 = '5g-110' + CHANNEL_5G_112 = '5g-112' + CHANNEL_5G_114 = '5g-114' + CHANNEL_5G_116 = '5g-116' + CHANNEL_5G_118 = '5g-118' + CHANNEL_5G_120 = '5g-120' + CHANNEL_5G_122 = '5g-122' + CHANNEL_5G_124 = '5g-124' + CHANNEL_5G_126 = '5g-126' + CHANNEL_5G_128 = '5g-128' + CHANNEL_5G_132 = '5g-132' + CHANNEL_5G_134 = '5g-134' + CHANNEL_5G_136 = '5g-136' + CHANNEL_5G_138 = '5g-138' + CHANNEL_5G_140 = '5g-140' + CHANNEL_5G_142 = '5g-142' + CHANNEL_5G_144 = '5g-144' + CHANNEL_5G_149 = '5g-149' + CHANNEL_5G_151 = '5g-151' + CHANNEL_5G_153 = '5g-153' + CHANNEL_5G_155 = '5g-155' + CHANNEL_5G_157 = '5g-157' + CHANNEL_5G_159 = '5g-159' + CHANNEL_5G_161 = '5g-161' + CHANNEL_5G_163 = '5g-163' + CHANNEL_5G_165 = '5g-165' + CHANNEL_5G_167 = '5g-167' + CHANNEL_5G_169 = '5g-169' + CHANNEL_5G_171 = '5g-171' + CHANNEL_5G_173 = '5g-173' + CHANNEL_5G_175 = '5g-175' + CHANNEL_5G_177 = '5g-177' + + CHOICES = ( + (CHANNEL_AUTO, 'Auto'), + ( + '2.4 GHz (802.11b/g/n/ax)', + ( + (CHANNEL_24G_1, '1 (2412 MHz)'), + (CHANNEL_24G_2, '2 (2417 MHz)'), + (CHANNEL_24G_3, '3 (2422 MHz)'), + (CHANNEL_24G_4, '4 (2427 MHz)'), + (CHANNEL_24G_5, '5 (2432 MHz)'), + (CHANNEL_24G_6, '6 (2437 MHz)'), + (CHANNEL_24G_7, '7 (2442 MHz)'), + (CHANNEL_24G_8, '8 (2447 MHz)'), + (CHANNEL_24G_9, '9 (2452 MHz)'), + (CHANNEL_24G_10, '10 (2457 MHz)'), + (CHANNEL_24G_11, '11 (2462 MHz)'), + (CHANNEL_24G_12, '12 (2467 MHz)'), + (CHANNEL_24G_13, '13 (2472 MHz)'), + ) + ), + ( + '5 GHz (802.11a/n/ac/ax)', + ( + (CHANNEL_5G_32, '32 (5160/20 MHz)'), + (CHANNEL_5G_34, '34 (5170/40 MHz)'), + (CHANNEL_5G_36, '36 (5180/20 MHz)'), + (CHANNEL_5G_38, '38 (5190/40 MHz)'), + (CHANNEL_5G_40, '40 (5200/20 MHz)'), + (CHANNEL_5G_42, '42 (5210/80 MHz)'), + (CHANNEL_5G_44, '44 (5220/20 MHz)'), + (CHANNEL_5G_46, '46 (5230/40 MHz)'), + (CHANNEL_5G_48, '48 (5240/20 MHz)'), + (CHANNEL_5G_50, '50 (5250/160 MHz)'), + (CHANNEL_5G_52, '52 (5260/20 MHz)'), + (CHANNEL_5G_54, '54 (5270/40 MHz)'), + (CHANNEL_5G_56, '56 (5280/20 MHz)'), + (CHANNEL_5G_58, '58 (5290/80 MHz)'), + (CHANNEL_5G_60, '60 (5300/20 MHz)'), + (CHANNEL_5G_62, '62 (5310/40 MHz)'), + (CHANNEL_5G_64, '64 (5320/20 MHz)'), + (CHANNEL_5G_100, '100 (5500/20 MHz)'), + (CHANNEL_5G_102, '102 (5510/40 MHz)'), + (CHANNEL_5G_104, '104 (5520/20 MHz)'), + (CHANNEL_5G_106, '106 (5530/80 MHz)'), + (CHANNEL_5G_108, '108 (5540/20 MHz)'), + (CHANNEL_5G_110, '110 (5550/40 MHz)'), + (CHANNEL_5G_112, '112 (5560/20 MHz)'), + (CHANNEL_5G_114, '114 (5570/160 MHz)'), + (CHANNEL_5G_116, '116 (5580/20 MHz)'), + (CHANNEL_5G_118, '118 (5590/40 MHz)'), + (CHANNEL_5G_120, '120 (5600/20 MHz)'), + (CHANNEL_5G_122, '122 (5610/80 MHz)'), + (CHANNEL_5G_124, '124 (5620/20 MHz)'), + (CHANNEL_5G_126, '126 (5630/40 MHz)'), + (CHANNEL_5G_128, '128 (5640/20 MHz)'), + (CHANNEL_5G_132, '132 (5660/20 MHz)'), + (CHANNEL_5G_134, '134 (5670/40 MHz)'), + (CHANNEL_5G_136, '136 (5680/20 MHz)'), + (CHANNEL_5G_138, '138 (5690/80 MHz)'), + (CHANNEL_5G_140, '140 (5700/20 MHz)'), + (CHANNEL_5G_142, '142 (5710/40 MHz)'), + (CHANNEL_5G_144, '144 (5720/20 MHz)'), + (CHANNEL_5G_149, '149 (5745/20 MHz)'), + (CHANNEL_5G_151, '151 (5755/40 MHz)'), + (CHANNEL_5G_153, '153 (5765/20 MHz)'), + (CHANNEL_5G_155, '155 (5775/80 MHz)'), + (CHANNEL_5G_157, '157 (5785/20 MHz)'), + (CHANNEL_5G_159, '159 (5795/40 MHz)'), + (CHANNEL_5G_161, '161 (5805/20 MHz)'), + (CHANNEL_5G_163, '163 (5815/160 MHz)'), + (CHANNEL_5G_165, '165 (5825/20 MHz)'), + (CHANNEL_5G_167, '167 (5835/40 MHz)'), + (CHANNEL_5G_169, '169 (5845/20 MHz)'), + (CHANNEL_5G_171, '171 (5855/80 MHz)'), + (CHANNEL_5G_173, '173 (5865/20 MHz)'), + (CHANNEL_5G_175, '175 (5875/40 MHz)'), + (CHANNEL_5G_177, '177 (5885/20 MHz)'), + ) + ), + ) + + +class WirelessChannelWidthChoices(ChoiceSet): + + CHANNEL_WIDTH_20 = 20 + CHANNEL_WIDTH_40 = 40 + CHANNEL_WIDTH_80 = 80 + CHANNEL_WIDTH_160 = 160 + + CHOICES = ( + (CHANNEL_WIDTH_20, '20 MHz'), + (CHANNEL_WIDTH_40, '40 MHz'), + (CHANNEL_WIDTH_80, '80 MHz'), + (CHANNEL_WIDTH_160, '160 MHz'), + ) From b7317bfe2911f792ead028db80d5797ba18ac166 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Fri, 15 Oct 2021 10:06:49 -0400 Subject: [PATCH 027/289] Remove choices from rf_channel_width --- netbox/dcim/api/serializers.py | 1 - netbox/dcim/forms/filtersets.py | 6 ++---- netbox/dcim/forms/models.py | 1 - netbox/dcim/forms/object_create.py | 4 +--- netbox/dcim/models/device_components.py | 3 +-- netbox/templates/dcim/interface.html | 2 +- netbox/wireless/choices.py | 15 --------------- 7 files changed, 5 insertions(+), 27 deletions(-) diff --git a/netbox/dcim/api/serializers.py b/netbox/dcim/api/serializers.py index d7857d5e8..d2a9125c0 100644 --- a/netbox/dcim/api/serializers.py +++ b/netbox/dcim/api/serializers.py @@ -637,7 +637,6 @@ class InterfaceSerializer(PrimaryModelSerializer, LinkTerminationSerializer, Con mode = ChoiceField(choices=InterfaceModeChoices, allow_blank=True, required=False) rf_role = ChoiceField(choices=WirelessRoleChoices, required=False, allow_null=True) rf_channel = ChoiceField(choices=WirelessChannelChoices, required=False) - rf_channel_width = ChoiceField(choices=WirelessChannelWidthChoices, required=False, allow_null=True) untagged_vlan = NestedVLANSerializer(required=False, allow_null=True) tagged_vlans = SerializedPKRelatedField( queryset=VLAN.objects.all(), diff --git a/netbox/dcim/forms/filtersets.py b/netbox/dcim/forms/filtersets.py index 50954e534..fb9449d41 100644 --- a/netbox/dcim/forms/filtersets.py +++ b/netbox/dcim/forms/filtersets.py @@ -1014,11 +1014,9 @@ class InterfaceFilterForm(DeviceComponentFilterForm): widget=StaticSelectMultiple(), label='Wireless channel' ) - rf_channel_width = forms.MultipleChoiceField( - choices=WirelessChannelWidthChoices, + rf_channel_width = forms.IntegerField( required=False, - widget=StaticSelectMultiple(), - label='Channel width' + label='Channel width (kHz)' ) tag = TagFilterField(model) diff --git a/netbox/dcim/forms/models.py b/netbox/dcim/forms/models.py index 35b90291e..675319f11 100644 --- a/netbox/dcim/forms/models.py +++ b/netbox/dcim/forms/models.py @@ -1117,7 +1117,6 @@ class InterfaceForm(BootstrapMixin, InterfaceCommonForm, CustomFieldModelForm): 'mode': StaticSelect(), 'rf_role': StaticSelect(), 'rf_channel': StaticSelect(), - 'rf_channel_width': StaticSelect(), } labels = { 'mode': '802.1Q Mode', diff --git a/netbox/dcim/forms/object_create.py b/netbox/dcim/forms/object_create.py index ff8a19d47..f924fb5d9 100644 --- a/netbox/dcim/forms/object_create.py +++ b/netbox/dcim/forms/object_create.py @@ -480,10 +480,8 @@ class InterfaceCreateForm(ComponentCreateForm, InterfaceCommonForm): widget=StaticSelect(), label='Wireless channel' ) - rf_channel_width = forms.ChoiceField( - choices=add_blank_choice(WirelessChannelWidthChoices), + rf_channel_width = forms.IntegerField( required=False, - widget=StaticSelect(), label='Channel width' ) untagged_vlan = DynamicModelChoiceField( diff --git a/netbox/dcim/models/device_components.py b/netbox/dcim/models/device_components.py index 381a2dcf6..bb18e0c26 100644 --- a/netbox/dcim/models/device_components.py +++ b/netbox/dcim/models/device_components.py @@ -538,10 +538,9 @@ class Interface(ComponentModel, BaseInterface, LinkTermination, PathEndpoint): verbose_name='Wireless channel' ) rf_channel_width = models.PositiveSmallIntegerField( - choices=WirelessChannelWidthChoices, blank=True, null=True, - verbose_name='Channel width' + verbose_name='Channel width (kHz)' ) wireless_link = models.ForeignKey( to='wireless.WirelessLink', diff --git a/netbox/templates/dcim/interface.html b/netbox/templates/dcim/interface.html index 90c9497ef..427ea8352 100644 --- a/netbox/templates/dcim/interface.html +++ b/netbox/templates/dcim/interface.html @@ -278,7 +278,7 @@ Channel Width - {{ object.get_rf_channel_width_display|placeholder }} + {{ object.rf_channel_width|placeholder }} diff --git a/netbox/wireless/choices.py b/netbox/wireless/choices.py index f33bf75a1..1369ee340 100644 --- a/netbox/wireless/choices.py +++ b/netbox/wireless/choices.py @@ -165,18 +165,3 @@ class WirelessChannelChoices(ChoiceSet): ) ), ) - - -class WirelessChannelWidthChoices(ChoiceSet): - - CHANNEL_WIDTH_20 = 20 - CHANNEL_WIDTH_40 = 40 - CHANNEL_WIDTH_80 = 80 - CHANNEL_WIDTH_160 = 160 - - CHOICES = ( - (CHANNEL_WIDTH_20, '20 MHz'), - (CHANNEL_WIDTH_40, '40 MHz'), - (CHANNEL_WIDTH_80, '80 MHz'), - (CHANNEL_WIDTH_160, '160 MHz'), - ) From 075f4907ef7e3da89c1e3f8aed418432857da9d3 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Fri, 15 Oct 2021 11:35:10 -0400 Subject: [PATCH 028/289] Store channel frequency & width as independent values --- netbox/dcim/api/serializers.py | 8 +- netbox/dcim/forms/bulk_edit.py | 4 +- netbox/dcim/forms/bulk_import.py | 3 +- netbox/dcim/forms/filtersets.py | 6 +- netbox/dcim/forms/models.py | 6 +- netbox/dcim/forms/object_create.py | 12 +- netbox/dcim/migrations/0138_wireless.py | 7 +- netbox/dcim/models/device_components.py | 40 +++++- netbox/dcim/tables/devices.py | 5 +- netbox/templates/dcim/interface.html | 18 ++- netbox/templates/dcim/interface_edit.html | 1 + .../wireless/inc/wirelesslink_interface.html | 20 +++ netbox/utilities/templatetags/helpers.py | 14 ++ netbox/wireless/choices.py | 136 +++++++++--------- netbox/wireless/forms/models.py | 10 +- netbox/wireless/utils.py | 27 ++++ 16 files changed, 223 insertions(+), 94 deletions(-) create mode 100644 netbox/wireless/utils.py diff --git a/netbox/dcim/api/serializers.py b/netbox/dcim/api/serializers.py index d2a9125c0..4eeb717d7 100644 --- a/netbox/dcim/api/serializers.py +++ b/netbox/dcim/api/serializers.py @@ -651,10 +651,10 @@ class InterfaceSerializer(PrimaryModelSerializer, LinkTerminationSerializer, Con model = Interface fields = [ 'id', 'url', 'display', 'device', 'name', 'label', 'type', 'enabled', 'parent', 'lag', 'mtu', 'mac_address', - 'wwn', 'mgmt_only', 'description', 'mode', 'rf_role', 'rf_channel', 'rf_channel_width', 'untagged_vlan', - 'tagged_vlans', 'mark_connected', 'cable', 'link_peer', 'link_peer_type', 'connected_endpoint', - 'connected_endpoint_type', 'connected_endpoint_reachable', 'tags', 'custom_fields', 'created', - 'last_updated', 'count_ipaddresses', '_occupied', + 'wwn', 'mgmt_only', 'description', 'mode', 'rf_role', 'rf_channel', 'rf_channel_frequency', + 'rf_channel_width', 'untagged_vlan', 'tagged_vlans', 'mark_connected', 'cable', 'link_peer', + 'link_peer_type', 'connected_endpoint', 'connected_endpoint_type', 'connected_endpoint_reachable', 'tags', + 'custom_fields', 'created', 'last_updated', 'count_ipaddresses', '_occupied', ] def validate(self, data): diff --git a/netbox/dcim/forms/bulk_edit.py b/netbox/dcim/forms/bulk_edit.py index 9c6a85885..e8e60a4f9 100644 --- a/netbox/dcim/forms/bulk_edit.py +++ b/netbox/dcim/forms/bulk_edit.py @@ -936,7 +936,7 @@ class PowerOutletBulkEditForm( class InterfaceBulkEditForm( form_from_model(Interface, [ 'label', 'type', 'parent', 'lag', 'mac_address', 'wwn', 'mtu', 'mgmt_only', 'mark_connected', 'description', - 'mode', 'rf_role', 'rf_channel', 'rf_channel_width', + 'mode', 'rf_role', 'rf_channel', 'rf_channel_frequency', 'rf_channel_width', ]), BootstrapMixin, AddRemoveTagsForm, @@ -988,7 +988,7 @@ class InterfaceBulkEditForm( class Meta: nullable_fields = [ 'label', 'parent', 'lag', 'mac_address', 'wwn', 'mtu', 'description', 'mode', 'rf_channel', - 'rf_channel_width', 'untagged_vlan', 'tagged_vlans', + 'rf_channel_frequency', 'rf_channel_width', 'untagged_vlan', 'tagged_vlans', ] def __init__(self, *args, **kwargs): diff --git a/netbox/dcim/forms/bulk_import.py b/netbox/dcim/forms/bulk_import.py index 5ca009dee..4eb860836 100644 --- a/netbox/dcim/forms/bulk_import.py +++ b/netbox/dcim/forms/bulk_import.py @@ -595,7 +595,8 @@ class InterfaceCSVForm(CustomFieldModelCSVForm): model = Interface fields = ( 'device', 'name', 'label', 'parent', 'lag', 'type', 'enabled', 'mark_connected', 'mac_address', 'wwn', - 'mtu', 'mgmt_only', 'description', 'mode', 'rf_role', 'rf_channel', 'rf_channel_width', + 'mtu', 'mgmt_only', 'description', 'mode', 'rf_role', 'rf_channel', 'rf_channel_frequency', + 'rf_channel_width', ) def __init__(self, *args, **kwargs): diff --git a/netbox/dcim/forms/filtersets.py b/netbox/dcim/forms/filtersets.py index fb9449d41..e28714914 100644 --- a/netbox/dcim/forms/filtersets.py +++ b/netbox/dcim/forms/filtersets.py @@ -1014,9 +1014,13 @@ class InterfaceFilterForm(DeviceComponentFilterForm): widget=StaticSelectMultiple(), label='Wireless channel' ) + rf_channel_frequency = forms.IntegerField( + required=False, + label='Channel frequency (MHz)' + ) rf_channel_width = forms.IntegerField( required=False, - label='Channel width (kHz)' + label='Channel width (MHz)' ) tag = TagFilterField(model) diff --git a/netbox/dcim/forms/models.py b/netbox/dcim/forms/models.py index 675319f11..603767518 100644 --- a/netbox/dcim/forms/models.py +++ b/netbox/dcim/forms/models.py @@ -1108,8 +1108,8 @@ class InterfaceForm(BootstrapMixin, InterfaceCommonForm, CustomFieldModelForm): model = Interface fields = [ 'device', 'name', 'label', 'type', 'enabled', 'parent', 'lag', 'mac_address', 'wwn', 'mtu', 'mgmt_only', - 'mark_connected', 'description', 'mode', 'rf_role', 'rf_channel', 'rf_channel_width', 'wireless_lans', - 'untagged_vlan', 'tagged_vlans', 'tags', + 'mark_connected', 'description', 'mode', 'rf_role', 'rf_channel', 'rf_channel_frequency', + 'rf_channel_width', 'wireless_lans', 'untagged_vlan', 'tagged_vlans', 'tags', ] widgets = { 'device': forms.HiddenInput(), @@ -1123,6 +1123,8 @@ class InterfaceForm(BootstrapMixin, InterfaceCommonForm, CustomFieldModelForm): } help_texts = { 'mode': INTERFACE_MODE_HELP_TEXT, + 'rf_channel_frequency': "Populated by selected channel (if set)", + 'rf_channel_width': "Populated by selected channel (if set)", } def __init__(self, *args, **kwargs): diff --git a/netbox/dcim/forms/object_create.py b/netbox/dcim/forms/object_create.py index f924fb5d9..547fe7e68 100644 --- a/netbox/dcim/forms/object_create.py +++ b/netbox/dcim/forms/object_create.py @@ -480,9 +480,13 @@ class InterfaceCreateForm(ComponentCreateForm, InterfaceCommonForm): widget=StaticSelect(), label='Wireless channel' ) - rf_channel_width = forms.IntegerField( + rf_channel_frequency = forms.DecimalField( required=False, - label='Channel width' + label='Channel frequency (MHz)' + ) + rf_channel_width = forms.DecimalField( + required=False, + label='Channel width (MHz)' ) untagged_vlan = DynamicModelChoiceField( queryset=VLAN.objects.all(), @@ -494,8 +498,8 @@ class InterfaceCreateForm(ComponentCreateForm, InterfaceCommonForm): ) field_order = ( 'device', 'name_pattern', 'label_pattern', 'type', 'enabled', 'parent', 'lag', 'mtu', 'mac_address', - 'description', 'mgmt_only', 'mark_connected', 'rf_role', 'rf_channel', 'rf_channel_width', 'mode', - 'untagged_vlan', 'tagged_vlans', 'tags' + 'description', 'mgmt_only', 'mark_connected', 'rf_role', 'rf_channel', 'rf_channel_frequency', + 'rf_channel_width', 'mode', 'untagged_vlan', 'tagged_vlans', 'tags' ) def __init__(self, *args, **kwargs): diff --git a/netbox/dcim/migrations/0138_wireless.py b/netbox/dcim/migrations/0138_wireless.py index faebcf268..bbdb28283 100644 --- a/netbox/dcim/migrations/0138_wireless.py +++ b/netbox/dcim/migrations/0138_wireless.py @@ -20,10 +20,15 @@ class Migration(migrations.Migration): name='rf_channel', field=models.CharField(blank=True, max_length=50), ), + migrations.AddField( + model_name='interface', + name='rf_channel_frequency', + field=models.DecimalField(blank=True, decimal_places=2, max_digits=7, null=True), + ), migrations.AddField( model_name='interface', name='rf_channel_width', - field=models.PositiveSmallIntegerField(blank=True, null=True), + field=models.DecimalField(blank=True, decimal_places=3, max_digits=7, null=True), ), migrations.AddField( model_name='interface', diff --git a/netbox/dcim/models/device_components.py b/netbox/dcim/models/device_components.py index bb18e0c26..c2a37fcae 100644 --- a/netbox/dcim/models/device_components.py +++ b/netbox/dcim/models/device_components.py @@ -19,6 +19,7 @@ from utilities.ordering import naturalize_interface from utilities.querysets import RestrictedQuerySet from utilities.query_functions import CollateAsChar from wireless.choices import * +from wireless.utils import get_channel_attr __all__ = ( @@ -537,10 +538,19 @@ class Interface(ComponentModel, BaseInterface, LinkTermination, PathEndpoint): blank=True, verbose_name='Wireless channel' ) - rf_channel_width = models.PositiveSmallIntegerField( + rf_channel_frequency = models.DecimalField( + max_digits=7, + decimal_places=2, blank=True, null=True, - verbose_name='Channel width (kHz)' + verbose_name='Channel frequency (MHz)' + ) + rf_channel_width = models.DecimalField( + max_digits=7, + decimal_places=3, + blank=True, + null=True, + verbose_name='Channel width (MHz)' ) wireless_link = models.ForeignKey( to='wireless.WirelessLink', @@ -641,13 +651,33 @@ class Interface(ComponentModel, BaseInterface, LinkTermination, PathEndpoint): if self.pk and self.lag_id == self.pk: raise ValidationError({'lag': "A LAG interface cannot be its own parent."}) - # RF channel attributes may be set only for wireless interfaces + # RF role & channel may only be set for wireless interfaces if self.rf_role and not self.is_wireless: raise ValidationError({'rf_role': "Wireless role may be set only on wireless interfaces."}) if self.rf_channel and not self.is_wireless: raise ValidationError({'rf_channel': "Channel may be set only on wireless interfaces."}) - if self.rf_channel_width and not self.is_wireless: - raise ValidationError({'rf_channel_width': "Channel width may be set only on wireless interfaces."}) + + # Validate channel frequency against interface type and selected channel (if any) + if self.rf_channel_frequency: + if not self.is_wireless: + raise ValidationError({ + 'rf_channel_frequency': "Channel frequency may be set only on wireless interfaces.", + }) + if self.rf_channel and self.rf_channel_frequency != get_channel_attr(self.rf_channel, 'frequency'): + raise ValidationError({ + 'rf_channel_frequency': "Cannot specify custom frequency with channel selected.", + }) + elif self.rf_channel: + self.rf_channel_frequency = get_channel_attr(self.rf_channel, 'frequency') + + # Validate channel width against interface type and selected channel (if any) + if self.rf_channel_width: + if not self.is_wireless: + raise ValidationError({'rf_channel_width': "Channel width may be set only on wireless interfaces."}) + if self.rf_channel and self.rf_channel_width != get_channel_attr(self.rf_channel, 'width'): + raise ValidationError({'rf_channel_width': "Cannot specify custom width with channel selected."}) + elif self.rf_channel: + self.rf_channel_width = get_channel_attr(self.rf_channel, 'width') # Validate untagged VLAN if self.untagged_vlan and self.untagged_vlan.site not in [self.device.site, None]: diff --git a/netbox/dcim/tables/devices.py b/netbox/dcim/tables/devices.py index b0ef9807e..3b0ec349e 100644 --- a/netbox/dcim/tables/devices.py +++ b/netbox/dcim/tables/devices.py @@ -496,8 +496,9 @@ class InterfaceTable(DeviceComponentTable, BaseInterfaceTable, PathEndpointTable model = Interface fields = ( 'pk', 'name', 'device', 'label', 'enabled', 'type', 'mgmt_only', 'mtu', 'mode', 'mac_address', 'wwn', - 'rf_role', 'rf_channel', 'rf_channel_width', 'description', 'mark_connected', 'cable', 'cable_color', - 'wireless_link', 'link_peer', 'connection', 'tags', 'ip_addresses', 'untagged_vlan', 'tagged_vlans', + 'rf_role', 'rf_channel', 'rf_channel_frequency', 'rf_channel_width', 'description', 'mark_connected', + 'cable', 'cable_color', 'wireless_link', 'link_peer', 'connection', 'tags', 'ip_addresses', 'untagged_vlan', + 'tagged_vlans', ) default_columns = ('pk', 'name', 'device', 'label', 'enabled', 'type', 'description') diff --git a/netbox/templates/dcim/interface.html b/netbox/templates/dcim/interface.html index 427ea8352..6e01dee98 100644 --- a/netbox/templates/dcim/interface.html +++ b/netbox/templates/dcim/interface.html @@ -276,9 +276,25 @@ Channel {{ object.get_rf_channel_display|placeholder }} + + Channel Frequency + + {% if object.rf_channel_frequency %} + {{ object.rf_channel_frequency|simplify_decimal }} MHz + {% else %} + + {% endif %} + + Channel Width - {{ object.rf_channel_width|placeholder }} + + {% if object.rf_channel_width %} + {{ object.rf_channel_width|simplify_decimal }} MHz + {% else %} + + {% endif %} + diff --git a/netbox/templates/dcim/interface_edit.html b/netbox/templates/dcim/interface_edit.html index cb8d51828..de7d21269 100644 --- a/netbox/templates/dcim/interface_edit.html +++ b/netbox/templates/dcim/interface_edit.html @@ -36,6 +36,7 @@ {% render_field form.rf_role %} {% render_field form.rf_channel %} + {% render_field form.rf_channel_frequency %} {% render_field form.rf_channel_width %} {% render_field form.wireless_lans %} diff --git a/netbox/templates/wireless/inc/wirelesslink_interface.html b/netbox/templates/wireless/inc/wirelesslink_interface.html index 82f7cfd8d..e33047539 100644 --- a/netbox/templates/wireless/inc/wirelesslink_interface.html +++ b/netbox/templates/wireless/inc/wirelesslink_interface.html @@ -31,4 +31,24 @@ {{ interface.get_rf_channel_display|placeholder }} + + Channel Frequency + + {% if interface.rf_channel_frequency %} + {{ interface.rf_channel_frequency|simplify_decimal }} MHz + {% else %} + + {% endif %} + + + + Channel Width + + {% if interface.rf_channel_width %} + {{ interface.rf_channel_width|simplify_decimal }} MHz + {% else %} + + {% endif %} + + diff --git a/netbox/utilities/templatetags/helpers.py b/netbox/utilities/templatetags/helpers.py index a900d59e2..668596c8e 100644 --- a/netbox/utilities/templatetags/helpers.py +++ b/netbox/utilities/templatetags/helpers.py @@ -1,4 +1,5 @@ import datetime +import decimal import json import re from typing import Dict, Any @@ -146,6 +147,19 @@ def humanize_megabytes(mb): return f'{mb} MB' +@register.filter() +def simplify_decimal(value): + """ + Return the simplest expression of a decimal value. Examples: + 1.00 => '1' + 1.20 => '1.2' + 1.23 => '1.23' + """ + if type(value) is not decimal.Decimal: + return value + return str(value).rstrip('0.') + + @register.filter() def tzoffset(value): """ diff --git a/netbox/wireless/choices.py b/netbox/wireless/choices.py index 1369ee340..8a710b532 100644 --- a/netbox/wireless/choices.py +++ b/netbox/wireless/choices.py @@ -12,81 +12,79 @@ class WirelessRoleChoices(ChoiceSet): class WirelessChannelChoices(ChoiceSet): - CHANNEL_AUTO = 'auto' # 2.4 GHz - CHANNEL_24G_1 = '2.4g-1' - CHANNEL_24G_2 = '2.4g-2' - CHANNEL_24G_3 = '2.4g-3' - CHANNEL_24G_4 = '2.4g-4' - CHANNEL_24G_5 = '2.4g-5' - CHANNEL_24G_6 = '2.4g-6' - CHANNEL_24G_7 = '2.4g-7' - CHANNEL_24G_8 = '2.4g-8' - CHANNEL_24G_9 = '2.4g-9' - CHANNEL_24G_10 = '2.4g-10' - CHANNEL_24G_11 = '2.4g-11' - CHANNEL_24G_12 = '2.4g-12' - CHANNEL_24G_13 = '2.4g-13' + CHANNEL_24G_1 = '2.4g-1-2412-22' + CHANNEL_24G_2 = '2.4g-2-2417-22' + CHANNEL_24G_3 = '2.4g-3-2422-22' + CHANNEL_24G_4 = '2.4g-4-2427-22' + CHANNEL_24G_5 = '2.4g-5-2432-22' + CHANNEL_24G_6 = '2.4g-6-2437-22' + CHANNEL_24G_7 = '2.4g-7-2442-22' + CHANNEL_24G_8 = '2.4g-8-2447-22' + CHANNEL_24G_9 = '2.4g-9-2452-22' + CHANNEL_24G_10 = '2.4g-10-2457-22' + CHANNEL_24G_11 = '2.4g-11-2462-22' + CHANNEL_24G_12 = '2.4g-12-2467-22' + CHANNEL_24G_13 = '2.4g-13-2472-22' # 5 GHz - CHANNEL_5G_32 = '5g-32' - CHANNEL_5G_34 = '5g-34' - CHANNEL_5G_36 = '5g-36' - CHANNEL_5G_38 = '5g-38' - CHANNEL_5G_40 = '5g-40' - CHANNEL_5G_42 = '5g-42' - CHANNEL_5G_44 = '5g-44' - CHANNEL_5G_46 = '5g-46' - CHANNEL_5G_48 = '5g-48' - CHANNEL_5G_50 = '5g-50' - CHANNEL_5G_52 = '5g-52' - CHANNEL_5G_54 = '5g-54' - CHANNEL_5G_56 = '5g-56' - CHANNEL_5G_58 = '5g-58' - CHANNEL_5G_60 = '5g-60' - CHANNEL_5G_62 = '5g-62' - CHANNEL_5G_64 = '5g-64' - CHANNEL_5G_100 = '5g-100' - CHANNEL_5G_102 = '5g-102' - CHANNEL_5G_104 = '5g-104' - CHANNEL_5G_106 = '5g-106' - CHANNEL_5G_108 = '5g-108' - CHANNEL_5G_110 = '5g-110' - CHANNEL_5G_112 = '5g-112' - CHANNEL_5G_114 = '5g-114' - CHANNEL_5G_116 = '5g-116' - CHANNEL_5G_118 = '5g-118' - CHANNEL_5G_120 = '5g-120' - CHANNEL_5G_122 = '5g-122' - CHANNEL_5G_124 = '5g-124' - CHANNEL_5G_126 = '5g-126' - CHANNEL_5G_128 = '5g-128' - CHANNEL_5G_132 = '5g-132' - CHANNEL_5G_134 = '5g-134' - CHANNEL_5G_136 = '5g-136' - CHANNEL_5G_138 = '5g-138' - CHANNEL_5G_140 = '5g-140' - CHANNEL_5G_142 = '5g-142' - CHANNEL_5G_144 = '5g-144' - CHANNEL_5G_149 = '5g-149' - CHANNEL_5G_151 = '5g-151' - CHANNEL_5G_153 = '5g-153' - CHANNEL_5G_155 = '5g-155' - CHANNEL_5G_157 = '5g-157' - CHANNEL_5G_159 = '5g-159' - CHANNEL_5G_161 = '5g-161' - CHANNEL_5G_163 = '5g-163' - CHANNEL_5G_165 = '5g-165' - CHANNEL_5G_167 = '5g-167' - CHANNEL_5G_169 = '5g-169' - CHANNEL_5G_171 = '5g-171' - CHANNEL_5G_173 = '5g-173' - CHANNEL_5G_175 = '5g-175' - CHANNEL_5G_177 = '5g-177' + CHANNEL_5G_32 = '5g-32-5160-20' + CHANNEL_5G_34 = '5g-34-5170-40' + CHANNEL_5G_36 = '5g-36-5180-20' + CHANNEL_5G_38 = '5g-38-5190-40' + CHANNEL_5G_40 = '5g-40-5200-20' + CHANNEL_5G_42 = '5g-42-5210-80' + CHANNEL_5G_44 = '5g-44-5220-20' + CHANNEL_5G_46 = '5g-46-5230-40' + CHANNEL_5G_48 = '5g-48-5240-20' + CHANNEL_5G_50 = '5g-50-5250-160' + CHANNEL_5G_52 = '5g-52-5260-20' + CHANNEL_5G_54 = '5g-54-5270-40' + CHANNEL_5G_56 = '5g-56-5280-20' + CHANNEL_5G_58 = '5g-58-5290-80' + CHANNEL_5G_60 = '5g-60-5300-20' + CHANNEL_5G_62 = '5g-62-5310-40' + CHANNEL_5G_64 = '5g-64-5320-20' + CHANNEL_5G_100 = '5g-100-5500-20' + CHANNEL_5G_102 = '5g-102-5510-40' + CHANNEL_5G_104 = '5g-104-5520-20' + CHANNEL_5G_106 = '5g-106-5530-80' + CHANNEL_5G_108 = '5g-108-5540-20' + CHANNEL_5G_110 = '5g-110-5550-40' + CHANNEL_5G_112 = '5g-112-5560-20' + CHANNEL_5G_114 = '5g-114-5570-160' + CHANNEL_5G_116 = '5g-116-5580-20' + CHANNEL_5G_118 = '5g-118-5590-40' + CHANNEL_5G_120 = '5g-120-5600-20' + CHANNEL_5G_122 = '5g-122-5610-80' + CHANNEL_5G_124 = '5g-124-5620-20' + CHANNEL_5G_126 = '5g-126-5630-40' + CHANNEL_5G_128 = '5g-128-5640-20' + CHANNEL_5G_132 = '5g-132-5660-20' + CHANNEL_5G_134 = '5g-134-5670-40' + CHANNEL_5G_136 = '5g-136-5680-20' + CHANNEL_5G_138 = '5g-138-5690-80' + CHANNEL_5G_140 = '5g-140-5700-20' + CHANNEL_5G_142 = '5g-142-5710-40' + CHANNEL_5G_144 = '5g-144-5720-20' + CHANNEL_5G_149 = '5g-149-5745-20' + CHANNEL_5G_151 = '5g-151-5755-40' + CHANNEL_5G_153 = '5g-153-5765-20' + CHANNEL_5G_155 = '5g-155-5775-80' + CHANNEL_5G_157 = '5g-157-5785-20' + CHANNEL_5G_159 = '5g-159-5795-40' + CHANNEL_5G_161 = '5g-161-5805-20' + CHANNEL_5G_163 = '5g-163-5815-160' + CHANNEL_5G_165 = '5g-165-5825-20' + CHANNEL_5G_167 = '5g-167-5835-40' + CHANNEL_5G_169 = '5g-169-5845-20' + CHANNEL_5G_171 = '5g-171-5855-80' + CHANNEL_5G_173 = '5g-173-5865-20' + CHANNEL_5G_175 = '5g-175-5875-40' + CHANNEL_5G_177 = '5g-177-5885-20' CHOICES = ( - (CHANNEL_AUTO, 'Auto'), ( '2.4 GHz (802.11b/g/n/ax)', ( diff --git a/netbox/wireless/forms/models.py b/netbox/wireless/forms/models.py index a3454c79a..9a7b78b31 100644 --- a/netbox/wireless/forms/models.py +++ b/netbox/wireless/forms/models.py @@ -56,7 +56,10 @@ class WirelessLANForm(BootstrapMixin, CustomFieldModelForm): class WirelessLinkForm(BootstrapMixin, CustomFieldModelForm): device_a = DynamicModelChoiceField( queryset=Device.objects.all(), - label='Device A' + label='Device A', + initial_params={ + 'interfaces': '$interface_a' + } ) interface_a = DynamicModelChoiceField( queryset=Interface.objects.all(), @@ -69,7 +72,10 @@ class WirelessLinkForm(BootstrapMixin, CustomFieldModelForm): ) device_b = DynamicModelChoiceField( queryset=Device.objects.all(), - label='Device B' + label='Device B', + initial_params={ + 'interfaces': '$interface_b' + } ) interface_b = DynamicModelChoiceField( queryset=Interface.objects.all(), diff --git a/netbox/wireless/utils.py b/netbox/wireless/utils.py new file mode 100644 index 000000000..d98d6a853 --- /dev/null +++ b/netbox/wireless/utils.py @@ -0,0 +1,27 @@ +from decimal import Decimal + +from .choices import WirelessChannelChoices + +__all__ = ( + 'get_channel_attr', +) + + +def get_channel_attr(channel, attr): + """ + Return the specified attribute of a given WirelessChannelChoices value. + """ + if channel not in WirelessChannelChoices.values(): + raise ValueError(f"Invalid channel value: {channel}") + + channel_values = channel.split('-') + attrs = { + 'band': channel_values[0], + 'id': int(channel_values[1]), + 'frequency': Decimal(channel_values[2]), + 'width': Decimal(channel_values[3]), + } + if attr not in attrs: + raise ValueError(f"Invalid channel attribute: {attr}") + + return attrs[attr] From 717fd760df62dd9ad1d994c8fc1893169109988a Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Fri, 15 Oct 2021 12:24:07 -0400 Subject: [PATCH 029/289] #3979: UI cleanup --- netbox/dcim/forms/models.py | 12 +- netbox/dcim/tables/devices.py | 4 +- netbox/dcim/tables/template_code.py | 10 ++ netbox/templates/dcim/interface.html | 128 ++++++++++++++++------ netbox/templates/dcim/interface_edit.html | 1 + netbox/utilities/templatetags/helpers.py | 2 +- netbox/wireless/filtersets.py | 3 + 7 files changed, 124 insertions(+), 36 deletions(-) diff --git a/netbox/dcim/forms/models.py b/netbox/dcim/forms/models.py index 603767518..9ce0b54aa 100644 --- a/netbox/dcim/forms/models.py +++ b/netbox/dcim/forms/models.py @@ -16,7 +16,7 @@ from utilities.forms import ( SlugField, StaticSelect, ) from virtualization.models import Cluster, ClusterGroup -from wireless.models import WirelessLAN +from wireless.models import WirelessLAN, WirelessLANGroup from .common import InterfaceCommonForm __all__ = ( @@ -1073,10 +1073,18 @@ class InterfaceForm(BootstrapMixin, InterfaceCommonForm, CustomFieldModelForm): 'type': 'lag', } ) + wireless_lan_group = DynamicModelChoiceField( + queryset=WirelessLANGroup.objects.all(), + required=False, + label='Wireless LAN group' + ) wireless_lans = DynamicModelMultipleChoiceField( queryset=WirelessLAN.objects.all(), required=False, - label='Wireless LANs' + label='Wireless LANs', + query_params={ + 'group_id': '$wireless_lan_group', + } ) vlan_group = DynamicModelChoiceField( queryset=VLANGroup.objects.all(), diff --git a/netbox/dcim/tables/devices.py b/netbox/dcim/tables/devices.py index 3b0ec349e..3b92efd76 100644 --- a/netbox/dcim/tables/devices.py +++ b/netbox/dcim/tables/devices.py @@ -505,8 +505,8 @@ class InterfaceTable(DeviceComponentTable, BaseInterfaceTable, PathEndpointTable class DeviceInterfaceTable(InterfaceTable): name = tables.TemplateColumn( - template_code=' {{ value }}', order_by=Accessor('_name'), attrs={'td': {'class': 'text-nowrap'}} diff --git a/netbox/dcim/tables/template_code.py b/netbox/dcim/tables/template_code.py index a5a4d9979..a948baffd 100644 --- a/netbox/dcim/tables/template_code.py +++ b/netbox/dcim/tables/template_code.py @@ -205,6 +205,12 @@ INTERFACE_BUTTONS = """ {% endif %} +{% elif record.wireless_link %} + {% if perms.wireless.delete_wirelesslink %} + + + + {% endif %} {% elif record.is_wired and perms.dcim.add_cable %} @@ -223,6 +229,10 @@ INTERFACE_BUTTONS = """ {% else %} {% endif %} +{% elif record.is_wireless and perms.wireless.add_wirelesslink %} + + + {% endif %} """ diff --git a/netbox/templates/dcim/interface.html b/netbox/templates/dcim/interface.html index 6e01dee98..e9230fbf9 100644 --- a/netbox/templates/dcim/interface.html +++ b/netbox/templates/dcim/interface.html @@ -217,8 +217,29 @@ Wireless Link {{ object.wireless_link }} + + + + {% with peer_interface=object.connected_endpoint %} + + Device + + {{ peer_interface.device }} + + + + Name + + {{ peer_interface }} + + + + Type + {{ peer_interface.get_type_display }} + + {% endwith %} {% else %}
@@ -267,36 +288,73 @@
Wireless
- - - - - - - - - - - - - - - - - -
Role{{ object.get_rf_role_display|placeholder }}
Channel{{ object.get_rf_channel_display|placeholder }}
Channel Frequency - {% if object.rf_channel_frequency %} - {{ object.rf_channel_frequency|simplify_decimal }} MHz - {% else %} - - {% endif %} -
Channel Width - {% if object.rf_channel_width %} - {{ object.rf_channel_width|simplify_decimal }} MHz - {% else %} - - {% endif %} -
+ {% with peer=object.connected_endpoint %} + + + + + + {% if peer %} + + {% endif %} + + + + + + {% if peer %} + + {% endif %} + + + + + {% if peer %} + + {{ peer.get_rf_channel_display|placeholder }} + + {% endif %} + + + + + {% if peer %} + + {% if peer.rf_channel_frequency %} + {{ peer.rf_channel_frequency|simplify_decimal }} MHz + {% else %} + + {% endif %} + + {% endif %} + + + + + {% if peer %} + + {% if peer.rf_channel_width %} + {{ peer.rf_channel_width|simplify_decimal }} MHz + {% else %} + + {% endif %} + + {% endif %} + +
LocalPeer
Role{{ object.get_rf_role_display|placeholder }}{{ peer.get_rf_role_display|placeholder }}
Channel{{ object.get_rf_channel_display|placeholder }}
Channel Frequency + {% if object.rf_channel_frequency %} + {{ object.rf_channel_frequency|simplify_decimal }} MHz + {% else %} + + {% endif %} +
Channel Width + {% if object.rf_channel_width %} + {{ object.rf_channel_width|simplify_decimal }} MHz + {% else %} + + {% endif %} +
+ {% endwith %}
@@ -305,12 +363,20 @@ + - {% for wlan in object.wlans.all %} + {% for wlan in object.wireless_lans.all %} + diff --git a/netbox/templates/dcim/interface_edit.html b/netbox/templates/dcim/interface_edit.html index de7d21269..aec88d25a 100644 --- a/netbox/templates/dcim/interface_edit.html +++ b/netbox/templates/dcim/interface_edit.html @@ -38,6 +38,7 @@ {% render_field form.rf_channel %} {% render_field form.rf_channel_frequency %} {% render_field form.rf_channel_width %} + {% render_field form.wireless_lan_group %} {% render_field form.wireless_lans %} {% endif %} diff --git a/netbox/utilities/templatetags/helpers.py b/netbox/utilities/templatetags/helpers.py index 668596c8e..3318fe1e7 100644 --- a/netbox/utilities/templatetags/helpers.py +++ b/netbox/utilities/templatetags/helpers.py @@ -157,7 +157,7 @@ def simplify_decimal(value): """ if type(value) is not decimal.Decimal: return value - return str(value).rstrip('0.') + return str(value).rstrip('0').rstrip('.') @register.filter() diff --git a/netbox/wireless/filtersets.py b/netbox/wireless/filtersets.py index ac503e474..a5d9b7d75 100644 --- a/netbox/wireless/filtersets.py +++ b/netbox/wireless/filtersets.py @@ -33,6 +33,9 @@ class WirelessLANFilterSet(PrimaryModelFilterSet): method='search', label='Search', ) + group_id = django_filters.ModelMultipleChoiceFilter( + queryset=WirelessLANGroup.objects.all() + ) tag = TagFilter() class Meta: From 0c72c20d2aa1b3db087eb63613fc087528a2095b Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Mon, 18 Oct 2021 10:05:43 -0400 Subject: [PATCH 030/289] Add WirelessLANs column to interfaces table --- netbox/dcim/tables/devices.py | 19 ++++++++++--------- netbox/dcim/tables/template_code.py | 6 ++++++ 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/netbox/dcim/tables/devices.py b/netbox/dcim/tables/devices.py index 3b92efd76..343667d46 100644 --- a/netbox/dcim/tables/devices.py +++ b/netbox/dcim/tables/devices.py @@ -11,11 +11,7 @@ from utilities.tables import ( BaseTable, BooleanColumn, ButtonsColumn, ChoiceFieldColumn, ColorColumn, ColoredLabelColumn, LinkedCountColumn, MarkdownColumn, TagColumn, TemplateColumn, ToggleColumn, ) -from .template_code import ( - LINKTERMINATION, CONSOLEPORT_BUTTONS, CONSOLESERVERPORT_BUTTONS, DEVICE_LINK, DEVICEBAY_BUTTONS, DEVICEBAY_STATUS, - FRONTPORT_BUTTONS, INTERFACE_BUTTONS, INTERFACE_IPADDRESSES, INTERFACE_TAGGED_VLANS, POWEROUTLET_BUTTONS, - POWERPORT_BUTTONS, REARPORT_BUTTONS, -) +from .template_code import * __all__ = ( 'BaseInterfaceTable', @@ -488,6 +484,11 @@ class InterfaceTable(DeviceComponentTable, BaseInterfaceTable, PathEndpointTable wireless_link = tables.Column( linkify=True ) + wireless_lans = TemplateColumn( + template_code=INTERFACE_WIRELESS_LANS, + orderable=False, + verbose_name='Wireless LANs' + ) tags = TagColumn( url_name='dcim:interface_list' ) @@ -497,8 +498,8 @@ class InterfaceTable(DeviceComponentTable, BaseInterfaceTable, PathEndpointTable fields = ( 'pk', 'name', 'device', 'label', 'enabled', 'type', 'mgmt_only', 'mtu', 'mode', 'mac_address', 'wwn', 'rf_role', 'rf_channel', 'rf_channel_frequency', 'rf_channel_width', 'description', 'mark_connected', - 'cable', 'cable_color', 'wireless_link', 'link_peer', 'connection', 'tags', 'ip_addresses', 'untagged_vlan', - 'tagged_vlans', + 'cable', 'cable_color', 'wireless_link', 'wireless_lans', 'link_peer', 'connection', 'tags', 'ip_addresses', + 'untagged_vlan', 'tagged_vlans', ) default_columns = ('pk', 'name', 'device', 'label', 'enabled', 'type', 'description') @@ -530,8 +531,8 @@ class DeviceInterfaceTable(InterfaceTable): fields = ( 'pk', 'name', 'label', 'enabled', 'type', 'parent', 'lag', 'mgmt_only', 'mtu', 'mode', 'mac_address', 'wwn', 'rf_role', 'rf_channel', 'rf_channel_width', 'description', 'mark_connected', 'cable', 'cable_color', - 'wireless_link', 'link_peer', 'connection', 'tags', 'ip_addresses', 'untagged_vlan', 'tagged_vlans', - 'actions', + 'wireless_link', 'wireless_lans', 'link_peer', 'connection', 'tags', 'ip_addresses', 'untagged_vlan', + 'tagged_vlans', 'actions', ) order_by = ('name',) default_columns = ( diff --git a/netbox/dcim/tables/template_code.py b/netbox/dcim/tables/template_code.py index a948baffd..aab15b5ef 100644 --- a/netbox/dcim/tables/template_code.py +++ b/netbox/dcim/tables/template_code.py @@ -64,6 +64,12 @@ INTERFACE_TAGGED_VLANS = """ {% endif %} """ +INTERFACE_WIRELESS_LANS = """ +{% for wlan in record.wireless_lans.all %} + {{ wlan }}
+{% endfor %} +""" + POWERFEED_CABLE = """ {{ value }} From 2e78568d4de3afe015cb50fd2a4461b30b7b6557 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Mon, 18 Oct 2021 11:45:05 -0400 Subject: [PATCH 031/289] Initial work on contacts --- netbox/netbox/navigation_menu.py | 8 + netbox/templates/tenancy/contact.html | 66 ++++++++ netbox/templates/tenancy/contactgroup.html | 76 +++++++++ netbox/templates/tenancy/contactrole.html | 46 ++++++ netbox/tenancy/api/nested_serializers.py | 35 ++++- netbox/tenancy/api/serializers.py | 60 +++++++- netbox/tenancy/api/urls.py | 6 + netbox/tenancy/api/views.py | 46 +++++- netbox/tenancy/choices.py | 19 +++ netbox/tenancy/filtersets.py | 98 +++++++++++- netbox/tenancy/forms/bulk_edit.py | 59 ++++++- netbox/tenancy/forms/bulk_import.py | 49 +++++- netbox/tenancy/forms/filtersets.py | 66 +++++++- netbox/tenancy/forms/models.py | 59 ++++++- netbox/tenancy/graphql/schema.py | 12 ++ netbox/tenancy/graphql/types.py | 53 +++++++ netbox/tenancy/migrations/0003_contacts.py | 98 ++++++++++++ netbox/tenancy/models.py | 164 +++++++++++++++++++- netbox/tenancy/tables.py | 78 +++++++++- netbox/tenancy/tests/test_api.py | 111 ++++++++++++- netbox/tenancy/tests/test_filtersets.py | 102 +++++++++++- netbox/tenancy/tests/test_views.py | 104 ++++++++++++- netbox/tenancy/urls.py | 37 ++++- netbox/tenancy/views.py | 171 ++++++++++++++++++++- 24 files changed, 1594 insertions(+), 29 deletions(-) create mode 100644 netbox/templates/tenancy/contact.html create mode 100644 netbox/templates/tenancy/contactgroup.html create mode 100644 netbox/templates/tenancy/contactrole.html create mode 100644 netbox/tenancy/choices.py create mode 100644 netbox/tenancy/migrations/0003_contacts.py diff --git a/netbox/netbox/navigation_menu.py b/netbox/netbox/navigation_menu.py index a3978f16e..de2c170a3 100644 --- a/netbox/netbox/navigation_menu.py +++ b/netbox/netbox/navigation_menu.py @@ -120,6 +120,14 @@ ORGANIZATION_MENU = Menu( get_model_item('tenancy', 'tenantgroup', 'Tenant Groups'), ), ), + MenuGroup( + label='Contacts', + items=( + get_model_item('tenancy', 'contact', 'Contacts'), + get_model_item('tenancy', 'contactgroup', 'Contact Groups'), + get_model_item('tenancy', 'contactrole', 'Contact Roles'), + ), + ), ), ) diff --git a/netbox/templates/tenancy/contact.html b/netbox/templates/tenancy/contact.html new file mode 100644 index 000000000..2ead52e5a --- /dev/null +++ b/netbox/templates/tenancy/contact.html @@ -0,0 +1,66 @@ +{% extends 'generic/object.html' %} +{% load helpers %} +{% load plugins %} + +{% block breadcrumbs %} + {{ block.super }} + {% if object.group %} + + {% endif %} +{% endblock breadcrumbs %} + +{% block content %} +
+
+
+
Tenant
+
+
Group SSID
+ {% if wlan.group %} + {{ wlan.group }} + {% else %} + — + {% endif %} + {{ wlan.ssid }}
+ + + + + + + + + + + + + + + + + + + + + + + + +
Group + {% if object.group %} + {{ object.group }} + {% else %} + None + {% endif %} +
Name{{ object.name }}
Title{{ object.tile|placeholder }}
Phone{{ object.phone|placeholder }}
Email{{ object.email|placeholder }}
Address{{ object.address|linebreaksbr|placeholder }}
+
+
+ {% include 'inc/comments_panel.html' %} + {% plugin_left_page object %} + +
+ {% include 'inc/custom_fields_panel.html' %} + {% include 'extras/inc/tags_panel.html' with tags=object.tags.all url='tenancy:tenant_list' %} + {% plugin_right_page object %} +
+ +
+
+ {% plugin_full_width_page object %} +
+
+{% endblock %} diff --git a/netbox/templates/tenancy/contactgroup.html b/netbox/templates/tenancy/contactgroup.html new file mode 100644 index 000000000..1511565c3 --- /dev/null +++ b/netbox/templates/tenancy/contactgroup.html @@ -0,0 +1,76 @@ +{% extends 'generic/object.html' %} +{% load helpers %} +{% load plugins %} + +{% block breadcrumbs %} + {{ block.super }} + {% for contactgroup in object.get_ancestors %} + + {% endfor %} +{% endblock %} + +{% block content %} +
+
+
+
+ Contact Group +
+
+ + + + + + + + + + + + + + + + + +
Name{{ object.name }}
Description{{ object.description|placeholder }}
Parent + {% if object.parent %} + {{ object.parent }} + {% else %} + + {% endif %} +
Contacts + {{ contacts_table.rows|length }} +
+
+
+ {% plugin_left_page object %} +
+
+ {% include 'inc/custom_fields_panel.html' %} + {% plugin_right_page object %} +
+
+
+
+
+
+ Tenants +
+
+ {% include 'inc/table.html' with table=contacts_table %} +
+ {% if perms.tenancy.add_contact %} + + {% endif %} +
+ {% include 'inc/paginator.html' with paginator=contacts_table.paginator page=contacts_table.page %} + {% plugin_full_width_page object %} +
+
+{% endblock %} diff --git a/netbox/templates/tenancy/contactrole.html b/netbox/templates/tenancy/contactrole.html new file mode 100644 index 000000000..688c58177 --- /dev/null +++ b/netbox/templates/tenancy/contactrole.html @@ -0,0 +1,46 @@ +{% extends 'generic/object.html' %} +{% load helpers %} +{% load plugins %} + +{% block breadcrumbs %} + +{% endblock %} + +{% block content %} +
+
+
+
Contact Role
+
+ + + + + + + + + +
Name{{ object.name }}
Description{{ object.description|placeholder }}
+
+
+ {% plugin_left_page object %} +
+
+ {% include 'inc/custom_fields_panel.html' %} + {% plugin_right_page object %} +
+
+
+
+
+
Assigned Contacts
+
+ {% include 'inc/table.html' with table=contacts_table %} +
+
+ {% include 'inc/paginator.html' with paginator=contacts_table.paginator page=contacts_table.page %} + {% plugin_full_width_page object %} +
+
+{% endblock %} diff --git a/netbox/tenancy/api/nested_serializers.py b/netbox/tenancy/api/nested_serializers.py index 11225fa7a..a072331f5 100644 --- a/netbox/tenancy/api/nested_serializers.py +++ b/netbox/tenancy/api/nested_serializers.py @@ -1,9 +1,12 @@ from rest_framework import serializers from netbox.api import WritableNestedSerializer -from tenancy.models import Tenant, TenantGroup +from tenancy.models import * __all__ = [ + 'NestedContactSerializer', + 'NestedContactGroupSerializer', + 'NestedContactRoleSerializer', 'NestedTenantGroupSerializer', 'NestedTenantSerializer', ] @@ -29,3 +32,33 @@ class NestedTenantSerializer(WritableNestedSerializer): class Meta: model = Tenant fields = ['id', 'url', 'display', 'name', 'slug'] + + +# +# Contacts +# + +class NestedContactGroupSerializer(WritableNestedSerializer): + url = serializers.HyperlinkedIdentityField(view_name='tenancy-api:contactgroup-detail') + contact_count = serializers.IntegerField(read_only=True) + _depth = serializers.IntegerField(source='level', read_only=True) + + class Meta: + model = ContactGroup + fields = ['id', 'url', 'display', 'name', 'slug', 'contact_count', '_depth'] + + +class NestedContactRoleSerializer(WritableNestedSerializer): + url = serializers.HyperlinkedIdentityField(view_name='tenancy-api:contactrole-detail') + + class Meta: + model = ContactRole + fields = ['id', 'url', 'display', 'name', 'slug'] + + +class NestedContactSerializer(WritableNestedSerializer): + url = serializers.HyperlinkedIdentityField(view_name='tenancy-api:contact-detail') + + class Meta: + model = Contact + fields = ['id', 'url', 'display', 'name'] diff --git a/netbox/tenancy/api/serializers.py b/netbox/tenancy/api/serializers.py index 3136c811c..2dfb59455 100644 --- a/netbox/tenancy/api/serializers.py +++ b/netbox/tenancy/api/serializers.py @@ -1,7 +1,9 @@ +from django.contrib.auth.models import ContentType from rest_framework import serializers -from netbox.api.serializers import NestedGroupModelSerializer, PrimaryModelSerializer -from tenancy.models import Tenant, TenantGroup +from netbox.api import ContentTypeField +from netbox.api.serializers import NestedGroupModelSerializer, OrganizationalModelSerializer, PrimaryModelSerializer +from tenancy.models import * from .nested_serializers import * @@ -43,3 +45,57 @@ class TenantSerializer(PrimaryModelSerializer): 'created', 'last_updated', 'circuit_count', 'device_count', 'ipaddress_count', 'prefix_count', 'rack_count', 'site_count', 'virtualmachine_count', 'vlan_count', 'vrf_count', 'cluster_count', ] + + +# +# Contacts +# + +class ContactGroupSerializer(NestedGroupModelSerializer): + url = serializers.HyperlinkedIdentityField(view_name='tenancy-api:contactgroup-detail') + parent = NestedContactGroupSerializer(required=False, allow_null=True) + contact_count = serializers.IntegerField(read_only=True) + + class Meta: + model = ContactGroup + fields = [ + 'id', 'url', 'display', 'name', 'slug', 'parent', 'description', 'custom_fields', 'created', 'last_updated', + 'contact_count', '_depth', + ] + + +class ContactRoleSerializer(OrganizationalModelSerializer): + url = serializers.HyperlinkedIdentityField(view_name='tenancy-api:contactrole-detail') + + class Meta: + model = ContactRole + fields = [ + 'id', 'url', 'display', 'name', 'slug', 'description', 'custom_fields', 'created', 'last_updated', + ] + + +class ContactSerializer(PrimaryModelSerializer): + url = serializers.HyperlinkedIdentityField(view_name='tenancy-api:contact-detail') + group = NestedContactGroupSerializer(required=False, allow_null=True) + + class Meta: + model = Contact + fields = [ + 'id', 'url', 'display', 'group', 'name', 'title', 'phone', 'email', 'address', 'comments', 'tags', + 'custom_fields', 'created', 'last_updated', + ] + + +class ContactAssignmentSerializer(PrimaryModelSerializer): + url = serializers.HyperlinkedIdentityField(view_name='tenancy-api:contactassignment-detail') + content_type = ContentTypeField( + queryset=ContentType.objects.all() + ) + contact = NestedContactSerializer() + role = NestedContactRoleSerializer(required=False, allow_null=True) + + class Meta: + model = ContactAssignment + fields = [ + 'id', 'url', 'display', 'content_type', 'object_id', 'contact', 'role', 'created', 'last_updated', + ] diff --git a/netbox/tenancy/api/urls.py b/netbox/tenancy/api/urls.py index 32540879d..00e1a6469 100644 --- a/netbox/tenancy/api/urls.py +++ b/netbox/tenancy/api/urls.py @@ -9,5 +9,11 @@ router.APIRootView = views.TenancyRootView router.register('tenant-groups', views.TenantGroupViewSet) router.register('tenants', views.TenantViewSet) +# Contacts +router.register('contact-groups', views.ContactGroupViewSet) +router.register('contact-roles', views.ContactRoleViewSet) +router.register('contacts', views.ContactViewSet) +router.register('contact-assignments', views.ContactAssignmentViewSet) + app_name = 'tenancy-api' urlpatterns = router.urls diff --git a/netbox/tenancy/api/views.py b/netbox/tenancy/api/views.py index 2e049135d..7ce16c143 100644 --- a/netbox/tenancy/api/views.py +++ b/netbox/tenancy/api/views.py @@ -5,7 +5,7 @@ from dcim.models import Device, Rack, Site from extras.api.views import CustomFieldModelViewSet from ipam.models import IPAddress, Prefix, VLAN, VRF from tenancy import filtersets -from tenancy.models import Tenant, TenantGroup +from tenancy.models import * from utilities.utils import count_related from virtualization.models import VirtualMachine from . import serializers @@ -20,7 +20,7 @@ class TenancyRootView(APIRootView): # -# Tenant Groups +# Tenants # class TenantGroupViewSet(CustomFieldModelViewSet): @@ -35,10 +35,6 @@ class TenantGroupViewSet(CustomFieldModelViewSet): filterset_class = filtersets.TenantGroupFilterSet -# -# Tenants -# - class TenantViewSet(CustomFieldModelViewSet): queryset = Tenant.objects.prefetch_related( 'group', 'tags' @@ -55,3 +51,41 @@ class TenantViewSet(CustomFieldModelViewSet): ) serializer_class = serializers.TenantSerializer filterset_class = filtersets.TenantFilterSet + + +# +# Contacts +# + +class ContactGroupViewSet(CustomFieldModelViewSet): + queryset = ContactGroup.objects.add_related_count( + ContactGroup.objects.all(), + Contact, + 'group', + 'contact_count', + cumulative=True + ) + serializer_class = serializers.ContactGroupSerializer + filterset_class = filtersets.ContactGroupFilterSet + + +class ContactRoleViewSet(CustomFieldModelViewSet): + queryset = ContactRole.objects.all() + serializer_class = serializers.ContactRoleSerializer + filterset_class = filtersets.ContactRoleFilterSet + + +class ContactViewSet(CustomFieldModelViewSet): + queryset = Contact.objects.prefetch_related( + 'group', 'tags' + ) + serializer_class = serializers.ContactSerializer + filterset_class = filtersets.ContactFilterSet + + +class ContactAssignmentViewSet(CustomFieldModelViewSet): + queryset = ContactAssignment.objects.prefetch_related( + 'contact', 'role' + ) + serializer_class = serializers.ContactAssignmentSerializer + filterset_class = filtersets.ContactAssignmentFilterSet diff --git a/netbox/tenancy/choices.py b/netbox/tenancy/choices.py new file mode 100644 index 000000000..b59d2050d --- /dev/null +++ b/netbox/tenancy/choices.py @@ -0,0 +1,19 @@ +from utilities.choices import ChoiceSet + + +# +# Contacts +# + +class ContactPriorityChoices(ChoiceSet): + PRIORITY_PRIMARY = 'primary' + PRIORITY_SECONDARY = 'secondary' + PRIORITY_TERTIARY = 'tertiary' + PRIORITY_INACTIVE = 'inactive' + + CHOICES = ( + (PRIORITY_PRIMARY, 'Primary'), + (PRIORITY_SECONDARY, 'Secondary'), + (PRIORITY_TERTIARY, 'Tertiary'), + (PRIORITY_INACTIVE, 'Inactive'), + ) diff --git a/netbox/tenancy/filtersets.py b/netbox/tenancy/filtersets.py index d00b78629..75f9e351d 100644 --- a/netbox/tenancy/filtersets.py +++ b/netbox/tenancy/filtersets.py @@ -4,16 +4,24 @@ from django.db.models import Q from extras.filters import TagFilter from netbox.filtersets import OrganizationalModelFilterSet, PrimaryModelFilterSet from utilities.filters import TreeNodeMultipleChoiceFilter -from .models import Tenant, TenantGroup +from .models import * __all__ = ( + 'ContactAssignmentFilterSet', + 'ContactFilterSet', + 'ContactGroupFilterSet', + 'ContactRoleFilterSet', 'TenancyFilterSet', 'TenantFilterSet', 'TenantGroupFilterSet', ) +# +# Tenancy +# + class TenantGroupFilterSet(OrganizationalModelFilterSet): parent_id = django_filters.ModelMultipleChoiceFilter( queryset=TenantGroup.objects.all(), @@ -23,7 +31,7 @@ class TenantGroupFilterSet(OrganizationalModelFilterSet): field_name='parent__slug', queryset=TenantGroup.objects.all(), to_field_name='slug', - label='Tenant group group (slug)', + label='Tenant group (slug)', ) class Meta: @@ -93,3 +101,89 @@ class TenancyFilterSet(django_filters.FilterSet): to_field_name='slug', label='Tenant (slug)', ) + + +# +# Contacts +# + +class ContactGroupFilterSet(OrganizationalModelFilterSet): + parent_id = django_filters.ModelMultipleChoiceFilter( + queryset=ContactGroup.objects.all(), + label='Contact group (ID)', + ) + parent = django_filters.ModelMultipleChoiceFilter( + field_name='parent__slug', + queryset=ContactGroup.objects.all(), + to_field_name='slug', + label='Contact group (slug)', + ) + + class Meta: + model = ContactGroup + fields = ['id', 'name', 'slug', 'description'] + + +class ContactRoleFilterSet(OrganizationalModelFilterSet): + + class Meta: + model = ContactRole + fields = ['id', 'name', 'slug'] + + +class ContactFilterSet(PrimaryModelFilterSet): + q = django_filters.CharFilter( + method='search', + label='Search', + ) + group_id = TreeNodeMultipleChoiceFilter( + queryset=ContactGroup.objects.all(), + field_name='group', + lookup_expr='in', + label='Contact group (ID)', + ) + group = TreeNodeMultipleChoiceFilter( + queryset=ContactGroup.objects.all(), + field_name='group', + lookup_expr='in', + to_field_name='slug', + label='Contact group (slug)', + ) + tag = TagFilter() + + class Meta: + model = Contact + fields = ['id', 'name', 'title', 'phone', 'email', 'address'] + + def search(self, queryset, name, value): + if not value.strip(): + return queryset + return queryset.filter( + Q(name__icontains=value) | + Q(title__icontains=value) | + Q(phone__icontains=value) | + Q(email__icontains=value) | + Q(address__icontains=value) | + Q(comments__icontains=value) + ) + + +class ContactAssignmentFilterSet(OrganizationalModelFilterSet): + contact_id = django_filters.ModelMultipleChoiceFilter( + queryset=Contact.objects.all(), + label='Contact (ID)', + ) + role_id = django_filters.ModelMultipleChoiceFilter( + queryset=ContactRole.objects.all(), + label='Contact role (ID)', + ) + role = django_filters.ModelMultipleChoiceFilter( + field_name='role__slug', + queryset=ContactRole.objects.all(), + to_field_name='slug', + label='Contact role (slug)', + ) + + class Meta: + model = ContactAssignment + fields = ['id', 'priority'] diff --git a/netbox/tenancy/forms/bulk_edit.py b/netbox/tenancy/forms/bulk_edit.py index b2fc7dafd..0d414d2a5 100644 --- a/netbox/tenancy/forms/bulk_edit.py +++ b/netbox/tenancy/forms/bulk_edit.py @@ -1,15 +1,22 @@ from django import forms from extras.forms import AddRemoveTagsForm, CustomFieldModelBulkEditForm -from tenancy.models import Tenant, TenantGroup +from tenancy.models import * from utilities.forms import BootstrapMixin, DynamicModelChoiceField __all__ = ( + 'ContactBulkEditForm', + 'ContactGroupBulkEditForm', + 'ContactRoleBulkEditForm', 'TenantBulkEditForm', 'TenantGroupBulkEditForm', ) +# +# Tenants +# + class TenantGroupBulkEditForm(BootstrapMixin, CustomFieldModelBulkEditForm): pk = forms.ModelMultipleChoiceField( queryset=TenantGroup.objects.all(), @@ -42,3 +49,53 @@ class TenantBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldModelBulk nullable_fields = [ 'group', ] + + +# +# Contacts +# + +class ContactGroupBulkEditForm(BootstrapMixin, CustomFieldModelBulkEditForm): + pk = forms.ModelMultipleChoiceField( + queryset=ContactGroup.objects.all(), + widget=forms.MultipleHiddenInput + ) + parent = DynamicModelChoiceField( + queryset=ContactGroup.objects.all(), + required=False + ) + description = forms.CharField( + max_length=200, + required=False + ) + + class Meta: + nullable_fields = ['parent', 'description'] + + +class ContactRoleBulkEditForm(BootstrapMixin, CustomFieldModelBulkEditForm): + pk = forms.ModelMultipleChoiceField( + queryset=ContactRole.objects.all(), + widget=forms.MultipleHiddenInput + ) + description = forms.CharField( + max_length=200, + required=False + ) + + class Meta: + nullable_fields = ['description'] + + +class ContactBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldModelBulkEditForm): + pk = forms.ModelMultipleChoiceField( + queryset=Contact.objects.all(), + widget=forms.MultipleHiddenInput() + ) + group = DynamicModelChoiceField( + queryset=ContactGroup.objects.all(), + required=False + ) + + class Meta: + nullable_fields = ['group', 'title', 'phone', 'email', 'address', 'comments'] diff --git a/netbox/tenancy/forms/bulk_import.py b/netbox/tenancy/forms/bulk_import.py index 335d71ef6..73e152a29 100644 --- a/netbox/tenancy/forms/bulk_import.py +++ b/netbox/tenancy/forms/bulk_import.py @@ -1,13 +1,20 @@ from extras.forms import CustomFieldModelCSVForm -from tenancy.models import Tenant, TenantGroup +from tenancy.models import * from utilities.forms import CSVModelChoiceField, SlugField __all__ = ( + 'ContactCSVForm', + 'ContactGroupCSVForm', + 'ContactRoleCSVForm', 'TenantCSVForm', 'TenantGroupCSVForm', ) +# +# Tenants +# + class TenantGroupCSVForm(CustomFieldModelCSVForm): parent = CSVModelChoiceField( queryset=TenantGroup.objects.all(), @@ -34,3 +41,43 @@ class TenantCSVForm(CustomFieldModelCSVForm): class Meta: model = Tenant fields = ('name', 'slug', 'group', 'description', 'comments') + + +# +# Contacts +# + +class ContactGroupCSVForm(CustomFieldModelCSVForm): + parent = CSVModelChoiceField( + queryset=ContactGroup.objects.all(), + required=False, + to_field_name='name', + help_text='Parent group' + ) + slug = SlugField() + + class Meta: + model = ContactGroup + fields = ('name', 'slug', 'parent', 'description') + + +class ContactRoleCSVForm(CustomFieldModelCSVForm): + slug = SlugField() + + class Meta: + model = ContactRole + fields = ('name', 'slug', 'description') + + +class ContactCSVForm(CustomFieldModelCSVForm): + slug = SlugField() + group = CSVModelChoiceField( + queryset=ContactGroup.objects.all(), + required=False, + to_field_name='name', + help_text='Assigned group' + ) + + class Meta: + model = Contact + fields = ('name', 'title', 'phone', 'email', 'address', 'group', 'comments') diff --git a/netbox/tenancy/forms/filtersets.py b/netbox/tenancy/forms/filtersets.py index 6e2eb7fd1..69941701f 100644 --- a/netbox/tenancy/forms/filtersets.py +++ b/netbox/tenancy/forms/filtersets.py @@ -2,9 +2,21 @@ from django import forms from django.utils.translation import gettext as _ from extras.forms import CustomFieldModelFilterForm -from tenancy.models import Tenant, TenantGroup +from tenancy.models import * from utilities.forms import BootstrapMixin, DynamicModelMultipleChoiceField, TagFilterField +__all__ = ( + 'ContactFilterForm', + 'ContactGroupFilterForm', + 'ContactRoleFilterForm', + 'TenantFilterForm', + 'TenantGroupFilterForm', +) + + +# +# Tenants +# class TenantGroupFilterForm(BootstrapMixin, CustomFieldModelFilterForm): model = TenantGroup @@ -40,3 +52,55 @@ class TenantFilterForm(BootstrapMixin, CustomFieldModelFilterForm): fetch_trigger='open' ) tag = TagFilterField(model) + + +# +# Contacts +# + +class ContactGroupFilterForm(BootstrapMixin, CustomFieldModelFilterForm): + model = ContactGroup + q = forms.CharField( + required=False, + widget=forms.TextInput(attrs={'placeholder': _('All Fields')}), + label=_('Search') + ) + parent_id = DynamicModelMultipleChoiceField( + queryset=ContactGroup.objects.all(), + required=False, + label=_('Parent group'), + fetch_trigger='open' + ) + + +class ContactRoleFilterForm(BootstrapMixin, CustomFieldModelFilterForm): + model = ContactRole + field_groups = [ + ['q'], + ] + q = forms.CharField( + required=False, + widget=forms.TextInput(attrs={'placeholder': _('All Fields')}), + label=_('Search') + ) + + +class ContactFilterForm(BootstrapMixin, CustomFieldModelFilterForm): + model = Contact + field_groups = ( + ('q', 'tag'), + ('group_id',), + ) + q = forms.CharField( + required=False, + widget=forms.TextInput(attrs={'placeholder': _('All Fields')}), + label=_('Search') + ) + group_id = DynamicModelMultipleChoiceField( + queryset=ContactGroup.objects.all(), + required=False, + null_option='None', + label=_('Group'), + fetch_trigger='open' + ) + tag = TagFilterField(model) diff --git a/netbox/tenancy/forms/models.py b/netbox/tenancy/forms/models.py index de3a9e515..6c0640d53 100644 --- a/netbox/tenancy/forms/models.py +++ b/netbox/tenancy/forms/models.py @@ -1,16 +1,23 @@ from extras.forms import CustomFieldModelForm from extras.models import Tag -from tenancy.models import Tenant, TenantGroup +from tenancy.models import * from utilities.forms import ( - BootstrapMixin, CommentField, DynamicModelChoiceField, DynamicModelMultipleChoiceField, SlugField, + BootstrapMixin, CommentField, DynamicModelChoiceField, DynamicModelMultipleChoiceField, SlugField, SmallTextarea, ) __all__ = ( + 'ContactForm', + 'ContactGroupForm', + 'ContactRoleForm', 'TenantForm', 'TenantGroupForm', ) +# +# Tenants +# + class TenantGroupForm(BootstrapMixin, CustomFieldModelForm): parent = DynamicModelChoiceField( queryset=TenantGroup.objects.all(), @@ -45,3 +52,51 @@ class TenantForm(BootstrapMixin, CustomFieldModelForm): fieldsets = ( ('Tenant', ('name', 'slug', 'group', 'description', 'tags')), ) + + +# +# Contacts +# + +class ContactGroupForm(BootstrapMixin, CustomFieldModelForm): + parent = DynamicModelChoiceField( + queryset=ContactGroup.objects.all(), + required=False + ) + slug = SlugField() + + class Meta: + model = ContactGroup + fields = ['parent', 'name', 'slug', 'description'] + + +class ContactRoleForm(BootstrapMixin, CustomFieldModelForm): + slug = SlugField() + + class Meta: + model = ContactRole + fields = ['name', 'slug', 'description'] + + +class ContactForm(BootstrapMixin, CustomFieldModelForm): + group = DynamicModelChoiceField( + queryset=ContactGroup.objects.all(), + required=False + ) + comments = CommentField() + tags = DynamicModelMultipleChoiceField( + queryset=Tag.objects.all(), + required=False + ) + + class Meta: + model = Contact + fields = ( + 'group', 'name', 'title', 'phone', 'email', 'address', 'comments', 'tags', + ) + fieldsets = ( + ('Contact', ('group', 'name', 'title', 'phone', 'email', 'address', 'tags')), + ) + widgets = { + 'address': SmallTextarea(attrs={'rows': 3}), + } diff --git a/netbox/tenancy/graphql/schema.py b/netbox/tenancy/graphql/schema.py index f420eb787..de0a1781a 100644 --- a/netbox/tenancy/graphql/schema.py +++ b/netbox/tenancy/graphql/schema.py @@ -10,3 +10,15 @@ class TenancyQuery(graphene.ObjectType): tenant_group = ObjectField(TenantGroupType) tenant_group_list = ObjectListField(TenantGroupType) + + contact = ObjectField(ContactType) + contact_list = ObjectListField(ContactType) + + contact_role = ObjectField(ContactRoleType) + contact_role_list = ObjectListField(ContactRoleType) + + contact_group = ObjectField(ContactGroupType) + contact_group_list = ObjectListField(ContactGroupType) + + contact_assignment = ObjectField(ContactAssignmentType) + contact_assignment_list = ObjectListField(ContactAssignmentType) diff --git a/netbox/tenancy/graphql/types.py b/netbox/tenancy/graphql/types.py index 6f1e27274..a16d51081 100644 --- a/netbox/tenancy/graphql/types.py +++ b/netbox/tenancy/graphql/types.py @@ -1,12 +1,29 @@ +import graphene + from tenancy import filtersets, models from netbox.graphql.types import OrganizationalObjectType, PrimaryObjectType __all__ = ( + 'ContactAssignmentType', + 'ContactGroupType', + 'ContactRoleType', + 'ContactType', 'TenantType', 'TenantGroupType', ) +class ContactAssignmentsMixin: + assignments = graphene.List('tenancy.graphql.types.ContactAssignmentType') + + def resolve_assignments(self, info): + return self.assignments.restrict(info.context.user, 'view') + + +# +# Tenants +# + class TenantType(PrimaryObjectType): class Meta: @@ -21,3 +38,39 @@ class TenantGroupType(OrganizationalObjectType): model = models.TenantGroup fields = '__all__' filterset_class = filtersets.TenantGroupFilterSet + + +# +# Contacts +# + +class ContactType(ContactAssignmentsMixin, PrimaryObjectType): + + class Meta: + model = models.Contact + fields = '__all__' + filterset_class = filtersets.ContactFilterSet + + +class ContactRoleType(ContactAssignmentsMixin, OrganizationalObjectType): + + class Meta: + model = models.ContactRole + fields = '__all__' + filterset_class = filtersets.ContactRoleFilterSet + + +class ContactGroupType(OrganizationalObjectType): + + class Meta: + model = models.ContactGroup + fields = '__all__' + filterset_class = filtersets.ContactGroupFilterSet + + +class ContactAssignmentType(OrganizationalObjectType): + + class Meta: + model = models.ContactAssignment + fields = '__all__' + filterset_class = filtersets.ContactAssignmentFilterSet diff --git a/netbox/tenancy/migrations/0003_contacts.py b/netbox/tenancy/migrations/0003_contacts.py new file mode 100644 index 000000000..dc6f6c668 --- /dev/null +++ b/netbox/tenancy/migrations/0003_contacts.py @@ -0,0 +1,98 @@ +# Generated by Django 3.2.8 on 2021-10-18 16:12 + +import django.core.serializers.json +from django.db import migrations, models +import django.db.models.deletion +import mptt.fields +import taggit.managers + + +class Migration(migrations.Migration): + + dependencies = [ + ('extras', '0062_clear_secrets_changelog'), + ('contenttypes', '0002_remove_content_type_name'), + ('tenancy', '0002_tenant_ordering'), + ] + + operations = [ + migrations.CreateModel( + name='Contact', + fields=[ + ('created', models.DateField(auto_now_add=True, null=True)), + ('last_updated', models.DateTimeField(auto_now=True, null=True)), + ('custom_field_data', models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder)), + ('id', models.BigAutoField(primary_key=True, serialize=False)), + ('name', models.CharField(max_length=100)), + ('title', models.CharField(blank=True, max_length=100)), + ('phone', models.CharField(blank=True, max_length=50)), + ('email', models.EmailField(blank=True, max_length=254)), + ('address', models.CharField(blank=True, max_length=200)), + ('comments', models.TextField(blank=True)), + ], + options={ + 'ordering': ['name'], + }, + ), + migrations.CreateModel( + name='ContactRole', + fields=[ + ('created', models.DateField(auto_now_add=True, null=True)), + ('last_updated', models.DateTimeField(auto_now=True, null=True)), + ('custom_field_data', models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder)), + ('id', models.BigAutoField(primary_key=True, serialize=False)), + ('name', models.CharField(max_length=100, unique=True)), + ('slug', models.SlugField(max_length=100, unique=True)), + ('description', models.CharField(blank=True, max_length=200)), + ], + options={ + 'ordering': ['name'], + }, + ), + migrations.CreateModel( + name='ContactGroup', + fields=[ + ('created', models.DateField(auto_now_add=True, null=True)), + ('last_updated', models.DateTimeField(auto_now=True, null=True)), + ('custom_field_data', models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder)), + ('id', models.BigAutoField(primary_key=True, serialize=False)), + ('name', models.CharField(max_length=100, unique=True)), + ('slug', models.SlugField(max_length=100, unique=True)), + ('description', models.CharField(blank=True, max_length=200)), + ('lft', models.PositiveIntegerField(editable=False)), + ('rght', models.PositiveIntegerField(editable=False)), + ('tree_id', models.PositiveIntegerField(db_index=True, editable=False)), + ('level', models.PositiveIntegerField(editable=False)), + ('parent', mptt.fields.TreeForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='children', to='tenancy.contactgroup')), + ], + options={ + 'ordering': ['name'], + }, + ), + migrations.CreateModel( + name='ContactAssignment', + fields=[ + ('created', models.DateField(auto_now_add=True, null=True)), + ('last_updated', models.DateTimeField(auto_now=True, null=True)), + ('id', models.BigAutoField(primary_key=True, serialize=False)), + ('object_id', models.PositiveIntegerField()), + ('priority', models.CharField(blank=True, max_length=50)), + ('contact', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='assignments', to='tenancy.contact')), + ('content_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='contenttypes.contenttype')), + ('role', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='assignments', to='tenancy.contactrole')), + ], + options={ + 'ordering': ('priority', 'contact'), + }, + ), + migrations.AddField( + model_name='contact', + name='group', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='contacts', to='tenancy.contactgroup'), + ), + migrations.AddField( + model_name='contact', + name='tags', + field=taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag'), + ), + ] diff --git a/netbox/tenancy/models.py b/netbox/tenancy/models.py index 4a5b1967e..f5e66b753 100644 --- a/netbox/tenancy/models.py +++ b/netbox/tenancy/models.py @@ -1,19 +1,29 @@ -from django.core.exceptions import ValidationError +from django.contrib.contenttypes.fields import GenericForeignKey +from django.contrib.contenttypes.models import ContentType from django.db import models from django.urls import reverse from mptt.models import MPTTModel, TreeForeignKey from extras.utils import extras_features -from netbox.models import NestedGroupModel, PrimaryModel +from netbox.models import ChangeLoggedModel, NestedGroupModel, OrganizationalModel, PrimaryModel from utilities.querysets import RestrictedQuerySet +from .choices import * __all__ = ( + 'ContactAssignment', + 'Contact', + 'ContactGroup', + 'ContactRole', 'Tenant', 'TenantGroup', ) +# +# Tenants +# + @extras_features('custom_fields', 'custom_links', 'export_templates', 'webhooks') class TenantGroup(NestedGroupModel): """ @@ -90,3 +100,153 @@ class Tenant(PrimaryModel): def get_absolute_url(self): return reverse('tenancy:tenant', args=[self.pk]) + + +# +# Contacts +# + +@extras_features('custom_fields', 'custom_links', 'export_templates', 'webhooks') +class ContactGroup(NestedGroupModel): + """ + An arbitrary collection of Contacts. + """ + name = models.CharField( + max_length=100, + unique=True + ) + slug = models.SlugField( + max_length=100, + unique=True + ) + parent = TreeForeignKey( + to='self', + on_delete=models.CASCADE, + related_name='children', + blank=True, + null=True, + db_index=True + ) + description = models.CharField( + max_length=200, + blank=True + ) + + class Meta: + ordering = ['name'] + + def get_absolute_url(self): + return reverse('tenancy:contactgroup', args=[self.pk]) + + +@extras_features('custom_fields', 'custom_links', 'export_templates', 'webhooks') +class ContactRole(OrganizationalModel): + """ + Functional role for a Contact assigned to an object. + """ + name = models.CharField( + max_length=100, + unique=True + ) + slug = models.SlugField( + max_length=100, + unique=True + ) + description = models.CharField( + max_length=200, + blank=True, + ) + + objects = RestrictedQuerySet.as_manager() + + class Meta: + ordering = ['name'] + + def __str__(self): + return self.name + + def get_absolute_url(self): + return reverse('tenancy:contactrole', args=[self.pk]) + + +@extras_features('custom_fields', 'custom_links', 'export_templates', 'tags', 'webhooks') +class Contact(PrimaryModel): + """ + Contact information for a particular object(s) in NetBox. + """ + group = models.ForeignKey( + to='tenancy.ContactGroup', + on_delete=models.SET_NULL, + related_name='contacts', + blank=True, + null=True + ) + name = models.CharField( + max_length=100 + ) + title = models.CharField( + max_length=100, + blank=True + ) + phone = models.CharField( + max_length=50, + blank=True + ) + email = models.EmailField( + blank=True + ) + address = models.CharField( + max_length=200, + blank=True + ) + comments = models.TextField( + blank=True + ) + + objects = RestrictedQuerySet.as_manager() + + clone_fields = [ + 'group', + ] + + class Meta: + ordering = ['name'] + + def __str__(self): + return self.name + + def get_absolute_url(self): + return reverse('tenancy:contact', args=[self.pk]) + + +@extras_features('webhooks') +class ContactAssignment(ChangeLoggedModel): + content_type = models.ForeignKey( + to=ContentType, + on_delete=models.CASCADE + ) + object_id = models.PositiveIntegerField() + object = GenericForeignKey( + ct_field='content_type', + fk_field='object_id' + ) + contact = models.ForeignKey( + to='tenancy.Contact', + on_delete=models.PROTECT, + related_name='assignments' + ) + role = models.ForeignKey( + to='tenancy.ContactRole', + on_delete=models.PROTECT, + related_name='assignments' + ) + priority = models.CharField( + max_length=50, + choices=ContactPriorityChoices, + blank=True + ) + + objects = RestrictedQuerySet.as_manager() + + class Meta: + ordering = ('priority', 'contact') diff --git a/netbox/tenancy/tables.py b/netbox/tenancy/tables.py index f39ca1b18..3401c8fe4 100644 --- a/netbox/tenancy/tables.py +++ b/netbox/tenancy/tables.py @@ -3,9 +3,13 @@ import django_tables2 as tables from utilities.tables import ( BaseTable, ButtonsColumn, LinkedCountColumn, MarkdownColumn, MPTTColumn, TagColumn, ToggleColumn, ) -from .models import Tenant, TenantGroup +from .models import * __all__ = ( + 'ContactAssignmentTable', + 'ContactGroupTable', + 'ContactRoleTable', + 'ContactTable', 'TenantColumn', 'TenantGroupTable', 'TenantTable', @@ -38,7 +42,7 @@ class TenantColumn(tables.TemplateColumn): # -# Tenant groups +# Tenants # class TenantGroupTable(BaseTable): @@ -59,10 +63,6 @@ class TenantGroupTable(BaseTable): default_columns = ('pk', 'name', 'tenant_count', 'description', 'actions') -# -# Tenants -# - class TenantTable(BaseTable): pk = ToggleColumn() name = tables.Column( @@ -80,3 +80,69 @@ class TenantTable(BaseTable): model = Tenant fields = ('pk', 'name', 'slug', 'group', 'description', 'comments', 'tags') default_columns = ('pk', 'name', 'group', 'description') + + +# +# Contacts +# + +class ContactGroupTable(BaseTable): + pk = ToggleColumn() + name = MPTTColumn( + linkify=True + ) + contact_count = LinkedCountColumn( + viewname='tenancy:contact_list', + url_params={'role_id': 'pk'}, + verbose_name='Contacts' + ) + actions = ButtonsColumn(ContactGroup) + + class Meta(BaseTable.Meta): + model = ContactGroup + fields = ('pk', 'name', 'contact_count', 'description', 'slug', 'actions') + default_columns = ('pk', 'name', 'contact_count', 'description', 'actions') + + +class ContactRoleTable(BaseTable): + pk = ToggleColumn() + name = tables.Column( + linkify=True + ) + actions = ButtonsColumn(ContactRole) + + class Meta(BaseTable.Meta): + model = ContactRole + fields = ('pk', 'name', 'description', 'slug', 'actions') + default_columns = ('pk', 'name', 'description', 'actions') + + +class ContactTable(BaseTable): + pk = ToggleColumn() + name = tables.Column( + linkify=True + ) + group = tables.Column( + linkify=True + ) + comments = MarkdownColumn() + tags = TagColumn( + url_name='tenancy:tenant_list' + ) + + class Meta(BaseTable.Meta): + model = Contact + fields = ('pk', 'name', 'group', 'title', 'phone', 'email', 'address', 'comments', 'tags') + default_columns = ('pk', 'name', 'group', 'title', 'phone', 'email') + + +class ContactAssignmentTable(BaseTable): + pk = ToggleColumn() + contact = tables.Column( + linkify=True + ) + + class Meta(BaseTable.Meta): + model = ContactAssignment + fields = ('pk', 'contact', 'role', 'priority') + default_columns = ('pk', 'contact', 'role', 'priority') diff --git a/netbox/tenancy/tests/test_api.py b/netbox/tenancy/tests/test_api.py index 5a3c2c1b0..c7c6cf846 100644 --- a/netbox/tenancy/tests/test_api.py +++ b/netbox/tenancy/tests/test_api.py @@ -1,6 +1,6 @@ from django.urls import reverse -from tenancy.models import Tenant, TenantGroup +from tenancy.models import * from utilities.testing import APITestCase, APIViewTestCases @@ -92,3 +92,112 @@ class TenantTest(APIViewTestCases.APIViewTestCase): 'group': tenant_groups[1].pk, }, ] + + +class ContactGroupTest(APIViewTestCases.APIViewTestCase): + model = ContactGroup + brief_fields = ['_depth', 'contact_count', 'display', 'id', 'name', 'slug', 'url'] + bulk_update_data = { + 'description': 'New description', + } + + @classmethod + def setUpTestData(cls): + + parent_contact_groups = ( + ContactGroup.objects.create(name='Parent Contact Group 1', slug='parent-contact-group-1'), + ContactGroup.objects.create(name='Parent Contact Group 2', slug='parent-contact-group-2'), + ) + + ContactGroup.objects.create(name='Contact Group 1', slug='contact-group-1', parent=parent_contact_groups[0]) + ContactGroup.objects.create(name='Contact Group 2', slug='contact-group-2', parent=parent_contact_groups[0]) + ContactGroup.objects.create(name='Contact Group 3', slug='contact-group-3', parent=parent_contact_groups[0]) + + cls.create_data = [ + { + 'name': 'Contact Group 4', + 'slug': 'contact-group-4', + 'parent': parent_contact_groups[1].pk, + }, + { + 'name': 'Contact Group 5', + 'slug': 'contact-group-5', + 'parent': parent_contact_groups[1].pk, + }, + { + 'name': 'Contact Group 6', + 'slug': 'contact-group-6', + 'parent': parent_contact_groups[1].pk, + }, + ] + + +class ContactRoleTest(APIViewTestCases.APIViewTestCase): + model = ContactRole + brief_fields = ['display', 'id', 'name', 'slug', 'url'] + create_data = [ + { + 'name': 'Contact Role 4', + 'slug': 'contact-role-4', + }, + { + 'name': 'Contact Role 5', + 'slug': 'contact-role-5', + }, + { + 'name': 'Contact Role 6', + 'slug': 'contact-role-6', + }, + ] + bulk_update_data = { + 'description': 'New description', + } + + @classmethod + def setUpTestData(cls): + + contact_roles = ( + ContactRole(name='Contact Role 1', slug='contact-role-1'), + ContactRole(name='Contact Role 2', slug='contact-role-2'), + ContactRole(name='Contact Role 3', slug='contact-role-3'), + ) + ContactRole.objects.bulk_create(contact_roles) + + +class ContactTest(APIViewTestCases.APIViewTestCase): + model = Contact + brief_fields = ['display', 'id', 'name', 'url'] + bulk_update_data = { + 'group': None, + 'comments': 'New comments', + } + + @classmethod + def setUpTestData(cls): + + contact_groups = ( + ContactGroup.objects.create(name='Contact Group 1', slug='contact-group-1'), + ContactGroup.objects.create(name='Contact Group 2', slug='contact-group-2'), + ) + + contacts = ( + Contact(name='Contact 1', group=contact_groups[0]), + Contact(name='Contact 2', group=contact_groups[0]), + Contact(name='Contact 3', group=contact_groups[0]), + ) + Contact.objects.bulk_create(contacts) + + cls.create_data = [ + { + 'name': 'Contact 4', + 'group': contact_groups[1].pk, + }, + { + 'name': 'Contact 5', + 'group': contact_groups[1].pk, + }, + { + 'name': 'Contact 6', + 'group': contact_groups[1].pk, + }, + ] diff --git a/netbox/tenancy/tests/test_filtersets.py b/netbox/tenancy/tests/test_filtersets.py index fd4a0bd76..86170734c 100644 --- a/netbox/tenancy/tests/test_filtersets.py +++ b/netbox/tenancy/tests/test_filtersets.py @@ -1,7 +1,7 @@ from django.test import TestCase from tenancy.filtersets import * -from tenancy.models import Tenant, TenantGroup +from tenancy.models import * from utilities.testing import ChangeLoggedFilterSetTests @@ -84,3 +84,103 @@ class TenantTestCase(TestCase, ChangeLoggedFilterSetTests): self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) params = {'group': [group[0].slug, group[1].slug]} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + +class ContactGroupTestCase(TestCase, ChangeLoggedFilterSetTests): + queryset = ContactGroup.objects.all() + filterset = ContactGroupFilterSet + + @classmethod + def setUpTestData(cls): + + parent_contact_groups = ( + ContactGroup(name='Parent Contact Group 1', slug='parent-contact-group-1'), + ContactGroup(name='Parent Contact Group 2', slug='parent-contact-group-2'), + ContactGroup(name='Parent Contact Group 3', slug='parent-contact-group-3'), + ) + for contactgroup in parent_contact_groups: + contactgroup.save() + + contact_groups = ( + ContactGroup(name='Contact Group 1', slug='contact-group-1', parent=parent_contact_groups[0], description='A'), + ContactGroup(name='Contact Group 2', slug='contact-group-2', parent=parent_contact_groups[1], description='B'), + ContactGroup(name='Contact Group 3', slug='contact-group-3', parent=parent_contact_groups[2], description='C'), + ) + for contactgroup in contact_groups: + contactgroup.save() + + def test_name(self): + params = {'name': ['Contact Group 1', 'Contact Group 2']} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + def test_slug(self): + params = {'slug': ['contact-group-1', 'contact-group-2']} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + def test_description(self): + params = {'description': ['A', 'B']} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + def test_parent(self): + parent_groups = ContactGroup.objects.filter(parent__isnull=True)[:2] + params = {'parent_id': [parent_groups[0].pk, parent_groups[1].pk]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + params = {'parent': [parent_groups[0].slug, parent_groups[1].slug]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + +class ContactRoleTestCase(TestCase, ChangeLoggedFilterSetTests): + queryset = ContactRole.objects.all() + filterset = ContactRoleFilterSet + + @classmethod + def setUpTestData(cls): + + contact_roles = ( + ContactRole(name='Contact Role 1', slug='contact-role-1'), + ContactRole(name='Contact Role 2', slug='contact-role-2'), + ContactRole(name='Contact Role 3', slug='contact-role-3'), + ) + ContactRole.objects.bulk_create(contact_roles) + + def test_name(self): + params = {'name': ['Contact Role 1', 'Contact Role 2']} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + def test_slug(self): + params = {'slug': ['contact-role-1', 'contact-role-2']} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + +class ContactTestCase(TestCase, ChangeLoggedFilterSetTests): + queryset = Contact.objects.all() + filterset = ContactFilterSet + + @classmethod + def setUpTestData(cls): + + contact_groups = ( + ContactGroup(name='Contact Group 1', slug='contact-group-1'), + ContactGroup(name='Contact Group 2', slug='contact-group-2'), + ContactGroup(name='Contact Group 3', slug='contact-group-3'), + ) + for contactgroup in contact_groups: + contactgroup.save() + + contacts = ( + Contact(name='Contact 1', group=contact_groups[0]), + Contact(name='Contact 2', group=contact_groups[1]), + Contact(name='Contact 3', group=contact_groups[2]), + ) + Contact.objects.bulk_create(contacts) + + def test_name(self): + params = {'name': ['Contact 1', 'Contact 2']} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + def test_group(self): + group = ContactGroup.objects.all()[:2] + params = {'group_id': [group[0].pk, group[1].pk]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + params = {'group': [group[0].slug, group[1].slug]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) diff --git a/netbox/tenancy/tests/test_views.py b/netbox/tenancy/tests/test_views.py index f45afc302..fb7ff3ce3 100644 --- a/netbox/tenancy/tests/test_views.py +++ b/netbox/tenancy/tests/test_views.py @@ -1,4 +1,4 @@ -from tenancy.models import Tenant, TenantGroup +from tenancy.models import * from utilities.testing import ViewTestCases, create_tags @@ -74,3 +74,105 @@ class TenantTestCase(ViewTestCases.PrimaryObjectViewTestCase): cls.bulk_edit_data = { 'group': tenant_groups[1].pk, } + + +class ContactGroupTestCase(ViewTestCases.OrganizationalObjectViewTestCase): + model = ContactGroup + + @classmethod + def setUpTestData(cls): + + contact_groups = ( + ContactGroup(name='Contact Group 1', slug='contact-group-1'), + ContactGroup(name='Contact Group 2', slug='contact-group-2'), + ContactGroup(name='Contact Group 3', slug='contact-group-3'), + ) + for tenanantgroup in contact_groups: + tenanantgroup.save() + + cls.form_data = { + 'name': 'Contact Group X', + 'slug': 'contact-group-x', + 'description': 'A new contact group', + } + + cls.csv_data = ( + "name,slug,description", + "Contact Group 4,contact-group-4,Fourth contact group", + "Contact Group 5,contact-group-5,Fifth contact group", + "Contact Group 6,contact-group-6,Sixth contact group", + ) + + cls.bulk_edit_data = { + 'description': 'New description', + } + + +class ContactRoleTestCase(ViewTestCases.OrganizationalObjectViewTestCase): + model = ContactRole + + @classmethod + def setUpTestData(cls): + + ContactRole.objects.bulk_create([ + ContactRole(name='Contact Role 1', slug='contact-role-1'), + ContactRole(name='Contact Role 2', slug='contact-role-2'), + ContactRole(name='Contact Role 3', slug='contact-role-3'), + ]) + + cls.form_data = { + 'name': 'Devie Role X', + 'slug': 'contact-role-x', + 'description': 'New contact role', + } + + cls.csv_data = ( + "name,slug", + "Contact Role 4,contact-role-4", + "Contact Role 5,contact-role-5", + "Contact Role 6,contact-role-6", + ) + + cls.bulk_edit_data = { + 'description': 'New description', + } + + +class ContactTestCase(ViewTestCases.PrimaryObjectViewTestCase): + model = Contact + + @classmethod + def setUpTestData(cls): + + contact_groups = ( + ContactGroup(name='Contact Group 1', slug='contact-group-1'), + ContactGroup(name='Contact Group 2', slug='contact-group-2'), + ) + for contactgroup in contact_groups: + contactgroup.save() + + Contact.objects.bulk_create([ + Contact(name='Contact 1', group=contact_groups[0]), + Contact(name='Contact 2', group=contact_groups[0]), + Contact(name='Contact 3', group=contact_groups[0]), + ]) + + tags = create_tags('Alpha', 'Bravo', 'Charlie') + + cls.form_data = { + 'name': 'Contact X', + 'group': contact_groups[1].pk, + 'comments': 'Some comments', + 'tags': [t.pk for t in tags], + } + + cls.csv_data = ( + "name,slug", + "Contact 4,contact-4", + "Contact 5,contact-5", + "Contact 6,contact-6", + ) + + cls.bulk_edit_data = { + 'group': contact_groups[1].pk, + } diff --git a/netbox/tenancy/urls.py b/netbox/tenancy/urls.py index a1f46c7ec..807af161e 100644 --- a/netbox/tenancy/urls.py +++ b/netbox/tenancy/urls.py @@ -3,7 +3,7 @@ from django.urls import path from extras.views import ObjectChangeLogView, ObjectJournalView from utilities.views import SlugRedirectView from . import views -from .models import Tenant, TenantGroup +from .models import * app_name = 'tenancy' urlpatterns = [ @@ -32,4 +32,39 @@ urlpatterns = [ path('tenants//changelog/', ObjectChangeLogView.as_view(), name='tenant_changelog', kwargs={'model': Tenant}), path('tenants//journal/', ObjectJournalView.as_view(), name='tenant_journal', kwargs={'model': Tenant}), + # Contact groups + path('contact-groups/', views.ContactGroupListView.as_view(), name='contactgroup_list'), + path('contact-groups/add/', views.ContactGroupEditView.as_view(), name='contactgroup_add'), + path('contact-groups/import/', views.ContactGroupBulkImportView.as_view(), name='contactgroup_import'), + path('contact-groups/edit/', views.ContactGroupBulkEditView.as_view(), name='contactgroup_bulk_edit'), + path('contact-groups/delete/', views.ContactGroupBulkDeleteView.as_view(), name='contactgroup_bulk_delete'), + path('contact-groups//', views.ContactGroupView.as_view(), name='contactgroup'), + path('contact-groups//edit/', views.ContactGroupEditView.as_view(), name='contactgroup_edit'), + path('contact-groups//delete/', views.ContactGroupDeleteView.as_view(), name='contactgroup_delete'), + path('contact-groups//changelog/', ObjectChangeLogView.as_view(), name='contactgroup_changelog', kwargs={'model': ContactGroup}), + + # Contact roles + path('contact-roles/', views.ContactRoleListView.as_view(), name='contactrole_list'), + path('contact-roles/add/', views.ContactRoleEditView.as_view(), name='contactrole_add'), + path('contact-roles/import/', views.ContactRoleBulkImportView.as_view(), name='contactrole_import'), + path('contact-roles/edit/', views.ContactRoleBulkEditView.as_view(), name='contactrole_bulk_edit'), + path('contact-roles/delete/', views.ContactRoleBulkDeleteView.as_view(), name='contactrole_bulk_delete'), + path('contact-roles//', views.ContactRoleView.as_view(), name='contactrole'), + path('contact-roles//edit/', views.ContactRoleEditView.as_view(), name='contactrole_edit'), + path('contact-roles//delete/', views.ContactRoleDeleteView.as_view(), name='contactrole_delete'), + path('contact-roles//changelog/', ObjectChangeLogView.as_view(), name='contactrole_changelog', kwargs={'model': ContactRole}), + + # Contacts + path('contacts/', views.ContactListView.as_view(), name='contact_list'), + path('contacts/add/', views.ContactEditView.as_view(), name='contact_add'), + path('contacts/import/', views.ContactBulkImportView.as_view(), name='contact_import'), + path('contacts/edit/', views.ContactBulkEditView.as_view(), name='contact_bulk_edit'), + path('contacts/delete/', views.ContactBulkDeleteView.as_view(), name='contact_bulk_delete'), + path('contacts//', views.ContactView.as_view(), name='contact'), + path('contacts//', SlugRedirectView.as_view(), kwargs={'model': Contact}), + path('contacts//edit/', views.ContactEditView.as_view(), name='contact_edit'), + path('contacts//delete/', views.ContactDeleteView.as_view(), name='contact_delete'), + path('contacts//changelog/', ObjectChangeLogView.as_view(), name='contact_changelog', kwargs={'model': Contact}), + path('contacts//journal/', ObjectJournalView.as_view(), name='contact_journal', kwargs={'model': Contact}), + ] diff --git a/netbox/tenancy/views.py b/netbox/tenancy/views.py index 0b28a62d2..f4772b288 100644 --- a/netbox/tenancy/views.py +++ b/netbox/tenancy/views.py @@ -3,9 +3,10 @@ from dcim.models import Site, Rack, Device, RackReservation from ipam.models import Aggregate, IPAddress, Prefix, VLAN, VRF from netbox.views import generic from utilities.tables import paginate_table +from utilities.utils import count_related from virtualization.models import VirtualMachine, Cluster from . import filtersets, forms, tables -from .models import Tenant, TenantGroup +from .models import * # @@ -140,3 +141,171 @@ class TenantBulkDeleteView(generic.BulkDeleteView): queryset = Tenant.objects.prefetch_related('group') filterset = filtersets.TenantFilterSet table = tables.TenantTable + + +# +# Contact groups +# + +class ContactGroupListView(generic.ObjectListView): + queryset = ContactGroup.objects.add_related_count( + ContactGroup.objects.all(), + Contact, + 'group', + 'contact_count', + cumulative=True + ) + filterset = filtersets.ContactGroupFilterSet + filterset_form = forms.ContactGroupFilterForm + table = tables.ContactGroupTable + + +class ContactGroupView(generic.ObjectView): + queryset = ContactGroup.objects.all() + + def get_extra_context(self, request, instance): + contacts = Contact.objects.restrict(request.user, 'view').filter( + group=instance + ) + contacts_table = tables.ContactTable(contacts, exclude=('group',)) + paginate_table(contacts_table, request) + + return { + 'contacts_table': contacts_table, + } + + +class ContactGroupEditView(generic.ObjectEditView): + queryset = ContactGroup.objects.all() + model_form = forms.ContactGroupForm + + +class ContactGroupDeleteView(generic.ObjectDeleteView): + queryset = ContactGroup.objects.all() + + +class ContactGroupBulkImportView(generic.BulkImportView): + queryset = ContactGroup.objects.all() + model_form = forms.ContactGroupCSVForm + table = tables.ContactGroupTable + + +class ContactGroupBulkEditView(generic.BulkEditView): + queryset = ContactGroup.objects.add_related_count( + ContactGroup.objects.all(), + Contact, + 'group', + 'contact_count', + cumulative=True + ) + filterset = filtersets.ContactGroupFilterSet + table = tables.ContactGroupTable + form = forms.ContactGroupBulkEditForm + + +class ContactGroupBulkDeleteView(generic.BulkDeleteView): + queryset = ContactGroup.objects.add_related_count( + ContactGroup.objects.all(), + Contact, + 'group', + 'contact_count', + cumulative=True + ) + table = tables.ContactGroupTable + + +# +# Contact roles +# + +class ContactRoleListView(generic.ObjectListView): + queryset = ContactRole.objects.all() + filterset = filtersets.ContactRoleFilterSet + filterset_form = forms.ContactRoleFilterForm + table = tables.ContactRoleTable + + +class ContactRoleView(generic.ObjectView): + queryset = ContactRole.objects.all() + + def get_extra_context(self, request, instance): + contact_assignments = ContactAssignment.objects.restrict(request.user, 'view').filter( + role=instance + ) + contacts_table = tables.ContactAssignmentTable(contact_assignments) + paginate_table(contacts_table, request) + + return { + 'contacts_table': contacts_table, + 'contact_count': ContactAssignment.objects.filter(role=instance).count(), + } + + +class ContactRoleEditView(generic.ObjectEditView): + queryset = ContactRole.objects.all() + model_form = forms.ContactRoleForm + + +class ContactRoleDeleteView(generic.ObjectDeleteView): + queryset = ContactRole.objects.all() + + +class ContactRoleBulkImportView(generic.BulkImportView): + queryset = ContactRole.objects.all() + model_form = forms.ContactRoleCSVForm + table = tables.ContactRoleTable + + +class ContactRoleBulkEditView(generic.BulkEditView): + queryset = ContactRole.objects.all() + filterset = filtersets.ContactRoleFilterSet + table = tables.ContactRoleTable + form = forms.ContactRoleBulkEditForm + + +class ContactRoleBulkDeleteView(generic.BulkDeleteView): + queryset = ContactRole.objects.all() + table = tables.ContactRoleTable + + +# +# Contacts +# + +class ContactListView(generic.ObjectListView): + queryset = Contact.objects.all() + filterset = filtersets.ContactFilterSet + filterset_form = forms.ContactFilterForm + table = tables.ContactTable + + +class ContactView(generic.ObjectView): + queryset = Contact.objects.all() + + +class ContactEditView(generic.ObjectEditView): + queryset = Contact.objects.all() + model_form = forms.ContactForm + + +class ContactDeleteView(generic.ObjectDeleteView): + queryset = Contact.objects.all() + + +class ContactBulkImportView(generic.BulkImportView): + queryset = Contact.objects.all() + model_form = forms.ContactCSVForm + table = tables.ContactTable + + +class ContactBulkEditView(generic.BulkEditView): + queryset = Contact.objects.prefetch_related('group') + filterset = filtersets.ContactFilterSet + table = tables.ContactTable + form = forms.ContactBulkEditForm + + +class ContactBulkDeleteView(generic.BulkDeleteView): + queryset = Contact.objects.prefetch_related('group') + filterset = filtersets.ContactFilterSet + table = tables.ContactTable From f193f0d3f9d465872dbb01f9eaf976ded3e4fb3a Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Mon, 18 Oct 2021 15:09:57 -0400 Subject: [PATCH 032/289] Add contact assignments to models --- netbox/circuits/models.py | 10 +++ netbox/dcim/models/devices.py | 10 +++ netbox/dcim/models/power.py | 5 ++ netbox/dcim/models/racks.py | 5 ++ netbox/dcim/models/sites.py | 20 +++++ netbox/templates/circuits/circuit.html | 11 +-- netbox/templates/circuits/provider.html | 3 +- netbox/templates/dcim/device.html | 1 + netbox/templates/dcim/location.html | 1 + netbox/templates/dcim/manufacturer.html | 1 + netbox/templates/dcim/powerpanel.html | 1 + netbox/templates/dcim/rack.html | 1 + netbox/templates/dcim/region.html | 1 + netbox/templates/dcim/site.html | 89 +++++++++++-------- netbox/templates/dcim/sitegroup.html | 1 + netbox/templates/inc/contacts_panel.html | 49 ++++++++++ netbox/templates/tenancy/tenant.html | 1 + netbox/templates/virtualization/cluster.html | 1 + .../virtualization/clustergroup.html | 1 + .../virtualization/virtualmachine.html | 1 + netbox/tenancy/forms/models.py | 26 ++++++ netbox/tenancy/models.py | 7 +- netbox/tenancy/urls.py | 5 ++ netbox/tenancy/views.py | 35 +++++++- netbox/virtualization/models.py | 15 ++++ 25 files changed, 256 insertions(+), 45 deletions(-) create mode 100644 netbox/templates/inc/contacts_panel.html diff --git a/netbox/circuits/models.py b/netbox/circuits/models.py index bc7dcc219..3d213b48d 100644 --- a/netbox/circuits/models.py +++ b/netbox/circuits/models.py @@ -62,6 +62,11 @@ class Provider(PrimaryModel): blank=True ) + # Generic relations + contacts = GenericRelation( + to='tenancy.ContactAssignment' + ) + objects = RestrictedQuerySet.as_manager() clone_fields = [ @@ -203,6 +208,11 @@ class Circuit(PrimaryModel): comments = models.TextField( blank=True ) + + # Generic relations + contacts = GenericRelation( + to='tenancy.ContactAssignment' + ) images = GenericRelation( to='extras.ImageAttachment' ) diff --git a/netbox/dcim/models/devices.py b/netbox/dcim/models/devices.py index 669f5cfbd..308a094c3 100644 --- a/netbox/dcim/models/devices.py +++ b/netbox/dcim/models/devices.py @@ -54,6 +54,11 @@ class Manufacturer(OrganizationalModel): blank=True ) + # Generic relations + contacts = GenericRelation( + to='tenancy.ContactAssignment' + ) + objects = RestrictedQuerySet.as_manager() class Meta: @@ -584,6 +589,11 @@ class Device(PrimaryModel, ConfigContextModel): comments = models.TextField( blank=True ) + + # Generic relations + contacts = GenericRelation( + to='tenancy.ContactAssignment' + ) images = GenericRelation( to='extras.ImageAttachment' ) diff --git a/netbox/dcim/models/power.py b/netbox/dcim/models/power.py index 0e9520b36..f4d0ce8df 100644 --- a/netbox/dcim/models/power.py +++ b/netbox/dcim/models/power.py @@ -40,6 +40,11 @@ class PowerPanel(PrimaryModel): name = models.CharField( max_length=100 ) + + # Generic relations + contacts = GenericRelation( + to='tenancy.ContactAssignment' + ) images = GenericRelation( to='extras.ImageAttachment' ) diff --git a/netbox/dcim/models/racks.py b/netbox/dcim/models/racks.py index c287d7d6c..47fcd42e4 100644 --- a/netbox/dcim/models/racks.py +++ b/netbox/dcim/models/racks.py @@ -175,12 +175,17 @@ class Rack(PrimaryModel): comments = models.TextField( blank=True ) + + # Generic relations vlan_groups = GenericRelation( to='ipam.VLANGroup', content_type_field='scope_type', object_id_field='scope_id', related_query_name='rack' ) + contacts = GenericRelation( + to='tenancy.ContactAssignment' + ) images = GenericRelation( to='extras.ImageAttachment' ) diff --git a/netbox/dcim/models/sites.py b/netbox/dcim/models/sites.py index b343f61f2..0d9816b0b 100644 --- a/netbox/dcim/models/sites.py +++ b/netbox/dcim/models/sites.py @@ -52,12 +52,17 @@ class Region(NestedGroupModel): max_length=200, blank=True ) + + # Generic relations vlan_groups = GenericRelation( to='ipam.VLANGroup', content_type_field='scope_type', object_id_field='scope_id', related_query_name='region' ) + contacts = GenericRelation( + to='tenancy.ContactAssignment' + ) def get_absolute_url(self): return reverse('dcim:region', args=[self.pk]) @@ -100,12 +105,17 @@ class SiteGroup(NestedGroupModel): max_length=200, blank=True ) + + # Generic relations vlan_groups = GenericRelation( to='ipam.VLANGroup', content_type_field='scope_type', object_id_field='scope_id', related_query_name='site_group' ) + contacts = GenericRelation( + to='tenancy.ContactAssignment' + ) def get_absolute_url(self): return reverse('dcim:sitegroup', args=[self.pk]) @@ -221,12 +231,17 @@ class Site(PrimaryModel): comments = models.TextField( blank=True ) + + # Generic relations vlan_groups = GenericRelation( to='ipam.VLANGroup', content_type_field='scope_type', object_id_field='scope_id', related_query_name='site' ) + contacts = GenericRelation( + to='tenancy.ContactAssignment' + ) images = GenericRelation( to='extras.ImageAttachment' ) @@ -291,12 +306,17 @@ class Location(NestedGroupModel): max_length=200, blank=True ) + + # Generic relations vlan_groups = GenericRelation( to='ipam.VLANGroup', content_type_field='scope_type', object_id_field='scope_id', related_query_name='location' ) + contacts = GenericRelation( + to='tenancy.ContactAssignment' + ) images = GenericRelation( to='extras.ImageAttachment' ) diff --git a/netbox/templates/circuits/circuit.html b/netbox/templates/circuits/circuit.html index b863a8a0e..3a8096351 100644 --- a/netbox/templates/circuits/circuit.html +++ b/netbox/templates/circuits/circuit.html @@ -70,11 +70,12 @@ {% plugin_left_page object %}
- {% include 'circuits/inc/circuit_termination.html' with termination=object.termination_a side='A' %} - {% include 'circuits/inc/circuit_termination.html' with termination=object.termination_z side='Z' %} - {% include 'inc/image_attachments_panel.html' %} - {% plugin_right_page object %} -
+ {% include 'circuits/inc/circuit_termination.html' with termination=object.termination_a side='A' %} + {% include 'circuits/inc/circuit_termination.html' with termination=object.termination_z side='Z' %} + {% include 'inc/contacts_panel.html' %} + {% include 'inc/image_attachments_panel.html' %} + {% plugin_right_page object %} +
diff --git a/netbox/templates/circuits/provider.html b/netbox/templates/circuits/provider.html index 4d35da0e6..af883e56f 100644 --- a/netbox/templates/circuits/provider.html +++ b/netbox/templates/circuits/provider.html @@ -47,12 +47,13 @@
+ {% include 'extras/inc/tags_panel.html' with tags=object.tags.all url='circuits:provider_list' %} {% plugin_left_page object %}
{% include 'inc/custom_fields_panel.html' %} - {% include 'extras/inc/tags_panel.html' with tags=object.tags.all url='circuits:provider_list' %} {% include 'inc/comments_panel.html' %} + {% include 'inc/contacts_panel.html' %} {% plugin_right_page object %}
diff --git a/netbox/templates/dcim/device.html b/netbox/templates/dcim/device.html index ec1ea3fa1..9ae9df7d4 100644 --- a/netbox/templates/dcim/device.html +++ b/netbox/templates/dcim/device.html @@ -296,6 +296,7 @@
{% endif %} + {% include 'inc/contacts_panel.html' %} {% include 'inc/image_attachments_panel.html' %}
diff --git a/netbox/templates/dcim/location.html b/netbox/templates/dcim/location.html index cd0f2a92a..459880ca8 100644 --- a/netbox/templates/dcim/location.html +++ b/netbox/templates/dcim/location.html @@ -72,6 +72,7 @@
{% include 'inc/custom_fields_panel.html' %} + {% include 'inc/contacts_panel.html' %} {% include 'inc/image_attachments_panel.html' %} {% plugin_right_page object %}
diff --git a/netbox/templates/dcim/manufacturer.html b/netbox/templates/dcim/manufacturer.html index 85d76f14f..2a56b57cc 100644 --- a/netbox/templates/dcim/manufacturer.html +++ b/netbox/templates/dcim/manufacturer.html @@ -38,6 +38,7 @@
{% include 'inc/custom_fields_panel.html' %} + {% include 'inc/contacts_panel.html' %} {% plugin_right_page object %}
diff --git a/netbox/templates/dcim/powerpanel.html b/netbox/templates/dcim/powerpanel.html index b1367aa1e..10975fa1b 100644 --- a/netbox/templates/dcim/powerpanel.html +++ b/netbox/templates/dcim/powerpanel.html @@ -44,6 +44,7 @@
{% include 'inc/custom_fields_panel.html' %} + {% include 'inc/contacts_panel.html' %} {% include 'inc/image_attachments_panel.html' %} {% plugin_right_page object %}
diff --git a/netbox/templates/dcim/rack.html b/netbox/templates/dcim/rack.html index 5d44e2125..0196a9a18 100644 --- a/netbox/templates/dcim/rack.html +++ b/netbox/templates/dcim/rack.html @@ -332,6 +332,7 @@ {% endif %} + {% include 'inc/contacts_panel.html' %} {% plugin_right_page object %} diff --git a/netbox/templates/dcim/region.html b/netbox/templates/dcim/region.html index b46c905c3..1ee21a60e 100644 --- a/netbox/templates/dcim/region.html +++ b/netbox/templates/dcim/region.html @@ -46,6 +46,7 @@ {% include 'inc/custom_fields_panel.html' %} + {% include 'inc/contacts_panel.html' %} {% plugin_left_page object %}
diff --git a/netbox/templates/dcim/site.html b/netbox/templates/dcim/site.html index 1ee8cfce0..92023f8d6 100644 --- a/netbox/templates/dcim/site.html +++ b/netbox/templates/dcim/site.html @@ -76,6 +76,10 @@ Facility {{ object.facility|placeholder }} + + Description + {{ object.description|placeholder }} + AS Number {{ object.asn|placeholder }} @@ -91,19 +95,6 @@ {% endif %} - - Description - {{ object.description|placeholder }} - - -
- -
-
- Contact Info -
-
- - - - - - - - - - - - -
Physical Address @@ -138,33 +129,57 @@ {% endif %}
Contact Name{{ object.contact_name|placeholder }}
Contact Phone - {% if object.contact_phone %} - {{ object.contact_phone }} - {% else %} - - {% endif %} -
Contact E-Mail - {% if object.contact_email %} - {{ object.contact_email }} - {% else %} - - {% endif %} -
+ {% include 'inc/contacts_panel.html' %} +
+
Contact Info
+
+ {% with deprecation_warning="This field will be removed in a future release. Please migrate this data to contact objects." %} + + + + + + + + + + + + + +
Contact Name + {% if object.contact_name %} +
+ +
+ {% endif %} + {{ object.contact_name|placeholder }} +
Contact Phone + {% if object.contact_phone %} +
+ +
+ {{ object.contact_phone }} + {% else %} + + {% endif %} +
Contact E-Mail + {% if object.contact_email %} +
+ +
+ {{ object.contact_email }} + {% else %} + + {% endif %} +
+ {% endwith %} +
+
{% include 'inc/custom_fields_panel.html' %} {% include 'extras/inc/tags_panel.html' with tags=object.tags.all url='dcim:site_list' %} {% include 'inc/comments_panel.html' %} diff --git a/netbox/templates/dcim/sitegroup.html b/netbox/templates/dcim/sitegroup.html index 856a86d64..610917078 100644 --- a/netbox/templates/dcim/sitegroup.html +++ b/netbox/templates/dcim/sitegroup.html @@ -46,6 +46,7 @@ {% include 'inc/custom_fields_panel.html' %} + {% include 'inc/contacts_panel.html' %} {% plugin_left_page object %}
diff --git a/netbox/templates/inc/contacts_panel.html b/netbox/templates/inc/contacts_panel.html new file mode 100644 index 000000000..33788a561 --- /dev/null +++ b/netbox/templates/inc/contacts_panel.html @@ -0,0 +1,49 @@ +{% load helpers %} + +
+
Contacts
+
+ {% with contacts=object.contacts.all %} + {% if contacts.exists %} + + + + + + + + {% for contact in contacts %} + + + + + + + {% endfor %} +
NameRolePriority
+ {{ contact.contact }} + {{ contact.role|placeholder }}{{ contact.get_priority_display|placeholder }} + {% if perms.tenancy.change_contactassignment %} + + + + {% endif %} + {% if perms.tenancy.delete_contactassignment %} + + + + {% endif %} +
+ {% else %} +
None
+ {% endif %} + {% endwith %} +
+ {% if perms.tenancy.add_contactassignment %} + + {% endif %} +
diff --git a/netbox/templates/tenancy/tenant.html b/netbox/templates/tenancy/tenant.html index dee7f7ce7..54b29e946 100644 --- a/netbox/templates/tenancy/tenant.html +++ b/netbox/templates/tenancy/tenant.html @@ -38,6 +38,7 @@ {% include 'inc/custom_fields_panel.html' %} {% include 'extras/inc/tags_panel.html' with tags=object.tags.all url='tenancy:tenant_list' %} {% include 'inc/comments_panel.html' %} + {% include 'inc/contacts_panel.html' %} {% plugin_left_page object %}
diff --git a/netbox/templates/virtualization/cluster.html b/netbox/templates/virtualization/cluster.html index 769ae431f..fa8cad039 100644 --- a/netbox/templates/virtualization/cluster.html +++ b/netbox/templates/virtualization/cluster.html @@ -62,6 +62,7 @@
{% include 'inc/custom_fields_panel.html' %} {% include 'extras/inc/tags_panel.html' with tags=object.tags.all url='virtualization:cluster_list' %} + {% include 'inc/contacts_panel.html' %} {% plugin_right_page object %}
diff --git a/netbox/templates/virtualization/clustergroup.html b/netbox/templates/virtualization/clustergroup.html index f7e8cbe5b..fd83c10f3 100644 --- a/netbox/templates/virtualization/clustergroup.html +++ b/netbox/templates/virtualization/clustergroup.html @@ -32,6 +32,7 @@
{% include 'inc/custom_fields_panel.html' %} + {% include 'inc/contacts_panel.html' %} {% plugin_right_page object %}
diff --git a/netbox/templates/virtualization/virtualmachine.html b/netbox/templates/virtualization/virtualmachine.html index 249ef91e4..0ef590112 100644 --- a/netbox/templates/virtualization/virtualmachine.html +++ b/netbox/templates/virtualization/virtualmachine.html @@ -173,6 +173,7 @@ {% endif %} + {% include 'inc/contacts_panel.html' %} {% plugin_right_page object %} diff --git a/netbox/tenancy/forms/models.py b/netbox/tenancy/forms/models.py index 6c0640d53..c0aec0aa8 100644 --- a/netbox/tenancy/forms/models.py +++ b/netbox/tenancy/forms/models.py @@ -1,11 +1,15 @@ +from django import forms + from extras.forms import CustomFieldModelForm from extras.models import Tag from tenancy.models import * from utilities.forms import ( BootstrapMixin, CommentField, DynamicModelChoiceField, DynamicModelMultipleChoiceField, SlugField, SmallTextarea, + StaticSelect, ) __all__ = ( + 'ContactAssignmentForm', 'ContactForm', 'ContactGroupForm', 'ContactRoleForm', @@ -100,3 +104,25 @@ class ContactForm(BootstrapMixin, CustomFieldModelForm): widgets = { 'address': SmallTextarea(attrs={'rows': 3}), } + + +class ContactAssignmentForm(BootstrapMixin, forms.ModelForm): + group = DynamicModelChoiceField( + queryset=ContactGroup.objects.all(), + required=False + ) + contact = DynamicModelChoiceField( + queryset=Contact.objects.all() + ) + role = DynamicModelChoiceField( + queryset=ContactRole.objects.all() + ) + + class Meta: + model = ContactAssignment + fields = ( + 'group', 'contact', 'role', 'priority', + ) + widgets = { + 'priority': StaticSelect(), + } diff --git a/netbox/tenancy/models.py b/netbox/tenancy/models.py index f5e66b753..f416d55b5 100644 --- a/netbox/tenancy/models.py +++ b/netbox/tenancy/models.py @@ -1,4 +1,4 @@ -from django.contrib.contenttypes.fields import GenericForeignKey +from django.contrib.contenttypes.fields import GenericForeignKey, GenericRelation from django.contrib.contenttypes.models import ContentType from django.db import models from django.urls import reverse @@ -86,6 +86,11 @@ class Tenant(PrimaryModel): blank=True ) + # Generic relations + contacts = GenericRelation( + to='tenancy.ContactAssignment' + ) + objects = RestrictedQuerySet.as_manager() clone_fields = [ diff --git a/netbox/tenancy/urls.py b/netbox/tenancy/urls.py index 807af161e..14047603d 100644 --- a/netbox/tenancy/urls.py +++ b/netbox/tenancy/urls.py @@ -67,4 +67,9 @@ urlpatterns = [ path('contacts//changelog/', ObjectChangeLogView.as_view(), name='contact_changelog', kwargs={'model': Contact}), path('contacts//journal/', ObjectJournalView.as_view(), name='contact_journal', kwargs={'model': Contact}), + # Contact assignments + path('contact-assignments/add/', views.ContactAssignmentEditView.as_view(), name='contactassignment_add'), + path('contact-assignments//edit/', views.ContactAssignmentEditView.as_view(), name='contactassignment_edit'), + path('contact-assignments//delete/', views.ContactAssignmentDeleteView.as_view(), name='contactassignment_delete'), + ] diff --git a/netbox/tenancy/views.py b/netbox/tenancy/views.py index f4772b288..e7034ed5f 100644 --- a/netbox/tenancy/views.py +++ b/netbox/tenancy/views.py @@ -1,9 +1,12 @@ +from django.contrib.contenttypes.models import ContentType +from django.http import Http404 +from django.shortcuts import get_object_or_404 + from circuits.models import Circuit from dcim.models import Site, Rack, Device, RackReservation from ipam.models import Aggregate, IPAddress, Prefix, VLAN, VRF from netbox.views import generic from utilities.tables import paginate_table -from utilities.utils import count_related from virtualization.models import VirtualMachine, Cluster from . import filtersets, forms, tables from .models import * @@ -309,3 +312,33 @@ class ContactBulkDeleteView(generic.BulkDeleteView): queryset = Contact.objects.prefetch_related('group') filterset = filtersets.ContactFilterSet table = tables.ContactTable + + +# +# Contact assignments +# + +class ContactAssignmentEditView(generic.ObjectEditView): + queryset = ContactAssignment.objects.all() + model_form = forms.ContactAssignmentForm + + def alter_obj(self, instance, request, args, kwargs): + if not instance.pk: + # Assign the object based on URL kwargs + try: + app_label, model = request.GET.get('content_type').split('.') + except (AttributeError, ValueError): + raise Http404("Content type not specified") + content_type = get_object_or_404(ContentType, app_label=app_label, model=model) + instance.object = get_object_or_404(content_type.model_class(), pk=request.GET.get('object_id')) + return instance + + def get_return_url(self, request, obj=None): + return obj.object.get_absolute_url() if obj else super().get_return_url(request) + + +class ContactAssignmentDeleteView(generic.ObjectDeleteView): + queryset = ContactAssignment.objects.all() + + def get_return_url(self, request, obj=None): + return obj.object.get_absolute_url() if obj else super().get_return_url(request) diff --git a/netbox/virtualization/models.py b/netbox/virtualization/models.py index 3408cedbc..d91a39549 100644 --- a/netbox/virtualization/models.py +++ b/netbox/virtualization/models.py @@ -81,12 +81,17 @@ class ClusterGroup(OrganizationalModel): max_length=200, blank=True ) + + # Generic relations vlan_groups = GenericRelation( to='ipam.VLANGroup', content_type_field='scope_type', object_id_field='scope_id', related_query_name='cluster_group' ) + contacts = GenericRelation( + to='tenancy.ContactAssignment' + ) objects = RestrictedQuerySet.as_manager() @@ -142,12 +147,17 @@ class Cluster(PrimaryModel): comments = models.TextField( blank=True ) + + # Generic relations vlan_groups = GenericRelation( to='ipam.VLANGroup', content_type_field='scope_type', object_id_field='scope_id', related_query_name='cluster' ) + contacts = GenericRelation( + to='tenancy.ContactAssignment' + ) objects = RestrictedQuerySet.as_manager() @@ -268,6 +278,11 @@ class VirtualMachine(PrimaryModel, ConfigContextModel): blank=True ) + # Generic relation + contacts = GenericRelation( + to='tenancy.ContactAssignment' + ) + objects = ConfigContextModelQuerySet.as_manager() clone_fields = [ From faf1e6a43d75cf826c9b460356a70814eb8427d2 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Mon, 18 Oct 2021 15:30:28 -0400 Subject: [PATCH 033/289] Add contact/role assignment tables --- netbox/templates/tenancy/contact.html | 13 +++++++++++++ netbox/templates/tenancy/contactrole.html | 6 ++++++ netbox/tenancy/tables.py | 23 ++++++++++++++++++----- netbox/tenancy/views.py | 21 +++++++++++++++++++-- 4 files changed, 56 insertions(+), 7 deletions(-) diff --git a/netbox/templates/tenancy/contact.html b/netbox/templates/tenancy/contact.html index 2ead52e5a..ca46fdb31 100644 --- a/netbox/templates/tenancy/contact.html +++ b/netbox/templates/tenancy/contact.html @@ -46,6 +46,12 @@ Address {{ object.address|linebreaksbr|placeholder }} + + Assignments + + {{ assignment_count }} + + @@ -60,6 +66,13 @@
+
+
Assignments
+
+ {% include 'inc/table.html' with table=contacts_table %} +
+
+ {% include 'inc/paginator.html' with paginator=contacts_table.paginator page=contacts_table.page %} {% plugin_full_width_page object %}
diff --git a/netbox/templates/tenancy/contactrole.html b/netbox/templates/tenancy/contactrole.html index 688c58177..f081afc34 100644 --- a/netbox/templates/tenancy/contactrole.html +++ b/netbox/templates/tenancy/contactrole.html @@ -21,6 +21,12 @@ Description {{ object.description|placeholder }} + + Assignments + + {{ assignment_count }} + + diff --git a/netbox/tenancy/tables.py b/netbox/tenancy/tables.py index 3401c8fe4..5b254842b 100644 --- a/netbox/tenancy/tables.py +++ b/netbox/tenancy/tables.py @@ -1,7 +1,7 @@ import django_tables2 as tables from utilities.tables import ( - BaseTable, ButtonsColumn, LinkedCountColumn, MarkdownColumn, MPTTColumn, TagColumn, ToggleColumn, + BaseTable, ButtonsColumn, ContentTypeColumn, LinkedCountColumn, MarkdownColumn, MPTTColumn, TagColumn, ToggleColumn, ) from .models import * @@ -126,23 +126,36 @@ class ContactTable(BaseTable): linkify=True ) comments = MarkdownColumn() + assignment_count = tables.Column( + verbose_name='Assignments' + ) tags = TagColumn( url_name='tenancy:tenant_list' ) class Meta(BaseTable.Meta): model = Contact - fields = ('pk', 'name', 'group', 'title', 'phone', 'email', 'address', 'comments', 'tags') - default_columns = ('pk', 'name', 'group', 'title', 'phone', 'email') + fields = ('pk', 'name', 'group', 'title', 'phone', 'email', 'address', 'comments', 'assignment_count', 'tags') + default_columns = ('pk', 'name', 'group', 'assignment_count', 'title', 'phone', 'email') class ContactAssignmentTable(BaseTable): pk = ToggleColumn() + content_type = ContentTypeColumn( + verbose_name='Object Type' + ) + object = tables.Column( + linkify=True, + orderable=False + ) contact = tables.Column( linkify=True ) + role = tables.Column( + linkify=True + ) class Meta(BaseTable.Meta): model = ContactAssignment - fields = ('pk', 'contact', 'role', 'priority') - default_columns = ('pk', 'contact', 'role', 'priority') + fields = ('pk', 'content_type', 'object', 'contact', 'role', 'priority') + default_columns = ('pk', 'object', 'contact', 'role', 'priority') diff --git a/netbox/tenancy/views.py b/netbox/tenancy/views.py index e7034ed5f..cdbaebdb1 100644 --- a/netbox/tenancy/views.py +++ b/netbox/tenancy/views.py @@ -7,6 +7,7 @@ from dcim.models import Site, Rack, Device, RackReservation from ipam.models import Aggregate, IPAddress, Prefix, VLAN, VRF from netbox.views import generic from utilities.tables import paginate_table +from utilities.utils import count_related from virtualization.models import VirtualMachine, Cluster from . import filtersets, forms, tables from .models import * @@ -236,11 +237,12 @@ class ContactRoleView(generic.ObjectView): role=instance ) contacts_table = tables.ContactAssignmentTable(contact_assignments) + contacts_table.columns.hide('role') paginate_table(contacts_table, request) return { 'contacts_table': contacts_table, - 'contact_count': ContactAssignment.objects.filter(role=instance).count(), + 'assignment_count': ContactAssignment.objects.filter(role=instance).count(), } @@ -276,7 +278,9 @@ class ContactRoleBulkDeleteView(generic.BulkDeleteView): # class ContactListView(generic.ObjectListView): - queryset = Contact.objects.all() + queryset = Contact.objects.annotate( + assignment_count=count_related(ContactAssignment, 'contact') + ) filterset = filtersets.ContactFilterSet filterset_form = forms.ContactFilterForm table = tables.ContactTable @@ -285,6 +289,19 @@ class ContactListView(generic.ObjectListView): class ContactView(generic.ObjectView): queryset = Contact.objects.all() + def get_extra_context(self, request, instance): + contact_assignments = ContactAssignment.objects.restrict(request.user, 'view').filter( + contact=instance + ) + contacts_table = tables.ContactAssignmentTable(contact_assignments) + contacts_table.columns.hide('contact') + paginate_table(contacts_table, request) + + return { + 'contacts_table': contacts_table, + 'assignment_count': ContactAssignment.objects.filter(contact=instance).count(), + } + class ContactEditView(generic.ObjectEditView): queryset = Contact.objects.all() From f485a47b4849c1e756f3d3c5c56c3ccb49688a03 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Mon, 18 Oct 2021 15:41:29 -0400 Subject: [PATCH 034/289] Tweak uniqueness constraints --- netbox/tenancy/migrations/0003_contacts.py | 11 +++++++---- netbox/tenancy/models.py | 12 ++++++++---- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/netbox/tenancy/migrations/0003_contacts.py b/netbox/tenancy/migrations/0003_contacts.py index dc6f6c668..6f77810f3 100644 --- a/netbox/tenancy/migrations/0003_contacts.py +++ b/netbox/tenancy/migrations/0003_contacts.py @@ -1,5 +1,3 @@ -# Generated by Django 3.2.8 on 2021-10-18 16:12 - import django.core.serializers.json from django.db import migrations, models import django.db.models.deletion @@ -56,8 +54,8 @@ class Migration(migrations.Migration): ('last_updated', models.DateTimeField(auto_now=True, null=True)), ('custom_field_data', models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder)), ('id', models.BigAutoField(primary_key=True, serialize=False)), - ('name', models.CharField(max_length=100, unique=True)), - ('slug', models.SlugField(max_length=100, unique=True)), + ('name', models.CharField(max_length=100)), + ('slug', models.SlugField(max_length=100)), ('description', models.CharField(blank=True, max_length=200)), ('lft', models.PositiveIntegerField(editable=False)), ('rght', models.PositiveIntegerField(editable=False)), @@ -67,6 +65,7 @@ class Migration(migrations.Migration): ], options={ 'ordering': ['name'], + 'unique_together': {('parent', 'name')}, }, ), migrations.CreateModel( @@ -95,4 +94,8 @@ class Migration(migrations.Migration): name='tags', field=taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag'), ), + migrations.AlterUniqueTogether( + name='contact', + unique_together={('group', 'name')}, + ), ] diff --git a/netbox/tenancy/models.py b/netbox/tenancy/models.py index f416d55b5..f53f7d0e6 100644 --- a/netbox/tenancy/models.py +++ b/netbox/tenancy/models.py @@ -117,12 +117,10 @@ class ContactGroup(NestedGroupModel): An arbitrary collection of Contacts. """ name = models.CharField( - max_length=100, - unique=True + max_length=100 ) slug = models.SlugField( - max_length=100, - unique=True + max_length=100 ) parent = TreeForeignKey( to='self', @@ -139,6 +137,9 @@ class ContactGroup(NestedGroupModel): class Meta: ordering = ['name'] + unique_together = ( + ('parent', 'name') + ) def get_absolute_url(self): return reverse('tenancy:contactgroup', args=[self.pk]) @@ -216,6 +217,9 @@ class Contact(PrimaryModel): class Meta: ordering = ['name'] + unique_together = ( + ('group', 'name') + ) def __str__(self): return self.name From 487d67768bf6a52c9e96e8a1a3aebda17640f0fe Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Mon, 18 Oct 2021 16:20:31 -0400 Subject: [PATCH 035/289] Cleanup and documentation for #1344 --- docs/core-functionality/contacts.md | 5 +++++ docs/models/tenancy/contact.md | 31 +++++++++++++++++++++++++++++ docs/models/tenancy/contactgroup.md | 3 +++ docs/models/tenancy/contactrole.md | 3 +++ mkdocs.yml | 1 + netbox/tenancy/api/serializers.py | 7 +++++-- netbox/tenancy/filtersets.py | 9 +++++---- netbox/tenancy/forms/bulk_edit.py | 15 ++++++++++++++ netbox/tenancy/forms/models.py | 10 ++++++++-- netbox/tenancy/models.py | 3 +++ 10 files changed, 79 insertions(+), 8 deletions(-) create mode 100644 docs/core-functionality/contacts.md create mode 100644 docs/models/tenancy/contact.md create mode 100644 docs/models/tenancy/contactgroup.md create mode 100644 docs/models/tenancy/contactrole.md diff --git a/docs/core-functionality/contacts.md b/docs/core-functionality/contacts.md new file mode 100644 index 000000000..76a005fc0 --- /dev/null +++ b/docs/core-functionality/contacts.md @@ -0,0 +1,5 @@ +# Contacts + +{!models/tenancy/contact.md!} +{!models/tenancy/contactgroup.md!} +{!models/tenancy/contactrole.md!} diff --git a/docs/models/tenancy/contact.md b/docs/models/tenancy/contact.md new file mode 100644 index 000000000..9d81e2d85 --- /dev/null +++ b/docs/models/tenancy/contact.md @@ -0,0 +1,31 @@ +# Contacts + +A contact represent an individual or group that has been associated with an object in NetBox for administrative reasons. For example, you might assign one or more operational contacts to each site. Contacts can be arranged within nested contact groups. + +Each contact must include a name, which is unique to its parent group (if any). The following optional descriptors are also available: + +* Title +* Phone +* Email +* Address + +## Contact Assignment + +Each contact can be assigned to one or more objects, allowing for the efficient reuse of contact information. When assigning a contact to an object, the user may optionally specify a role and/or priority (primary, secondary, tertiary, or inactive) to better convey the nature of the contact's relationship to the assigned object. + +The following models support the assignment of contacts: + +* circuits.Circuit +* circuits.Provider +* dcim.Device +* dcim.Location +* dcim.Manufacturer +* dcim.PowerPanel +* dcim.Rack +* dcim.Region +* dcim.Site +* dcim.SiteGroup +* tenancy.Tenant +* virtualization.Cluster +* virtualization.ClusterGroup +* virtualization.VirtualMachine diff --git a/docs/models/tenancy/contactgroup.md b/docs/models/tenancy/contactgroup.md new file mode 100644 index 000000000..ea566c58a --- /dev/null +++ b/docs/models/tenancy/contactgroup.md @@ -0,0 +1,3 @@ +# Contact Groups + +Contacts can be organized into arbitrary groups. These groups can be recursively nested for convenience. Each contact within a group must have a unique name, but other attributes can be repeated. diff --git a/docs/models/tenancy/contactrole.md b/docs/models/tenancy/contactrole.md new file mode 100644 index 000000000..23642ca03 --- /dev/null +++ b/docs/models/tenancy/contactrole.md @@ -0,0 +1,3 @@ +# Contact Roles + +Contacts can be organized by functional roles, which are fully customizable by the user. For example, you might create roles for administrative, operational, or emergency contacts. diff --git a/mkdocs.yml b/mkdocs.yml index 7244c36d6..72750d6f5 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -62,6 +62,7 @@ nav: - Circuits: 'core-functionality/circuits.md' - Power Tracking: 'core-functionality/power.md' - Tenancy: 'core-functionality/tenancy.md' + - Contacts: 'core-functionality/contacts.md' - Customization: - Custom Fields: 'customization/custom-fields.md' - Custom Validation: 'customization/custom-validation.md' diff --git a/netbox/tenancy/api/serializers.py b/netbox/tenancy/api/serializers.py index 2dfb59455..27a14b350 100644 --- a/netbox/tenancy/api/serializers.py +++ b/netbox/tenancy/api/serializers.py @@ -1,8 +1,9 @@ from django.contrib.auth.models import ContentType from rest_framework import serializers -from netbox.api import ContentTypeField +from netbox.api import ChoiceField, ContentTypeField from netbox.api.serializers import NestedGroupModelSerializer, OrganizationalModelSerializer, PrimaryModelSerializer +from tenancy.choices import ContactPriorityChoices from tenancy.models import * from .nested_serializers import * @@ -93,9 +94,11 @@ class ContactAssignmentSerializer(PrimaryModelSerializer): ) contact = NestedContactSerializer() role = NestedContactRoleSerializer(required=False, allow_null=True) + priority = ChoiceField(choices=ContactPriorityChoices, required=False) class Meta: model = ContactAssignment fields = [ - 'id', 'url', 'display', 'content_type', 'object_id', 'contact', 'role', 'created', 'last_updated', + 'id', 'url', 'display', 'content_type', 'object_id', 'contact', 'role', 'priority', 'created', + 'last_updated', ] diff --git a/netbox/tenancy/filtersets.py b/netbox/tenancy/filtersets.py index 75f9e351d..f6d0ac72e 100644 --- a/netbox/tenancy/filtersets.py +++ b/netbox/tenancy/filtersets.py @@ -2,8 +2,8 @@ import django_filters from django.db.models import Q from extras.filters import TagFilter -from netbox.filtersets import OrganizationalModelFilterSet, PrimaryModelFilterSet -from utilities.filters import TreeNodeMultipleChoiceFilter +from netbox.filtersets import ChangeLoggedModelFilterSet, OrganizationalModelFilterSet, PrimaryModelFilterSet +from utilities.filters import ContentTypeFilter, TreeNodeMultipleChoiceFilter from .models import * @@ -168,7 +168,8 @@ class ContactFilterSet(PrimaryModelFilterSet): ) -class ContactAssignmentFilterSet(OrganizationalModelFilterSet): +class ContactAssignmentFilterSet(ChangeLoggedModelFilterSet): + content_type = ContentTypeFilter() contact_id = django_filters.ModelMultipleChoiceFilter( queryset=Contact.objects.all(), label='Contact (ID)', @@ -186,4 +187,4 @@ class ContactAssignmentFilterSet(OrganizationalModelFilterSet): class Meta: model = ContactAssignment - fields = ['id', 'priority'] + fields = ['id', 'content_type_id', 'priority'] diff --git a/netbox/tenancy/forms/bulk_edit.py b/netbox/tenancy/forms/bulk_edit.py index 0d414d2a5..a34b8def1 100644 --- a/netbox/tenancy/forms/bulk_edit.py +++ b/netbox/tenancy/forms/bulk_edit.py @@ -96,6 +96,21 @@ class ContactBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldModelBul queryset=ContactGroup.objects.all(), required=False ) + title = forms.CharField( + max_length=100, + required=False + ) + phone = forms.CharField( + max_length=50, + required=False + ) + email = forms.EmailField( + required=False + ) + address = forms.CharField( + max_length=200, + required=False + ) class Meta: nullable_fields = ['group', 'title', 'phone', 'email', 'address', 'comments'] diff --git a/netbox/tenancy/forms/models.py b/netbox/tenancy/forms/models.py index c0aec0aa8..b15065705 100644 --- a/netbox/tenancy/forms/models.py +++ b/netbox/tenancy/forms/models.py @@ -109,10 +109,16 @@ class ContactForm(BootstrapMixin, CustomFieldModelForm): class ContactAssignmentForm(BootstrapMixin, forms.ModelForm): group = DynamicModelChoiceField( queryset=ContactGroup.objects.all(), - required=False + required=False, + initial_params={ + 'contacts': '$contact' + } ) contact = DynamicModelChoiceField( - queryset=Contact.objects.all() + queryset=Contact.objects.all(), + query_params={ + 'group_id': '$group' + } ) role = DynamicModelChoiceField( queryset=ContactRole.objects.all() diff --git a/netbox/tenancy/models.py b/netbox/tenancy/models.py index f53f7d0e6..20708f74a 100644 --- a/netbox/tenancy/models.py +++ b/netbox/tenancy/models.py @@ -259,3 +259,6 @@ class ContactAssignment(ChangeLoggedModel): class Meta: ordering = ('priority', 'contact') + + def __str__(self): + return f"{self.contact} ({self.get_priority_display()})" if self.priority else self.name From b44a5ea60956f63a5514f7b221a9914e3f510012 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Mon, 18 Oct 2021 16:33:31 -0400 Subject: [PATCH 036/289] Prevent duplicate contact assignments --- netbox/tenancy/migrations/0003_contacts.py | 54 +++++++++------------- netbox/tenancy/models.py | 1 + 2 files changed, 23 insertions(+), 32 deletions(-) diff --git a/netbox/tenancy/migrations/0003_contacts.py b/netbox/tenancy/migrations/0003_contacts.py index 6f77810f3..35e568ab1 100644 --- a/netbox/tenancy/migrations/0003_contacts.py +++ b/netbox/tenancy/migrations/0003_contacts.py @@ -14,24 +14,6 @@ class Migration(migrations.Migration): ] operations = [ - migrations.CreateModel( - name='Contact', - fields=[ - ('created', models.DateField(auto_now_add=True, null=True)), - ('last_updated', models.DateTimeField(auto_now=True, null=True)), - ('custom_field_data', models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder)), - ('id', models.BigAutoField(primary_key=True, serialize=False)), - ('name', models.CharField(max_length=100)), - ('title', models.CharField(blank=True, max_length=100)), - ('phone', models.CharField(blank=True, max_length=50)), - ('email', models.EmailField(blank=True, max_length=254)), - ('address', models.CharField(blank=True, max_length=200)), - ('comments', models.TextField(blank=True)), - ], - options={ - 'ordering': ['name'], - }, - ), migrations.CreateModel( name='ContactRole', fields=[ @@ -68,6 +50,27 @@ class Migration(migrations.Migration): 'unique_together': {('parent', 'name')}, }, ), + migrations.CreateModel( + name='Contact', + fields=[ + ('created', models.DateField(auto_now_add=True, null=True)), + ('last_updated', models.DateTimeField(auto_now=True, null=True)), + ('custom_field_data', models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder)), + ('id', models.BigAutoField(primary_key=True, serialize=False)), + ('name', models.CharField(max_length=100)), + ('title', models.CharField(blank=True, max_length=100)), + ('phone', models.CharField(blank=True, max_length=50)), + ('email', models.EmailField(blank=True, max_length=254)), + ('address', models.CharField(blank=True, max_length=200)), + ('comments', models.TextField(blank=True)), + ('group', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='contacts', to='tenancy.contactgroup')), + ('tags', taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag')), + ], + options={ + 'ordering': ['name'], + 'unique_together': {('group', 'name')}, + }, + ), migrations.CreateModel( name='ContactAssignment', fields=[ @@ -82,20 +85,7 @@ class Migration(migrations.Migration): ], options={ 'ordering': ('priority', 'contact'), + 'unique_together': {('content_type', 'object_id', 'contact', 'role', 'priority')}, }, ), - migrations.AddField( - model_name='contact', - name='group', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='contacts', to='tenancy.contactgroup'), - ), - migrations.AddField( - model_name='contact', - name='tags', - field=taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag'), - ), - migrations.AlterUniqueTogether( - name='contact', - unique_together={('group', 'name')}, - ), ] diff --git a/netbox/tenancy/models.py b/netbox/tenancy/models.py index 20708f74a..35c10938b 100644 --- a/netbox/tenancy/models.py +++ b/netbox/tenancy/models.py @@ -259,6 +259,7 @@ class ContactAssignment(ChangeLoggedModel): class Meta: ordering = ('priority', 'contact') + unique_together = ('content_type', 'object_id', 'contact', 'role', 'priority') def __str__(self): return f"{self.contact} ({self.get_priority_display()})" if self.priority else self.name From 554b44b9f2dfc8d10ddc2e4b3dd492c57bc81d4b Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Mon, 18 Oct 2021 16:47:49 -0400 Subject: [PATCH 037/289] Fix string repr for ContactAssignment --- netbox/tenancy/models.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/netbox/tenancy/models.py b/netbox/tenancy/models.py index 35c10938b..c709236e2 100644 --- a/netbox/tenancy/models.py +++ b/netbox/tenancy/models.py @@ -262,4 +262,6 @@ class ContactAssignment(ChangeLoggedModel): unique_together = ('content_type', 'object_id', 'contact', 'role', 'priority') def __str__(self): - return f"{self.contact} ({self.get_priority_display()})" if self.priority else self.name + if self.priority: + return f"{self.contact} ({self.get_priority_display()})" + return str(self.contact) From 0afd3e61894aaf792e4d09c17c493138f097ee54 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Tue, 19 Oct 2021 12:33:17 -0400 Subject: [PATCH 038/289] Closes #6715: Add tenant assignment for cables --- docs/release-notes/version-3.1.md | 5 ++++ netbox/dcim/api/serializers.py | 5 ++-- netbox/dcim/filtersets.py | 10 +------- netbox/dcim/forms/bulk_edit.py | 6 ++++- netbox/dcim/forms/bulk_import.py | 8 ++++++- netbox/dcim/forms/connections.py | 17 ++++++++------ netbox/dcim/forms/filtersets.py | 10 ++------ netbox/dcim/forms/models.py | 4 ++-- ...n_tenant.py => 0135_tenancy_extensions.py} | 5 ++++ netbox/dcim/migrations/0136_device_airflow.py | 2 +- netbox/dcim/models/cables.py | 7 ++++++ netbox/dcim/tables/cables.py | 4 +++- netbox/dcim/tests/test_filtersets.py | 23 ++++++++++--------- netbox/templates/dcim/cable.html | 13 +++++++++++ netbox/templates/dcim/inc/cable_form.html | 4 +++- 15 files changed, 79 insertions(+), 44 deletions(-) rename netbox/dcim/migrations/{0135_location_tenant.py => 0135_tenancy_extensions.py} (67%) diff --git a/docs/release-notes/version-3.1.md b/docs/release-notes/version-3.1.md index c49552edd..630e46b5b 100644 --- a/docs/release-notes/version-3.1.md +++ b/docs/release-notes/version-3.1.md @@ -3,11 +3,16 @@ !!! warning "PostgreSQL 10 Required" NetBox v3.1 requires PostgreSQL 10 or later. +### Breaking Changes + +* The `tenant` and `tenant_id` filters for the Cable model now filter on the tenant assigned directly to each cable, rather than on the parent object of either termination. + ### Enhancements * [#1337](https://github.com/netbox-community/netbox/issues/1337) - Add WWN field to interfaces * [#3839](https://github.com/netbox-community/netbox/issues/3839) - Add `airflow` field for devices types and devices * [#6711](https://github.com/netbox-community/netbox/issues/6711) - Add `longtext` custom field type with Markdown support +* [#6715](https://github.com/netbox-community/netbox/issues/6715) - Add tenant assignment for cables * [#6874](https://github.com/netbox-community/netbox/issues/6874) - Add tenant assignment for locations ### Other Changes diff --git a/netbox/dcim/api/serializers.py b/netbox/dcim/api/serializers.py index 9d261d9e8..14a1af8f0 100644 --- a/netbox/dcim/api/serializers.py +++ b/netbox/dcim/api/serializers.py @@ -758,14 +758,15 @@ class CableSerializer(PrimaryModelSerializer): termination_a = serializers.SerializerMethodField(read_only=True) termination_b = serializers.SerializerMethodField(read_only=True) status = ChoiceField(choices=CableStatusChoices, required=False) + tenant = NestedTenantSerializer(required=False, allow_null=True) length_unit = ChoiceField(choices=CableLengthUnitChoices, allow_blank=True, required=False) class Meta: model = Cable fields = [ 'id', 'url', 'display', 'termination_a_type', 'termination_a_id', 'termination_a', 'termination_b_type', - 'termination_b_id', 'termination_b', 'type', 'status', 'label', 'color', 'length', 'length_unit', 'tags', - 'custom_fields', + 'termination_b_id', 'termination_b', 'type', 'status', 'tenant', 'label', 'color', 'length', 'length_unit', + 'tags', 'custom_fields', ] def _get_termination(self, obj, side): diff --git a/netbox/dcim/filtersets.py b/netbox/dcim/filtersets.py index c3de7cb08..c66397029 100644 --- a/netbox/dcim/filtersets.py +++ b/netbox/dcim/filtersets.py @@ -1189,7 +1189,7 @@ class VirtualChassisFilterSet(PrimaryModelFilterSet): return queryset.filter(qs_filter).distinct() -class CableFilterSet(PrimaryModelFilterSet): +class CableFilterSet(TenancyFilterSet, PrimaryModelFilterSet): q = django_filters.CharFilter( method='search', label='Search', @@ -1230,14 +1230,6 @@ class CableFilterSet(PrimaryModelFilterSet): method='filter_device', field_name='device__site__slug' ) - tenant_id = MultiValueNumberFilter( - method='filter_device', - field_name='device__tenant_id' - ) - tenant = MultiValueNumberFilter( - method='filter_device', - field_name='device__tenant__slug' - ) tag = TagFilter() class Meta: diff --git a/netbox/dcim/forms/bulk_edit.py b/netbox/dcim/forms/bulk_edit.py index 289057be9..06ccc958c 100644 --- a/netbox/dcim/forms/bulk_edit.py +++ b/netbox/dcim/forms/bulk_edit.py @@ -468,6 +468,10 @@ class CableBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldModelBulkE widget=StaticSelect(), initial='' ) + tenant = DynamicModelChoiceField( + queryset=Tenant.objects.all(), + required=False + ) label = forms.CharField( max_length=100, required=False @@ -488,7 +492,7 @@ class CableBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldModelBulkE class Meta: nullable_fields = [ - 'type', 'status', 'label', 'color', 'length', + 'type', 'status', 'tenant', 'label', 'color', 'length', ] def clean(self): diff --git a/netbox/dcim/forms/bulk_import.py b/netbox/dcim/forms/bulk_import.py index bd9e8cd4a..720ea8dbd 100644 --- a/netbox/dcim/forms/bulk_import.py +++ b/netbox/dcim/forms/bulk_import.py @@ -821,6 +821,12 @@ class CableCSVForm(CustomFieldModelCSVForm): required=False, help_text='Physical medium classification' ) + tenant = CSVModelChoiceField( + queryset=Tenant.objects.all(), + required=False, + to_field_name='name', + help_text='Assigned tenant' + ) length_unit = CSVChoiceField( choices=CableLengthUnitChoices, required=False, @@ -831,7 +837,7 @@ class CableCSVForm(CustomFieldModelCSVForm): model = Cable fields = [ 'side_a_device', 'side_a_type', 'side_a_name', 'side_b_device', 'side_b_type', 'side_b_name', 'type', - 'status', 'label', 'color', 'length', 'length_unit', + 'status', 'tenant', 'label', 'color', 'length', 'length_unit', ] help_texts = { 'color': mark_safe('RGB color in hexadecimal (e.g. 00ff00)'), diff --git a/netbox/dcim/forms/connections.py b/netbox/dcim/forms/connections.py index a2ceea6cf..770dc211b 100644 --- a/netbox/dcim/forms/connections.py +++ b/netbox/dcim/forms/connections.py @@ -2,6 +2,7 @@ from circuits.models import Circuit, CircuitTermination, Provider from dcim.models import * from extras.forms import CustomFieldModelForm from extras.models import Tag +from tenancy.forms import TenancyForm from utilities.forms import BootstrapMixin, DynamicModelChoiceField, DynamicModelMultipleChoiceField, StaticSelect __all__ = ( @@ -17,7 +18,7 @@ __all__ = ( ) -class ConnectCableToDeviceForm(BootstrapMixin, CustomFieldModelForm): +class ConnectCableToDeviceForm(BootstrapMixin, TenancyForm, CustomFieldModelForm): """ Base form for connecting a Cable to a Device component """ @@ -78,7 +79,8 @@ class ConnectCableToDeviceForm(BootstrapMixin, CustomFieldModelForm): model = Cable fields = [ 'termination_b_region', 'termination_b_site', 'termination_b_rack', 'termination_b_device', - 'termination_b_id', 'type', 'status', 'label', 'color', 'length', 'length_unit', 'tags', + 'termination_b_id', 'type', 'status', 'tenant_group', 'tenant', 'label', 'color', 'length', 'length_unit', + 'tags', ] widgets = { 'status': StaticSelect, @@ -169,7 +171,7 @@ class ConnectCableToRearPortForm(ConnectCableToDeviceForm): ) -class ConnectCableToCircuitTerminationForm(BootstrapMixin, CustomFieldModelForm): +class ConnectCableToCircuitTerminationForm(BootstrapMixin, TenancyForm, CustomFieldModelForm): termination_b_provider = DynamicModelChoiceField( queryset=Provider.objects.all(), label='Provider', @@ -219,7 +221,8 @@ class ConnectCableToCircuitTerminationForm(BootstrapMixin, CustomFieldModelForm) model = Cable fields = [ 'termination_b_provider', 'termination_b_region', 'termination_b_site', 'termination_b_circuit', - 'termination_b_id', 'type', 'status', 'label', 'color', 'length', 'length_unit', 'tags', + 'termination_b_id', 'type', 'status', 'tenant_group', 'tenant', 'label', 'color', 'length', 'length_unit', + 'tags', ] def clean_termination_b_id(self): @@ -227,7 +230,7 @@ class ConnectCableToCircuitTerminationForm(BootstrapMixin, CustomFieldModelForm) return getattr(self.cleaned_data['termination_b_id'], 'pk', None) -class ConnectCableToPowerFeedForm(BootstrapMixin, CustomFieldModelForm): +class ConnectCableToPowerFeedForm(BootstrapMixin, TenancyForm, CustomFieldModelForm): termination_b_region = DynamicModelChoiceField( queryset=Region.objects.all(), label='Region', @@ -280,8 +283,8 @@ class ConnectCableToPowerFeedForm(BootstrapMixin, CustomFieldModelForm): class Meta: model = Cable fields = [ - 'termination_b_location', 'termination_b_powerpanel', 'termination_b_id', 'type', 'status', 'label', - 'color', 'length', 'length_unit', 'tags', + 'termination_b_location', 'termination_b_powerpanel', 'termination_b_id', 'type', 'status', 'tenant_group', + 'tenant', 'label', 'color', 'length', 'length_unit', 'tags', ] def clean_termination_b_id(self): diff --git a/netbox/dcim/forms/filtersets.py b/netbox/dcim/forms/filtersets.py index 94e7bce05..501e78b18 100644 --- a/netbox/dcim/forms/filtersets.py +++ b/netbox/dcim/forms/filtersets.py @@ -691,13 +691,13 @@ class VirtualChassisFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldMod tag = TagFilterField(model) -class CableFilterForm(BootstrapMixin, CustomFieldModelFilterForm): +class CableFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldModelFilterForm): model = Cable field_groups = [ ['q', 'tag'], ['site_id', 'rack_id', 'device_id'], ['type', 'status', 'color'], - ['tenant_id'], + ['tenant_group_id', 'tenant_id'], ] q = forms.CharField( required=False, @@ -719,12 +719,6 @@ class CableFilterForm(BootstrapMixin, CustomFieldModelFilterForm): label=_('Site'), fetch_trigger='open' ) - tenant_id = DynamicModelMultipleChoiceField( - queryset=Tenant.objects.all(), - required=False, - label=_('Tenant'), - fetch_trigger='open' - ) rack_id = DynamicModelMultipleChoiceField( queryset=Rack.objects.all(), required=False, diff --git a/netbox/dcim/forms/models.py b/netbox/dcim/forms/models.py index cb690840f..8236b1a97 100644 --- a/netbox/dcim/forms/models.py +++ b/netbox/dcim/forms/models.py @@ -601,7 +601,7 @@ class DeviceForm(BootstrapMixin, TenancyForm, CustomFieldModelForm): self.fields['position'].widget.choices = [(position, f'U{position}')] -class CableForm(BootstrapMixin, CustomFieldModelForm): +class CableForm(BootstrapMixin, TenancyForm, CustomFieldModelForm): tags = DynamicModelMultipleChoiceField( queryset=Tag.objects.all(), required=False @@ -610,7 +610,7 @@ class CableForm(BootstrapMixin, CustomFieldModelForm): class Meta: model = Cable fields = [ - 'type', 'status', 'label', 'color', 'length', 'length_unit', 'tags', + 'type', 'status', 'tenant_group', 'tenant', 'label', 'color', 'length', 'length_unit', 'tags', ] widgets = { 'status': StaticSelect, diff --git a/netbox/dcim/migrations/0135_location_tenant.py b/netbox/dcim/migrations/0135_tenancy_extensions.py similarity index 67% rename from netbox/dcim/migrations/0135_location_tenant.py rename to netbox/dcim/migrations/0135_tenancy_extensions.py index 0b1f429f9..673b5027f 100644 --- a/netbox/dcim/migrations/0135_location_tenant.py +++ b/netbox/dcim/migrations/0135_tenancy_extensions.py @@ -15,4 +15,9 @@ class Migration(migrations.Migration): name='tenant', field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='locations', to='tenancy.tenant'), ), + migrations.AddField( + model_name='cable', + name='tenant', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='cables', to='tenancy.tenant'), + ), ] diff --git a/netbox/dcim/migrations/0136_device_airflow.py b/netbox/dcim/migrations/0136_device_airflow.py index a0887a0b4..94cc89f3f 100644 --- a/netbox/dcim/migrations/0136_device_airflow.py +++ b/netbox/dcim/migrations/0136_device_airflow.py @@ -4,7 +4,7 @@ from django.db import migrations, models class Migration(migrations.Migration): dependencies = [ - ('dcim', '0135_location_tenant'), + ('dcim', '0135_tenancy_extensions'), ] operations = [ diff --git a/netbox/dcim/models/cables.py b/netbox/dcim/models/cables.py index c3f8cac3f..bddce93b9 100644 --- a/netbox/dcim/models/cables.py +++ b/netbox/dcim/models/cables.py @@ -67,6 +67,13 @@ class Cable(PrimaryModel): choices=CableStatusChoices, default=CableStatusChoices.STATUS_CONNECTED ) + tenant = models.ForeignKey( + to='tenancy.Tenant', + on_delete=models.PROTECT, + related_name='cables', + blank=True, + null=True + ) label = models.CharField( max_length=100, blank=True diff --git a/netbox/dcim/tables/cables.py b/netbox/dcim/tables/cables.py index 14cf34505..87913cbfd 100644 --- a/netbox/dcim/tables/cables.py +++ b/netbox/dcim/tables/cables.py @@ -2,6 +2,7 @@ import django_tables2 as tables from django_tables2.utils import Accessor from dcim.models import Cable +from tenancy.tables import TenantColumn from utilities.tables import BaseTable, ChoiceFieldColumn, ColorColumn, TagColumn, TemplateColumn, ToggleColumn from .template_code import CABLE_LENGTH, CABLE_TERMINATION_PARENT @@ -45,6 +46,7 @@ class CableTable(BaseTable): verbose_name='Termination B' ) status = ChoiceFieldColumn() + tenant = TenantColumn() length = TemplateColumn( template_code=CABLE_LENGTH, order_by='_abs_length' @@ -58,7 +60,7 @@ class CableTable(BaseTable): model = Cable fields = ( 'pk', 'id', 'label', 'termination_a_parent', 'termination_a', 'termination_b_parent', 'termination_b', - 'status', 'type', 'color', 'length', 'tags', + 'status', 'type', 'tenant', 'color', 'length', 'tags', ) default_columns = ( 'pk', 'id', 'label', 'termination_a_parent', 'termination_a', 'termination_b_parent', 'termination_b', diff --git a/netbox/dcim/tests/test_filtersets.py b/netbox/dcim/tests/test_filtersets.py index fcee2914b..ce78e0470 100644 --- a/netbox/dcim/tests/test_filtersets.py +++ b/netbox/dcim/tests/test_filtersets.py @@ -2819,6 +2819,7 @@ class CableTestCase(TestCase, ChangeLoggedFilterSetTests): tenants = ( Tenant(name='Tenant 1', slug='tenant-1'), Tenant(name='Tenant 2', slug='tenant-2'), + Tenant(name='Tenant 3', slug='tenant-3'), ) Tenant.objects.bulk_create(tenants) @@ -2834,9 +2835,9 @@ class CableTestCase(TestCase, ChangeLoggedFilterSetTests): device_role = DeviceRole.objects.create(name='Device Role 1', slug='device-role-1') devices = ( - Device(name='Device 1', device_type=device_type, device_role=device_role, site=sites[0], rack=racks[0], position=1, tenant=tenants[0]), - Device(name='Device 2', device_type=device_type, device_role=device_role, site=sites[0], rack=racks[0], position=2, tenant=tenants[0]), - Device(name='Device 3', device_type=device_type, device_role=device_role, site=sites[1], rack=racks[1], position=1, tenant=tenants[1]), + Device(name='Device 1', device_type=device_type, device_role=device_role, site=sites[0], rack=racks[0], position=1), + Device(name='Device 2', device_type=device_type, device_role=device_role, site=sites[0], rack=racks[0], position=2), + Device(name='Device 3', device_type=device_type, device_role=device_role, site=sites[1], rack=racks[1], position=1), Device(name='Device 4', device_type=device_type, device_role=device_role, site=sites[1], rack=racks[1], position=2), Device(name='Device 5', device_type=device_type, device_role=device_role, site=sites[2], rack=racks[2], position=1), Device(name='Device 6', device_type=device_type, device_role=device_role, site=sites[2], rack=racks[2], position=2), @@ -2863,12 +2864,12 @@ class CableTestCase(TestCase, ChangeLoggedFilterSetTests): console_server_port = ConsoleServerPort.objects.create(device=devices[0], name='Console Server Port 1') # Cables - Cable(termination_a=interfaces[1], termination_b=interfaces[2], label='Cable 1', type=CableTypeChoices.TYPE_CAT3, status=CableStatusChoices.STATUS_CONNECTED, color='aa1409', length=10, length_unit=CableLengthUnitChoices.UNIT_FOOT).save() - Cable(termination_a=interfaces[3], termination_b=interfaces[4], label='Cable 2', type=CableTypeChoices.TYPE_CAT3, status=CableStatusChoices.STATUS_CONNECTED, color='aa1409', length=20, length_unit=CableLengthUnitChoices.UNIT_FOOT).save() - Cable(termination_a=interfaces[5], termination_b=interfaces[6], label='Cable 3', type=CableTypeChoices.TYPE_CAT5E, status=CableStatusChoices.STATUS_CONNECTED, color='f44336', length=30, length_unit=CableLengthUnitChoices.UNIT_FOOT).save() - Cable(termination_a=interfaces[7], termination_b=interfaces[8], label='Cable 4', type=CableTypeChoices.TYPE_CAT5E, status=CableStatusChoices.STATUS_PLANNED, color='f44336', length=40, length_unit=CableLengthUnitChoices.UNIT_FOOT).save() - Cable(termination_a=interfaces[9], termination_b=interfaces[10], label='Cable 5', type=CableTypeChoices.TYPE_CAT6, status=CableStatusChoices.STATUS_PLANNED, color='e91e63', length=10, length_unit=CableLengthUnitChoices.UNIT_METER).save() - Cable(termination_a=interfaces[11], termination_b=interfaces[0], label='Cable 6', type=CableTypeChoices.TYPE_CAT6, status=CableStatusChoices.STATUS_PLANNED, color='e91e63', length=20, length_unit=CableLengthUnitChoices.UNIT_METER).save() + Cable(termination_a=interfaces[1], termination_b=interfaces[2], label='Cable 1', type=CableTypeChoices.TYPE_CAT3, tenant=tenants[0], status=CableStatusChoices.STATUS_CONNECTED, color='aa1409', length=10, length_unit=CableLengthUnitChoices.UNIT_FOOT).save() + Cable(termination_a=interfaces[3], termination_b=interfaces[4], label='Cable 2', type=CableTypeChoices.TYPE_CAT3, tenant=tenants[0], status=CableStatusChoices.STATUS_CONNECTED, color='aa1409', length=20, length_unit=CableLengthUnitChoices.UNIT_FOOT).save() + Cable(termination_a=interfaces[5], termination_b=interfaces[6], label='Cable 3', type=CableTypeChoices.TYPE_CAT5E, tenant=tenants[1], status=CableStatusChoices.STATUS_CONNECTED, color='f44336', length=30, length_unit=CableLengthUnitChoices.UNIT_FOOT).save() + Cable(termination_a=interfaces[7], termination_b=interfaces[8], label='Cable 4', type=CableTypeChoices.TYPE_CAT5E, tenant=tenants[1], status=CableStatusChoices.STATUS_PLANNED, color='f44336', length=40, length_unit=CableLengthUnitChoices.UNIT_FOOT).save() + Cable(termination_a=interfaces[9], termination_b=interfaces[10], label='Cable 5', type=CableTypeChoices.TYPE_CAT6, tenant=tenants[2], status=CableStatusChoices.STATUS_PLANNED, color='e91e63', length=10, length_unit=CableLengthUnitChoices.UNIT_METER).save() + Cable(termination_a=interfaces[11], termination_b=interfaces[0], label='Cable 6', type=CableTypeChoices.TYPE_CAT6, tenant=tenants[2], status=CableStatusChoices.STATUS_PLANNED, color='e91e63', length=20, length_unit=CableLengthUnitChoices.UNIT_METER).save() Cable(termination_a=console_port, termination_b=console_server_port, label='Cable 7').save() def test_label(self): @@ -2921,9 +2922,9 @@ class CableTestCase(TestCase, ChangeLoggedFilterSetTests): def test_tenant(self): tenant = Tenant.objects.all()[:2] params = {'tenant_id': [tenant[0].pk, tenant[1].pk]} - self.assertEqual(self.filterset(params, self.queryset).qs.count(), 5) + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4) params = {'tenant': [tenant[0].slug, tenant[1].slug]} - self.assertEqual(self.filterset(params, self.queryset).qs.count(), 5) + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4) def test_termination_types(self): params = {'termination_a_type': 'dcim.consoleport'} diff --git a/netbox/templates/dcim/cable.html b/netbox/templates/dcim/cable.html index c7cd71b65..e9cde6e00 100644 --- a/netbox/templates/dcim/cable.html +++ b/netbox/templates/dcim/cable.html @@ -23,6 +23,19 @@ {{ object.get_status_display }} + + Tenant + + {% if object.tenant %} + {% if object.tenant.group %} + {{ object.tenant.group }} / + {% endif %} + {{ object.tenant }} + {% else %} + None + {% endif %} + + Label {{ object.label|placeholder }} diff --git a/netbox/templates/dcim/inc/cable_form.html b/netbox/templates/dcim/inc/cable_form.html index 05929821c..0f11ac3cb 100644 --- a/netbox/templates/dcim/inc/cable_form.html +++ b/netbox/templates/dcim/inc/cable_form.html @@ -2,6 +2,8 @@ {% render_field form.status %} {% render_field form.type %} +{% render_field form.tenant_group %} +{% render_field form.tenant %} {% render_field form.label %} {% render_field form.color %}
@@ -17,7 +19,7 @@ {% render_field form.tags %} {% if form.custom_fields %}
-
+
Custom Fields
{% render_custom_fields form %} From 8375995680947986900f9f9abefd56e54513d15c Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Tue, 19 Oct 2021 13:06:41 -0400 Subject: [PATCH 039/289] Closes #1943: Relax uniqueness constraint on cluster names --- docs/models/virtualization/cluster.md | 2 +- docs/release-notes/version-3.1.md | 1 + netbox/virtualization/api/serializers.py | 4 ++-- .../0024_cluster_relax_uniqueness.py | 21 +++++++++++++++++++ netbox/virtualization/models.py | 7 +++++-- 5 files changed, 30 insertions(+), 5 deletions(-) create mode 100644 netbox/virtualization/migrations/0024_cluster_relax_uniqueness.py diff --git a/docs/models/virtualization/cluster.md b/docs/models/virtualization/cluster.md index 3311ad42d..7fc9bfc06 100644 --- a/docs/models/virtualization/cluster.md +++ b/docs/models/virtualization/cluster.md @@ -1,5 +1,5 @@ # Clusters -A cluster is a logical grouping of physical resources within which virtual machines run. A cluster must be assigned a type (technological classification), and may optionally be assigned to a cluster group, site, and/or tenant. +A cluster is a logical grouping of physical resources within which virtual machines run. A cluster must be assigned a type (technological classification), and may optionally be assigned to a cluster group, site, and/or tenant. Each cluster must have a unique name within its assigned group and/or site, if any. Physical devices may be associated with clusters as hosts. This allows users to track on which host(s) a particular virtual machine may reside. However, NetBox does not support pinning a specific VM within a cluster to a particular host device. diff --git a/docs/release-notes/version-3.1.md b/docs/release-notes/version-3.1.md index 630e46b5b..172fd3ed8 100644 --- a/docs/release-notes/version-3.1.md +++ b/docs/release-notes/version-3.1.md @@ -10,6 +10,7 @@ ### Enhancements * [#1337](https://github.com/netbox-community/netbox/issues/1337) - Add WWN field to interfaces +* [#1943](https://github.com/netbox-community/netbox/issues/1943) - Relax uniqueness constraint on cluster names * [#3839](https://github.com/netbox-community/netbox/issues/3839) - Add `airflow` field for devices types and devices * [#6711](https://github.com/netbox-community/netbox/issues/6711) - Add `longtext` custom field type with Markdown support * [#6715](https://github.com/netbox-community/netbox/issues/6715) - Add tenant assignment for cables diff --git a/netbox/virtualization/api/serializers.py b/netbox/virtualization/api/serializers.py index adad9bf4d..1928960a9 100644 --- a/netbox/virtualization/api/serializers.py +++ b/netbox/virtualization/api/serializers.py @@ -44,9 +44,9 @@ class ClusterGroupSerializer(OrganizationalModelSerializer): class ClusterSerializer(PrimaryModelSerializer): url = serializers.HyperlinkedIdentityField(view_name='virtualization-api:cluster-detail') type = NestedClusterTypeSerializer() - group = NestedClusterGroupSerializer(required=False, allow_null=True) + group = NestedClusterGroupSerializer(required=False, allow_null=True, default=None) tenant = NestedTenantSerializer(required=False, allow_null=True) - site = NestedSiteSerializer(required=False, allow_null=True) + site = NestedSiteSerializer(required=False, allow_null=True, default=None) device_count = serializers.IntegerField(read_only=True) virtualmachine_count = serializers.IntegerField(read_only=True) diff --git a/netbox/virtualization/migrations/0024_cluster_relax_uniqueness.py b/netbox/virtualization/migrations/0024_cluster_relax_uniqueness.py new file mode 100644 index 000000000..5ff214d29 --- /dev/null +++ b/netbox/virtualization/migrations/0024_cluster_relax_uniqueness.py @@ -0,0 +1,21 @@ +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('dcim', '0136_device_airflow'), + ('virtualization', '0023_virtualmachine_natural_ordering'), + ] + + operations = [ + migrations.AlterField( + model_name='cluster', + name='name', + field=models.CharField(max_length=100), + ), + migrations.AlterUniqueTogether( + name='cluster', + unique_together={('site', 'name'), ('group', 'name')}, + ), + ] diff --git a/netbox/virtualization/models.py b/netbox/virtualization/models.py index d91a39549..11792944a 100644 --- a/netbox/virtualization/models.py +++ b/netbox/virtualization/models.py @@ -115,8 +115,7 @@ class Cluster(PrimaryModel): A cluster of VirtualMachines. Each Cluster may optionally be associated with one or more Devices. """ name = models.CharField( - max_length=100, - unique=True + max_length=100 ) type = models.ForeignKey( to=ClusterType, @@ -167,6 +166,10 @@ class Cluster(PrimaryModel): class Meta: ordering = ['name'] + unique_together = ( + ('group', 'name'), + ('site', 'name'), + ) def __str__(self): return self.name From 8d0ed99bcd9fba25c4469a789b1a80a2c1b22383 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Tue, 19 Oct 2021 13:32:43 -0400 Subject: [PATCH 040/289] Clean up UniqueTogetherValidator workarounds --- netbox/dcim/api/serializers.py | 44 +++++++--------------------------- netbox/ipam/api/serializers.py | 34 ++++---------------------- 2 files changed, 12 insertions(+), 66 deletions(-) diff --git a/netbox/dcim/api/serializers.py b/netbox/dcim/api/serializers.py index 14a1af8f0..22ea903bb 100644 --- a/netbox/dcim/api/serializers.py +++ b/netbox/dcim/api/serializers.py @@ -2,7 +2,6 @@ from django.conf import settings from django.contrib.contenttypes.models import ContentType from drf_yasg.utils import swagger_serializer_method from rest_framework import serializers -from rest_framework.validators import UniqueTogetherValidator from timezone_field.rest_framework import TimeZoneSerializerField from dcim.choices import * @@ -170,6 +169,8 @@ class RackSerializer(PrimaryModelSerializer): status = ChoiceField(choices=RackStatusChoices, required=False) role = NestedRackRoleSerializer(required=False, allow_null=True) type = ChoiceField(choices=RackTypeChoices, allow_blank=True, required=False) + facility_id = serializers.CharField(max_length=50, allow_blank=True, allow_null=True, label='Facility ID', + default=None) width = ChoiceField(choices=RackWidthChoices, required=False) outer_unit = ChoiceField(choices=RackDimensionUnitChoices, allow_blank=True, required=False) device_count = serializers.IntegerField(read_only=True) @@ -182,23 +183,6 @@ class RackSerializer(PrimaryModelSerializer): 'asset_tag', 'type', 'width', 'u_height', 'desc_units', 'outer_width', 'outer_depth', 'outer_unit', 'comments', 'tags', 'custom_fields', 'created', 'last_updated', 'device_count', 'powerfeed_count', ] - # Omit the UniqueTogetherValidator that would be automatically added to validate (location, facility_id). This - # prevents facility_id from being interpreted as a required field. - validators = [ - UniqueTogetherValidator(queryset=Rack.objects.all(), fields=('location', 'name')) - ] - - def validate(self, data): - - # Validate uniqueness of (location, facility_id) since we omitted the automatically-created validator from Meta. - if data.get('facility_id', None): - validator = UniqueTogetherValidator(queryset=Rack.objects.all(), fields=('location', 'facility_id')) - validator(data, self) - - # Enforce model validation - super().validate(data) - - return data class RackUnitSerializer(serializers.Serializer): @@ -458,12 +442,13 @@ class DeviceSerializer(PrimaryModelSerializer): url = serializers.HyperlinkedIdentityField(view_name='dcim-api:device-detail') device_type = NestedDeviceTypeSerializer() device_role = NestedDeviceRoleSerializer() - tenant = NestedTenantSerializer(required=False, allow_null=True) + tenant = NestedTenantSerializer(required=False, allow_null=True, default=None) platform = NestedPlatformSerializer(required=False, allow_null=True) site = NestedSiteSerializer() location = NestedLocationSerializer(required=False, allow_null=True, default=None) - rack = NestedRackSerializer(required=False, allow_null=True) - face = ChoiceField(choices=DeviceFaceChoices, allow_blank=True, required=False) + rack = NestedRackSerializer(required=False, allow_null=True, default=None) + face = ChoiceField(choices=DeviceFaceChoices, allow_blank=True, default='') + position = serializers.IntegerField(allow_null=True, label='Position (U)', min_value=1, default=None) status = ChoiceField(choices=DeviceStatusChoices, required=False) airflow = ChoiceField(choices=DeviceAirflowChoices, allow_blank=True, required=False) primary_ip = NestedIPAddressSerializer(read_only=True) @@ -471,7 +456,8 @@ class DeviceSerializer(PrimaryModelSerializer): primary_ip6 = NestedIPAddressSerializer(required=False, allow_null=True) parent_device = serializers.SerializerMethodField() cluster = NestedClusterSerializer(required=False, allow_null=True) - virtual_chassis = NestedVirtualChassisSerializer(required=False, allow_null=True) + virtual_chassis = NestedVirtualChassisSerializer(required=False, allow_null=True, default=None) + vc_position = serializers.IntegerField(allow_null=True, max_value=255, min_value=0, default=None) class Meta: model = Device @@ -481,19 +467,6 @@ class DeviceSerializer(PrimaryModelSerializer): 'primary_ip4', 'primary_ip6', 'cluster', 'virtual_chassis', 'vc_position', 'vc_priority', 'comments', 'local_context_data', 'tags', 'custom_fields', 'created', 'last_updated', ] - validators = [] - - def validate(self, data): - - # Validate uniqueness of (rack, position, face) since we omitted the automatically-created validator from Meta. - if data.get('rack') and data.get('position') and data.get('face'): - validator = UniqueTogetherValidator(queryset=Device.objects.all(), fields=('rack', 'position', 'face')) - validator(data, self) - - # Enforce model validation - super().validate(data) - - return data @swagger_serializer_method(serializer_or_field=NestedDeviceSerializer) def get_parent_device(self, obj): @@ -730,7 +703,6 @@ class DeviceBaySerializer(PrimaryModelSerializer): class InventoryItemSerializer(PrimaryModelSerializer): url = serializers.HyperlinkedIdentityField(view_name='dcim-api:inventoryitem-detail') device = NestedDeviceSerializer() - # Provide a default value to satisfy UniqueTogetherValidator parent = serializers.PrimaryKeyRelatedField(queryset=InventoryItem.objects.all(), allow_null=True, default=None) manufacturer = NestedManufacturerSerializer(required=False, allow_null=True, default=None) _depth = serializers.IntegerField(source='level', read_only=True) diff --git a/netbox/ipam/api/serializers.py b/netbox/ipam/api/serializers.py index 9f3139793..183c45b2a 100644 --- a/netbox/ipam/api/serializers.py +++ b/netbox/ipam/api/serializers.py @@ -3,7 +3,6 @@ from collections import OrderedDict from django.contrib.contenttypes.models import ContentType from drf_yasg.utils import swagger_serializer_method from rest_framework import serializers -from rest_framework.validators import UniqueTogetherValidator from dcim.api.nested_serializers import NestedDeviceSerializer, NestedSiteSerializer from ipam.choices import * @@ -117,8 +116,10 @@ class VLANGroupSerializer(OrganizationalModelSerializer): queryset=ContentType.objects.filter( model__in=VLANGROUP_SCOPE_TYPES ), - required=False + required=False, + default=None ) + scope_id = serializers.IntegerField(allow_null=True, required=False, default=None) scope = serializers.SerializerMethodField(read_only=True) vlan_count = serializers.IntegerField(read_only=True) @@ -130,19 +131,6 @@ class VLANGroupSerializer(OrganizationalModelSerializer): ] validators = [] - def validate(self, data): - - # Validate uniqueness of name and slug if a site has been assigned. - if data.get('site', None): - for field in ['name', 'slug']: - validator = UniqueTogetherValidator(queryset=VLANGroup.objects.all(), fields=('site', field)) - validator(data, self) - - # Enforce model validation - super().validate(data) - - return data - def get_scope(self, obj): if obj.scope_id is None: return None @@ -155,7 +143,7 @@ class VLANGroupSerializer(OrganizationalModelSerializer): class VLANSerializer(PrimaryModelSerializer): url = serializers.HyperlinkedIdentityField(view_name='ipam-api:vlan-detail') site = NestedSiteSerializer(required=False, allow_null=True) - group = NestedVLANGroupSerializer(required=False, allow_null=True) + group = NestedVLANGroupSerializer(required=False, allow_null=True, default=None) tenant = NestedTenantSerializer(required=False, allow_null=True) status = ChoiceField(choices=VLANStatusChoices, required=False) role = NestedRoleSerializer(required=False, allow_null=True) @@ -167,20 +155,6 @@ class VLANSerializer(PrimaryModelSerializer): 'id', 'url', 'display', 'site', 'group', 'vid', 'name', 'tenant', 'status', 'role', 'description', 'tags', 'custom_fields', 'created', 'last_updated', 'prefix_count', ] - validators = [] - - def validate(self, data): - - # Validate uniqueness of vid and name if a group has been assigned. - if data.get('group', None): - for field in ['vid', 'name']: - validator = UniqueTogetherValidator(queryset=VLAN.objects.all(), fields=('group', field)) - validator(data, self) - - # Enforce model validation - super().validate(data) - - return data # From 7c56b21095689667cc25125f5888526803449471 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Tue, 19 Oct 2021 13:46:35 -0400 Subject: [PATCH 041/289] Closes #7354: Relax uniqueness constraints on region, site group, and location names --- docs/models/dcim/location.md | 3 +- docs/models/dcim/rack.md | 2 +- docs/models/dcim/region.md | 2 + docs/models/dcim/sitegroup.md | 2 + docs/release-notes/version-3.1.md | 1 + netbox/dcim/api/serializers.py | 4 +- .../0137_relax_uniqueness_constraints.py | 45 +++++++++++++++++++ netbox/dcim/models/sites.py | 32 ++++++++----- 8 files changed, 75 insertions(+), 16 deletions(-) create mode 100644 netbox/dcim/migrations/0137_relax_uniqueness_constraints.py diff --git a/docs/models/dcim/location.md b/docs/models/dcim/location.md index 16df208ac..901a68acf 100644 --- a/docs/models/dcim/location.md +++ b/docs/models/dcim/location.md @@ -2,4 +2,5 @@ Racks and devices can be grouped by location within a site. A location may represent a floor, room, cage, or similar organizational unit. Locations can be nested to form a hierarchy. For example, you may have floors within a site, and rooms within a floor. -The name and facility ID of each rack within a location must be unique. (Racks not assigned to the same location may have identical names and/or facility IDs.) +Each location must have a name that is unique within its parent site and location, if any. + diff --git a/docs/models/dcim/rack.md b/docs/models/dcim/rack.md index 90c9cfe6e..9465a828c 100644 --- a/docs/models/dcim/rack.md +++ b/docs/models/dcim/rack.md @@ -1,6 +1,6 @@ # Racks -The rack model represents a physical two- or four-post equipment rack in which devices can be installed. Each rack must be assigned to a site, and may optionally be assigned to a location and/or tenant. Racks can also be organized by user-defined functional roles. +The rack model represents a physical two- or four-post equipment rack in which devices can be installed. Each rack must be assigned to a site, and may optionally be assigned to a location and/or tenant. Racks can also be organized by user-defined functional roles. The name and facility ID of each rack within a location must be unique. Rack height is measured in *rack units* (U); racks are commonly between 42U and 48U tall, but NetBox allows you to define racks of arbitrary height. A toggle is provided to indicate whether rack units are in ascending (from the ground up) or descending order. diff --git a/docs/models/dcim/region.md b/docs/models/dcim/region.md index 734467500..bac186264 100644 --- a/docs/models/dcim/region.md +++ b/docs/models/dcim/region.md @@ -1,3 +1,5 @@ # Regions Sites can be arranged geographically using regions. A region might represent a continent, country, city, campus, or other area depending on your use case. Regions can be nested recursively to construct a hierarchy. For example, you might define several country regions, and within each of those several state or city regions to which sites are assigned. + +Each region must have a name that is unique within its parent region, if any. diff --git a/docs/models/dcim/sitegroup.md b/docs/models/dcim/sitegroup.md index 3c1ed11bd..04ebcc1a5 100644 --- a/docs/models/dcim/sitegroup.md +++ b/docs/models/dcim/sitegroup.md @@ -1,3 +1,5 @@ # Site Groups Like regions, site groups can be used to organize sites. Whereas regions are intended to provide geographic organization, site groups can be used to classify sites by role or function. Also like regions, site groups can be nested to form a hierarchy. Sites which belong to a child group are also considered to be members of any of its parent groups. + +Each site group must have a name that is unique within its parent group, if any. diff --git a/docs/release-notes/version-3.1.md b/docs/release-notes/version-3.1.md index 172fd3ed8..a94f749c7 100644 --- a/docs/release-notes/version-3.1.md +++ b/docs/release-notes/version-3.1.md @@ -15,6 +15,7 @@ * [#6711](https://github.com/netbox-community/netbox/issues/6711) - Add `longtext` custom field type with Markdown support * [#6715](https://github.com/netbox-community/netbox/issues/6715) - Add tenant assignment for cables * [#6874](https://github.com/netbox-community/netbox/issues/6874) - Add tenant assignment for locations +* [#7354](https://github.com/netbox-community/netbox/issues/7354) - Relax uniqueness constraints on region, site group, and location names ### Other Changes diff --git a/netbox/dcim/api/serializers.py b/netbox/dcim/api/serializers.py index 22ea903bb..9b0e7f5b3 100644 --- a/netbox/dcim/api/serializers.py +++ b/netbox/dcim/api/serializers.py @@ -81,7 +81,7 @@ class ConnectedEndpointSerializer(serializers.ModelSerializer): class RegionSerializer(NestedGroupModelSerializer): url = serializers.HyperlinkedIdentityField(view_name='dcim-api:region-detail') - parent = NestedRegionSerializer(required=False, allow_null=True) + parent = NestedRegionSerializer(required=False, allow_null=True, default=None) site_count = serializers.IntegerField(read_only=True) class Meta: @@ -94,7 +94,7 @@ class RegionSerializer(NestedGroupModelSerializer): class SiteGroupSerializer(NestedGroupModelSerializer): url = serializers.HyperlinkedIdentityField(view_name='dcim-api:sitegroup-detail') - parent = NestedSiteGroupSerializer(required=False, allow_null=True) + parent = NestedSiteGroupSerializer(required=False, allow_null=True, default=None) site_count = serializers.IntegerField(read_only=True) class Meta: diff --git a/netbox/dcim/migrations/0137_relax_uniqueness_constraints.py b/netbox/dcim/migrations/0137_relax_uniqueness_constraints.py new file mode 100644 index 000000000..8f7d40026 --- /dev/null +++ b/netbox/dcim/migrations/0137_relax_uniqueness_constraints.py @@ -0,0 +1,45 @@ +# Generated by Django 3.2.8 on 2021-10-19 17:41 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('dcim', '0136_device_airflow'), + ] + + operations = [ + migrations.AlterField( + model_name='region', + name='name', + field=models.CharField(max_length=100), + ), + migrations.AlterField( + model_name='region', + name='slug', + field=models.SlugField(max_length=100), + ), + migrations.AlterField( + model_name='sitegroup', + name='name', + field=models.CharField(max_length=100), + ), + migrations.AlterField( + model_name='sitegroup', + name='slug', + field=models.SlugField(max_length=100), + ), + migrations.AlterUniqueTogether( + name='location', + unique_together={('site', 'parent', 'name'), ('site', 'parent', 'slug')}, + ), + migrations.AlterUniqueTogether( + name='region', + unique_together={('parent', 'slug'), ('parent', 'name')}, + ), + migrations.AlterUniqueTogether( + name='sitegroup', + unique_together={('parent', 'slug'), ('parent', 'name')}, + ), + ] diff --git a/netbox/dcim/models/sites.py b/netbox/dcim/models/sites.py index 0d9816b0b..ab9d8e82d 100644 --- a/netbox/dcim/models/sites.py +++ b/netbox/dcim/models/sites.py @@ -41,12 +41,10 @@ class Region(NestedGroupModel): db_index=True ) name = models.CharField( - max_length=100, - unique=True + max_length=100 ) slug = models.SlugField( - max_length=100, - unique=True + max_length=100 ) description = models.CharField( max_length=200, @@ -64,6 +62,12 @@ class Region(NestedGroupModel): to='tenancy.ContactAssignment' ) + class Meta: + unique_together = ( + ('parent', 'name'), + ('parent', 'slug'), + ) + def get_absolute_url(self): return reverse('dcim:region', args=[self.pk]) @@ -94,12 +98,10 @@ class SiteGroup(NestedGroupModel): db_index=True ) name = models.CharField( - max_length=100, - unique=True + max_length=100 ) slug = models.SlugField( - max_length=100, - unique=True + max_length=100 ) description = models.CharField( max_length=200, @@ -117,6 +119,12 @@ class SiteGroup(NestedGroupModel): to='tenancy.ContactAssignment' ) + class Meta: + unique_together = ( + ('parent', 'name'), + ('parent', 'slug'), + ) + def get_absolute_url(self): return reverse('dcim:sitegroup', args=[self.pk]) @@ -325,10 +333,10 @@ class Location(NestedGroupModel): class Meta: ordering = ['site', 'name'] - unique_together = [ - ['site', 'name'], - ['site', 'slug'], - ] + unique_together = ([ + ('site', 'parent', 'name'), + ('site', 'parent', 'slug'), + ]) def get_absolute_url(self): return reverse('dcim:location', args=[self.pk]) From 38bc5de3e8047363dc4342841d50d4e88b7b394d Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Tue, 19 Oct 2021 13:56:33 -0400 Subject: [PATCH 042/289] Changelog for #1344 --- docs/release-notes/version-3.1.md | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/docs/release-notes/version-3.1.md b/docs/release-notes/version-3.1.md index a94f749c7..abf9c7d25 100644 --- a/docs/release-notes/version-3.1.md +++ b/docs/release-notes/version-3.1.md @@ -7,6 +7,14 @@ * The `tenant` and `tenant_id` filters for the Cable model now filter on the tenant assigned directly to each cable, rather than on the parent object of either termination. +#### Contacts ([#1344](https://github.com/netbox-community/netbox/issues/1344)) + +A set of new models for tracking contact information has been introduced within the tenancy app. Users may now create individual contact objects to be associated with various models within NetBox. Each contact has a name, title, email address, etc. Contacts can be arranged in hierarchical groups for ease of management. + +When assigning a contact to an object, the user must select a predefined role (e.g. "billing" or "technical") and may optionally indicate a priority relative to other contacts associated with the object. There is no limit on how many contacts can be assigned to an object, nor on how many objects to which a contact can be assigned. + +#### + ### Enhancements * [#1337](https://github.com/netbox-community/netbox/issues/1337) - Add WWN field to interfaces @@ -20,3 +28,21 @@ ### Other Changes * [#7318](https://github.com/netbox-community/netbox/issues/7318) - Raise minimum required PostgreSQL version from 9.6 to 10 + +### REST API Changes + +* Added the following endpoints for contacts: + * `/api/tenancy/contact-assignments/` + * `/api/tenancy/contact-groups/` + * `/api/tenancy/contact-roles/` + * `/api/tenancy/contacts/` +* dcim.Cable + * Added `tenant` field +* dcim.Device + * Added `airflow` field +* dcim.DeviceType + * Added `airflow` field +* dcim.Interface + * Added `wwn` field +* dcim.Location + * Added `tenant` field From f04dc5503014f12f77ba0cc3af00e6edc3ea7cbb Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Tue, 19 Oct 2021 14:21:31 -0400 Subject: [PATCH 043/289] Reorganize panel inclusion templates --- netbox/templates/circuits/circuit.html | 10 +-- netbox/templates/circuits/circuittype.html | 2 +- netbox/templates/circuits/provider.html | 8 +- .../templates/circuits/providernetwork.html | 6 +- netbox/templates/dcim/cable.html | 4 +- netbox/templates/dcim/consoleport.html | 4 +- netbox/templates/dcim/consoleserverport.html | 4 +- netbox/templates/dcim/device.html | 10 +-- netbox/templates/dcim/devicebay.html | 4 +- netbox/templates/dcim/devicerole.html | 2 +- netbox/templates/dcim/devicetype.html | 6 +- netbox/templates/dcim/frontport.html | 4 +- netbox/templates/dcim/interface.html | 4 +- netbox/templates/dcim/inventoryitem.html | 4 +- netbox/templates/dcim/location.html | 6 +- netbox/templates/dcim/manufacturer.html | 4 +- netbox/templates/dcim/platform.html | 2 +- netbox/templates/dcim/powerfeed.html | 6 +- netbox/templates/dcim/poweroutlet.html | 4 +- netbox/templates/dcim/powerpanel.html | 8 +- netbox/templates/dcim/powerport.html | 4 +- netbox/templates/dcim/rack.html | 10 +-- netbox/templates/dcim/rackreservation.html | 4 +- netbox/templates/dcim/rackrole.html | 2 +- netbox/templates/dcim/rearport.html | 4 +- netbox/templates/dcim/region.html | 4 +- netbox/templates/dcim/site.html | 10 +-- netbox/templates/dcim/sitegroup.html | 4 +- netbox/templates/dcim/virtualchassis.html | 4 +- netbox/templates/extras/journalentry.html | 2 +- .../comments.html} | 0 .../contacts.html} | 0 .../custom_fields.html} | 0 .../image_attachments.html} | 0 .../tags_panel.html => inc/panels/tags.html} | 0 netbox/templates/ipam/aggregate.html | 4 +- netbox/templates/ipam/ipaddress.html | 4 +- netbox/templates/ipam/iprange.html | 4 +- netbox/templates/ipam/prefix.html | 4 +- netbox/templates/ipam/rir.html | 2 +- netbox/templates/ipam/role.html | 2 +- netbox/templates/ipam/routetarget.html | 80 +++++++++---------- netbox/templates/ipam/service.html | 4 +- netbox/templates/ipam/vlan.html | 4 +- netbox/templates/ipam/vlangroup.html | 2 +- netbox/templates/ipam/vrf.html | 4 +- netbox/templates/tenancy/contact.html | 6 +- netbox/templates/tenancy/contactgroup.html | 2 +- netbox/templates/tenancy/contactrole.html | 2 +- netbox/templates/tenancy/tenant.html | 8 +- netbox/templates/tenancy/tenantgroup.html | 2 +- netbox/templates/virtualization/cluster.html | 8 +- .../virtualization/clustergroup.html | 4 +- .../templates/virtualization/clustertype.html | 2 +- .../virtualization/virtualmachine.html | 8 +- .../templates/virtualization/vminterface.html | 4 +- 56 files changed, 154 insertions(+), 156 deletions(-) rename netbox/templates/inc/{comments_panel.html => panels/comments.html} (100%) rename netbox/templates/inc/{contacts_panel.html => panels/contacts.html} (100%) rename netbox/templates/inc/{custom_fields_panel.html => panels/custom_fields.html} (100%) rename netbox/templates/inc/{image_attachments_panel.html => panels/image_attachments.html} (100%) rename netbox/templates/{extras/inc/tags_panel.html => inc/panels/tags.html} (100%) diff --git a/netbox/templates/circuits/circuit.html b/netbox/templates/circuits/circuit.html index 3a8096351..b61dac6fc 100644 --- a/netbox/templates/circuits/circuit.html +++ b/netbox/templates/circuits/circuit.html @@ -64,16 +64,16 @@
- {% include 'inc/custom_fields_panel.html' %} - {% include 'extras/inc/tags_panel.html' with tags=object.tags.all url='circuits:circuit_list' %} - {% include 'inc/comments_panel.html' %} + {% include 'inc/panels/custom_fields.html' %} + {% include 'inc/panels/tags.html' with tags=object.tags.all url='circuits:circuit_list' %} + {% include 'inc/panels/comments.html' %} {% plugin_left_page object %}
{% include 'circuits/inc/circuit_termination.html' with termination=object.termination_a side='A' %} {% include 'circuits/inc/circuit_termination.html' with termination=object.termination_z side='Z' %} - {% include 'inc/contacts_panel.html' %} - {% include 'inc/image_attachments_panel.html' %} + {% include 'inc/panels/contacts.html' %} + {% include 'inc/panels/image_attachments.html' %} {% plugin_right_page object %}
diff --git a/netbox/templates/circuits/circuittype.html b/netbox/templates/circuits/circuittype.html index 899ba83c3..ad81de7e1 100644 --- a/netbox/templates/circuits/circuittype.html +++ b/netbox/templates/circuits/circuittype.html @@ -31,7 +31,7 @@ {% plugin_left_page object %}
- {% include 'inc/custom_fields_panel.html' %} + {% include 'inc/panels/custom_fields.html' %} {% plugin_right_page object %}
diff --git a/netbox/templates/circuits/provider.html b/netbox/templates/circuits/provider.html index af883e56f..d353e4f37 100644 --- a/netbox/templates/circuits/provider.html +++ b/netbox/templates/circuits/provider.html @@ -47,13 +47,13 @@ - {% include 'extras/inc/tags_panel.html' with tags=object.tags.all url='circuits:provider_list' %} + {% include 'inc/panels/tags.html' with tags=object.tags.all url='circuits:provider_list' %} {% plugin_left_page object %}
- {% include 'inc/custom_fields_panel.html' %} - {% include 'inc/comments_panel.html' %} - {% include 'inc/contacts_panel.html' %} + {% include 'inc/panels/custom_fields.html' %} + {% include 'inc/panels/comments.html' %} + {% include 'inc/panels/contacts.html' %} {% plugin_right_page object %}
diff --git a/netbox/templates/circuits/providernetwork.html b/netbox/templates/circuits/providernetwork.html index a5eac1f78..18a11e115 100644 --- a/netbox/templates/circuits/providernetwork.html +++ b/netbox/templates/circuits/providernetwork.html @@ -37,9 +37,9 @@ {% plugin_left_page object %}
- {% include 'inc/custom_fields_panel.html' %} - {% include 'extras/inc/tags_panel.html' with tags=object.tags.all url='circuits:providernetwork_list' %} - {% include 'inc/comments_panel.html' %} + {% include 'inc/panels/custom_fields.html' %} + {% include 'inc/panels/tags.html' with tags=object.tags.all url='circuits:providernetwork_list' %} + {% include 'inc/panels/comments.html' %} {% plugin_right_page object %}
diff --git a/netbox/templates/dcim/cable.html b/netbox/templates/dcim/cable.html index e9cde6e00..c5d1f7906 100644 --- a/netbox/templates/dcim/cable.html +++ b/netbox/templates/dcim/cable.html @@ -63,8 +63,8 @@ - {% include 'inc/custom_fields_panel.html' %} - {% include 'extras/inc/tags_panel.html' with tags=object.tags.all url='dcim:cable_list' %} + {% include 'inc/panels/custom_fields.html' %} + {% include 'inc/panels/tags.html' with tags=object.tags.all url='dcim:cable_list' %} {% plugin_left_page object %}
diff --git a/netbox/templates/dcim/consoleport.html b/netbox/templates/dcim/consoleport.html index ee8b56980..c340cbc5c 100644 --- a/netbox/templates/dcim/consoleport.html +++ b/netbox/templates/dcim/consoleport.html @@ -40,8 +40,8 @@
- {% include 'inc/custom_fields_panel.html' %} - {% include 'extras/inc/tags_panel.html' with tags=object.tags.all %} + {% include 'inc/panels/custom_fields.html' %} + {% include 'inc/panels/tags.html' with tags=object.tags.all %} {% plugin_left_page object %}
diff --git a/netbox/templates/dcim/consoleserverport.html b/netbox/templates/dcim/consoleserverport.html index 8eb84993c..91de60252 100644 --- a/netbox/templates/dcim/consoleserverport.html +++ b/netbox/templates/dcim/consoleserverport.html @@ -40,8 +40,8 @@
- {% include 'inc/custom_fields_panel.html' %} - {% include 'extras/inc/tags_panel.html' with tags=object.tags.all %} + {% include 'inc/panels/custom_fields.html' %} + {% include 'inc/panels/tags.html' with tags=object.tags.all %} {% plugin_left_page object %}
diff --git a/netbox/templates/dcim/device.html b/netbox/templates/dcim/device.html index 9ae9df7d4..869ab1ec7 100644 --- a/netbox/templates/dcim/device.html +++ b/netbox/templates/dcim/device.html @@ -220,9 +220,9 @@
- {% include 'inc/custom_fields_panel.html' %} - {% include 'extras/inc/tags_panel.html' with tags=object.tags.all url='dcim:device_list' %} - {% include 'inc/comments_panel.html' %} + {% include 'inc/panels/custom_fields.html' %} + {% include 'inc/panels/tags.html' with tags=object.tags.all url='dcim:device_list' %} + {% include 'inc/panels/comments.html' %} {% plugin_left_page object %}
@@ -296,8 +296,8 @@
{% endif %} - {% include 'inc/contacts_panel.html' %} - {% include 'inc/image_attachments_panel.html' %} + {% include 'inc/panels/contacts.html' %} + {% include 'inc/panels/image_attachments.html' %}
Related Devices diff --git a/netbox/templates/dcim/devicebay.html b/netbox/templates/dcim/devicebay.html index cc19413b1..918b6b022 100644 --- a/netbox/templates/dcim/devicebay.html +++ b/netbox/templates/dcim/devicebay.html @@ -32,8 +32,8 @@
- {% include 'inc/custom_fields_panel.html' %} - {% include 'extras/inc/tags_panel.html' with tags=object.tags.all %} + {% include 'inc/panels/custom_fields.html' %} + {% include 'inc/panels/tags.html' with tags=object.tags.all %} {% plugin_left_page object %}
diff --git a/netbox/templates/dcim/devicerole.html b/netbox/templates/dcim/devicerole.html index 382cbc4ee..2c2d7fe6f 100644 --- a/netbox/templates/dcim/devicerole.html +++ b/netbox/templates/dcim/devicerole.html @@ -61,7 +61,7 @@ {% plugin_left_page object %}
- {% include 'inc/custom_fields_panel.html' %} + {% include 'inc/panels/custom_fields.html' %} {% plugin_right_page object %}
diff --git a/netbox/templates/dcim/devicetype.html b/netbox/templates/dcim/devicetype.html index 40955f5d6..4239f9eb2 100644 --- a/netbox/templates/dcim/devicetype.html +++ b/netbox/templates/dcim/devicetype.html @@ -130,9 +130,9 @@ {% plugin_left_page object %}
- {% include 'inc/custom_fields_panel.html' %} - {% include 'extras/inc/tags_panel.html' with tags=object.tags.all url='dcim:devicetype_list' %} - {% include 'inc/comments_panel.html' %} + {% include 'inc/panels/custom_fields.html' %} + {% include 'inc/panels/tags.html' with tags=object.tags.all url='dcim:devicetype_list' %} + {% include 'inc/panels/comments.html' %} {% plugin_right_page object %}
diff --git a/netbox/templates/dcim/frontport.html b/netbox/templates/dcim/frontport.html index 43ded0c6a..c6b6cea48 100644 --- a/netbox/templates/dcim/frontport.html +++ b/netbox/templates/dcim/frontport.html @@ -52,8 +52,8 @@ - {% include 'inc/custom_fields_panel.html' %} - {% include 'extras/inc/tags_panel.html' with tags=object.tags.all %} + {% include 'inc/panels/custom_fields.html' %} + {% include 'inc/panels/tags.html' with tags=object.tags.all %} {% plugin_left_page object %}
diff --git a/netbox/templates/dcim/interface.html b/netbox/templates/dcim/interface.html index f9a9b0425..0715bec58 100644 --- a/netbox/templates/dcim/interface.html +++ b/netbox/templates/dcim/interface.html @@ -102,8 +102,8 @@
- {% include 'inc/custom_fields_panel.html' %} - {% include 'extras/inc/tags_panel.html' with tags=object.tags.all %} + {% include 'inc/panels/custom_fields.html' %} + {% include 'inc/panels/tags.html' with tags=object.tags.all %} {% plugin_left_page object %}
diff --git a/netbox/templates/dcim/inventoryitem.html b/netbox/templates/dcim/inventoryitem.html index 545e8f1e4..e55d441d4 100644 --- a/netbox/templates/dcim/inventoryitem.html +++ b/netbox/templates/dcim/inventoryitem.html @@ -64,8 +64,8 @@
- {% include 'inc/custom_fields_panel.html' %} - {% include 'extras/inc/tags_panel.html' with tags=object.tags.all %} + {% include 'inc/panels/custom_fields.html' %} + {% include 'inc/panels/tags.html' with tags=object.tags.all %} {% plugin_left_page object %}
diff --git a/netbox/templates/dcim/location.html b/netbox/templates/dcim/location.html index 459880ca8..eeb891daf 100644 --- a/netbox/templates/dcim/location.html +++ b/netbox/templates/dcim/location.html @@ -71,9 +71,9 @@ {% plugin_left_page object %}
- {% include 'inc/custom_fields_panel.html' %} - {% include 'inc/contacts_panel.html' %} - {% include 'inc/image_attachments_panel.html' %} + {% include 'inc/panels/custom_fields.html' %} + {% include 'inc/panels/contacts.html' %} + {% include 'inc/panels/image_attachments.html' %} {% plugin_right_page object %}
diff --git a/netbox/templates/dcim/manufacturer.html b/netbox/templates/dcim/manufacturer.html index 2a56b57cc..792a3e127 100644 --- a/netbox/templates/dcim/manufacturer.html +++ b/netbox/templates/dcim/manufacturer.html @@ -37,8 +37,8 @@ {% plugin_left_page object %}
- {% include 'inc/custom_fields_panel.html' %} - {% include 'inc/contacts_panel.html' %} + {% include 'inc/panels/custom_fields.html' %} + {% include 'inc/panels/contacts.html' %} {% plugin_right_page object %}
diff --git a/netbox/templates/dcim/platform.html b/netbox/templates/dcim/platform.html index 7229d8078..bbdf809dd 100644 --- a/netbox/templates/dcim/platform.html +++ b/netbox/templates/dcim/platform.html @@ -66,7 +66,7 @@
{{ object.napalm_args }}
- {% include 'inc/custom_fields_panel.html' %} + {% include 'inc/panels/custom_fields.html' %} {% plugin_right_page object %} diff --git a/netbox/templates/dcim/powerfeed.html b/netbox/templates/dcim/powerfeed.html index b4fb06081..f29a127e3 100644 --- a/netbox/templates/dcim/powerfeed.html +++ b/netbox/templates/dcim/powerfeed.html @@ -107,8 +107,8 @@ - {% include 'inc/custom_fields_panel.html' %} - {% include 'extras/inc/tags_panel.html' with tags=object.tags.all url='dcim:powerfeed_list' %} + {% include 'inc/panels/custom_fields.html' %} + {% include 'inc/panels/tags.html' with tags=object.tags.all url='dcim:powerfeed_list' %} {% plugin_left_page object %}
@@ -182,7 +182,7 @@
{% endif %} - {% include 'inc/comments_panel.html' %} + {% include 'inc/panels/comments.html' %} {% plugin_right_page object %} diff --git a/netbox/templates/dcim/poweroutlet.html b/netbox/templates/dcim/poweroutlet.html index f8973c79b..1f960e0d5 100644 --- a/netbox/templates/dcim/poweroutlet.html +++ b/netbox/templates/dcim/poweroutlet.html @@ -44,8 +44,8 @@ - {% include 'inc/custom_fields_panel.html' %} - {% include 'extras/inc/tags_panel.html' with tags=object.tags.all %} + {% include 'inc/panels/custom_fields.html' %} + {% include 'inc/panels/tags.html' with tags=object.tags.all %} {% plugin_left_page object %}
diff --git a/netbox/templates/dcim/powerpanel.html b/netbox/templates/dcim/powerpanel.html index 10975fa1b..a99aabf32 100644 --- a/netbox/templates/dcim/powerpanel.html +++ b/netbox/templates/dcim/powerpanel.html @@ -39,13 +39,13 @@
- {% include 'extras/inc/tags_panel.html' with tags=object.tags.all url='dcim:powerpanel_list' %} + {% include 'inc/panels/tags.html' with tags=object.tags.all url='dcim:powerpanel_list' %} {% plugin_left_page object %}
- {% include 'inc/custom_fields_panel.html' %} - {% include 'inc/contacts_panel.html' %} - {% include 'inc/image_attachments_panel.html' %} + {% include 'inc/panels/custom_fields.html' %} + {% include 'inc/panels/contacts.html' %} + {% include 'inc/panels/image_attachments.html' %} {% plugin_right_page object %}
diff --git a/netbox/templates/dcim/powerport.html b/netbox/templates/dcim/powerport.html index db367df1f..74ad9603b 100644 --- a/netbox/templates/dcim/powerport.html +++ b/netbox/templates/dcim/powerport.html @@ -44,8 +44,8 @@ - {% include 'inc/custom_fields_panel.html' %} - {% include 'extras/inc/tags_panel.html' with tags=object.tags.all %} + {% include 'inc/panels/custom_fields.html' %} + {% include 'inc/panels/tags.html' with tags=object.tags.all %} {% plugin_left_page object %}
diff --git a/netbox/templates/dcim/rack.html b/netbox/templates/dcim/rack.html index 0196a9a18..586d31771 100644 --- a/netbox/templates/dcim/rack.html +++ b/netbox/templates/dcim/rack.html @@ -162,9 +162,9 @@
- {% include 'inc/custom_fields_panel.html' %} - {% include 'extras/inc/tags_panel.html' with tags=object.tags.all url='dcim:rack_list' %} - {% include 'inc/comments_panel.html' %} + {% include 'inc/panels/custom_fields.html' %} + {% include 'inc/panels/tags.html' with tags=object.tags.all url='dcim:rack_list' %} + {% include 'inc/panels/comments.html' %} {% if power_feeds %}
@@ -206,7 +206,7 @@
{% endif %} - {% include 'inc/image_attachments_panel.html' %} + {% include 'inc/panels/image_attachments.html' %}
Reservations @@ -332,7 +332,7 @@
{% endif %} - {% include 'inc/contacts_panel.html' %} + {% include 'inc/panels/contacts.html' %} {% plugin_right_page object %} diff --git a/netbox/templates/dcim/rackreservation.html b/netbox/templates/dcim/rackreservation.html index 9d1b4deea..07ca55f7c 100644 --- a/netbox/templates/dcim/rackreservation.html +++ b/netbox/templates/dcim/rackreservation.html @@ -83,8 +83,8 @@ - {% include 'inc/custom_fields_panel.html' %} - {% include 'extras/inc/tags_panel.html' with tags=object.tags.all url='dcim:rackreservation_list' %} + {% include 'inc/panels/custom_fields.html' %} + {% include 'inc/panels/tags.html' with tags=object.tags.all url='dcim:rackreservation_list' %} {% plugin_left_page object %}
diff --git a/netbox/templates/dcim/rackrole.html b/netbox/templates/dcim/rackrole.html index 703e7e3d2..2668905f4 100644 --- a/netbox/templates/dcim/rackrole.html +++ b/netbox/templates/dcim/rackrole.html @@ -37,7 +37,7 @@ {% plugin_left_page object %}
- {% include 'inc/custom_fields_panel.html' %} + {% include 'inc/panels/custom_fields.html' %} {% plugin_right_page object %}
diff --git a/netbox/templates/dcim/rearport.html b/netbox/templates/dcim/rearport.html index 1104bd988..b60e04882 100644 --- a/netbox/templates/dcim/rearport.html +++ b/netbox/templates/dcim/rearport.html @@ -46,8 +46,8 @@ - {% include 'inc/custom_fields_panel.html' %} - {% include 'extras/inc/tags_panel.html' with tags=object.tags.all %} + {% include 'inc/panels/custom_fields.html' %} + {% include 'inc/panels/tags.html' with tags=object.tags.all %} {% plugin_left_page object %}
diff --git a/netbox/templates/dcim/region.html b/netbox/templates/dcim/region.html index 1ee21a60e..c03b11e7d 100644 --- a/netbox/templates/dcim/region.html +++ b/netbox/templates/dcim/region.html @@ -45,8 +45,8 @@
- {% include 'inc/custom_fields_panel.html' %} - {% include 'inc/contacts_panel.html' %} + {% include 'inc/panels/custom_fields.html' %} + {% include 'inc/panels/contacts.html' %} {% plugin_left_page object %}
diff --git a/netbox/templates/dcim/site.html b/netbox/templates/dcim/site.html index 92023f8d6..8442ae41e 100644 --- a/netbox/templates/dcim/site.html +++ b/netbox/templates/dcim/site.html @@ -132,7 +132,7 @@
- {% include 'inc/contacts_panel.html' %} + {% include 'inc/panels/contacts.html' %}
Contact Info
@@ -180,9 +180,9 @@ {% endwith %}
- {% include 'inc/custom_fields_panel.html' %} - {% include 'extras/inc/tags_panel.html' with tags=object.tags.all url='dcim:site_list' %} - {% include 'inc/comments_panel.html' %} + {% include 'inc/panels/custom_fields.html' %} + {% include 'inc/panels/tags.html' with tags=object.tags.all url='dcim:site_list' %} + {% include 'inc/panels/comments.html' %} {% plugin_left_page object %}
@@ -257,7 +257,7 @@ {% endif %}
- {% include 'inc/image_attachments_panel.html' %} + {% include 'inc/panels/image_attachments.html' %} {% plugin_right_page object %} diff --git a/netbox/templates/dcim/sitegroup.html b/netbox/templates/dcim/sitegroup.html index 610917078..dbee2c835 100644 --- a/netbox/templates/dcim/sitegroup.html +++ b/netbox/templates/dcim/sitegroup.html @@ -45,8 +45,8 @@ - {% include 'inc/custom_fields_panel.html' %} - {% include 'inc/contacts_panel.html' %} + {% include 'inc/panels/custom_fields.html' %} + {% include 'inc/panels/contacts.html' %} {% plugin_left_page object %}
diff --git a/netbox/templates/dcim/virtualchassis.html b/netbox/templates/dcim/virtualchassis.html index 12088e892..fd31be60d 100644 --- a/netbox/templates/dcim/virtualchassis.html +++ b/netbox/templates/dcim/virtualchassis.html @@ -38,8 +38,8 @@
- {% include 'inc/custom_fields_panel.html' %} - {% include 'extras/inc/tags_panel.html' with tags=object.tags.all url='dcim:virtualchassis_list' %} + {% include 'inc/panels/custom_fields.html' %} + {% include 'inc/panels/tags.html' with tags=object.tags.all url='dcim:virtualchassis_list' %} {% plugin_left_page object %}
diff --git a/netbox/templates/extras/journalentry.html b/netbox/templates/extras/journalentry.html index 925d98b41..2e7fcbbf5 100644 --- a/netbox/templates/extras/journalentry.html +++ b/netbox/templates/extras/journalentry.html @@ -45,7 +45,7 @@
- {% include 'inc/comments_panel.html' %} + {% include 'inc/panels/comments.html' %}
{% endblock %} diff --git a/netbox/templates/inc/comments_panel.html b/netbox/templates/inc/panels/comments.html similarity index 100% rename from netbox/templates/inc/comments_panel.html rename to netbox/templates/inc/panels/comments.html diff --git a/netbox/templates/inc/contacts_panel.html b/netbox/templates/inc/panels/contacts.html similarity index 100% rename from netbox/templates/inc/contacts_panel.html rename to netbox/templates/inc/panels/contacts.html diff --git a/netbox/templates/inc/custom_fields_panel.html b/netbox/templates/inc/panels/custom_fields.html similarity index 100% rename from netbox/templates/inc/custom_fields_panel.html rename to netbox/templates/inc/panels/custom_fields.html diff --git a/netbox/templates/inc/image_attachments_panel.html b/netbox/templates/inc/panels/image_attachments.html similarity index 100% rename from netbox/templates/inc/image_attachments_panel.html rename to netbox/templates/inc/panels/image_attachments.html diff --git a/netbox/templates/extras/inc/tags_panel.html b/netbox/templates/inc/panels/tags.html similarity index 100% rename from netbox/templates/extras/inc/tags_panel.html rename to netbox/templates/inc/panels/tags.html diff --git a/netbox/templates/ipam/aggregate.html b/netbox/templates/ipam/aggregate.html index c254d9d63..202b6e41c 100644 --- a/netbox/templates/ipam/aggregate.html +++ b/netbox/templates/ipam/aggregate.html @@ -64,8 +64,8 @@ {% plugin_left_page object %}
- {% include 'inc/custom_fields_panel.html' %} - {% include 'extras/inc/tags_panel.html' with tags=object.tags.all url='ipam:aggregate_list' %} + {% include 'inc/panels/custom_fields.html' %} + {% include 'inc/panels/tags.html' with tags=object.tags.all url='ipam:aggregate_list' %} {% plugin_right_page object %}
diff --git a/netbox/templates/ipam/ipaddress.html b/netbox/templates/ipam/ipaddress.html index 668290458..d98544de4 100644 --- a/netbox/templates/ipam/ipaddress.html +++ b/netbox/templates/ipam/ipaddress.html @@ -107,7 +107,7 @@ - {% include 'inc/custom_fields_panel.html' %} + {% include 'inc/panels/custom_fields.html' %} {% plugin_left_page object %} @@ -145,7 +145,7 @@
- {% include 'extras/inc/tags_panel.html' with tags=object.tags.all url='ipam:ipaddress_list' %} + {% include 'inc/panels/tags.html' with tags=object.tags.all url='ipam:ipaddress_list' %}
diff --git a/netbox/templates/ipam/iprange.html b/netbox/templates/ipam/iprange.html index 729f1ed42..e3d37a87a 100644 --- a/netbox/templates/ipam/iprange.html +++ b/netbox/templates/ipam/iprange.html @@ -82,8 +82,8 @@ {% plugin_left_page object %}
- {% include 'extras/inc/tags_panel.html' with tags=object.tags.all url='ipam:prefix_list' %} - {% include 'inc/custom_fields_panel.html' %} + {% include 'inc/panels/tags.html' with tags=object.tags.all url='ipam:prefix_list' %} + {% include 'inc/panels/custom_fields.html' %} {% plugin_right_page object %}
diff --git a/netbox/templates/ipam/prefix.html b/netbox/templates/ipam/prefix.html index 4e3fd2edf..877ed49e0 100644 --- a/netbox/templates/ipam/prefix.html +++ b/netbox/templates/ipam/prefix.html @@ -121,8 +121,8 @@ {% plugin_left_page object %}
- {% include 'inc/custom_fields_panel.html' %} - {% include 'extras/inc/tags_panel.html' with tags=object.tags.all url='ipam:prefix_list' %} + {% include 'inc/panels/custom_fields.html' %} + {% include 'inc/panels/tags.html' with tags=object.tags.all url='ipam:prefix_list' %} {% plugin_right_page object %}
diff --git a/netbox/templates/ipam/rir.html b/netbox/templates/ipam/rir.html index d9d13e110..26d5e71da 100644 --- a/netbox/templates/ipam/rir.html +++ b/netbox/templates/ipam/rir.html @@ -41,7 +41,7 @@ {% plugin_left_page object %}
- {% include 'inc/custom_fields_panel.html' %} + {% include 'inc/panels/custom_fields.html' %} {% plugin_right_page object %}
diff --git a/netbox/templates/ipam/role.html b/netbox/templates/ipam/role.html index 72a4767c9..7fc967047 100644 --- a/netbox/templates/ipam/role.html +++ b/netbox/templates/ipam/role.html @@ -35,7 +35,7 @@ {% plugin_left_page object %}
- {% include 'inc/custom_fields_panel.html' %} + {% include 'inc/panels/custom_fields.html' %} {% plugin_right_page object %}
diff --git a/netbox/templates/ipam/routetarget.html b/netbox/templates/ipam/routetarget.html index 94eec6a15..f615d2d50 100644 --- a/netbox/templates/ipam/routetarget.html +++ b/netbox/templates/ipam/routetarget.html @@ -3,50 +3,48 @@ {% load plugins %} {% block content %} -
-
-
-
- Route Target -
-
- - - - - - - - - - - - - -
Name{{ object.name }}
Tenant - {% if object.tenant %} - {{ object.tenant }} - {% else %} - None - {% endif %} -
Description{{ object.description|placeholder }}
-
+
+
+
+
Route Target
+
+ + + + + + + + + + + + + +
Name{{ object.name }}
Tenant + {% if object.tenant %} + {{ object.tenant }} + {% else %} + None + {% endif %} +
Description{{ object.description|placeholder }}
- {% include 'extras/inc/tags_panel.html' with tags=object.tags.all url='ipam:routetarget_list' %} - {% include 'inc/custom_fields_panel.html' %} - {% plugin_left_page object %} -
-
-
+
+ {% include 'inc/panels/tags.html' with tags=object.tags.all url='ipam:routetarget_list' %} + {% include 'inc/panels/custom_fields.html' %} + {% plugin_left_page object %} +
+
+
{% include 'inc/panel_table.html' with table=importing_vrfs_table heading="Importing VRFs" %} -
- {% include 'inc/panel_table.html' with table=exporting_vrfs_table heading="Exporting VRFs" %} - {% plugin_right_page object %} +
+ {% include 'inc/panel_table.html' with table=exporting_vrfs_table heading="Exporting VRFs" %} + {% plugin_right_page object %}
-
-
+
+
- {% plugin_full_width_page object %} + {% plugin_full_width_page object %}
-
+
{% endblock %} diff --git a/netbox/templates/ipam/service.html b/netbox/templates/ipam/service.html index 6083d1b5e..7609a280b 100644 --- a/netbox/templates/ipam/service.html +++ b/netbox/templates/ipam/service.html @@ -60,8 +60,8 @@ {% plugin_left_page object %}
- {% include 'inc/custom_fields_panel.html' %} - {% include 'extras/inc/tags_panel.html' with tags=object.tags.all url='ipam:service_list' %} + {% include 'inc/panels/custom_fields.html' %} + {% include 'inc/panels/tags.html' with tags=object.tags.all url='ipam:service_list' %} {% plugin_right_page object %}
diff --git a/netbox/templates/ipam/vlan.html b/netbox/templates/ipam/vlan.html index 5ecd6efed..e8c514cca 100644 --- a/netbox/templates/ipam/vlan.html +++ b/netbox/templates/ipam/vlan.html @@ -82,8 +82,8 @@ {% plugin_left_page object %}
- {% include 'inc/custom_fields_panel.html' %} - {% include 'extras/inc/tags_panel.html' with tags=object.tags.all url='ipam:vlan_list' %} + {% include 'inc/panels/custom_fields.html' %} + {% include 'inc/panels/tags.html' with tags=object.tags.all url='ipam:vlan_list' %} {% plugin_right_page object %}
diff --git a/netbox/templates/ipam/vlangroup.html b/netbox/templates/ipam/vlangroup.html index a46bef3b0..2d31feb22 100644 --- a/netbox/templates/ipam/vlangroup.html +++ b/netbox/templates/ipam/vlangroup.html @@ -57,7 +57,7 @@ {% plugin_left_page object %}
- {% include 'inc/custom_fields_panel.html' %} + {% include 'inc/panels/custom_fields.html' %} {% plugin_right_page object %}
diff --git a/netbox/templates/ipam/vrf.html b/netbox/templates/ipam/vrf.html index 863753c0d..b320fe6b8 100644 --- a/netbox/templates/ipam/vrf.html +++ b/netbox/templates/ipam/vrf.html @@ -60,8 +60,8 @@ {% plugin_left_page object %}
- {% include 'extras/inc/tags_panel.html' with tags=object.tags.all url='ipam:vrf_list' %} - {% include 'inc/custom_fields_panel.html' %} + {% include 'inc/panels/tags.html' with tags=object.tags.all url='ipam:vrf_list' %} + {% include 'inc/panels/custom_fields.html' %} {% plugin_right_page object %}
diff --git a/netbox/templates/tenancy/contact.html b/netbox/templates/tenancy/contact.html index ca46fdb31..8bdf6c030 100644 --- a/netbox/templates/tenancy/contact.html +++ b/netbox/templates/tenancy/contact.html @@ -55,12 +55,12 @@ - {% include 'inc/comments_panel.html' %} + {% include 'inc/panels/comments.html' %} {% plugin_left_page object %}
- {% include 'inc/custom_fields_panel.html' %} - {% include 'extras/inc/tags_panel.html' with tags=object.tags.all url='tenancy:tenant_list' %} + {% include 'inc/panels/custom_fields.html' %} + {% include 'inc/panels/tags.html' with tags=object.tags.all url='tenancy:tenant_list' %} {% plugin_right_page object %}
diff --git a/netbox/templates/tenancy/contactgroup.html b/netbox/templates/tenancy/contactgroup.html index 1511565c3..0eef750eb 100644 --- a/netbox/templates/tenancy/contactgroup.html +++ b/netbox/templates/tenancy/contactgroup.html @@ -48,7 +48,7 @@ {% plugin_left_page object %}
- {% include 'inc/custom_fields_panel.html' %} + {% include 'inc/panels/custom_fields.html' %} {% plugin_right_page object %}
diff --git a/netbox/templates/tenancy/contactrole.html b/netbox/templates/tenancy/contactrole.html index f081afc34..4ddde3624 100644 --- a/netbox/templates/tenancy/contactrole.html +++ b/netbox/templates/tenancy/contactrole.html @@ -33,7 +33,7 @@ {% plugin_left_page object %}
- {% include 'inc/custom_fields_panel.html' %} + {% include 'inc/panels/custom_fields.html' %} {% plugin_right_page object %}
diff --git a/netbox/templates/tenancy/tenant.html b/netbox/templates/tenancy/tenant.html index 54b29e946..dc51b48c5 100644 --- a/netbox/templates/tenancy/tenant.html +++ b/netbox/templates/tenancy/tenant.html @@ -35,10 +35,10 @@ - {% include 'inc/custom_fields_panel.html' %} - {% include 'extras/inc/tags_panel.html' with tags=object.tags.all url='tenancy:tenant_list' %} - {% include 'inc/comments_panel.html' %} - {% include 'inc/contacts_panel.html' %} + {% include 'inc/panels/custom_fields.html' %} + {% include 'inc/panels/tags.html' with tags=object.tags.all url='tenancy:tenant_list' %} + {% include 'inc/panels/comments.html' %} + {% include 'inc/panels/contacts.html' %} {% plugin_left_page object %}
diff --git a/netbox/templates/tenancy/tenantgroup.html b/netbox/templates/tenancy/tenantgroup.html index 06fd07522..31a756d9e 100644 --- a/netbox/templates/tenancy/tenantgroup.html +++ b/netbox/templates/tenancy/tenantgroup.html @@ -48,7 +48,7 @@ {% plugin_left_page object %}
- {% include 'inc/custom_fields_panel.html' %} + {% include 'inc/panels/custom_fields.html' %} {% plugin_right_page object %}
diff --git a/netbox/templates/virtualization/cluster.html b/netbox/templates/virtualization/cluster.html index fa8cad039..84b8235ad 100644 --- a/netbox/templates/virtualization/cluster.html +++ b/netbox/templates/virtualization/cluster.html @@ -56,13 +56,13 @@ - {% include 'inc/comments_panel.html' %} + {% include 'inc/panels/comments.html' %} {% plugin_left_page object %}
- {% include 'inc/custom_fields_panel.html' %} - {% include 'extras/inc/tags_panel.html' with tags=object.tags.all url='virtualization:cluster_list' %} - {% include 'inc/contacts_panel.html' %} + {% include 'inc/panels/custom_fields.html' %} + {% include 'inc/panels/tags.html' with tags=object.tags.all url='virtualization:cluster_list' %} + {% include 'inc/panels/contacts.html' %} {% plugin_right_page object %}
diff --git a/netbox/templates/virtualization/clustergroup.html b/netbox/templates/virtualization/clustergroup.html index fd83c10f3..b367d97f7 100644 --- a/netbox/templates/virtualization/clustergroup.html +++ b/netbox/templates/virtualization/clustergroup.html @@ -31,8 +31,8 @@ {% plugin_left_page object %}
- {% include 'inc/custom_fields_panel.html' %} - {% include 'inc/contacts_panel.html' %} + {% include 'inc/panels/custom_fields.html' %} + {% include 'inc/panels/contacts.html' %} {% plugin_right_page object %}
diff --git a/netbox/templates/virtualization/clustertype.html b/netbox/templates/virtualization/clustertype.html index 9ef1abb8e..e3c050a1b 100644 --- a/netbox/templates/virtualization/clustertype.html +++ b/netbox/templates/virtualization/clustertype.html @@ -31,7 +31,7 @@ {% plugin_left_page object %}
- {% include 'inc/custom_fields_panel.html' %} + {% include 'inc/panels/custom_fields.html' %} {% plugin_right_page object %}
diff --git a/netbox/templates/virtualization/virtualmachine.html b/netbox/templates/virtualization/virtualmachine.html index 0ef590112..0d9ea4a22 100644 --- a/netbox/templates/virtualization/virtualmachine.html +++ b/netbox/templates/virtualization/virtualmachine.html @@ -89,9 +89,9 @@ - {% include 'inc/custom_fields_panel.html' %} - {% include 'extras/inc/tags_panel.html' with tags=object.tags.all url='virtualization:virtualmachine_list' %} - {% include 'inc/comments_panel.html' %} + {% include 'inc/panels/custom_fields.html' %} + {% include 'inc/panels/tags.html' with tags=object.tags.all url='virtualization:virtualmachine_list' %} + {% include 'inc/panels/comments.html' %} {% plugin_left_page object %}
@@ -173,7 +173,7 @@
{% endif %} - {% include 'inc/contacts_panel.html' %} + {% include 'inc/panels/contacts.html' %} {% plugin_right_page object %} diff --git a/netbox/templates/virtualization/vminterface.html b/netbox/templates/virtualization/vminterface.html index 6a618a1be..ef12b63a1 100644 --- a/netbox/templates/virtualization/vminterface.html +++ b/netbox/templates/virtualization/vminterface.html @@ -69,8 +69,8 @@ {% plugin_left_page object %}
- {% include 'inc/custom_fields_panel.html' %} - {% include 'extras/inc/tags_panel.html' with tags=object.tags.all %} + {% include 'inc/panels/custom_fields.html' %} + {% include 'inc/panels/tags.html' with tags=object.tags.all %} {% plugin_right_page object %}
From a66501250e10f09641e5b0bef927db10014323aa Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Wed, 20 Oct 2021 10:58:15 -0400 Subject: [PATCH 044/289] Add wireless authentication attributes --- .../wireless/inc/authentication_attrs.html | 21 ++++++++++ netbox/templates/wireless/wirelesslan.html | 3 +- netbox/templates/wireless/wirelesslink.html | 7 +++- netbox/wireless/api/serializers.py | 10 ++++- netbox/wireless/choices.py | 26 ++++++++++++ netbox/wireless/constants.py | 1 + netbox/wireless/filtersets.py | 17 +++++++- netbox/wireless/forms/bulk_edit.py | 27 +++++++++++- netbox/wireless/forms/bulk_import.py | 25 ++++++++++- netbox/wireless/forms/filtersets.py | 27 ++++++++++++ netbox/wireless/forms/models.py | 19 +++++++-- .../wireless/migrations/0002_wireless_auth.py | 41 +++++++++++++++++++ netbox/wireless/models.py | 34 +++++++++++++-- netbox/wireless/tables.py | 15 +++++-- 14 files changed, 252 insertions(+), 21 deletions(-) create mode 100644 netbox/templates/wireless/inc/authentication_attrs.html create mode 100644 netbox/wireless/migrations/0002_wireless_auth.py diff --git a/netbox/templates/wireless/inc/authentication_attrs.html b/netbox/templates/wireless/inc/authentication_attrs.html new file mode 100644 index 000000000..ed4c7546c --- /dev/null +++ b/netbox/templates/wireless/inc/authentication_attrs.html @@ -0,0 +1,21 @@ +{% load helpers %} + +
+
Authentication
+
+ + + + + + + + + + + + + +
Type{{ object.get_auth_type_display|placeholder }}
Cipher{{ object.get_auth_cipher_display|placeholder }}
PSK{{ object.auth_psk|placeholder }}
+
+
diff --git a/netbox/templates/wireless/wirelesslan.html b/netbox/templates/wireless/wirelesslan.html index cfe13ca45..5c6784de4 100644 --- a/netbox/templates/wireless/wirelesslan.html +++ b/netbox/templates/wireless/wirelesslan.html @@ -40,10 +40,11 @@ - {% include 'extras/inc/tags_panel.html' with tags=object.tags.all url='wireless:wirelesslan_list' %} + {% include 'wireless/inc/authentication_attrs.html' %} {% plugin_left_page object %}
+ {% include 'extras/inc/tags_panel.html' with tags=object.tags.all url='wireless:wirelesslan_list' %} {% include 'inc/custom_fields_panel.html' %} {% plugin_right_page object %}
diff --git a/netbox/templates/wireless/wirelesslink.html b/netbox/templates/wireless/wirelesslink.html index 45ec6b0c9..afdeff357 100644 --- a/netbox/templates/wireless/wirelesslink.html +++ b/netbox/templates/wireless/wirelesslink.html @@ -17,7 +17,9 @@ - + @@ -30,6 +32,7 @@
Status{{ object.get_status_display }} + {{ object.get_status_display }} +
SSID
+ {% include 'extras/inc/tags_panel.html' with tags=object.tags.all url='wireless:wirelesslink_list' %} {% plugin_left_page object %}
@@ -39,8 +42,8 @@ {% include 'wireless/inc/wirelesslink_interface.html' with interface=object.interface_b %}
+ {% include 'wireless/inc/authentication_attrs.html' %} {% include 'inc/custom_fields_panel.html' %} - {% include 'extras/inc/tags_panel.html' with tags=object.tags.all url='wireless:wirelesslink_list' %} {% plugin_right_page object %} diff --git a/netbox/wireless/api/serializers.py b/netbox/wireless/api/serializers.py index 24395b77c..e9be35618 100644 --- a/netbox/wireless/api/serializers.py +++ b/netbox/wireless/api/serializers.py @@ -5,6 +5,7 @@ from dcim.api.serializers import NestedInterfaceSerializer from ipam.api.serializers import NestedVLANSerializer from netbox.api import ChoiceField from netbox.api.serializers import NestedGroupModelSerializer, PrimaryModelSerializer +from wireless.choices import * from wireless.models import * from .nested_serializers import * @@ -30,11 +31,13 @@ class WirelessLANGroupSerializer(NestedGroupModelSerializer): class WirelessLANSerializer(PrimaryModelSerializer): url = serializers.HyperlinkedIdentityField(view_name='wireless-api:wirelesslan-detail') vlan = NestedVLANSerializer(required=False, allow_null=True) + auth_type = ChoiceField(choices=WirelessAuthTypeChoices, required=False, allow_blank=True) + auth_cipher = ChoiceField(choices=WirelessAuthCipherChoices, required=False, allow_blank=True) class Meta: model = WirelessLAN fields = [ - 'id', 'url', 'display', 'ssid', 'description', 'vlan', + 'id', 'url', 'display', 'ssid', 'description', 'vlan', 'auth_type', 'auth_cipher', 'auth_psk', ] @@ -43,9 +46,12 @@ class WirelessLinkSerializer(PrimaryModelSerializer): status = ChoiceField(choices=LinkStatusChoices, required=False) interface_a = NestedInterfaceSerializer() interface_b = NestedInterfaceSerializer() + auth_type = ChoiceField(choices=WirelessAuthTypeChoices, required=False, allow_blank=True) + auth_cipher = ChoiceField(choices=WirelessAuthCipherChoices, required=False, allow_blank=True) class Meta: model = WirelessLink fields = [ - 'id', 'url', 'display', 'interface_a', 'interface_b', 'ssid', 'status', 'description', + 'id', 'url', 'display', 'interface_a', 'interface_b', 'ssid', 'status', 'description', 'auth_type', + 'auth_cipher', 'auth_psk', ] diff --git a/netbox/wireless/choices.py b/netbox/wireless/choices.py index 8a710b532..c8e7fd09f 100644 --- a/netbox/wireless/choices.py +++ b/netbox/wireless/choices.py @@ -163,3 +163,29 @@ class WirelessChannelChoices(ChoiceSet): ) ), ) + + +class WirelessAuthTypeChoices(ChoiceSet): + TYPE_OPEN = 'open' + TYPE_WEP = 'wep' + TYPE_WPA_PERSONAL = 'wpa-personal' + TYPE_WPA_ENTERPRISE = 'wpa-enterprise' + + CHOICES = ( + (TYPE_OPEN, 'Open'), + (TYPE_WEP, 'WEP'), + (TYPE_WPA_PERSONAL, 'WPA Personal (PSK)'), + (TYPE_WPA_ENTERPRISE, 'WPA Enterprise'), + ) + + +class WirelessAuthCipherChoices(ChoiceSet): + CIPHER_AUTO = 'auto' + CIPHER_TKIP = 'tkip' + CIPHER_AES = 'aes' + + CHOICES = ( + (CIPHER_AUTO, 'Auto'), + (CIPHER_TKIP, 'TKIP'), + (CIPHER_AES, 'AES'), + ) diff --git a/netbox/wireless/constants.py b/netbox/wireless/constants.py index 188c4abd9..63de2b136 100644 --- a/netbox/wireless/constants.py +++ b/netbox/wireless/constants.py @@ -1 +1,2 @@ SSID_MAX_LENGTH = 32 # Per IEEE 802.11-2007 +PSK_MAX_LENGTH = 64 diff --git a/netbox/wireless/filtersets.py b/netbox/wireless/filtersets.py index a5d9b7d75..cc67c1fc3 100644 --- a/netbox/wireless/filtersets.py +++ b/netbox/wireless/filtersets.py @@ -4,6 +4,7 @@ from django.db.models import Q from dcim.choices import LinkStatusChoices from extras.filters import TagFilter from netbox.filtersets import OrganizationalModelFilterSet, PrimaryModelFilterSet +from .choices import * from .models import * __all__ = ( @@ -36,11 +37,17 @@ class WirelessLANFilterSet(PrimaryModelFilterSet): group_id = django_filters.ModelMultipleChoiceFilter( queryset=WirelessLANGroup.objects.all() ) + auth_type = django_filters.MultipleChoiceFilter( + choices=WirelessAuthTypeChoices + ) + auth_cipher = django_filters.MultipleChoiceFilter( + choices=WirelessAuthCipherChoices + ) tag = TagFilter() class Meta: model = WirelessLAN - fields = ['id', 'ssid'] + fields = ['id', 'ssid', 'auth_psk'] def search(self, queryset, name, value): if not value.strip(): @@ -60,11 +67,17 @@ class WirelessLinkFilterSet(PrimaryModelFilterSet): status = django_filters.MultipleChoiceFilter( choices=LinkStatusChoices ) + auth_type = django_filters.MultipleChoiceFilter( + choices=WirelessAuthTypeChoices + ) + auth_cipher = django_filters.MultipleChoiceFilter( + choices=WirelessAuthCipherChoices + ) tag = TagFilter() class Meta: model = WirelessLink - fields = ['id', 'ssid'] + fields = ['id', 'ssid', 'auth_psk'] def search(self, queryset, name, value): if not value.strip(): diff --git a/netbox/wireless/forms/bulk_edit.py b/netbox/wireless/forms/bulk_edit.py index c0d5a925e..1da98026c 100644 --- a/netbox/wireless/forms/bulk_edit.py +++ b/netbox/wireless/forms/bulk_edit.py @@ -4,6 +4,7 @@ from dcim.choices import LinkStatusChoices from extras.forms import AddRemoveTagsForm, CustomFieldModelBulkEditForm from ipam.models import VLAN from utilities.forms import BootstrapMixin, DynamicModelChoiceField +from wireless.choices import * from wireless.constants import SSID_MAX_LENGTH from wireless.models import * @@ -52,9 +53,20 @@ class WirelessLANBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldMode description = forms.CharField( required=False ) + auth_type = forms.ChoiceField( + choices=WirelessAuthTypeChoices, + required=False + ) + auth_cipher = forms.ChoiceField( + choices=WirelessAuthCipherChoices, + required=False + ) + auth_psk = forms.CharField( + required=False + ) class Meta: - nullable_fields = ['ssid', 'group', 'vlan', 'description'] + nullable_fields = ['ssid', 'group', 'vlan', 'description', 'auth_type', 'auth_cipher', 'auth_psk'] class WirelessLinkBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldModelBulkEditForm): @@ -73,6 +85,17 @@ class WirelessLinkBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldMod description = forms.CharField( required=False ) + auth_type = forms.ChoiceField( + choices=WirelessAuthTypeChoices, + required=False + ) + auth_cipher = forms.ChoiceField( + choices=WirelessAuthCipherChoices, + required=False + ) + auth_psk = forms.CharField( + required=False + ) class Meta: - nullable_fields = ['ssid', 'description'] + nullable_fields = ['ssid', 'description', 'auth_type', 'auth_cipher', 'auth_psk'] diff --git a/netbox/wireless/forms/bulk_import.py b/netbox/wireless/forms/bulk_import.py index 6b22728f6..e9e9afed6 100644 --- a/netbox/wireless/forms/bulk_import.py +++ b/netbox/wireless/forms/bulk_import.py @@ -3,6 +3,7 @@ from dcim.models import Interface from extras.forms import CustomFieldModelCSVForm from ipam.models import VLAN from utilities.forms import CSVChoiceField, CSVModelChoiceField, SlugField +from wireless.choices import * from wireless.models import * __all__ = ( @@ -38,10 +39,20 @@ class WirelessLANCSVForm(CustomFieldModelCSVForm): to_field_name='name', help_text='Bridged VLAN' ) + auth_type = CSVChoiceField( + choices=WirelessAuthTypeChoices, + required=False, + help_text='Authentication type' + ) + auth_cipher = CSVChoiceField( + choices=WirelessAuthCipherChoices, + required=False, + help_text='Authentication cipher' + ) class Meta: model = WirelessLAN - fields = ('ssid', 'group', 'description', 'vlan') + fields = ('ssid', 'group', 'description', 'vlan', 'auth_type', 'auth_cipher', 'auth_psk') class WirelessLinkCSVForm(CustomFieldModelCSVForm): @@ -55,7 +66,17 @@ class WirelessLinkCSVForm(CustomFieldModelCSVForm): interface_b = CSVModelChoiceField( queryset=Interface.objects.all() ) + auth_type = CSVChoiceField( + choices=WirelessAuthTypeChoices, + required=False, + help_text='Authentication type' + ) + auth_cipher = CSVChoiceField( + choices=WirelessAuthCipherChoices, + required=False, + help_text='Authentication cipher' + ) class Meta: model = WirelessLink - fields = ('interface_a', 'interface_b', 'ssid', 'description') + fields = ('interface_a', 'interface_b', 'ssid', 'description', 'auth_type', 'auth_cipher', 'auth_psk') diff --git a/netbox/wireless/forms/filtersets.py b/netbox/wireless/forms/filtersets.py index 13aae99a5..483d74a7c 100644 --- a/netbox/wireless/forms/filtersets.py +++ b/netbox/wireless/forms/filtersets.py @@ -6,6 +6,7 @@ from extras.forms import CustomFieldModelFilterForm from utilities.forms import ( add_blank_choice, BootstrapMixin, DynamicModelMultipleChoiceField, StaticSelect, TagFilterField, ) +from wireless.choices import * from wireless.models import * __all__ = ( @@ -52,6 +53,19 @@ class WirelessLANFilterForm(BootstrapMixin, CustomFieldModelFilterForm): label=_('Group'), fetch_trigger='open' ) + auth_type = forms.ChoiceField( + required=False, + choices=add_blank_choice(WirelessAuthTypeChoices), + widget=StaticSelect() + ) + auth_cipher = forms.ChoiceField( + required=False, + choices=add_blank_choice(WirelessAuthCipherChoices), + widget=StaticSelect() + ) + auth_psk = forms.CharField( + required=False + ) tag = TagFilterField(model) @@ -74,4 +88,17 @@ class WirelessLinkFilterForm(BootstrapMixin, CustomFieldModelFilterForm): choices=add_blank_choice(LinkStatusChoices), widget=StaticSelect() ) + auth_type = forms.ChoiceField( + required=False, + choices=add_blank_choice(WirelessAuthTypeChoices), + widget=StaticSelect() + ) + auth_cipher = forms.ChoiceField( + required=False, + choices=add_blank_choice(WirelessAuthCipherChoices), + widget=StaticSelect() + ) + auth_psk = forms.CharField( + required=False + ) tag = TagFilterField(model) diff --git a/netbox/wireless/forms/models.py b/netbox/wireless/forms/models.py index 9a7b78b31..aa453ba64 100644 --- a/netbox/wireless/forms/models.py +++ b/netbox/wireless/forms/models.py @@ -35,7 +35,8 @@ class WirelessLANForm(BootstrapMixin, CustomFieldModelForm): ) vlan = DynamicModelChoiceField( queryset=VLAN.objects.all(), - required=False + required=False, + label='VLAN' ) tags = DynamicModelMultipleChoiceField( queryset=Tag.objects.all(), @@ -45,12 +46,17 @@ class WirelessLANForm(BootstrapMixin, CustomFieldModelForm): class Meta: model = WirelessLAN fields = [ - 'ssid', 'group', 'description', 'vlan', 'tags', + 'ssid', 'group', 'description', 'vlan', 'auth_type', 'auth_cipher', 'auth_psk', 'tags', ] fieldsets = ( ('Wireless LAN', ('ssid', 'group', 'description', 'tags')), ('VLAN', ('vlan',)), + ('Authentication', ('auth_type', 'auth_cipher', 'auth_psk')), ) + widgets = { + 'auth_type': StaticSelect, + 'auth_cipher': StaticSelect, + } class WirelessLinkForm(BootstrapMixin, CustomFieldModelForm): @@ -94,8 +100,15 @@ class WirelessLinkForm(BootstrapMixin, CustomFieldModelForm): class Meta: model = WirelessLink fields = [ - 'device_a', 'interface_a', 'device_b', 'interface_b', 'status', 'ssid', 'description', 'tags', + 'device_a', 'interface_a', 'device_b', 'interface_b', 'status', 'ssid', 'description', 'auth_type', + 'auth_cipher', 'auth_psk', 'tags', ] + fieldsets = ( + ('Link', ('device_a', 'interface_a', 'device_b', 'interface_b', 'status', 'ssid', 'description', 'tags')), + ('Authentication', ('auth_type', 'auth_cipher', 'auth_psk')), + ) widgets = { 'status': StaticSelect, + 'auth_type': StaticSelect, + 'auth_cipher': StaticSelect, } diff --git a/netbox/wireless/migrations/0002_wireless_auth.py b/netbox/wireless/migrations/0002_wireless_auth.py new file mode 100644 index 000000000..9ca4e351c --- /dev/null +++ b/netbox/wireless/migrations/0002_wireless_auth.py @@ -0,0 +1,41 @@ +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('wireless', '0001_wireless'), + ] + + operations = [ + migrations.AddField( + model_name='wirelesslan', + name='auth_cipher', + field=models.CharField(blank=True, max_length=50), + ), + migrations.AddField( + model_name='wirelesslan', + name='auth_psk', + field=models.CharField(blank=True, max_length=64), + ), + migrations.AddField( + model_name='wirelesslan', + name='auth_type', + field=models.CharField(blank=True, max_length=50), + ), + migrations.AddField( + model_name='wirelesslink', + name='auth_cipher', + field=models.CharField(blank=True, max_length=50), + ), + migrations.AddField( + model_name='wirelesslink', + name='auth_psk', + field=models.CharField(blank=True, max_length=64), + ), + migrations.AddField( + model_name='wirelesslink', + name='auth_type', + field=models.CharField(blank=True, max_length=50), + ), + ] diff --git a/netbox/wireless/models.py b/netbox/wireless/models.py index b0cacde15..43818279e 100644 --- a/netbox/wireless/models.py +++ b/netbox/wireless/models.py @@ -8,7 +8,8 @@ from dcim.constants import WIRELESS_IFACE_TYPES from extras.utils import extras_features from netbox.models import BigIDModel, NestedGroupModel, PrimaryModel from utilities.querysets import RestrictedQuerySet -from .constants import SSID_MAX_LENGTH +from .choices import * +from .constants import * __all__ = ( 'WirelessLAN', @@ -17,6 +18,30 @@ __all__ = ( ) +class WirelessAuthenticationBase(models.Model): + """ + Abstract model for attaching attributes related to wireless authentication. + """ + auth_type = models.CharField( + max_length=50, + choices=WirelessAuthTypeChoices, + blank=True + ) + auth_cipher = models.CharField( + max_length=50, + choices=WirelessAuthCipherChoices, + blank=True + ) + auth_psk = models.CharField( + max_length=PSK_MAX_LENGTH, + blank=True, + verbose_name='Pre-shared key' + ) + + class Meta: + abstract = True + + @extras_features('custom_fields', 'custom_links', 'export_templates', 'webhooks') class WirelessLANGroup(NestedGroupModel): """ @@ -49,12 +74,15 @@ class WirelessLANGroup(NestedGroupModel): ('parent', 'name') ) + def __str__(self): + return self.name + def get_absolute_url(self): return reverse('wireless:wirelesslangroup', args=[self.pk]) @extras_features('custom_fields', 'custom_links', 'export_templates', 'tags', 'webhooks') -class WirelessLAN(PrimaryModel): +class WirelessLAN(WirelessAuthenticationBase, PrimaryModel): """ A wireless network formed among an arbitrary number of access point and clients. """ @@ -95,7 +123,7 @@ class WirelessLAN(PrimaryModel): @extras_features('custom_fields', 'custom_links', 'export_templates', 'tags', 'webhooks') -class WirelessLink(PrimaryModel): +class WirelessLink(WirelessAuthenticationBase, PrimaryModel): """ A point-to-point connection between two wireless Interfaces. """ diff --git a/netbox/wireless/tables.py b/netbox/wireless/tables.py index 486fa2a71..ec8f3ddd2 100644 --- a/netbox/wireless/tables.py +++ b/netbox/wireless/tables.py @@ -48,8 +48,11 @@ class WirelessLANTable(BaseTable): class Meta(BaseTable.Meta): model = WirelessLAN - fields = ('pk', 'ssid', 'group', 'description', 'vlan', 'interface_count', 'tags') - default_columns = ('pk', 'ssid', 'group', 'description', 'vlan', 'interface_count') + fields = ( + 'pk', 'ssid', 'group', 'description', 'vlan', 'interface_count', 'auth_type', 'auth_cipher', 'auth_psk', + 'tags', + ) + default_columns = ('pk', 'ssid', 'group', 'description', 'vlan', 'auth_type', 'interface_count') class WirelessLANInterfacesTable(BaseTable): @@ -94,7 +97,11 @@ class WirelessLinkTable(BaseTable): class Meta(BaseTable.Meta): model = WirelessLink - fields = ('pk', 'id', 'status', 'device_a', 'interface_a', 'device_b', 'interface_b', 'ssid', 'description') - default_columns = ( + fields = ( 'pk', 'id', 'status', 'device_a', 'interface_a', 'device_b', 'interface_b', 'ssid', 'description', + 'auth_type', 'auth_cipher', 'auth_psk', 'tags', + ) + default_columns = ( + 'pk', 'id', 'status', 'device_a', 'interface_a', 'device_b', 'interface_b', 'ssid', 'auth_type', + 'description', ) From 4a7159389ee7cb5713e5749cc92bd0f133206ffc Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Wed, 20 Oct 2021 11:22:56 -0400 Subject: [PATCH 045/289] Add wireless documentation --- docs/core-functionality/wireless.md | 8 ++++++++ docs/models/dcim/interface.md | 11 +++++++++++ docs/models/wireless/wirelesslan.md | 11 +++++++++++ docs/models/wireless/wirelesslangroup.md | 3 +++ docs/models/wireless/wirelesslink.md | 9 +++++++++ mkdocs.yml | 1 + 6 files changed, 43 insertions(+) create mode 100644 docs/core-functionality/wireless.md create mode 100644 docs/models/wireless/wirelesslan.md create mode 100644 docs/models/wireless/wirelesslangroup.md create mode 100644 docs/models/wireless/wirelesslink.md diff --git a/docs/core-functionality/wireless.md b/docs/core-functionality/wireless.md new file mode 100644 index 000000000..57133f756 --- /dev/null +++ b/docs/core-functionality/wireless.md @@ -0,0 +1,8 @@ +# Wireless Networks + +{!models/wireless/wirelesslan.md!} +{!models/wireless/wirelesslangroup.md!} + +--- + +{!models/wireless/wirelesslink.md!} diff --git a/docs/models/dcim/interface.md b/docs/models/dcim/interface.md index bd9975a72..585674de1 100644 --- a/docs/models/dcim/interface.md +++ b/docs/models/dcim/interface.md @@ -11,6 +11,17 @@ Interfaces may be physical or virtual in nature, but only physical interfaces ma Physical interfaces may be arranged into a link aggregation group (LAG) and associated with a parent LAG (virtual) interface. LAG interfaces can be recursively nested to model bonding of trunk groups. Like all virtual interfaces, LAG interfaces cannot be connected physically. +### Wireless Interfaces + +Wireless interfaces may additionally track the following attributes: + +* **Role** - AP or station +* **Channel** - One of several standard wireless channels +* **Channel Frequency** - The transmit frequency +* **Channel Width** - Channel bandwidth + +If a predefined channel is selected, the frequency and width attributes will be assigned automatically. If no channel is selected, these attributes may be defined manually. + ### IP Address Assignment IP addresses can be assigned to interfaces. VLANs can also be assigned to each interface as either tagged or untagged. (An interface may have only one untagged VLAN.) diff --git a/docs/models/wireless/wirelesslan.md b/docs/models/wireless/wirelesslan.md new file mode 100644 index 000000000..80a3a40b0 --- /dev/null +++ b/docs/models/wireless/wirelesslan.md @@ -0,0 +1,11 @@ +# Wireless LANs + +A wireless LAN is a set of interfaces connected via a common wireless channel. Each instance must have an SSID, and may optionally be correlated to a VLAN. Wireless LANs can be arranged into hierarchical groups. + +An interface may be attached to multiple wireless LANs, provided they are all operating on the same channel. Only wireless interfaces may be attached to wireless LANs. + +Each wireless LAN may have authentication attributes associated with it, including: + +* Authentication type +* Cipher +* Pre-shared key diff --git a/docs/models/wireless/wirelesslangroup.md b/docs/models/wireless/wirelesslangroup.md new file mode 100644 index 000000000..e477abd0b --- /dev/null +++ b/docs/models/wireless/wirelesslangroup.md @@ -0,0 +1,3 @@ +# Wireless LAN Groups + +Wireless LAN groups can be used to organize and classify wireless LANs. These groups are hierarchical: groups can be nested within parent groups. However, each wireless LAN may assigned only to one group. diff --git a/docs/models/wireless/wirelesslink.md b/docs/models/wireless/wirelesslink.md new file mode 100644 index 000000000..85cdbd6d9 --- /dev/null +++ b/docs/models/wireless/wirelesslink.md @@ -0,0 +1,9 @@ +# Wireless Links + +A wireless link represents a connection between exactly two wireless interfaces. It may optionally be assigned an SSID and a description. It may also have a status assigned to it, similar to the cable model. + +Each wireless link may have authentication attributes associated with it, including: + +* Authentication type +* Cipher +* Pre-shared key diff --git a/mkdocs.yml b/mkdocs.yml index 7244c36d6..ac394d704 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -60,6 +60,7 @@ nav: - Virtualization: 'core-functionality/virtualization.md' - Service Mapping: 'core-functionality/services.md' - Circuits: 'core-functionality/circuits.md' + - Wireless: 'core-functionality/wireless.md' - Power Tracking: 'core-functionality/power.md' - Tenancy: 'core-functionality/tenancy.md' - Customization: From 6a4becfb4602675429fc75a1c511c35d7415ae68 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Wed, 20 Oct 2021 13:34:39 -0400 Subject: [PATCH 046/289] Add tests for wireless --- netbox/dcim/filtersets.py | 9 +- netbox/dcim/tests/test_filtersets.py | 27 +++- netbox/wireless/api/serializers.py | 6 +- netbox/wireless/filtersets.py | 17 +- netbox/wireless/forms/bulk_import.py | 1 + netbox/wireless/forms/models.py | 2 + netbox/wireless/graphql/schema.py | 12 +- netbox/wireless/graphql/types.py | 18 ++- netbox/wireless/signals.py | 1 - netbox/wireless/tests/__init__.py | 0 netbox/wireless/tests/test_api.py | 141 ++++++++++++++++ netbox/wireless/tests/test_filtersets.py | 194 +++++++++++++++++++++++ netbox/wireless/tests/test_views.py | 120 ++++++++++++++ 13 files changed, 529 insertions(+), 19 deletions(-) create mode 100644 netbox/wireless/tests/__init__.py create mode 100644 netbox/wireless/tests/test_api.py create mode 100644 netbox/wireless/tests/test_filtersets.py create mode 100644 netbox/wireless/tests/test_views.py diff --git a/netbox/dcim/filtersets.py b/netbox/dcim/filtersets.py index aa525e8e1..f6d6ed8dc 100644 --- a/netbox/dcim/filtersets.py +++ b/netbox/dcim/filtersets.py @@ -14,6 +14,7 @@ from utilities.filters import ( TreeNodeMultipleChoiceFilter, ) from virtualization.models import Cluster +from wireless.choices import WirelessRoleChoices, WirelessChannelChoices from .choices import * from .constants import * from .models import * @@ -987,12 +988,18 @@ class InterfaceFilterSet(PrimaryModelFilterSet, DeviceComponentFilterSet, CableT choices=InterfaceTypeChoices, null_value=None ) + rf_role = django_filters.MultipleChoiceFilter( + choices=WirelessRoleChoices + ) + rf_channel = django_filters.MultipleChoiceFilter( + choices=WirelessChannelChoices + ) class Meta: model = Interface fields = [ 'id', 'name', 'label', 'type', 'enabled', 'mtu', 'mgmt_only', 'mode', 'rf_role', 'rf_channel', - 'rf_channel_width', 'description', + 'rf_channel_frequency', 'rf_channel_width', 'description', ] def filter_device(self, queryset, name, value): diff --git a/netbox/dcim/tests/test_filtersets.py b/netbox/dcim/tests/test_filtersets.py index 8d8be324e..62bdaed82 100644 --- a/netbox/dcim/tests/test_filtersets.py +++ b/netbox/dcim/tests/test_filtersets.py @@ -9,6 +9,7 @@ from tenancy.models import Tenant, TenantGroup from utilities.choices import ColorChoices from utilities.testing import ChangeLoggedFilterSetTests from virtualization.models import Cluster, ClusterType +from wireless.choices import WirelessChannelChoices, WirelessRoleChoices class RegionTestCase(TestCase, ChangeLoggedFilterSetTests): @@ -2063,6 +2064,8 @@ class InterfaceTestCase(TestCase, ChangeLoggedFilterSetTests): Interface(device=devices[3], name='Interface 4', label='D', type=InterfaceTypeChoices.TYPE_OTHER, enabled=True, mgmt_only=True), Interface(device=devices[3], name='Interface 5', label='E', type=InterfaceTypeChoices.TYPE_OTHER, enabled=True, mgmt_only=True), Interface(device=devices[3], name='Interface 6', label='F', type=InterfaceTypeChoices.TYPE_OTHER, enabled=False, mgmt_only=False), + Interface(device=devices[3], name='Interface 7', type=InterfaceTypeChoices.TYPE_80211AC, rf_role=WirelessRoleChoices.ROLE_AP, rf_channel=WirelessChannelChoices.CHANNEL_24G_1, rf_channel_frequency=2412, rf_channel_width=22), + Interface(device=devices[3], name='Interface 8', type=InterfaceTypeChoices.TYPE_80211AC, rf_role=WirelessRoleChoices.ROLE_STATION, rf_channel=WirelessChannelChoices.CHANNEL_5G_32, rf_channel_frequency=5160, rf_channel_width=20), ) Interface.objects.bulk_create(interfaces) @@ -2083,11 +2086,11 @@ class InterfaceTestCase(TestCase, ChangeLoggedFilterSetTests): params = {'connected': True} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4) params = {'connected': False} - self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4) def test_enabled(self): params = {'enabled': 'true'} - self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4) + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 6) params = {'enabled': 'false'} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) @@ -2099,7 +2102,7 @@ class InterfaceTestCase(TestCase, ChangeLoggedFilterSetTests): params = {'mgmt_only': 'true'} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4) params = {'mgmt_only': 'false'} - self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4) def test_mode(self): params = {'mode': InterfaceModeChoices.MODE_ACCESS} @@ -2176,7 +2179,7 @@ class InterfaceTestCase(TestCase, ChangeLoggedFilterSetTests): params = {'cabled': 'true'} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4) params = {'cabled': 'false'} - self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4) def test_kind(self): params = {'kind': 'physical'} @@ -2192,6 +2195,22 @@ class InterfaceTestCase(TestCase, ChangeLoggedFilterSetTests): params = {'type': [InterfaceTypeChoices.TYPE_1GE_FIXED, InterfaceTypeChoices.TYPE_1GE_GBIC]} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + def test_rf_role(self): + params = {'rf_role': [WirelessRoleChoices.ROLE_AP, WirelessRoleChoices.ROLE_STATION]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + def test_rf_channel(self): + params = {'rf_channel': [WirelessChannelChoices.CHANNEL_24G_1, WirelessChannelChoices.CHANNEL_5G_32]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + def test_rf_channel_frequency(self): + params = {'rf_channel_frequency': [2412, 5160]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + def test_rf_channel_width(self): + params = {'rf_channel_width': [22, 20]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + class FrontPortTestCase(TestCase, ChangeLoggedFilterSetTests): queryset = FrontPort.objects.all() diff --git a/netbox/wireless/api/serializers.py b/netbox/wireless/api/serializers.py index e9be35618..12986dcaf 100644 --- a/netbox/wireless/api/serializers.py +++ b/netbox/wireless/api/serializers.py @@ -10,6 +10,7 @@ from wireless.models import * from .nested_serializers import * __all__ = ( + 'WirelessLANGroupSerializer', 'WirelessLANSerializer', 'WirelessLinkSerializer', ) @@ -17,7 +18,7 @@ __all__ = ( class WirelessLANGroupSerializer(NestedGroupModelSerializer): url = serializers.HyperlinkedIdentityField(view_name='wireless-api:wirelesslangroup-detail') - parent = NestedWirelessLANGroupSerializer(required=False, allow_null=True) + parent = NestedWirelessLANGroupSerializer(required=False, allow_null=True, default=None) wirelesslan_count = serializers.IntegerField(read_only=True) class Meta: @@ -30,6 +31,7 @@ class WirelessLANGroupSerializer(NestedGroupModelSerializer): class WirelessLANSerializer(PrimaryModelSerializer): url = serializers.HyperlinkedIdentityField(view_name='wireless-api:wirelesslan-detail') + group = NestedWirelessLANGroupSerializer(required=False, allow_null=True) vlan = NestedVLANSerializer(required=False, allow_null=True) auth_type = ChoiceField(choices=WirelessAuthTypeChoices, required=False, allow_blank=True) auth_cipher = ChoiceField(choices=WirelessAuthCipherChoices, required=False, allow_blank=True) @@ -37,7 +39,7 @@ class WirelessLANSerializer(PrimaryModelSerializer): class Meta: model = WirelessLAN fields = [ - 'id', 'url', 'display', 'ssid', 'description', 'vlan', 'auth_type', 'auth_cipher', 'auth_psk', + 'id', 'url', 'display', 'ssid', 'description', 'group', 'vlan', 'auth_type', 'auth_cipher', 'auth_psk', ] diff --git a/netbox/wireless/filtersets.py b/netbox/wireless/filtersets.py index cc67c1fc3..cffdcf046 100644 --- a/netbox/wireless/filtersets.py +++ b/netbox/wireless/filtersets.py @@ -3,7 +3,9 @@ from django.db.models import Q from dcim.choices import LinkStatusChoices from extras.filters import TagFilter +from ipam.models import VLAN from netbox.filtersets import OrganizationalModelFilterSet, PrimaryModelFilterSet +from utilities.filters import TreeNodeMultipleChoiceFilter from .choices import * from .models import * @@ -34,8 +36,19 @@ class WirelessLANFilterSet(PrimaryModelFilterSet): method='search', label='Search', ) - group_id = django_filters.ModelMultipleChoiceFilter( - queryset=WirelessLANGroup.objects.all() + group_id = TreeNodeMultipleChoiceFilter( + queryset=WirelessLANGroup.objects.all(), + field_name='group', + lookup_expr='in' + ) + group = TreeNodeMultipleChoiceFilter( + queryset=WirelessLANGroup.objects.all(), + field_name='group', + lookup_expr='in', + to_field_name='slug' + ) + vlan_id = django_filters.ModelMultipleChoiceFilter( + queryset=VLAN.objects.all() ) auth_type = django_filters.MultipleChoiceFilter( choices=WirelessAuthTypeChoices diff --git a/netbox/wireless/forms/bulk_import.py b/netbox/wireless/forms/bulk_import.py index e9e9afed6..aa79e1fc7 100644 --- a/netbox/wireless/forms/bulk_import.py +++ b/netbox/wireless/forms/bulk_import.py @@ -36,6 +36,7 @@ class WirelessLANCSVForm(CustomFieldModelCSVForm): ) vlan = CSVModelChoiceField( queryset=VLAN.objects.all(), + required=False, to_field_name='name', help_text='Bridged VLAN' ) diff --git a/netbox/wireless/forms/models.py b/netbox/wireless/forms/models.py index aa453ba64..26bcd2260 100644 --- a/netbox/wireless/forms/models.py +++ b/netbox/wireless/forms/models.py @@ -62,6 +62,7 @@ class WirelessLANForm(BootstrapMixin, CustomFieldModelForm): class WirelessLinkForm(BootstrapMixin, CustomFieldModelForm): device_a = DynamicModelChoiceField( queryset=Device.objects.all(), + required=False, label='Device A', initial_params={ 'interfaces': '$interface_a' @@ -78,6 +79,7 @@ class WirelessLinkForm(BootstrapMixin, CustomFieldModelForm): ) device_b = DynamicModelChoiceField( queryset=Device.objects.all(), + required=False, label='Device B', initial_params={ 'interfaces': '$interface_b' diff --git a/netbox/wireless/graphql/schema.py b/netbox/wireless/graphql/schema.py index 05fc57c4d..cd8fd9f52 100644 --- a/netbox/wireless/graphql/schema.py +++ b/netbox/wireless/graphql/schema.py @@ -5,11 +5,11 @@ from .types import * class WirelessQuery(graphene.ObjectType): - wirelesslan = ObjectField(WirelessLANType) - wirelesslan_list = ObjectListField(WirelessLANType) + wireless_lan = ObjectField(WirelessLANType) + wireless_lan_list = ObjectListField(WirelessLANType) - wirelesslangroup = ObjectField(WirelessLANGroupType) - wirelesslangroup_list = ObjectListField(WirelessLANGroupType) + wireless_lan_group = ObjectField(WirelessLANGroupType) + wireless_lan_group_list = ObjectListField(WirelessLANGroupType) - wirelesslink = ObjectField(WirelessLinkType) - wirelesslink_list = ObjectListField(WirelessLinkType) + wireless_link = ObjectField(WirelessLinkType) + wireless_link_list = ObjectListField(WirelessLinkType) diff --git a/netbox/wireless/graphql/types.py b/netbox/wireless/graphql/types.py index 4697cc44b..be0b2f7aa 100644 --- a/netbox/wireless/graphql/types.py +++ b/netbox/wireless/graphql/types.py @@ -1,5 +1,5 @@ from wireless import filtersets, models -from netbox.graphql.types import ObjectType +from netbox.graphql.types import ObjectType, PrimaryObjectType __all__ = ( 'WirelessLANType', @@ -16,17 +16,29 @@ class WirelessLANGroupType(ObjectType): filterset_class = filtersets.WirelessLANGroupFilterSet -class WirelessLANType(ObjectType): +class WirelessLANType(PrimaryObjectType): class Meta: model = models.WirelessLAN fields = '__all__' filterset_class = filtersets.WirelessLANFilterSet + def resolve_auth_type(self, info): + return self.auth_type or None -class WirelessLinkType(ObjectType): + def resolve_auth_cipher(self, info): + return self.auth_cipher or None + + +class WirelessLinkType(PrimaryObjectType): class Meta: model = models.WirelessLink fields = '__all__' filterset_class = filtersets.WirelessLinkFilterSet + + def resolve_auth_type(self, info): + return self.auth_type or None + + def resolve_auth_cipher(self, info): + return self.auth_cipher or None diff --git a/netbox/wireless/signals.py b/netbox/wireless/signals.py index 935e11677..3b4831a8d 100644 --- a/netbox/wireless/signals.py +++ b/netbox/wireless/signals.py @@ -63,5 +63,4 @@ def nullify_connected_interfaces(instance, **kwargs): # Delete and retrace any dependent cable paths for cablepath in CablePath.objects.filter(path__contains=instance): - print(f'Deleting cable path {cablepath.pk}') cablepath.delete() diff --git a/netbox/wireless/tests/__init__.py b/netbox/wireless/tests/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/netbox/wireless/tests/test_api.py b/netbox/wireless/tests/test_api.py new file mode 100644 index 000000000..917b7b320 --- /dev/null +++ b/netbox/wireless/tests/test_api.py @@ -0,0 +1,141 @@ +from django.urls import reverse + +from wireless.choices import * +from wireless.models import * +from dcim.choices import InterfaceTypeChoices +from dcim.models import Interface +from utilities.testing import APITestCase, APIViewTestCases, create_test_device + + +class AppTest(APITestCase): + + def test_root(self): + url = reverse('wireless-api:api-root') + response = self.client.get('{}?format=api'.format(url), **self.header) + + self.assertEqual(response.status_code, 200) + + +class WirelessLANGroupTest(APIViewTestCases.APIViewTestCase): + model = WirelessLANGroup + brief_fields = ['_depth', 'display', 'id', 'name', 'slug', 'url', 'wirelesslan_count'] + create_data = [ + { + 'name': 'Wireless LAN Group 4', + 'slug': 'wireless-lan-group-4', + }, + { + 'name': 'Wireless LAN Group 5', + 'slug': 'wireless-lan-group-5', + }, + { + 'name': 'Wireless LAN Group 6', + 'slug': 'wireless-lan-group-6', + }, + ] + bulk_update_data = { + 'description': 'New description', + } + + @classmethod + def setUpTestData(cls): + + WirelessLANGroup.objects.create(name='Wireless LAN Group 1', slug='wireless-lan-group-1') + WirelessLANGroup.objects.create(name='Wireless LAN Group 2', slug='wireless-lan-group-2') + WirelessLANGroup.objects.create(name='Wireless LAN Group 3', slug='wireless-lan-group-3') + + +class WirelessLANTest(APIViewTestCases.APIViewTestCase): + model = WirelessLAN + brief_fields = ['display', 'id', 'ssid', 'url'] + + @classmethod + def setUpTestData(cls): + + groups = ( + WirelessLANGroup(name='Group 1', slug='group-1'), + WirelessLANGroup(name='Group 2', slug='group-2'), + WirelessLANGroup(name='Group 3', slug='group-3'), + ) + for group in groups: + group.save() + + wireless_lans = ( + WirelessLAN(ssid='WLAN1'), + WirelessLAN(ssid='WLAN2'), + WirelessLAN(ssid='WLAN3'), + ) + WirelessLAN.objects.bulk_create(wireless_lans) + + cls.create_data = [ + { + 'ssid': 'WLAN4', + 'group': groups[0].pk, + 'auth_type': WirelessAuthTypeChoices.TYPE_OPEN, + }, + { + 'ssid': 'WLAN5', + 'group': groups[1].pk, + 'auth_type': WirelessAuthTypeChoices.TYPE_WPA_PERSONAL, + }, + { + 'ssid': 'WLAN6', + 'auth_type': WirelessAuthTypeChoices.TYPE_WPA_ENTERPRISE, + }, + ] + + cls.bulk_update_data = { + 'group': groups[2].pk, + 'description': 'New description', + 'auth_type': WirelessAuthTypeChoices.TYPE_WPA_PERSONAL, + 'auth_cipher': WirelessAuthCipherChoices.CIPHER_AES, + 'auth_psk': 'abc123def456', + } + + +class WirelessLinkTest(APIViewTestCases.APIViewTestCase): + model = WirelessLink + brief_fields = ['display', 'id', 'ssid', 'url'] + bulk_update_data = { + 'status': 'planned', + } + + @classmethod + def setUpTestData(cls): + device = create_test_device('test-device') + interfaces = [ + Interface( + device=device, + name=f'radio{i}', + type=InterfaceTypeChoices.TYPE_80211AC, + rf_channel=WirelessChannelChoices.CHANNEL_5G_32, + rf_channel_frequency=5160, + rf_channel_width=20 + ) for i in range(12) + ] + Interface.objects.bulk_create(interfaces) + + wireless_links = ( + WirelessLink(ssid='LINK1', interface_a=interfaces[0], interface_b=interfaces[1]), + WirelessLink(ssid='LINK2', interface_a=interfaces[2], interface_b=interfaces[3]), + WirelessLink(ssid='LINK3', interface_a=interfaces[4], interface_b=interfaces[5]), + ) + WirelessLink.objects.bulk_create(wireless_links) + + cls.create_data = [ + { + 'interface_a': interfaces[6].pk, + 'interface_b': interfaces[7].pk, + 'ssid': 'LINK4', + }, + { + 'interface_a': interfaces[8].pk, + 'interface_b': interfaces[9].pk, + 'ssid': 'LINK5', + }, + { + 'interface_a': interfaces[10].pk, + 'interface_b': interfaces[11].pk, + 'ssid': 'LINK6', + }, + ] diff --git a/netbox/wireless/tests/test_filtersets.py b/netbox/wireless/tests/test_filtersets.py new file mode 100644 index 000000000..50f89c4d6 --- /dev/null +++ b/netbox/wireless/tests/test_filtersets.py @@ -0,0 +1,194 @@ +from django.test import TestCase + +from dcim.choices import InterfaceTypeChoices, LinkStatusChoices +from dcim.models import Interface +from ipam.models import VLAN +from wireless.choices import * +from wireless.filtersets import * +from wireless.models import * +from utilities.testing import ChangeLoggedFilterSetTests, create_test_device + + +class WirelessLANGroupTestCase(TestCase, ChangeLoggedFilterSetTests): + queryset = WirelessLANGroup.objects.all() + filterset = WirelessLANGroupFilterSet + + @classmethod + def setUpTestData(cls): + + groups = ( + WirelessLANGroup(name='Wireless LAN Group 1', slug='wireless-lan-group-1', description='A'), + WirelessLANGroup(name='Wireless LAN Group 2', slug='wireless-lan-group-2', description='B'), + WirelessLANGroup(name='Wireless LAN Group 3', slug='wireless-lan-group-3', description='C'), + ) + for group in groups: + group.save() + + child_groups = ( + WirelessLANGroup(name='Wireless LAN Group 1A', slug='wireless-lan-group-1a', parent=groups[0]), + WirelessLANGroup(name='Wireless LAN Group 1B', slug='wireless-lan-group-1b', parent=groups[0]), + WirelessLANGroup(name='Wireless LAN Group 2A', slug='wireless-lan-group-2a', parent=groups[1]), + WirelessLANGroup(name='Wireless LAN Group 2B', slug='wireless-lan-group-2b', parent=groups[1]), + WirelessLANGroup(name='Wireless LAN Group 3A', slug='wireless-lan-group-3a', parent=groups[2]), + WirelessLANGroup(name='Wireless LAN Group 3B', slug='wireless-lan-group-3b', parent=groups[2]), + ) + for group in child_groups: + group.save() + + def test_name(self): + params = {'name': ['Wireless LAN Group 1', 'Wireless LAN Group 2']} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + def test_slug(self): + params = {'slug': ['wireless-lan-group-1', 'wireless-lan-group-2']} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + def test_description(self): + params = {'description': ['A', 'B']} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + def test_parent(self): + parent_groups = WirelessLANGroup.objects.filter(parent__isnull=True)[:2] + params = {'parent_id': [parent_groups[0].pk, parent_groups[1].pk]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4) + params = {'parent': [parent_groups[0].slug, parent_groups[1].slug]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4) + + +class WirelessLANTestCase(TestCase, ChangeLoggedFilterSetTests): + queryset = WirelessLAN.objects.all() + filterset = WirelessLANFilterSet + + @classmethod + def setUpTestData(cls): + + groups = ( + WirelessLANGroup(name='Wireless LAN Group 1', slug='wireless-lan-group-1'), + WirelessLANGroup(name='Wireless LAN Group 2', slug='wireless-lan-group-2'), + WirelessLANGroup(name='Wireless LAN Group 3', slug='wireless-lan-group-3'), + ) + for group in groups: + group.save() + + vlans = ( + VLAN(name='VLAN1', vid=1), + VLAN(name='VLAN2', vid=2), + VLAN(name='VLAN3', vid=3), + ) + VLAN.objects.bulk_create(vlans) + + wireless_lans = ( + WirelessLAN(ssid='WLAN1', group=groups[0], vlan=vlans[0], auth_type=WirelessAuthTypeChoices.TYPE_OPEN, auth_cipher=WirelessAuthCipherChoices.CIPHER_AUTO, auth_psk='PSK1'), + WirelessLAN(ssid='WLAN2', group=groups[1], vlan=vlans[1], auth_type=WirelessAuthTypeChoices.TYPE_WEP, auth_cipher=WirelessAuthCipherChoices.CIPHER_TKIP, auth_psk='PSK2'), + WirelessLAN(ssid='WLAN3', group=groups[2], vlan=vlans[2], auth_type=WirelessAuthTypeChoices.TYPE_WPA_PERSONAL, auth_cipher=WirelessAuthCipherChoices.CIPHER_AES, auth_psk='PSK3'), + ) + WirelessLAN.objects.bulk_create(wireless_lans) + + def test_ssid(self): + params = {'ssid': ['WLAN1', 'WLAN2']} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + def test_group(self): + groups = WirelessLANGroup.objects.all()[:2] + params = {'group_id': [groups[0].pk, groups[1].pk]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + params = {'group': [groups[0].slug, groups[1].slug]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + def test_vlan(self): + vlans = VLAN.objects.all()[:2] + params = {'vlan_id': [vlans[0].pk, vlans[1].pk]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + def test_auth_type(self): + params = {'auth_type': [WirelessAuthTypeChoices.TYPE_OPEN, WirelessAuthTypeChoices.TYPE_WEP]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + def test_auth_cipher(self): + params = {'auth_cipher': [WirelessAuthCipherChoices.CIPHER_AUTO, WirelessAuthCipherChoices.CIPHER_TKIP]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + def test_auth_psk(self): + params = {'auth_psk': ['PSK1', 'PSK2']} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + +class WirelessLinkTestCase(TestCase, ChangeLoggedFilterSetTests): + queryset = WirelessLink.objects.all() + filterset = WirelessLinkFilterSet + + @classmethod + def setUpTestData(cls): + + devices = ( + create_test_device('device1'), + create_test_device('device2'), + create_test_device('device3'), + create_test_device('device4'), + ) + + interfaces = ( + Interface(device=devices[0], name='Interface 1', type=InterfaceTypeChoices.TYPE_80211AC), + Interface(device=devices[0], name='Interface 2', type=InterfaceTypeChoices.TYPE_80211AC), + Interface(device=devices[1], name='Interface 3', type=InterfaceTypeChoices.TYPE_80211AC), + Interface(device=devices[1], name='Interface 4', type=InterfaceTypeChoices.TYPE_80211AC), + Interface(device=devices[2], name='Interface 5', type=InterfaceTypeChoices.TYPE_80211AC), + Interface(device=devices[2], name='Interface 6', type=InterfaceTypeChoices.TYPE_80211AC), + Interface(device=devices[3], name='Interface 7', type=InterfaceTypeChoices.TYPE_80211AC), + Interface(device=devices[3], name='Interface 8', type=InterfaceTypeChoices.TYPE_80211AC), + ) + Interface.objects.bulk_create(interfaces) + + # Wireless links + WirelessLink( + interface_a=interfaces[0], + interface_b=interfaces[2], + ssid='LINK1', + status=LinkStatusChoices.STATUS_CONNECTED, + auth_type=WirelessAuthTypeChoices.TYPE_OPEN, + auth_cipher=WirelessAuthCipherChoices.CIPHER_AUTO, + auth_psk='PSK1' + ).save() + WirelessLink( + interface_a=interfaces[1], + interface_b=interfaces[3], + ssid='LINK2', + status=LinkStatusChoices.STATUS_PLANNED, + auth_type=WirelessAuthTypeChoices.TYPE_WEP, + auth_cipher=WirelessAuthCipherChoices.CIPHER_TKIP, + auth_psk='PSK2' + ).save() + WirelessLink( + interface_a=interfaces[4], + interface_b=interfaces[6], + ssid='LINK3', + status=LinkStatusChoices.STATUS_DECOMMISSIONING, + auth_type=WirelessAuthTypeChoices.TYPE_WPA_PERSONAL, + auth_cipher=WirelessAuthCipherChoices.CIPHER_AES, + auth_psk='PSK3' + ).save() + WirelessLink( + interface_a=interfaces[5], + interface_b=interfaces[7], + ssid='LINK4' + ).save() + + def test_ssid(self): + params = {'ssid': ['LINK1', 'LINK2']} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + def test_status(self): + params = {'status': [LinkStatusChoices.STATUS_PLANNED, LinkStatusChoices.STATUS_DECOMMISSIONING]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + def test_auth_type(self): + params = {'auth_type': [WirelessAuthTypeChoices.TYPE_OPEN, WirelessAuthTypeChoices.TYPE_WEP]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + def test_auth_cipher(self): + params = {'auth_cipher': [WirelessAuthCipherChoices.CIPHER_AUTO, WirelessAuthCipherChoices.CIPHER_TKIP]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + def test_auth_psk(self): + params = {'auth_psk': ['PSK1', 'PSK2']} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) diff --git a/netbox/wireless/tests/test_views.py b/netbox/wireless/tests/test_views.py new file mode 100644 index 000000000..d4422e7e3 --- /dev/null +++ b/netbox/wireless/tests/test_views.py @@ -0,0 +1,120 @@ +from wireless.choices import * +from wireless.models import * +from dcim.choices import InterfaceTypeChoices, LinkStatusChoices +from dcim.models import Interface +from utilities.testing import ViewTestCases, create_tags, create_test_device + + +class WirelessLANGroupTestCase(ViewTestCases.OrganizationalObjectViewTestCase): + model = WirelessLANGroup + + @classmethod + def setUpTestData(cls): + + groups = ( + WirelessLANGroup(name='Wireless LAN Group 1', slug='wireless-lan-group-1'), + WirelessLANGroup(name='Wireless LAN Group 2', slug='wireless-lan-group-2'), + WirelessLANGroup(name='Wireless LAN Group 3', slug='wireless-lan-group-3'), + ) + for group in groups: + group.save() + + cls.form_data = { + 'name': 'Wireless LAN Group X', + 'slug': 'wireless-lan-group-x', + 'parent': groups[2].pk, + 'description': 'A new wireless LAN group', + } + + cls.csv_data = ( + "name,slug,description", + "Wireles sLAN Group 4,wireless-lan-group-4,Fourth wireless LAN group", + "Wireless LAN Group 5,wireless-lan-group-5,Fifth wireless LAN group", + "Wireless LAN Group 6,wireless-lan-group-6,Sixth wireless LAN group", + ) + + cls.bulk_edit_data = { + 'description': 'New description', + } + + +class WirelessLANTestCase(ViewTestCases.PrimaryObjectViewTestCase): + model = WirelessLAN + + @classmethod + def setUpTestData(cls): + + groups = ( + WirelessLANGroup(name='Wireless LAN Group 1', slug='wireless-lan-group-1'), + WirelessLANGroup(name='Wireless LAN Group 2', slug='wireless-lan-group-2'), + ) + for group in groups: + group.save() + + WirelessLAN.objects.bulk_create([ + WirelessLAN(group=groups[0], ssid='WLAN1'), + WirelessLAN(group=groups[0], ssid='WLAN2'), + WirelessLAN(group=groups[0], ssid='WLAN3'), + ]) + + tags = create_tags('Alpha', 'Bravo', 'Charlie') + + cls.form_data = { + 'ssid': 'WLAN2', + 'group': groups[1].pk, + 'tags': [t.pk for t in tags], + } + + cls.csv_data = ( + "group,ssid", + "Wireless LAN Group 2,WLAN4", + "Wireless LAN Group 2,WLAN5", + "Wireless LAN Group 2,WLAN6", + ) + + cls.bulk_edit_data = { + 'description': 'New description', + } + + +class WirelessLinkTestCase(ViewTestCases.PrimaryObjectViewTestCase): + model = WirelessLink + + @classmethod + def setUpTestData(cls): + device = create_test_device('test-device') + interfaces = [ + Interface( + device=device, + name=f'radio{i}', + type=InterfaceTypeChoices.TYPE_80211AC, + rf_channel=WirelessChannelChoices.CHANNEL_5G_32, + rf_channel_frequency=5160, + rf_channel_width=20 + ) for i in range(12) + ] + Interface.objects.bulk_create(interfaces) + + WirelessLink(interface_a=interfaces[0], interface_b=interfaces[1], ssid='LINK1').save() + WirelessLink(interface_a=interfaces[2], interface_b=interfaces[3], ssid='LINK2').save() + WirelessLink(interface_a=interfaces[4], interface_b=interfaces[5], ssid='LINK3').save() + + tags = create_tags('Alpha', 'Bravo', 'Charlie') + + cls.form_data = { + 'interface_a': interfaces[6].pk, + 'interface_b': interfaces[7].pk, + 'status': LinkStatusChoices.STATUS_PLANNED, + 'tags': [t.pk for t in tags], + } + + cls.csv_data = ( + "interface_a,interface_b,status", + f"{interfaces[6].pk},{interfaces[7].pk},connected", + f"{interfaces[8].pk},{interfaces[9].pk},connected", + f"{interfaces[10].pk},{interfaces[11].pk},connected", + ) + + cls.bulk_edit_data = { + 'status': LinkStatusChoices.STATUS_PLANNED, + } From 7b70129974213a03aa53e8a9219007677a99d9b3 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Wed, 20 Oct 2021 14:22:11 -0400 Subject: [PATCH 047/289] Refactor device component views --- netbox/dcim/views.py | 224 ++++++++++--------------------------------- 1 file changed, 53 insertions(+), 171 deletions(-) diff --git a/netbox/dcim/views.py b/netbox/dcim/views.py index 16f88b9c3..9b48e0bd3 100644 --- a/netbox/dcim/views.py +++ b/netbox/dcim/views.py @@ -36,6 +36,29 @@ from .models import ( ) +class DeviceComponentsView(generic.ObjectView): + queryset = Device.objects.all() + model = None + table = None + + def get_components(self, request, instance): + return self.model.objects.restrict(request.user, 'view').filter(device=instance) + + def get_extra_context(self, request, instance): + components = self.get_components(request, instance) + table = self.table(data=components, user=request.user) + change_perm = f'{self.model._meta.app_label}.change_{self.model._meta.model_name}' + delete_perm = f'{self.model._meta.app_label}.delete_{self.model._meta.model_name}' + if request.user.has_perm(change_perm) or request.user.has_perm(delete_perm): + table.columns.show('pk') + paginate_table(table, request) + + return { + f'{self.model._meta.model_name}_table': table, + 'active_tab': f"{self.model._meta.verbose_name_plural.replace(' ', '-')}", + } + + class BulkDisconnectView(GetReturnURLMixin, ObjectPermissionRequiredMixin, View): """ An extendable view for disconnection console/power/interface components in bulk. @@ -1306,206 +1329,65 @@ class DeviceView(generic.ObjectView): } -class DeviceConsolePortsView(generic.ObjectView): - queryset = Device.objects.all() +class DeviceConsolePortsView(DeviceComponentsView): + model = ConsolePort + table = tables.DeviceConsolePortTable template_name = 'dcim/device/consoleports.html' - def get_extra_context(self, request, instance): - consoleports = ConsolePort.objects.restrict(request.user, 'view').filter(device=instance).prefetch_related( - 'cable', '_path__destination', - ) - consoleport_table = tables.DeviceConsolePortTable( - data=consoleports, - user=request.user - ) - if request.user.has_perm('dcim.change_consoleport') or request.user.has_perm('dcim.delete_consoleport'): - consoleport_table.columns.show('pk') - paginate_table(consoleport_table, request) - return { - 'consoleport_table': consoleport_table, - 'active_tab': 'console-ports', - } - - -class DeviceConsoleServerPortsView(generic.ObjectView): - queryset = Device.objects.all() +class DeviceConsoleServerPortsView(DeviceComponentsView): + model = ConsoleServerPort + table = tables.DeviceConsoleServerPortTable template_name = 'dcim/device/consoleserverports.html' - def get_extra_context(self, request, instance): - consoleserverports = ConsoleServerPort.objects.restrict(request.user, 'view').filter( - device=instance - ).prefetch_related( - 'cable', '_path__destination', - ) - consoleserverport_table = tables.DeviceConsoleServerPortTable( - data=consoleserverports, - user=request.user - ) - if request.user.has_perm('dcim.change_consoleserverport') or \ - request.user.has_perm('dcim.delete_consoleserverport'): - consoleserverport_table.columns.show('pk') - paginate_table(consoleserverport_table, request) - return { - 'consoleserverport_table': consoleserverport_table, - 'active_tab': 'console-server-ports', - } - - -class DevicePowerPortsView(generic.ObjectView): - queryset = Device.objects.all() +class DevicePowerPortsView(DeviceComponentsView): + model = PowerPort + table = tables.DevicePowerPortTable template_name = 'dcim/device/powerports.html' - def get_extra_context(self, request, instance): - powerports = PowerPort.objects.restrict(request.user, 'view').filter(device=instance).prefetch_related( - 'cable', '_path__destination', - ) - powerport_table = tables.DevicePowerPortTable( - data=powerports, - user=request.user - ) - if request.user.has_perm('dcim.change_powerport') or request.user.has_perm('dcim.delete_powerport'): - powerport_table.columns.show('pk') - paginate_table(powerport_table, request) - return { - 'powerport_table': powerport_table, - 'active_tab': 'power-ports', - } - - -class DevicePowerOutletsView(generic.ObjectView): - queryset = Device.objects.all() +class DevicePowerOutletsView(DeviceComponentsView): + model = PowerOutlet + table = tables.DevicePowerOutletTable template_name = 'dcim/device/poweroutlets.html' - def get_extra_context(self, request, instance): - poweroutlets = PowerOutlet.objects.restrict(request.user, 'view').filter(device=instance).prefetch_related( - 'cable', 'power_port', '_path__destination', - ) - poweroutlet_table = tables.DevicePowerOutletTable( - data=poweroutlets, - user=request.user - ) - if request.user.has_perm('dcim.change_poweroutlet') or request.user.has_perm('dcim.delete_poweroutlet'): - poweroutlet_table.columns.show('pk') - paginate_table(poweroutlet_table, request) - return { - 'poweroutlet_table': poweroutlet_table, - 'active_tab': 'power-outlets', - } - - -class DeviceInterfacesView(generic.ObjectView): - queryset = Device.objects.all() +class DeviceInterfacesView(DeviceComponentsView): + model = Interface + table = tables.DeviceInterfaceTable template_name = 'dcim/device/interfaces.html' - def get_extra_context(self, request, instance): - interfaces = instance.vc_interfaces().restrict(request.user, 'view').prefetch_related( + def get_components(self, request, instance): + return instance.vc_interfaces().restrict(request.user, 'view').prefetch_related( Prefetch('ip_addresses', queryset=IPAddress.objects.restrict(request.user)), - Prefetch('member_interfaces', queryset=Interface.objects.restrict(request.user)), - 'lag', 'cable', '_path__destination', 'tags', + Prefetch('member_interfaces', queryset=Interface.objects.restrict(request.user)) ) - interface_table = tables.DeviceInterfaceTable( - data=interfaces, - user=request.user - ) - if request.user.has_perm('dcim.change_interface') or request.user.has_perm('dcim.delete_interface'): - interface_table.columns.show('pk') - paginate_table(interface_table, request) - - return { - 'interface_table': interface_table, - 'active_tab': 'interfaces', - } -class DeviceFrontPortsView(generic.ObjectView): - queryset = Device.objects.all() +class DeviceFrontPortsView(DeviceComponentsView): + model = FrontPort + table = tables.DeviceFrontPortTable template_name = 'dcim/device/frontports.html' - def get_extra_context(self, request, instance): - frontports = FrontPort.objects.restrict(request.user, 'view').filter(device=instance).prefetch_related( - 'rear_port', 'cable', - ) - frontport_table = tables.DeviceFrontPortTable( - data=frontports, - user=request.user - ) - if request.user.has_perm('dcim.change_frontport') or request.user.has_perm('dcim.delete_frontport'): - frontport_table.columns.show('pk') - paginate_table(frontport_table, request) - return { - 'frontport_table': frontport_table, - 'active_tab': 'front-ports', - } - - -class DeviceRearPortsView(generic.ObjectView): - queryset = Device.objects.all() +class DeviceRearPortsView(DeviceComponentsView): + model = RearPort + table = tables.DeviceRearPortTable template_name = 'dcim/device/rearports.html' - def get_extra_context(self, request, instance): - rearports = RearPort.objects.restrict(request.user, 'view').filter(device=instance).prefetch_related('cable') - rearport_table = tables.DeviceRearPortTable( - data=rearports, - user=request.user - ) - if request.user.has_perm('dcim.change_rearport') or request.user.has_perm('dcim.delete_rearport'): - rearport_table.columns.show('pk') - paginate_table(rearport_table, request) - return { - 'rearport_table': rearport_table, - 'active_tab': 'rear-ports', - } - - -class DeviceDeviceBaysView(generic.ObjectView): - queryset = Device.objects.all() +class DeviceDeviceBaysView(DeviceComponentsView): + model = DeviceBay + table = tables.DeviceDeviceBayTable template_name = 'dcim/device/devicebays.html' - def get_extra_context(self, request, instance): - devicebays = DeviceBay.objects.restrict(request.user, 'view').filter(device=instance).prefetch_related( - 'installed_device__device_type__manufacturer', - ) - devicebay_table = tables.DeviceDeviceBayTable( - data=devicebays, - user=request.user - ) - if request.user.has_perm('dcim.change_devicebay') or request.user.has_perm('dcim.delete_devicebay'): - devicebay_table.columns.show('pk') - paginate_table(devicebay_table, request) - return { - 'devicebay_table': devicebay_table, - 'active_tab': 'device-bays', - } - - -class DeviceInventoryView(generic.ObjectView): - queryset = Device.objects.all() +class DeviceInventoryView(DeviceComponentsView): + model = InventoryItem + table = tables.DeviceInventoryItemTable template_name = 'dcim/device/inventory.html' - def get_extra_context(self, request, instance): - inventoryitems = InventoryItem.objects.restrict(request.user, 'view').filter( - device=instance - ).prefetch_related('manufacturer') - inventoryitem_table = tables.DeviceInventoryItemTable( - data=inventoryitems, - user=request.user - ) - if request.user.has_perm('dcim.change_inventoryitem') or request.user.has_perm('dcim.delete_inventoryitem'): - inventoryitem_table.columns.show('pk') - paginate_table(inventoryitem_table, request) - - return { - 'inventoryitem_table': inventoryitem_table, - 'active_tab': 'inventory', - } - class DeviceStatusView(generic.ObjectView): additional_permissions = ['dcim.napalm_read_device'] From 8c058dcd45004362ef69b2f3b0393ed408d4dbf2 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Wed, 20 Oct 2021 15:04:40 -0400 Subject: [PATCH 048/289] Closes #7530: Move device type component lists to separate views --- docs/release-notes/version-3.1.md | 1 + netbox/dcim/tests/test_views.py | 110 ++++++++++++++++ netbox/dcim/urls.py | 8 ++ netbox/dcim/views.py | 102 ++++++++------- .../templates/dcim/device/consoleports.html | 6 +- .../dcim/device/consoleserverports.html | 6 +- netbox/templates/dcim/device/devicebays.html | 6 +- netbox/templates/dcim/device/frontports.html | 6 +- netbox/templates/dcim/device/interfaces.html | 6 +- netbox/templates/dcim/device/inventory.html | 6 +- .../templates/dcim/device/poweroutlets.html | 6 +- netbox/templates/dcim/device/powerports.html | 6 +- netbox/templates/dcim/device/rearports.html | 6 +- netbox/templates/dcim/devicetype.html | 117 +---------------- netbox/templates/dcim/devicetype/base.html | 119 ++++++++++++++++++ .../component_templates.html} | 11 +- .../dcim/inc/device_component_table.html | 42 ------- 17 files changed, 323 insertions(+), 241 deletions(-) create mode 100644 netbox/templates/dcim/devicetype/base.html rename netbox/templates/dcim/{inc/devicetype_component_table.html => devicetype/component_templates.html} (93%) delete mode 100644 netbox/templates/dcim/inc/device_component_table.html diff --git a/docs/release-notes/version-3.1.md b/docs/release-notes/version-3.1.md index abf9c7d25..291831500 100644 --- a/docs/release-notes/version-3.1.md +++ b/docs/release-notes/version-3.1.md @@ -24,6 +24,7 @@ When assigning a contact to an object, the user must select a predefined role (e * [#6715](https://github.com/netbox-community/netbox/issues/6715) - Add tenant assignment for cables * [#6874](https://github.com/netbox-community/netbox/issues/6874) - Add tenant assignment for locations * [#7354](https://github.com/netbox-community/netbox/issues/7354) - Relax uniqueness constraints on region, site group, and location names +* [#7530](https://github.com/netbox-community/netbox/issues/7530) - Move device type component lists to separate views ### Other Changes diff --git a/netbox/dcim/tests/test_views.py b/netbox/dcim/tests/test_views.py index 545a56f81..a9c191679 100644 --- a/netbox/dcim/tests/test_views.py +++ b/netbox/dcim/tests/test_views.py @@ -435,6 +435,116 @@ class DeviceTypeTestCase( 'is_full_depth': False, } + @override_settings(EXEMPT_VIEW_PERMISSIONS=['*']) + def test_devicetype_consoleports(self): + devicetype = DeviceType.objects.first() + console_ports = ( + ConsolePortTemplate(device_type=devicetype, name='Console Port 1'), + ConsolePortTemplate(device_type=devicetype, name='Console Port 2'), + ConsolePortTemplate(device_type=devicetype, name='Console Port 3'), + ) + ConsolePortTemplate.objects.bulk_create(console_ports) + + url = reverse('dcim:devicetype_consoleports', kwargs={'pk': devicetype.pk}) + self.assertHttpStatus(self.client.get(url), 200) + + @override_settings(EXEMPT_VIEW_PERMISSIONS=['*']) + def test_devicetype_consoleserverports(self): + devicetype = DeviceType.objects.first() + console_server_ports = ( + ConsoleServerPortTemplate(device_type=devicetype, name='Console Server Port 1'), + ConsoleServerPortTemplate(device_type=devicetype, name='Console Server Port 2'), + ConsoleServerPortTemplate(device_type=devicetype, name='Console Server Port 3'), + ) + ConsoleServerPortTemplate.objects.bulk_create(console_server_ports) + + url = reverse('dcim:devicetype_consoleserverports', kwargs={'pk': devicetype.pk}) + self.assertHttpStatus(self.client.get(url), 200) + + @override_settings(EXEMPT_VIEW_PERMISSIONS=['*']) + def test_devicetype_powerports(self): + devicetype = DeviceType.objects.first() + power_ports = ( + PowerPortTemplate(device_type=devicetype, name='Power Port 1'), + PowerPortTemplate(device_type=devicetype, name='Power Port 2'), + PowerPortTemplate(device_type=devicetype, name='Power Port 3'), + ) + PowerPortTemplate.objects.bulk_create(power_ports) + + url = reverse('dcim:devicetype_powerports', kwargs={'pk': devicetype.pk}) + self.assertHttpStatus(self.client.get(url), 200) + + @override_settings(EXEMPT_VIEW_PERMISSIONS=['*']) + def test_devicetype_poweroutlets(self): + devicetype = DeviceType.objects.first() + power_outlets = ( + PowerOutletTemplate(device_type=devicetype, name='Power Outlet 1'), + PowerOutletTemplate(device_type=devicetype, name='Power Outlet 2'), + PowerOutletTemplate(device_type=devicetype, name='Power Outlet 3'), + ) + PowerOutletTemplate.objects.bulk_create(power_outlets) + + url = reverse('dcim:devicetype_poweroutlets', kwargs={'pk': devicetype.pk}) + self.assertHttpStatus(self.client.get(url), 200) + + @override_settings(EXEMPT_VIEW_PERMISSIONS=['*']) + def test_devicetype_interfaces(self): + devicetype = DeviceType.objects.first() + interfaces = ( + InterfaceTemplate(device_type=devicetype, name='Interface 1'), + InterfaceTemplate(device_type=devicetype, name='Interface 2'), + InterfaceTemplate(device_type=devicetype, name='Interface 3'), + ) + InterfaceTemplate.objects.bulk_create(interfaces) + + url = reverse('dcim:devicetype_interfaces', kwargs={'pk': devicetype.pk}) + self.assertHttpStatus(self.client.get(url), 200) + + @override_settings(EXEMPT_VIEW_PERMISSIONS=['*']) + def test_devicetype_rearports(self): + devicetype = DeviceType.objects.first() + rear_ports = ( + RearPortTemplate(device_type=devicetype, name='Rear Port 1'), + RearPortTemplate(device_type=devicetype, name='Rear Port 2'), + RearPortTemplate(device_type=devicetype, name='Rear Port 3'), + ) + RearPortTemplate.objects.bulk_create(rear_ports) + + url = reverse('dcim:devicetype_rearports', kwargs={'pk': devicetype.pk}) + self.assertHttpStatus(self.client.get(url), 200) + + @override_settings(EXEMPT_VIEW_PERMISSIONS=['*']) + def test_devicetype_frontports(self): + devicetype = DeviceType.objects.first() + rear_ports = ( + RearPortTemplate(device_type=devicetype, name='Rear Port 1'), + RearPortTemplate(device_type=devicetype, name='Rear Port 2'), + RearPortTemplate(device_type=devicetype, name='Rear Port 3'), + ) + RearPortTemplate.objects.bulk_create(rear_ports) + front_ports = ( + FrontPortTemplate(device_type=devicetype, name='Front Port 1', rear_port=rear_ports[0], rear_port_position=1), + FrontPortTemplate(device_type=devicetype, name='Front Port 2', rear_port=rear_ports[1], rear_port_position=1), + FrontPortTemplate(device_type=devicetype, name='Front Port 3', rear_port=rear_ports[2], rear_port_position=1), + ) + FrontPortTemplate.objects.bulk_create(front_ports) + + url = reverse('dcim:devicetype_frontports', kwargs={'pk': devicetype.pk}) + self.assertHttpStatus(self.client.get(url), 200) + + @override_settings(EXEMPT_VIEW_PERMISSIONS=['*']) + def test_devicetype_devicebays(self): + devicetype = DeviceType.objects.first() + device_bays = ( + DeviceBayTemplate(device_type=devicetype, name='Device Bay 1'), + DeviceBayTemplate(device_type=devicetype, name='Device Bay 2'), + DeviceBayTemplate(device_type=devicetype, name='Device Bay 3'), + ) + DeviceBayTemplate.objects.bulk_create(device_bays) + + url = reverse('dcim:devicetype_devicebays', kwargs={'pk': devicetype.pk}) + self.assertHttpStatus(self.client.get(url), 200) + @override_settings(EXEMPT_VIEW_PERMISSIONS=['*']) def test_import_objects(self): """ diff --git a/netbox/dcim/urls.py b/netbox/dcim/urls.py index 01e470e5c..dd81ca2ba 100644 --- a/netbox/dcim/urls.py +++ b/netbox/dcim/urls.py @@ -109,6 +109,14 @@ urlpatterns = [ path('device-types/edit/', views.DeviceTypeBulkEditView.as_view(), name='devicetype_bulk_edit'), path('device-types/delete/', views.DeviceTypeBulkDeleteView.as_view(), name='devicetype_bulk_delete'), path('device-types//', views.DeviceTypeView.as_view(), name='devicetype'), + path('device-types//console-ports/', views.DeviceTypeConsolePortsView.as_view(), name='devicetype_consoleports'), + path('device-types//console-server-ports/', views.DeviceTypeConsoleServerPortsView.as_view(), name='devicetype_consoleserverports'), + path('device-types//power-ports/', views.DeviceTypePowerPortsView.as_view(), name='devicetype_powerports'), + path('device-types//power-outlets/', views.DeviceTypePowerOutletsView.as_view(), name='devicetype_poweroutlets'), + path('device-types//interfaces/', views.DeviceTypeInterfacesView.as_view(), name='devicetype_interfaces'), + path('device-types//front-ports/', views.DeviceTypeFrontPortsView.as_view(), name='devicetype_frontports'), + path('device-types//rear-ports/', views.DeviceTypeRearPortsView.as_view(), name='devicetype_rearports'), + path('device-types//device-bays/', views.DeviceTypeDeviceBaysView.as_view(), name='devicetype_devicebays'), path('device-types//edit/', views.DeviceTypeEditView.as_view(), name='devicetype_edit'), path('device-types//delete/', views.DeviceTypeDeleteView.as_view(), name='devicetype_delete'), path('device-types//changelog/', ObjectChangeLogView.as_view(), name='devicetype_changelog', kwargs={'model': DeviceType}), diff --git a/netbox/dcim/views.py b/netbox/dcim/views.py index 9b48e0bd3..5079e01a5 100644 --- a/netbox/dcim/views.py +++ b/netbox/dcim/views.py @@ -54,11 +54,19 @@ class DeviceComponentsView(generic.ObjectView): paginate_table(table, request) return { - f'{self.model._meta.model_name}_table': table, + 'table': table, 'active_tab': f"{self.model._meta.verbose_name_plural.replace(' ', '-')}", } +class DeviceTypeComponentsView(DeviceComponentsView): + queryset = DeviceType.objects.all() + template_name = 'dcim/devicetype/component_templates.html' + + def get_components(self, request, instance): + return self.model.objects.restrict(request.user, 'view').filter(device_type=instance) + + class BulkDisconnectView(GetReturnURLMixin, ObjectPermissionRequiredMixin, View): """ An extendable view for disconnection console/power/interface components in bulk. @@ -782,62 +790,52 @@ class DeviceTypeView(generic.ObjectView): def get_extra_context(self, request, instance): instance_count = Device.objects.restrict(request.user).filter(device_type=instance).count() - # Component tables - consoleport_table = tables.ConsolePortTemplateTable( - ConsolePortTemplate.objects.restrict(request.user, 'view').filter(device_type=instance), - orderable=False - ) - consoleserverport_table = tables.ConsoleServerPortTemplateTable( - ConsoleServerPortTemplate.objects.restrict(request.user, 'view').filter(device_type=instance), - orderable=False - ) - powerport_table = tables.PowerPortTemplateTable( - PowerPortTemplate.objects.restrict(request.user, 'view').filter(device_type=instance), - orderable=False - ) - poweroutlet_table = tables.PowerOutletTemplateTable( - PowerOutletTemplate.objects.restrict(request.user, 'view').filter(device_type=instance), - orderable=False - ) - interface_table = tables.InterfaceTemplateTable( - list(InterfaceTemplate.objects.restrict(request.user, 'view').filter(device_type=instance)), - orderable=False - ) - front_port_table = tables.FrontPortTemplateTable( - FrontPortTemplate.objects.restrict(request.user, 'view').filter(device_type=instance), - orderable=False - ) - rear_port_table = tables.RearPortTemplateTable( - RearPortTemplate.objects.restrict(request.user, 'view').filter(device_type=instance), - orderable=False - ) - devicebay_table = tables.DeviceBayTemplateTable( - DeviceBayTemplate.objects.restrict(request.user, 'view').filter(device_type=instance), - orderable=False - ) - if request.user.has_perm('dcim.change_devicetype'): - consoleport_table.columns.show('pk') - consoleserverport_table.columns.show('pk') - powerport_table.columns.show('pk') - poweroutlet_table.columns.show('pk') - interface_table.columns.show('pk') - front_port_table.columns.show('pk') - rear_port_table.columns.show('pk') - devicebay_table.columns.show('pk') - return { 'instance_count': instance_count, - 'consoleport_table': consoleport_table, - 'consoleserverport_table': consoleserverport_table, - 'powerport_table': powerport_table, - 'poweroutlet_table': poweroutlet_table, - 'interface_table': interface_table, - 'front_port_table': front_port_table, - 'rear_port_table': rear_port_table, - 'devicebay_table': devicebay_table, + 'active_tab': 'devicetype', } +class DeviceTypeConsolePortsView(DeviceTypeComponentsView): + model = ConsolePortTemplate + table = tables.ConsolePortTemplateTable + + +class DeviceTypeConsoleServerPortsView(DeviceTypeComponentsView): + model = ConsoleServerPortTemplate + table = tables.ConsoleServerPortTemplateTable + + +class DeviceTypePowerPortsView(DeviceTypeComponentsView): + model = PowerPortTemplate + table = tables.PowerPortTemplateTable + + +class DeviceTypePowerOutletsView(DeviceTypeComponentsView): + model = PowerOutletTemplate + table = tables.PowerOutletTemplateTable + + +class DeviceTypeInterfacesView(DeviceTypeComponentsView): + model = InterfaceTemplate + table = tables.InterfaceTemplateTable + + +class DeviceTypeFrontPortsView(DeviceTypeComponentsView): + model = FrontPortTemplate + table = tables.FrontPortTemplateTable + + +class DeviceTypeRearPortsView(DeviceTypeComponentsView): + model = RearPortTemplate + table = tables.RearPortTemplateTable + + +class DeviceTypeDeviceBaysView(DeviceTypeComponentsView): + model = DeviceBayTemplate + table = tables.DeviceBayTemplateTable + + class DeviceTypeEditView(generic.ObjectEditView): queryset = DeviceType.objects.all() model_form = forms.DeviceTypeForm diff --git a/netbox/templates/dcim/device/consoleports.html b/netbox/templates/dcim/device/consoleports.html index 4a7bab4d4..6cf736523 100644 --- a/netbox/templates/dcim/device/consoleports.html +++ b/netbox/templates/dcim/device/consoleports.html @@ -7,7 +7,7 @@
{% csrf_token %} {% include 'inc/table_controls.html' with table_modal="DeviceConsolePortTable_config" %} - {% render_table consoleport_table 'inc/table.html' %} + {% render_table table 'inc/table.html' %}
{% if perms.dcim.change_consoleport %} @@ -36,6 +36,6 @@ {% endif %}
- {% include 'inc/paginator.html' with paginator=consoleport_table.paginator page=consoleport_table.page %} - {% table_config_form consoleport_table %} + {% include 'inc/paginator.html' with paginator=table.paginator page=table.page %} + {% table_config_form table %} {% endblock %} diff --git a/netbox/templates/dcim/device/consoleserverports.html b/netbox/templates/dcim/device/consoleserverports.html index 4e97039f3..ca159029e 100644 --- a/netbox/templates/dcim/device/consoleserverports.html +++ b/netbox/templates/dcim/device/consoleserverports.html @@ -7,7 +7,7 @@
{% csrf_token %} {% include 'inc/table_controls.html' with table_modal="DeviceConsoleServerPortTable_config" %} - {% render_table consoleserverport_table 'inc/table.html' %} + {% render_table table 'inc/table.html' %}
{% if perms.dcim.change_consoleserverport %} @@ -36,6 +36,6 @@ {% endif %}
- {% include 'inc/paginator.html' with paginator=consoleserverport_table.paginator page=consoleserverport_table.page %} - {% table_config_form consoleserverport_table %} + {% include 'inc/paginator.html' with paginator=table.paginator page=table.page %} + {% table_config_form table %} {% endblock %} diff --git a/netbox/templates/dcim/device/devicebays.html b/netbox/templates/dcim/device/devicebays.html index 31ea9b249..b72625005 100644 --- a/netbox/templates/dcim/device/devicebays.html +++ b/netbox/templates/dcim/device/devicebays.html @@ -7,7 +7,7 @@
{% csrf_token %} {% include 'inc/table_controls.html' with table_modal="DeviceDeviceBayTable_config" %} - {% render_table devicebay_table 'inc/table.html' %} + {% render_table table 'inc/table.html' %}
{% if perms.dcim.change_devicebay %} @@ -33,6 +33,6 @@ {% endif %}
- {% include 'inc/paginator.html' with paginator=devicebay_table.paginator page=devicebay_table.page %} - {% table_config_form devicebay_table %} + {% include 'inc/paginator.html' with paginator=table.paginator page=table.page %} + {% table_config_form table %} {% endblock %} diff --git a/netbox/templates/dcim/device/frontports.html b/netbox/templates/dcim/device/frontports.html index 4d15dde1b..5833a1c78 100644 --- a/netbox/templates/dcim/device/frontports.html +++ b/netbox/templates/dcim/device/frontports.html @@ -7,7 +7,7 @@
{% csrf_token %} {% include 'inc/table_controls.html' with table_modal="DeviceFrontPortTable_config" %} - {% render_table frontport_table 'inc/table.html' %} + {% render_table table 'inc/table.html' %}
{% if perms.dcim.change_frontport %} @@ -36,6 +36,6 @@ {% endif %}
- {% include 'inc/paginator.html' with paginator=frontport_table.paginator page=frontport_table.page %} - {% table_config_form frontport_table %} + {% include 'inc/paginator.html' with paginator=table.paginator page=table.page %} + {% table_config_form table %} {% endblock %} diff --git a/netbox/templates/dcim/device/interfaces.html b/netbox/templates/dcim/device/interfaces.html index 03c8a8913..1d1e7e81b 100644 --- a/netbox/templates/dcim/device/interfaces.html +++ b/netbox/templates/dcim/device/interfaces.html @@ -34,7 +34,7 @@
- {% render_table interface_table 'inc/table.html' %} + {% render_table table 'inc/table.html' %}
{% if perms.dcim.change_interface %} @@ -63,6 +63,6 @@ {% endif %}
- {% include 'inc/paginator.html' with paginator=interface_table.paginator page=interface_table.page %} - {% table_config_form interface_table %} + {% include 'inc/paginator.html' with paginator=table.paginator page=table.page %} + {% table_config_form table %} {% endblock %} diff --git a/netbox/templates/dcim/device/inventory.html b/netbox/templates/dcim/device/inventory.html index 6c9fdb17b..2aad68984 100644 --- a/netbox/templates/dcim/device/inventory.html +++ b/netbox/templates/dcim/device/inventory.html @@ -7,7 +7,7 @@
{% csrf_token %} {% include 'inc/table_controls.html' with table_modal="DeviceInventoryItemTable_config" %} - {% render_table inventoryitem_table 'inc/table.html' %} + {% render_table table 'inc/table.html' %}
{% if perms.dcim.change_inventoryitem %} @@ -33,6 +33,6 @@ {% endif %}
- {% include 'inc/paginator.html' with paginator=inventoryitem_table.paginator page=inventoryitem_table.page %} - {% table_config_form inventoryitem_table %} + {% include 'inc/paginator.html' with paginator=table.paginator page=table.page %} + {% table_config_form table %} {% endblock %} diff --git a/netbox/templates/dcim/device/poweroutlets.html b/netbox/templates/dcim/device/poweroutlets.html index f9937bf27..df936742e 100644 --- a/netbox/templates/dcim/device/poweroutlets.html +++ b/netbox/templates/dcim/device/poweroutlets.html @@ -7,7 +7,7 @@
{% csrf_token %} {% include 'inc/table_controls.html' with table_modal="DevicePowerOutletTable_config" %} - {% render_table poweroutlet_table 'inc/table.html' %} + {% render_table table 'inc/table.html' %}
{% if perms.dcim.change_powerport %} @@ -36,6 +36,6 @@ {% endif %}
- {% include 'inc/paginator.html' with paginator=poweroutlet_table.paginator page=poweroutlet_table.page %} - {% table_config_form poweroutlet_table %} + {% include 'inc/paginator.html' with paginator=table.paginator page=table.page %} + {% table_config_form table %} {% endblock %} diff --git a/netbox/templates/dcim/device/powerports.html b/netbox/templates/dcim/device/powerports.html index 7d219979c..5a502dc57 100644 --- a/netbox/templates/dcim/device/powerports.html +++ b/netbox/templates/dcim/device/powerports.html @@ -7,7 +7,7 @@
{% csrf_token %} {% include 'inc/table_controls.html' with table_modal="DevicePowerPortTable_config" %} - {% render_table powerport_table 'inc/table.html' %} + {% render_table table 'inc/table.html' %}
{% if perms.dcim.change_powerport %} @@ -36,6 +36,6 @@ {% endif %}
- {% include 'inc/paginator.html' with paginator=powerport_table.paginator page=powerport_table.page %} - {% table_config_form powerport_table %} + {% include 'inc/paginator.html' with paginator=table.paginator page=table.page %} + {% table_config_form table %} {% endblock %} diff --git a/netbox/templates/dcim/device/rearports.html b/netbox/templates/dcim/device/rearports.html index f0ec37b80..d0ff55ec9 100644 --- a/netbox/templates/dcim/device/rearports.html +++ b/netbox/templates/dcim/device/rearports.html @@ -7,7 +7,7 @@
{% csrf_token %} {% include 'inc/table_controls.html' with table_modal="DeviceRearPortTable_config" %} - {% render_table rearport_table 'inc/table.html' %} + {% render_table table 'inc/table.html' %}
{% if perms.dcim.change_rearport %} @@ -36,6 +36,6 @@ {% endif %}
- {% include 'inc/paginator.html' with paginator=rearport_table.paginator page=rearport_table.page %} - {% table_config_form rearport_table %} + {% include 'inc/paginator.html' with paginator=table.paginator page=table.page %} + {% table_config_form table %} {% endblock %} diff --git a/netbox/templates/dcim/devicetype.html b/netbox/templates/dcim/devicetype.html index 77db7ed18..74a3e73d7 100644 --- a/netbox/templates/dcim/devicetype.html +++ b/netbox/templates/dcim/devicetype.html @@ -1,51 +1,8 @@ -{% extends 'generic/object.html' %} +{% extends 'dcim/devicetype/base.html' %} {% load buttons %} {% load helpers %} {% load plugins %} -{% block title %}{{ object.manufacturer }} {{ object.model }}{% endblock %} - -{% block breadcrumbs %} - {{ block.super }} - -{% endblock %} - -{% block extra_controls %} - {% if perms.dcim.change_devicetype %} - - {% endif %} -{% endblock %} - {% block content %}
@@ -141,76 +98,4 @@ {% plugin_full_width_page object %}
-
-
- -
-
- {% include 'dcim/inc/devicetype_component_table.html' with table=interface_table title='Interfaces' tab='interfaces' %} -
-
- {% include 'dcim/inc/devicetype_component_table.html' with table=front_port_table title='Front Ports' tab='frontports' %} -
-
- {% include 'dcim/inc/devicetype_component_table.html' with table=rear_port_table title='Rear Ports' tab='rearports' %} -
-
- {% include 'dcim/inc/devicetype_component_table.html' with table=consoleport_table title='Console Ports' tab='consoleports' %} -
-
- {% include 'dcim/inc/devicetype_component_table.html' with table=consoleserverport_table title='Console Server Ports' tab='consoleserverports' %} -
-
- {% include 'dcim/inc/devicetype_component_table.html' with table=powerport_table title='Power Ports' tab='powerports' %} -
-
- {% include 'dcim/inc/devicetype_component_table.html' with table=poweroutlet_table title='Power Outlets' tab='poweroutlets' %} -
-
- {% include 'dcim/inc/devicetype_component_table.html' with table=devicebay_table title='Device Bays' tab='devicebays' %} -
-
-
-
{% endblock %} diff --git a/netbox/templates/dcim/devicetype/base.html b/netbox/templates/dcim/devicetype/base.html new file mode 100644 index 000000000..a06886de5 --- /dev/null +++ b/netbox/templates/dcim/devicetype/base.html @@ -0,0 +1,119 @@ +{% extends 'generic/object.html' %} +{% load buttons %} +{% load helpers %} +{% load plugins %} + +{% block title %}{{ object.manufacturer }} {{ object.model }}{% endblock %} + +{% block breadcrumbs %} + {{ block.super }} + +{% endblock %} + +{% block extra_controls %} + {% if perms.dcim.change_devicetype %} + + {% endif %} +{% endblock %} + +{% block tab_items %} + + + {% with interface_count=object.interfacetemplates.count %} + {% if interface_count %} + + {% endif %} + {% endwith %} + + {% with frontport_count=object.frontporttemplates.count %} + {% if frontport_count %} + + {% endif %} + {% endwith %} + + {% with rearport_count=object.rearporttemplates.count %} + {% if rearport_count %} + + {% endif %} + {% endwith %} + + {% with consoleport_count=object.consoleporttemplates.count %} + {% if consoleport_count %} + + {% endif %} + {% endwith %} + + {% with consoleserverport_count=object.consoleserverporttemplates.count %} + {% if consoleserverport_count %} + + {% endif %} + {% endwith %} + + {% with powerport_count=object.powerporttemplates.count %} + {% if powerport_count %} + + {% endif %} + {% endwith %} + + {% with poweroutlet_count=object.poweroutlettemplates.count %} + {% if poweroutlet_count %} + + {% endif %} + {% endwith %} + + {% with devicebay_count=object.devicebaytemplates.count %} + {% if devicebay_count %} + + {% endif %} + {% endwith %} +{% endblock %} diff --git a/netbox/templates/dcim/inc/devicetype_component_table.html b/netbox/templates/dcim/devicetype/component_templates.html similarity index 93% rename from netbox/templates/dcim/inc/devicetype_component_table.html rename to netbox/templates/dcim/devicetype/component_templates.html index 900e0f818..d83a232cd 100644 --- a/netbox/templates/dcim/inc/devicetype_component_table.html +++ b/netbox/templates/dcim/devicetype/component_templates.html @@ -1,7 +1,9 @@ -{% load helpers %} +{% extends 'dcim/devicetype/base.html' %} {% load render_table from django_tables2 %} +{% load helpers %} -{% if perms.dcim.change_devicetype %} +{% block content %} + {% if perms.dcim.change_devicetype %}
{% csrf_token %}
@@ -33,7 +35,7 @@
-{% else %} + {% else %}
{{ title }} @@ -42,4 +44,5 @@ {% render_table table 'inc/table.html' %}
-{% endif %} + {% endif %} +{% endblock content %} diff --git a/netbox/templates/dcim/inc/device_component_table.html b/netbox/templates/dcim/inc/device_component_table.html deleted file mode 100644 index b272e2731..000000000 --- a/netbox/templates/dcim/inc/device_component_table.html +++ /dev/null @@ -1,42 +0,0 @@ -{% load helpers %} -{% load perms %} -
- {% csrf_token %} -
-
- {{ title }} -
-
- - {% for obj in components %} - {% include component_template %} - {% endfor %} -
-
- {% if components and perms.dcim.change_consoleport %} - - {% endif %} -
-
From cfb3897047ff6fc38586466f56468eb9bb3ccba4 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Thu, 21 Oct 2021 10:51:02 -0400 Subject: [PATCH 049/289] Add tags to organizational & nested group models --- docs/development/models.md | 4 +- docs/models/extras/tag.md | 3 -- netbox/circuits/api/serializers.py | 8 ++- netbox/circuits/api/views.py | 2 +- netbox/circuits/forms/bulk_edit.py | 2 +- netbox/circuits/forms/models.py | 6 ++- .../migrations/0003_extend_tag_support.py | 20 ++++++++ netbox/circuits/models.py | 2 +- netbox/circuits/tables.py | 5 +- netbox/circuits/tests/test_views.py | 3 ++ netbox/dcim/api/serializers.py | 33 ++++++------ netbox/dcim/api/views.py | 14 +++--- netbox/dcim/forms/bulk_edit.py | 14 +++--- netbox/dcim/forms/models.py | 44 +++++++++++++--- .../migrations/0138_extend_tag_support.py | 50 +++++++++++++++++++ netbox/dcim/models/devices.py | 6 +-- netbox/dcim/models/racks.py | 2 +- netbox/dcim/models/sites.py | 6 +-- netbox/dcim/tables/devices.py | 12 ++++- netbox/dcim/tables/devicetypes.py | 6 ++- netbox/dcim/tables/racks.py | 5 +- netbox/dcim/tables/sites.py | 17 +++++-- netbox/dcim/tests/test_views.py | 21 ++++++++ netbox/ipam/api/serializers.py | 17 +++---- netbox/ipam/api/views.py | 6 +-- netbox/ipam/forms/bulk_edit.py | 6 +-- netbox/ipam/forms/models.py | 20 ++++++-- .../migrations/0051_extend_tag_support.py | 30 +++++++++++ netbox/ipam/models/ip.py | 4 +- netbox/ipam/models/vlans.py | 2 +- netbox/ipam/tables/ip.py | 10 +++- netbox/ipam/tables/vlans.py | 5 +- netbox/ipam/tests/test_views.py | 9 ++++ netbox/netbox/api/serializers.py | 11 +--- netbox/netbox/graphql/types.py | 1 + netbox/netbox/models.py | 21 +++++--- netbox/tenancy/api/serializers.py | 14 +++--- netbox/tenancy/api/views.py | 14 ++---- netbox/tenancy/forms/bulk_edit.py | 6 +-- netbox/tenancy/forms/models.py | 18 +++++-- .../migrations/0004_extend_tag_support.py | 30 +++++++++++ netbox/tenancy/models.py | 6 +-- netbox/tenancy/tables.py | 10 +++- netbox/tenancy/tests/test_views.py | 9 ++++ netbox/virtualization/api/serializers.py | 10 ++-- netbox/virtualization/api/views.py | 4 +- netbox/virtualization/forms/bulk_edit.py | 4 +- netbox/virtualization/forms/models.py | 20 +++++--- .../migrations/0025_extend_tag_support.py | 25 ++++++++++ netbox/virtualization/models.py | 4 +- netbox/virtualization/tables.py | 10 +++- netbox/virtualization/tests/test_views.py | 6 +++ 52 files changed, 463 insertions(+), 154 deletions(-) create mode 100644 netbox/circuits/migrations/0003_extend_tag_support.py create mode 100644 netbox/dcim/migrations/0138_extend_tag_support.py create mode 100644 netbox/ipam/migrations/0051_extend_tag_support.py create mode 100644 netbox/tenancy/migrations/0004_extend_tag_support.py create mode 100644 netbox/virtualization/migrations/0025_extend_tag_support.py diff --git a/docs/development/models.md b/docs/development/models.md index 93a10fff6..59e795cf7 100644 --- a/docs/development/models.md +++ b/docs/development/models.md @@ -19,8 +19,8 @@ The Django [content types](https://docs.djangoproject.com/en/stable/ref/contrib/ | Type | Change Logging | Webhooks | Custom Fields | Export Templates | Tags | Journaling | Nesting | | ------------------ | ---------------- | ---------------- | ---------------- | ---------------- | ---------------- | ---------------- | ---------------- | | Primary | :material-check: | :material-check: | :material-check: | :material-check: | :material-check: | :material-check: | | -| Organizational | :material-check: | :material-check: | :material-check: | :material-check: | | | | -| Nested Group | :material-check: | :material-check: | :material-check: | :material-check: | | | :material-check: | +| Organizational | :material-check: | :material-check: | :material-check: | :material-check: | :material-check: | | | +| Nested Group | :material-check: | :material-check: | :material-check: | :material-check: | :material-check: | | :material-check: | | Component | :material-check: | :material-check: | :material-check: | :material-check: | :material-check: | | | | Component Template | :material-check: | :material-check: | :material-check: | | | | | diff --git a/docs/models/extras/tag.md b/docs/models/extras/tag.md index 29cc8b757..fe6a1ef36 100644 --- a/docs/models/extras/tag.md +++ b/docs/models/extras/tag.md @@ -15,6 +15,3 @@ The `tag` filter can be specified multiple times to match only objects which hav ```no-highlight GET /api/dcim/devices/?tag=monitored&tag=deprecated ``` - -!!! note - Tags have changed substantially in NetBox v2.9. They are no longer created on-demand when editing an object, and their representation in the REST API now includes a complete depiction of the tag rather than only its label. diff --git a/netbox/circuits/api/serializers.py b/netbox/circuits/api/serializers.py index ac6285610..0033e1425 100644 --- a/netbox/circuits/api/serializers.py +++ b/netbox/circuits/api/serializers.py @@ -5,9 +5,7 @@ from circuits.models import * from dcim.api.nested_serializers import NestedCableSerializer, NestedSiteSerializer from dcim.api.serializers import CableTerminationSerializer from netbox.api import ChoiceField -from netbox.api.serializers import ( - OrganizationalModelSerializer, PrimaryModelSerializer, ValidatedModelSerializer, WritableNestedSerializer -) +from netbox.api.serializers import PrimaryModelSerializer, ValidatedModelSerializer, WritableNestedSerializer from tenancy.api.nested_serializers import NestedTenantSerializer from .nested_serializers import * @@ -48,14 +46,14 @@ class ProviderNetworkSerializer(PrimaryModelSerializer): # Circuits # -class CircuitTypeSerializer(OrganizationalModelSerializer): +class CircuitTypeSerializer(PrimaryModelSerializer): url = serializers.HyperlinkedIdentityField(view_name='circuits-api:circuittype-detail') circuit_count = serializers.IntegerField(read_only=True) class Meta: model = CircuitType fields = [ - 'id', 'url', 'display', 'name', 'slug', 'description', 'custom_fields', 'created', 'last_updated', + 'id', 'url', 'display', 'name', 'slug', 'description', 'tags', 'custom_fields', 'created', 'last_updated', 'circuit_count', ] diff --git a/netbox/circuits/api/views.py b/netbox/circuits/api/views.py index 3bceb2de0..2b3e3b122 100644 --- a/netbox/circuits/api/views.py +++ b/netbox/circuits/api/views.py @@ -34,7 +34,7 @@ class ProviderViewSet(CustomFieldModelViewSet): # class CircuitTypeViewSet(CustomFieldModelViewSet): - queryset = CircuitType.objects.annotate( + queryset = CircuitType.objects.prefetch_related('tags').annotate( circuit_count=count_related(Circuit, 'type') ) serializer_class = serializers.CircuitTypeSerializer diff --git a/netbox/circuits/forms/bulk_edit.py b/netbox/circuits/forms/bulk_edit.py index 638426a5e..7bf5644b9 100644 --- a/netbox/circuits/forms/bulk_edit.py +++ b/netbox/circuits/forms/bulk_edit.py @@ -79,7 +79,7 @@ class ProviderNetworkBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomField ] -class CircuitTypeBulkEditForm(BootstrapMixin, CustomFieldModelBulkEditForm): +class CircuitTypeBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldModelBulkEditForm): pk = forms.ModelMultipleChoiceField( queryset=CircuitType.objects.all(), widget=forms.MultipleHiddenInput diff --git a/netbox/circuits/forms/models.py b/netbox/circuits/forms/models.py index 659939293..5679dbc94 100644 --- a/netbox/circuits/forms/models.py +++ b/netbox/circuits/forms/models.py @@ -75,11 +75,15 @@ class ProviderNetworkForm(BootstrapMixin, CustomFieldModelForm): class CircuitTypeForm(BootstrapMixin, CustomFieldModelForm): slug = SlugField() + tags = DynamicModelMultipleChoiceField( + queryset=Tag.objects.all(), + required=False + ) class Meta: model = CircuitType fields = [ - 'name', 'slug', 'description', + 'name', 'slug', 'description', 'tags', ] diff --git a/netbox/circuits/migrations/0003_extend_tag_support.py b/netbox/circuits/migrations/0003_extend_tag_support.py new file mode 100644 index 000000000..e5e6ee262 --- /dev/null +++ b/netbox/circuits/migrations/0003_extend_tag_support.py @@ -0,0 +1,20 @@ +# Generated by Django 3.2.8 on 2021-10-21 14:50 + +from django.db import migrations +import taggit.managers + + +class Migration(migrations.Migration): + + dependencies = [ + ('extras', '0062_clear_secrets_changelog'), + ('circuits', '0002_squashed_0029'), + ] + + operations = [ + migrations.AddField( + model_name='circuittype', + name='tags', + field=taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag'), + ), + ] diff --git a/netbox/circuits/models.py b/netbox/circuits/models.py index 3d213b48d..e6e03052d 100644 --- a/netbox/circuits/models.py +++ b/netbox/circuits/models.py @@ -128,7 +128,7 @@ class ProviderNetwork(PrimaryModel): return reverse('circuits:providernetwork', args=[self.pk]) -@extras_features('custom_fields', 'custom_links', 'export_templates', 'webhooks') +@extras_features('custom_fields', 'custom_links', 'export_templates', 'tags', 'webhooks') class CircuitType(OrganizationalModel): """ Circuits can be organized by their functional role. For example, a user might wish to define CircuitTypes named diff --git a/netbox/circuits/tables.py b/netbox/circuits/tables.py index 2e31237b6..d0b0797e2 100644 --- a/netbox/circuits/tables.py +++ b/netbox/circuits/tables.py @@ -82,6 +82,9 @@ class CircuitTypeTable(BaseTable): name = tables.Column( linkify=True ) + tags = TagColumn( + url_name='circuits:circuittype_list' + ) circuit_count = tables.Column( verbose_name='Circuits' ) @@ -89,7 +92,7 @@ class CircuitTypeTable(BaseTable): class Meta(BaseTable.Meta): model = CircuitType - fields = ('pk', 'name', 'circuit_count', 'description', 'slug', 'actions') + fields = ('pk', 'name', 'circuit_count', 'description', 'slug', 'tags', 'actions') default_columns = ('pk', 'name', 'circuit_count', 'description', 'slug', 'actions') diff --git a/netbox/circuits/tests/test_views.py b/netbox/circuits/tests/test_views.py index ccb4a869a..851d52ae8 100644 --- a/netbox/circuits/tests/test_views.py +++ b/netbox/circuits/tests/test_views.py @@ -64,10 +64,13 @@ class CircuitTypeTestCase(ViewTestCases.OrganizationalObjectViewTestCase): CircuitType(name='Circuit Type 3', slug='circuit-type-3'), ]) + tags = create_tags('Alpha', 'Bravo', 'Charlie') + cls.form_data = { 'name': 'Circuit Type X', 'slug': 'circuit-type-x', 'description': 'A new circuit type', + 'tags': [t.pk for t in tags], } cls.csv_data = ( diff --git a/netbox/dcim/api/serializers.py b/netbox/dcim/api/serializers.py index 9b0e7f5b3..ef4f49247 100644 --- a/netbox/dcim/api/serializers.py +++ b/netbox/dcim/api/serializers.py @@ -11,8 +11,7 @@ from ipam.api.nested_serializers import NestedIPAddressSerializer, NestedVLANSer from ipam.models import VLAN from netbox.api import ChoiceField, ContentTypeField, SerializedPKRelatedField from netbox.api.serializers import ( - NestedGroupModelSerializer, OrganizationalModelSerializer, PrimaryModelSerializer, ValidatedModelSerializer, - WritableNestedSerializer, + NestedGroupModelSerializer, PrimaryModelSerializer, ValidatedModelSerializer, WritableNestedSerializer, ) from tenancy.api.nested_serializers import NestedTenantSerializer from users.api.nested_serializers import NestedUserSerializer @@ -87,8 +86,8 @@ class RegionSerializer(NestedGroupModelSerializer): class Meta: model = Region fields = [ - 'id', 'url', 'display', 'name', 'slug', 'parent', 'description', 'custom_fields', 'created', 'last_updated', - 'site_count', '_depth', + 'id', 'url', 'display', 'name', 'slug', 'parent', 'description', 'tags', 'custom_fields', 'created', + 'last_updated', 'site_count', '_depth', ] @@ -100,8 +99,8 @@ class SiteGroupSerializer(NestedGroupModelSerializer): class Meta: model = SiteGroup fields = [ - 'id', 'url', 'display', 'name', 'slug', 'parent', 'description', 'custom_fields', 'created', 'last_updated', - 'site_count', '_depth', + 'id', 'url', 'display', 'name', 'slug', 'parent', 'description', 'tags', 'custom_fields', 'created', + 'last_updated', 'site_count', '_depth', ] @@ -144,20 +143,20 @@ class LocationSerializer(NestedGroupModelSerializer): class Meta: model = Location fields = [ - 'id', 'url', 'display', 'name', 'slug', 'site', 'parent', 'tenant', 'description', 'custom_fields', + 'id', 'url', 'display', 'name', 'slug', 'site', 'parent', 'tenant', 'description', 'tags', 'custom_fields', 'created', 'last_updated', 'rack_count', 'device_count', '_depth', ] -class RackRoleSerializer(OrganizationalModelSerializer): +class RackRoleSerializer(PrimaryModelSerializer): url = serializers.HyperlinkedIdentityField(view_name='dcim-api:rackrole-detail') rack_count = serializers.IntegerField(read_only=True) class Meta: model = RackRole fields = [ - 'id', 'url', 'display', 'name', 'slug', 'color', 'description', 'custom_fields', 'created', 'last_updated', - 'rack_count', + 'id', 'url', 'display', 'name', 'slug', 'color', 'description', 'tags', 'custom_fields', 'created', + 'last_updated', 'rack_count', ] @@ -254,7 +253,7 @@ class RackElevationDetailFilterSerializer(serializers.Serializer): # Device types # -class ManufacturerSerializer(OrganizationalModelSerializer): +class ManufacturerSerializer(PrimaryModelSerializer): url = serializers.HyperlinkedIdentityField(view_name='dcim-api:manufacturer-detail') devicetype_count = serializers.IntegerField(read_only=True) inventoryitem_count = serializers.IntegerField(read_only=True) @@ -263,7 +262,7 @@ class ManufacturerSerializer(OrganizationalModelSerializer): class Meta: model = Manufacturer fields = [ - 'id', 'url', 'display', 'name', 'slug', 'description', 'custom_fields', 'created', 'last_updated', + 'id', 'url', 'display', 'name', 'slug', 'description', 'tags', 'custom_fields', 'created', 'last_updated', 'devicetype_count', 'inventoryitem_count', 'platform_count', ] @@ -411,7 +410,7 @@ class DeviceBayTemplateSerializer(ValidatedModelSerializer): # Devices # -class DeviceRoleSerializer(OrganizationalModelSerializer): +class DeviceRoleSerializer(PrimaryModelSerializer): url = serializers.HyperlinkedIdentityField(view_name='dcim-api:devicerole-detail') device_count = serializers.IntegerField(read_only=True) virtualmachine_count = serializers.IntegerField(read_only=True) @@ -419,12 +418,12 @@ class DeviceRoleSerializer(OrganizationalModelSerializer): class Meta: model = DeviceRole fields = [ - 'id', 'url', 'display', 'name', 'slug', 'color', 'vm_role', 'description', 'custom_fields', 'created', - 'last_updated', 'device_count', 'virtualmachine_count', + 'id', 'url', 'display', 'name', 'slug', 'color', 'vm_role', 'description', 'tags', 'custom_fields', + 'created', 'last_updated', 'device_count', 'virtualmachine_count', ] -class PlatformSerializer(OrganizationalModelSerializer): +class PlatformSerializer(PrimaryModelSerializer): url = serializers.HyperlinkedIdentityField(view_name='dcim-api:platform-detail') manufacturer = NestedManufacturerSerializer(required=False, allow_null=True) device_count = serializers.IntegerField(read_only=True) @@ -434,7 +433,7 @@ class PlatformSerializer(OrganizationalModelSerializer): model = Platform fields = [ 'id', 'url', 'display', 'name', 'slug', 'manufacturer', 'napalm_driver', 'napalm_args', 'description', - 'custom_fields', 'created', 'last_updated', 'device_count', 'virtualmachine_count', + 'tags', 'custom_fields', 'created', 'last_updated', 'device_count', 'virtualmachine_count', ] diff --git a/netbox/dcim/api/views.py b/netbox/dcim/api/views.py index 2b9d9734c..799a5e703 100644 --- a/netbox/dcim/api/views.py +++ b/netbox/dcim/api/views.py @@ -110,7 +110,7 @@ class RegionViewSet(CustomFieldModelViewSet): 'region', 'site_count', cumulative=True - ) + ).prefetch_related('tags') serializer_class = serializers.RegionSerializer filterset_class = filtersets.RegionFilterSet @@ -126,7 +126,7 @@ class SiteGroupViewSet(CustomFieldModelViewSet): 'group', 'site_count', cumulative=True - ) + ).prefetch_related('tags') serializer_class = serializers.SiteGroupSerializer filterset_class = filtersets.SiteGroupFilterSet @@ -167,7 +167,7 @@ class LocationViewSet(CustomFieldModelViewSet): 'location', 'rack_count', cumulative=True - ).prefetch_related('site') + ).prefetch_related('site', 'tags') serializer_class = serializers.LocationSerializer filterset_class = filtersets.LocationFilterSet @@ -177,7 +177,7 @@ class LocationViewSet(CustomFieldModelViewSet): # class RackRoleViewSet(CustomFieldModelViewSet): - queryset = RackRole.objects.annotate( + queryset = RackRole.objects.prefetch_related('tags').annotate( rack_count=count_related(Rack, 'role') ) serializer_class = serializers.RackRoleSerializer @@ -261,7 +261,7 @@ class RackReservationViewSet(ModelViewSet): # class ManufacturerViewSet(CustomFieldModelViewSet): - queryset = Manufacturer.objects.annotate( + queryset = Manufacturer.objects.prefetch_related('tags').annotate( devicetype_count=count_related(DeviceType, 'manufacturer'), inventoryitem_count=count_related(InventoryItem, 'manufacturer'), platform_count=count_related(Platform, 'manufacturer') @@ -340,7 +340,7 @@ class DeviceBayTemplateViewSet(ModelViewSet): # class DeviceRoleViewSet(CustomFieldModelViewSet): - queryset = DeviceRole.objects.annotate( + queryset = DeviceRole.objects.prefetch_related('tags').annotate( device_count=count_related(Device, 'device_role'), virtualmachine_count=count_related(VirtualMachine, 'role') ) @@ -353,7 +353,7 @@ class DeviceRoleViewSet(CustomFieldModelViewSet): # class PlatformViewSet(CustomFieldModelViewSet): - queryset = Platform.objects.annotate( + queryset = Platform.objects.prefetch_related('tags').annotate( device_count=count_related(Device, 'platform'), virtualmachine_count=count_related(VirtualMachine, 'platform') ) diff --git a/netbox/dcim/forms/bulk_edit.py b/netbox/dcim/forms/bulk_edit.py index 06ccc958c..d08692c26 100644 --- a/netbox/dcim/forms/bulk_edit.py +++ b/netbox/dcim/forms/bulk_edit.py @@ -51,7 +51,7 @@ __all__ = ( ) -class RegionBulkEditForm(BootstrapMixin, CustomFieldModelBulkEditForm): +class RegionBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldModelBulkEditForm): pk = forms.ModelMultipleChoiceField( queryset=Region.objects.all(), widget=forms.MultipleHiddenInput @@ -69,7 +69,7 @@ class RegionBulkEditForm(BootstrapMixin, CustomFieldModelBulkEditForm): nullable_fields = ['parent', 'description'] -class SiteGroupBulkEditForm(BootstrapMixin, CustomFieldModelBulkEditForm): +class SiteGroupBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldModelBulkEditForm): pk = forms.ModelMultipleChoiceField( queryset=SiteGroup.objects.all(), widget=forms.MultipleHiddenInput @@ -132,7 +132,7 @@ class SiteBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldModelBulkEd ] -class LocationBulkEditForm(BootstrapMixin, CustomFieldModelBulkEditForm): +class LocationBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldModelBulkEditForm): pk = forms.ModelMultipleChoiceField( queryset=Location.objects.all(), widget=forms.MultipleHiddenInput @@ -161,7 +161,7 @@ class LocationBulkEditForm(BootstrapMixin, CustomFieldModelBulkEditForm): nullable_fields = ['parent', 'tenant', 'description'] -class RackRoleBulkEditForm(BootstrapMixin, CustomFieldModelBulkEditForm): +class RackRoleBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldModelBulkEditForm): pk = forms.ModelMultipleChoiceField( queryset=RackRole.objects.all(), widget=forms.MultipleHiddenInput @@ -303,7 +303,7 @@ class RackReservationBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomField nullable_fields = [] -class ManufacturerBulkEditForm(BootstrapMixin, CustomFieldModelBulkEditForm): +class ManufacturerBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldModelBulkEditForm): pk = forms.ModelMultipleChoiceField( queryset=Manufacturer.objects.all(), widget=forms.MultipleHiddenInput @@ -345,7 +345,7 @@ class DeviceTypeBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldModel nullable_fields = ['airflow'] -class DeviceRoleBulkEditForm(BootstrapMixin, CustomFieldModelBulkEditForm): +class DeviceRoleBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldModelBulkEditForm): pk = forms.ModelMultipleChoiceField( queryset=DeviceRole.objects.all(), widget=forms.MultipleHiddenInput @@ -367,7 +367,7 @@ class DeviceRoleBulkEditForm(BootstrapMixin, CustomFieldModelBulkEditForm): nullable_fields = ['color', 'description'] -class PlatformBulkEditForm(BootstrapMixin, CustomFieldModelBulkEditForm): +class PlatformBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldModelBulkEditForm): pk = forms.ModelMultipleChoiceField( queryset=Platform.objects.all(), widget=forms.MultipleHiddenInput diff --git a/netbox/dcim/forms/models.py b/netbox/dcim/forms/models.py index 8236b1a97..a3dac09dd 100644 --- a/netbox/dcim/forms/models.py +++ b/netbox/dcim/forms/models.py @@ -70,11 +70,15 @@ class RegionForm(BootstrapMixin, CustomFieldModelForm): required=False ) slug = SlugField() + tags = DynamicModelMultipleChoiceField( + queryset=Tag.objects.all(), + required=False + ) class Meta: model = Region fields = ( - 'parent', 'name', 'slug', 'description', + 'parent', 'name', 'slug', 'description', 'tags', ) @@ -84,11 +88,15 @@ class SiteGroupForm(BootstrapMixin, CustomFieldModelForm): required=False ) slug = SlugField() + tags = DynamicModelMultipleChoiceField( + queryset=Tag.objects.all(), + required=False + ) class Meta: model = SiteGroup fields = ( - 'parent', 'name', 'slug', 'description', + 'parent', 'name', 'slug', 'description', 'tags', ) @@ -187,15 +195,19 @@ class LocationForm(BootstrapMixin, TenancyForm, CustomFieldModelForm): } ) slug = SlugField() + tags = DynamicModelMultipleChoiceField( + queryset=Tag.objects.all(), + required=False + ) class Meta: model = Location fields = ( - 'region', 'site_group', 'site', 'parent', 'name', 'slug', 'description', 'tenant_group', 'tenant', + 'region', 'site_group', 'site', 'parent', 'name', 'slug', 'description', 'tenant_group', 'tenant', 'tags', ) fieldsets = ( ('Location', ( - 'region', 'site_group', 'site', 'parent', 'name', 'slug', 'description', + 'region', 'site_group', 'site', 'parent', 'name', 'slug', 'description', 'tags', )), ('Tenancy', ('tenant_group', 'tenant')), ) @@ -203,11 +215,15 @@ class LocationForm(BootstrapMixin, TenancyForm, CustomFieldModelForm): class RackRoleForm(BootstrapMixin, CustomFieldModelForm): slug = SlugField() + tags = DynamicModelMultipleChoiceField( + queryset=Tag.objects.all(), + required=False + ) class Meta: model = RackRole fields = [ - 'name', 'slug', 'color', 'description', + 'name', 'slug', 'color', 'description', 'tags', ] @@ -343,11 +359,15 @@ class RackReservationForm(BootstrapMixin, TenancyForm, CustomFieldModelForm): class ManufacturerForm(BootstrapMixin, CustomFieldModelForm): slug = SlugField() + tags = DynamicModelMultipleChoiceField( + queryset=Tag.objects.all(), + required=False + ) class Meta: model = Manufacturer fields = [ - 'name', 'slug', 'description', + 'name', 'slug', 'description', 'tags', ] @@ -392,11 +412,15 @@ class DeviceTypeForm(BootstrapMixin, CustomFieldModelForm): class DeviceRoleForm(BootstrapMixin, CustomFieldModelForm): slug = SlugField() + tags = DynamicModelMultipleChoiceField( + queryset=Tag.objects.all(), + required=False + ) class Meta: model = DeviceRole fields = [ - 'name', 'slug', 'color', 'vm_role', 'description', + 'name', 'slug', 'color', 'vm_role', 'description', 'tags', ] @@ -408,11 +432,15 @@ class PlatformForm(BootstrapMixin, CustomFieldModelForm): slug = SlugField( max_length=64 ) + tags = DynamicModelMultipleChoiceField( + queryset=Tag.objects.all(), + required=False + ) class Meta: model = Platform fields = [ - 'name', 'slug', 'manufacturer', 'napalm_driver', 'napalm_args', 'description', + 'name', 'slug', 'manufacturer', 'napalm_driver', 'napalm_args', 'description', 'tags', ] widgets = { 'napalm_args': SmallTextarea(), diff --git a/netbox/dcim/migrations/0138_extend_tag_support.py b/netbox/dcim/migrations/0138_extend_tag_support.py new file mode 100644 index 000000000..763b53c50 --- /dev/null +++ b/netbox/dcim/migrations/0138_extend_tag_support.py @@ -0,0 +1,50 @@ +# Generated by Django 3.2.8 on 2021-10-21 14:50 + +from django.db import migrations +import taggit.managers + + +class Migration(migrations.Migration): + + dependencies = [ + ('extras', '0062_clear_secrets_changelog'), + ('dcim', '0137_relax_uniqueness_constraints'), + ] + + operations = [ + migrations.AddField( + model_name='devicerole', + name='tags', + field=taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag'), + ), + migrations.AddField( + model_name='location', + name='tags', + field=taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag'), + ), + migrations.AddField( + model_name='manufacturer', + name='tags', + field=taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag'), + ), + migrations.AddField( + model_name='platform', + name='tags', + field=taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag'), + ), + migrations.AddField( + model_name='rackrole', + name='tags', + field=taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag'), + ), + migrations.AddField( + model_name='region', + name='tags', + field=taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag'), + ), + migrations.AddField( + model_name='sitegroup', + name='tags', + field=taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag'), + ), + ] diff --git a/netbox/dcim/models/devices.py b/netbox/dcim/models/devices.py index 308a094c3..2b3b80d24 100644 --- a/netbox/dcim/models/devices.py +++ b/netbox/dcim/models/devices.py @@ -36,7 +36,7 @@ __all__ = ( # Device Types # -@extras_features('custom_fields', 'custom_links', 'export_templates', 'webhooks') +@extras_features('custom_fields', 'custom_links', 'export_templates', 'tags', 'webhooks') class Manufacturer(OrganizationalModel): """ A Manufacturer represents a company which produces hardware devices; for example, Juniper or Dell. @@ -351,7 +351,7 @@ class DeviceType(PrimaryModel): # Devices # -@extras_features('custom_fields', 'custom_links', 'export_templates', 'webhooks') +@extras_features('custom_fields', 'custom_links', 'export_templates', 'tags', 'webhooks') class DeviceRole(OrganizationalModel): """ Devices are organized by functional role; for example, "Core Switch" or "File Server". Each DeviceRole is assigned a @@ -391,7 +391,7 @@ class DeviceRole(OrganizationalModel): return reverse('dcim:devicerole', args=[self.pk]) -@extras_features('custom_fields', 'custom_links', 'export_templates', 'webhooks') +@extras_features('custom_fields', 'custom_links', 'export_templates', 'tags', 'webhooks') class Platform(OrganizationalModel): """ Platform refers to the software or firmware running on a Device. For example, "Cisco IOS-XR" or "Juniper Junos". diff --git a/netbox/dcim/models/racks.py b/netbox/dcim/models/racks.py index 47fcd42e4..a6be069b6 100644 --- a/netbox/dcim/models/racks.py +++ b/netbox/dcim/models/racks.py @@ -35,7 +35,7 @@ __all__ = ( # Racks # -@extras_features('custom_fields', 'custom_links', 'export_templates', 'webhooks') +@extras_features('custom_fields', 'custom_links', 'export_templates', 'tags', 'webhooks') class RackRole(OrganizationalModel): """ Racks can be organized by functional role, similar to Devices. diff --git a/netbox/dcim/models/sites.py b/netbox/dcim/models/sites.py index ab9d8e82d..a978e69e6 100644 --- a/netbox/dcim/models/sites.py +++ b/netbox/dcim/models/sites.py @@ -25,7 +25,7 @@ __all__ = ( # Regions # -@extras_features('custom_fields', 'custom_links', 'export_templates', 'webhooks') +@extras_features('custom_fields', 'custom_links', 'export_templates', 'tags', 'webhooks') class Region(NestedGroupModel): """ A region represents a geographic collection of sites. For example, you might create regions representing countries, @@ -82,7 +82,7 @@ class Region(NestedGroupModel): # Site groups # -@extras_features('custom_fields', 'custom_links', 'export_templates', 'webhooks') +@extras_features('custom_fields', 'custom_links', 'export_templates', 'tags', 'webhooks') class SiteGroup(NestedGroupModel): """ A site group is an arbitrary grouping of sites. For example, you might have corporate sites and customer sites; and @@ -278,7 +278,7 @@ class Site(PrimaryModel): # Locations # -@extras_features('custom_fields', 'custom_links', 'export_templates', 'webhooks') +@extras_features('custom_fields', 'custom_links', 'export_templates', 'tags', 'webhooks') class Location(NestedGroupModel): """ A Location represents a subgroup of Racks and/or Devices within a Site. A Location may represent a building within a diff --git a/netbox/dcim/tables/devices.py b/netbox/dcim/tables/devices.py index a2d3f3da2..f47073848 100644 --- a/netbox/dcim/tables/devices.py +++ b/netbox/dcim/tables/devices.py @@ -84,11 +84,16 @@ class DeviceRoleTable(BaseTable): ) color = ColorColumn() vm_role = BooleanColumn() + tags = TagColumn( + url_name='dcim:devicerole_list' + ) actions = ButtonsColumn(DeviceRole) class Meta(BaseTable.Meta): model = DeviceRole - fields = ('pk', 'name', 'device_count', 'vm_count', 'color', 'vm_role', 'description', 'slug', 'actions') + fields = ( + 'pk', 'name', 'device_count', 'vm_count', 'color', 'vm_role', 'description', 'slug', 'tags', 'actions', + ) default_columns = ('pk', 'name', 'device_count', 'vm_count', 'color', 'vm_role', 'description', 'actions') @@ -111,13 +116,16 @@ class PlatformTable(BaseTable): url_params={'platform_id': 'pk'}, verbose_name='VMs' ) + tags = TagColumn( + url_name='dcim:platform_list' + ) actions = ButtonsColumn(Platform) class Meta(BaseTable.Meta): model = Platform fields = ( 'pk', 'name', 'manufacturer', 'device_count', 'vm_count', 'slug', 'napalm_driver', 'napalm_args', - 'description', 'actions', + 'description', 'tags', 'actions', ) default_columns = ( 'pk', 'name', 'manufacturer', 'device_count', 'vm_count', 'napalm_driver', 'description', 'actions', diff --git a/netbox/dcim/tables/devicetypes.py b/netbox/dcim/tables/devicetypes.py index b3310d5d2..9631b5709 100644 --- a/netbox/dcim/tables/devicetypes.py +++ b/netbox/dcim/tables/devicetypes.py @@ -41,12 +41,16 @@ class ManufacturerTable(BaseTable): verbose_name='Platforms' ) slug = tables.Column() + tags = TagColumn( + url_name='dcim:manufacturer_list' + ) actions = ButtonsColumn(Manufacturer) class Meta(BaseTable.Meta): model = Manufacturer fields = ( - 'pk', 'name', 'devicetype_count', 'inventoryitem_count', 'platform_count', 'description', 'slug', 'actions', + 'pk', 'name', 'devicetype_count', 'inventoryitem_count', 'platform_count', 'description', 'slug', 'tags', + 'actions', ) diff --git a/netbox/dcim/tables/racks.py b/netbox/dcim/tables/racks.py index fcc3ed4d2..bdc5ae713 100644 --- a/netbox/dcim/tables/racks.py +++ b/netbox/dcim/tables/racks.py @@ -24,11 +24,14 @@ class RackRoleTable(BaseTable): name = tables.Column(linkify=True) rack_count = tables.Column(verbose_name='Racks') color = ColorColumn() + tags = TagColumn( + url_name='dcim:rackrole_list' + ) actions = ButtonsColumn(RackRole) class Meta(BaseTable.Meta): model = RackRole - fields = ('pk', 'name', 'rack_count', 'color', 'description', 'slug', 'actions') + fields = ('pk', 'name', 'rack_count', 'color', 'description', 'slug', 'tags', 'actions') default_columns = ('pk', 'name', 'rack_count', 'color', 'description', 'actions') diff --git a/netbox/dcim/tables/sites.py b/netbox/dcim/tables/sites.py index 3ff6ab75b..65419e9c8 100644 --- a/netbox/dcim/tables/sites.py +++ b/netbox/dcim/tables/sites.py @@ -29,11 +29,14 @@ class RegionTable(BaseTable): url_params={'region_id': 'pk'}, verbose_name='Sites' ) + tags = TagColumn( + url_name='dcim:region_list' + ) actions = ButtonsColumn(Region) class Meta(BaseTable.Meta): model = Region - fields = ('pk', 'name', 'slug', 'site_count', 'description', 'actions') + fields = ('pk', 'name', 'slug', 'site_count', 'description', 'tags', 'actions') default_columns = ('pk', 'name', 'site_count', 'description', 'actions') @@ -51,11 +54,14 @@ class SiteGroupTable(BaseTable): url_params={'group_id': 'pk'}, verbose_name='Sites' ) + tags = TagColumn( + url_name='dcim:sitegroup_list' + ) actions = ButtonsColumn(SiteGroup) class Meta(BaseTable.Meta): model = SiteGroup - fields = ('pk', 'name', 'slug', 'site_count', 'description', 'actions') + fields = ('pk', 'name', 'slug', 'site_count', 'description', 'tags', 'actions') default_columns = ('pk', 'name', 'site_count', 'description', 'actions') @@ -114,6 +120,9 @@ class LocationTable(BaseTable): url_params={'location_id': 'pk'}, verbose_name='Devices' ) + tags = TagColumn( + url_name='dcim:location_list' + ) actions = ButtonsColumn( model=Location, prepend_template=LOCATION_ELEVATIONS @@ -121,5 +130,7 @@ class LocationTable(BaseTable): class Meta(BaseTable.Meta): model = Location - fields = ('pk', 'name', 'site', 'tenant', 'rack_count', 'device_count', 'description', 'slug', 'actions') + fields = ( + 'pk', 'name', 'site', 'tenant', 'rack_count', 'device_count', 'description', 'slug', 'tags', 'actions', + ) default_columns = ('pk', 'name', 'site', 'tenant', 'rack_count', 'device_count', 'description', 'actions') diff --git a/netbox/dcim/tests/test_views.py b/netbox/dcim/tests/test_views.py index a9c191679..4565c898b 100644 --- a/netbox/dcim/tests/test_views.py +++ b/netbox/dcim/tests/test_views.py @@ -31,11 +31,14 @@ class RegionTestCase(ViewTestCases.OrganizationalObjectViewTestCase): for region in regions: region.save() + tags = create_tags('Alpha', 'Bravo', 'Charlie') + cls.form_data = { 'name': 'Region X', 'slug': 'region-x', 'parent': regions[2].pk, 'description': 'A new region', + 'tags': [t.pk for t in tags], } cls.csv_data = ( @@ -65,11 +68,14 @@ class SiteGroupTestCase(ViewTestCases.OrganizationalObjectViewTestCase): for sitegroup in sitegroups: sitegroup.save() + tags = create_tags('Alpha', 'Bravo', 'Charlie') + cls.form_data = { 'name': 'Site Group X', 'slug': 'site-group-x', 'parent': sitegroups[2].pk, 'description': 'A new site group', + 'tags': [t.pk for t in tags], } cls.csv_data = ( @@ -169,12 +175,15 @@ class LocationTestCase(ViewTestCases.OrganizationalObjectViewTestCase): for location in locations: location.save() + tags = create_tags('Alpha', 'Bravo', 'Charlie') + cls.form_data = { 'name': 'Location X', 'slug': 'location-x', 'site': site.pk, 'tenant': tenant.pk, 'description': 'A new location', + 'tags': [t.pk for t in tags], } cls.csv_data = ( @@ -201,11 +210,14 @@ class RackRoleTestCase(ViewTestCases.OrganizationalObjectViewTestCase): RackRole(name='Rack Role 3', slug='rack-role-3'), ]) + tags = create_tags('Alpha', 'Bravo', 'Charlie') + cls.form_data = { 'name': 'Rack Role X', 'slug': 'rack-role-x', 'color': 'c0c0c0', 'description': 'New role', + 'tags': [t.pk for t in tags], } cls.csv_data = ( @@ -368,10 +380,13 @@ class ManufacturerTestCase(ViewTestCases.OrganizationalObjectViewTestCase): Manufacturer(name='Manufacturer 3', slug='manufacturer-3'), ]) + tags = create_tags('Alpha', 'Bravo', 'Charlie') + cls.form_data = { 'name': 'Manufacturer X', 'slug': 'manufacturer-x', 'description': 'A new manufacturer', + 'tags': [t.pk for t in tags], } cls.csv_data = ( @@ -1034,12 +1049,15 @@ class DeviceRoleTestCase(ViewTestCases.OrganizationalObjectViewTestCase): DeviceRole(name='Device Role 3', slug='device-role-3'), ]) + tags = create_tags('Alpha', 'Bravo', 'Charlie') + cls.form_data = { 'name': 'Devie Role X', 'slug': 'device-role-x', 'color': 'c0c0c0', 'vm_role': False, 'description': 'New device role', + 'tags': [t.pk for t in tags], } cls.csv_data = ( @@ -1069,6 +1087,8 @@ class PlatformTestCase(ViewTestCases.OrganizationalObjectViewTestCase): Platform(name='Platform 3', slug='platform-3', manufacturer=manufacturer), ]) + tags = create_tags('Alpha', 'Bravo', 'Charlie') + cls.form_data = { 'name': 'Platform X', 'slug': 'platform-x', @@ -1076,6 +1096,7 @@ class PlatformTestCase(ViewTestCases.OrganizationalObjectViewTestCase): 'napalm_driver': 'junos', 'napalm_args': None, 'description': 'A new platform', + 'tags': [t.pk for t in tags], } cls.csv_data = ( diff --git a/netbox/ipam/api/serializers.py b/netbox/ipam/api/serializers.py index 183c45b2a..2b221fdab 100644 --- a/netbox/ipam/api/serializers.py +++ b/netbox/ipam/api/serializers.py @@ -9,7 +9,6 @@ from ipam.choices import * from ipam.constants import IPADDRESS_ASSIGNMENT_MODELS, VLANGROUP_SCOPE_TYPES from ipam.models import * from netbox.api import ChoiceField, ContentTypeField, SerializedPKRelatedField -from netbox.api.serializers import OrganizationalModelSerializer from netbox.api.serializers import PrimaryModelSerializer from tenancy.api.nested_serializers import NestedTenantSerializer from utilities.api import get_serializer_for_model @@ -66,14 +65,14 @@ class RouteTargetSerializer(PrimaryModelSerializer): # RIRs/aggregates # -class RIRSerializer(OrganizationalModelSerializer): +class RIRSerializer(PrimaryModelSerializer): url = serializers.HyperlinkedIdentityField(view_name='ipam-api:rir-detail') aggregate_count = serializers.IntegerField(read_only=True) class Meta: model = RIR fields = [ - 'id', 'url', 'display', 'name', 'slug', 'is_private', 'description', 'custom_fields', 'created', + 'id', 'url', 'display', 'name', 'slug', 'is_private', 'description', 'tags', 'custom_fields', 'created', 'last_updated', 'aggregate_count', ] @@ -97,7 +96,7 @@ class AggregateSerializer(PrimaryModelSerializer): # VLANs # -class RoleSerializer(OrganizationalModelSerializer): +class RoleSerializer(PrimaryModelSerializer): url = serializers.HyperlinkedIdentityField(view_name='ipam-api:role-detail') prefix_count = serializers.IntegerField(read_only=True) vlan_count = serializers.IntegerField(read_only=True) @@ -105,12 +104,12 @@ class RoleSerializer(OrganizationalModelSerializer): class Meta: model = Role fields = [ - 'id', 'url', 'display', 'name', 'slug', 'weight', 'description', 'custom_fields', 'created', 'last_updated', - 'prefix_count', 'vlan_count', + 'id', 'url', 'display', 'name', 'slug', 'weight', 'description', 'tags', 'custom_fields', 'created', + 'last_updated', 'prefix_count', 'vlan_count', ] -class VLANGroupSerializer(OrganizationalModelSerializer): +class VLANGroupSerializer(PrimaryModelSerializer): url = serializers.HyperlinkedIdentityField(view_name='ipam-api:vlangroup-detail') scope_type = ContentTypeField( queryset=ContentType.objects.filter( @@ -126,8 +125,8 @@ class VLANGroupSerializer(OrganizationalModelSerializer): class Meta: model = VLANGroup fields = [ - 'id', 'url', 'display', 'name', 'slug', 'scope_type', 'scope_id', 'scope', 'description', 'custom_fields', - 'created', 'last_updated', 'vlan_count', + 'id', 'url', 'display', 'name', 'slug', 'scope_type', 'scope_id', 'scope', 'description', 'tags', + 'custom_fields', 'created', 'last_updated', 'vlan_count', ] validators = [] diff --git a/netbox/ipam/api/views.py b/netbox/ipam/api/views.py index 69b6d97f0..a043bd88c 100644 --- a/netbox/ipam/api/views.py +++ b/netbox/ipam/api/views.py @@ -48,7 +48,7 @@ class RouteTargetViewSet(CustomFieldModelViewSet): class RIRViewSet(CustomFieldModelViewSet): queryset = RIR.objects.annotate( aggregate_count=count_related(Aggregate, 'rir') - ) + ).prefetch_related('tags') serializer_class = serializers.RIRSerializer filterset_class = filtersets.RIRFilterSet @@ -71,7 +71,7 @@ class RoleViewSet(CustomFieldModelViewSet): queryset = Role.objects.annotate( prefix_count=count_related(Prefix, 'role'), vlan_count=count_related(VLAN, 'role') - ) + ).prefetch_related('tags') serializer_class = serializers.RoleSerializer filterset_class = filtersets.RoleFilterSet @@ -126,7 +126,7 @@ class IPAddressViewSet(CustomFieldModelViewSet): class VLANGroupViewSet(CustomFieldModelViewSet): queryset = VLANGroup.objects.annotate( vlan_count=count_related(VLAN, 'group') - ) + ).prefetch_related('tags') serializer_class = serializers.VLANGroupSerializer filterset_class = filtersets.VLANGroupFilterSet diff --git a/netbox/ipam/forms/bulk_edit.py b/netbox/ipam/forms/bulk_edit.py index 895dbe200..43bf40f88 100644 --- a/netbox/ipam/forms/bulk_edit.py +++ b/netbox/ipam/forms/bulk_edit.py @@ -71,7 +71,7 @@ class RouteTargetBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldMode ] -class RIRBulkEditForm(BootstrapMixin, CustomFieldModelBulkEditForm): +class RIRBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldModelBulkEditForm): pk = forms.ModelMultipleChoiceField( queryset=RIR.objects.all(), widget=forms.MultipleHiddenInput @@ -120,7 +120,7 @@ class AggregateBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldModelB } -class RoleBulkEditForm(BootstrapMixin, CustomFieldModelBulkEditForm): +class RoleBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldModelBulkEditForm): pk = forms.ModelMultipleChoiceField( queryset=Role.objects.all(), widget=forms.MultipleHiddenInput @@ -280,7 +280,7 @@ class IPAddressBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldModelB ] -class VLANGroupBulkEditForm(BootstrapMixin, CustomFieldModelBulkEditForm): +class VLANGroupBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldModelBulkEditForm): pk = forms.ModelMultipleChoiceField( queryset=VLANGroup.objects.all(), widget=forms.MultipleHiddenInput diff --git a/netbox/ipam/forms/models.py b/netbox/ipam/forms/models.py index d28f7b3ae..a9c8a0910 100644 --- a/netbox/ipam/forms/models.py +++ b/netbox/ipam/forms/models.py @@ -82,11 +82,15 @@ class RouteTargetForm(BootstrapMixin, TenancyForm, CustomFieldModelForm): class RIRForm(BootstrapMixin, CustomFieldModelForm): slug = SlugField() + tags = DynamicModelMultipleChoiceField( + queryset=Tag.objects.all(), + required=False + ) class Meta: model = RIR fields = [ - 'name', 'slug', 'is_private', 'description', + 'name', 'slug', 'is_private', 'description', 'tags', ] @@ -120,11 +124,15 @@ class AggregateForm(BootstrapMixin, TenancyForm, CustomFieldModelForm): class RoleForm(BootstrapMixin, CustomFieldModelForm): slug = SlugField() + tags = DynamicModelMultipleChoiceField( + queryset=Tag.objects.all(), + required=False + ) class Meta: model = Role fields = [ - 'name', 'slug', 'weight', 'description', + 'name', 'slug', 'weight', 'description', 'tags', ] @@ -530,15 +538,19 @@ class VLANGroupForm(BootstrapMixin, CustomFieldModelForm): } ) slug = SlugField() + tags = DynamicModelMultipleChoiceField( + queryset=Tag.objects.all(), + required=False + ) class Meta: model = VLANGroup fields = [ 'name', 'slug', 'description', 'scope_type', 'region', 'sitegroup', 'site', 'location', 'rack', - 'clustergroup', 'cluster', + 'clustergroup', 'cluster', 'tags', ] fieldsets = ( - ('VLAN Group', ('name', 'slug', 'description')), + ('VLAN Group', ('name', 'slug', 'description', 'tags')), ('Scope', ('scope_type', 'region', 'sitegroup', 'site', 'location', 'rack', 'clustergroup', 'cluster')), ) widgets = { diff --git a/netbox/ipam/migrations/0051_extend_tag_support.py b/netbox/ipam/migrations/0051_extend_tag_support.py new file mode 100644 index 000000000..ea31a6645 --- /dev/null +++ b/netbox/ipam/migrations/0051_extend_tag_support.py @@ -0,0 +1,30 @@ +# Generated by Django 3.2.8 on 2021-10-21 14:50 + +from django.db import migrations +import taggit.managers + + +class Migration(migrations.Migration): + + dependencies = [ + ('extras', '0062_clear_secrets_changelog'), + ('ipam', '0050_iprange'), + ] + + operations = [ + migrations.AddField( + model_name='rir', + name='tags', + field=taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag'), + ), + migrations.AddField( + model_name='role', + name='tags', + field=taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag'), + ), + migrations.AddField( + model_name='vlangroup', + name='tags', + field=taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag'), + ), + ] diff --git a/netbox/ipam/models/ip.py b/netbox/ipam/models/ip.py index 4fc2b5dbb..514e87a62 100644 --- a/netbox/ipam/models/ip.py +++ b/netbox/ipam/models/ip.py @@ -31,7 +31,7 @@ __all__ = ( ) -@extras_features('custom_fields', 'custom_links', 'export_templates', 'webhooks') +@extras_features('custom_fields', 'custom_links', 'export_templates', 'tags', 'webhooks') class RIR(OrganizationalModel): """ A Regional Internet Registry (RIR) is responsible for the allocation of a large portion of the global IP address @@ -168,7 +168,7 @@ class Aggregate(PrimaryModel): return min(utilization, 100) -@extras_features('custom_fields', 'custom_links', 'export_templates', 'webhooks') +@extras_features('custom_fields', 'custom_links', 'export_templates', 'tags', 'webhooks') class Role(OrganizationalModel): """ A Role represents the functional role of a Prefix or VLAN; for example, "Customer," "Infrastructure," or diff --git a/netbox/ipam/models/vlans.py b/netbox/ipam/models/vlans.py index 4ba8d7041..14eaa7ccc 100644 --- a/netbox/ipam/models/vlans.py +++ b/netbox/ipam/models/vlans.py @@ -21,7 +21,7 @@ __all__ = ( ) -@extras_features('custom_fields', 'custom_links', 'export_templates', 'webhooks') +@extras_features('custom_fields', 'custom_links', 'export_templates', 'tags', 'webhooks') class VLANGroup(OrganizationalModel): """ A VLAN group is an arbitrary collection of VLANs within which VLAN IDs and names must be unique. diff --git a/netbox/ipam/tables/ip.py b/netbox/ipam/tables/ip.py index ddad6c573..a2a0c67b1 100644 --- a/netbox/ipam/tables/ip.py +++ b/netbox/ipam/tables/ip.py @@ -85,11 +85,14 @@ class RIRTable(BaseTable): url_params={'rir_id': 'pk'}, verbose_name='Aggregates' ) + tags = TagColumn( + url_name='ipam:rir_list' + ) actions = ButtonsColumn(RIR) class Meta(BaseTable.Meta): model = RIR - fields = ('pk', 'name', 'slug', 'is_private', 'aggregate_count', 'description', 'actions') + fields = ('pk', 'name', 'slug', 'is_private', 'aggregate_count', 'description', 'tags', 'actions') default_columns = ('pk', 'name', 'is_private', 'aggregate_count', 'description', 'actions') @@ -144,11 +147,14 @@ class RoleTable(BaseTable): url_params={'role_id': 'pk'}, verbose_name='VLANs' ) + tags = TagColumn( + url_name='ipam:role_list' + ) actions = ButtonsColumn(Role) class Meta(BaseTable.Meta): model = Role - fields = ('pk', 'name', 'slug', 'prefix_count', 'vlan_count', 'description', 'weight', 'actions') + fields = ('pk', 'name', 'slug', 'prefix_count', 'vlan_count', 'description', 'weight', 'tags', 'actions') default_columns = ('pk', 'name', 'prefix_count', 'vlan_count', 'description', 'actions') diff --git a/netbox/ipam/tables/vlans.py b/netbox/ipam/tables/vlans.py index fd1e92be8..4c0d5d729 100644 --- a/netbox/ipam/tables/vlans.py +++ b/netbox/ipam/tables/vlans.py @@ -74,6 +74,9 @@ class VLANGroupTable(BaseTable): url_params={'group_id': 'pk'}, verbose_name='VLANs' ) + tags = TagColumn( + url_name='ipam:vlangroup_list' + ) actions = ButtonsColumn( model=VLANGroup, prepend_template=VLANGROUP_ADD_VLAN @@ -81,7 +84,7 @@ class VLANGroupTable(BaseTable): class Meta(BaseTable.Meta): model = VLANGroup - fields = ('pk', 'name', 'scope_type', 'scope', 'vlan_count', 'slug', 'description', 'actions') + fields = ('pk', 'name', 'scope_type', 'scope', 'vlan_count', 'slug', 'description', 'tags', 'actions') default_columns = ('pk', 'name', 'scope_type', 'scope', 'vlan_count', 'description', 'actions') diff --git a/netbox/ipam/tests/test_views.py b/netbox/ipam/tests/test_views.py index 2a0bfdf32..5440efcb6 100644 --- a/netbox/ipam/tests/test_views.py +++ b/netbox/ipam/tests/test_views.py @@ -104,11 +104,14 @@ class RIRTestCase(ViewTestCases.OrganizationalObjectViewTestCase): RIR(name='RIR 3', slug='rir-3'), ]) + tags = create_tags('Alpha', 'Bravo', 'Charlie') + cls.form_data = { 'name': 'RIR X', 'slug': 'rir-x', 'is_private': True, 'description': 'A new RIR', + 'tags': [t.pk for t in tags], } cls.csv_data = ( @@ -177,11 +180,14 @@ class RoleTestCase(ViewTestCases.OrganizationalObjectViewTestCase): Role(name='Role 3', slug='role-3'), ]) + tags = create_tags('Alpha', 'Bravo', 'Charlie') + cls.form_data = { 'name': 'Role X', 'slug': 'role-x', 'weight': 200, 'description': 'A new role', + 'tags': [t.pk for t in tags], } cls.csv_data = ( @@ -384,10 +390,13 @@ class VLANGroupTestCase(ViewTestCases.OrganizationalObjectViewTestCase): VLANGroup(name='VLAN Group 3', slug='vlan-group-3', scope=sites[0]), ]) + tags = create_tags('Alpha', 'Bravo', 'Charlie') + cls.form_data = { 'name': 'VLAN Group X', 'slug': 'vlan-group-x', 'description': 'A new VLAN group', + 'tags': [t.pk for t in tags], } cls.csv_data = ( diff --git a/netbox/netbox/api/serializers.py b/netbox/netbox/api/serializers.py index d17751e25..9f51d475d 100644 --- a/netbox/netbox/api/serializers.py +++ b/netbox/netbox/api/serializers.py @@ -147,13 +147,6 @@ class NestedTagSerializer(WritableNestedSerializer): # Base model serializers # -class OrganizationalModelSerializer(CustomFieldModelSerializer): - """ - Adds support for custom fields. - """ - pass - - class PrimaryModelSerializer(CustomFieldModelSerializer): """ Adds support for custom fields and tags. @@ -189,9 +182,9 @@ class PrimaryModelSerializer(CustomFieldModelSerializer): return instance -class NestedGroupModelSerializer(CustomFieldModelSerializer): +class NestedGroupModelSerializer(PrimaryModelSerializer): """ - Extends OrganizationalModelSerializer to include MPTT support. + Extends PrimaryModelSerializer to include MPTT support. """ _depth = serializers.IntegerField(source='level', read_only=True) diff --git a/netbox/netbox/graphql/types.py b/netbox/netbox/graphql/types.py index 181b9a0c6..7d71bd1fb 100644 --- a/netbox/netbox/graphql/types.py +++ b/netbox/netbox/graphql/types.py @@ -41,6 +41,7 @@ class ObjectType( class OrganizationalObjectType( ChangelogMixin, CustomFieldsMixin, + TagsMixin, BaseObjectType ): """ diff --git a/netbox/netbox/models.py b/netbox/netbox/models.py index 317548921..95cea6a93 100644 --- a/netbox/netbox/models.py +++ b/netbox/netbox/models.py @@ -143,6 +143,18 @@ class CustomValidationMixin(models.Model): post_clean.send(sender=self.__class__, instance=self) +class TagsMixin(models.Model): + """ + Enable the assignment of Tags. + """ + tags = TaggableManager( + through='extras.TaggedItem' + ) + + class Meta: + abstract = True + + # # Base model classes @@ -166,7 +178,7 @@ class ChangeLoggedModel(ChangeLoggingMixin, CustomValidationMixin, BigIDModel): abstract = True -class PrimaryModel(ChangeLoggingMixin, CustomFieldsMixin, CustomValidationMixin, BigIDModel): +class PrimaryModel(ChangeLoggingMixin, CustomFieldsMixin, CustomValidationMixin, TagsMixin, BigIDModel): """ Primary models represent real objects within the infrastructure being modeled. """ @@ -175,15 +187,12 @@ class PrimaryModel(ChangeLoggingMixin, CustomFieldsMixin, CustomValidationMixin, object_id_field='assigned_object_id', content_type_field='assigned_object_type' ) - tags = TaggableManager( - through='extras.TaggedItem' - ) class Meta: abstract = True -class NestedGroupModel(ChangeLoggingMixin, CustomFieldsMixin, CustomValidationMixin, BigIDModel, MPTTModel): +class NestedGroupModel(ChangeLoggingMixin, CustomFieldsMixin, CustomValidationMixin, TagsMixin, BigIDModel, MPTTModel): """ Base model for objects which are used to form a hierarchy (regions, locations, etc.). These models nest recursively using MPTT. Within each parent, each child instance must have a unique name. @@ -225,7 +234,7 @@ class NestedGroupModel(ChangeLoggingMixin, CustomFieldsMixin, CustomValidationMi }) -class OrganizationalModel(ChangeLoggingMixin, CustomFieldsMixin, CustomValidationMixin, BigIDModel): +class OrganizationalModel(ChangeLoggingMixin, CustomFieldsMixin, CustomValidationMixin, TagsMixin, BigIDModel): """ Organizational models are those which are used solely to categorize and qualify other objects, and do not convey any real information about the infrastructure being modeled (for example, functional device roles). Organizational diff --git a/netbox/tenancy/api/serializers.py b/netbox/tenancy/api/serializers.py index 27a14b350..90c13725c 100644 --- a/netbox/tenancy/api/serializers.py +++ b/netbox/tenancy/api/serializers.py @@ -2,7 +2,7 @@ from django.contrib.auth.models import ContentType from rest_framework import serializers from netbox.api import ChoiceField, ContentTypeField -from netbox.api.serializers import NestedGroupModelSerializer, OrganizationalModelSerializer, PrimaryModelSerializer +from netbox.api.serializers import NestedGroupModelSerializer, PrimaryModelSerializer from tenancy.choices import ContactPriorityChoices from tenancy.models import * from .nested_serializers import * @@ -20,8 +20,8 @@ class TenantGroupSerializer(NestedGroupModelSerializer): class Meta: model = TenantGroup fields = [ - 'id', 'url', 'display', 'name', 'slug', 'parent', 'description', 'custom_fields', 'created', 'last_updated', - 'tenant_count', '_depth', + 'id', 'url', 'display', 'name', 'slug', 'parent', 'description', 'tags', 'custom_fields', 'created', + 'last_updated', 'tenant_count', '_depth', ] @@ -60,18 +60,18 @@ class ContactGroupSerializer(NestedGroupModelSerializer): class Meta: model = ContactGroup fields = [ - 'id', 'url', 'display', 'name', 'slug', 'parent', 'description', 'custom_fields', 'created', 'last_updated', - 'contact_count', '_depth', + 'id', 'url', 'display', 'name', 'slug', 'parent', 'description', 'tags', 'custom_fields', 'created', + 'last_updated', 'contact_count', '_depth', ] -class ContactRoleSerializer(OrganizationalModelSerializer): +class ContactRoleSerializer(PrimaryModelSerializer): url = serializers.HyperlinkedIdentityField(view_name='tenancy-api:contactrole-detail') class Meta: model = ContactRole fields = [ - 'id', 'url', 'display', 'name', 'slug', 'description', 'custom_fields', 'created', 'last_updated', + 'id', 'url', 'display', 'name', 'slug', 'description', 'tags', 'custom_fields', 'created', 'last_updated', ] diff --git a/netbox/tenancy/api/views.py b/netbox/tenancy/api/views.py index 7ce16c143..8c7c33aba 100644 --- a/netbox/tenancy/api/views.py +++ b/netbox/tenancy/api/views.py @@ -30,7 +30,7 @@ class TenantGroupViewSet(CustomFieldModelViewSet): 'group', 'tenant_count', cumulative=True - ) + ).prefetch_related('tags') serializer_class = serializers.TenantGroupSerializer filterset_class = filtersets.TenantGroupFilterSet @@ -64,28 +64,24 @@ class ContactGroupViewSet(CustomFieldModelViewSet): 'group', 'contact_count', cumulative=True - ) + ).prefetch_related('tags') serializer_class = serializers.ContactGroupSerializer filterset_class = filtersets.ContactGroupFilterSet class ContactRoleViewSet(CustomFieldModelViewSet): - queryset = ContactRole.objects.all() + queryset = ContactRole.objects.prefetch_related('tags') serializer_class = serializers.ContactRoleSerializer filterset_class = filtersets.ContactRoleFilterSet class ContactViewSet(CustomFieldModelViewSet): - queryset = Contact.objects.prefetch_related( - 'group', 'tags' - ) + queryset = Contact.objects.prefetch_related('group', 'tags') serializer_class = serializers.ContactSerializer filterset_class = filtersets.ContactFilterSet class ContactAssignmentViewSet(CustomFieldModelViewSet): - queryset = ContactAssignment.objects.prefetch_related( - 'contact', 'role' - ) + queryset = ContactAssignment.objects.prefetch_related('contact', 'role') serializer_class = serializers.ContactAssignmentSerializer filterset_class = filtersets.ContactAssignmentFilterSet diff --git a/netbox/tenancy/forms/bulk_edit.py b/netbox/tenancy/forms/bulk_edit.py index a34b8def1..f461fe73c 100644 --- a/netbox/tenancy/forms/bulk_edit.py +++ b/netbox/tenancy/forms/bulk_edit.py @@ -17,7 +17,7 @@ __all__ = ( # Tenants # -class TenantGroupBulkEditForm(BootstrapMixin, CustomFieldModelBulkEditForm): +class TenantGroupBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldModelBulkEditForm): pk = forms.ModelMultipleChoiceField( queryset=TenantGroup.objects.all(), widget=forms.MultipleHiddenInput @@ -55,7 +55,7 @@ class TenantBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldModelBulk # Contacts # -class ContactGroupBulkEditForm(BootstrapMixin, CustomFieldModelBulkEditForm): +class ContactGroupBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldModelBulkEditForm): pk = forms.ModelMultipleChoiceField( queryset=ContactGroup.objects.all(), widget=forms.MultipleHiddenInput @@ -73,7 +73,7 @@ class ContactGroupBulkEditForm(BootstrapMixin, CustomFieldModelBulkEditForm): nullable_fields = ['parent', 'description'] -class ContactRoleBulkEditForm(BootstrapMixin, CustomFieldModelBulkEditForm): +class ContactRoleBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldModelBulkEditForm): pk = forms.ModelMultipleChoiceField( queryset=ContactRole.objects.all(), widget=forms.MultipleHiddenInput diff --git a/netbox/tenancy/forms/models.py b/netbox/tenancy/forms/models.py index b15065705..0237e4ef8 100644 --- a/netbox/tenancy/forms/models.py +++ b/netbox/tenancy/forms/models.py @@ -28,11 +28,15 @@ class TenantGroupForm(BootstrapMixin, CustomFieldModelForm): required=False ) slug = SlugField() + tags = DynamicModelMultipleChoiceField( + queryset=Tag.objects.all(), + required=False + ) class Meta: model = TenantGroup fields = [ - 'parent', 'name', 'slug', 'description', + 'parent', 'name', 'slug', 'description', 'tags', ] @@ -68,18 +72,26 @@ class ContactGroupForm(BootstrapMixin, CustomFieldModelForm): required=False ) slug = SlugField() + tags = DynamicModelMultipleChoiceField( + queryset=Tag.objects.all(), + required=False + ) class Meta: model = ContactGroup - fields = ['parent', 'name', 'slug', 'description'] + fields = ('parent', 'name', 'slug', 'description', 'tags') class ContactRoleForm(BootstrapMixin, CustomFieldModelForm): slug = SlugField() + tags = DynamicModelMultipleChoiceField( + queryset=Tag.objects.all(), + required=False + ) class Meta: model = ContactRole - fields = ['name', 'slug', 'description'] + fields = ('name', 'slug', 'description', 'tags') class ContactForm(BootstrapMixin, CustomFieldModelForm): diff --git a/netbox/tenancy/migrations/0004_extend_tag_support.py b/netbox/tenancy/migrations/0004_extend_tag_support.py new file mode 100644 index 000000000..942be38b5 --- /dev/null +++ b/netbox/tenancy/migrations/0004_extend_tag_support.py @@ -0,0 +1,30 @@ +# Generated by Django 3.2.8 on 2021-10-21 14:50 + +from django.db import migrations +import taggit.managers + + +class Migration(migrations.Migration): + + dependencies = [ + ('extras', '0062_clear_secrets_changelog'), + ('tenancy', '0003_contacts'), + ] + + operations = [ + migrations.AddField( + model_name='contactgroup', + name='tags', + field=taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag'), + ), + migrations.AddField( + model_name='contactrole', + name='tags', + field=taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag'), + ), + migrations.AddField( + model_name='tenantgroup', + name='tags', + field=taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag'), + ), + ] diff --git a/netbox/tenancy/models.py b/netbox/tenancy/models.py index c709236e2..01ea2d0d5 100644 --- a/netbox/tenancy/models.py +++ b/netbox/tenancy/models.py @@ -24,7 +24,7 @@ __all__ = ( # Tenants # -@extras_features('custom_fields', 'custom_links', 'export_templates', 'webhooks') +@extras_features('custom_fields', 'custom_links', 'export_templates', 'tags', 'webhooks') class TenantGroup(NestedGroupModel): """ An arbitrary collection of Tenants. @@ -111,7 +111,7 @@ class Tenant(PrimaryModel): # Contacts # -@extras_features('custom_fields', 'custom_links', 'export_templates', 'webhooks') +@extras_features('custom_fields', 'custom_links', 'export_templates', 'tags', 'webhooks') class ContactGroup(NestedGroupModel): """ An arbitrary collection of Contacts. @@ -145,7 +145,7 @@ class ContactGroup(NestedGroupModel): return reverse('tenancy:contactgroup', args=[self.pk]) -@extras_features('custom_fields', 'custom_links', 'export_templates', 'webhooks') +@extras_features('custom_fields', 'custom_links', 'export_templates', 'tags', 'webhooks') class ContactRole(OrganizationalModel): """ Functional role for a Contact assigned to an object. diff --git a/netbox/tenancy/tables.py b/netbox/tenancy/tables.py index 5b254842b..02c431846 100644 --- a/netbox/tenancy/tables.py +++ b/netbox/tenancy/tables.py @@ -55,11 +55,14 @@ class TenantGroupTable(BaseTable): url_params={'group_id': 'pk'}, verbose_name='Tenants' ) + tags = TagColumn( + url_name='tenancy:tenantgroup_list' + ) actions = ButtonsColumn(TenantGroup) class Meta(BaseTable.Meta): model = TenantGroup - fields = ('pk', 'name', 'tenant_count', 'description', 'slug', 'actions') + fields = ('pk', 'name', 'tenant_count', 'description', 'slug', 'tags', 'actions') default_columns = ('pk', 'name', 'tenant_count', 'description', 'actions') @@ -96,11 +99,14 @@ class ContactGroupTable(BaseTable): url_params={'role_id': 'pk'}, verbose_name='Contacts' ) + tags = TagColumn( + url_name='tenancy:contactgroup_list' + ) actions = ButtonsColumn(ContactGroup) class Meta(BaseTable.Meta): model = ContactGroup - fields = ('pk', 'name', 'contact_count', 'description', 'slug', 'actions') + fields = ('pk', 'name', 'contact_count', 'description', 'slug', 'tags', 'actions') default_columns = ('pk', 'name', 'contact_count', 'description', 'actions') diff --git a/netbox/tenancy/tests/test_views.py b/netbox/tenancy/tests/test_views.py index fb7ff3ce3..dcfcc1652 100644 --- a/netbox/tenancy/tests/test_views.py +++ b/netbox/tenancy/tests/test_views.py @@ -16,10 +16,13 @@ class TenantGroupTestCase(ViewTestCases.OrganizationalObjectViewTestCase): for tenanantgroup in tenant_groups: tenanantgroup.save() + tags = create_tags('Alpha', 'Bravo', 'Charlie') + cls.form_data = { 'name': 'Tenant Group X', 'slug': 'tenant-group-x', 'description': 'A new tenant group', + 'tags': [t.pk for t in tags], } cls.csv_data = ( @@ -90,10 +93,13 @@ class ContactGroupTestCase(ViewTestCases.OrganizationalObjectViewTestCase): for tenanantgroup in contact_groups: tenanantgroup.save() + tags = create_tags('Alpha', 'Bravo', 'Charlie') + cls.form_data = { 'name': 'Contact Group X', 'slug': 'contact-group-x', 'description': 'A new contact group', + 'tags': [t.pk for t in tags], } cls.csv_data = ( @@ -120,10 +126,13 @@ class ContactRoleTestCase(ViewTestCases.OrganizationalObjectViewTestCase): ContactRole(name='Contact Role 3', slug='contact-role-3'), ]) + tags = create_tags('Alpha', 'Bravo', 'Charlie') + cls.form_data = { 'name': 'Devie Role X', 'slug': 'contact-role-x', 'description': 'New contact role', + 'tags': [t.pk for t in tags], } cls.csv_data = ( diff --git a/netbox/virtualization/api/serializers.py b/netbox/virtualization/api/serializers.py index 1928960a9..ef8c975d3 100644 --- a/netbox/virtualization/api/serializers.py +++ b/netbox/virtualization/api/serializers.py @@ -6,7 +6,7 @@ from dcim.choices import InterfaceModeChoices from ipam.api.nested_serializers import NestedIPAddressSerializer, NestedVLANSerializer from ipam.models import VLAN from netbox.api import ChoiceField, SerializedPKRelatedField -from netbox.api.serializers import OrganizationalModelSerializer, PrimaryModelSerializer +from netbox.api.serializers import PrimaryModelSerializer from tenancy.api.nested_serializers import NestedTenantSerializer from virtualization.choices import * from virtualization.models import Cluster, ClusterGroup, ClusterType, VirtualMachine, VMInterface @@ -17,26 +17,26 @@ from .nested_serializers import * # Clusters # -class ClusterTypeSerializer(OrganizationalModelSerializer): +class ClusterTypeSerializer(PrimaryModelSerializer): url = serializers.HyperlinkedIdentityField(view_name='virtualization-api:clustertype-detail') cluster_count = serializers.IntegerField(read_only=True) class Meta: model = ClusterType fields = [ - 'id', 'url', 'display', 'name', 'slug', 'description', 'custom_fields', 'created', 'last_updated', + 'id', 'url', 'display', 'name', 'slug', 'description', 'tags', 'custom_fields', 'created', 'last_updated', 'cluster_count', ] -class ClusterGroupSerializer(OrganizationalModelSerializer): +class ClusterGroupSerializer(PrimaryModelSerializer): url = serializers.HyperlinkedIdentityField(view_name='virtualization-api:clustergroup-detail') cluster_count = serializers.IntegerField(read_only=True) class Meta: model = ClusterGroup fields = [ - 'id', 'url', 'display', 'name', 'slug', 'description', 'custom_fields', 'created', 'last_updated', + 'id', 'url', 'display', 'name', 'slug', 'description', 'tags', 'custom_fields', 'created', 'last_updated', 'cluster_count', ] diff --git a/netbox/virtualization/api/views.py b/netbox/virtualization/api/views.py index 8eebd2120..d07ace3d5 100644 --- a/netbox/virtualization/api/views.py +++ b/netbox/virtualization/api/views.py @@ -23,7 +23,7 @@ class VirtualizationRootView(APIRootView): class ClusterTypeViewSet(CustomFieldModelViewSet): queryset = ClusterType.objects.annotate( cluster_count=count_related(Cluster, 'type') - ) + ).prefetch_related('tags') serializer_class = serializers.ClusterTypeSerializer filterset_class = filtersets.ClusterTypeFilterSet @@ -31,7 +31,7 @@ class ClusterTypeViewSet(CustomFieldModelViewSet): class ClusterGroupViewSet(CustomFieldModelViewSet): queryset = ClusterGroup.objects.annotate( cluster_count=count_related(Cluster, 'group') - ) + ).prefetch_related('tags') serializer_class = serializers.ClusterGroupSerializer filterset_class = filtersets.ClusterGroupFilterSet diff --git a/netbox/virtualization/forms/bulk_edit.py b/netbox/virtualization/forms/bulk_edit.py index c140fbc73..d18d432cd 100644 --- a/netbox/virtualization/forms/bulk_edit.py +++ b/netbox/virtualization/forms/bulk_edit.py @@ -23,7 +23,7 @@ __all__ = ( ) -class ClusterTypeBulkEditForm(BootstrapMixin, CustomFieldModelBulkEditForm): +class ClusterTypeBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldModelBulkEditForm): pk = forms.ModelMultipleChoiceField( queryset=ClusterType.objects.all(), widget=forms.MultipleHiddenInput @@ -37,7 +37,7 @@ class ClusterTypeBulkEditForm(BootstrapMixin, CustomFieldModelBulkEditForm): nullable_fields = ['description'] -class ClusterGroupBulkEditForm(BootstrapMixin, CustomFieldModelBulkEditForm): +class ClusterGroupBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldModelBulkEditForm): pk = forms.ModelMultipleChoiceField( queryset=ClusterGroup.objects.all(), widget=forms.MultipleHiddenInput diff --git a/netbox/virtualization/forms/models.py b/netbox/virtualization/forms/models.py index d66bc9f1f..88ebc9e83 100644 --- a/netbox/virtualization/forms/models.py +++ b/netbox/virtualization/forms/models.py @@ -28,22 +28,30 @@ __all__ = ( class ClusterTypeForm(BootstrapMixin, CustomFieldModelForm): slug = SlugField() + tags = DynamicModelMultipleChoiceField( + queryset=Tag.objects.all(), + required=False + ) class Meta: model = ClusterType - fields = [ - 'name', 'slug', 'description', - ] + fields = ( + 'name', 'slug', 'description', 'tags', + ) class ClusterGroupForm(BootstrapMixin, CustomFieldModelForm): slug = SlugField() + tags = DynamicModelMultipleChoiceField( + queryset=Tag.objects.all(), + required=False + ) class Meta: model = ClusterGroup - fields = [ - 'name', 'slug', 'description', - ] + fields = ( + 'name', 'slug', 'description', 'tags', + ) class ClusterForm(BootstrapMixin, TenancyForm, CustomFieldModelForm): diff --git a/netbox/virtualization/migrations/0025_extend_tag_support.py b/netbox/virtualization/migrations/0025_extend_tag_support.py new file mode 100644 index 000000000..c77aee194 --- /dev/null +++ b/netbox/virtualization/migrations/0025_extend_tag_support.py @@ -0,0 +1,25 @@ +# Generated by Django 3.2.8 on 2021-10-21 14:50 + +from django.db import migrations +import taggit.managers + + +class Migration(migrations.Migration): + + dependencies = [ + ('extras', '0062_clear_secrets_changelog'), + ('virtualization', '0024_cluster_relax_uniqueness'), + ] + + operations = [ + migrations.AddField( + model_name='clustergroup', + name='tags', + field=taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag'), + ), + migrations.AddField( + model_name='clustertype', + name='tags', + field=taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag'), + ), + ] diff --git a/netbox/virtualization/models.py b/netbox/virtualization/models.py index 11792944a..bd64f56cf 100644 --- a/netbox/virtualization/models.py +++ b/netbox/virtualization/models.py @@ -30,7 +30,7 @@ __all__ = ( # Cluster types # -@extras_features('custom_fields', 'custom_links', 'export_templates', 'webhooks') +@extras_features('custom_fields', 'custom_links', 'export_templates', 'tags', 'webhooks') class ClusterType(OrganizationalModel): """ A type of Cluster. @@ -64,7 +64,7 @@ class ClusterType(OrganizationalModel): # Cluster groups # -@extras_features('custom_fields', 'custom_links', 'export_templates', 'webhooks') +@extras_features('custom_fields', 'custom_links', 'export_templates', 'tags', 'webhooks') class ClusterGroup(OrganizationalModel): """ An organizational group of Clusters. diff --git a/netbox/virtualization/tables.py b/netbox/virtualization/tables.py index b0e922e71..64b376e1d 100644 --- a/netbox/virtualization/tables.py +++ b/netbox/virtualization/tables.py @@ -40,11 +40,14 @@ class ClusterTypeTable(BaseTable): cluster_count = tables.Column( verbose_name='Clusters' ) + tags = TagColumn( + url_name='virtualization:clustertype_list' + ) actions = ButtonsColumn(ClusterType) class Meta(BaseTable.Meta): model = ClusterType - fields = ('pk', 'name', 'slug', 'cluster_count', 'description', 'actions') + fields = ('pk', 'name', 'slug', 'cluster_count', 'description', 'tags', 'actions') default_columns = ('pk', 'name', 'cluster_count', 'description', 'actions') @@ -60,11 +63,14 @@ class ClusterGroupTable(BaseTable): cluster_count = tables.Column( verbose_name='Clusters' ) + tags = TagColumn( + url_name='virtualization:clustergroup_list' + ) actions = ButtonsColumn(ClusterGroup) class Meta(BaseTable.Meta): model = ClusterGroup - fields = ('pk', 'name', 'slug', 'cluster_count', 'description', 'actions') + fields = ('pk', 'name', 'slug', 'cluster_count', 'description', 'tags', 'actions') default_columns = ('pk', 'name', 'cluster_count', 'description', 'actions') diff --git a/netbox/virtualization/tests/test_views.py b/netbox/virtualization/tests/test_views.py index 020c9ebc5..138b1afae 100644 --- a/netbox/virtualization/tests/test_views.py +++ b/netbox/virtualization/tests/test_views.py @@ -22,10 +22,13 @@ class ClusterGroupTestCase(ViewTestCases.OrganizationalObjectViewTestCase): ClusterGroup(name='Cluster Group 3', slug='cluster-group-3'), ]) + tags = create_tags('Alpha', 'Bravo', 'Charlie') + cls.form_data = { 'name': 'Cluster Group X', 'slug': 'cluster-group-x', 'description': 'A new cluster group', + 'tags': [t.pk for t in tags], } cls.csv_data = ( @@ -52,10 +55,13 @@ class ClusterTypeTestCase(ViewTestCases.OrganizationalObjectViewTestCase): ClusterType(name='Cluster Type 3', slug='cluster-type-3'), ]) + tags = create_tags('Alpha', 'Bravo', 'Charlie') + cls.form_data = { 'name': 'Cluster Type X', 'slug': 'cluster-type-x', 'description': 'A new cluster type', + 'tags': [t.pk for t in tags], } cls.csv_data = ( From 6f05f17c62ee075a7a997554e981ad81489ec2f6 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Thu, 21 Oct 2021 11:23:31 -0400 Subject: [PATCH 050/289] Standardize & simplify tags panel inclusion --- netbox/templates/circuits/circuit.html | 2 +- netbox/templates/circuits/circuittype.html | 1 + netbox/templates/circuits/provider.html | 2 +- netbox/templates/circuits/providernetwork.html | 2 +- netbox/templates/dcim/cable.html | 2 +- netbox/templates/dcim/consoleport.html | 2 +- netbox/templates/dcim/consoleserverport.html | 2 +- netbox/templates/dcim/device.html | 2 +- netbox/templates/dcim/devicebay.html | 2 +- netbox/templates/dcim/devicerole.html | 1 + netbox/templates/dcim/devicetype.html | 2 +- netbox/templates/dcim/frontport.html | 2 +- netbox/templates/dcim/interface.html | 2 +- netbox/templates/dcim/inventoryitem.html | 2 +- netbox/templates/dcim/location.html | 1 + netbox/templates/dcim/manufacturer.html | 1 + netbox/templates/dcim/platform.html | 1 + netbox/templates/dcim/powerfeed.html | 2 +- netbox/templates/dcim/poweroutlet.html | 2 +- netbox/templates/dcim/powerpanel.html | 2 +- netbox/templates/dcim/powerport.html | 2 +- netbox/templates/dcim/rack.html | 2 +- netbox/templates/dcim/rackreservation.html | 2 +- netbox/templates/dcim/rackrole.html | 1 + netbox/templates/dcim/rearport.html | 2 +- netbox/templates/dcim/region.html | 1 + netbox/templates/dcim/site.html | 3 +-- netbox/templates/dcim/sitegroup.html | 1 + netbox/templates/dcim/virtualchassis.html | 2 +- netbox/templates/inc/panels/tags.html | 15 +++++++++------ netbox/templates/ipam/aggregate.html | 2 +- netbox/templates/ipam/ipaddress.html | 2 +- netbox/templates/ipam/iprange.html | 2 +- netbox/templates/ipam/prefix.html | 2 +- netbox/templates/ipam/rir.html | 1 + netbox/templates/ipam/role.html | 1 + netbox/templates/ipam/routetarget.html | 2 +- netbox/templates/ipam/service.html | 2 +- netbox/templates/ipam/vlan.html | 2 +- netbox/templates/ipam/vlangroup.html | 1 + netbox/templates/ipam/vrf.html | 2 +- netbox/templates/tenancy/contact.html | 2 +- netbox/templates/tenancy/contactgroup.html | 1 + netbox/templates/tenancy/contactrole.html | 1 + netbox/templates/tenancy/tenant.html | 2 +- netbox/templates/tenancy/tenantgroup.html | 1 + netbox/templates/virtualization/cluster.html | 2 +- netbox/templates/virtualization/clustergroup.html | 1 + netbox/templates/virtualization/clustertype.html | 1 + .../templates/virtualization/virtualmachine.html | 2 +- netbox/templates/virtualization/vminterface.html | 4 ++-- 51 files changed, 60 insertions(+), 42 deletions(-) diff --git a/netbox/templates/circuits/circuit.html b/netbox/templates/circuits/circuit.html index b61dac6fc..22713b592 100644 --- a/netbox/templates/circuits/circuit.html +++ b/netbox/templates/circuits/circuit.html @@ -65,7 +65,7 @@
{% include 'inc/panels/custom_fields.html' %} - {% include 'inc/panels/tags.html' with tags=object.tags.all url='circuits:circuit_list' %} + {% include 'inc/panels/tags.html' %} {% include 'inc/panels/comments.html' %} {% plugin_left_page object %}
diff --git a/netbox/templates/circuits/circuittype.html b/netbox/templates/circuits/circuittype.html index ad81de7e1..57737a6d1 100644 --- a/netbox/templates/circuits/circuittype.html +++ b/netbox/templates/circuits/circuittype.html @@ -28,6 +28,7 @@
+ {% include 'inc/panels/tags.html' %} {% plugin_left_page object %}
diff --git a/netbox/templates/circuits/provider.html b/netbox/templates/circuits/provider.html index d353e4f37..c16afa421 100644 --- a/netbox/templates/circuits/provider.html +++ b/netbox/templates/circuits/provider.html @@ -47,7 +47,7 @@
- {% include 'inc/panels/tags.html' with tags=object.tags.all url='circuits:provider_list' %} + {% include 'inc/panels/tags.html' %} {% plugin_left_page object %}
diff --git a/netbox/templates/circuits/providernetwork.html b/netbox/templates/circuits/providernetwork.html index 18a11e115..9641c9934 100644 --- a/netbox/templates/circuits/providernetwork.html +++ b/netbox/templates/circuits/providernetwork.html @@ -38,7 +38,7 @@
{% include 'inc/panels/custom_fields.html' %} - {% include 'inc/panels/tags.html' with tags=object.tags.all url='circuits:providernetwork_list' %} + {% include 'inc/panels/tags.html' %} {% include 'inc/panels/comments.html' %} {% plugin_right_page object %}
diff --git a/netbox/templates/dcim/cable.html b/netbox/templates/dcim/cable.html index c5d1f7906..00704e6ca 100644 --- a/netbox/templates/dcim/cable.html +++ b/netbox/templates/dcim/cable.html @@ -64,7 +64,7 @@ {% include 'inc/panels/custom_fields.html' %} - {% include 'inc/panels/tags.html' with tags=object.tags.all url='dcim:cable_list' %} + {% include 'inc/panels/tags.html' %} {% plugin_left_page object %}
diff --git a/netbox/templates/dcim/consoleport.html b/netbox/templates/dcim/consoleport.html index c340cbc5c..60711eb9d 100644 --- a/netbox/templates/dcim/consoleport.html +++ b/netbox/templates/dcim/consoleport.html @@ -41,7 +41,7 @@
{% include 'inc/panels/custom_fields.html' %} - {% include 'inc/panels/tags.html' with tags=object.tags.all %} + {% include 'inc/panels/tags.html' %} {% plugin_left_page object %}
diff --git a/netbox/templates/dcim/consoleserverport.html b/netbox/templates/dcim/consoleserverport.html index 91de60252..f65af3285 100644 --- a/netbox/templates/dcim/consoleserverport.html +++ b/netbox/templates/dcim/consoleserverport.html @@ -41,7 +41,7 @@
{% include 'inc/panels/custom_fields.html' %} - {% include 'inc/panels/tags.html' with tags=object.tags.all %} + {% include 'inc/panels/tags.html' %} {% plugin_left_page object %}
diff --git a/netbox/templates/dcim/device.html b/netbox/templates/dcim/device.html index 869ab1ec7..ea0c795c5 100644 --- a/netbox/templates/dcim/device.html +++ b/netbox/templates/dcim/device.html @@ -221,7 +221,7 @@
{% include 'inc/panels/custom_fields.html' %} - {% include 'inc/panels/tags.html' with tags=object.tags.all url='dcim:device_list' %} + {% include 'inc/panels/tags.html' %} {% include 'inc/panels/comments.html' %} {% plugin_left_page object %} diff --git a/netbox/templates/dcim/devicebay.html b/netbox/templates/dcim/devicebay.html index 918b6b022..ff8f90db2 100644 --- a/netbox/templates/dcim/devicebay.html +++ b/netbox/templates/dcim/devicebay.html @@ -33,7 +33,7 @@ {% include 'inc/panels/custom_fields.html' %} - {% include 'inc/panels/tags.html' with tags=object.tags.all %} + {% include 'inc/panels/tags.html' %} {% plugin_left_page object %}
diff --git a/netbox/templates/dcim/devicerole.html b/netbox/templates/dcim/devicerole.html index 2c2d7fe6f..22385ae27 100644 --- a/netbox/templates/dcim/devicerole.html +++ b/netbox/templates/dcim/devicerole.html @@ -58,6 +58,7 @@
+ {% include 'inc/panels/tags.html' %} {% plugin_left_page object %}
diff --git a/netbox/templates/dcim/devicetype.html b/netbox/templates/dcim/devicetype.html index 74a3e73d7..21a04e7d0 100644 --- a/netbox/templates/dcim/devicetype.html +++ b/netbox/templates/dcim/devicetype.html @@ -88,7 +88,7 @@
{% include 'inc/panels/custom_fields.html' %} - {% include 'inc/panels/tags.html' with tags=object.tags.all url='dcim:devicetype_list' %} + {% include 'inc/panels/tags.html' %} {% include 'inc/panels/comments.html' %} {% plugin_right_page object %}
diff --git a/netbox/templates/dcim/frontport.html b/netbox/templates/dcim/frontport.html index c6b6cea48..6cc3d482f 100644 --- a/netbox/templates/dcim/frontport.html +++ b/netbox/templates/dcim/frontport.html @@ -53,7 +53,7 @@ {% include 'inc/panels/custom_fields.html' %} - {% include 'inc/panels/tags.html' with tags=object.tags.all %} + {% include 'inc/panels/tags.html' %} {% plugin_left_page object %}
diff --git a/netbox/templates/dcim/interface.html b/netbox/templates/dcim/interface.html index 0715bec58..af038326d 100644 --- a/netbox/templates/dcim/interface.html +++ b/netbox/templates/dcim/interface.html @@ -103,7 +103,7 @@
{% include 'inc/panels/custom_fields.html' %} - {% include 'inc/panels/tags.html' with tags=object.tags.all %} + {% include 'inc/panels/tags.html' %} {% plugin_left_page object %}
diff --git a/netbox/templates/dcim/inventoryitem.html b/netbox/templates/dcim/inventoryitem.html index e55d441d4..163d8edb3 100644 --- a/netbox/templates/dcim/inventoryitem.html +++ b/netbox/templates/dcim/inventoryitem.html @@ -65,7 +65,7 @@
{% include 'inc/panels/custom_fields.html' %} - {% include 'inc/panels/tags.html' with tags=object.tags.all %} + {% include 'inc/panels/tags.html' %} {% plugin_left_page object %}
diff --git a/netbox/templates/dcim/location.html b/netbox/templates/dcim/location.html index eeb891daf..434253d43 100644 --- a/netbox/templates/dcim/location.html +++ b/netbox/templates/dcim/location.html @@ -68,6 +68,7 @@
+ {% include 'inc/panels/tags.html' %} {% plugin_left_page object %}
diff --git a/netbox/templates/dcim/manufacturer.html b/netbox/templates/dcim/manufacturer.html index 792a3e127..d43a206c6 100644 --- a/netbox/templates/dcim/manufacturer.html +++ b/netbox/templates/dcim/manufacturer.html @@ -34,6 +34,7 @@
+ {% include 'inc/panels/tags.html' %} {% plugin_left_page object %}
diff --git a/netbox/templates/dcim/platform.html b/netbox/templates/dcim/platform.html index bbdf809dd..8cd26a116 100644 --- a/netbox/templates/dcim/platform.html +++ b/netbox/templates/dcim/platform.html @@ -55,6 +55,7 @@
+ {% include 'inc/panels/tags.html' %} {% plugin_left_page object %}
diff --git a/netbox/templates/dcim/powerfeed.html b/netbox/templates/dcim/powerfeed.html index f29a127e3..1824cac19 100644 --- a/netbox/templates/dcim/powerfeed.html +++ b/netbox/templates/dcim/powerfeed.html @@ -108,7 +108,7 @@
{% include 'inc/panels/custom_fields.html' %} - {% include 'inc/panels/tags.html' with tags=object.tags.all url='dcim:powerfeed_list' %} + {% include 'inc/panels/tags.html' %} {% plugin_left_page object %}
diff --git a/netbox/templates/dcim/poweroutlet.html b/netbox/templates/dcim/poweroutlet.html index 1f960e0d5..396ef42a8 100644 --- a/netbox/templates/dcim/poweroutlet.html +++ b/netbox/templates/dcim/poweroutlet.html @@ -45,7 +45,7 @@
{% include 'inc/panels/custom_fields.html' %} - {% include 'inc/panels/tags.html' with tags=object.tags.all %} + {% include 'inc/panels/tags.html' %} {% plugin_left_page object %}
diff --git a/netbox/templates/dcim/powerpanel.html b/netbox/templates/dcim/powerpanel.html index a99aabf32..021fa1133 100644 --- a/netbox/templates/dcim/powerpanel.html +++ b/netbox/templates/dcim/powerpanel.html @@ -39,7 +39,7 @@
- {% include 'inc/panels/tags.html' with tags=object.tags.all url='dcim:powerpanel_list' %} + {% include 'inc/panels/tags.html' %} {% plugin_left_page object %}
diff --git a/netbox/templates/dcim/powerport.html b/netbox/templates/dcim/powerport.html index 74ad9603b..dfe428c50 100644 --- a/netbox/templates/dcim/powerport.html +++ b/netbox/templates/dcim/powerport.html @@ -45,7 +45,7 @@
{% include 'inc/panels/custom_fields.html' %} - {% include 'inc/panels/tags.html' with tags=object.tags.all %} + {% include 'inc/panels/tags.html' %} {% plugin_left_page object %}
diff --git a/netbox/templates/dcim/rack.html b/netbox/templates/dcim/rack.html index 586d31771..93bd21fd9 100644 --- a/netbox/templates/dcim/rack.html +++ b/netbox/templates/dcim/rack.html @@ -163,7 +163,7 @@
{% include 'inc/panels/custom_fields.html' %} - {% include 'inc/panels/tags.html' with tags=object.tags.all url='dcim:rack_list' %} + {% include 'inc/panels/tags.html' %} {% include 'inc/panels/comments.html' %} {% if power_feeds %}
diff --git a/netbox/templates/dcim/rackreservation.html b/netbox/templates/dcim/rackreservation.html index 07ca55f7c..1e16af675 100644 --- a/netbox/templates/dcim/rackreservation.html +++ b/netbox/templates/dcim/rackreservation.html @@ -84,7 +84,7 @@
{% include 'inc/panels/custom_fields.html' %} - {% include 'inc/panels/tags.html' with tags=object.tags.all url='dcim:rackreservation_list' %} + {% include 'inc/panels/tags.html' %} {% plugin_left_page object %}
diff --git a/netbox/templates/dcim/rackrole.html b/netbox/templates/dcim/rackrole.html index 2668905f4..2f4661c9f 100644 --- a/netbox/templates/dcim/rackrole.html +++ b/netbox/templates/dcim/rackrole.html @@ -34,6 +34,7 @@
+ {% include 'inc/panels/tags.html' %} {% plugin_left_page object %}
diff --git a/netbox/templates/dcim/rearport.html b/netbox/templates/dcim/rearport.html index b60e04882..b3ecce3ad 100644 --- a/netbox/templates/dcim/rearport.html +++ b/netbox/templates/dcim/rearport.html @@ -47,7 +47,7 @@
{% include 'inc/panels/custom_fields.html' %} - {% include 'inc/panels/tags.html' with tags=object.tags.all %} + {% include 'inc/panels/tags.html' %} {% plugin_left_page object %}
diff --git a/netbox/templates/dcim/region.html b/netbox/templates/dcim/region.html index c03b11e7d..7452e594e 100644 --- a/netbox/templates/dcim/region.html +++ b/netbox/templates/dcim/region.html @@ -45,6 +45,7 @@
+ {% include 'inc/panels/tags.html' %} {% include 'inc/panels/custom_fields.html' %} {% include 'inc/panels/contacts.html' %} {% plugin_left_page object %} diff --git a/netbox/templates/dcim/site.html b/netbox/templates/dcim/site.html index 8442ae41e..a17c505a9 100644 --- a/netbox/templates/dcim/site.html +++ b/netbox/templates/dcim/site.html @@ -169,7 +169,6 @@
- {{ object.contact_email }} {% else %} @@ -181,7 +180,7 @@ {% include 'inc/panels/custom_fields.html' %} - {% include 'inc/panels/tags.html' with tags=object.tags.all url='dcim:site_list' %} + {% include 'inc/panels/tags.html' %} {% include 'inc/panels/comments.html' %} {% plugin_left_page object %} diff --git a/netbox/templates/dcim/sitegroup.html b/netbox/templates/dcim/sitegroup.html index dbee2c835..d04330413 100644 --- a/netbox/templates/dcim/sitegroup.html +++ b/netbox/templates/dcim/sitegroup.html @@ -45,6 +45,7 @@ + {% include 'inc/panels/tags.html' %} {% include 'inc/panels/custom_fields.html' %} {% include 'inc/panels/contacts.html' %} {% plugin_left_page object %} diff --git a/netbox/templates/dcim/virtualchassis.html b/netbox/templates/dcim/virtualchassis.html index fd31be60d..8399576f5 100644 --- a/netbox/templates/dcim/virtualchassis.html +++ b/netbox/templates/dcim/virtualchassis.html @@ -39,7 +39,7 @@ {% include 'inc/panels/custom_fields.html' %} - {% include 'inc/panels/tags.html' with tags=object.tags.all url='dcim:virtualchassis_list' %} + {% include 'inc/panels/tags.html' %} {% plugin_left_page object %}
diff --git a/netbox/templates/inc/panels/tags.html b/netbox/templates/inc/panels/tags.html index e67098c0f..c309afdf0 100644 --- a/netbox/templates/inc/panels/tags.html +++ b/netbox/templates/inc/panels/tags.html @@ -1,11 +1,14 @@ {% load helpers %} +
-
- Tags -
+
Tags
- {% for tag in tags.all %} {% tag tag url %} {% empty %} - No tags assigned - {% endfor %} + {% with url=object|validated_viewname:"list" %} + {% for tag in object.tags.all %} + {% tag tag url %} + {% empty %} + No tags assigned + {% endfor %} + {% endwith %}
diff --git a/netbox/templates/ipam/aggregate.html b/netbox/templates/ipam/aggregate.html index 202b6e41c..aca89a526 100644 --- a/netbox/templates/ipam/aggregate.html +++ b/netbox/templates/ipam/aggregate.html @@ -65,7 +65,7 @@
{% include 'inc/panels/custom_fields.html' %} - {% include 'inc/panels/tags.html' with tags=object.tags.all url='ipam:aggregate_list' %} + {% include 'inc/panels/tags.html' %} {% plugin_right_page object %}
diff --git a/netbox/templates/ipam/ipaddress.html b/netbox/templates/ipam/ipaddress.html index d98544de4..31782bdd7 100644 --- a/netbox/templates/ipam/ipaddress.html +++ b/netbox/templates/ipam/ipaddress.html @@ -145,7 +145,7 @@
- {% include 'inc/panels/tags.html' with tags=object.tags.all url='ipam:ipaddress_list' %} + {% include 'inc/panels/tags.html' %}
diff --git a/netbox/templates/ipam/iprange.html b/netbox/templates/ipam/iprange.html index e3d37a87a..b549ec7c5 100644 --- a/netbox/templates/ipam/iprange.html +++ b/netbox/templates/ipam/iprange.html @@ -82,7 +82,7 @@ {% plugin_left_page object %}
- {% include 'inc/panels/tags.html' with tags=object.tags.all url='ipam:prefix_list' %} + {% include 'inc/panels/tags.html' %} {% include 'inc/panels/custom_fields.html' %} {% plugin_right_page object %}
diff --git a/netbox/templates/ipam/prefix.html b/netbox/templates/ipam/prefix.html index 877ed49e0..eaea4e1ec 100644 --- a/netbox/templates/ipam/prefix.html +++ b/netbox/templates/ipam/prefix.html @@ -122,7 +122,7 @@
{% include 'inc/panels/custom_fields.html' %} - {% include 'inc/panels/tags.html' with tags=object.tags.all url='ipam:prefix_list' %} + {% include 'inc/panels/tags.html' %} {% plugin_right_page object %}
diff --git a/netbox/templates/ipam/rir.html b/netbox/templates/ipam/rir.html index 26d5e71da..c2f88c278 100644 --- a/netbox/templates/ipam/rir.html +++ b/netbox/templates/ipam/rir.html @@ -38,6 +38,7 @@ + {% include 'inc/panels/tags.html' %} {% plugin_left_page object %}
diff --git a/netbox/templates/ipam/role.html b/netbox/templates/ipam/role.html index 7fc967047..5579010fa 100644 --- a/netbox/templates/ipam/role.html +++ b/netbox/templates/ipam/role.html @@ -32,6 +32,7 @@
+ {% include 'inc/panels/tags.html' %} {% plugin_left_page object %}
diff --git a/netbox/templates/ipam/routetarget.html b/netbox/templates/ipam/routetarget.html index f615d2d50..71d6f9601 100644 --- a/netbox/templates/ipam/routetarget.html +++ b/netbox/templates/ipam/routetarget.html @@ -30,7 +30,7 @@
- {% include 'inc/panels/tags.html' with tags=object.tags.all url='ipam:routetarget_list' %} + {% include 'inc/panels/tags.html' %} {% include 'inc/panels/custom_fields.html' %} {% plugin_left_page object %} diff --git a/netbox/templates/ipam/service.html b/netbox/templates/ipam/service.html index 7609a280b..5a47e44f0 100644 --- a/netbox/templates/ipam/service.html +++ b/netbox/templates/ipam/service.html @@ -61,7 +61,7 @@
{% include 'inc/panels/custom_fields.html' %} - {% include 'inc/panels/tags.html' with tags=object.tags.all url='ipam:service_list' %} + {% include 'inc/panels/tags.html' %} {% plugin_right_page object %}
diff --git a/netbox/templates/ipam/vlan.html b/netbox/templates/ipam/vlan.html index e8c514cca..367ae3641 100644 --- a/netbox/templates/ipam/vlan.html +++ b/netbox/templates/ipam/vlan.html @@ -83,7 +83,7 @@
{% include 'inc/panels/custom_fields.html' %} - {% include 'inc/panels/tags.html' with tags=object.tags.all url='ipam:vlan_list' %} + {% include 'inc/panels/tags.html' %} {% plugin_right_page object %}
diff --git a/netbox/templates/ipam/vlangroup.html b/netbox/templates/ipam/vlangroup.html index 2d31feb22..1c36e92f6 100644 --- a/netbox/templates/ipam/vlangroup.html +++ b/netbox/templates/ipam/vlangroup.html @@ -54,6 +54,7 @@ + {% include 'inc/panels/tags.html' %} {% plugin_left_page object %}
diff --git a/netbox/templates/ipam/vrf.html b/netbox/templates/ipam/vrf.html index b320fe6b8..349fe20d3 100644 --- a/netbox/templates/ipam/vrf.html +++ b/netbox/templates/ipam/vrf.html @@ -60,7 +60,7 @@ {% plugin_left_page object %}
- {% include 'inc/panels/tags.html' with tags=object.tags.all url='ipam:vrf_list' %} + {% include 'inc/panels/tags.html' %} {% include 'inc/panels/custom_fields.html' %} {% plugin_right_page object %}
diff --git a/netbox/templates/tenancy/contact.html b/netbox/templates/tenancy/contact.html index 8bdf6c030..3c6ada5a0 100644 --- a/netbox/templates/tenancy/contact.html +++ b/netbox/templates/tenancy/contact.html @@ -60,7 +60,7 @@
{% include 'inc/panels/custom_fields.html' %} - {% include 'inc/panels/tags.html' with tags=object.tags.all url='tenancy:tenant_list' %} + {% include 'inc/panels/tags.html' %} {% plugin_right_page object %}
diff --git a/netbox/templates/tenancy/contactgroup.html b/netbox/templates/tenancy/contactgroup.html index 0eef750eb..efb86af91 100644 --- a/netbox/templates/tenancy/contactgroup.html +++ b/netbox/templates/tenancy/contactgroup.html @@ -45,6 +45,7 @@ + {% include 'inc/panels/tags.html' %} {% plugin_left_page object %}
diff --git a/netbox/templates/tenancy/contactrole.html b/netbox/templates/tenancy/contactrole.html index 4ddde3624..3272728f2 100644 --- a/netbox/templates/tenancy/contactrole.html +++ b/netbox/templates/tenancy/contactrole.html @@ -30,6 +30,7 @@
+ {% include 'inc/panels/tags.html' %} {% plugin_left_page object %}
diff --git a/netbox/templates/tenancy/tenant.html b/netbox/templates/tenancy/tenant.html index dc51b48c5..f54fd1425 100644 --- a/netbox/templates/tenancy/tenant.html +++ b/netbox/templates/tenancy/tenant.html @@ -36,7 +36,7 @@
{% include 'inc/panels/custom_fields.html' %} - {% include 'inc/panels/tags.html' with tags=object.tags.all url='tenancy:tenant_list' %} + {% include 'inc/panels/tags.html' %} {% include 'inc/panels/comments.html' %} {% include 'inc/panels/contacts.html' %} {% plugin_left_page object %} diff --git a/netbox/templates/tenancy/tenantgroup.html b/netbox/templates/tenancy/tenantgroup.html index 31a756d9e..75d2c5a27 100644 --- a/netbox/templates/tenancy/tenantgroup.html +++ b/netbox/templates/tenancy/tenantgroup.html @@ -45,6 +45,7 @@ + {% include 'inc/panels/tags.html' %} {% plugin_left_page object %}
diff --git a/netbox/templates/virtualization/cluster.html b/netbox/templates/virtualization/cluster.html index 84b8235ad..b7af89bb2 100644 --- a/netbox/templates/virtualization/cluster.html +++ b/netbox/templates/virtualization/cluster.html @@ -61,7 +61,7 @@
{% include 'inc/panels/custom_fields.html' %} - {% include 'inc/panels/tags.html' with tags=object.tags.all url='virtualization:cluster_list' %} + {% include 'inc/panels/tags.html' %} {% include 'inc/panels/contacts.html' %} {% plugin_right_page object %}
diff --git a/netbox/templates/virtualization/clustergroup.html b/netbox/templates/virtualization/clustergroup.html index b367d97f7..3979fa0e6 100644 --- a/netbox/templates/virtualization/clustergroup.html +++ b/netbox/templates/virtualization/clustergroup.html @@ -28,6 +28,7 @@ + {% include 'inc/panels/tags.html' %} {% plugin_left_page object %}
diff --git a/netbox/templates/virtualization/clustertype.html b/netbox/templates/virtualization/clustertype.html index e3c050a1b..de5f3c519 100644 --- a/netbox/templates/virtualization/clustertype.html +++ b/netbox/templates/virtualization/clustertype.html @@ -28,6 +28,7 @@
+ {% include 'inc/panels/tags.html' %} {% plugin_left_page object %}
diff --git a/netbox/templates/virtualization/virtualmachine.html b/netbox/templates/virtualization/virtualmachine.html index 0d9ea4a22..068d7f164 100644 --- a/netbox/templates/virtualization/virtualmachine.html +++ b/netbox/templates/virtualization/virtualmachine.html @@ -90,7 +90,7 @@
{% include 'inc/panels/custom_fields.html' %} - {% include 'inc/panels/tags.html' with tags=object.tags.all url='virtualization:virtualmachine_list' %} + {% include 'inc/panels/tags.html' %} {% include 'inc/panels/comments.html' %} {% plugin_left_page object %} diff --git a/netbox/templates/virtualization/vminterface.html b/netbox/templates/virtualization/vminterface.html index ef12b63a1..1678013f2 100644 --- a/netbox/templates/virtualization/vminterface.html +++ b/netbox/templates/virtualization/vminterface.html @@ -70,8 +70,8 @@
{% include 'inc/panels/custom_fields.html' %} - {% include 'inc/panels/tags.html' with tags=object.tags.all %} - {% plugin_right_page object %} + {% include 'inc/panels/tags.html' %} + {% plugin_right_page object %}
From 4932e4f8c64560a453542b8729dea49d0b590ee5 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Thu, 21 Oct 2021 11:28:25 -0400 Subject: [PATCH 051/289] Changelog for #6497 --- docs/release-notes/version-3.1.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/docs/release-notes/version-3.1.md b/docs/release-notes/version-3.1.md index 291831500..c829ef2b9 100644 --- a/docs/release-notes/version-3.1.md +++ b/docs/release-notes/version-3.1.md @@ -20,6 +20,7 @@ When assigning a contact to an object, the user must select a predefined role (e * [#1337](https://github.com/netbox-community/netbox/issues/1337) - Add WWN field to interfaces * [#1943](https://github.com/netbox-community/netbox/issues/1943) - Relax uniqueness constraint on cluster names * [#3839](https://github.com/netbox-community/netbox/issues/3839) - Add `airflow` field for devices types and devices +* [#6497](https://github.com/netbox-community/netbox/issues/6497) - Extend tag support to organizational models * [#6711](https://github.com/netbox-community/netbox/issues/6711) - Add `longtext` custom field type with Markdown support * [#6715](https://github.com/netbox-community/netbox/issues/6715) - Add tenant assignment for cables * [#6874](https://github.com/netbox-community/netbox/issues/6874) - Add tenant assignment for locations @@ -37,6 +38,23 @@ When assigning a contact to an object, the user must select a predefined role (e * `/api/tenancy/contact-groups/` * `/api/tenancy/contact-roles/` * `/api/tenancy/contacts/` +* Added `tags` field to the following models: + * circuits.CircuitType + * dcim.DeviceRole + * dcim.Location + * dcim.Manufacturer + * dcim.Platform + * dcim.RackRole + * dcim.Region + * dcim.SiteGroup + * ipam.RIR + * ipam.Role + * ipam.VLANGroup + * tenancy.ContactGroup + * tenancy.ContactRole + * tenancy.TenantGroup + * virtualization.ClusterGroup + * virtualization.ClusterType * dcim.Cable * Added `tenant` field * dcim.Device From 1c6a84659cc0a401b43f2abae8334fbf8eaf5774 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Thu, 21 Oct 2021 14:11:11 -0400 Subject: [PATCH 052/289] #3979 cleanup --- netbox/dcim/tables/template_code.py | 4 +- netbox/netbox/views/__init__.py | 8 ++- .../templates/wireless/wirelesslink_edit.html | 33 ++++++++++ netbox/wireless/forms/models.py | 62 ++++++++++++++++--- 4 files changed, 96 insertions(+), 11 deletions(-) create mode 100644 netbox/templates/wireless/wirelesslink_edit.html diff --git a/netbox/dcim/tables/template_code.py b/netbox/dcim/tables/template_code.py index aab15b5ef..f6938807a 100644 --- a/netbox/dcim/tables/template_code.py +++ b/netbox/dcim/tables/template_code.py @@ -236,8 +236,8 @@ INTERFACE_BUTTONS = """ {% endif %} {% elif record.is_wireless and perms.wireless.add_wirelesslink %} - - + + {% endif %} """ diff --git a/netbox/netbox/views/__init__.py b/netbox/netbox/views/__init__.py index 2c033e760..b361352d0 100644 --- a/netbox/netbox/views/__init__.py +++ b/netbox/netbox/views/__init__.py @@ -27,6 +27,7 @@ from netbox.constants import SEARCH_MAX_RESULTS, SEARCH_TYPES from netbox.forms import SearchForm from tenancy.models import Tenant from virtualization.models import Cluster, VirtualMachine +from wireless.models import WirelessLAN, WirelessLink class HomeView(View): @@ -92,14 +93,19 @@ class HomeView(View): ("dcim.view_powerpanel", "Power Panels", PowerPanel.objects.restrict(request.user, 'view').count), ("dcim.view_powerfeed", "Power Feeds", PowerFeed.objects.restrict(request.user, 'view').count), ) + wireless = ( + ("wireless.view_wirelesslan", "Wireless LANs", WirelessLAN.objects.restrict(request.user, 'view').count), + ("wireless.view_wirelesslink", "Wireless Links", WirelessLink.objects.restrict(request.user, 'view').count), + ) sections = ( ("Organization", org, "domain"), ("IPAM", ipam, "counter"), ("Virtualization", virtualization, "monitor"), ("Inventory", dcim, "server"), - ("Connections", connections, "cable-data"), ("Circuits", circuits, "transit-connection-variant"), + ("Connections", connections, "cable-data"), ("Power", power, "flash"), + ("Wireless", wireless, "wifi"), ) stats = [] diff --git a/netbox/templates/wireless/wirelesslink_edit.html b/netbox/templates/wireless/wirelesslink_edit.html new file mode 100644 index 000000000..034d147de --- /dev/null +++ b/netbox/templates/wireless/wirelesslink_edit.html @@ -0,0 +1,33 @@ +{% extends 'generic/object_edit.html' %} +{% load form_helpers %} + +{% block form %} +
+
+
+
+
Side A
+
+ {% render_field form.device_a %} + {% render_field form.interface_a %} +
+
+
+
+
+
Side B
+
+ {% render_field form.device_b %} + {% render_field form.interface_b %} +
+
+
+ {% if form.custom_fields %} +
+
+
Custom Fields
+
+ {% render_custom_fields form %} +
+ {% endif %} +{% endblock %} diff --git a/netbox/wireless/forms/models.py b/netbox/wireless/forms/models.py index 544d5823d..f7985a31d 100644 --- a/netbox/wireless/forms/models.py +++ b/netbox/wireless/forms/models.py @@ -1,4 +1,4 @@ -from dcim.models import Device, Interface +from dcim.models import Device, Interface, Location, Site from extras.forms import CustomFieldModelForm from extras.models import Tag from ipam.models import VLAN @@ -64,10 +64,30 @@ class WirelessLANForm(BootstrapMixin, CustomFieldModelForm): class WirelessLinkForm(BootstrapMixin, CustomFieldModelForm): + site_a = DynamicModelChoiceField( + queryset=Site.objects.all(), + required=False, + label='Site', + initial_params={ + 'devices': '$device_a', + } + ) + location_a = DynamicModelChoiceField( + queryset=Location.objects.all(), + required=False, + label='Location', + initial_params={ + 'devices': '$device_a', + } + ) device_a = DynamicModelChoiceField( queryset=Device.objects.all(), + query_params={ + 'site_id': '$site_a', + 'location_id': '$location_a', + }, required=False, - label='Device A', + label='Device', initial_params={ 'interfaces': '$interface_a' } @@ -79,12 +99,32 @@ class WirelessLinkForm(BootstrapMixin, CustomFieldModelForm): 'device_id': '$device_a', }, disabled_indicator='_occupied', - label='Interface A' + label='Interface' + ) + site_b = DynamicModelChoiceField( + queryset=Site.objects.all(), + required=False, + label='Site', + initial_params={ + 'devices': '$device_b', + } + ) + location_b = DynamicModelChoiceField( + queryset=Location.objects.all(), + required=False, + label='Location', + initial_params={ + 'devices': '$device_b', + } ) device_b = DynamicModelChoiceField( queryset=Device.objects.all(), + query_params={ + 'site_id': '$site_b', + 'location_id': '$location_b', + }, required=False, - label='Device B', + label='Device', initial_params={ 'interfaces': '$interface_b' } @@ -96,7 +136,7 @@ class WirelessLinkForm(BootstrapMixin, CustomFieldModelForm): 'device_id': '$device_b', }, disabled_indicator='_occupied', - label='Interface B' + label='Interface' ) tags = DynamicModelMultipleChoiceField( queryset=Tag.objects.all(), @@ -106,11 +146,13 @@ class WirelessLinkForm(BootstrapMixin, CustomFieldModelForm): class Meta: model = WirelessLink fields = [ - 'device_a', 'interface_a', 'device_b', 'interface_b', 'status', 'ssid', 'description', 'auth_type', - 'auth_cipher', 'auth_psk', 'tags', + 'site_a', 'location_a', 'device_a', 'interface_a', 'site_b', 'location_b', 'device_b', 'interface_b', + 'status', 'ssid', 'description', 'auth_type', 'auth_cipher', 'auth_psk', 'tags', ] fieldsets = ( - ('Link', ('device_a', 'interface_a', 'device_b', 'interface_b', 'status', 'ssid', 'description', 'tags')), + ('Side A', ('site_a', 'location_a', 'device_a', 'interface_a')), + ('Side B', ('site_b', 'location_b', 'device_b', 'interface_b')), + ('Link', ('status', 'ssid', 'description', 'tags')), ('Authentication', ('auth_type', 'auth_cipher', 'auth_psk')), ) widgets = { @@ -118,3 +160,7 @@ class WirelessLinkForm(BootstrapMixin, CustomFieldModelForm): 'auth_type': StaticSelect, 'auth_cipher': StaticSelect, } + labels = { + 'auth_type': 'Type', + 'auth_cipher': 'Cipher', + } From 6f66138a1878a9fdafe93c1ecda251954a67bf78 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Thu, 21 Oct 2021 15:15:01 -0400 Subject: [PATCH 053/289] Changelog for #3979 --- docs/release-notes/version-3.1.md | 13 ++++++++++++- netbox/netbox/settings.py | 2 +- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/docs/release-notes/version-3.1.md b/docs/release-notes/version-3.1.md index c829ef2b9..88142bf78 100644 --- a/docs/release-notes/version-3.1.md +++ b/docs/release-notes/version-3.1.md @@ -13,7 +13,18 @@ A set of new models for tracking contact information has been introduced within When assigning a contact to an object, the user must select a predefined role (e.g. "billing" or "technical") and may optionally indicate a priority relative to other contacts associated with the object. There is no limit on how many contacts can be assigned to an object, nor on how many objects to which a contact can be assigned. -#### +#### Wireless Networks ([#3979](https://github.com/netbox-community/netbox/issues/3979)) + +This release introduces two new models to represent wireless networks: + +* Wireless LAN - A multi-access wireless segment to which any number of wireless interfaces may be attached +* Wireless Link - A point-to-point connection between exactly two wireless interfaces + +Both types of connection include SSID and authentication attributes. Additionally, the interface model has been extended to include several attributes pertinent to wireless operation: + +* Wireless role - Access point or station +* Channel - A predefined channel within a standardized band +* Channel frequency & width - Customizable channel attributes (e.g. for licensed bands) ### Enhancements diff --git a/netbox/netbox/settings.py b/netbox/netbox/settings.py index 6381435f2..279b8c453 100644 --- a/netbox/netbox/settings.py +++ b/netbox/netbox/settings.py @@ -16,7 +16,7 @@ from django.core.validators import URLValidator # Environment setup # -VERSION = '3.0.9-dev' +VERSION = '3.1-beta1' # Hostname HOSTNAME = platform.node() From c06b3374cef7abee6836d07d31e348197695b3df Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Thu, 21 Oct 2021 15:29:52 -0400 Subject: [PATCH 054/289] #6497: Add missing tag fields to filter forms --- netbox/circuits/filtersets.py | 1 + netbox/circuits/forms/filtersets.py | 4 +--- netbox/dcim/filtersets.py | 7 +++++++ netbox/dcim/forms/filtersets.py | 24 +++++++---------------- netbox/ipam/filtersets.py | 3 +++ netbox/ipam/forms/filtersets.py | 12 ++++-------- netbox/tenancy/filtersets.py | 3 +++ netbox/tenancy/forms/filtersets.py | 6 +++--- netbox/virtualization/filtersets.py | 2 ++ netbox/virtualization/forms/filtersets.py | 8 ++------ netbox/wireless/filtersets.py | 1 + netbox/wireless/forms/filtersets.py | 4 +--- 12 files changed, 35 insertions(+), 40 deletions(-) diff --git a/netbox/circuits/filtersets.py b/netbox/circuits/filtersets.py index 15bc5a8b3..fd582dd99 100644 --- a/netbox/circuits/filtersets.py +++ b/netbox/circuits/filtersets.py @@ -111,6 +111,7 @@ class ProviderNetworkFilterSet(PrimaryModelFilterSet): class CircuitTypeFilterSet(OrganizationalModelFilterSet): + tag = TagFilter() class Meta: model = CircuitType diff --git a/netbox/circuits/forms/filtersets.py b/netbox/circuits/forms/filtersets.py index 63b654148..b29f8f772 100644 --- a/netbox/circuits/forms/filtersets.py +++ b/netbox/circuits/forms/filtersets.py @@ -79,14 +79,12 @@ class ProviderNetworkFilterForm(BootstrapMixin, CustomFieldModelFilterForm): class CircuitTypeFilterForm(BootstrapMixin, CustomFieldModelFilterForm): model = CircuitType - field_groups = [ - ['q'], - ] q = forms.CharField( required=False, widget=forms.TextInput(attrs={'placeholder': _('All Fields')}), label=_('Search') ) + tag = TagFilterField(model) class CircuitFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldModelFilterForm): diff --git a/netbox/dcim/filtersets.py b/netbox/dcim/filtersets.py index f6d8abb0a..e81bd5e43 100644 --- a/netbox/dcim/filtersets.py +++ b/netbox/dcim/filtersets.py @@ -72,6 +72,7 @@ class RegionFilterSet(OrganizationalModelFilterSet): to_field_name='slug', label='Parent region (slug)', ) + tag = TagFilter() class Meta: model = Region @@ -89,6 +90,7 @@ class SiteGroupFilterSet(OrganizationalModelFilterSet): to_field_name='slug', label='Parent site group (slug)', ) + tag = TagFilter() class Meta: model = SiteGroup @@ -208,6 +210,7 @@ class LocationFilterSet(OrganizationalModelFilterSet): to_field_name='slug', label='Location (slug)', ) + tag = TagFilter() class Meta: model = Location @@ -223,6 +226,7 @@ class LocationFilterSet(OrganizationalModelFilterSet): class RackRoleFilterSet(OrganizationalModelFilterSet): + tag = TagFilter() class Meta: model = RackRole @@ -388,6 +392,7 @@ class RackReservationFilterSet(PrimaryModelFilterSet, TenancyFilterSet): class ManufacturerFilterSet(OrganizationalModelFilterSet): + tag = TagFilter() class Meta: model = Manufacturer @@ -570,6 +575,7 @@ class DeviceBayTemplateFilterSet(ChangeLoggedModelFilterSet, DeviceTypeComponent class DeviceRoleFilterSet(OrganizationalModelFilterSet): + tag = TagFilter() class Meta: model = DeviceRole @@ -588,6 +594,7 @@ class PlatformFilterSet(OrganizationalModelFilterSet): to_field_name='slug', label='Manufacturer (slug)', ) + tag = TagFilter() class Meta: model = Platform diff --git a/netbox/dcim/forms/filtersets.py b/netbox/dcim/forms/filtersets.py index 5c776386a..6530b3b46 100644 --- a/netbox/dcim/forms/filtersets.py +++ b/netbox/dcim/forms/filtersets.py @@ -106,10 +106,6 @@ class DeviceComponentFilterForm(BootstrapMixin, CustomFieldModelFilterForm): class RegionFilterForm(BootstrapMixin, CustomFieldModelFilterForm): model = Region - field_groups = [ - ['q'], - ['parent_id'], - ] q = forms.CharField( required=False, widget=forms.TextInput(attrs={'placeholder': _('All Fields')}), @@ -121,14 +117,11 @@ class RegionFilterForm(BootstrapMixin, CustomFieldModelFilterForm): label=_('Parent region'), fetch_trigger='open' ) + tag = TagFilterField(model) class SiteGroupFilterForm(BootstrapMixin, CustomFieldModelFilterForm): model = SiteGroup - field_groups = [ - ['q'], - ['parent_id'], - ] q = forms.CharField( required=False, widget=forms.TextInput(attrs={'placeholder': _('All Fields')}), @@ -140,6 +133,7 @@ class SiteGroupFilterForm(BootstrapMixin, CustomFieldModelFilterForm): label=_('Parent group'), fetch_trigger='open' ) + tag = TagFilterField(model) class SiteFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldModelFilterForm): @@ -219,18 +213,17 @@ class LocationFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldModelFilt label=_('Parent'), fetch_trigger='open' ) + tag = TagFilterField(model) class RackRoleFilterForm(BootstrapMixin, CustomFieldModelFilterForm): model = RackRole - field_groups = [ - ['q'], - ] q = forms.CharField( required=False, widget=forms.TextInput(attrs={'placeholder': _('All Fields')}), label=_('Search') ) + tag = TagFilterField(model) class RackFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldModelFilterForm): @@ -371,14 +364,12 @@ class RackReservationFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldMo class ManufacturerFilterForm(BootstrapMixin, CustomFieldModelFilterForm): model = Manufacturer - field_groups = [ - ['q'], - ] q = forms.CharField( required=False, widget=forms.TextInput(attrs={'placeholder': _('All Fields')}), label=_('Search') ) + tag = TagFilterField(model) class DeviceTypeFilterForm(BootstrapMixin, CustomFieldModelFilterForm): @@ -456,14 +447,12 @@ class DeviceTypeFilterForm(BootstrapMixin, CustomFieldModelFilterForm): class DeviceRoleFilterForm(BootstrapMixin, CustomFieldModelFilterForm): model = DeviceRole - field_groups = [ - ['q'], - ] q = forms.CharField( required=False, widget=forms.TextInput(attrs={'placeholder': _('All Fields')}), label=_('Search') ) + tag = TagFilterField(model) class PlatformFilterForm(BootstrapMixin, CustomFieldModelFilterForm): @@ -479,6 +468,7 @@ class PlatformFilterForm(BootstrapMixin, CustomFieldModelFilterForm): label=_('Manufacturer'), fetch_trigger='open' ) + tag = TagFilterField(model) class DeviceFilterForm(BootstrapMixin, LocalConfigContextFilterForm, TenancyFilterForm, CustomFieldModelFilterForm): diff --git a/netbox/ipam/filtersets.py b/netbox/ipam/filtersets.py index 37a9299dc..56d23387f 100644 --- a/netbox/ipam/filtersets.py +++ b/netbox/ipam/filtersets.py @@ -118,6 +118,7 @@ class RouteTargetFilterSet(PrimaryModelFilterSet, TenancyFilterSet): class RIRFilterSet(OrganizationalModelFilterSet): + tag = TagFilter() class Meta: model = RIR @@ -179,6 +180,7 @@ class RoleFilterSet(OrganizationalModelFilterSet): method='search', label='Search', ) + tag = TagFilter() class Meta: model = Role @@ -636,6 +638,7 @@ class VLANGroupFilterSet(OrganizationalModelFilterSet): cluster = django_filters.NumberFilter( method='filter_scope' ) + tag = TagFilter() class Meta: model = VLANGroup diff --git a/netbox/ipam/forms/filtersets.py b/netbox/ipam/forms/filtersets.py index 8bc0f10fb..415664f62 100644 --- a/netbox/ipam/forms/filtersets.py +++ b/netbox/ipam/forms/filtersets.py @@ -91,10 +91,6 @@ class RouteTargetFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldModelF class RIRFilterForm(BootstrapMixin, CustomFieldModelFilterForm): model = RIR - field_groups = [ - ['q'], - ['is_private'], - ] q = forms.CharField( required=False, widget=forms.TextInput(attrs={'placeholder': _('All Fields')}), @@ -107,6 +103,7 @@ class RIRFilterForm(BootstrapMixin, CustomFieldModelFilterForm): choices=BOOLEAN_WITH_BLANK_CHOICES ) ) + tag = TagFilterField(model) class AggregateFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldModelFilterForm): @@ -138,14 +135,12 @@ class AggregateFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldModelFil class RoleFilterForm(BootstrapMixin, CustomFieldModelFilterForm): model = Role - field_groups = [ - ['q'], - ] q = forms.CharField( required=False, widget=forms.TextInput(attrs={'placeholder': _('All Fields')}), label=_('Search') ) + tag = TagFilterField(model) class PrefixFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldModelFilterForm): @@ -363,7 +358,7 @@ class IPAddressFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldModelFil class VLANGroupFilterForm(BootstrapMixin, CustomFieldModelFilterForm): field_groups = [ - ['q'], + ['q', 'tag'], ['region', 'sitegroup', 'site', 'location', 'rack'] ] model = VLANGroup @@ -402,6 +397,7 @@ class VLANGroupFilterForm(BootstrapMixin, CustomFieldModelFilterForm): label=_('Rack'), fetch_trigger='open' ) + tag = TagFilterField(model) class VLANFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldModelFilterForm): diff --git a/netbox/tenancy/filtersets.py b/netbox/tenancy/filtersets.py index f6d0ac72e..dd73edace 100644 --- a/netbox/tenancy/filtersets.py +++ b/netbox/tenancy/filtersets.py @@ -33,6 +33,7 @@ class TenantGroupFilterSet(OrganizationalModelFilterSet): to_field_name='slug', label='Tenant group (slug)', ) + tag = TagFilter() class Meta: model = TenantGroup @@ -118,6 +119,7 @@ class ContactGroupFilterSet(OrganizationalModelFilterSet): to_field_name='slug', label='Contact group (slug)', ) + tag = TagFilter() class Meta: model = ContactGroup @@ -125,6 +127,7 @@ class ContactGroupFilterSet(OrganizationalModelFilterSet): class ContactRoleFilterSet(OrganizationalModelFilterSet): + tag = TagFilter() class Meta: model = ContactRole diff --git a/netbox/tenancy/forms/filtersets.py b/netbox/tenancy/forms/filtersets.py index 69941701f..b693db68f 100644 --- a/netbox/tenancy/forms/filtersets.py +++ b/netbox/tenancy/forms/filtersets.py @@ -31,6 +31,7 @@ class TenantGroupFilterForm(BootstrapMixin, CustomFieldModelFilterForm): label=_('Parent group'), fetch_trigger='open' ) + tag = TagFilterField(model) class TenantFilterForm(BootstrapMixin, CustomFieldModelFilterForm): @@ -71,18 +72,17 @@ class ContactGroupFilterForm(BootstrapMixin, CustomFieldModelFilterForm): label=_('Parent group'), fetch_trigger='open' ) + tag = TagFilterField(model) class ContactRoleFilterForm(BootstrapMixin, CustomFieldModelFilterForm): model = ContactRole - field_groups = [ - ['q'], - ] q = forms.CharField( required=False, widget=forms.TextInput(attrs={'placeholder': _('All Fields')}), label=_('Search') ) + tag = TagFilterField(model) class ContactFilterForm(BootstrapMixin, CustomFieldModelFilterForm): diff --git a/netbox/virtualization/filtersets.py b/netbox/virtualization/filtersets.py index 3fc1da8ea..e2aac9b80 100644 --- a/netbox/virtualization/filtersets.py +++ b/netbox/virtualization/filtersets.py @@ -20,6 +20,7 @@ __all__ = ( class ClusterTypeFilterSet(OrganizationalModelFilterSet): + tag = TagFilter() class Meta: model = ClusterType @@ -27,6 +28,7 @@ class ClusterTypeFilterSet(OrganizationalModelFilterSet): class ClusterGroupFilterSet(OrganizationalModelFilterSet): + tag = TagFilter() class Meta: model = ClusterGroup diff --git a/netbox/virtualization/forms/filtersets.py b/netbox/virtualization/forms/filtersets.py index 0bb5c2bd7..1e8156c33 100644 --- a/netbox/virtualization/forms/filtersets.py +++ b/netbox/virtualization/forms/filtersets.py @@ -22,26 +22,22 @@ __all__ = ( class ClusterTypeFilterForm(BootstrapMixin, CustomFieldModelFilterForm): model = ClusterType - field_groups = [ - ['q'], - ] q = forms.CharField( required=False, widget=forms.TextInput(attrs={'placeholder': _('All Fields')}), label=_('Search') ) + tag = TagFilterField(model) class ClusterGroupFilterForm(BootstrapMixin, CustomFieldModelFilterForm): model = ClusterGroup - field_groups = [ - ['q'], - ] q = forms.CharField( required=False, widget=forms.TextInput(attrs={'placeholder': _('All Fields')}), label=_('Search') ) + tag = TagFilterField(model) class ClusterFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldModelFilterForm): diff --git a/netbox/wireless/filtersets.py b/netbox/wireless/filtersets.py index cffdcf046..654dd843f 100644 --- a/netbox/wireless/filtersets.py +++ b/netbox/wireless/filtersets.py @@ -25,6 +25,7 @@ class WirelessLANGroupFilterSet(OrganizationalModelFilterSet): queryset=WirelessLANGroup.objects.all(), to_field_name='slug' ) + tag = TagFilter() class Meta: model = WirelessLANGroup diff --git a/netbox/wireless/forms/filtersets.py b/netbox/wireless/forms/filtersets.py index 483d74a7c..b7eeec76b 100644 --- a/netbox/wireless/forms/filtersets.py +++ b/netbox/wireless/forms/filtersets.py @@ -29,6 +29,7 @@ class WirelessLANGroupFilterForm(BootstrapMixin, CustomFieldModelFilterForm): label=_('Parent group'), fetch_trigger='open' ) + tag = TagFilterField(model) class WirelessLANFilterForm(BootstrapMixin, CustomFieldModelFilterForm): @@ -71,9 +72,6 @@ class WirelessLANFilterForm(BootstrapMixin, CustomFieldModelFilterForm): class WirelessLinkFilterForm(BootstrapMixin, CustomFieldModelFilterForm): model = WirelessLink - field_groups = [ - ['q', 'tag'], - ] q = forms.CharField( required=False, widget=forms.TextInput(attrs={'placeholder': _('All Fields')}), From a3e7cab93597be622ca47ed72dddcff0953dfdc4 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Thu, 21 Oct 2021 15:33:58 -0400 Subject: [PATCH 055/289] Split tenancy models into separate modules --- netbox/tenancy/models/__init__.py | 2 + .../tenancy/{models.py => models/contacts.py} | 100 +----------------- netbox/tenancy/models/tenants.py | 96 +++++++++++++++++ 3 files changed, 101 insertions(+), 97 deletions(-) create mode 100644 netbox/tenancy/models/__init__.py rename netbox/tenancy/{models.py => models/contacts.py} (66%) create mode 100644 netbox/tenancy/models/tenants.py diff --git a/netbox/tenancy/models/__init__.py b/netbox/tenancy/models/__init__.py new file mode 100644 index 000000000..6d62edd20 --- /dev/null +++ b/netbox/tenancy/models/__init__.py @@ -0,0 +1,2 @@ +from .contacts import * +from .tenants import * diff --git a/netbox/tenancy/models.py b/netbox/tenancy/models/contacts.py similarity index 66% rename from netbox/tenancy/models.py rename to netbox/tenancy/models/contacts.py index 01ea2d0d5..2669aa121 100644 --- a/netbox/tenancy/models.py +++ b/netbox/tenancy/models/contacts.py @@ -1,116 +1,22 @@ -from django.contrib.contenttypes.fields import GenericForeignKey, GenericRelation +from django.contrib.contenttypes.fields import GenericForeignKey from django.contrib.contenttypes.models import ContentType from django.db import models from django.urls import reverse -from mptt.models import MPTTModel, TreeForeignKey +from mptt.models import TreeForeignKey from extras.utils import extras_features from netbox.models import ChangeLoggedModel, NestedGroupModel, OrganizationalModel, PrimaryModel +from tenancy.choices import * from utilities.querysets import RestrictedQuerySet -from .choices import * - __all__ = ( 'ContactAssignment', 'Contact', 'ContactGroup', 'ContactRole', - 'Tenant', - 'TenantGroup', ) -# -# Tenants -# - -@extras_features('custom_fields', 'custom_links', 'export_templates', 'tags', 'webhooks') -class TenantGroup(NestedGroupModel): - """ - An arbitrary collection of Tenants. - """ - name = models.CharField( - max_length=100, - unique=True - ) - slug = models.SlugField( - max_length=100, - unique=True - ) - parent = TreeForeignKey( - to='self', - on_delete=models.CASCADE, - related_name='children', - blank=True, - null=True, - db_index=True - ) - description = models.CharField( - max_length=200, - blank=True - ) - - class Meta: - ordering = ['name'] - - def get_absolute_url(self): - return reverse('tenancy:tenantgroup', args=[self.pk]) - - -@extras_features('custom_fields', 'custom_links', 'export_templates', 'tags', 'webhooks') -class Tenant(PrimaryModel): - """ - A Tenant represents an organization served by the NetBox owner. This is typically a customer or an internal - department. - """ - name = models.CharField( - max_length=100, - unique=True - ) - slug = models.SlugField( - max_length=100, - unique=True - ) - group = models.ForeignKey( - to='tenancy.TenantGroup', - on_delete=models.SET_NULL, - related_name='tenants', - blank=True, - null=True - ) - description = models.CharField( - max_length=200, - blank=True - ) - comments = models.TextField( - blank=True - ) - - # Generic relations - contacts = GenericRelation( - to='tenancy.ContactAssignment' - ) - - objects = RestrictedQuerySet.as_manager() - - clone_fields = [ - 'group', 'description', - ] - - class Meta: - ordering = ['name'] - - def __str__(self): - return self.name - - def get_absolute_url(self): - return reverse('tenancy:tenant', args=[self.pk]) - - -# -# Contacts -# - @extras_features('custom_fields', 'custom_links', 'export_templates', 'tags', 'webhooks') class ContactGroup(NestedGroupModel): """ diff --git a/netbox/tenancy/models/tenants.py b/netbox/tenancy/models/tenants.py new file mode 100644 index 000000000..7dae2c093 --- /dev/null +++ b/netbox/tenancy/models/tenants.py @@ -0,0 +1,96 @@ +from django.contrib.contenttypes.fields import GenericRelation +from django.db import models +from django.urls import reverse +from mptt.models import TreeForeignKey + +from extras.utils import extras_features +from netbox.models import NestedGroupModel, PrimaryModel +from utilities.querysets import RestrictedQuerySet + +__all__ = ( + 'Tenant', + 'TenantGroup', +) + + +@extras_features('custom_fields', 'custom_links', 'export_templates', 'tags', 'webhooks') +class TenantGroup(NestedGroupModel): + """ + An arbitrary collection of Tenants. + """ + name = models.CharField( + max_length=100, + unique=True + ) + slug = models.SlugField( + max_length=100, + unique=True + ) + parent = TreeForeignKey( + to='self', + on_delete=models.CASCADE, + related_name='children', + blank=True, + null=True, + db_index=True + ) + description = models.CharField( + max_length=200, + blank=True + ) + + class Meta: + ordering = ['name'] + + def get_absolute_url(self): + return reverse('tenancy:tenantgroup', args=[self.pk]) + + +@extras_features('custom_fields', 'custom_links', 'export_templates', 'tags', 'webhooks') +class Tenant(PrimaryModel): + """ + A Tenant represents an organization served by the NetBox owner. This is typically a customer or an internal + department. + """ + name = models.CharField( + max_length=100, + unique=True + ) + slug = models.SlugField( + max_length=100, + unique=True + ) + group = models.ForeignKey( + to='tenancy.TenantGroup', + on_delete=models.SET_NULL, + related_name='tenants', + blank=True, + null=True + ) + description = models.CharField( + max_length=200, + blank=True + ) + comments = models.TextField( + blank=True + ) + + # Generic relations + contacts = GenericRelation( + to='tenancy.ContactAssignment' + ) + + objects = RestrictedQuerySet.as_manager() + + clone_fields = [ + 'group', 'description', + ] + + class Meta: + ordering = ['name'] + + def __str__(self): + return self.name + + def get_absolute_url(self): + return reverse('tenancy:tenant', args=[self.pk]) From e1e2c76ae14b102a0db56997ff36ce43b2b5adce Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Thu, 21 Oct 2021 16:30:18 -0400 Subject: [PATCH 056/289] Add bridge field to Interface, VMInterface models --- netbox/dcim/api/serializers.py | 5 +- netbox/dcim/api/views.py | 2 +- netbox/dcim/filtersets.py | 5 ++ netbox/dcim/forms/bulk_edit.py | 15 +++- netbox/dcim/forms/bulk_import.py | 38 ++------- netbox/dcim/forms/models.py | 18 ++-- netbox/dcim/forms/object_create.py | 9 +- netbox/dcim/migrations/0134_interface_wwn.py | 17 ---- .../migrations/0134_interface_wwn_bridge.py | 23 +++++ .../migrations/0135_tenancy_extensions.py | 2 +- netbox/dcim/models/device_components.py | 83 +++++++++++++------ netbox/dcim/tables/devices.py | 14 ++-- netbox/templates/dcim/interface.html | 10 +++ netbox/templates/dcim/interface_edit.html | 1 + .../templates/virtualization/vminterface.html | 10 +++ .../virtualization/vminterface_edit.html | 1 + netbox/virtualization/api/serializers.py | 5 +- netbox/virtualization/filtersets.py | 5 ++ netbox/virtualization/forms/bulk_edit.py | 14 +++- netbox/virtualization/forms/bulk_import.py | 14 +++- netbox/virtualization/forms/models.py | 10 ++- netbox/virtualization/forms/object_create.py | 9 +- .../migrations/0026_vminterface_bridge.py | 19 +++++ netbox/virtualization/models.py | 33 +++++--- netbox/virtualization/tables.py | 17 ++-- 25 files changed, 260 insertions(+), 119 deletions(-) delete mode 100644 netbox/dcim/migrations/0134_interface_wwn.py create mode 100644 netbox/dcim/migrations/0134_interface_wwn_bridge.py create mode 100644 netbox/virtualization/migrations/0026_vminterface_bridge.py diff --git a/netbox/dcim/api/serializers.py b/netbox/dcim/api/serializers.py index bc5e9b54e..1f2897a7f 100644 --- a/netbox/dcim/api/serializers.py +++ b/netbox/dcim/api/serializers.py @@ -605,6 +605,7 @@ class InterfaceSerializer(PrimaryModelSerializer, LinkTerminationSerializer, Con device = NestedDeviceSerializer() type = ChoiceField(choices=InterfaceTypeChoices) parent = NestedInterfaceSerializer(required=False, allow_null=True) + bridge = NestedInterfaceSerializer(required=False, allow_null=True) lag = NestedInterfaceSerializer(required=False, allow_null=True) mode = ChoiceField(choices=InterfaceModeChoices, allow_blank=True, required=False) rf_role = ChoiceField(choices=WirelessRoleChoices, required=False, allow_null=True) @@ -622,8 +623,8 @@ class InterfaceSerializer(PrimaryModelSerializer, LinkTerminationSerializer, Con class Meta: model = Interface fields = [ - 'id', 'url', 'display', 'device', 'name', 'label', 'type', 'enabled', 'parent', 'lag', 'mtu', 'mac_address', - 'wwn', 'mgmt_only', 'description', 'mode', 'rf_role', 'rf_channel', 'rf_channel_frequency', + 'id', 'url', 'display', 'device', 'name', 'label', 'type', 'enabled', 'parent', 'bridge', 'lag', 'mtu', + 'mac_address', 'wwn', 'mgmt_only', 'description', 'mode', 'rf_role', 'rf_channel', 'rf_channel_frequency', 'rf_channel_width', 'untagged_vlan', 'tagged_vlans', 'mark_connected', 'cable', 'link_peer', 'link_peer_type', 'connected_endpoint', 'connected_endpoint_type', 'connected_endpoint_reachable', 'tags', 'custom_fields', 'created', 'last_updated', 'count_ipaddresses', '_occupied', diff --git a/netbox/dcim/api/views.py b/netbox/dcim/api/views.py index 9cbdf7d5d..921ee3a99 100644 --- a/netbox/dcim/api/views.py +++ b/netbox/dcim/api/views.py @@ -544,7 +544,7 @@ class PowerOutletViewSet(PathEndpointMixin, ModelViewSet): class InterfaceViewSet(PathEndpointMixin, ModelViewSet): queryset = Interface.objects.prefetch_related( - 'device', 'parent', 'lag', '_path__destination', 'cable', '_link_peer', 'ip_addresses', 'tags' + 'device', 'parent', 'bridge', 'lag', '_path__destination', 'cable', '_link_peer', 'ip_addresses', 'tags' ) serializer_class = serializers.InterfaceSerializer filterset_class = filtersets.InterfaceFilterSet diff --git a/netbox/dcim/filtersets.py b/netbox/dcim/filtersets.py index e81bd5e43..c049025b7 100644 --- a/netbox/dcim/filtersets.py +++ b/netbox/dcim/filtersets.py @@ -975,6 +975,11 @@ class InterfaceFilterSet(PrimaryModelFilterSet, DeviceComponentFilterSet, CableT queryset=Interface.objects.all(), label='Parent interface (ID)', ) + bridge_id = django_filters.ModelMultipleChoiceFilter( + field_name='bridge', + queryset=Interface.objects.all(), + label='Bridged interface (ID)', + ) lag_id = django_filters.ModelMultipleChoiceFilter( field_name='lag', queryset=Interface.objects.all(), diff --git a/netbox/dcim/forms/bulk_edit.py b/netbox/dcim/forms/bulk_edit.py index 9abdcb8ff..b1dce2281 100644 --- a/netbox/dcim/forms/bulk_edit.py +++ b/netbox/dcim/forms/bulk_edit.py @@ -939,8 +939,8 @@ class PowerOutletBulkEditForm( class InterfaceBulkEditForm( form_from_model(Interface, [ - 'label', 'type', 'parent', 'lag', 'mac_address', 'wwn', 'mtu', 'mgmt_only', 'mark_connected', 'description', - 'mode', 'rf_role', 'rf_channel', 'rf_channel_frequency', 'rf_channel_width', + 'label', 'type', 'parent', 'bridge', 'lag', 'mac_address', 'wwn', 'mtu', 'mgmt_only', 'mark_connected', + 'description', 'mode', 'rf_role', 'rf_channel', 'rf_channel_frequency', 'rf_channel_width', ]), BootstrapMixin, AddRemoveTagsForm, @@ -964,6 +964,10 @@ class InterfaceBulkEditForm( queryset=Interface.objects.all(), required=False ) + bridge = DynamicModelChoiceField( + queryset=Interface.objects.all(), + required=False + ) lag = DynamicModelChoiceField( queryset=Interface.objects.all(), required=False, @@ -991,7 +995,7 @@ class InterfaceBulkEditForm( class Meta: nullable_fields = [ - 'label', 'parent', 'lag', 'mac_address', 'wwn', 'mtu', 'description', 'mode', 'rf_channel', + 'label', 'parent', 'bridge', 'lag', 'mac_address', 'wwn', 'mtu', 'description', 'mode', 'rf_channel', 'rf_channel_frequency', 'rf_channel_width', 'untagged_vlan', 'tagged_vlans', ] @@ -1000,8 +1004,9 @@ class InterfaceBulkEditForm( if 'device' in self.initial: device = Device.objects.filter(pk=self.initial['device']).first() - # Restrict parent/LAG interface assignment by device + # Restrict parent/bridge/LAG interface assignment by device self.fields['parent'].widget.add_query_param('device_id', device.pk) + self.fields['bridge'].widget.add_query_param('device_id', device.pk) self.fields['lag'].widget.add_query_param('device_id', device.pk) # Limit VLAN choices by device @@ -1029,6 +1034,8 @@ class InterfaceBulkEditForm( self.fields['parent'].choices = () self.fields['parent'].widget.attrs['disabled'] = True + self.fields['bridge'].choices = () + self.fields['bridge'].widget.attrs['disabled'] = True self.fields['lag'].choices = () self.fields['lag'].widget.attrs['disabled'] = True diff --git a/netbox/dcim/forms/bulk_import.py b/netbox/dcim/forms/bulk_import.py index f39e3cd7f..18bdb3d3f 100644 --- a/netbox/dcim/forms/bulk_import.py +++ b/netbox/dcim/forms/bulk_import.py @@ -570,6 +570,12 @@ class InterfaceCSVForm(CustomFieldModelCSVForm): to_field_name='name', help_text='Parent interface' ) + bridge = CSVModelChoiceField( + queryset=Interface.objects.all(), + required=False, + to_field_name='name', + help_text='Bridged interface' + ) lag = CSVModelChoiceField( queryset=Interface.objects.all(), required=False, @@ -594,39 +600,11 @@ class InterfaceCSVForm(CustomFieldModelCSVForm): class Meta: model = Interface fields = ( - 'device', 'name', 'label', 'parent', 'lag', 'type', 'enabled', 'mark_connected', 'mac_address', 'wwn', - 'mtu', 'mgmt_only', 'description', 'mode', 'rf_role', 'rf_channel', 'rf_channel_frequency', + 'device', 'name', 'label', 'parent', 'bridge', 'lag', 'type', 'enabled', 'mark_connected', 'mac_address', + 'wwn', 'mtu', 'mgmt_only', 'description', 'mode', 'rf_role', 'rf_channel', 'rf_channel_frequency', 'rf_channel_width', ) - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) - - # Limit LAG choices to interfaces belonging to this device (or virtual chassis) - device = None - if self.is_bound and 'device' in self.data: - try: - device = self.fields['device'].to_python(self.data['device']) - except forms.ValidationError: - pass - if device and device.virtual_chassis: - self.fields['lag'].queryset = Interface.objects.filter( - Q(device=device) | Q(device__virtual_chassis=device.virtual_chassis), - type=InterfaceTypeChoices.TYPE_LAG - ) - self.fields['parent'].queryset = Interface.objects.filter( - Q(device=device) | Q(device__virtual_chassis=device.virtual_chassis) - ) - elif device: - self.fields['lag'].queryset = Interface.objects.filter( - device=device, - type=InterfaceTypeChoices.TYPE_LAG - ) - self.fields['parent'].queryset = Interface.objects.filter(device=device) - else: - self.fields['lag'].queryset = Interface.objects.none() - self.fields['parent'].queryset = Interface.objects.none() - def clean_enabled(self): # Make sure enabled is True when it's not included in the uploaded data if 'enabled' not in self.data: diff --git a/netbox/dcim/forms/models.py b/netbox/dcim/forms/models.py index e395c67d2..a2b5e7dba 100644 --- a/netbox/dcim/forms/models.py +++ b/netbox/dcim/forms/models.py @@ -1093,6 +1093,11 @@ class InterfaceForm(BootstrapMixin, InterfaceCommonForm, CustomFieldModelForm): required=False, label='Parent interface' ) + bridge = DynamicModelChoiceField( + queryset=Interface.objects.all(), + required=False, + label='Bridged interface' + ) lag = DynamicModelChoiceField( queryset=Interface.objects.all(), required=False, @@ -1143,8 +1148,8 @@ class InterfaceForm(BootstrapMixin, InterfaceCommonForm, CustomFieldModelForm): class Meta: model = Interface fields = [ - 'device', 'name', 'label', 'type', 'enabled', 'parent', 'lag', 'mac_address', 'wwn', 'mtu', 'mgmt_only', - 'mark_connected', 'description', 'mode', 'rf_role', 'rf_channel', 'rf_channel_frequency', + 'device', 'name', 'label', 'type', 'enabled', 'parent', 'bridge', 'lag', 'mac_address', 'wwn', 'mtu', + 'mgmt_only', 'mark_connected', 'description', 'mode', 'rf_role', 'rf_channel', 'rf_channel_frequency', 'rf_channel_width', 'wireless_lans', 'untagged_vlan', 'tagged_vlans', 'tags', ] widgets = { @@ -1168,13 +1173,14 @@ class InterfaceForm(BootstrapMixin, InterfaceCommonForm, CustomFieldModelForm): device = Device.objects.get(pk=self.data['device']) if self.is_bound else self.instance.device - # Restrict parent/LAG interface assignment by device/VC + # Restrict parent/bridge/LAG interface assignment by device/VC self.fields['parent'].widget.add_query_param('device_id', device.pk) + self.fields['bridge'].widget.add_query_param('device_id', device.pk) + self.fields['lag'].widget.add_query_param('device_id', device.pk) if device.virtual_chassis and device.virtual_chassis.master: - # Get available LAG interfaces by VirtualChassis master + self.fields['parent'].widget.add_query_param('device_id', device.virtual_chassis.master.pk) + self.fields['bridge'].widget.add_query_param('device_id', device.virtual_chassis.master.pk) self.fields['lag'].widget.add_query_param('device_id', device.virtual_chassis.master.pk) - else: - self.fields['lag'].widget.add_query_param('device_id', device.pk) # Limit VLAN choices by device self.fields['untagged_vlan'].widget.add_query_param('available_on_device', device.pk) diff --git a/netbox/dcim/forms/object_create.py b/netbox/dcim/forms/object_create.py index 547fe7e68..3beb42c8d 100644 --- a/netbox/dcim/forms/object_create.py +++ b/netbox/dcim/forms/object_create.py @@ -446,6 +446,13 @@ class InterfaceCreateForm(ComponentCreateForm, InterfaceCommonForm): 'device_id': '$device', } ) + bridge = DynamicModelChoiceField( + queryset=Interface.objects.all(), + required=False, + query_params={ + 'device_id': '$device', + } + ) lag = DynamicModelChoiceField( queryset=Interface.objects.all(), required=False, @@ -497,7 +504,7 @@ class InterfaceCreateForm(ComponentCreateForm, InterfaceCommonForm): required=False ) field_order = ( - 'device', 'name_pattern', 'label_pattern', 'type', 'enabled', 'parent', 'lag', 'mtu', 'mac_address', + 'device', 'name_pattern', 'label_pattern', 'type', 'enabled', 'parent', 'bridge', 'lag', 'mtu', 'mac_address', 'description', 'mgmt_only', 'mark_connected', 'rf_role', 'rf_channel', 'rf_channel_frequency', 'rf_channel_width', 'mode', 'untagged_vlan', 'tagged_vlans', 'tags' ) diff --git a/netbox/dcim/migrations/0134_interface_wwn.py b/netbox/dcim/migrations/0134_interface_wwn.py deleted file mode 100644 index 0739edbbb..000000000 --- a/netbox/dcim/migrations/0134_interface_wwn.py +++ /dev/null @@ -1,17 +0,0 @@ -import dcim.fields -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0133_port_colors'), - ] - - operations = [ - migrations.AddField( - model_name='interface', - name='wwn', - field=dcim.fields.WWNField(blank=True, null=True), - ), - ] diff --git a/netbox/dcim/migrations/0134_interface_wwn_bridge.py b/netbox/dcim/migrations/0134_interface_wwn_bridge.py new file mode 100644 index 000000000..a900ae6be --- /dev/null +++ b/netbox/dcim/migrations/0134_interface_wwn_bridge.py @@ -0,0 +1,23 @@ +import dcim.fields +import django.db.models.deletion +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('dcim', '0133_port_colors'), + ] + + operations = [ + migrations.AddField( + model_name='interface', + name='wwn', + field=dcim.fields.WWNField(blank=True, null=True), + ), + migrations.AddField( + model_name='interface', + name='bridge', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='bridge_interfaces', to='dcim.interface'), + ), + ] diff --git a/netbox/dcim/migrations/0135_tenancy_extensions.py b/netbox/dcim/migrations/0135_tenancy_extensions.py index 673b5027f..96d765eea 100644 --- a/netbox/dcim/migrations/0135_tenancy_extensions.py +++ b/netbox/dcim/migrations/0135_tenancy_extensions.py @@ -6,7 +6,7 @@ class Migration(migrations.Migration): dependencies = [ ('tenancy', '0002_tenant_ordering'), - ('dcim', '0134_interface_wwn'), + ('dcim', '0134_interface_wwn_bridge'), ] operations = [ diff --git a/netbox/dcim/models/device_components.py b/netbox/dcim/models/device_components.py index c2a37fcae..2a6adfa0c 100644 --- a/netbox/dcim/models/device_components.py +++ b/netbox/dcim/models/device_components.py @@ -462,6 +462,22 @@ class BaseInterface(models.Model): choices=InterfaceModeChoices, blank=True ) + parent = models.ForeignKey( + to='self', + on_delete=models.SET_NULL, + related_name='child_interfaces', + null=True, + blank=True, + verbose_name='Parent interface' + ) + bridge = models.ForeignKey( + to='self', + on_delete=models.SET_NULL, + related_name='bridge_interfaces', + null=True, + blank=True, + verbose_name='Bridge interface' + ) class Meta: abstract = True @@ -495,14 +511,6 @@ class Interface(ComponentModel, BaseInterface, LinkTermination, PathEndpoint): max_length=100, blank=True ) - parent = models.ForeignKey( - to='self', - on_delete=models.SET_NULL, - related_name='child_interfaces', - null=True, - blank=True, - verbose_name='Parent interface' - ) lag = models.ForeignKey( to='self', on_delete=models.SET_NULL, @@ -586,7 +594,7 @@ class Interface(ComponentModel, BaseInterface, LinkTermination, PathEndpoint): related_query_name='interface' ) - clone_fields = ['device', 'parent', 'lag', 'type', 'mgmt_only'] + clone_fields = ['device', 'parent', 'bridge', 'lag', 'type', 'mgmt_only'] class Meta: ordering = ('device', CollateAsChar('_name')) @@ -610,6 +618,16 @@ class Interface(ComponentModel, BaseInterface, LinkTermination, PathEndpoint): 'mark_connected': f"{self.get_type_display()} interfaces cannot be marked as connected." }) + # Parent validation + + # An interface cannot be its own parent + if self.pk and self.parent_id == self.pk: + raise ValidationError({'parent': "An interface cannot be its own parent."}) + + # A physical interface cannot have a parent interface + if self.type != InterfaceTypeChoices.TYPE_VIRTUAL and self.parent is not None: + raise ValidationError({'parent': "Only virtual interfaces may be assigned to a parent interface."}) + # An interface's parent must belong to the same device or virtual chassis if self.parent and self.parent.device != self.device: if self.device.virtual_chassis is None: @@ -623,13 +641,34 @@ class Interface(ComponentModel, BaseInterface, LinkTermination, PathEndpoint): f"is not part of virtual chassis {self.device.virtual_chassis}." }) - # An interface cannot be its own parent - if self.pk and self.parent_id == self.pk: - raise ValidationError({'parent': "An interface cannot be its own parent."}) + # Bridge validation - # A physical interface cannot have a parent interface - if self.type != InterfaceTypeChoices.TYPE_VIRTUAL and self.parent is not None: - raise ValidationError({'parent': "Only virtual interfaces may be assigned to a parent interface."}) + # An interface cannot be bridged to itself + if self.pk and self.bridge_id == self.pk: + raise ValidationError({'bridge': "An interface cannot be bridged to itself."}) + + # A bridged interface belong to the same device or virtual chassis + if self.bridge and self.bridge.device != self.device: + if self.device.virtual_chassis is None: + raise ValidationError({ + 'bridge': f"The selected bridge interface ({self.bridge}) belongs to a different device " + f"({self.bridge.device})." + }) + elif self.bridge.device.virtual_chassis != self.device.virtual_chassis: + raise ValidationError({ + 'bridge': f"The selected bridge interface ({self.bridge}) belongs to {self.bridge.device}, which " + f"is not part of virtual chassis {self.device.virtual_chassis}." + }) + + # LAG validation + + # A virtual interface cannot have a parent LAG + if self.type == InterfaceTypeChoices.TYPE_VIRTUAL and self.lag is not None: + raise ValidationError({'lag': "Virtual interfaces cannot have a parent LAG interface."}) + + # A LAG interface cannot be its own parent + if self.pk and self.lag_id == self.pk: + raise ValidationError({'lag': "A LAG interface cannot be its own parent."}) # An interface's LAG must belong to the same device or virtual chassis if self.lag and self.lag.device != self.device: @@ -643,13 +682,7 @@ class Interface(ComponentModel, BaseInterface, LinkTermination, PathEndpoint): f"of virtual chassis {self.device.virtual_chassis}." }) - # A virtual interface cannot have a parent LAG - if self.type == InterfaceTypeChoices.TYPE_VIRTUAL and self.lag is not None: - raise ValidationError({'lag': "Virtual interfaces cannot have a parent LAG interface."}) - - # A LAG interface cannot be its own parent - if self.pk and self.lag_id == self.pk: - raise ValidationError({'lag': "A LAG interface cannot be its own parent."}) + # Wireless validation # RF role & channel may only be set for wireless interfaces if self.rf_role and not self.is_wireless: @@ -679,11 +712,13 @@ class Interface(ComponentModel, BaseInterface, LinkTermination, PathEndpoint): elif self.rf_channel: self.rf_channel_width = get_channel_attr(self.rf_channel, 'width') + # VLAN validation + # Validate untagged VLAN if self.untagged_vlan and self.untagged_vlan.site not in [self.device.site, None]: raise ValidationError({ - 'untagged_vlan': "The untagged VLAN ({}) must belong to the same site as the interface's parent " - "device, or it must be global".format(self.untagged_vlan) + 'untagged_vlan': f"The untagged VLAN ({self.untagged_vlan}) must belong to the same site as the " + f"interface's parent device, or it must be global." }) @property diff --git a/netbox/dcim/tables/devices.py b/netbox/dcim/tables/devices.py index 06c594f6b..8ea27b8a6 100644 --- a/netbox/dcim/tables/devices.py +++ b/netbox/dcim/tables/devices.py @@ -521,8 +521,10 @@ class DeviceInterfaceTable(InterfaceTable): attrs={'td': {'class': 'text-nowrap'}} ) parent = tables.Column( - linkify=True, - verbose_name='Parent' + linkify=True + ) + bridge = tables.Column( + linkify=True ) lag = tables.Column( linkify=True, @@ -537,10 +539,10 @@ class DeviceInterfaceTable(InterfaceTable): class Meta(DeviceComponentTable.Meta): model = Interface fields = ( - 'pk', 'name', 'label', 'enabled', 'type', 'parent', 'lag', 'mgmt_only', 'mtu', 'mode', 'mac_address', 'wwn', - 'rf_role', 'rf_channel', 'rf_channel_width', 'description', 'mark_connected', 'cable', 'cable_color', - 'wireless_link', 'wireless_lans', 'link_peer', 'connection', 'tags', 'ip_addresses', 'untagged_vlan', - 'tagged_vlans', 'actions', + 'pk', 'name', 'label', 'enabled', 'type', 'parent', 'bridge', 'lag', 'mgmt_only', 'mtu', 'mode', + 'mac_address', 'wwn', 'rf_role', 'rf_channel', 'rf_channel_width', 'description', 'mark_connected', 'cable', + 'cable_color', 'wireless_link', 'wireless_lans', 'link_peer', 'connection', 'tags', 'ip_addresses', + 'untagged_vlan', 'tagged_vlans', 'actions', ) order_by = ('name',) default_columns = ( diff --git a/netbox/templates/dcim/interface.html b/netbox/templates/dcim/interface.html index 730720b42..eb47f5655 100644 --- a/netbox/templates/dcim/interface.html +++ b/netbox/templates/dcim/interface.html @@ -69,6 +69,16 @@ {% endif %} + + Bridge + + {% if object.bridge %} + {{ object.bridge }} + {% else %} + None + {% endif %} + + LAG diff --git a/netbox/templates/dcim/interface_edit.html b/netbox/templates/dcim/interface_edit.html index aec88d25a..2afa0a7b6 100644 --- a/netbox/templates/dcim/interface_edit.html +++ b/netbox/templates/dcim/interface_edit.html @@ -18,6 +18,7 @@ {% render_field form.label %} {% render_field form.type %} {% render_field form.parent %} + {% render_field form.bridge %} {% render_field form.lag %} {% render_field form.mac_address %} {% render_field form.wwn %} diff --git a/netbox/templates/virtualization/vminterface.html b/netbox/templates/virtualization/vminterface.html index 1678013f2..2646686e8 100644 --- a/netbox/templates/virtualization/vminterface.html +++ b/netbox/templates/virtualization/vminterface.html @@ -47,6 +47,16 @@ {% endif %} + + Bridge + + {% if object.bridge %} + {{ object.bridge }} + {% else %} + None + {% endif %} + + Description {{ object.description|placeholder }} diff --git a/netbox/templates/virtualization/vminterface_edit.html b/netbox/templates/virtualization/vminterface_edit.html index b4d097513..824f2bf24 100644 --- a/netbox/templates/virtualization/vminterface_edit.html +++ b/netbox/templates/virtualization/vminterface_edit.html @@ -17,6 +17,7 @@ {% render_field form.name %} {% render_field form.enabled %} {% render_field form.parent %} + {% render_field form.bridge %} {% render_field form.mac_address %} {% render_field form.mtu %} {% render_field form.description %} diff --git a/netbox/virtualization/api/serializers.py b/netbox/virtualization/api/serializers.py index ef8c975d3..6cdc0e09a 100644 --- a/netbox/virtualization/api/serializers.py +++ b/netbox/virtualization/api/serializers.py @@ -107,6 +107,7 @@ class VMInterfaceSerializer(PrimaryModelSerializer): url = serializers.HyperlinkedIdentityField(view_name='virtualization-api:vminterface-detail') virtual_machine = NestedVirtualMachineSerializer() parent = NestedVMInterfaceSerializer(required=False, allow_null=True) + bridge = NestedVMInterfaceSerializer(required=False, allow_null=True) mode = ChoiceField(choices=InterfaceModeChoices, allow_blank=True, required=False) untagged_vlan = NestedVLANSerializer(required=False, allow_null=True) tagged_vlans = SerializedPKRelatedField( @@ -120,8 +121,8 @@ class VMInterfaceSerializer(PrimaryModelSerializer): class Meta: model = VMInterface fields = [ - 'id', 'url', 'display', 'virtual_machine', 'name', 'enabled', 'parent', 'mtu', 'mac_address', 'description', - 'mode', 'untagged_vlan', 'tagged_vlans', 'tags', 'custom_fields', 'created', 'last_updated', + 'id', 'url', 'display', 'virtual_machine', 'name', 'enabled', 'parent', 'bridge', 'mtu', 'mac_address', + 'description', 'mode', 'untagged_vlan', 'tagged_vlans', 'tags', 'custom_fields', 'created', 'last_updated', 'count_ipaddresses', ] diff --git a/netbox/virtualization/filtersets.py b/netbox/virtualization/filtersets.py index e2aac9b80..dc084a67f 100644 --- a/netbox/virtualization/filtersets.py +++ b/netbox/virtualization/filtersets.py @@ -264,6 +264,11 @@ class VMInterfaceFilterSet(PrimaryModelFilterSet): queryset=VMInterface.objects.all(), label='Parent interface (ID)', ) + bridge_id = django_filters.ModelMultipleChoiceFilter( + field_name='bridge', + queryset=VMInterface.objects.all(), + label='Bridged interface (ID)', + ) mac_address = MultiValueMACAddressFilter( label='MAC address', ) diff --git a/netbox/virtualization/forms/bulk_edit.py b/netbox/virtualization/forms/bulk_edit.py index d18d432cd..d6c190904 100644 --- a/netbox/virtualization/forms/bulk_edit.py +++ b/netbox/virtualization/forms/bulk_edit.py @@ -165,6 +165,10 @@ class VMInterfaceBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldMode queryset=VMInterface.objects.all(), required=False ) + bridge = DynamicModelChoiceField( + queryset=VMInterface.objects.all(), + required=False + ) enabled = forms.NullBooleanField( required=False, widget=BulkEditNullBooleanSelect() @@ -195,7 +199,7 @@ class VMInterfaceBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldMode class Meta: nullable_fields = [ - 'parent', 'mtu', 'description', + 'parent', 'bridge', 'mtu', 'description', ] def __init__(self, *args, **kwargs): @@ -203,8 +207,9 @@ class VMInterfaceBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldMode if 'virtual_machine' in self.initial: vm_id = self.initial.get('virtual_machine') - # Restrict parent interface assignment by VM + # Restrict parent/bridge interface assignment by VM self.fields['parent'].widget.add_query_param('virtual_machine_id', vm_id) + self.fields['bridge'].widget.add_query_param('virtual_machine_id', vm_id) # Limit VLAN choices by virtual machine self.fields['untagged_vlan'].widget.add_query_param('available_on_virtualmachine', vm_id) @@ -231,6 +236,11 @@ class VMInterfaceBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldMode self.fields['untagged_vlan'].widget.add_query_param('site_id', site.pk) self.fields['tagged_vlans'].widget.add_query_param('site_id', site.pk) + self.fields['parent'].choices = () + self.fields['parent'].widget.attrs['disabled'] = True + self.fields['bridge'].choices = () + self.fields['bridge'].widget.attrs['disabled'] = True + class VMInterfaceBulkRenameForm(BulkRenameForm): pk = forms.ModelMultipleChoiceField( diff --git a/netbox/virtualization/forms/bulk_import.py b/netbox/virtualization/forms/bulk_import.py index d01418aa0..bd3279959 100644 --- a/netbox/virtualization/forms/bulk_import.py +++ b/netbox/virtualization/forms/bulk_import.py @@ -104,6 +104,18 @@ class VMInterfaceCSVForm(CustomFieldModelCSVForm): queryset=VirtualMachine.objects.all(), to_field_name='name' ) + parent = CSVModelChoiceField( + queryset=VMInterface.objects.all(), + required=False, + to_field_name='name', + help_text='Parent interface' + ) + bridge = CSVModelChoiceField( + queryset=VMInterface.objects.all(), + required=False, + to_field_name='name', + help_text='Bridged interface' + ) mode = CSVChoiceField( choices=InterfaceModeChoices, required=False, @@ -113,7 +125,7 @@ class VMInterfaceCSVForm(CustomFieldModelCSVForm): class Meta: model = VMInterface fields = ( - 'virtual_machine', 'name', 'enabled', 'mac_address', 'mtu', 'description', 'mode', + 'virtual_machine', 'name', 'parent', 'bridge', 'enabled', 'mac_address', 'mtu', 'description', 'mode', ) def clean_enabled(self): diff --git a/netbox/virtualization/forms/models.py b/netbox/virtualization/forms/models.py index 88ebc9e83..7fa5b0fa6 100644 --- a/netbox/virtualization/forms/models.py +++ b/netbox/virtualization/forms/models.py @@ -277,6 +277,11 @@ class VMInterfaceForm(BootstrapMixin, InterfaceCommonForm, CustomFieldModelForm) required=False, label='Parent interface' ) + bridge = DynamicModelChoiceField( + queryset=VMInterface.objects.all(), + required=False, + label='Bridged interface' + ) vlan_group = DynamicModelChoiceField( queryset=VLANGroup.objects.all(), required=False, @@ -306,8 +311,8 @@ class VMInterfaceForm(BootstrapMixin, InterfaceCommonForm, CustomFieldModelForm) class Meta: model = VMInterface fields = [ - 'virtual_machine', 'name', 'enabled', 'parent', 'mac_address', 'mtu', 'description', 'mode', 'tags', - 'untagged_vlan', 'tagged_vlans', + 'virtual_machine', 'name', 'parent', 'bridge', 'enabled', 'mac_address', 'mtu', 'description', 'mode', + 'tags', 'untagged_vlan', 'tagged_vlans', ] widgets = { 'virtual_machine': forms.HiddenInput(), @@ -326,6 +331,7 @@ class VMInterfaceForm(BootstrapMixin, InterfaceCommonForm, CustomFieldModelForm) # Restrict parent interface assignment by VM self.fields['parent'].widget.add_query_param('virtual_machine_id', vm_id) + self.fields['bridge'].widget.add_query_param('virtual_machine_id', vm_id) # Limit VLAN choices by virtual machine self.fields['untagged_vlan'].widget.add_query_param('available_on_virtualmachine', vm_id) diff --git a/netbox/virtualization/forms/object_create.py b/netbox/virtualization/forms/object_create.py index b58fb51f8..332334594 100644 --- a/netbox/virtualization/forms/object_create.py +++ b/netbox/virtualization/forms/object_create.py @@ -35,6 +35,13 @@ class VMInterfaceCreateForm(BootstrapMixin, CustomFieldsMixin, InterfaceCommonFo 'virtual_machine_id': '$virtual_machine', } ) + bridge = DynamicModelChoiceField( + queryset=VMInterface.objects.all(), + required=False, + query_params={ + 'virtual_machine_id': '$virtual_machine', + } + ) mac_address = forms.CharField( required=False, label='MAC Address' @@ -61,7 +68,7 @@ class VMInterfaceCreateForm(BootstrapMixin, CustomFieldsMixin, InterfaceCommonFo required=False ) field_order = ( - 'virtual_machine', 'name_pattern', 'enabled', 'parent', 'mtu', 'mac_address', 'description', 'mode', + 'virtual_machine', 'name_pattern', 'enabled', 'parent', 'bridge', 'mtu', 'mac_address', 'description', 'mode', 'untagged_vlan', 'tagged_vlans', 'tags' ) diff --git a/netbox/virtualization/migrations/0026_vminterface_bridge.py b/netbox/virtualization/migrations/0026_vminterface_bridge.py new file mode 100644 index 000000000..04909c72c --- /dev/null +++ b/netbox/virtualization/migrations/0026_vminterface_bridge.py @@ -0,0 +1,19 @@ +# Generated by Django 3.2.8 on 2021-10-21 20:26 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('virtualization', '0025_extend_tag_support'), + ] + + operations = [ + migrations.AddField( + model_name='vminterface', + name='bridge', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='bridge_interfaces', to='virtualization.vminterface'), + ), + ] diff --git a/netbox/virtualization/models.py b/netbox/virtualization/models.py index bd64f56cf..c614618c0 100644 --- a/netbox/virtualization/models.py +++ b/netbox/virtualization/models.py @@ -378,14 +378,6 @@ class VMInterface(PrimaryModel, BaseInterface): max_length=200, blank=True ) - parent = models.ForeignKey( - to='self', - on_delete=models.SET_NULL, - related_name='child_interfaces', - null=True, - blank=True, - verbose_name='Parent interface' - ) untagged_vlan = models.ForeignKey( to='ipam.VLAN', on_delete=models.SET_NULL, @@ -423,6 +415,12 @@ class VMInterface(PrimaryModel, BaseInterface): def clean(self): super().clean() + # Parent validation + + # An interface cannot be its own parent + if self.pk and self.parent_id == self.pk: + raise ValidationError({'parent': "An interface cannot be its own parent."}) + # An interface's parent must belong to the same virtual machine if self.parent and self.parent.virtual_machine != self.virtual_machine: raise ValidationError({ @@ -430,15 +428,26 @@ class VMInterface(PrimaryModel, BaseInterface): f"({self.parent.virtual_machine})." }) - # An interface cannot be its own parent - if self.pk and self.parent_id == self.pk: - raise ValidationError({'parent': "An interface cannot be its own parent."}) + # Bridge validation + + # An interface cannot be bridged to itself + if self.pk and self.bridge_id == self.pk: + raise ValidationError({'bridge': "An interface cannot be bridged to itself."}) + + # A bridged interface belong to the same virtual machine + if self.bridge and self.bridge.virtual_machine != self.virtual_machine: + raise ValidationError({ + 'bridge': f"The selected bridge interface ({self.bridge}) belongs to a different virtual machine " + f"({self.bridge.virtual_machine})." + }) + + # VLAN validation # Validate untagged VLAN if self.untagged_vlan and self.untagged_vlan.site not in [self.virtual_machine.site, None]: raise ValidationError({ 'untagged_vlan': f"The untagged VLAN ({self.untagged_vlan}) must belong to the same site as the " - f"interface's parent virtual machine, or it must be global" + f"interface's parent virtual machine, or it must be global." }) def to_objectchange(self, action): diff --git a/netbox/virtualization/tables.py b/netbox/virtualization/tables.py index 64b376e1d..56ad88f1f 100644 --- a/netbox/virtualization/tables.py +++ b/netbox/virtualization/tables.py @@ -166,9 +166,6 @@ class VMInterfaceTable(BaseInterfaceTable): name = tables.Column( linkify=True ) - parent = tables.Column( - linkify=True - ) tags = TagColumn( url_name='virtualization:vminterface_list' ) @@ -176,13 +173,19 @@ class VMInterfaceTable(BaseInterfaceTable): class Meta(BaseTable.Meta): model = VMInterface fields = ( - 'pk', 'name', 'virtual_machine', 'enabled', 'parent', 'mac_address', 'mtu', 'mode', 'description', 'tags', + 'pk', 'name', 'virtual_machine', 'enabled', 'mac_address', 'mtu', 'mode', 'description', 'tags', 'ip_addresses', 'untagged_vlan', 'tagged_vlans', ) - default_columns = ('pk', 'name', 'virtual_machine', 'enabled', 'parent', 'description') + default_columns = ('pk', 'name', 'virtual_machine', 'enabled', 'description') class VirtualMachineVMInterfaceTable(VMInterfaceTable): + parent = tables.Column( + linkify=True + ) + bridge = tables.Column( + linkify=True + ) actions = ButtonsColumn( model=VMInterface, buttons=('edit', 'delete'), @@ -192,8 +195,8 @@ class VirtualMachineVMInterfaceTable(VMInterfaceTable): class Meta(BaseTable.Meta): model = VMInterface fields = ( - 'pk', 'name', 'enabled', 'mac_address', 'mtu', 'mode', 'description', 'tags', 'ip_addresses', - 'untagged_vlan', 'tagged_vlans', 'actions', + 'pk', 'name', 'enabled', 'parent', 'bridge', 'mac_address', 'mtu', 'mode', 'description', 'tags', + 'ip_addresses', 'untagged_vlan', 'tagged_vlans', 'actions', ) default_columns = ( 'pk', 'name', 'enabled', 'mac_address', 'mtu', 'mode', 'description', 'ip_addresses', 'actions', From 5193fa64838720e5d0ed4e67ec15868c16457353 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Thu, 21 Oct 2021 16:57:01 -0400 Subject: [PATCH 057/289] Add tests for #6346 --- netbox/dcim/tests/test_api.py | 3 ++- netbox/dcim/tests/test_filtersets.py | 13 +++++++++++++ netbox/dcim/tests/test_views.py | 4 +++- netbox/virtualization/tests/test_api.py | 3 ++- netbox/virtualization/tests/test_filtersets.py | 13 +++++++++++++ netbox/virtualization/tests/test_views.py | 5 ++++- 6 files changed, 37 insertions(+), 4 deletions(-) diff --git a/netbox/dcim/tests/test_api.py b/netbox/dcim/tests/test_api.py index e5977b760..b3f182ce7 100644 --- a/netbox/dcim/tests/test_api.py +++ b/netbox/dcim/tests/test_api.py @@ -1206,6 +1206,7 @@ class InterfaceTest(Mixins.ComponentTraceMixin, APIViewTestCases.APIViewTestCase 'name': 'Interface 5', 'type': '1000base-t', 'mode': InterfaceModeChoices.MODE_TAGGED, + 'bridge': interfaces[0].pk, 'tagged_vlans': [vlans[0].pk, vlans[1].pk], 'untagged_vlan': vlans[2].pk, }, @@ -1214,7 +1215,7 @@ class InterfaceTest(Mixins.ComponentTraceMixin, APIViewTestCases.APIViewTestCase 'name': 'Interface 6', 'type': 'virtual', 'mode': InterfaceModeChoices.MODE_TAGGED, - 'parent': interfaces[0].pk, + 'parent': interfaces[1].pk, 'tagged_vlans': [vlans[0].pk, vlans[1].pk], 'untagged_vlan': vlans[2].pk, }, diff --git a/netbox/dcim/tests/test_filtersets.py b/netbox/dcim/tests/test_filtersets.py index f66ceb855..51cfafaf2 100644 --- a/netbox/dcim/tests/test_filtersets.py +++ b/netbox/dcim/tests/test_filtersets.py @@ -2125,6 +2125,19 @@ class InterfaceTestCase(TestCase, ChangeLoggedFilterSetTests): params = {'parent_id': [parent_interface.pk]} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 3) + def test_bridge(self): + # Create bridged interfaces + bridge_interface = Interface.objects.first() + bridged_interfaces = ( + Interface(device=bridge_interface.device, name='Bridged 1', bridge=bridge_interface, type=InterfaceTypeChoices.TYPE_1GE_FIXED), + Interface(device=bridge_interface.device, name='Bridged 2', bridge=bridge_interface, type=InterfaceTypeChoices.TYPE_1GE_FIXED), + Interface(device=bridge_interface.device, name='Bridged 3', bridge=bridge_interface, type=InterfaceTypeChoices.TYPE_1GE_FIXED), + ) + Interface.objects.bulk_create(bridged_interfaces) + + params = {'bridge_id': [bridge_interface.pk]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 3) + def test_lag(self): # Create LAG members device = Device.objects.first() diff --git a/netbox/dcim/tests/test_views.py b/netbox/dcim/tests/test_views.py index c08eb6e8a..92757f28d 100644 --- a/netbox/dcim/tests/test_views.py +++ b/netbox/dcim/tests/test_views.py @@ -1581,6 +1581,7 @@ class InterfaceTestCase(ViewTestCases.DeviceComponentViewTestCase): Interface(device=device, name='Interface 2'), Interface(device=device, name='Interface 3'), Interface(device=device, name='LAG', type=InterfaceTypeChoices.TYPE_LAG), + Interface(device=device, name='_BRIDGE', type=InterfaceTypeChoices.TYPE_VIRTUAL), # Must be ordered last ) Interface.objects.bulk_create(interfaces) @@ -1596,10 +1597,10 @@ class InterfaceTestCase(ViewTestCases.DeviceComponentViewTestCase): cls.form_data = { 'device': device.pk, - 'virtual_machine': None, 'name': 'Interface X', 'type': InterfaceTypeChoices.TYPE_1GE_GBIC, 'enabled': False, + 'bridge': interfaces[4].pk, 'lag': interfaces[3].pk, 'mac_address': EUI('01:02:03:04:05:06'), 'wwn': EUI('01:02:03:04:05:06:07:08', version=64), @@ -1617,6 +1618,7 @@ class InterfaceTestCase(ViewTestCases.DeviceComponentViewTestCase): 'name_pattern': 'Interface [4-6]', 'type': InterfaceTypeChoices.TYPE_1GE_GBIC, 'enabled': False, + 'bridge': interfaces[4].pk, 'lag': interfaces[3].pk, 'mac_address': EUI('01:02:03:04:05:06'), 'wwn': EUI('01:02:03:04:05:06:07:08', version=64), diff --git a/netbox/virtualization/tests/test_api.py b/netbox/virtualization/tests/test_api.py index 3245fb9bf..4a9b67bf0 100644 --- a/netbox/virtualization/tests/test_api.py +++ b/netbox/virtualization/tests/test_api.py @@ -246,14 +246,15 @@ class VMInterfaceTest(APIViewTestCases.APIViewTestCase): 'virtual_machine': virtualmachine.pk, 'name': 'Interface 5', 'mode': InterfaceModeChoices.MODE_TAGGED, + 'bridge': interfaces[0].pk, 'tagged_vlans': [vlans[0].pk, vlans[1].pk], 'untagged_vlan': vlans[2].pk, }, { 'virtual_machine': virtualmachine.pk, 'name': 'Interface 6', - 'parent': interfaces[0].pk, 'mode': InterfaceModeChoices.MODE_TAGGED, + 'parent': interfaces[1].pk, 'tagged_vlans': [vlans[0].pk, vlans[1].pk], 'untagged_vlan': vlans[2].pk, }, diff --git a/netbox/virtualization/tests/test_filtersets.py b/netbox/virtualization/tests/test_filtersets.py index 0ca6364a5..a74ccc4d9 100644 --- a/netbox/virtualization/tests/test_filtersets.py +++ b/netbox/virtualization/tests/test_filtersets.py @@ -452,6 +452,19 @@ class VMInterfaceTestCase(TestCase, ChangeLoggedFilterSetTests): params = {'parent_id': [parent_interface.pk]} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 3) + def test_bridge(self): + # Create bridged interfaces + bridge_interface = VMInterface.objects.first() + bridged_interfaces = ( + VMInterface(virtual_machine=bridge_interface.virtual_machine, name='Bridged 1', bridge=bridge_interface), + VMInterface(virtual_machine=bridge_interface.virtual_machine, name='Bridged 2', bridge=bridge_interface), + VMInterface(virtual_machine=bridge_interface.virtual_machine, name='Bridged 3', bridge=bridge_interface), + ) + VMInterface.objects.bulk_create(bridged_interfaces) + + params = {'bridge_id': [bridge_interface.pk]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 3) + def test_mtu(self): params = {'mtu': [100, 200]} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) diff --git a/netbox/virtualization/tests/test_views.py b/netbox/virtualization/tests/test_views.py index 138b1afae..7dc5660fd 100644 --- a/netbox/virtualization/tests/test_views.py +++ b/netbox/virtualization/tests/test_views.py @@ -248,10 +248,11 @@ class VMInterfaceTestCase(ViewTestCases.DeviceComponentViewTestCase): ) VirtualMachine.objects.bulk_create(virtualmachines) - VMInterface.objects.bulk_create([ + interfaces = VMInterface.objects.bulk_create([ VMInterface(virtual_machine=virtualmachines[0], name='Interface 1'), VMInterface(virtual_machine=virtualmachines[0], name='Interface 2'), VMInterface(virtual_machine=virtualmachines[0], name='Interface 3'), + VMInterface(virtual_machine=virtualmachines[1], name='BRIDGE'), ]) vlans = ( @@ -268,6 +269,7 @@ class VMInterfaceTestCase(ViewTestCases.DeviceComponentViewTestCase): 'virtual_machine': virtualmachines[1].pk, 'name': 'Interface X', 'enabled': False, + 'bridge': interfaces[3].pk, 'mac_address': EUI('01-02-03-04-05-06'), 'mtu': 65000, 'description': 'New description', @@ -281,6 +283,7 @@ class VMInterfaceTestCase(ViewTestCases.DeviceComponentViewTestCase): 'virtual_machine': virtualmachines[1].pk, 'name_pattern': 'Interface [4-6]', 'enabled': False, + 'bridge': interfaces[3].pk, 'mac_address': EUI('01-02-03-04-05-06'), 'mtu': 2000, 'description': 'New description', From e96f5447f42e72738575c705f039f61fde592587 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Thu, 21 Oct 2021 17:03:21 -0400 Subject: [PATCH 058/289] Changelog for #6346 --- docs/release-notes/version-3.1.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/docs/release-notes/version-3.1.md b/docs/release-notes/version-3.1.md index 88142bf78..f586f43bb 100644 --- a/docs/release-notes/version-3.1.md +++ b/docs/release-notes/version-3.1.md @@ -7,6 +7,8 @@ * The `tenant` and `tenant_id` filters for the Cable model now filter on the tenant assigned directly to each cable, rather than on the parent object of either termination. +### New Features + #### Contacts ([#1344](https://github.com/netbox-community/netbox/issues/1344)) A set of new models for tracking contact information has been introduced within the tenancy app. Users may now create individual contact objects to be associated with various models within NetBox. Each contact has a name, title, email address, etc. Contacts can be arranged in hierarchical groups for ease of management. @@ -26,6 +28,12 @@ Both types of connection include SSID and authentication attributes. Additionall * Channel - A predefined channel within a standardized band * Channel frequency & width - Customizable channel attributes (e.g. for licensed bands) +#### Interface Bridging ([#6346](https://github.com/netbox-community/netbox/issues/6346)) + +A `bridge` field has been added to the interface model for devices and virtual machines. This can be set to reference another interface on the same parent device/VM to indicate a direct layer two bridging adjacency. + +Multiple interfaces can be bridged to a single virtual interface to effect a bridge group. Alternatively, two physical interfaces can be bridged to one another, to effect an internal cross-connect. + ### Enhancements * [#1337](https://github.com/netbox-community/netbox/issues/1337) - Add WWN field to interfaces @@ -73,6 +81,9 @@ Both types of connection include SSID and authentication attributes. Additionall * dcim.DeviceType * Added `airflow` field * dcim.Interface + * Added `bridge` field * Added `wwn` field * dcim.Location * Added `tenant` field +* virtualization.VMInterface + * Added `bridge` field From 7e26d921901077522a6f0fa4c4755c26280a1a7d Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Fri, 22 Oct 2021 16:27:08 -0400 Subject: [PATCH 059/289] Introduce conditions & condition sets --- netbox/extras/conditions.py | 122 +++++++++++++++++++ netbox/extras/tests/test_conditions.py | 160 +++++++++++++++++++++++++ 2 files changed, 282 insertions(+) create mode 100644 netbox/extras/conditions.py create mode 100644 netbox/extras/tests/test_conditions.py diff --git a/netbox/extras/conditions.py b/netbox/extras/conditions.py new file mode 100644 index 000000000..6aa6e776f --- /dev/null +++ b/netbox/extras/conditions.py @@ -0,0 +1,122 @@ +import functools + +__all__ = ( + 'Condition', + 'ConditionSet', +) + + +LOGIC_TYPES = ( + 'and', + 'or' +) + + +def is_ruleset(data): + """ + Determine whether the given dictionary looks like a rule set. + """ + return type(data) is dict and len(data) == 1 and list(data.keys())[0] in LOGIC_TYPES + + +class Condition: + """ + An individual conditional rule that evaluates a single attribute and its value. + + :param attr: The name of the attribute being evaluated + :param value: The value being compared + :param op: The logical operation to use when evaluating the value (default: 'eq') + """ + EQ = 'eq' + NEQ = 'neq' + GT = 'gt' + GTE = 'gte' + LT = 'lt' + LTE = 'lte' + IN = 'in' + CONTAINS = 'contains' + + OPERATORS = ( + EQ, NEQ, GT, GTE, LT, LTE, IN, CONTAINS + ) + + def __init__(self, attr, value, op=EQ): + self.attr = attr + self.value = value + if op not in self.OPERATORS: + raise ValueError(f"Unknown operator: {op}") + self.eval_func = getattr(self, f'eval_{op}') + + def eval(self, data): + """ + Evaluate the provided data to determine whether it matches the condition. + """ + value = functools.reduce(dict.get, self.attr.split('.'), data) + return self.eval_func(value) + + # Equivalency + + def eval_eq(self, value): + return value == self.value + + def eval_neq(self, value): + return value != self.value + + # Numeric comparisons + + def eval_gt(self, value): + return value > self.value + + def eval_gte(self, value): + return value >= self.value + + def eval_lt(self, value): + return value < self.value + + def eval_lte(self, value): + return value <= self.value + + # Membership + + def eval_in(self, value): + return value in self.value + + def eval_contains(self, value): + return self.value in value + + +class ConditionSet: + """ + A set of one or more Condition to be evaluated per the prescribed logic (AND or OR). Example: + + {"and": [ + {"attr": "foo", "op": "eq", "value": 1}, + {"attr": "bar", "op": "neq", "value": 2} + ]} + + :param ruleset: A dictionary mapping a logical operator to a list of conditional rules + """ + def __init__(self, ruleset): + if type(ruleset) is not dict: + raise ValueError(f"Ruleset must be a dictionary, not {type(ruleset)}.") + if len(ruleset) != 1: + raise ValueError(f"Ruleset must have exactly one logical operator (found {len(ruleset)})") + + # Determine the logic type + logic = list(ruleset.keys())[0] + if type(logic) is not str or logic.lower() not in LOGIC_TYPES: + raise ValueError(f"Invalid logic type: {logic} (must be 'and' or 'or')") + self.logic = logic.lower() + + # Compile the set of Conditions + self.conditions = [ + ConditionSet(rule) if is_ruleset(rule) else Condition(**rule) + for rule in ruleset[self.logic] + ] + + def eval(self, data): + """ + Evaluate the provided data to determine whether it matches this set of conditions. + """ + func = any if self.logic == 'or' else all + return func(d.eval(data) for d in self.conditions) diff --git a/netbox/extras/tests/test_conditions.py b/netbox/extras/tests/test_conditions.py new file mode 100644 index 000000000..7defca5b5 --- /dev/null +++ b/netbox/extras/tests/test_conditions.py @@ -0,0 +1,160 @@ +from django.test import TestCase + +from extras.conditions import Condition, ConditionSet + + +class ConditionTestCase(TestCase): + + def test_dotted_path_access(self): + c = Condition('a.b.c', 1, 'eq') + self.assertTrue(c.eval({'a': {'b': {'c': 1}}})) + self.assertFalse(c.eval({'a': {'b': {'c': 2}}})) + self.assertFalse(c.eval({'a': {'b': {'x': 1}}})) + + def test_undefined_attr(self): + c = Condition('x', 1, 'eq') + self.assertFalse(c.eval({})) + self.assertTrue(c.eval({'x': 1})) + + # + # Operator tests + # + + def test_default_operator(self): + c = Condition('x', 1) + self.assertEqual(c.eval_func, c.eval_eq) + + def test_eq(self): + c = Condition('x', 1, 'eq') + self.assertTrue(c.eval({'x': 1})) + self.assertFalse(c.eval({'x': 2})) + + def test_neq(self): + c = Condition('x', 1, 'neq') + self.assertFalse(c.eval({'x': 1})) + self.assertTrue(c.eval({'x': 2})) + + def test_gt(self): + c = Condition('x', 1, 'gt') + self.assertTrue(c.eval({'x': 2})) + self.assertFalse(c.eval({'x': 1})) + + def test_gte(self): + c = Condition('x', 1, 'gte') + self.assertTrue(c.eval({'x': 2})) + self.assertTrue(c.eval({'x': 1})) + self.assertFalse(c.eval({'x': 0})) + + def test_lt(self): + c = Condition('x', 2, 'lt') + self.assertTrue(c.eval({'x': 1})) + self.assertFalse(c.eval({'x': 2})) + + def test_lte(self): + c = Condition('x', 2, 'lte') + self.assertTrue(c.eval({'x': 1})) + self.assertTrue(c.eval({'x': 2})) + self.assertFalse(c.eval({'x': 3})) + + def test_in(self): + c = Condition('x', [1, 2, 3], 'in') + self.assertTrue(c.eval({'x': 1})) + self.assertFalse(c.eval({'x': 9})) + + def test_contains(self): + c = Condition('x', 1, 'contains') + self.assertTrue(c.eval({'x': [1, 2, 3]})) + self.assertFalse(c.eval({'x': [2, 3, 4]})) + + +class ConditionSetTest(TestCase): + + def test_empty(self): + with self.assertRaises(ValueError): + ConditionSet({}) + + def test_invalid_logic(self): + with self.assertRaises(ValueError): + ConditionSet({'foo': []}) + + def test_and_single_depth(self): + cs = ConditionSet({ + 'and': [ + {'attr': 'a', 'value': 1, 'op': 'eq'}, + {'attr': 'b', 'value': 2, 'op': 'eq'}, + ] + }) + self.assertTrue(cs.eval({'a': 1, 'b': 2})) + self.assertFalse(cs.eval({'a': 1, 'b': 3})) + + def test_or_single_depth(self): + cs = ConditionSet({ + 'or': [ + {'attr': 'a', 'value': 1, 'op': 'eq'}, + {'attr': 'b', 'value': 1, 'op': 'eq'}, + ] + }) + self.assertTrue(cs.eval({'a': 1, 'b': 2})) + self.assertTrue(cs.eval({'a': 2, 'b': 1})) + self.assertFalse(cs.eval({'a': 2, 'b': 2})) + + def test_and_multi_depth(self): + cs = ConditionSet({ + 'and': [ + {'attr': 'a', 'value': 1, 'op': 'eq'}, + {'and': [ + {'attr': 'b', 'value': 2, 'op': 'eq'}, + {'attr': 'c', 'value': 3, 'op': 'eq'}, + ]} + ] + }) + self.assertTrue(cs.eval({'a': 1, 'b': 2, 'c': 3})) + self.assertFalse(cs.eval({'a': 9, 'b': 2, 'c': 3})) + self.assertFalse(cs.eval({'a': 1, 'b': 9, 'c': 3})) + self.assertFalse(cs.eval({'a': 1, 'b': 2, 'c': 9})) + + def test_or_multi_depth(self): + cs = ConditionSet({ + 'or': [ + {'attr': 'a', 'value': 1, 'op': 'eq'}, + {'or': [ + {'attr': 'b', 'value': 2, 'op': 'eq'}, + {'attr': 'c', 'value': 3, 'op': 'eq'}, + ]} + ] + }) + self.assertTrue(cs.eval({'a': 1, 'b': 9, 'c': 9})) + self.assertTrue(cs.eval({'a': 9, 'b': 2, 'c': 9})) + self.assertTrue(cs.eval({'a': 9, 'b': 9, 'c': 3})) + self.assertFalse(cs.eval({'a': 9, 'b': 9, 'c': 9})) + + def test_mixed_and(self): + cs = ConditionSet({ + 'and': [ + {'attr': 'a', 'value': 1, 'op': 'eq'}, + {'or': [ + {'attr': 'b', 'value': 2, 'op': 'eq'}, + {'attr': 'c', 'value': 3, 'op': 'eq'}, + ]} + ] + }) + self.assertTrue(cs.eval({'a': 1, 'b': 2, 'c': 9})) + self.assertTrue(cs.eval({'a': 1, 'b': 9, 'c': 3})) + self.assertFalse(cs.eval({'a': 1, 'b': 9, 'c': 9})) + self.assertFalse(cs.eval({'a': 9, 'b': 2, 'c': 3})) + + def test_mixed_or(self): + cs = ConditionSet({ + 'or': [ + {'attr': 'a', 'value': 1, 'op': 'eq'}, + {'and': [ + {'attr': 'b', 'value': 2, 'op': 'eq'}, + {'attr': 'c', 'value': 3, 'op': 'eq'}, + ]} + ] + }) + self.assertTrue(cs.eval({'a': 1, 'b': 9, 'c': 9})) + self.assertTrue(cs.eval({'a': 9, 'b': 2, 'c': 3})) + self.assertTrue(cs.eval({'a': 1, 'b': 2, 'c': 9})) + self.assertFalse(cs.eval({'a': 9, 'b': 2, 'c': 9})) + self.assertFalse(cs.eval({'a': 9, 'b': 9, 'c': 3})) From 78ecc8673ca71bc6db3dddf065ca4203bc224740 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Fri, 22 Oct 2021 17:15:08 -0400 Subject: [PATCH 060/289] Add conditions for webhooks --- netbox/extras/api/serializers.py | 2 +- netbox/extras/forms/bulk_edit.py | 2 +- netbox/extras/forms/models.py | 1 + .../migrations/0063_webhook_conditions.py | 18 +++++++++++++ netbox/extras/models/models.py | 18 ++++++++++--- netbox/extras/tests/test_views.py | 1 + netbox/extras/webhooks_worker.py | 27 ++++++++++--------- 7 files changed, 51 insertions(+), 18 deletions(-) create mode 100644 netbox/extras/migrations/0063_webhook_conditions.py diff --git a/netbox/extras/api/serializers.py b/netbox/extras/api/serializers.py index b2049e836..46d295195 100644 --- a/netbox/extras/api/serializers.py +++ b/netbox/extras/api/serializers.py @@ -61,7 +61,7 @@ class WebhookSerializer(ValidatedModelSerializer): fields = [ 'id', 'url', 'display', 'content_types', 'name', 'type_create', 'type_update', 'type_delete', 'payload_url', 'enabled', 'http_method', 'http_content_type', 'additional_headers', 'body_template', 'secret', - 'ssl_verification', 'ca_file_path', + 'conditions', 'ssl_verification', 'ca_file_path', ] diff --git a/netbox/extras/forms/bulk_edit.py b/netbox/extras/forms/bulk_edit.py index b85a74a5b..937814c5a 100644 --- a/netbox/extras/forms/bulk_edit.py +++ b/netbox/extras/forms/bulk_edit.py @@ -137,7 +137,7 @@ class WebhookBulkEditForm(BootstrapMixin, BulkEditForm): ) class Meta: - nullable_fields = ['secret', 'ca_file_path'] + nullable_fields = ['secret', 'conditions', 'ca_file_path'] class TagBulkEditForm(BootstrapMixin, BulkEditForm): diff --git a/netbox/extras/forms/models.py b/netbox/extras/forms/models.py index 7e462e62b..23f4872c2 100644 --- a/netbox/extras/forms/models.py +++ b/netbox/extras/forms/models.py @@ -102,6 +102,7 @@ class WebhookForm(BootstrapMixin, forms.ModelForm): ('HTTP Request', ( 'payload_url', 'http_method', 'http_content_type', 'additional_headers', 'body_template', 'secret', )), + ('Conditions', ('conditions',)), ('SSL', ('ssl_verification', 'ca_file_path')), ) widgets = { diff --git a/netbox/extras/migrations/0063_webhook_conditions.py b/netbox/extras/migrations/0063_webhook_conditions.py new file mode 100644 index 000000000..8cc5b1bd3 --- /dev/null +++ b/netbox/extras/migrations/0063_webhook_conditions.py @@ -0,0 +1,18 @@ +# Generated by Django 3.2.8 on 2021-10-22 20:37 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('extras', '0062_clear_secrets_changelog'), + ] + + operations = [ + migrations.AddField( + model_name='webhook', + name='conditions', + field=models.JSONField(blank=True, null=True), + ), + ] diff --git a/netbox/extras/models/models.py b/netbox/extras/models/models.py index 75f5242d3..43af19f82 100644 --- a/netbox/extras/models/models.py +++ b/netbox/extras/models/models.py @@ -9,11 +9,12 @@ from django.db import models from django.http import HttpResponse from django.urls import reverse from django.utils import timezone -from django.utils.formats import date_format, time_format +from django.utils.formats import date_format from rest_framework.utils.encoders import JSONEncoder from extras.choices import * from extras.constants import * +from extras.conditions import ConditionSet from extras.utils import extras_features, FeatureQuery, image_upload from netbox.models import BigIDModel, ChangeLoggedModel from utilities.querysets import RestrictedQuerySet @@ -107,6 +108,11 @@ class Webhook(ChangeLoggedModel): "the secret as the key. The secret is not transmitted in " "the request." ) + conditions = models.JSONField( + blank=True, + null=True, + help_text="A set of conditions which determine whether the webhook will be generated." + ) ssl_verification = models.BooleanField( default=True, verbose_name='SSL verification', @@ -138,9 +144,13 @@ class Webhook(ChangeLoggedModel): # At least one action type must be selected if not self.type_create and not self.type_delete and not self.type_update: - raise ValidationError( - "You must select at least one type: create, update, and/or delete." - ) + raise ValidationError("At least one type must be selected: create, update, and/or delete.") + + if self.conditions: + try: + ConditionSet(self.conditions) + except ValueError as e: + raise ValidationError({'conditions': e}) # CA file path requires SSL verification enabled if not self.ssl_verification and self.ca_file_path: diff --git a/netbox/extras/tests/test_views.py b/netbox/extras/tests/test_views.py index 72d965fd0..9ce324a5c 100644 --- a/netbox/extras/tests/test_views.py +++ b/netbox/extras/tests/test_views.py @@ -145,6 +145,7 @@ class WebhookTestCase(ViewTestCases.PrimaryObjectViewTestCase): 'payload_url': 'http://example.com/?x', 'http_method': 'GET', 'http_content_type': 'application/foo', + 'conditions': None, } cls.csv_data = ( diff --git a/netbox/extras/webhooks_worker.py b/netbox/extras/webhooks_worker.py index ce63e14ce..6bbfba907 100644 --- a/netbox/extras/webhooks_worker.py +++ b/netbox/extras/webhooks_worker.py @@ -6,6 +6,7 @@ from django_rq import job from jinja2.exceptions import TemplateError from .choices import ObjectChangeActionChoices +from .conditions import ConditionSet from .webhooks import generate_signature logger = logging.getLogger('netbox.webhooks_worker') @@ -16,6 +17,12 @@ def process_webhook(webhook, model_name, event, data, snapshots, timestamp, user """ Make a POST request to the defined Webhook """ + # Evaluate webhook conditions (if any) + if webhook.conditions: + if not ConditionSet(webhook.conditions).eval(data): + return + + # Prepare context data for headers & body templates context = { 'event': dict(ObjectChangeActionChoices)[event].lower(), 'timestamp': timestamp, @@ -33,14 +40,14 @@ def process_webhook(webhook, model_name, event, data, snapshots, timestamp, user try: headers.update(webhook.render_headers(context)) except (TemplateError, ValueError) as e: - logger.error("Error parsing HTTP headers for webhook {}: {}".format(webhook, e)) + logger.error(f"Error parsing HTTP headers for webhook {webhook}: {e}") raise e # Render the request body try: body = webhook.render_body(context) except TemplateError as e: - logger.error("Error rendering request body for webhook {}: {}".format(webhook, e)) + logger.error(f"Error rendering request body for webhook {webhook}: {e}") raise e # Prepare the HTTP request @@ -51,15 +58,13 @@ def process_webhook(webhook, model_name, event, data, snapshots, timestamp, user 'data': body.encode('utf8'), } logger.info( - "Sending {} request to {} ({} {})".format( - params['method'], params['url'], context['model'], context['event'] - ) + f"Sending {params['method']} request to {params['url']} ({context['model']} {context['event']})" ) logger.debug(params) try: prepared_request = requests.Request(**params).prepare() except requests.exceptions.RequestException as e: - logger.error("Error forming HTTP request: {}".format(e)) + logger.error(f"Error forming HTTP request: {e}") raise e # If a secret key is defined, sign the request with a hash of the key and its content @@ -74,12 +79,10 @@ def process_webhook(webhook, model_name, event, data, snapshots, timestamp, user response = session.send(prepared_request, proxies=settings.HTTP_PROXIES) if 200 <= response.status_code <= 299: - logger.info("Request succeeded; response status {}".format(response.status_code)) - return 'Status {} returned, webhook successfully processed.'.format(response.status_code) + logger.info(f"Request succeeded; response status {response.status_code}") + return f"Status {response.status_code} returned, webhook successfully processed." else: - logger.warning("Request failed; response status {}: {}".format(response.status_code, response.content)) + logger.warning(f"Request failed; response status {response.status_code}: {response.content}") raise requests.exceptions.RequestException( - "Status {} returned with content '{}', webhook FAILED to process.".format( - response.status_code, response.content - ) + f"Status {response.status_code} returned with content '{response.content}', webhook FAILED to process." ) From 94bd27bcf5e63283164e55b9c1a330a88ed667ed Mon Sep 17 00:00:00 2001 From: Miguel Teixeira <816267+CironAkono@users.noreply.github.com> Date: Sun, 24 Oct 2021 03:24:54 +0100 Subject: [PATCH 061/289] Fix interface icons on the device interfaces table --- netbox/dcim/tables/devices.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/netbox/dcim/tables/devices.py b/netbox/dcim/tables/devices.py index c22e673b7..8939c01be 100644 --- a/netbox/dcim/tables/devices.py +++ b/netbox/dcim/tables/devices.py @@ -501,8 +501,8 @@ class InterfaceTable(DeviceComponentTable, BaseInterfaceTable, PathEndpointTable class DeviceInterfaceTable(InterfaceTable): name = tables.TemplateColumn( - template_code=' {{ value }}', order_by=Accessor('_name'), attrs={'td': {'class': 'text-nowrap'}} From b07e88869aa382fa45643470f05bd6f7abbb1780 Mon Sep 17 00:00:00 2001 From: Miguel Teixeira <816267+CironAkono@users.noreply.github.com> Date: Sun, 24 Oct 2021 03:31:29 +0100 Subject: [PATCH 062/289] Fix interfaces row colors on device interfaces table --- netbox/dcim/tables/devices.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/netbox/dcim/tables/devices.py b/netbox/dcim/tables/devices.py index 8939c01be..512022679 100644 --- a/netbox/dcim/tables/devices.py +++ b/netbox/dcim/tables/devices.py @@ -53,6 +53,16 @@ def get_cabletermination_row_class(record): return '' +def get_interface_row_class(record): + if not record.enabled: + return 'danger' + elif not record.is_connectable: + return 'primary' + else: + return get_cabletermination_row_class(record) + return '' + + def get_interface_state_attribute(record): """ Get interface enabled state as string to attach to DOM element. @@ -534,7 +544,7 @@ class DeviceInterfaceTable(InterfaceTable): 'cable', 'connection', 'actions', ) row_attrs = { - 'class': get_cabletermination_row_class, + 'class': get_interface_row_class, 'data-name': lambda record: record.name, 'data-enabled': get_interface_state_attribute, } From a01068949c54c2ec6f428245f9cc68f400075e09 Mon Sep 17 00:00:00 2001 From: Daniel Sheppard Date: Sun, 24 Oct 2021 23:42:47 -0500 Subject: [PATCH 063/289] Initial work on #6732 --- netbox/dcim/api/serializers.py | 6 ++- netbox/dcim/api/views.py | 3 +- netbox/dcim/filtersets.py | 16 ++++++- netbox/dcim/forms/bulk_edit.py | 15 +++---- netbox/dcim/forms/bulk_import.py | 2 +- netbox/dcim/forms/filtersets.py | 10 ++++- netbox/dcim/forms/models.py | 13 ++++-- netbox/dcim/models/sites.py | 8 +--- netbox/dcim/tables/sites.py | 13 ++++-- netbox/dcim/views.py | 3 +- netbox/ipam/api/nested_serializers.py | 13 ++++++ netbox/ipam/api/serializers.py | 18 ++++++++ netbox/ipam/api/urls.py | 3 ++ netbox/ipam/api/views.py | 12 +++++ netbox/ipam/filtersets.py | 39 ++++++++++++++++ netbox/ipam/forms/bulk_edit.py | 36 ++++++++++++++- netbox/ipam/forms/bulk_import.py | 27 +++++++++++ netbox/ipam/forms/filtersets.py | 30 +++++++++++++ netbox/ipam/forms/models.py | 26 +++++++++++ netbox/ipam/models/__init__.py | 1 + netbox/ipam/models/ip.py | 48 ++++++++++++++++++++ netbox/ipam/tables/ip.py | 25 +++++++++++ netbox/ipam/tests/test_api.py | 32 ++++++++++++++ netbox/ipam/urls.py | 12 +++++ netbox/ipam/views.py | 63 +++++++++++++++++++++++++- netbox/netbox/filtersets.py | 1 - netbox/netbox/navigation_menu.py | 6 +++ netbox/templates/dcim/site.html | 8 ++-- netbox/templates/ipam/asn.html | 64 +++++++++++++++++++++++++++ 29 files changed, 515 insertions(+), 38 deletions(-) create mode 100644 netbox/templates/ipam/asn.html diff --git a/netbox/dcim/api/serializers.py b/netbox/dcim/api/serializers.py index 9b0e7f5b3..3c4021e72 100644 --- a/netbox/dcim/api/serializers.py +++ b/netbox/dcim/api/serializers.py @@ -116,16 +116,18 @@ class SiteSerializer(PrimaryModelSerializer): device_count = serializers.IntegerField(read_only=True) prefix_count = serializers.IntegerField(read_only=True) rack_count = serializers.IntegerField(read_only=True) + asn_count = serializers.IntegerField(read_only=True) virtualmachine_count = serializers.IntegerField(read_only=True) vlan_count = serializers.IntegerField(read_only=True) class Meta: model = Site fields = [ - 'id', 'url', 'display', 'name', 'slug', 'status', 'region', 'group', 'tenant', 'facility', 'asn', + 'id', 'url', 'display', 'name', 'slug', 'status', 'region', 'group', 'tenant', 'facility', 'asns', 'time_zone', 'description', 'physical_address', 'shipping_address', 'latitude', 'longitude', 'contact_name', 'contact_phone', 'contact_email', 'comments', 'tags', 'custom_fields', 'created', 'last_updated', - 'circuit_count', 'device_count', 'prefix_count', 'rack_count', 'virtualmachine_count', 'vlan_count', + 'asn_count', 'circuit_count', 'device_count', 'prefix_count', 'rack_count', 'virtualmachine_count', + 'vlan_count', ] diff --git a/netbox/dcim/api/views.py b/netbox/dcim/api/views.py index 2b9d9734c..0f39c5434 100644 --- a/netbox/dcim/api/views.py +++ b/netbox/dcim/api/views.py @@ -16,7 +16,7 @@ from circuits.models import Circuit from dcim import filtersets from dcim.models import * from extras.api.views import ConfigContextQuerySetMixin, CustomFieldModelViewSet -from ipam.models import Prefix, VLAN +from ipam.models import Prefix, VLAN, ASN from netbox.api.authentication import IsAuthenticatedOrLoginNotRequired from netbox.api.exceptions import ServiceUnavailable from netbox.api.metadata import ContentTypeMetadata @@ -139,6 +139,7 @@ class SiteViewSet(CustomFieldModelViewSet): queryset = Site.objects.prefetch_related( 'region', 'tenant', 'tags' ).annotate( + asn_count=count_related(ASN, 'sites'), device_count=count_related(Device, 'site'), rack_count=count_related(Rack, 'site'), prefix_count=count_related(Prefix, 'site'), diff --git a/netbox/dcim/filtersets.py b/netbox/dcim/filtersets.py index c66397029..82396b64b 100644 --- a/netbox/dcim/filtersets.py +++ b/netbox/dcim/filtersets.py @@ -3,6 +3,7 @@ from django.contrib.auth.models import User from extras.filters import TagFilter from extras.filtersets import LocalConfigContextFilterSet +from ipam.models import ASN from netbox.filtersets import ( BaseFilterSet, ChangeLoggedModelFilterSet, OrganizationalModelFilterSet, PrimaryModelFilterSet, ) @@ -127,12 +128,23 @@ class SiteFilterSet(PrimaryModelFilterSet, TenancyFilterSet): to_field_name='slug', label='Group (slug)', ) + asn_id = django_filters.ModelMultipleChoiceFilter( + field_name='asns', + queryset=ASN.objects.all(), + label='AS (ID)', + ) + asn = django_filters.ModelMultipleChoiceFilter( + field_name='asns__asn', + queryset=ASN.objects.all(), + to_field_name='asn', + label='AS (Number)', + ) tag = TagFilter() class Meta: model = Site fields = [ - 'id', 'name', 'slug', 'facility', 'asn', 'latitude', 'longitude', 'contact_name', 'contact_phone', + 'id', 'name', 'slug', 'facility', 'latitude', 'longitude', 'contact_name', 'contact_phone', 'contact_email', ] @@ -151,7 +163,7 @@ class SiteFilterSet(PrimaryModelFilterSet, TenancyFilterSet): Q(comments__icontains=value) ) try: - qs_filter |= Q(asn=int(value.strip())) + qs_filter |= Q(asns=int(value.strip())) except ValueError: pass return queryset.filter(qs_filter) diff --git a/netbox/dcim/forms/bulk_edit.py b/netbox/dcim/forms/bulk_edit.py index 06ccc958c..9728f231f 100644 --- a/netbox/dcim/forms/bulk_edit.py +++ b/netbox/dcim/forms/bulk_edit.py @@ -1,4 +1,5 @@ from django import forms +from django.utils.translation import gettext as _ from django.contrib.auth.models import User from timezone_field import TimeZoneFormField @@ -6,8 +7,7 @@ from dcim.choices import * from dcim.constants import * from dcim.models import * from extras.forms import AddRemoveTagsForm, CustomFieldModelBulkEditForm -from ipam.constants import BGP_ASN_MAX, BGP_ASN_MIN -from ipam.models import VLAN +from ipam.models import VLAN, ASN from tenancy.models import Tenant from utilities.forms import ( add_blank_choice, BootstrapMixin, BulkEditForm, BulkEditNullBooleanSelect, ColorField, CommentField, @@ -110,11 +110,10 @@ class SiteBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldModelBulkEd queryset=Tenant.objects.all(), required=False ) - asn = forms.IntegerField( - min_value=BGP_ASN_MIN, - max_value=BGP_ASN_MAX, - required=False, - label='ASN' + asns = DynamicModelChoiceField( + queryset=ASN.objects.all(), + label=_('ASNs'), + required=False ) description = forms.CharField( max_length=100, @@ -128,7 +127,7 @@ class SiteBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldModelBulkEd class Meta: nullable_fields = [ - 'region', 'group', 'tenant', 'asn', 'description', 'time_zone', + 'region', 'group', 'tenant', 'asns', 'description', 'time_zone', ] diff --git a/netbox/dcim/forms/bulk_import.py b/netbox/dcim/forms/bulk_import.py index 720ea8dbd..10898fb81 100644 --- a/netbox/dcim/forms/bulk_import.py +++ b/netbox/dcim/forms/bulk_import.py @@ -94,7 +94,7 @@ class SiteCSVForm(CustomFieldModelCSVForm): class Meta: model = Site fields = ( - 'name', 'slug', 'status', 'region', 'group', 'tenant', 'facility', 'asn', 'time_zone', 'description', + 'name', 'slug', 'status', 'region', 'group', 'tenant', 'facility', 'time_zone', 'description', 'physical_address', 'shipping_address', 'latitude', 'longitude', 'contact_name', 'contact_phone', 'contact_email', 'comments', ) diff --git a/netbox/dcim/forms/filtersets.py b/netbox/dcim/forms/filtersets.py index 0ee08bc77..24ecf60fe 100644 --- a/netbox/dcim/forms/filtersets.py +++ b/netbox/dcim/forms/filtersets.py @@ -6,6 +6,7 @@ from dcim.choices import * from dcim.constants import * from dcim.models import * from extras.forms import CustomFieldModelFilterForm, LocalConfigContextFilterForm +from ipam.models import ASN from tenancy.forms import TenancyFilterForm from utilities.forms import ( APISelectMultiple, add_blank_choice, BootstrapMixin, ColorField, DynamicModelMultipleChoiceField, StaticSelect, @@ -143,11 +144,12 @@ class SiteGroupFilterForm(BootstrapMixin, CustomFieldModelFilterForm): class SiteFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldModelFilterForm): model = Site - field_order = ['q', 'status', 'region_id', 'tenant_group_id', 'tenant_id'] + field_order = ['q', 'status', 'region_id', 'tenant_group_id', 'tenant_id', 'asns'] field_groups = [ ['q', 'tag'], ['status', 'region_id', 'group_id'], ['tenant_group_id', 'tenant_id'], + ['asn_id'] ] q = forms.CharField( required=False, @@ -171,6 +173,12 @@ class SiteFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldModelFilterFo label=_('Site group'), fetch_trigger='open' ) + asn_id = DynamicModelMultipleChoiceField( + queryset=ASN.objects.all(), + required=False, + label=_('ASNs'), + fetch_trigger='open' + ) tag = TagFilterField(model) diff --git a/netbox/dcim/forms/models.py b/netbox/dcim/forms/models.py index 8236b1a97..9703c4cac 100644 --- a/netbox/dcim/forms/models.py +++ b/netbox/dcim/forms/models.py @@ -1,4 +1,5 @@ from django import forms +from django.utils.translation import gettext as _ from django.contrib.auth.models import User from django.contrib.contenttypes.models import ContentType from timezone_field import TimeZoneFormField @@ -8,7 +9,7 @@ from dcim.constants import * from dcim.models import * from extras.forms import CustomFieldModelForm from extras.models import Tag -from ipam.models import IPAddress, VLAN, VLANGroup +from ipam.models import IPAddress, VLAN, VLANGroup, ASN from tenancy.forms import TenancyForm from utilities.forms import ( APISelect, add_blank_choice, BootstrapMixin, ClearableFileInput, CommentField, DynamicModelChoiceField, @@ -101,6 +102,11 @@ class SiteForm(BootstrapMixin, TenancyForm, CustomFieldModelForm): queryset=SiteGroup.objects.all(), required=False ) + asns = DynamicModelMultipleChoiceField( + queryset=ASN.objects.all(), + label=_('ASNs'), + required=False + ) slug = SlugField() time_zone = TimeZoneFormField( choices=add_blank_choice(TimeZoneFormField().choices), @@ -116,13 +122,13 @@ class SiteForm(BootstrapMixin, TenancyForm, CustomFieldModelForm): class Meta: model = Site fields = [ - 'name', 'slug', 'status', 'region', 'group', 'tenant_group', 'tenant', 'facility', 'asn', 'time_zone', + 'name', 'slug', 'status', 'region', 'group', 'tenant_group', 'tenant', 'facility', 'asns', 'time_zone', 'description', 'physical_address', 'shipping_address', 'latitude', 'longitude', 'contact_name', 'contact_phone', 'contact_email', 'comments', 'tags', ] fieldsets = ( ('Site', ( - 'name', 'slug', 'status', 'region', 'group', 'facility', 'asn', 'time_zone', 'description', 'tags', + 'name', 'slug', 'status', 'region', 'group', 'facility', 'asns', 'time_zone', 'description', 'tags', )), ('Tenancy', ('tenant_group', 'tenant')), ('Contact Info', ( @@ -147,7 +153,6 @@ class SiteForm(BootstrapMixin, TenancyForm, CustomFieldModelForm): help_texts = { 'name': "Full name of the site", 'facility': "Data center provider and facility (e.g. Equinix NY7)", - 'asn': "BGP autonomous system number", 'time_zone': "Local time zone", 'description': "Short description (will appear in sites list)", 'physical_address': "Physical location of the building (e.g. for GPS)", diff --git a/netbox/dcim/models/sites.py b/netbox/dcim/models/sites.py index ab9d8e82d..a093a4d84 100644 --- a/netbox/dcim/models/sites.py +++ b/netbox/dcim/models/sites.py @@ -189,12 +189,6 @@ class Site(PrimaryModel): blank=True, help_text='Local facility ID or description' ) - asn = ASNField( - blank=True, - null=True, - verbose_name='ASN', - help_text='32-bit autonomous system number' - ) time_zone = TimeZoneField( blank=True ) @@ -257,7 +251,7 @@ class Site(PrimaryModel): objects = RestrictedQuerySet.as_manager() clone_fields = [ - 'status', 'region', 'group', 'tenant', 'facility', 'asn', 'time_zone', 'description', 'physical_address', + 'status', 'region', 'group', 'tenant', 'facility', 'time_zone', 'description', 'physical_address', 'shipping_address', 'latitude', 'longitude', 'contact_name', 'contact_phone', 'contact_email', ] diff --git a/netbox/dcim/tables/sites.py b/netbox/dcim/tables/sites.py index 3ff6ab75b..ab9399978 100644 --- a/netbox/dcim/tables/sites.py +++ b/netbox/dcim/tables/sites.py @@ -75,6 +75,11 @@ class SiteTable(BaseTable): group = tables.Column( linkify=True ) + asn_count = LinkedCountColumn( + viewname='ipam:asn_list', + url_params={'site_id': 'pk'}, + verbose_name='ASNs' + ) tenant = TenantColumn() comments = MarkdownColumn() tags = TagColumn( @@ -84,11 +89,11 @@ class SiteTable(BaseTable): class Meta(BaseTable.Meta): model = Site fields = ( - 'pk', 'name', 'slug', 'status', 'facility', 'region', 'group', 'tenant', 'asn', 'time_zone', 'description', - 'physical_address', 'shipping_address', 'latitude', 'longitude', 'contact_name', 'contact_phone', - 'contact_email', 'comments', 'tags', + 'pk', 'name', 'slug', 'status', 'facility', 'region', 'group', 'tenant', 'asn_count', 'time_zone', + 'description', 'physical_address', 'shipping_address', 'latitude', 'longitude', 'contact_name', + 'contact_phone', 'contact_email', 'comments', 'tags', ) - default_columns = ('pk', 'name', 'status', 'facility', 'region', 'group', 'tenant', 'asn', 'description') + default_columns = ('pk', 'name', 'status', 'facility', 'region', 'group', 'tenant', 'asn_count', 'description') # diff --git a/netbox/dcim/views.py b/netbox/dcim/views.py index 5079e01a5..e188ecfe5 100644 --- a/netbox/dcim/views.py +++ b/netbox/dcim/views.py @@ -14,7 +14,7 @@ from django.views.generic import View from circuits.models import Circuit from extras.views import ObjectChangeLogView, ObjectConfigContextView, ObjectJournalView -from ipam.models import IPAddress, Prefix, Service, VLAN +from ipam.models import IPAddress, Prefix, Service, VLAN, ASN from ipam.tables import InterfaceIPAddressTable, InterfaceVLANTable from netbox.views import generic from utilities.forms import ConfirmationForm @@ -310,6 +310,7 @@ class SiteView(generic.ObjectView): def get_extra_context(self, request, instance): stats = { + 'asn_count': ASN.objects.restrict(request.user, 'view').filter(sites=instance).count(), 'rack_count': Rack.objects.restrict(request.user, 'view').filter(site=instance).count(), 'device_count': Device.objects.restrict(request.user, 'view').filter(site=instance).count(), 'prefix_count': Prefix.objects.restrict(request.user, 'view').filter(site=instance).count(), diff --git a/netbox/ipam/api/nested_serializers.py b/netbox/ipam/api/nested_serializers.py index a52a6a03c..da679a01a 100644 --- a/netbox/ipam/api/nested_serializers.py +++ b/netbox/ipam/api/nested_serializers.py @@ -5,6 +5,7 @@ from netbox.api import WritableNestedSerializer __all__ = [ 'NestedAggregateSerializer', + 'NestedASNSerializer', 'NestedIPAddressSerializer', 'NestedIPRangeSerializer', 'NestedPrefixSerializer', @@ -18,6 +19,18 @@ __all__ = [ ] +# +# ASNs +# + +class NestedASNSerializer(WritableNestedSerializer): + url = serializers.HyperlinkedIdentityField(view_name='ipam-api:asn-detail') + + class Meta: + model = models.ASN + fields = ['id', 'url', 'display', 'asn'] + + # # VRFs # diff --git a/netbox/ipam/api/serializers.py b/netbox/ipam/api/serializers.py index 183c45b2a..02e209241 100644 --- a/netbox/ipam/api/serializers.py +++ b/netbox/ipam/api/serializers.py @@ -17,6 +17,24 @@ from virtualization.api.nested_serializers import NestedVirtualMachineSerializer from .nested_serializers import * +# +# ASNs +# +from ..models import ASN + + +class ASNSerializer(PrimaryModelSerializer): + url = serializers.HyperlinkedIdentityField(view_name='ipam-api:asn-detail') + tenant = NestedTenantSerializer(required=False, allow_null=True) + + class Meta: + model = ASN + fields = [ + 'id', 'url', 'display', 'asn', 'site_count', 'rir', 'tenant', 'description', 'tags', 'custom_fields', + 'created', 'last_updated', + ] + + # # VRFs # diff --git a/netbox/ipam/api/urls.py b/netbox/ipam/api/urls.py index 06c4ab0ea..b05fcb303 100644 --- a/netbox/ipam/api/urls.py +++ b/netbox/ipam/api/urls.py @@ -5,6 +5,9 @@ from . import views router = OrderedDefaultRouter() router.APIRootView = views.IPAMRootView +# ASNs +router.register('asns', views.ASNViewSet) + # VRFs router.register('vrfs', views.VRFViewSet) diff --git a/netbox/ipam/api/views.py b/netbox/ipam/api/views.py index 69b6d97f0..18f2e13ce 100644 --- a/netbox/ipam/api/views.py +++ b/netbox/ipam/api/views.py @@ -1,11 +1,13 @@ from rest_framework.routers import APIRootView +from dcim.models import Site from extras.api.views import CustomFieldModelViewSet from ipam import filtersets from ipam.models import * from netbox.api.views import ModelViewSet from utilities.utils import count_related from . import mixins, serializers +from ..models import ASN class IPAMRootView(APIRootView): @@ -16,6 +18,16 @@ class IPAMRootView(APIRootView): return 'IPAM' +# +# ASNs +# + +class ASNViewSet(CustomFieldModelViewSet): + queryset = ASN.objects.prefetch_related('tenant', 'rir').annotate(site_count=count_related(Site, 'asns')) + serializer_class = serializers.ASNSerializer + filterset_class = filtersets.ASNFilterSet + + # # VRFs # diff --git a/netbox/ipam/filtersets.py b/netbox/ipam/filtersets.py index 37a9299dc..025f4a9cb 100644 --- a/netbox/ipam/filtersets.py +++ b/netbox/ipam/filtersets.py @@ -9,6 +9,7 @@ from dcim.models import Device, Interface, Region, Site, SiteGroup from extras.filters import TagFilter from netbox.filtersets import OrganizationalModelFilterSet, PrimaryModelFilterSet from tenancy.filtersets import TenancyFilterSet +from tenancy.models import Tenant from utilities.filters import ( ContentTypeFilter, MultiValueCharFilter, MultiValueNumberFilter, NumericArrayFilter, TreeNodeMultipleChoiceFilter, ) @@ -19,6 +20,7 @@ from .models import * __all__ = ( 'AggregateFilterSet', + 'ASNFilterSet', 'IPAddressFilterSet', 'IPRangeFilterSet', 'PrefixFilterSet', @@ -31,6 +33,8 @@ __all__ = ( 'VRFFilterSet', ) +from .models import ASN + class VRFFilterSet(PrimaryModelFilterSet, TenancyFilterSet): q = django_filters.CharFilter( @@ -174,6 +178,41 @@ class AggregateFilterSet(PrimaryModelFilterSet, TenancyFilterSet): return queryset.none() +class ASNFilterSet(OrganizationalModelFilterSet, TenancyFilterSet): + + rir_id = django_filters.ModelMultipleChoiceFilter( + queryset=RIR.objects.all(), + label='RIR (ID)', + ) + rir = django_filters.ModelMultipleChoiceFilter( + field_name='rir__slug', + queryset=RIR.objects.all(), + to_field_name='slug', + label='RIR (slug)', + ) + site_id = django_filters.ModelMultipleChoiceFilter( + field_name='sites', + queryset=Site.objects.all(), + label='Site (ID)', + ) + site = django_filters.ModelMultipleChoiceFilter( + field_name='sites__slug', + queryset=Site.objects.all(), + to_field_name='slug', + label='Site (slug)', + ) + + class Meta: + model = ASN + fields = ['id', 'asn'] + + def search(self, queryset, name, value): + if not value.strip(): + return queryset + qs_filter = Q(Q(description__icontains=value) | Q(asn__icontains=value)) + return queryset.filter(qs_filter) + + class RoleFilterSet(OrganizationalModelFilterSet): q = django_filters.CharFilter( method='search', diff --git a/netbox/ipam/forms/bulk_edit.py b/netbox/ipam/forms/bulk_edit.py index 895dbe200..7b7a0fb0d 100644 --- a/netbox/ipam/forms/bulk_edit.py +++ b/netbox/ipam/forms/bulk_edit.py @@ -5,14 +5,16 @@ from extras.forms import AddRemoveTagsForm, CustomFieldModelBulkEditForm from ipam.choices import * from ipam.constants import * from ipam.models import * +from ipam.models import ASN from tenancy.models import Tenant from utilities.forms import ( add_blank_choice, BootstrapMixin, BulkEditNullBooleanSelect, DatePicker, DynamicModelChoiceField, NumericArrayField, - StaticSelect, + StaticSelect, DynamicModelMultipleChoiceField, ) __all__ = ( 'AggregateBulkEditForm', + 'ASNBulkEditForm', 'IPAddressBulkEditForm', 'IPRangeBulkEditForm', 'PrefixBulkEditForm', @@ -89,6 +91,38 @@ class RIRBulkEditForm(BootstrapMixin, CustomFieldModelBulkEditForm): nullable_fields = ['is_private', 'description'] +class ASNBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldModelBulkEditForm): + pk = forms.ModelMultipleChoiceField( + queryset=ASN.objects.all(), + widget=forms.MultipleHiddenInput() + ) + sites = DynamicModelMultipleChoiceField( + queryset=Site.objects.all(), + required=False + ) + rir = DynamicModelChoiceField( + queryset=RIR.objects.all(), + required=False, + label='RIR' + ) + tenant = DynamicModelChoiceField( + queryset=Tenant.objects.all(), + required=False + ) + description = forms.CharField( + max_length=100, + required=False + ) + + class Meta: + nullable_fields = [ + 'date_added', 'description', + ] + widgets = { + 'date_added': DatePicker(), + } + + class AggregateBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldModelBulkEditForm): pk = forms.ModelMultipleChoiceField( queryset=Aggregate.objects.all(), diff --git a/netbox/ipam/forms/bulk_import.py b/netbox/ipam/forms/bulk_import.py index 49d5014f9..e4190a66c 100644 --- a/netbox/ipam/forms/bulk_import.py +++ b/netbox/ipam/forms/bulk_import.py @@ -6,12 +6,14 @@ from extras.forms import CustomFieldModelCSVForm from ipam.choices import * from ipam.constants import * from ipam.models import * +from ipam.models import ASN from tenancy.models import Tenant from utilities.forms import CSVChoiceField, CSVContentTypeField, CSVModelChoiceField, SlugField from virtualization.models import VirtualMachine, VMInterface __all__ = ( 'AggregateCSVForm', + 'ASNCSVForm', 'IPAddressCSVForm', 'IPRangeCSVForm', 'PrefixCSVForm', @@ -80,6 +82,31 @@ class AggregateCSVForm(CustomFieldModelCSVForm): fields = ('prefix', 'rir', 'tenant', 'date_added', 'description') +class ASNCSVForm(CustomFieldModelCSVForm): + slug = SlugField() + rir = CSVModelChoiceField( + queryset=RIR.objects.all(), + to_field_name='name', + help_text='Assigned RIR' + ) + sites = CSVModelChoiceField( + queryset=Site.objects.all(), + to_field_name='name', + help_text='Assigned site' + ) + tenant = CSVModelChoiceField( + queryset=Tenant.objects.all(), + required=False, + to_field_name='name', + help_text='Assigned tenant' + ) + + class Meta: + model = ASN + fields = ('asn', 'rir', 'tenant', 'description') + help_texts = {} + + class RoleCSVForm(CustomFieldModelCSVForm): slug = SlugField() diff --git a/netbox/ipam/forms/filtersets.py b/netbox/ipam/forms/filtersets.py index 8bc0f10fb..ab084311c 100644 --- a/netbox/ipam/forms/filtersets.py +++ b/netbox/ipam/forms/filtersets.py @@ -6,7 +6,9 @@ from extras.forms import CustomFieldModelFilterForm from ipam.choices import * from ipam.constants import * from ipam.models import * +from ipam.models import ASN from tenancy.forms import TenancyFilterForm +from tenancy.models import Tenant from utilities.forms import ( add_blank_choice, BootstrapMixin, DynamicModelChoiceField, DynamicModelMultipleChoiceField, StaticSelect, StaticSelectMultiple, TagFilterField, BOOLEAN_WITH_BLANK_CHOICES, @@ -14,6 +16,7 @@ from utilities.forms import ( __all__ = ( 'AggregateFilterForm', + 'ASNFilterForm', 'IPAddressFilterForm', 'IPRangeFilterForm', 'PrefixFilterForm', @@ -136,6 +139,33 @@ class AggregateFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldModelFil tag = TagFilterField(model) +class ASNFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldModelFilterForm): + model = ASN + field_groups = [ + ['q'], + ['rir_id'], + ['tenant_group_id', 'tenant_id'], + ['site_id'], + ] + q = forms.CharField( + required=False, + widget=forms.TextInput(attrs={'placeholder': _('All Fields')}), + label=_('Search') + ) + rir_id = DynamicModelMultipleChoiceField( + queryset=RIR.objects.all(), + required=False, + label=_('RIR'), + fetch_trigger='open' + ) + site_id = DynamicModelMultipleChoiceField( + queryset=Site.objects.all(), + required=False, + label=_('Site'), + fetch_trigger='open' + ) + + class RoleFilterForm(BootstrapMixin, CustomFieldModelFilterForm): model = Role field_groups = [ diff --git a/netbox/ipam/forms/models.py b/netbox/ipam/forms/models.py index d28f7b3ae..a0163a13f 100644 --- a/netbox/ipam/forms/models.py +++ b/netbox/ipam/forms/models.py @@ -6,6 +6,7 @@ from extras.forms import CustomFieldModelForm from extras.models import Tag from ipam.constants import * from ipam.models import * +from ipam.models import ASN from tenancy.forms import TenancyForm from utilities.forms import ( BootstrapMixin, ContentTypeChoiceField, DatePicker, DynamicModelChoiceField, DynamicModelMultipleChoiceField, @@ -15,6 +16,7 @@ from virtualization.models import Cluster, ClusterGroup, VirtualMachine, VMInter __all__ = ( 'AggregateForm', + 'ASNForm', 'IPAddressAssignForm', 'IPAddressBulkAddForm', 'IPAddressForm', @@ -118,6 +120,30 @@ class AggregateForm(BootstrapMixin, TenancyForm, CustomFieldModelForm): } +class ASNForm(BootstrapMixin, TenancyForm, CustomFieldModelForm): + rir = DynamicModelChoiceField( + queryset=RIR.objects.all(), + label='RIR', + ) + + class Meta: + model = ASN + fields = [ + 'asn', 'rir', 'sites', 'tenant_group', 'tenant', 'description' + ] + fieldsets = ( + ('ASN', ('asn', 'rir', 'sites', 'description')), + ('Tenancy', ('tenant_group', 'tenant')), + ) + help_texts = { + 'asn': "AS number", + 'rir': "Regional Internet Registry responsible for this prefix", + } + widgets = { + 'date_added': DatePicker(), + } + + class RoleForm(BootstrapMixin, CustomFieldModelForm): slug = SlugField() diff --git a/netbox/ipam/models/__init__.py b/netbox/ipam/models/__init__.py index cb8b4b932..0f65e6652 100644 --- a/netbox/ipam/models/__init__.py +++ b/netbox/ipam/models/__init__.py @@ -4,6 +4,7 @@ from .vlans import * from .vrfs import * __all__ = ( + 'ASN', 'Aggregate', 'IPAddress', 'IPRange', diff --git a/netbox/ipam/models/ip.py b/netbox/ipam/models/ip.py index 4fc2b5dbb..45baf8258 100644 --- a/netbox/ipam/models/ip.py +++ b/netbox/ipam/models/ip.py @@ -8,6 +8,7 @@ from django.db.models import F, Q from django.urls import reverse from django.utils.functional import cached_property +from dcim.fields import ASNField from dcim.models import Device from extras.utils import extras_features from netbox.models import OrganizationalModel, PrimaryModel @@ -23,6 +24,7 @@ from virtualization.models import VirtualMachine __all__ = ( 'Aggregate', + 'ASN', 'IPAddress', 'IPRange', 'Prefix', @@ -69,6 +71,52 @@ class RIR(OrganizationalModel): return reverse('ipam:rir', args=[self.pk]) +class ASN(PrimaryModel): + + asn = ASNField( + blank=True, + null=True, + verbose_name='ASN', + help_text='32-bit autonomous system number' + ) + description = models.CharField( + max_length=200, + blank=True + ) + rir = models.ForeignKey( + to='ipam.RIR', + on_delete=models.PROTECT, + related_name='asns', + blank=False, + null=False + ) + tenant = models.ForeignKey( + to='tenancy.Tenant', + on_delete=models.PROTECT, + related_name='asns', + blank=True, + null=True + ) + sites = models.ManyToManyField( + to='dcim.Site', + related_name='asns', + blank=True + ) + + objects = RestrictedQuerySet.as_manager() + + class Meta: + ordering = ['asn'] + verbose_name = 'ASN' + verbose_name_plural = 'ASNs' + + def __str__(self): + return f'AS{self.asn}' + + def get_absolute_url(self): + return reverse('ipam:asn', args=[self.pk]) + + @extras_features('custom_fields', 'custom_links', 'export_templates', 'tags', 'webhooks') class Aggregate(PrimaryModel): """ diff --git a/netbox/ipam/tables/ip.py b/netbox/ipam/tables/ip.py index ddad6c573..e624f6f13 100644 --- a/netbox/ipam/tables/ip.py +++ b/netbox/ipam/tables/ip.py @@ -2,6 +2,7 @@ import django_tables2 as tables from django.utils.safestring import mark_safe from django_tables2.utils import Accessor +from ipam.models import ASN from tenancy.tables import TenantColumn from utilities.tables import ( BaseTable, BooleanColumn, ButtonsColumn, ChoiceFieldColumn, LinkedCountColumn, TagColumn, @@ -11,6 +12,7 @@ from ipam.models import * __all__ = ( 'AggregateTable', + 'ASNTable', 'InterfaceIPAddressTable', 'IPAddressAssignTable', 'IPAddressTable', @@ -93,6 +95,29 @@ class RIRTable(BaseTable): default_columns = ('pk', 'name', 'is_private', 'aggregate_count', 'description', 'actions') +# +# RIRs +# + +class ASNTable(BaseTable): + pk = ToggleColumn() + asn = tables.Column( + linkify=True + ) + site_count = LinkedCountColumn( + viewname='dcim:site_list', + url_params={'asn_id': 'pk'}, + verbose_name='Sites' + ) + + actions = ButtonsColumn(ASN) + + class Meta(BaseTable.Meta): + model = ASN + fields = ('pk', 'asn', 'rir', 'site_count', 'tenant', 'description', 'actions') + default_columns = ('pk', 'asn', 'rir', 'site_count', 'sites', 'tenant', 'actions') + + # # Aggregates # diff --git a/netbox/ipam/tests/test_api.py b/netbox/ipam/tests/test_api.py index 5ba45b7fd..5229d3430 100644 --- a/netbox/ipam/tests/test_api.py +++ b/netbox/ipam/tests/test_api.py @@ -20,6 +20,38 @@ class AppTest(APITestCase): self.assertEqual(response.status_code, 200) +class ASNTest(APIViewTestCases.APIViewTestCase): + model = ASN + brief_fields = ['display', 'id', 'name', 'prefix_count', 'rd', 'url'] + create_data = [ + { + 'name': 'VRF 4', + 'rd': '65000:4', + }, + { + 'name': 'VRF 5', + 'rd': '65000:5', + }, + { + 'name': 'VRF 6', + 'rd': '65000:6', + }, + ] + bulk_update_data = { + 'description': 'New description', + } + + @classmethod + def setUpTestData(cls): + + vrfs = ( + VRF(name='VRF 1', rd='65000:1'), + VRF(name='VRF 2', rd='65000:2'), + VRF(name='VRF 3'), # No RD + ) + VRF.objects.bulk_create(vrfs) + + class VRFTest(APIViewTestCases.APIViewTestCase): model = VRF brief_fields = ['display', 'id', 'name', 'prefix_count', 'rd', 'url'] diff --git a/netbox/ipam/urls.py b/netbox/ipam/urls.py index 9d9a846bf..88c5d7c9e 100644 --- a/netbox/ipam/urls.py +++ b/netbox/ipam/urls.py @@ -7,6 +7,18 @@ from .models import * app_name = 'ipam' urlpatterns = [ + # ASNs + path('asns/', views.ASNListView.as_view(), name='asn_list'), + path('asns/add/', views.ASNEditView.as_view(), name='asn_add'), + path('asns/import/', views.ASNBulkImportView.as_view(), name='asn_import'), + path('asns/edit/', views.ASNBulkEditView.as_view(), name='asn_bulk_edit'), + path('asns/delete/', views.ASNBulkDeleteView.as_view(), name='asn_bulk_delete'), + path('asns//', views.ASNView.as_view(), name='asn'), + path('asns//edit/', views.ASNEditView.as_view(), name='asn_edit'), + path('asns//delete/', views.ASNDeleteView.as_view(), name='asn_delete'), + path('asns//changelog/', ObjectChangeLogView.as_view(), name='asn_changelog', kwargs={'model': ASN}), + path('asns//journal/', ObjectJournalView.as_view(), name='asn_journal', kwargs={'model': ASN}), + # VRFs path('vrfs/', views.VRFListView.as_view(), name='vrf_list'), path('vrfs/add/', views.VRFEditView.as_view(), name='vrf_add'), diff --git a/netbox/ipam/views.py b/netbox/ipam/views.py index c24a80124..73b228ac4 100644 --- a/netbox/ipam/views.py +++ b/netbox/ipam/views.py @@ -2,7 +2,8 @@ from django.db.models import Prefetch from django.db.models.expressions import RawSQL from django.shortcuts import get_object_or_404, redirect, render -from dcim.models import Device, Interface +from dcim.models import Device, Interface, Site +from dcim.tables import SiteTable from netbox.views import generic from utilities.forms import TableConfigForm from utilities.tables import paginate_table @@ -11,6 +12,7 @@ from virtualization.models import VirtualMachine, VMInterface from . import filtersets, forms, tables from .constants import * from .models import * +from .models import ASN from .utils import add_available_ipaddresses, add_available_prefixes, add_available_vlans @@ -195,6 +197,65 @@ class RIRBulkDeleteView(generic.BulkDeleteView): table = tables.RIRTable +# +# ASNs +# + +class ASNListView(generic.ObjectListView): + queryset = ASN.objects.annotate( + site_count=count_related(Site, 'asns'), + ) + filterset = filtersets.ASNFilterSet + filterset_form = forms.ASNFilterForm + table = tables.ASNTable + + +class ASNView(generic.ObjectView): + queryset = ASN.objects.all() + + def get_extra_context(self, request, instance): + sites_table = SiteTable( + list(instance.sites.all()), + orderable=False + ) + + return { + 'sites_table': sites_table, + } + + +class ASNEditView(generic.ObjectEditView): + queryset = ASN.objects.all() + model_form = forms.ASNForm + + +class ASNDeleteView(generic.ObjectDeleteView): + queryset = ASN.objects.all() + + +class ASNBulkImportView(generic.BulkImportView): + queryset = ASN.objects.all() + model_form = forms.ASNCSVForm + table = tables.ASNTable + + +class ASNBulkEditView(generic.BulkEditView): + queryset = ASN.objects.annotate( + site_count=count_related(Site, 'asns') + ) + filterset = filtersets.ASNFilterSet + table = tables.ASNTable + form = forms.ASNBulkEditForm + + +class ASNBulkDeleteView(generic.BulkDeleteView): + queryset = ASN.objects.annotate( + site_count=count_related(Site, 'asns') + ) + filterset = filtersets.ASNFilterSet + table = tables.ASNTable + + # # Aggregates # diff --git a/netbox/netbox/filtersets.py b/netbox/netbox/filtersets.py index 791c21d19..2240ce58d 100644 --- a/netbox/netbox/filtersets.py +++ b/netbox/netbox/filtersets.py @@ -153,7 +153,6 @@ class BaseFilterSet(django_filters.FilterSet): # The filter field has been explicity defined on the filterset class so we must manually # create the new filter with the same type because there is no guarantee the defined type # is the same as the default type for the field - resolve_field(field, lookup_expr) # Will raise FieldLookupError if the lookup is invalid new_filter = type(existing_filter)( field_name=field_name, lookup_expr=lookup_expr, diff --git a/netbox/netbox/navigation_menu.py b/netbox/netbox/navigation_menu.py index de2c170a3..4b1e2a5b5 100644 --- a/netbox/netbox/navigation_menu.py +++ b/netbox/netbox/navigation_menu.py @@ -214,6 +214,12 @@ IPAM_MENU = Menu( get_model_item('ipam', 'role', 'Prefix & VLAN Roles'), ), ), + MenuGroup( + label='ASNs', + items=( + get_model_item('ipam', 'asn', 'ASNs'), + ), + ), MenuGroup( label='Aggregates', items=( diff --git a/netbox/templates/dcim/site.html b/netbox/templates/dcim/site.html index 8442ae41e..55cc57b50 100644 --- a/netbox/templates/dcim/site.html +++ b/netbox/templates/dcim/site.html @@ -80,10 +80,6 @@ Description {{ object.description|placeholder }} - - AS Number - {{ object.asn|placeholder }} - Time Zone @@ -216,6 +212,10 @@

{{ stats.vm_count }}

Virtual Machines

+ diff --git a/netbox/templates/ipam/asn.html b/netbox/templates/ipam/asn.html new file mode 100644 index 000000000..8be09c660 --- /dev/null +++ b/netbox/templates/ipam/asn.html @@ -0,0 +1,64 @@ +{% extends 'generic/object.html' %} +{% load buttons %} +{% load helpers %} +{% load plugins %} + +{% block breadcrumbs %} + {{ block.super }} + +{% endblock %} + +{% block content %} +
+
+
+
+ ASN +
+
+ + + + + + + + + + + + + + + + + +
AS Number{{ object.asn }}
RIR + {{ object.rir }} +
Tenant + {% if object.tenant %} + {% if prefix.object.group %} + {{ object.tenant.group }} / + {% endif %} + {{ object.tenant }} + {% else %} + None + {% endif %} +
Description{{ object.description|placeholder }}
+
+
+ {% plugin_left_page object %} +
+
+ {% include 'inc/panels/custom_fields.html' %} + {% include 'inc/panels/tags.html' with tags=object.tags.all url='ipam:asn_list' %} + {% plugin_right_page object %} +
+
+
+
+ {% include 'inc/panel_table.html' with table=sites_table heading='Sites' %} + {% plugin_full_width_page object %} +
+
+{% endblock %} From 8b529abfe10f1a05b5449a964118a8608f96b750 Mon Sep 17 00:00:00 2001 From: Daniel Sheppard Date: Sun, 24 Oct 2021 23:47:31 -0500 Subject: [PATCH 064/289] Initial work on #6732 --- .../dcim/migrations/0138_remove_site_asn.py | 18 +++++++++ netbox/ipam/migrations/0051_asn_model.py | 40 +++++++++++++++++++ 2 files changed, 58 insertions(+) create mode 100644 netbox/dcim/migrations/0138_remove_site_asn.py create mode 100644 netbox/ipam/migrations/0051_asn_model.py diff --git a/netbox/dcim/migrations/0138_remove_site_asn.py b/netbox/dcim/migrations/0138_remove_site_asn.py new file mode 100644 index 000000000..a4100ea14 --- /dev/null +++ b/netbox/dcim/migrations/0138_remove_site_asn.py @@ -0,0 +1,18 @@ +# Generated by Django 3.2.8 on 2021-10-25 04:33 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('dcim', '0137_relax_uniqueness_constraints'), + ('ipam', '0051_asn_model') + ] + + operations = [ + migrations.RemoveField( + model_name='site', + name='asn', + ), + ] diff --git a/netbox/ipam/migrations/0051_asn_model.py b/netbox/ipam/migrations/0051_asn_model.py new file mode 100644 index 000000000..b397532ea --- /dev/null +++ b/netbox/ipam/migrations/0051_asn_model.py @@ -0,0 +1,40 @@ +# Generated by Django 3.2.8 on 2021-10-25 04:34 + +import dcim.fields +import django.core.serializers.json +from django.db import migrations, models +import django.db.models.deletion +import taggit.managers + + +class Migration(migrations.Migration): + + dependencies = [ + ('extras', '0062_clear_secrets_changelog'), + ('tenancy', '0003_contacts'), + ('dcim', '0137_relax_uniqueness_constraints'), + ('ipam', '0050_iprange'), + ] + + operations = [ + migrations.CreateModel( + name='ASN', + fields=[ + ('created', models.DateField(auto_now_add=True, null=True)), + ('last_updated', models.DateTimeField(auto_now=True, null=True)), + ('custom_field_data', models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder)), + ('id', models.BigAutoField(primary_key=True, serialize=False)), + ('asn', dcim.fields.ASNField(blank=True, null=True)), + ('description', models.CharField(blank=True, max_length=200)), + ('rir', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='asns', to='ipam.rir')), + ('sites', models.ManyToManyField(blank=True, related_name='asns', to='dcim.Site')), + ('tags', taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag')), + ('tenant', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='asns', to='tenancy.tenant')), + ], + options={ + 'verbose_name': 'ASN', + 'verbose_name_plural': 'ASNs', + 'ordering': ['asn'], + }, + ), + ] From b92de63245e186b54b8507e11804ffc1e275ce42 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Mon, 25 Oct 2021 08:56:20 -0400 Subject: [PATCH 065/289] Improve validation --- netbox/extras/conditions.py | 17 +++++++++++++++-- netbox/extras/tests/test_conditions.py | 19 +++++++++++++++++++ 2 files changed, 34 insertions(+), 2 deletions(-) diff --git a/netbox/extras/conditions.py b/netbox/extras/conditions.py index 6aa6e776f..050d5564c 100644 --- a/netbox/extras/conditions.py +++ b/netbox/extras/conditions.py @@ -40,11 +40,24 @@ class Condition: EQ, NEQ, GT, GTE, LT, LTE, IN, CONTAINS ) + TYPES = { + str: (EQ, NEQ, CONTAINS), + bool: (EQ, NEQ, CONTAINS), + int: (EQ, NEQ, GT, GTE, LT, LTE, CONTAINS), + float: (EQ, NEQ, GT, GTE, LT, LTE, CONTAINS), + list: (EQ, NEQ, IN, CONTAINS) + } + def __init__(self, attr, value, op=EQ): + if op not in self.OPERATORS: + raise ValueError(f"Unknown operator: {op}. Must be one of: {', '.join(self.OPERATORS)}") + if type(value) not in self.TYPES: + raise ValueError(f"Unsupported value type: {type(value)}") + if op not in self.TYPES[type(value)]: + raise ValueError(f"Invalid type for {op} operation: {type(value)}") + self.attr = attr self.value = value - if op not in self.OPERATORS: - raise ValueError(f"Unknown operator: {op}") self.eval_func = getattr(self, f'eval_{op}') def eval(self, data): diff --git a/netbox/extras/tests/test_conditions.py b/netbox/extras/tests/test_conditions.py index 7defca5b5..2ce55c064 100644 --- a/netbox/extras/tests/test_conditions.py +++ b/netbox/extras/tests/test_conditions.py @@ -16,6 +16,25 @@ class ConditionTestCase(TestCase): self.assertFalse(c.eval({})) self.assertTrue(c.eval({'x': 1})) + # + # Validation tests + # + + def test_invalid_op(self): + with self.assertRaises(ValueError): + # 'blah' is not a valid operator + Condition('x', 1, 'blah') + + def test_invalid_type(self): + with self.assertRaises(ValueError): + # dict type is unsupported + Condition('x', 1, dict()) + + def test_invalid_op_type(self): + with self.assertRaises(ValueError): + # 'gt' supports only numeric values + Condition('x', 'foo', 'gt') + # # Operator tests # From 35c967e6f72ebdc4edb3be7d3737aa0912469688 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Mon, 25 Oct 2021 09:09:51 -0400 Subject: [PATCH 066/289] Implement condition negation --- netbox/extras/conditions.py | 36 ++++++++++++++------------ netbox/extras/tests/test_conditions.py | 18 ++++++++++--- 2 files changed, 33 insertions(+), 21 deletions(-) diff --git a/netbox/extras/conditions.py b/netbox/extras/conditions.py index 050d5564c..7f1d804e8 100644 --- a/netbox/extras/conditions.py +++ b/netbox/extras/conditions.py @@ -6,17 +6,15 @@ __all__ = ( ) -LOGIC_TYPES = ( - 'and', - 'or' -) +AND = 'and' +OR = 'or' def is_ruleset(data): """ Determine whether the given dictionary looks like a rule set. """ - return type(data) is dict and len(data) == 1 and list(data.keys())[0] in LOGIC_TYPES + return type(data) is dict and len(data) == 1 and list(data.keys())[0] in (AND, OR) class Condition: @@ -28,7 +26,6 @@ class Condition: :param op: The logical operation to use when evaluating the value (default: 'eq') """ EQ = 'eq' - NEQ = 'neq' GT = 'gt' GTE = 'gte' LT = 'lt' @@ -37,18 +34,18 @@ class Condition: CONTAINS = 'contains' OPERATORS = ( - EQ, NEQ, GT, GTE, LT, LTE, IN, CONTAINS + EQ, GT, GTE, LT, LTE, IN, CONTAINS ) TYPES = { - str: (EQ, NEQ, CONTAINS), - bool: (EQ, NEQ, CONTAINS), - int: (EQ, NEQ, GT, GTE, LT, LTE, CONTAINS), - float: (EQ, NEQ, GT, GTE, LT, LTE, CONTAINS), - list: (EQ, NEQ, IN, CONTAINS) + str: (EQ, CONTAINS), + bool: (EQ, CONTAINS), + int: (EQ, GT, GTE, LT, LTE, CONTAINS), + float: (EQ, GT, GTE, LT, LTE, CONTAINS), + list: (EQ, IN, CONTAINS) } - def __init__(self, attr, value, op=EQ): + def __init__(self, attr, value, op=EQ, negate=False): if op not in self.OPERATORS: raise ValueError(f"Unknown operator: {op}. Must be one of: {', '.join(self.OPERATORS)}") if type(value) not in self.TYPES: @@ -59,13 +56,18 @@ class Condition: self.attr = attr self.value = value self.eval_func = getattr(self, f'eval_{op}') + self.negate = negate def eval(self, data): """ Evaluate the provided data to determine whether it matches the condition. """ value = functools.reduce(dict.get, self.attr.split('.'), data) - return self.eval_func(value) + result = self.eval_func(value) + + if self.negate: + return not result + return result # Equivalency @@ -104,7 +106,7 @@ class ConditionSet: {"and": [ {"attr": "foo", "op": "eq", "value": 1}, - {"attr": "bar", "op": "neq", "value": 2} + {"attr": "bar", "op": "eq", "value": 2, "negate": true} ]} :param ruleset: A dictionary mapping a logical operator to a list of conditional rules @@ -117,8 +119,8 @@ class ConditionSet: # Determine the logic type logic = list(ruleset.keys())[0] - if type(logic) is not str or logic.lower() not in LOGIC_TYPES: - raise ValueError(f"Invalid logic type: {logic} (must be 'and' or 'or')") + if type(logic) is not str or logic.lower() not in (AND, OR): + raise ValueError(f"Invalid logic type: {logic} (must be '{AND}' or '{OR}')") self.logic = logic.lower() # Compile the set of Conditions diff --git a/netbox/extras/tests/test_conditions.py b/netbox/extras/tests/test_conditions.py index 2ce55c064..47ae0b662 100644 --- a/netbox/extras/tests/test_conditions.py +++ b/netbox/extras/tests/test_conditions.py @@ -48,8 +48,8 @@ class ConditionTestCase(TestCase): self.assertTrue(c.eval({'x': 1})) self.assertFalse(c.eval({'x': 2})) - def test_neq(self): - c = Condition('x', 1, 'neq') + def test_eq_negated(self): + c = Condition('x', 1, 'eq', negate=True) self.assertFalse(c.eval({'x': 1})) self.assertTrue(c.eval({'x': 2})) @@ -80,11 +80,21 @@ class ConditionTestCase(TestCase): self.assertTrue(c.eval({'x': 1})) self.assertFalse(c.eval({'x': 9})) + def test_in_negated(self): + c = Condition('x', [1, 2, 3], 'in', negate=True) + self.assertFalse(c.eval({'x': 1})) + self.assertTrue(c.eval({'x': 9})) + def test_contains(self): c = Condition('x', 1, 'contains') self.assertTrue(c.eval({'x': [1, 2, 3]})) self.assertFalse(c.eval({'x': [2, 3, 4]})) + def test_contains_negated(self): + c = Condition('x', 1, 'contains', negate=True) + self.assertFalse(c.eval({'x': [1, 2, 3]})) + self.assertTrue(c.eval({'x': [2, 3, 4]})) + class ConditionSetTest(TestCase): @@ -100,11 +110,11 @@ class ConditionSetTest(TestCase): cs = ConditionSet({ 'and': [ {'attr': 'a', 'value': 1, 'op': 'eq'}, - {'attr': 'b', 'value': 2, 'op': 'eq'}, + {'attr': 'b', 'value': 1, 'op': 'eq', 'negate': True}, ] }) self.assertTrue(cs.eval({'a': 1, 'b': 2})) - self.assertFalse(cs.eval({'a': 1, 'b': 3})) + self.assertFalse(cs.eval({'a': 1, 'b': 1})) def test_or_single_depth(self): cs = ConditionSet({ From 2423e0872ff5e1953b4647a8617954870ec39064 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Mon, 25 Oct 2021 09:52:08 -0400 Subject: [PATCH 067/289] Documentation & changelog for #6238 --- docs/models/extras/webhook.md | 14 +++++ docs/reference/conditions.md | 89 +++++++++++++++++++++++++++++++ docs/release-notes/version-3.1.md | 16 ++++++ mkdocs.yml | 2 + 4 files changed, 121 insertions(+) create mode 100644 docs/reference/conditions.md diff --git a/docs/models/extras/webhook.md b/docs/models/extras/webhook.md index ee5e9d059..c71657336 100644 --- a/docs/models/extras/webhook.md +++ b/docs/models/extras/webhook.md @@ -17,6 +17,7 @@ A webhook is a mechanism for conveying to some external system a change that too * **Additional headers** - Any additional headers to include with the request (optional). Add one header per line in the format `Name: Value`. Jinja2 templating is supported for this field (see below). * **Body template** - The content of the request being sent (optional). Jinja2 templating is supported for this field (see below). If blank, NetBox will populate the request body with a raw dump of the webhook context. (If the HTTP cotent type is set to `application/json`, this will be formatted as a JSON object.) * **Secret** - A secret string used to prove authenticity of the request (optional). This will append a `X-Hook-Signature` header to the request, consisting of a HMAC (SHA-512) hex digest of the request body using the secret as the key. +* **Conditions** - An optional set of conditions evaluated to determine whether the webhook fires for a given object. * **SSL verification** - Uncheck this option to disable validation of the receiver's SSL certificate. (Disable with caution!) * **CA file path** - The file path to a particular certificate authority (CA) file to use when validating the receiver's SSL certificate (optional). @@ -80,3 +81,16 @@ If no body template is specified, the request body will be populated with a JSON } } ``` + +## Conditional Webhooks + +A webhook may include a set of conditional logic expressed in JSON used to control whether a webhook triggers for a specific object. For example, you may wish to trigger a webhook for devices only when the `status` field of an object is "active": + +```json +{ + "attr": "status", + "value": "active" +} +``` + +For more detail, see the reference documentation for NetBox's [conditional logic](../reference/conditions.md). diff --git a/docs/reference/conditions.md b/docs/reference/conditions.md new file mode 100644 index 000000000..c335bf9a8 --- /dev/null +++ b/docs/reference/conditions.md @@ -0,0 +1,89 @@ +# Conditions + +Conditions are NetBox's mechanism for evaluating whether a set data meets a prescribed set of conditions. It allows the author to convey simple logic by declaring an arbitrary number of attribute-value-operation tuples nested within a hierarchy of logical AND and OR statements. + +## Conditions + +A condition is expressed as a JSON object with the following keys: + +| Key name | Required | Default | Description | +|----------|----------|---------|-------------| +| attr | Yes | - | Name of the key within the data being evaluated | +| value | Yes | - | The reference value to which the given data will be compared | +| op | No | `eq` | The logical operation to be performed | +| negate | No | False | Negate (invert) the result of the condition's evaluation | + +### Available Operations + +* `eq`: Equals +* `gt`: Greater than +* `gte`: Greater than or equal to +* `lt`: Less than +* `lte`: Less than or equal to +* `in`: Is present within a list of values +* `contains`: Contains the specified value + +### Examples + +`name` equals "foobar": + +```json +{ + "attr": "name", + "value": "foobar" +} +``` + +`asn` is greater than 65000: + +```json +{ + "attr": "asn", + "value": 65000, + "op": "gt" +} +``` + +`status` is not "planned" or "staging": + +```json +{ + "attr": "status", + "value": ["planned", "staging"], + "op": "in", + "negate": true +} +``` + +## Condition Sets + +Multiple conditions can be combined into nested sets using AND or OR logic. This is done by declaring a JSON object with a single key (`and` or `or`) containing a list of condition objects and/or child condition sets. + +### Examples + +`status` is "active" and `primary_ip` is defined _or_ the "exempt" tag is applied. + +```json +{ + "or": [ + { + "and": [ + { + "attr": "status", + "value": "active" + }, + { + "attr": "primary_ip", + "value": "", + "negate": true + } + ] + }, + { + "attr": "tags", + "value": "exempt", + "op": "contains" + } + ] +} +``` diff --git a/docs/release-notes/version-3.1.md b/docs/release-notes/version-3.1.md index f586f43bb..b047e1320 100644 --- a/docs/release-notes/version-3.1.md +++ b/docs/release-notes/version-3.1.md @@ -28,6 +28,20 @@ Both types of connection include SSID and authentication attributes. Additionall * Channel - A predefined channel within a standardized band * Channel frequency & width - Customizable channel attributes (e.g. for licensed bands) +#### Conditional Webhooks ([#6238](https://github.com/netbox-community/netbox/issues/6238)) + +Webhooks now include a `conditions` field, which may be used to specify conditions under which a webhook triggers. For example, you may wish to generate outgoing requests for a device webhook only when its status is "active" or "staged". This can be done by declaring conditional logic in JSON: + +```json +{ + "attr": "status", + "op": "in", + "value": ["active", "staged"] +} +``` + +Multiple conditions may be nested using AND/OR logic as well. For more information, please see the [conditional logic documentation](../reference/conditions.md). + #### Interface Bridging ([#6346](https://github.com/netbox-community/netbox/issues/6346)) A `bridge` field has been added to the interface model for devices and virtual machines. This can be set to reference another interface on the same parent device/VM to indicate a direct layer two bridging adjacency. @@ -85,5 +99,7 @@ Multiple interfaces can be bridged to a single virtual interface to effect a bri * Added `wwn` field * dcim.Location * Added `tenant` field +* extras.Webhook + * Added the `conditions` field * virtualization.VMInterface * Added `bridge` field diff --git a/mkdocs.yml b/mkdocs.yml index 001808f0d..9d9bb964a 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -93,6 +93,8 @@ nav: - Authentication: 'rest-api/authentication.md' - GraphQL API: - Overview: 'graphql-api/overview.md' + - Reference: + - Conditions: 'reference/conditions.md' - Development: - Introduction: 'development/index.md' - Getting Started: 'development/getting-started.md' From 0d84338e28c4a34036b168dfcdb075b0bf091449 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Mon, 25 Oct 2021 10:14:18 -0400 Subject: [PATCH 068/289] Add regex condition op --- netbox/extras/conditions.py | 11 +++++++++-- netbox/extras/tests/test_conditions.py | 10 ++++++++++ 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/netbox/extras/conditions.py b/netbox/extras/conditions.py index 7f1d804e8..6f1b012eb 100644 --- a/netbox/extras/conditions.py +++ b/netbox/extras/conditions.py @@ -1,4 +1,5 @@ import functools +import re __all__ = ( 'Condition', @@ -32,13 +33,14 @@ class Condition: LTE = 'lte' IN = 'in' CONTAINS = 'contains' + REGEX = 'regex' OPERATORS = ( - EQ, GT, GTE, LT, LTE, IN, CONTAINS + EQ, GT, GTE, LT, LTE, IN, CONTAINS, REGEX ) TYPES = { - str: (EQ, CONTAINS), + str: (EQ, CONTAINS, REGEX), bool: (EQ, CONTAINS), int: (EQ, GT, GTE, LT, LTE, CONTAINS), float: (EQ, GT, GTE, LT, LTE, CONTAINS), @@ -99,6 +101,11 @@ class Condition: def eval_contains(self, value): return self.value in value + # Regular expressions + + def eval_regex(self, value): + return re.match(self.value, value) is not None + class ConditionSet: """ diff --git a/netbox/extras/tests/test_conditions.py b/netbox/extras/tests/test_conditions.py index 47ae0b662..ee6afeaf6 100644 --- a/netbox/extras/tests/test_conditions.py +++ b/netbox/extras/tests/test_conditions.py @@ -95,6 +95,16 @@ class ConditionTestCase(TestCase): self.assertFalse(c.eval({'x': [1, 2, 3]})) self.assertTrue(c.eval({'x': [2, 3, 4]})) + def test_regex(self): + c = Condition('x', '[a-z]+', 'regex') + self.assertTrue(c.eval({'x': 'abc'})) + self.assertFalse(c.eval({'x': '123'})) + + def test_regex_negated(self): + c = Condition('x', '[a-z]+', 'regex', negate=True) + self.assertFalse(c.eval({'x': 'abc'})) + self.assertTrue(c.eval({'x': '123'})) + class ConditionSetTest(TestCase): From 68081fb9a28619698339b80d431aa2329ddaac22 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Mon, 25 Oct 2021 11:07:15 -0400 Subject: [PATCH 069/289] Cleanup & API changelog for #3979 --- docs/release-notes/version-3.1.md | 11 +++++++++++ netbox/dcim/api/serializers.py | 9 ++++++--- netbox/wireless/api/urls.py | 2 +- 3 files changed, 18 insertions(+), 4 deletions(-) diff --git a/docs/release-notes/version-3.1.md b/docs/release-notes/version-3.1.md index b047e1320..ef7500e1e 100644 --- a/docs/release-notes/version-3.1.md +++ b/docs/release-notes/version-3.1.md @@ -6,6 +6,7 @@ ### Breaking Changes * The `tenant` and `tenant_id` filters for the Cable model now filter on the tenant assigned directly to each cable, rather than on the parent object of either termination. +* The `cable_peer` and `cable_peer_type` attributes of the interface model has been renamed to `link_peer` and `link_peer_type`, respectively, to accommodate wireless links. ### New Features @@ -71,6 +72,10 @@ Multiple interfaces can be bridged to a single virtual interface to effect a bri * `/api/tenancy/contact-groups/` * `/api/tenancy/contact-roles/` * `/api/tenancy/contacts/` +* Added the following endpoints for wireless networks: + * `/api/wireless/wireless-lans/` + * `/api/wireless/wireless-lan-groups/` + * `/api/wireless/wireless-links/` * Added `tags` field to the following models: * circuits.CircuitType * dcim.DeviceRole @@ -96,7 +101,13 @@ Multiple interfaces can be bridged to a single virtual interface to effect a bri * Added `airflow` field * dcim.Interface * Added `bridge` field + * Added `rf_role` field + * Added `rf_channel` field + * Added `rf_channel_frequency` field + * Added `rf_chanel_width` field * Added `wwn` field + * `cable_peer` has been renamed to `link_peer` + * `cable_peer_type` has been renamed to `link_peer_type` * dcim.Location * Added `tenant` field * extras.Webhook diff --git a/netbox/dcim/api/serializers.py b/netbox/dcim/api/serializers.py index 1f2897a7f..d8c5a7771 100644 --- a/netbox/dcim/api/serializers.py +++ b/netbox/dcim/api/serializers.py @@ -17,6 +17,7 @@ from tenancy.api.nested_serializers import NestedTenantSerializer from users.api.nested_serializers import NestedUserSerializer from utilities.api import get_serializer_for_model from virtualization.api.nested_serializers import NestedClusterSerializer +from wireless.api.nested_serializers import NestedWirelessLinkSerializer from wireless.choices import * from .nested_serializers import * @@ -618,6 +619,7 @@ class InterfaceSerializer(PrimaryModelSerializer, LinkTerminationSerializer, Con many=True ) cable = NestedCableSerializer(read_only=True) + wireless_link = NestedWirelessLinkSerializer(read_only=True) count_ipaddresses = serializers.IntegerField(read_only=True) class Meta: @@ -625,9 +627,10 @@ class InterfaceSerializer(PrimaryModelSerializer, LinkTerminationSerializer, Con fields = [ 'id', 'url', 'display', 'device', 'name', 'label', 'type', 'enabled', 'parent', 'bridge', 'lag', 'mtu', 'mac_address', 'wwn', 'mgmt_only', 'description', 'mode', 'rf_role', 'rf_channel', 'rf_channel_frequency', - 'rf_channel_width', 'untagged_vlan', 'tagged_vlans', 'mark_connected', 'cable', 'link_peer', - 'link_peer_type', 'connected_endpoint', 'connected_endpoint_type', 'connected_endpoint_reachable', 'tags', - 'custom_fields', 'created', 'last_updated', 'count_ipaddresses', '_occupied', + 'rf_channel_width', 'untagged_vlan', 'tagged_vlans', 'mark_connected', 'cable', 'wireless_link', + 'link_peer', 'link_peer_type', 'connected_endpoint', 'connected_endpoint_type', + 'connected_endpoint_reachable', 'tags', 'custom_fields', 'created', 'last_updated', 'count_ipaddresses', + '_occupied', ] def validate(self, data): diff --git a/netbox/wireless/api/urls.py b/netbox/wireless/api/urls.py index 54f764db6..b02aa67c0 100644 --- a/netbox/wireless/api/urls.py +++ b/netbox/wireless/api/urls.py @@ -5,7 +5,7 @@ from . import views router = OrderedDefaultRouter() router.APIRootView = views.WirelessRootView -router.register('wireless-lan-groupss', views.WirelessLANGroupViewSet) +router.register('wireless-lan-groups', views.WirelessLANGroupViewSet) router.register('wireless-lans', views.WirelessLANViewSet) router.register('wireless-links', views.WirelessLinkViewSet) From 61d2158f7633d14f6d6934e0bb0f48c678029691 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Mon, 25 Oct 2021 11:11:58 -0400 Subject: [PATCH 070/289] #6346: Add 'bridge' interface type --- docs/release-notes/version-3.1.md | 2 +- netbox/dcim/choices.py | 2 ++ netbox/dcim/constants.py | 1 + 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/docs/release-notes/version-3.1.md b/docs/release-notes/version-3.1.md index ef7500e1e..b583d8b44 100644 --- a/docs/release-notes/version-3.1.md +++ b/docs/release-notes/version-3.1.md @@ -45,7 +45,7 @@ Multiple conditions may be nested using AND/OR logic as well. For more informati #### Interface Bridging ([#6346](https://github.com/netbox-community/netbox/issues/6346)) -A `bridge` field has been added to the interface model for devices and virtual machines. This can be set to reference another interface on the same parent device/VM to indicate a direct layer two bridging adjacency. +A `bridge` field has been added to the interface model for devices and virtual machines. This can be set to reference another interface on the same parent device/VM to indicate a direct layer two bridging adjacency. Additionally, "bridge" has been added as an interface type. (However, interfaces of any type may be designated as bridged.) Multiple interfaces can be bridged to a single virtual interface to effect a bridge group. Alternatively, two physical interfaces can be bridged to one another, to effect an internal cross-connect. diff --git a/netbox/dcim/choices.py b/netbox/dcim/choices.py index 9b5363d4c..de46aec8a 100644 --- a/netbox/dcim/choices.py +++ b/netbox/dcim/choices.py @@ -720,6 +720,7 @@ class InterfaceTypeChoices(ChoiceSet): # Virtual TYPE_VIRTUAL = 'virtual' + TYPE_BRIDGE = 'bridge' TYPE_LAG = 'lag' # Ethernet @@ -820,6 +821,7 @@ class InterfaceTypeChoices(ChoiceSet): 'Virtual interfaces', ( (TYPE_VIRTUAL, 'Virtual'), + (TYPE_BRIDGE, 'Bridge'), (TYPE_LAG, 'Link Aggregation Group (LAG)'), ), ), diff --git a/netbox/dcim/constants.py b/netbox/dcim/constants.py index 0d64b357b..2136f06aa 100644 --- a/netbox/dcim/constants.py +++ b/netbox/dcim/constants.py @@ -34,6 +34,7 @@ INTERFACE_MTU_MAX = 65536 VIRTUAL_IFACE_TYPES = [ InterfaceTypeChoices.TYPE_VIRTUAL, InterfaceTypeChoices.TYPE_LAG, + InterfaceTypeChoices.TYPE_BRIDGE, ] WIRELESS_IFACE_TYPES = [ From 82243732a19f83cb55c60fe206470cbe04df638b Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Mon, 25 Oct 2021 14:42:20 -0400 Subject: [PATCH 071/289] Initial work on #5883 --- netbox/dcim/models/devices.py | 4 +- netbox/dcim/tables/devices.py | 17 +-- netbox/extras/admin.py | 68 ++++++++++- netbox/extras/forms/__init__.py | 1 + netbox/extras/forms/config.py | 67 +++++++++++ .../extras/migrations/0064_configrevision.py | 20 ++++ netbox/extras/models/__init__.py | 3 +- netbox/extras/models/models.py | 111 ++++++++++-------- netbox/extras/signals.py | 16 ++- netbox/ipam/models/ip.py | 7 +- netbox/netbox/config/__init__.py | 35 ++++++ netbox/netbox/config/parameters.py | 55 +++++++++ netbox/netbox/context_processors.py | 2 + netbox/netbox/settings.py | 57 ++++----- netbox/templates/base/layout.html | 8 +- netbox/templates/login.html | 4 +- netbox/virtualization/models.py | 5 +- netbox/virtualization/tables.py | 4 +- 18 files changed, 375 insertions(+), 109 deletions(-) create mode 100644 netbox/extras/forms/config.py create mode 100644 netbox/extras/migrations/0064_configrevision.py create mode 100644 netbox/netbox/config/__init__.py create mode 100644 netbox/netbox/config/parameters.py diff --git a/netbox/dcim/models/devices.py b/netbox/dcim/models/devices.py index 2b3b80d24..d6b23fed4 100644 --- a/netbox/dcim/models/devices.py +++ b/netbox/dcim/models/devices.py @@ -15,6 +15,7 @@ from dcim.constants import * from extras.models import ConfigContextModel from extras.querysets import ConfigContextModelQuerySet from extras.utils import extras_features +from netbox.config import ConfigResolver from netbox.models import OrganizationalModel, PrimaryModel from utilities.choices import ColorChoices from utilities.fields import ColorField, NaturalOrderingField @@ -815,7 +816,8 @@ class Device(PrimaryModel, ConfigContextModel): @property def primary_ip(self): - if settings.PREFER_IPV4 and self.primary_ip4: + config = ConfigResolver() + if config.PREFER_IPV4 and self.primary_ip4: return self.primary_ip4 elif self.primary_ip6: return self.primary_ip6 diff --git a/netbox/dcim/tables/devices.py b/netbox/dcim/tables/devices.py index 8ea27b8a6..167dba95d 100644 --- a/netbox/dcim/tables/devices.py +++ b/netbox/dcim/tables/devices.py @@ -160,18 +160,11 @@ class DeviceTable(BaseTable): linkify=True, verbose_name='Type' ) - if settings.PREFER_IPV4: - primary_ip = tables.Column( - linkify=True, - order_by=('primary_ip4', 'primary_ip6'), - verbose_name='IP Address' - ) - else: - primary_ip = tables.Column( - linkify=True, - order_by=('primary_ip6', 'primary_ip4'), - verbose_name='IP Address' - ) + primary_ip = tables.Column( + linkify=True, + order_by=('primary_ip4', 'primary_ip6'), + verbose_name='IP Address' + ) primary_ip4 = tables.Column( linkify=True, verbose_name='IPv4 Address' diff --git a/netbox/extras/admin.py b/netbox/extras/admin.py index dae21c2c9..e99406e49 100644 --- a/netbox/extras/admin.py +++ b/netbox/extras/admin.py @@ -1,10 +1,74 @@ from django.contrib import admin -from .models import JobResult +from .forms import ConfigRevisionForm +from .models import ConfigRevision, JobResult + + +@admin.register(ConfigRevision) +class ConfigRevisionAdmin(admin.ModelAdmin): + fieldsets = [ + # ('Authentication', { + # 'fields': ('LOGIN_REQUIRED', 'LOGIN_PERSISTENCE', 'LOGIN_TIMEOUT'), + # }), + # ('Rack Elevations', { + # 'fields': ('RACK_ELEVATION_DEFAULT_UNIT_HEIGHT', 'RACK_ELEVATION_DEFAULT_UNIT_WIDTH'), + # }), + ('IPAM', { + 'fields': ('ENFORCE_GLOBAL_UNIQUE', 'PREFER_IPV4'), + }), + # ('Security', { + # 'fields': ( + # 'ALLOWED_URL_SCHEMES', 'EXEMPT_VIEW_PERMISSIONS', + # ), + # }), + ('Banners', { + 'fields': ('BANNER_LOGIN', 'BANNER_TOP', 'BANNER_BOTTOM'), + }), + # ('Logging', { + # 'fields': ('CHANGELOG_RETENTION',), + # }), + # ('Pagination', { + # 'fields': ('MAX_PAGE_SIZE', 'PAGINATE_COUNT'), + # }), + # ('Miscellaneous', { + # 'fields': ('GRAPHQL_ENABLED', 'METRICS_ENABLED', 'MAINTENANCE_MODE', 'MAPS_URL'), + # }), + ('Config Revision', { + 'fields': ('comment',), + }) + ] + form = ConfigRevisionForm + list_display = ('id', 'is_active', 'created', 'comment') + ordering = ('-id',) + readonly_fields = ('data',) + + def get_changeform_initial_data(self, request): + """ + Populate initial form data from the most recent ConfigRevision. + """ + latest_revision = ConfigRevision.objects.last() + initial = latest_revision.data if latest_revision else {} + initial.update(super().get_changeform_initial_data(request)) + + return initial + + def has_add_permission(self, request): + # Only superusers may modify the configuration. + return request.user.is_superuser + + def has_change_permission(self, request, obj=None): + # ConfigRevisions cannot be modified once created. + return False + + def has_delete_permission(self, request, obj=None): + # Only inactive ConfigRevisions may be deleted (must be superuser). + return request.user.is_superuser and ( + obj is None or not obj.is_active() + ) # -# Reports +# Reports & scripts # @admin.register(JobResult) diff --git a/netbox/extras/forms/__init__.py b/netbox/extras/forms/__init__.py index 1584e2f51..b470650da 100644 --- a/netbox/extras/forms/__init__.py +++ b/netbox/extras/forms/__init__.py @@ -3,4 +3,5 @@ from .filtersets import * from .bulk_edit import * from .bulk_import import * from .customfields import * +from .config import * from .scripts import * diff --git a/netbox/extras/forms/config.py b/netbox/extras/forms/config.py new file mode 100644 index 000000000..001252f0c --- /dev/null +++ b/netbox/extras/forms/config.py @@ -0,0 +1,67 @@ +from django import forms + +from netbox.config.parameters import PARAMS + +__all__ = ( + 'ConfigRevisionForm', +) + + +EMPTY_VALUES = ('', None, [], ()) + + +class FormMetaclass(forms.models.ModelFormMetaclass): + + def __new__(mcs, name, bases, attrs): + + # Emulate a declared field for each supported configuration parameter + param_fields = {} + for param in PARAMS: + help_text = f'{param.description}
' if param.description else '' + # help_text += f'Current value: {getattr(settings, param.name)}' + param_fields[param.name] = param.field( + required=False, + label=param.label, + help_text=help_text, + **param.field_kwargs + ) + attrs.update(param_fields) + + return super().__new__(mcs, name, bases, attrs) + + +class ConfigRevisionForm(forms.BaseModelForm, metaclass=FormMetaclass): + """ + Form for creating a new ConfigRevision. + """ + class Meta: + widgets = { + 'comment': forms.Textarea(), + } + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + + # Bugfix for django-timezone-field: Add empty choice to default options + # self.fields['TIME_ZONE'].choices = [('', ''), *self.fields['TIME_ZONE'].choices] + + def save(self, commit=True): + instance = super().save(commit=False) + + # Populate JSON data on the instance + instance.data = self.render_json() + + if commit: + instance.save() + + return instance + + def render_json(self): + json = {} + + # Iterate through each field and populate non-empty values + for field_name in self.declared_fields: + if field_name in self.cleaned_data and self.cleaned_data[field_name] not in EMPTY_VALUES: + json[field_name] = self.cleaned_data[field_name] + + return json diff --git a/netbox/extras/migrations/0064_configrevision.py b/netbox/extras/migrations/0064_configrevision.py new file mode 100644 index 000000000..c3fce8abe --- /dev/null +++ b/netbox/extras/migrations/0064_configrevision.py @@ -0,0 +1,20 @@ +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('extras', '0063_webhook_conditions'), + ] + + operations = [ + migrations.CreateModel( + name='ConfigRevision', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False)), + ('created', models.DateTimeField(auto_now_add=True)), + ('comment', models.CharField(blank=True, max_length=200)), + ('data', models.JSONField(blank=True, null=True)), + ], + ), + ] diff --git a/netbox/extras/models/__init__.py b/netbox/extras/models/__init__.py index 84676453f..3cb6372be 100644 --- a/netbox/extras/models/__init__.py +++ b/netbox/extras/models/__init__.py @@ -1,12 +1,13 @@ from .change_logging import ObjectChange from .configcontexts import ConfigContext, ConfigContextModel from .customfields import CustomField -from .models import CustomLink, ExportTemplate, ImageAttachment, JobResult, JournalEntry, Report, Script, Webhook +from .models import * from .tags import Tag, TaggedItem __all__ = ( 'ConfigContext', 'ConfigContextModel', + 'ConfigRevision', 'CustomField', 'CustomLink', 'ExportTemplate', diff --git a/netbox/extras/models/models.py b/netbox/extras/models/models.py index 43af19f82..4f93b19ce 100644 --- a/netbox/extras/models/models.py +++ b/netbox/extras/models/models.py @@ -1,9 +1,11 @@ import json import uuid +from django.contrib import admin from django.contrib.auth.models import User from django.contrib.contenttypes.fields import GenericForeignKey from django.contrib.contenttypes.models import ContentType +from django.core.cache import cache from django.core.validators import ValidationError from django.db import models from django.http import HttpResponse @@ -20,8 +22,8 @@ from netbox.models import BigIDModel, ChangeLoggedModel from utilities.querysets import RestrictedQuerySet from utilities.utils import render_jinja2 - __all__ = ( + 'ConfigRevision', 'CustomLink', 'ExportTemplate', 'ImageAttachment', @@ -33,10 +35,6 @@ __all__ = ( ) -# -# Webhooks -# - @extras_features('webhooks') class Webhook(ChangeLoggedModel): """ @@ -181,10 +179,6 @@ class Webhook(ChangeLoggedModel): return json.dumps(context, cls=JSONEncoder) -# -# Custom links -# - @extras_features('webhooks') class CustomLink(ChangeLoggedModel): """ @@ -240,10 +234,6 @@ class CustomLink(ChangeLoggedModel): return reverse('extras:customlink', args=[self.pk]) -# -# Export templates -# - @extras_features('webhooks') class ExportTemplate(ChangeLoggedModel): content_type = models.ForeignKey( @@ -333,10 +323,6 @@ class ExportTemplate(ChangeLoggedModel): return response -# -# Image attachments -# - class ImageAttachment(BigIDModel): """ An uploaded image which is associated with an object. @@ -409,11 +395,6 @@ class ImageAttachment(BigIDModel): return None -# -# Journal entries -# - - @extras_features('webhooks') class JournalEntry(ChangeLoggedModel): """ @@ -463,36 +444,6 @@ class JournalEntry(ChangeLoggedModel): return JournalEntryKindChoices.CSS_CLASSES.get(self.kind) -# -# Custom scripts -# - -@extras_features('job_results') -class Script(models.Model): - """ - Dummy model used to generate permissions for custom scripts. Does not exist in the database. - """ - class Meta: - managed = False - - -# -# Reports -# - -@extras_features('job_results') -class Report(models.Model): - """ - Dummy model used to generate permissions for reports. Does not exist in the database. - """ - class Meta: - managed = False - - -# -# Job results -# - class JobResult(BigIDModel): """ This model stores the results from running a user-defined report. @@ -582,3 +533,59 @@ class JobResult(BigIDModel): func.delay(*args, job_id=str(job_result.job_id), job_result=job_result, **kwargs) return job_result + + +class ConfigRevision(models.Model): + """ + An atomic revision of NetBox's configuration. + """ + created = models.DateTimeField( + auto_now_add=True + ) + comment = models.CharField( + max_length=200, + blank=True + ) + data = models.JSONField( + blank=True, + null=True, + verbose_name='Configuration data' + ) + + def __str__(self): + return f'Config revision #{self.pk} ({self.created})' + + def __getattr__(self, item): + if item in self.data: + return self.data[item] + return super().__getattribute__(item) + + @admin.display(boolean=True) + def is_active(self): + return cache.get('config_version') == self.pk + + +# +# Custom scripts & reports +# + +@extras_features('job_results') +class Script(models.Model): + """ + Dummy model used to generate permissions for custom scripts. Does not exist in the database. + """ + class Meta: + managed = False + + +# +# Reports +# + +@extras_features('job_results') +class Report(models.Model): + """ + Dummy model used to generate permissions for reports. Does not exist in the database. + """ + class Meta: + managed = False diff --git a/netbox/extras/signals.py b/netbox/extras/signals.py index 4f09706be..01fd30f15 100644 --- a/netbox/extras/signals.py +++ b/netbox/extras/signals.py @@ -2,13 +2,14 @@ import logging from django.conf import settings from django.contrib.contenttypes.models import ContentType +from django.core.cache import cache from django.db.models.signals import m2m_changed, post_save, pre_delete from django.dispatch import receiver, Signal from django_prometheus.models import model_deletes, model_inserts, model_updates from netbox.signals import post_clean from .choices import ObjectChangeActionChoices -from .models import CustomField, ObjectChange +from .models import ConfigRevision, CustomField, ObjectChange from .webhooks import enqueue_object, get_snapshots, serialize_for_webhook @@ -161,3 +162,16 @@ def run_custom_validators(sender, instance, **kwargs): validators = settings.CUSTOM_VALIDATORS.get(model_name, []) for validator in validators: validator(instance) + + +# +# Dynamic configuration +# + +@receiver(post_save, sender=ConfigRevision) +def update_config(sender, instance, **kwargs): + """ + Update the cached NetBox configuration when a new ConfigRevision is created. + """ + cache.set('config', instance.data, None) + cache.set('config_version', instance.pk, None) diff --git a/netbox/ipam/models/ip.py b/netbox/ipam/models/ip.py index 514e87a62..d655dcb21 100644 --- a/netbox/ipam/models/ip.py +++ b/netbox/ipam/models/ip.py @@ -17,6 +17,7 @@ from ipam.fields import IPNetworkField, IPAddressField from ipam.managers import IPAddressManager from ipam.querysets import PrefixQuerySet from ipam.validators import DNSValidator +from netbox.config import ConfigResolver from utilities.querysets import RestrictedQuerySet from virtualization.models import VirtualMachine @@ -316,7 +317,8 @@ class Prefix(PrimaryModel): }) # Enforce unique IP space (if applicable) - if (self.vrf is None and settings.ENFORCE_GLOBAL_UNIQUE) or (self.vrf and self.vrf.enforce_unique): + config = ConfigResolver() + if (self.vrf is None and config.ENFORCE_GLOBAL_UNIQUE) or (self.vrf and self.vrf.enforce_unique): duplicate_prefixes = self.get_duplicates() if duplicate_prefixes: raise ValidationError({ @@ -811,7 +813,8 @@ class IPAddress(PrimaryModel): }) # Enforce unique IP space (if applicable) - if (self.vrf is None and settings.ENFORCE_GLOBAL_UNIQUE) or (self.vrf and self.vrf.enforce_unique): + config = ConfigResolver() + if (self.vrf is None and config.ENFORCE_GLOBAL_UNIQUE) or (self.vrf and self.vrf.enforce_unique): duplicate_ips = self.get_duplicates() if duplicate_ips and ( self.role not in IPADDRESS_ROLES_NONUNIQUE or diff --git a/netbox/netbox/config/__init__.py b/netbox/netbox/config/__init__.py new file mode 100644 index 000000000..34ee127fc --- /dev/null +++ b/netbox/netbox/config/__init__.py @@ -0,0 +1,35 @@ +from django.conf import settings +from django.core.cache import cache + +from .parameters import PARAMS + +__all__ = ( + 'ConfigResolver', + 'PARAMS', +) + + +class ConfigResolver: + """ + Active NetBox configuration. + """ + def __init__(self): + self.config = cache.get('config') + self.version = self.config.get('config_version') + self.defaults = {param.name: param.default for param in PARAMS} + + def __getattr__(self, item): + + # Check for hard-coded configuration in settings.py + if hasattr(settings, item): + return getattr(settings, item) + + # Return config value from cache + if item in self.config: + return self.config[item] + + # Fall back to the parameter's default value + if item in self.defaults: + return self.defaults[item] + + raise AttributeError(f"Invalid configuration parameter: {item}") diff --git a/netbox/netbox/config/parameters.py b/netbox/netbox/config/parameters.py new file mode 100644 index 000000000..604131ec1 --- /dev/null +++ b/netbox/netbox/config/parameters.py @@ -0,0 +1,55 @@ +from django import forms + + +class OptionalBooleanSelect(forms.Select): + """ + An optional boolean field (yes/no/default). + """ + def __init__(self, attrs=None): + choices = ( + ('', 'Default'), + (True, 'Yes'), + (False, 'No'), + ) + super().__init__(attrs, choices) + + +class OptionalBooleanField(forms.NullBooleanField): + widget = OptionalBooleanSelect + + +class ConfigParam: + + def __init__(self, name, label, default, description=None, field=None, field_kwargs=None): + self.name = name + self.label = label + self.default = default + self.field = field or forms.CharField + self.description = description + self.field_kwargs = field_kwargs or {} + + +PARAMS = ( + + # Banners + ConfigParam('BANNER_LOGIN', 'Login banner', ''), + ConfigParam('BANNER_TOP', 'Top banner', ''), + ConfigParam('BANNER_BOTTOM', 'Bottom banner', ''), + + # IPAM + ConfigParam( + name='ENFORCE_GLOBAL_UNIQUE', + label='Globally unique IP space', + default=False, + description="Enforce unique IP addressing within the global table", + field=OptionalBooleanField + ), + ConfigParam( + name='PREFER_IPV4', + label='Prefer IPv4', + default=False, + description="Prefer IPv4 addresses over IPv6", + field=OptionalBooleanField + ), + +) diff --git a/netbox/netbox/context_processors.py b/netbox/netbox/context_processors.py index d6dd67d99..fee32a063 100644 --- a/netbox/netbox/context_processors.py +++ b/netbox/netbox/context_processors.py @@ -1,6 +1,7 @@ from django.conf import settings as django_settings from extras.registry import registry +from netbox.config import ConfigResolver def settings_and_registry(request): @@ -9,6 +10,7 @@ def settings_and_registry(request): """ return { 'settings': django_settings, + 'config': ConfigResolver(), 'registry': registry, 'preferences': request.user.config if request.user.is_authenticated else {}, } diff --git a/netbox/netbox/settings.py b/netbox/netbox/settings.py index 279b8c453..0eb164523 100644 --- a/netbox/netbox/settings.py +++ b/netbox/netbox/settings.py @@ -11,6 +11,8 @@ from django.contrib.messages import constants as messages from django.core.exceptions import ImproperlyConfigured, ValidationError from django.core.validators import URLValidator +from netbox.config import PARAMS + # # Environment setup @@ -68,18 +70,11 @@ DATABASE = getattr(configuration, 'DATABASE') REDIS = getattr(configuration, 'REDIS') SECRET_KEY = getattr(configuration, 'SECRET_KEY') -# Set optional parameters +# Set static config parameters ADMINS = getattr(configuration, 'ADMINS', []) -ALLOWED_URL_SCHEMES = getattr(configuration, 'ALLOWED_URL_SCHEMES', ( - 'file', 'ftp', 'ftps', 'http', 'https', 'irc', 'mailto', 'sftp', 'ssh', 'tel', 'telnet', 'tftp', 'vnc', 'xmpp', -)) -BANNER_BOTTOM = getattr(configuration, 'BANNER_BOTTOM', '') -BANNER_LOGIN = getattr(configuration, 'BANNER_LOGIN', '') -BANNER_TOP = getattr(configuration, 'BANNER_TOP', '') BASE_PATH = getattr(configuration, 'BASE_PATH', '') if BASE_PATH: BASE_PATH = BASE_PATH.strip('/') + '/' # Enforce trailing slash only -CHANGELOG_RETENTION = getattr(configuration, 'CHANGELOG_RETENTION', 90) CORS_ORIGIN_ALLOW_ALL = getattr(configuration, 'CORS_ORIGIN_ALLOW_ALL', False) CORS_ORIGIN_REGEX_WHITELIST = getattr(configuration, 'CORS_ORIGIN_REGEX_WHITELIST', []) CORS_ORIGIN_WHITELIST = getattr(configuration, 'CORS_ORIGIN_WHITELIST', []) @@ -90,30 +85,12 @@ DEBUG = getattr(configuration, 'DEBUG', False) DEVELOPER = getattr(configuration, 'DEVELOPER', False) DOCS_ROOT = getattr(configuration, 'DOCS_ROOT', os.path.join(os.path.dirname(BASE_DIR), 'docs')) EMAIL = getattr(configuration, 'EMAIL', {}) -ENFORCE_GLOBAL_UNIQUE = getattr(configuration, 'ENFORCE_GLOBAL_UNIQUE', False) -EXEMPT_VIEW_PERMISSIONS = getattr(configuration, 'EXEMPT_VIEW_PERMISSIONS', []) -GRAPHQL_ENABLED = getattr(configuration, 'GRAPHQL_ENABLED', True) HTTP_PROXIES = getattr(configuration, 'HTTP_PROXIES', None) INTERNAL_IPS = getattr(configuration, 'INTERNAL_IPS', ('127.0.0.1', '::1')) LOGGING = getattr(configuration, 'LOGGING', {}) -LOGIN_REQUIRED = getattr(configuration, 'LOGIN_REQUIRED', False) -LOGIN_TIMEOUT = getattr(configuration, 'LOGIN_TIMEOUT', None) -MAINTENANCE_MODE = getattr(configuration, 'MAINTENANCE_MODE', False) -MAPS_URL = getattr(configuration, 'MAPS_URL', 'https://maps.google.com/?q=') -MAX_PAGE_SIZE = getattr(configuration, 'MAX_PAGE_SIZE', 1000) MEDIA_ROOT = getattr(configuration, 'MEDIA_ROOT', os.path.join(BASE_DIR, 'media')).rstrip('/') -METRICS_ENABLED = getattr(configuration, 'METRICS_ENABLED', False) -NAPALM_ARGS = getattr(configuration, 'NAPALM_ARGS', {}) -NAPALM_PASSWORD = getattr(configuration, 'NAPALM_PASSWORD', '') -NAPALM_TIMEOUT = getattr(configuration, 'NAPALM_TIMEOUT', 30) -NAPALM_USERNAME = getattr(configuration, 'NAPALM_USERNAME', '') -PAGINATE_COUNT = getattr(configuration, 'PAGINATE_COUNT', 50) -LOGIN_PERSISTENCE = getattr(configuration, 'LOGIN_PERSISTENCE', False) PLUGINS = getattr(configuration, 'PLUGINS', []) PLUGINS_CONFIG = getattr(configuration, 'PLUGINS_CONFIG', {}) -PREFER_IPV4 = getattr(configuration, 'PREFER_IPV4', False) -RACK_ELEVATION_DEFAULT_UNIT_HEIGHT = getattr(configuration, 'RACK_ELEVATION_DEFAULT_UNIT_HEIGHT', 22) -RACK_ELEVATION_DEFAULT_UNIT_WIDTH = getattr(configuration, 'RACK_ELEVATION_DEFAULT_UNIT_WIDTH', 220) REMOTE_AUTH_AUTO_CREATE_USER = getattr(configuration, 'REMOTE_AUTH_AUTO_CREATE_USER', False) REMOTE_AUTH_BACKEND = getattr(configuration, 'REMOTE_AUTH_BACKEND', 'netbox.authentication.RemoteUserBackend') REMOTE_AUTH_DEFAULT_GROUPS = getattr(configuration, 'REMOTE_AUTH_DEFAULT_GROUPS', []) @@ -127,7 +104,6 @@ REMOTE_AUTH_SUPERUSERS = getattr(configuration, 'REMOTE_AUTH_SUPERUSERS', []) REMOTE_AUTH_STAFF_GROUPS = getattr(configuration, 'REMOTE_AUTH_STAFF_GROUPS', []) REMOTE_AUTH_STAFF_USERS = getattr(configuration, 'REMOTE_AUTH_STAFF_USERS', []) REMOTE_AUTH_GROUP_SEPARATOR = getattr(configuration, 'REMOTE_AUTH_GROUP_SEPARATOR', '|') -RELEASE_CHECK_URL = getattr(configuration, 'RELEASE_CHECK_URL', None) REPORTS_ROOT = getattr(configuration, 'REPORTS_ROOT', os.path.join(BASE_DIR, 'reports')).rstrip('/') RQ_DEFAULT_TIMEOUT = getattr(configuration, 'RQ_DEFAULT_TIMEOUT', 300) SCRIPTS_ROOT = getattr(configuration, 'SCRIPTS_ROOT', os.path.join(BASE_DIR, 'scripts')).rstrip('/') @@ -141,6 +117,33 @@ STORAGE_CONFIG = getattr(configuration, 'STORAGE_CONFIG', {}) TIME_FORMAT = getattr(configuration, 'TIME_FORMAT', 'g:i a') TIME_ZONE = getattr(configuration, 'TIME_ZONE', 'UTC') +# Check for hard-coded dynamic config parameters +for param in PARAMS: + if hasattr(configuration, param.name): + globals()[param.name] = getattr(configuration, param.name) + +ALLOWED_URL_SCHEMES = getattr(configuration, 'ALLOWED_URL_SCHEMES', ( + 'file', 'ftp', 'ftps', 'http', 'https', 'irc', 'mailto', 'sftp', 'ssh', 'tel', 'telnet', 'tftp', 'vnc', 'xmpp', +)) +CHANGELOG_RETENTION = getattr(configuration, 'CHANGELOG_RETENTION', 90) +EXEMPT_VIEW_PERMISSIONS = getattr(configuration, 'EXEMPT_VIEW_PERMISSIONS', []) +GRAPHQL_ENABLED = getattr(configuration, 'GRAPHQL_ENABLED', True) +LOGIN_PERSISTENCE = getattr(configuration, 'LOGIN_PERSISTENCE', False) +LOGIN_REQUIRED = getattr(configuration, 'LOGIN_REQUIRED', False) +LOGIN_TIMEOUT = getattr(configuration, 'LOGIN_TIMEOUT', None) +MAINTENANCE_MODE = getattr(configuration, 'MAINTENANCE_MODE', False) +MAPS_URL = getattr(configuration, 'MAPS_URL', 'https://maps.google.com/?q=') +MAX_PAGE_SIZE = getattr(configuration, 'MAX_PAGE_SIZE', 1000) +METRICS_ENABLED = getattr(configuration, 'METRICS_ENABLED', False) +NAPALM_ARGS = getattr(configuration, 'NAPALM_ARGS', {}) +NAPALM_PASSWORD = getattr(configuration, 'NAPALM_PASSWORD', '') +NAPALM_TIMEOUT = getattr(configuration, 'NAPALM_TIMEOUT', 30) +NAPALM_USERNAME = getattr(configuration, 'NAPALM_USERNAME', '') +PAGINATE_COUNT = getattr(configuration, 'PAGINATE_COUNT', 50) +RACK_ELEVATION_DEFAULT_UNIT_HEIGHT = getattr(configuration, 'RACK_ELEVATION_DEFAULT_UNIT_HEIGHT', 22) +RACK_ELEVATION_DEFAULT_UNIT_WIDTH = getattr(configuration, 'RACK_ELEVATION_DEFAULT_UNIT_WIDTH', 220) +RELEASE_CHECK_URL = getattr(configuration, 'RELEASE_CHECK_URL', None) + # Validate update repo URL and timeout if RELEASE_CHECK_URL: validator = URLValidator( diff --git a/netbox/templates/base/layout.html b/netbox/templates/base/layout.html index 9575d4dcb..a4c8c77b6 100644 --- a/netbox/templates/base/layout.html +++ b/netbox/templates/base/layout.html @@ -58,9 +58,9 @@ - {% if settings.BANNER_TOP %} + {% if config.BANNER_TOP %} {% endif %} @@ -98,9 +98,9 @@ {% endblock %} - {% if settings.BANNER_BOTTOM %} + {% if config.BANNER_BOTTOM %} {% endif %} diff --git a/netbox/templates/login.html b/netbox/templates/login.html index 37cdd8e53..a01d75422 100644 --- a/netbox/templates/login.html +++ b/netbox/templates/login.html @@ -7,9 +7,9 @@
{# Login banner #} - {% if settings.BANNER_LOGIN %} + {% if config.BANNER_LOGIN %} {% endif %} diff --git a/netbox/virtualization/models.py b/netbox/virtualization/models.py index c614618c0..51d255fc7 100644 --- a/netbox/virtualization/models.py +++ b/netbox/virtualization/models.py @@ -1,4 +1,3 @@ -from django.conf import settings from django.contrib.contenttypes.fields import GenericRelation from django.core.exceptions import ValidationError from django.core.validators import MinValueValidator @@ -9,6 +8,7 @@ from dcim.models import BaseInterface, Device from extras.models import ConfigContextModel from extras.querysets import ConfigContextModelQuerySet from extras.utils import extras_features +from netbox.config import ConfigResolver from netbox.models import OrganizationalModel, PrimaryModel from utilities.fields import NaturalOrderingField from utilities.ordering import naturalize_interface @@ -340,7 +340,8 @@ class VirtualMachine(PrimaryModel, ConfigContextModel): @property def primary_ip(self): - if settings.PREFER_IPV4 and self.primary_ip4: + config = ConfigResolver() + if config.PREFER_IPV4 and self.primary_ip4: return self.primary_ip4 elif self.primary_ip6: return self.primary_ip6 diff --git a/netbox/virtualization/tables.py b/netbox/virtualization/tables.py index 56ad88f1f..0a605267d 100644 --- a/netbox/virtualization/tables.py +++ b/netbox/virtualization/tables.py @@ -17,8 +17,6 @@ __all__ = ( 'VMInterfaceTable', ) -PRIMARY_IP_ORDERING = ('primary_ip4', 'primary_ip6') if settings.PREFER_IPV4 else ('primary_ip6', 'primary_ip4') - VMINTERFACE_BUTTONS = """ {% if perms.ipam.add_ipaddress %} @@ -136,7 +134,7 @@ class VirtualMachineTable(BaseTable): ) primary_ip = tables.Column( linkify=True, - order_by=PRIMARY_IP_ORDERING, + order_by=('primary_ip4', 'primary_ip6'), verbose_name='IP Address' ) tags = TagColumn( From 7c0f32e8ee73914cca3262c68c685da02c82bf5a Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Tue, 26 Oct 2021 10:04:56 -0400 Subject: [PATCH 072/289] Introduce ConfigItem; add rack elevation parameters --- netbox/dcim/api/serializers.py | 5 +++-- netbox/dcim/models/devices.py | 6 ++---- netbox/dcim/models/racks.py | 10 +++++++--- netbox/extras/admin.py | 6 +++--- netbox/ipam/models/ip.py | 11 ++++------- netbox/netbox/config/__init__.py | 23 +++++++++++++++++++---- netbox/netbox/config/parameters.py | 16 ++++++++++++++++ netbox/netbox/configuration.example.py | 20 -------------------- netbox/netbox/context_processors.py | 4 ++-- netbox/netbox/settings.py | 2 -- netbox/virtualization/models.py | 5 ++--- 11 files changed, 58 insertions(+), 50 deletions(-) diff --git a/netbox/dcim/api/serializers.py b/netbox/dcim/api/serializers.py index d8c5a7771..a5f4ac5fe 100644 --- a/netbox/dcim/api/serializers.py +++ b/netbox/dcim/api/serializers.py @@ -13,6 +13,7 @@ from netbox.api import ChoiceField, ContentTypeField, SerializedPKRelatedField from netbox.api.serializers import ( NestedGroupModelSerializer, PrimaryModelSerializer, ValidatedModelSerializer, WritableNestedSerializer, ) +from netbox.config import ConfigItem from tenancy.api.nested_serializers import NestedTenantSerializer from users.api.nested_serializers import NestedUserSerializer from utilities.api import get_serializer_for_model @@ -229,10 +230,10 @@ class RackElevationDetailFilterSerializer(serializers.Serializer): default=RackElevationDetailRenderChoices.RENDER_JSON ) unit_width = serializers.IntegerField( - default=settings.RACK_ELEVATION_DEFAULT_UNIT_WIDTH + default=ConfigItem('RACK_ELEVATION_DEFAULT_UNIT_WIDTH') ) unit_height = serializers.IntegerField( - default=settings.RACK_ELEVATION_DEFAULT_UNIT_HEIGHT + default=ConfigItem('RACK_ELEVATION_DEFAULT_UNIT_HEIGHT') ) legend_width = serializers.IntegerField( default=RACK_ELEVATION_LEGEND_WIDTH_DEFAULT diff --git a/netbox/dcim/models/devices.py b/netbox/dcim/models/devices.py index d6b23fed4..418944a4a 100644 --- a/netbox/dcim/models/devices.py +++ b/netbox/dcim/models/devices.py @@ -1,7 +1,6 @@ from collections import OrderedDict import yaml -from django.conf import settings from django.contrib.contenttypes.fields import GenericRelation from django.core.exceptions import ValidationError from django.core.validators import MaxValueValidator, MinValueValidator @@ -15,7 +14,7 @@ from dcim.constants import * from extras.models import ConfigContextModel from extras.querysets import ConfigContextModelQuerySet from extras.utils import extras_features -from netbox.config import ConfigResolver +from netbox.config import ConfigItem from netbox.models import OrganizationalModel, PrimaryModel from utilities.choices import ColorChoices from utilities.fields import ColorField, NaturalOrderingField @@ -816,8 +815,7 @@ class Device(PrimaryModel, ConfigContextModel): @property def primary_ip(self): - config = ConfigResolver() - if config.PREFER_IPV4 and self.primary_ip4: + if ConfigItem('PREFER_IPV4')() and self.primary_ip4: return self.primary_ip4 elif self.primary_ip6: return self.primary_ip6 diff --git a/netbox/dcim/models/racks.py b/netbox/dcim/models/racks.py index a6d7f33af..4a023477f 100644 --- a/netbox/dcim/models/racks.py +++ b/netbox/dcim/models/racks.py @@ -1,6 +1,5 @@ from collections import OrderedDict -from django.conf import settings from django.contrib.auth.models import User from django.contrib.contenttypes.fields import GenericRelation from django.contrib.contenttypes.models import ContentType @@ -15,6 +14,7 @@ from dcim.choices import * from dcim.constants import * from dcim.svg import RackElevationSVG from extras.utils import extras_features +from netbox.config import Config from netbox.models import OrganizationalModel, PrimaryModel from utilities.choices import ColorChoices from utilities.fields import ColorField, NaturalOrderingField @@ -373,8 +373,8 @@ class Rack(PrimaryModel): self, face=DeviceFaceChoices.FACE_FRONT, user=None, - unit_width=settings.RACK_ELEVATION_DEFAULT_UNIT_WIDTH, - unit_height=settings.RACK_ELEVATION_DEFAULT_UNIT_HEIGHT, + unit_width=None, + unit_height=None, legend_width=RACK_ELEVATION_LEGEND_WIDTH_DEFAULT, include_images=True, base_url=None @@ -393,6 +393,10 @@ class Rack(PrimaryModel): :param base_url: Base URL for links and images. If none, URLs will be relative. """ elevation = RackElevationSVG(self, user=user, include_images=include_images, base_url=base_url) + if unit_width is None or unit_height is None: + config = Config() + unit_width = unit_width or config.RACK_ELEVATION_DEFAULT_UNIT_WIDTH + unit_height = unit_height or config.RACK_ELEVATION_DEFAULT_UNIT_HEIGHT return elevation.render(face, unit_width, unit_height, legend_width) diff --git a/netbox/extras/admin.py b/netbox/extras/admin.py index e99406e49..cac600626 100644 --- a/netbox/extras/admin.py +++ b/netbox/extras/admin.py @@ -10,9 +10,9 @@ class ConfigRevisionAdmin(admin.ModelAdmin): # ('Authentication', { # 'fields': ('LOGIN_REQUIRED', 'LOGIN_PERSISTENCE', 'LOGIN_TIMEOUT'), # }), - # ('Rack Elevations', { - # 'fields': ('RACK_ELEVATION_DEFAULT_UNIT_HEIGHT', 'RACK_ELEVATION_DEFAULT_UNIT_WIDTH'), - # }), + ('Rack Elevations', { + 'fields': ('RACK_ELEVATION_DEFAULT_UNIT_HEIGHT', 'RACK_ELEVATION_DEFAULT_UNIT_WIDTH'), + }), ('IPAM', { 'fields': ('ENFORCE_GLOBAL_UNIQUE', 'PREFER_IPV4'), }), diff --git a/netbox/ipam/models/ip.py b/netbox/ipam/models/ip.py index d655dcb21..af114537a 100644 --- a/netbox/ipam/models/ip.py +++ b/netbox/ipam/models/ip.py @@ -1,10 +1,9 @@ import netaddr -from django.conf import settings from django.contrib.contenttypes.fields import GenericForeignKey from django.contrib.contenttypes.models import ContentType from django.core.exceptions import ValidationError from django.db import models -from django.db.models import F, Q +from django.db.models import F from django.urls import reverse from django.utils.functional import cached_property @@ -17,7 +16,7 @@ from ipam.fields import IPNetworkField, IPAddressField from ipam.managers import IPAddressManager from ipam.querysets import PrefixQuerySet from ipam.validators import DNSValidator -from netbox.config import ConfigResolver +from netbox.config import Config from utilities.querysets import RestrictedQuerySet from virtualization.models import VirtualMachine @@ -317,8 +316,7 @@ class Prefix(PrimaryModel): }) # Enforce unique IP space (if applicable) - config = ConfigResolver() - if (self.vrf is None and config.ENFORCE_GLOBAL_UNIQUE) or (self.vrf and self.vrf.enforce_unique): + if (self.vrf is None and Config().ENFORCE_GLOBAL_UNIQUE) or (self.vrf and self.vrf.enforce_unique): duplicate_prefixes = self.get_duplicates() if duplicate_prefixes: raise ValidationError({ @@ -813,8 +811,7 @@ class IPAddress(PrimaryModel): }) # Enforce unique IP space (if applicable) - config = ConfigResolver() - if (self.vrf is None and config.ENFORCE_GLOBAL_UNIQUE) or (self.vrf and self.vrf.enforce_unique): + if (self.vrf is None and Config().ENFORCE_GLOBAL_UNIQUE) or (self.vrf and self.vrf.enforce_unique): duplicate_ips = self.get_duplicates() if duplicate_ips and ( self.role not in IPADDRESS_ROLES_NONUNIQUE or diff --git a/netbox/netbox/config/__init__.py b/netbox/netbox/config/__init__.py index 34ee127fc..7e57f3e8d 100644 --- a/netbox/netbox/config/__init__.py +++ b/netbox/netbox/config/__init__.py @@ -4,18 +4,20 @@ from django.core.cache import cache from .parameters import PARAMS __all__ = ( - 'ConfigResolver', + 'Config', + 'ConfigItem', 'PARAMS', ) -class ConfigResolver: +class Config: """ - Active NetBox configuration. + Fetch and store in memory the current NetBox configuration. This class must be instantiated prior to access, and + must be re-instantiated each time it's necessary to check for updates to the cached config. """ def __init__(self): self.config = cache.get('config') - self.version = self.config.get('config_version') + self.version = cache.get('config_version') self.defaults = {param.name: param.default for param in PARAMS} def __getattr__(self, item): @@ -33,3 +35,16 @@ class ConfigResolver: return self.defaults[item] raise AttributeError(f"Invalid configuration parameter: {item}") + + +class ConfigItem: + """ + A callable to retrieve a configuration parameter from the cache. This can serve as a placeholder to defer + referencing a configuration parameter. + """ + def __init__(self, item): + self.item = item + + def __call__(self): + config = Config() + return getattr(config, self.item) diff --git a/netbox/netbox/config/parameters.py b/netbox/netbox/config/parameters.py index 604131ec1..4e1ff80f4 100644 --- a/netbox/netbox/config/parameters.py +++ b/netbox/netbox/config/parameters.py @@ -52,4 +52,20 @@ PARAMS = ( field=OptionalBooleanField ), + # Racks + ConfigParam( + name='RACK_ELEVATION_DEFAULT_UNIT_HEIGHT', + label='Rack Unit Height', + default=22, + description="Default unit height for rendered rack elevations", + field=forms.IntegerField + ), + ConfigParam( + name='RACK_ELEVATION_DEFAULT_UNIT_WIDTH', + label='Rack Unit Width', + default=220, + description="Default unit width for rendered rack elevations", + field=forms.IntegerField + ), + ) diff --git a/netbox/netbox/configuration.example.py b/netbox/netbox/configuration.example.py index 03023740f..bb4a9021e 100644 --- a/netbox/netbox/configuration.example.py +++ b/netbox/netbox/configuration.example.py @@ -77,14 +77,6 @@ ALLOWED_URL_SCHEMES = ( 'file', 'ftp', 'ftps', 'http', 'https', 'irc', 'mailto', 'sftp', 'ssh', 'tel', 'telnet', 'tftp', 'vnc', 'xmpp', ) -# Optionally display a persistent banner at the top and/or bottom of every page. HTML is allowed. To display the same -# content in both banners, define BANNER_TOP and set BANNER_BOTTOM = BANNER_TOP. -BANNER_TOP = '' -BANNER_BOTTOM = '' - -# Text to include on the login page above the login form. HTML is allowed. -BANNER_LOGIN = '' - # Base URL path if accessing NetBox within a directory. For example, if installed at https://example.com/netbox/, set: # BASE_PATH = 'netbox/' BASE_PATH = '' @@ -134,10 +126,6 @@ EMAIL = { 'FROM_EMAIL': '', } -# Enforcement of unique IP space can be toggled on a per-VRF basis. To enforce unique IP space within the global table -# (all prefixes and IP addresses not assigned to a VRF), set ENFORCE_GLOBAL_UNIQUE to True. -ENFORCE_GLOBAL_UNIQUE = False - # Exempt certain models from the enforcement of view permissions. Models listed here will be viewable by all users and # by anonymous users. List models in the form `.`. Add '*' to this list to exempt all models. EXEMPT_VIEW_PERMISSIONS = [ @@ -229,14 +217,6 @@ PLUGINS = [] # } # } -# When determining the primary IP address for a device, IPv6 is preferred over IPv4 by default. Set this to True to -# prefer IPv4 instead. -PREFER_IPV4 = False - -# Rack elevation size defaults, in pixels. For best results, the ratio of width to height should be roughly 10:1. -RACK_ELEVATION_DEFAULT_UNIT_HEIGHT = 22 -RACK_ELEVATION_DEFAULT_UNIT_WIDTH = 220 - # Remote authentication support REMOTE_AUTH_ENABLED = False REMOTE_AUTH_BACKEND = 'netbox.authentication.RemoteUserBackend' diff --git a/netbox/netbox/context_processors.py b/netbox/netbox/context_processors.py index fee32a063..8ae0a0f26 100644 --- a/netbox/netbox/context_processors.py +++ b/netbox/netbox/context_processors.py @@ -1,7 +1,7 @@ from django.conf import settings as django_settings from extras.registry import registry -from netbox.config import ConfigResolver +from netbox.config import Config def settings_and_registry(request): @@ -10,7 +10,7 @@ def settings_and_registry(request): """ return { 'settings': django_settings, - 'config': ConfigResolver(), + 'config': Config(), 'registry': registry, 'preferences': request.user.config if request.user.is_authenticated else {}, } diff --git a/netbox/netbox/settings.py b/netbox/netbox/settings.py index 0eb164523..248b3d697 100644 --- a/netbox/netbox/settings.py +++ b/netbox/netbox/settings.py @@ -140,8 +140,6 @@ NAPALM_PASSWORD = getattr(configuration, 'NAPALM_PASSWORD', '') NAPALM_TIMEOUT = getattr(configuration, 'NAPALM_TIMEOUT', 30) NAPALM_USERNAME = getattr(configuration, 'NAPALM_USERNAME', '') PAGINATE_COUNT = getattr(configuration, 'PAGINATE_COUNT', 50) -RACK_ELEVATION_DEFAULT_UNIT_HEIGHT = getattr(configuration, 'RACK_ELEVATION_DEFAULT_UNIT_HEIGHT', 22) -RACK_ELEVATION_DEFAULT_UNIT_WIDTH = getattr(configuration, 'RACK_ELEVATION_DEFAULT_UNIT_WIDTH', 220) RELEASE_CHECK_URL = getattr(configuration, 'RELEASE_CHECK_URL', None) # Validate update repo URL and timeout diff --git a/netbox/virtualization/models.py b/netbox/virtualization/models.py index 51d255fc7..f82550b4f 100644 --- a/netbox/virtualization/models.py +++ b/netbox/virtualization/models.py @@ -8,7 +8,7 @@ from dcim.models import BaseInterface, Device from extras.models import ConfigContextModel from extras.querysets import ConfigContextModelQuerySet from extras.utils import extras_features -from netbox.config import ConfigResolver +from netbox.config import Config from netbox.models import OrganizationalModel, PrimaryModel from utilities.fields import NaturalOrderingField from utilities.ordering import naturalize_interface @@ -340,8 +340,7 @@ class VirtualMachine(PrimaryModel, ConfigContextModel): @property def primary_ip(self): - config = ConfigResolver() - if config.PREFER_IPV4 and self.primary_ip4: + if Config().PREFER_IPV4 and self.primary_ip4: return self.primary_ip4 elif self.primary_ip6: return self.primary_ip6 From 559dc2f8652959c136727ecf11fc3392fd6ac4f5 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Tue, 26 Oct 2021 10:24:33 -0400 Subject: [PATCH 073/289] Add ALLOWED_URL_SCHEMES --- netbox/extras/admin.py | 8 +++----- netbox/netbox/config/parameters.py | 14 ++++++++++++++ netbox/netbox/configuration.example.py | 5 ----- netbox/netbox/settings.py | 3 --- netbox/utilities/templatetags/helpers.py | 3 ++- netbox/utilities/validators.py | 9 +++++++-- 6 files changed, 26 insertions(+), 16 deletions(-) diff --git a/netbox/extras/admin.py b/netbox/extras/admin.py index cac600626..5e2de7e16 100644 --- a/netbox/extras/admin.py +++ b/netbox/extras/admin.py @@ -16,11 +16,9 @@ class ConfigRevisionAdmin(admin.ModelAdmin): ('IPAM', { 'fields': ('ENFORCE_GLOBAL_UNIQUE', 'PREFER_IPV4'), }), - # ('Security', { - # 'fields': ( - # 'ALLOWED_URL_SCHEMES', 'EXEMPT_VIEW_PERMISSIONS', - # ), - # }), + ('Security', { + 'fields': ('ALLOWED_URL_SCHEMES',), + }), ('Banners', { 'fields': ('BANNER_LOGIN', 'BANNER_TOP', 'BANNER_BOTTOM'), }), diff --git a/netbox/netbox/config/parameters.py b/netbox/netbox/config/parameters.py index 4e1ff80f4..8ad02a5dd 100644 --- a/netbox/netbox/config/parameters.py +++ b/netbox/netbox/config/parameters.py @@ -1,4 +1,5 @@ from django import forms +from django.contrib.postgres.forms import SimpleArrayField class OptionalBooleanSelect(forms.Select): @@ -68,4 +69,17 @@ PARAMS = ( field=forms.IntegerField ), + # Security + ConfigParam( + name='ALLOWED_URL_SCHEMES', + label='Allowed URL schemes', + default=( + 'file', 'ftp', 'ftps', 'http', 'https', 'irc', 'mailto', 'sftp', 'ssh', 'tel', 'telnet', 'tftp', 'vnc', + 'xmpp', + ), + description="Permitted schemes for URLs in user-provided content", + field=SimpleArrayField, + field_kwargs={'base_field': forms.CharField()} + ), + ) diff --git a/netbox/netbox/configuration.example.py b/netbox/netbox/configuration.example.py index bb4a9021e..63e74524a 100644 --- a/netbox/netbox/configuration.example.py +++ b/netbox/netbox/configuration.example.py @@ -72,11 +72,6 @@ ADMINS = [ # ('John Doe', 'jdoe@example.com'), ] -# URL schemes that are allowed within links in NetBox -ALLOWED_URL_SCHEMES = ( - 'file', 'ftp', 'ftps', 'http', 'https', 'irc', 'mailto', 'sftp', 'ssh', 'tel', 'telnet', 'tftp', 'vnc', 'xmpp', -) - # Base URL path if accessing NetBox within a directory. For example, if installed at https://example.com/netbox/, set: # BASE_PATH = 'netbox/' BASE_PATH = '' diff --git a/netbox/netbox/settings.py b/netbox/netbox/settings.py index 248b3d697..f42c99dbf 100644 --- a/netbox/netbox/settings.py +++ b/netbox/netbox/settings.py @@ -122,9 +122,6 @@ for param in PARAMS: if hasattr(configuration, param.name): globals()[param.name] = getattr(configuration, param.name) -ALLOWED_URL_SCHEMES = getattr(configuration, 'ALLOWED_URL_SCHEMES', ( - 'file', 'ftp', 'ftps', 'http', 'https', 'irc', 'mailto', 'sftp', 'ssh', 'tel', 'telnet', 'tftp', 'vnc', 'xmpp', -)) CHANGELOG_RETENTION = getattr(configuration, 'CHANGELOG_RETENTION', 90) EXEMPT_VIEW_PERMISSIONS = getattr(configuration, 'EXEMPT_VIEW_PERMISSIONS', []) GRAPHQL_ENABLED = getattr(configuration, 'GRAPHQL_ENABLED', True) diff --git a/netbox/utilities/templatetags/helpers.py b/netbox/utilities/templatetags/helpers.py index 1b5bb220d..833d19535 100644 --- a/netbox/utilities/templatetags/helpers.py +++ b/netbox/utilities/templatetags/helpers.py @@ -14,6 +14,7 @@ from django.utils.html import strip_tags from django.utils.safestring import mark_safe from markdown import markdown +from netbox.config import Config from utilities.forms import get_selected_values, TableConfigForm from utilities.utils import foreground_color @@ -44,7 +45,7 @@ def render_markdown(value): value = strip_tags(value) # Sanitize Markdown links - schemes = '|'.join(settings.ALLOWED_URL_SCHEMES) + schemes = '|'.join(Config().ALLOWED_URL_SCHEMES) pattern = fr'\[(.+)\]\((?!({schemes})).*:(.+)\)' value = re.sub(pattern, '[\\1](\\3)', value, flags=re.IGNORECASE) diff --git a/netbox/utilities/validators.py b/netbox/utilities/validators.py index b087b0867..5b5775482 100644 --- a/netbox/utilities/validators.py +++ b/netbox/utilities/validators.py @@ -1,9 +1,10 @@ import re -from django.conf import settings from django.core.exceptions import ValidationError from django.core.validators import _lazy_re_compile, BaseValidator, URLValidator +from netbox.config import Config + class EnhancedURLValidator(URLValidator): """ @@ -19,7 +20,11 @@ class EnhancedURLValidator(URLValidator): r'(?::\d{2,5})?' # Port number r'(?:[/?#][^\s]*)?' # Path r'\Z', re.IGNORECASE) - schemes = settings.ALLOWED_URL_SCHEMES + + def __init__(self, schemes=None, **kwargs): + super().__init__(**kwargs) + if schemes is not None: + self.schemes = Config().ALLOWED_URL_SCHEMES class ExclusionValidator(BaseValidator): From 94804fecd8c00043dcdf50c45393f86a1e87b6c7 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Tue, 26 Oct 2021 10:57:33 -0400 Subject: [PATCH 074/289] Add MAINTENANCE_MODE, MAPS_URL --- netbox/extras/admin.py | 6 +++--- netbox/netbox/config/parameters.py | 19 +++++++++++++++++-- netbox/netbox/configuration.example.py | 6 ------ netbox/netbox/settings.py | 2 -- netbox/templates/base/layout.html | 2 +- netbox/templates/dcim/site.html | 4 ++-- netbox/users/views.py | 4 ++-- 7 files changed, 25 insertions(+), 18 deletions(-) diff --git a/netbox/extras/admin.py b/netbox/extras/admin.py index 5e2de7e16..6df9c55cf 100644 --- a/netbox/extras/admin.py +++ b/netbox/extras/admin.py @@ -28,9 +28,9 @@ class ConfigRevisionAdmin(admin.ModelAdmin): # ('Pagination', { # 'fields': ('MAX_PAGE_SIZE', 'PAGINATE_COUNT'), # }), - # ('Miscellaneous', { - # 'fields': ('GRAPHQL_ENABLED', 'METRICS_ENABLED', 'MAINTENANCE_MODE', 'MAPS_URL'), - # }), + ('Miscellaneous', { + 'fields': ('MAINTENANCE_MODE', 'MAPS_URL'), + }), ('Config Revision', { 'fields': ('comment',), }) diff --git a/netbox/netbox/config/parameters.py b/netbox/netbox/config/parameters.py index 8ad02a5dd..4e77cec0e 100644 --- a/netbox/netbox/config/parameters.py +++ b/netbox/netbox/config/parameters.py @@ -56,14 +56,14 @@ PARAMS = ( # Racks ConfigParam( name='RACK_ELEVATION_DEFAULT_UNIT_HEIGHT', - label='Rack Unit Height', + label='Rack unit height', default=22, description="Default unit height for rendered rack elevations", field=forms.IntegerField ), ConfigParam( name='RACK_ELEVATION_DEFAULT_UNIT_WIDTH', - label='Rack Unit Width', + label='Rack unit width', default=220, description="Default unit width for rendered rack elevations", field=forms.IntegerField @@ -82,4 +82,19 @@ PARAMS = ( field_kwargs={'base_field': forms.CharField()} ), + # Miscellaneous + ConfigParam( + name='MAINTENANCE_MODE', + label='Maintenance mode', + default=False, + description="Enable maintenance mode", + field=OptionalBooleanField + ), + ConfigParam( + name='MAPS_URL', + label='Maps URL', + default='https://maps.google.com/?q=', + description="Base URL for mapping geographic locations" + ), + ) diff --git a/netbox/netbox/configuration.example.py b/netbox/netbox/configuration.example.py index 63e74524a..c40ea4eff 100644 --- a/netbox/netbox/configuration.example.py +++ b/netbox/netbox/configuration.example.py @@ -158,12 +158,6 @@ LOGIN_REQUIRED = False # re-authenticate. (Default: 1209600 [14 days]) LOGIN_TIMEOUT = None -# Setting this to True will display a "maintenance mode" banner at the top of every page. -MAINTENANCE_MODE = False - -# The URL to use when mapping physical addresses or GPS coordinates -MAPS_URL = 'https://maps.google.com/?q=' - # An API consumer can request an arbitrary number of objects =by appending the "limit" parameter to the URL (e.g. # "?limit=1000"). This setting defines the maximum limit. Setting it to 0 or None will allow an API consumer to request # all objects by specifying "?limit=0". diff --git a/netbox/netbox/settings.py b/netbox/netbox/settings.py index f42c99dbf..beae4d568 100644 --- a/netbox/netbox/settings.py +++ b/netbox/netbox/settings.py @@ -128,8 +128,6 @@ GRAPHQL_ENABLED = getattr(configuration, 'GRAPHQL_ENABLED', True) LOGIN_PERSISTENCE = getattr(configuration, 'LOGIN_PERSISTENCE', False) LOGIN_REQUIRED = getattr(configuration, 'LOGIN_REQUIRED', False) LOGIN_TIMEOUT = getattr(configuration, 'LOGIN_TIMEOUT', None) -MAINTENANCE_MODE = getattr(configuration, 'MAINTENANCE_MODE', False) -MAPS_URL = getattr(configuration, 'MAPS_URL', 'https://maps.google.com/?q=') MAX_PAGE_SIZE = getattr(configuration, 'MAX_PAGE_SIZE', 1000) METRICS_ENABLED = getattr(configuration, 'METRICS_ENABLED', False) NAPALM_ARGS = getattr(configuration, 'NAPALM_ARGS', {}) diff --git a/netbox/templates/base/layout.html b/netbox/templates/base/layout.html index a4c8c77b6..2770a6dc6 100644 --- a/netbox/templates/base/layout.html +++ b/netbox/templates/base/layout.html @@ -64,7 +64,7 @@ {% endif %} - {% if settings.MAINTENANCE_MODE %} + {% if config.MAINTENANCE_MODE %}
{{ script.filename }} -
{{ script.source }}
+
{{ script.source }}
{% endblock content-wrapper %} diff --git a/netbox/templates/extras/script_result.html b/netbox/templates/extras/script_result.html index f463b0f2c..3cbd0c611 100644 --- a/netbox/templates/extras/script_result.html +++ b/netbox/templates/extras/script_result.html @@ -102,11 +102,11 @@ {% endif %}
-
{{ result.data.output }}
+
{{ result.data.output }}

{{ script.filename }}

-
{{ script.source }}
+
{{ script.source }}
{% endblock content-wrapper %} From 96565c31d93c8a1446020e449cf9dd04c3791c57 Mon Sep 17 00:00:00 2001 From: Daniel Sheppard Date: Thu, 28 Oct 2021 10:04:12 -0500 Subject: [PATCH 099/289] #6732 - ASN should be unique --- netbox/ipam/migrations/0052_unique_asn.py | 19 +++++++++++++++++++ netbox/ipam/models/ip.py | 1 + 2 files changed, 20 insertions(+) create mode 100644 netbox/ipam/migrations/0052_unique_asn.py diff --git a/netbox/ipam/migrations/0052_unique_asn.py b/netbox/ipam/migrations/0052_unique_asn.py new file mode 100644 index 000000000..8a5bb1da9 --- /dev/null +++ b/netbox/ipam/migrations/0052_unique_asn.py @@ -0,0 +1,19 @@ +# Generated by Django 3.2.8 on 2021-10-28 15:03 + +import dcim.fields +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('ipam', '0051_asn_model'), + ] + + operations = [ + migrations.AlterField( + model_name='asn', + name='asn', + field=dcim.fields.ASNField(blank=True, null=True, unique=True), + ), + ] diff --git a/netbox/ipam/models/ip.py b/netbox/ipam/models/ip.py index 45baf8258..110d93cfe 100644 --- a/netbox/ipam/models/ip.py +++ b/netbox/ipam/models/ip.py @@ -74,6 +74,7 @@ class RIR(OrganizationalModel): class ASN(PrimaryModel): asn = ASNField( + unique=True, blank=True, null=True, verbose_name='ASN', From 1902e112f643a134433b995610746bc62830cbd4 Mon Sep 17 00:00:00 2001 From: Daniel Sheppard Date: Thu, 28 Oct 2021 11:46:55 -0500 Subject: [PATCH 100/289] #6732 - Fix tests for utilities --- netbox/utilities/tests/test_filters.py | 63 ++++++++++++++++++++------ 1 file changed, 48 insertions(+), 15 deletions(-) diff --git a/netbox/utilities/tests/test_filters.py b/netbox/utilities/tests/test_filters.py index 374167f1c..e4609ef9b 100644 --- a/netbox/utilities/tests/test_filters.py +++ b/netbox/utilities/tests/test_filters.py @@ -5,6 +5,9 @@ from django.test import TestCase from mptt.fields import TreeForeignKey from taggit.managers import TaggableManager +from circuits.choices import CircuitStatusChoices +from circuits.filtersets import CircuitFilterSet +from circuits.models import Circuit, Provider, CircuitType from dcim.choices import * from dcim.fields import MACAddressField from dcim.filtersets import DeviceFilterSet, SiteFilterSet @@ -13,6 +16,7 @@ from dcim.models import ( ) from extras.filters import TagFilter from extras.models import TaggedItem +from ipam.models import RIR, ASN from netbox.filtersets import BaseFilterSet from utilities.filters import ( MACAddressFilter, MultiValueCharFilter, MultiValueDateFilter, MultiValueDateTimeFilter, MultiValueNumberFilter, @@ -337,10 +341,26 @@ class DynamicFilterLookupExpressionTest(TestCase): device_filterset = DeviceFilterSet site_queryset = Site.objects.all() site_filterset = SiteFilterSet + circuit_queryset = Circuit.objects.all() + circuit_filterset = CircuitFilterSet @classmethod def setUpTestData(cls): + provider = Provider.objects.create(name='Test Provider', slug='test-provider') + circuit_type = CircuitType.objects.create(name='Test Circuit Type', slug='test-circuit-type') + + circuits = ( + Circuit(cid='CID12123', provider=provider, type=circuit_type, + status=CircuitStatusChoices.STATUS_ACTIVE, commit_rate=1000), + Circuit(cid='CID12124', provider=provider, type=circuit_type, + status=CircuitStatusChoices.STATUS_ACTIVE, commit_rate=10000), + Circuit(cid='CID12125', provider=provider, type=circuit_type, + status=CircuitStatusChoices.STATUS_ACTIVE, commit_rate=100000) + + ) + Circuit.objects.bulk_create(circuits) + manufacturers = ( Manufacturer(name='Manufacturer 1', slug='manufacturer-1'), Manufacturer(name='Manufacturer 2', slug='manufacturer-2'), @@ -378,12 +398,25 @@ class DynamicFilterLookupExpressionTest(TestCase): region.save() sites = ( - Site(name='Site 1', slug='abc-site-1', region=regions[0], asn=65001), - Site(name='Site 2', slug='def-site-2', region=regions[1], asn=65101), - Site(name='Site 3', slug='ghi-site-3', region=regions[2], asn=65201), + Site(name='Site 1', slug='abc-site-1', region=regions[0]), + Site(name='Site 2', slug='def-site-2', region=regions[1]), + Site(name='Site 3', slug='ghi-site-3', region=regions[2]), ) Site.objects.bulk_create(sites) + rir = RIR.objects.create(name='RFC 6996', is_private=True) + + asns = [ + ASN(asn=65001, rir=rir), + ASN(asn=65101, rir=rir), + ASN(asn=65201, rir=rir) + ] + ASN.objects.bulk_create(asns) + + asns[0].sites.add(sites[0]) + asns[1].sites.add(sites[1]) + asns[2].sites.add(sites[2]) + racks = ( Rack(name='Rack 1', site=sites[0]), Rack(name='Rack 2', site=sites[1]), @@ -436,21 +469,21 @@ class DynamicFilterLookupExpressionTest(TestCase): params = {'slug__niew': ['-1']} self.assertEqual(SiteFilterSet(params, self.site_queryset).qs.count(), 2) - def test_site_asn_lt(self): - params = {'asn__lt': [65101]} - self.assertEqual(SiteFilterSet(params, self.site_queryset).qs.count(), 1) + def test_circuit_commit_lt(self): + params = {'commit_rate__lt': [10000]} + self.assertEqual(CircuitFilterSet(params, self.circuit_queryset).qs.count(), 1) - def test_site_asn_lte(self): - params = {'asn__lte': [65101]} - self.assertEqual(SiteFilterSet(params, self.site_queryset).qs.count(), 2) + def test_circuit_commit_lte(self): + params = {'commit_rate__lte': [10000]} + self.assertEqual(CircuitFilterSet(params, self.circuit_queryset).qs.count(), 2) - def test_site_asn_gt(self): - params = {'asn__lt': [65101]} - self.assertEqual(SiteFilterSet(params, self.site_queryset).qs.count(), 1) + def test_circuit_commit_gt(self): + params = {'commit_rate__gt': [10000]} + self.assertEqual(CircuitFilterSet(params, self.circuit_queryset).qs.count(), 1) - def test_site_asn_gte(self): - params = {'asn__gte': [65101]} - self.assertEqual(SiteFilterSet(params, self.site_queryset).qs.count(), 2) + def test_circuit_commit_gte(self): + params = {'commit_rate__gte': [10000]} + self.assertEqual(CircuitFilterSet(params, self.circuit_queryset).qs.count(), 2) def test_site_region_negation(self): params = {'region__n': ['region-1']} From 0f68ecda785a4512fbaee337dff18ba2218a3013 Mon Sep 17 00:00:00 2001 From: Daniel Sheppard Date: Thu, 28 Oct 2021 11:47:54 -0500 Subject: [PATCH 101/289] #6732 - Fix hiding of ASN field in Site creation form --- netbox/dcim/forms/models.py | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/netbox/dcim/forms/models.py b/netbox/dcim/forms/models.py index 805788c04..ca7074e05 100644 --- a/netbox/dcim/forms/models.py +++ b/netbox/dcim/forms/models.py @@ -166,13 +166,15 @@ class SiteForm(BootstrapMixin, TenancyForm, CustomFieldModelForm): def __init__(self, instance, *args, **kwargs): super(SiteForm, self).__init__(instance=instance, *args, **kwargs) if instance is None or (instance and (instance.asn is None or instance.asn == '')): - site_fieldset = list(self.Meta.fieldsets[0][1]) - site_fieldset.pop(6) - self.Meta.fieldsets = ( - ('Site', tuple(site_fieldset)), - self.Meta.fieldsets[1], - self.Meta.fieldsets[2], - ) + if 'asn' in self.Meta.fieldsets[0][1]: + site_fieldset = list(self.Meta.fieldsets[0][1]) + index = site_fieldset.index('asn') + site_fieldset.pop(index) + self.Meta.fieldsets = ( + ('Site', tuple(site_fieldset)), + self.Meta.fieldsets[1], + self.Meta.fieldsets[2], + ) del self.fields['asn'] From ada81e31c9bac8422d7e3ebb3b6053f7c66765af Mon Sep 17 00:00:00 2001 From: Daniel Sheppard Date: Thu, 28 Oct 2021 11:48:50 -0500 Subject: [PATCH 102/289] #6732 - Fix CSV import form --- netbox/ipam/forms/bulk_import.py | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/netbox/ipam/forms/bulk_import.py b/netbox/ipam/forms/bulk_import.py index e4190a66c..41604f0e4 100644 --- a/netbox/ipam/forms/bulk_import.py +++ b/netbox/ipam/forms/bulk_import.py @@ -1,5 +1,6 @@ from django import forms from django.contrib.contenttypes.models import ContentType +from django.forms import IntegerField from dcim.models import Device, Interface, Site from extras.forms import CustomFieldModelCSVForm @@ -83,17 +84,12 @@ class AggregateCSVForm(CustomFieldModelCSVForm): class ASNCSVForm(CustomFieldModelCSVForm): - slug = SlugField() + asn = IntegerField() rir = CSVModelChoiceField( queryset=RIR.objects.all(), to_field_name='name', help_text='Assigned RIR' ) - sites = CSVModelChoiceField( - queryset=Site.objects.all(), - to_field_name='name', - help_text='Assigned site' - ) tenant = CSVModelChoiceField( queryset=Tenant.objects.all(), required=False, From 3c261b05d964bc573f1fe4008e22535e96d4e5c4 Mon Sep 17 00:00:00 2001 From: Daniel Sheppard Date: Thu, 28 Oct 2021 11:49:21 -0500 Subject: [PATCH 103/289] #6732 - Fix ASN tests --- netbox/dcim/tests/test_filtersets.py | 19 ++++++++++++- netbox/dcim/tests/test_views.py | 33 ++++++++++++++++++++--- netbox/ipam/tests/test_api.py | 2 +- netbox/ipam/tests/test_filtersets.py | 40 +++++++++++++++------------- netbox/ipam/tests/test_views.py | 6 ++--- 5 files changed, 72 insertions(+), 28 deletions(-) diff --git a/netbox/dcim/tests/test_filtersets.py b/netbox/dcim/tests/test_filtersets.py index ce78e0470..c4558b882 100644 --- a/netbox/dcim/tests/test_filtersets.py +++ b/netbox/dcim/tests/test_filtersets.py @@ -4,7 +4,7 @@ from django.test import TestCase from dcim.choices import * from dcim.filtersets import * from dcim.models import * -from ipam.models import IPAddress +from ipam.models import IPAddress, RIR, ASN from tenancy.models import Tenant, TenantGroup from utilities.choices import ColorChoices from utilities.testing import ChangeLoggedFilterSetTests @@ -148,6 +148,23 @@ class SiteTestCase(TestCase, ChangeLoggedFilterSetTests): ) Site.objects.bulk_create(sites) + rir = RIR.objects.create(name='RFC 6996', is_private=True) + + asns = ( + ASN(asn=64512, rir=rir, tenant=tenants[0]), + ASN(asn=64513, rir=rir, tenant=tenants[0]), + ASN(asn=64514, rir=rir, tenant=tenants[0]), + ASN(asn=65001, rir=rir, tenant=tenants[0]), + ASN(asn=65002, rir=rir, tenant=tenants[0]) + ) + ASN.objects.bulk_create(asns) + + asns[0].sites.set([sites[0]]) + asns[1].sites.set([sites[1]]) + asns[2].sites.set([sites[2]]) + asns[3].sites.set([sites[2]]) + asns[4].sites.set([sites[1]]) + def test_name(self): params = {'name': ['Site 1', 'Site 2']} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) diff --git a/netbox/dcim/tests/test_views.py b/netbox/dcim/tests/test_views.py index a9c191679..df0cfcf5d 100644 --- a/netbox/dcim/tests/test_views.py +++ b/netbox/dcim/tests/test_views.py @@ -11,7 +11,7 @@ from netaddr import EUI from dcim.choices import * from dcim.constants import * from dcim.models import * -from ipam.models import VLAN +from ipam.models import VLAN, ASN, RIR from tenancy.models import Tenant from utilities.testing import ViewTestCases, create_tags, create_test_device @@ -104,7 +104,7 @@ class SiteTestCase(ViewTestCases.PrimaryObjectViewTestCase): for group in groups: group.save() - Site.objects.bulk_create([ + sites = Site.objects.bulk_create([ Site(name='Site 1', slug='site-1', region=regions[0], group=groups[1]), Site(name='Site 2', slug='site-2', region=regions[0], group=groups[1]), Site(name='Site 3', slug='site-3', region=regions[0], group=groups[1]), @@ -112,6 +112,33 @@ class SiteTestCase(ViewTestCases.PrimaryObjectViewTestCase): tags = create_tags('Alpha', 'Bravo', 'Charlie') + rir = RIR.objects.create(name='RFC 6996', is_private=True) + + asns = [ + ASN(asn=65000, rir=rir), + ASN(asn=65001, rir=rir), + ASN(asn=65002, rir=rir), + ASN(asn=65003, rir=rir), + ASN(asn=65004, rir=rir), + ASN(asn=65005, rir=rir), + ASN(asn=65006, rir=rir), + ASN(asn=65007, rir=rir), + ASN(asn=65008, rir=rir), + ASN(asn=65009, rir=rir), + ASN(asn=65010, rir=rir), + ] + ASN.objects.bulk_create(asns) + + asns[0].sites.set([sites[0]]) + asns[2].sites.set([sites[0]]) + asns[3].sites.set([sites[1]]) + asns[4].sites.set([sites[2]]) + asns[5].sites.set([sites[1]]) + asns[6].sites.set([sites[2]]) + asns[7].sites.set([sites[2]]) + asns[8].sites.set([sites[2]]) + asns[10].sites.set([sites[0]]) + cls.form_data = { 'name': 'Site X', 'slug': 'site-x', @@ -120,7 +147,6 @@ class SiteTestCase(ViewTestCases.PrimaryObjectViewTestCase): 'group': groups[1].pk, 'tenant': None, 'facility': 'Facility X', - 'asn': 65001, 'time_zone': pytz.UTC, 'description': 'Site description', 'physical_address': '742 Evergreen Terrace, Springfield, USA', @@ -146,7 +172,6 @@ class SiteTestCase(ViewTestCases.PrimaryObjectViewTestCase): 'region': regions[1].pk, 'group': groups[1].pk, 'tenant': None, - 'asn': 65009, 'time_zone': pytz.timezone('US/Eastern'), 'description': 'New description', } diff --git a/netbox/ipam/tests/test_api.py b/netbox/ipam/tests/test_api.py index 42fc7132b..77473e504 100644 --- a/netbox/ipam/tests/test_api.py +++ b/netbox/ipam/tests/test_api.py @@ -23,7 +23,7 @@ class AppTest(APITestCase): class ASNTest(APIViewTestCases.APIViewTestCase): model = ASN - brief_fields = ['display', 'id', 'name', 'prefix_count', 'rd', 'url'] + brief_fields = ['asn', 'display', 'id', 'url'] bulk_update_data = { 'description': 'New description', } diff --git a/netbox/ipam/tests/test_filtersets.py b/netbox/ipam/tests/test_filtersets.py index 602fdd0f9..523680767 100644 --- a/netbox/ipam/tests/test_filtersets.py +++ b/netbox/ipam/tests/test_filtersets.py @@ -34,29 +34,31 @@ class ASNTestCase(TestCase, ChangeLoggedFilterSetTests): ] asns = ( + ASN(asn=64512, rir=rirs[0], tenant=tenants[0]), ASN(asn=64513, rir=rirs[0], tenant=tenants[0]), ASN(asn=64514, rir=rirs[0], tenant=tenants[1]), ASN(asn=64515, rir=rirs[0], tenant=tenants[2]), ASN(asn=64516, rir=rirs[0], tenant=tenants[3]), - ASN(asn=65535, rir=rirs[1], tenant=tenants[5]), + ASN(asn=65535, rir=rirs[1], tenant=tenants[4]), ASN(asn=4200000000, rir=rirs[0], tenant=tenants[0]), ASN(asn=4200000001, rir=rirs[0], tenant=tenants[1]), ASN(asn=4200000002, rir=rirs[0], tenant=tenants[2]), ASN(asn=4200000003, rir=rirs[0], tenant=tenants[3]), - ASN(asn=4200002301, rir=rirs[1], tenant=tenants[5]), + ASN(asn=4200002301, rir=rirs[1], tenant=tenants[4]), ) ASN.objects.bulk_create(asns) asns[0].sites.set([sites[0]]) - asns[1].sites.set([sites[1]]) - asns[2].sites.set([sites[2]]) - asns[3].sites.set([sites[0]]) - asns[4].sites.set([sites[1]]) - asns[5].sites.set([sites[0]]) - asns[6].sites.set([sites[1]]) - asns[7].sites.set([sites[2]]) - asns[8].sites.set([sites[0]]) - asns[9].sites.set([sites[1]]) + asns[1].sites.set([sites[0]]) + asns[2].sites.set([sites[1]]) + asns[3].sites.set([sites[2]]) + asns[4].sites.set([sites[0]]) + asns[5].sites.set([sites[1]]) + asns[6].sites.set([sites[0]]) + asns[7].sites.set([sites[1]]) + asns[8].sites.set([sites[2]]) + asns[9].sites.set([sites[0]]) + asns[10].sites.set([sites[1]]) def test_asn(self): params = {'asn': ['64512', '65535']} @@ -65,23 +67,23 @@ class ASNTestCase(TestCase, ChangeLoggedFilterSetTests): def test_tenant(self): tenants = Tenant.objects.all()[:2] params = {'tenant_id': [tenants[0].pk, tenants[1].pk]} - self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4) + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 5) params = {'tenant': [tenants[0].slug, tenants[1].slug]} - self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4) + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 5) def test_rir(self): rirs = RIR.objects.all()[:1] - params = {'rir_id': [rirs[0].pk, rirs[1].pk]} - self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) - params = {'rir': [rirs[0].slug, rirs[1].slug]} - self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + params = {'rir_id': [rirs[0].pk]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 9) + params = {'rir': [rirs[0].slug]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 9) def test_site(self): sites = Site.objects.all()[:2] params = {'site_id': [sites[0].pk, sites[1].pk]} - self.assertEqual(self.filterset(params, self.queryset).qs.count(), 8) + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 9) params = {'site': [sites[0].slug, sites[1].slug]} - self.assertEqual(self.filterset(params, self.queryset).qs.count(), 8) + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 9) class VRFTestCase(TestCase, ChangeLoggedFilterSetTests): diff --git a/netbox/ipam/tests/test_views.py b/netbox/ipam/tests/test_views.py index 3bd22b112..86f11bf3d 100644 --- a/netbox/ipam/tests/test_views.py +++ b/netbox/ipam/tests/test_views.py @@ -46,8 +46,8 @@ class ASNTestCase(ViewTestCases.PrimaryObjectViewTestCase): cls.form_data = { 'asn': 64512, 'rir': rirs[0].pk, - 'tenant': tenants[0], - 'site': sites[0], + 'tenant': tenants[0].pk, + 'site': sites[0].pk, 'description': 'A new ASN', } @@ -55,7 +55,7 @@ class ASNTestCase(ViewTestCases.PrimaryObjectViewTestCase): "asn,rir", "64533,RFC 6996", "64523,RFC 6996", - "64513,RFC 6996", + "4200000002,RFC 6996", ) cls.bulk_edit_data = { From de5c9ef4b2addaa850d93b1ebcf7dc7bcd50aca9 Mon Sep 17 00:00:00 2001 From: Daniel Sheppard Date: Thu, 28 Oct 2021 11:49:59 -0500 Subject: [PATCH 104/289] #6732 - Add graphql support for new ASN model and fix ASN overflow on longs --- netbox/dcim/graphql/types.py | 4 ++++ netbox/ipam/graphql/scalars.py | 5 +++++ netbox/ipam/graphql/types.py | 4 ++++ netbox/netbox/graphql/scalars.py | 23 +++++++++++++++++++++++ 4 files changed, 36 insertions(+) create mode 100644 netbox/ipam/graphql/scalars.py create mode 100644 netbox/netbox/graphql/scalars.py diff --git a/netbox/dcim/graphql/types.py b/netbox/dcim/graphql/types.py index 80c32e66d..6d93452cd 100644 --- a/netbox/dcim/graphql/types.py +++ b/netbox/dcim/graphql/types.py @@ -1,8 +1,11 @@ +import graphene + from dcim import filtersets, models from extras.graphql.mixins import ( ChangelogMixin, ConfigContextMixin, CustomFieldsMixin, ImageAttachmentsMixin, TagsMixin, ) from ipam.graphql.mixins import IPAddressesMixin, VLANGroupsMixin +from ipam.graphql.scalars import ASNField from netbox.graphql.types import BaseObjectType, OrganizationalObjectType, PrimaryObjectType __all__ = ( @@ -374,6 +377,7 @@ class RegionType(VLANGroupsMixin, OrganizationalObjectType): class SiteType(VLANGroupsMixin, ImageAttachmentsMixin, PrimaryObjectType): + asn = graphene.Field(ASNField) class Meta: model = models.Site diff --git a/netbox/ipam/graphql/scalars.py b/netbox/ipam/graphql/scalars.py new file mode 100644 index 000000000..d59375ba3 --- /dev/null +++ b/netbox/ipam/graphql/scalars.py @@ -0,0 +1,5 @@ +from netbox.graphql.scalars import BigInt + + +class ASNField(BigInt): + pass diff --git a/netbox/ipam/graphql/types.py b/netbox/ipam/graphql/types.py index 0fbe06c50..71c7fd24e 100644 --- a/netbox/ipam/graphql/types.py +++ b/netbox/ipam/graphql/types.py @@ -1,4 +1,7 @@ +import graphene + from ipam import filtersets, models +from ipam.graphql.scalars import ASNField from netbox.graphql.types import OrganizationalObjectType, PrimaryObjectType __all__ = ( @@ -18,6 +21,7 @@ __all__ = ( class ASNType(PrimaryObjectType): + asn = graphene.Field(ASNField) class Meta: model = models.ASN diff --git a/netbox/netbox/graphql/scalars.py b/netbox/netbox/graphql/scalars.py new file mode 100644 index 000000000..7d14189dd --- /dev/null +++ b/netbox/netbox/graphql/scalars.py @@ -0,0 +1,23 @@ +from graphene import Scalar +from graphql.language import ast +from graphql.type.scalars import MAX_INT, MIN_INT + + +class BigInt(Scalar): + """ + Handle any BigInts + """ + @staticmethod + def to_float(value): + num = int(value) + if num > MAX_INT or num < MIN_INT: + return float(num) + return num + + serialize = to_float + parse_value = to_float + + @staticmethod + def parse_literal(node): + if isinstance(node, ast.IntValue): + return BigInt.to_float(node.value) From fff124ebb1d6c2ec104102e3e225cd6d72a582e8 Mon Sep 17 00:00:00 2001 From: Daniel Sheppard Date: Thu, 28 Oct 2021 12:06:41 -0500 Subject: [PATCH 105/289] #6732 - Update migration file --- .../{0051_asn_model.py => 0052_asn_model.py} | 4 ++-- netbox/ipam/migrations/0052_unique_asn.py | 19 ------------------- 2 files changed, 2 insertions(+), 21 deletions(-) rename netbox/ipam/migrations/{0051_asn_model.py => 0052_asn_model.py} (96%) delete mode 100644 netbox/ipam/migrations/0052_unique_asn.py diff --git a/netbox/ipam/migrations/0051_asn_model.py b/netbox/ipam/migrations/0052_asn_model.py similarity index 96% rename from netbox/ipam/migrations/0051_asn_model.py rename to netbox/ipam/migrations/0052_asn_model.py index b397532ea..4adafd411 100644 --- a/netbox/ipam/migrations/0051_asn_model.py +++ b/netbox/ipam/migrations/0052_asn_model.py @@ -13,7 +13,7 @@ class Migration(migrations.Migration): ('extras', '0062_clear_secrets_changelog'), ('tenancy', '0003_contacts'), ('dcim', '0137_relax_uniqueness_constraints'), - ('ipam', '0050_iprange'), + ('ipam', '0051_extend_tag_support'), ] operations = [ @@ -24,7 +24,7 @@ class Migration(migrations.Migration): ('last_updated', models.DateTimeField(auto_now=True, null=True)), ('custom_field_data', models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder)), ('id', models.BigAutoField(primary_key=True, serialize=False)), - ('asn', dcim.fields.ASNField(blank=True, null=True)), + ('asn', dcim.fields.ASNField(blank=True, null=True, unique=True)), ('description', models.CharField(blank=True, max_length=200)), ('rir', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='asns', to='ipam.rir')), ('sites', models.ManyToManyField(blank=True, related_name='asns', to='dcim.Site')), diff --git a/netbox/ipam/migrations/0052_unique_asn.py b/netbox/ipam/migrations/0052_unique_asn.py deleted file mode 100644 index 8a5bb1da9..000000000 --- a/netbox/ipam/migrations/0052_unique_asn.py +++ /dev/null @@ -1,19 +0,0 @@ -# Generated by Django 3.2.8 on 2021-10-28 15:03 - -import dcim.fields -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('ipam', '0051_asn_model'), - ] - - operations = [ - migrations.AlterField( - model_name='asn', - name='asn', - field=dcim.fields.ASNField(blank=True, null=True, unique=True), - ), - ] From 6377d475fc13b44765c3918736596d061329ceaa Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Thu, 28 Oct 2021 13:56:41 -0400 Subject: [PATCH 106/289] Refactor generation of additional lookup filters --- netbox/netbox/filtersets.py | 113 ++++++++++++++++++++---------------- 1 file changed, 62 insertions(+), 51 deletions(-) diff --git a/netbox/netbox/filtersets.py b/netbox/netbox/filtersets.py index 791c21d19..879f57bdc 100644 --- a/netbox/netbox/filtersets.py +++ b/netbox/netbox/filtersets.py @@ -2,6 +2,7 @@ import django_filters from copy import deepcopy from django.contrib.contenttypes.models import ContentType from django.db import models +from django_filters.exceptions import FieldLookupError from django_filters.utils import get_model_field, resolve_field from dcim.forms import MACAddressField @@ -115,6 +116,59 @@ class BaseFilterSet(django_filters.FilterSet): return None + @classmethod + def get_additional_lookups(cls, existing_filter_name, existing_filter): + new_filters = {} + + # Skip nonstandard lookup expressions + if existing_filter.method is not None or existing_filter.lookup_expr not in ['exact', 'in']: + return {} + + # Choose the lookup expression map based on the filter type + lookup_map = cls._get_filter_lookup_dict(existing_filter) + if lookup_map is None: + # Do not augment this filter type with more lookup expressions + return {} + + # Get properties of the existing filter for later use + field_name = existing_filter.field_name + field = get_model_field(cls._meta.model, field_name) + + # Create new filters for each lookup expression in the map + for lookup_name, lookup_expr in lookup_map.items(): + new_filter_name = f'{existing_filter_name}__{lookup_name}' + + try: + if existing_filter_name in cls.declared_filters: + # The filter field has been explicitly defined on the filterset class so we must manually + # create the new filter with the same type because there is no guarantee the defined type + # is the same as the default type for the field + resolve_field(field, lookup_expr) # Will raise FieldLookupError if the lookup is invalid + new_filter = type(existing_filter)( + field_name=field_name, + lookup_expr=lookup_expr, + label=existing_filter.label, + exclude=existing_filter.exclude, + distinct=existing_filter.distinct, + **existing_filter.extra + ) + else: + # The filter field is listed in Meta.fields so we can safely rely on default behaviour + # Will raise FieldLookupError if the lookup is invalid + new_filter = cls.filter_for_field(field, field_name, lookup_expr) + except FieldLookupError: + # The filter could not be created because the lookup expression is not supported on the field + continue + + if lookup_name.startswith('n'): + # This is a negation filter which requires a queryset.exclude() clause + # Of course setting the negation of the existing filter's exclude attribute handles both cases + new_filter.exclude = not existing_filter.exclude + + new_filters[new_filter_name] = new_filter + + return new_filters + @classmethod def get_filters(cls): """ @@ -125,59 +179,12 @@ class BaseFilterSet(django_filters.FilterSet): """ filters = super().get_filters() - new_filters = {} + additional_filters = {} for existing_filter_name, existing_filter in filters.items(): - # Loop over existing filters to extract metadata by which to create new filters + additional_filters.update(cls.get_additional_lookups(existing_filter_name, existing_filter)) - # If the filter makes use of a custom filter method or lookup expression skip it - # as we cannot sanely handle these cases in a generic mannor - if existing_filter.method is not None or existing_filter.lookup_expr not in ['exact', 'in']: - continue + filters.update(additional_filters) - # Choose the lookup expression map based on the filter type - lookup_map = cls._get_filter_lookup_dict(existing_filter) - if lookup_map is None: - # Do not augment this filter type with more lookup expressions - continue - - # Get properties of the existing filter for later use - field_name = existing_filter.field_name - field = get_model_field(cls._meta.model, field_name) - - # Create new filters for each lookup expression in the map - for lookup_name, lookup_expr in lookup_map.items(): - new_filter_name = '{}__{}'.format(existing_filter_name, lookup_name) - - try: - if existing_filter_name in cls.declared_filters: - # The filter field has been explicity defined on the filterset class so we must manually - # create the new filter with the same type because there is no guarantee the defined type - # is the same as the default type for the field - resolve_field(field, lookup_expr) # Will raise FieldLookupError if the lookup is invalid - new_filter = type(existing_filter)( - field_name=field_name, - lookup_expr=lookup_expr, - label=existing_filter.label, - exclude=existing_filter.exclude, - distinct=existing_filter.distinct, - **existing_filter.extra - ) - else: - # The filter field is listed in Meta.fields so we can safely rely on default behaviour - # Will raise FieldLookupError if the lookup is invalid - new_filter = cls.filter_for_field(field, field_name, lookup_expr) - except django_filters.exceptions.FieldLookupError: - # The filter could not be created because the lookup expression is not supported on the field - continue - - if lookup_name.startswith('n'): - # This is a negation filter which requires a queryset.exclude() clause - # Of course setting the negation of the existing filter's exclude attribute handles both cases - new_filter.exclude = not existing_filter.exclude - - new_filters[new_filter_name] = new_filter - - filters.update(new_filters) return filters @@ -213,8 +220,12 @@ class PrimaryModelFilterSet(ChangeLoggedModelFilterSet): ).exclude( filter_logic=CustomFieldFilterLogicChoices.FILTER_DISABLED ) + + custom_field_filters = {} for cf in custom_fields: - self.filters['cf_{}'.format(cf.name)] = CustomFieldFilter(field_name=cf.name, custom_field=cf) + custom_field_filters[f'cf_{cf.name}'] = CustomFieldFilter(field_name=cf.name, custom_field=cf) + + self.filters.update(custom_field_filters) class OrganizationalModelFilterSet(PrimaryModelFilterSet): From 9565addcd4bf8d7f402746d836307396b24e80d3 Mon Sep 17 00:00:00 2001 From: Daniel Sheppard Date: Thu, 28 Oct 2021 13:12:55 -0500 Subject: [PATCH 107/289] #6732 - Fix test failure when sending data --- netbox/dcim/forms/models.py | 21 ++++++--------------- 1 file changed, 6 insertions(+), 15 deletions(-) diff --git a/netbox/dcim/forms/models.py b/netbox/dcim/forms/models.py index 24a1e8140..bda6c4348 100644 --- a/netbox/dcim/forms/models.py +++ b/netbox/dcim/forms/models.py @@ -172,9 +172,12 @@ class SiteForm(BootstrapMixin, TenancyForm, CustomFieldModelForm): 'longitude': "Longitude in decimal format (xx.yyyyyy)" } - def __init__(self, instance, *args, **kwargs): - super(SiteForm, self).__init__(instance=instance, *args, **kwargs) - if instance is None or (instance and (instance.asn is None or instance.asn == '')): + def __init__(self, data=None, instance=None, *args, **kwargs): + super().__init__(data=data, instance=instance, *args, **kwargs) + if instance is None or \ + (instance and (instance.asn is None or instance.asn == '')) or \ + (data and (data.get('asn') is None or instance.get('asn')) == ''): + print(f'{instance}') if 'asn' in self.Meta.fieldsets[0][1]: site_fieldset = list(self.Meta.fieldsets[0][1]) index = site_fieldset.index('asn') @@ -812,7 +815,6 @@ class VirtualChassisForm(BootstrapMixin, CustomFieldModelForm): class DeviceVCMembershipForm(forms.ModelForm): - class Meta: model = Device fields = [ @@ -908,7 +910,6 @@ class VCMemberSelectForm(BootstrapMixin, forms.Form): class ConsolePortTemplateForm(BootstrapMixin, forms.ModelForm): - class Meta: model = ConsolePortTemplate fields = [ @@ -920,7 +921,6 @@ class ConsolePortTemplateForm(BootstrapMixin, forms.ModelForm): class ConsoleServerPortTemplateForm(BootstrapMixin, forms.ModelForm): - class Meta: model = ConsoleServerPortTemplate fields = [ @@ -932,7 +932,6 @@ class ConsoleServerPortTemplateForm(BootstrapMixin, forms.ModelForm): class PowerPortTemplateForm(BootstrapMixin, forms.ModelForm): - class Meta: model = PowerPortTemplate fields = [ @@ -944,7 +943,6 @@ class PowerPortTemplateForm(BootstrapMixin, forms.ModelForm): class PowerOutletTemplateForm(BootstrapMixin, forms.ModelForm): - class Meta: model = PowerOutletTemplate fields = [ @@ -955,7 +953,6 @@ class PowerOutletTemplateForm(BootstrapMixin, forms.ModelForm): } def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) # Limit power_port choices to current DeviceType @@ -966,7 +963,6 @@ class PowerOutletTemplateForm(BootstrapMixin, forms.ModelForm): class InterfaceTemplateForm(BootstrapMixin, forms.ModelForm): - class Meta: model = InterfaceTemplate fields = [ @@ -979,7 +975,6 @@ class InterfaceTemplateForm(BootstrapMixin, forms.ModelForm): class FrontPortTemplateForm(BootstrapMixin, forms.ModelForm): - class Meta: model = FrontPortTemplate fields = [ @@ -991,7 +986,6 @@ class FrontPortTemplateForm(BootstrapMixin, forms.ModelForm): } def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) # Limit rear_port choices to current DeviceType @@ -1002,7 +996,6 @@ class FrontPortTemplateForm(BootstrapMixin, forms.ModelForm): class RearPortTemplateForm(BootstrapMixin, forms.ModelForm): - class Meta: model = RearPortTemplate fields = [ @@ -1015,7 +1008,6 @@ class RearPortTemplateForm(BootstrapMixin, forms.ModelForm): class DeviceBayTemplateForm(BootstrapMixin, forms.ModelForm): - class Meta: model = DeviceBayTemplate fields = [ @@ -1278,7 +1270,6 @@ class PopulateDeviceBayForm(BootstrapMixin, forms.Form): ) def __init__(self, device_bay, *args, **kwargs): - super().__init__(*args, **kwargs) self.fields['installed_device'].queryset = Device.objects.filter( From 0a8788eb976ac7a433e73c9683b092393b69f4d7 Mon Sep 17 00:00:00 2001 From: Daniel Sheppard Date: Thu, 28 Oct 2021 13:57:36 -0500 Subject: [PATCH 108/289] #6732 - Fix Site form and ASN form --- netbox/dcim/forms/models.py | 10 +++++++++- netbox/ipam/forms/models.py | 5 +++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/netbox/dcim/forms/models.py b/netbox/dcim/forms/models.py index bda6c4348..2d2b28ee0 100644 --- a/netbox/dcim/forms/models.py +++ b/netbox/dcim/forms/models.py @@ -174,10 +174,13 @@ class SiteForm(BootstrapMixin, TenancyForm, CustomFieldModelForm): def __init__(self, data=None, instance=None, *args, **kwargs): super().__init__(data=data, instance=instance, *args, **kwargs) + + self.fields['asns'].initial = self.instance.asns.all().values_list('id', flat=True) + + # Hide the ASN field if there is nothing there as this is deprecated if instance is None or \ (instance and (instance.asn is None or instance.asn == '')) or \ (data and (data.get('asn') is None or instance.get('asn')) == ''): - print(f'{instance}') if 'asn' in self.Meta.fieldsets[0][1]: site_fieldset = list(self.Meta.fieldsets[0][1]) index = site_fieldset.index('asn') @@ -189,6 +192,11 @@ class SiteForm(BootstrapMixin, TenancyForm, CustomFieldModelForm): ) del self.fields['asn'] + def save(self, *args, **kwargs): + instance = super().save(*args, **kwargs) + instance.asns.set(self.cleaned_data['asns']) + return instance + class LocationForm(BootstrapMixin, TenancyForm, CustomFieldModelForm): region = DynamicModelChoiceField( diff --git a/netbox/ipam/forms/models.py b/netbox/ipam/forms/models.py index aff071e5d..abf2aa4a1 100644 --- a/netbox/ipam/forms/models.py +++ b/netbox/ipam/forms/models.py @@ -129,6 +129,11 @@ class ASNForm(BootstrapMixin, TenancyForm, CustomFieldModelForm): queryset=RIR.objects.all(), label='RIR', ) + sites = DynamicModelMultipleChoiceField( + queryset=Site.objects.all(), + label='Sites', + required=False + ) class Meta: model = ASN From 7c60089692d853c7db2bb3af623bf28347697596 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Thu, 28 Oct 2021 15:31:50 -0400 Subject: [PATCH 109/289] Ditch CustomFieldFilter --- netbox/extras/filters.py | 36 --------------------- netbox/extras/filtersets.py | 7 ---- netbox/extras/models/customfields.py | 48 ++++++++++++++++++++++++++++ netbox/netbox/filtersets.py | 9 +++--- 4 files changed, 53 insertions(+), 47 deletions(-) diff --git a/netbox/extras/filters.py b/netbox/extras/filters.py index b37aaf40e..de739aa59 100644 --- a/netbox/extras/filters.py +++ b/netbox/extras/filters.py @@ -1,47 +1,11 @@ import django_filters -from django.forms import DateField, IntegerField, NullBooleanField from .models import Tag -from .choices import * __all__ = ( - 'CustomFieldFilter', 'TagFilter', ) -EXACT_FILTER_TYPES = ( - CustomFieldTypeChoices.TYPE_BOOLEAN, - CustomFieldTypeChoices.TYPE_DATE, - CustomFieldTypeChoices.TYPE_INTEGER, - CustomFieldTypeChoices.TYPE_SELECT, - CustomFieldTypeChoices.TYPE_MULTISELECT, -) - - -class CustomFieldFilter(django_filters.Filter): - """ - Filter objects by the presence of a CustomFieldValue. The filter's name is used as the CustomField name. - """ - def __init__(self, custom_field, *args, **kwargs): - self.custom_field = custom_field - - if custom_field.type == CustomFieldTypeChoices.TYPE_INTEGER: - self.field_class = IntegerField - elif custom_field.type == CustomFieldTypeChoices.TYPE_BOOLEAN: - self.field_class = NullBooleanField - elif custom_field.type == CustomFieldTypeChoices.TYPE_DATE: - self.field_class = DateField - - super().__init__(*args, **kwargs) - - self.field_name = f'custom_field_data__{self.field_name}' - - if custom_field.type == CustomFieldTypeChoices.TYPE_MULTISELECT: - self.lookup_expr = 'has_key' - elif custom_field.type not in EXACT_FILTER_TYPES: - if custom_field.filter_logic == CustomFieldFilterLogicChoices.FILTER_LOOSE: - self.lookup_expr = 'icontains' - class TagFilter(django_filters.ModelMultipleChoiceFilter): """ diff --git a/netbox/extras/filtersets.py b/netbox/extras/filtersets.py index af8d904f4..0d44eab57 100644 --- a/netbox/extras/filtersets.py +++ b/netbox/extras/filtersets.py @@ -26,13 +26,6 @@ __all__ = ( 'WebhookFilterSet', ) -EXACT_FILTER_TYPES = ( - CustomFieldTypeChoices.TYPE_BOOLEAN, - CustomFieldTypeChoices.TYPE_DATE, - CustomFieldTypeChoices.TYPE_INTEGER, - CustomFieldTypeChoices.TYPE_SELECT, -) - class WebhookFilterSet(BaseFilterSet): content_types = ContentTypeFilter() diff --git a/netbox/extras/models/customfields.py b/netbox/extras/models/customfields.py index bc6458039..a889762f9 100644 --- a/netbox/extras/models/customfields.py +++ b/netbox/extras/models/customfields.py @@ -8,6 +8,7 @@ from django.core.validators import RegexValidator, ValidationError from django.db import models from django.urls import reverse from django.utils.safestring import mark_safe +from django_filters import filters from extras.choices import * from extras.utils import FeatureQuery, extras_features @@ -308,6 +309,53 @@ class CustomField(ChangeLoggedModel): return field + def to_filter(self): + """ + Return a django_filters Filter instance suitable for this field type. + """ + kwargs = { + 'field_name': f'custom_field_data__{self.name}' + } + + # Text/URL + if self.type in ( + CustomFieldTypeChoices.TYPE_TEXT, + CustomFieldTypeChoices.TYPE_LONGTEXT, + CustomFieldTypeChoices.TYPE_URL, + ): + filter_class = filters.CharFilter + if self.filter_logic == CustomFieldFilterLogicChoices.FILTER_LOOSE: + kwargs['lookup_expr'] = 'icontains' + + # Integer + elif self.type == CustomFieldTypeChoices.TYPE_INTEGER: + # TODO: Remove dirty hack to change lookup type from Decimal + filter_class = filters.NumberFilter + filter_class.field_class = forms.IntegerField + + # Boolean + elif self.type == CustomFieldTypeChoices.TYPE_BOOLEAN: + filter_class = filters.BooleanFilter + + # Date + elif self.type == CustomFieldTypeChoices.TYPE_DATE: + filter_class = filters.DateFilter + + # Select + elif self.type == CustomFieldTypeChoices.TYPE_SELECT: + filter_class = filters.CharFilter + + # Multiselect + elif self.type == CustomFieldTypeChoices.TYPE_MULTISELECT: + filter_class = filters.CharFilter + kwargs['lookup_expr'] = 'has_key' + + # Unsupported custom field type + else: + return None + + return filter_class(**kwargs) + def validate(self, value): """ Validate a value according to the field's type validation rules. diff --git a/netbox/netbox/filtersets.py b/netbox/netbox/filtersets.py index 879f57bdc..ea0b9eda0 100644 --- a/netbox/netbox/filtersets.py +++ b/netbox/netbox/filtersets.py @@ -7,7 +7,7 @@ from django_filters.utils import get_model_field, resolve_field from dcim.forms import MACAddressField from extras.choices import CustomFieldFilterLogicChoices -from extras.filters import CustomFieldFilter, TagFilter +from extras.filters import TagFilter from extras.models import CustomField from utilities.constants import ( FILTER_CHAR_BASED_LOOKUP_MAP, FILTER_NEGATION_LOOKUP_MAP, FILTER_TREENODE_NEGATION_LOOKUP_MAP, @@ -15,7 +15,6 @@ from utilities.constants import ( ) from utilities import filters - __all__ = ( 'BaseFilterSet', 'ChangeLoggedModelFilterSet', @@ -222,8 +221,10 @@ class PrimaryModelFilterSet(ChangeLoggedModelFilterSet): ) custom_field_filters = {} - for cf in custom_fields: - custom_field_filters[f'cf_{cf.name}'] = CustomFieldFilter(field_name=cf.name, custom_field=cf) + for custom_field in custom_fields: + cf_filter = custom_field.to_filter() + if cf_filter: + custom_field_filters[f'cf_{custom_field.name}'] = cf_filter self.filters.update(custom_field_filters) From 2e0f15b35fbe72ab1f9b890dd7740e6e94d81550 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Thu, 28 Oct 2021 16:09:36 -0400 Subject: [PATCH 110/289] Automatically add additional lookup filters for custom fields --- netbox/extras/models/customfields.py | 11 +++++++++-- netbox/netbox/filtersets.py | 16 +++++++++++++--- 2 files changed, 22 insertions(+), 5 deletions(-) diff --git a/netbox/extras/models/customfields.py b/netbox/extras/models/customfields.py index a889762f9..5f60c6fea 100644 --- a/netbox/extras/models/customfields.py +++ b/netbox/extras/models/customfields.py @@ -309,13 +309,17 @@ class CustomField(ChangeLoggedModel): return field - def to_filter(self): + def to_filter(self, lookup_expr=None): """ Return a django_filters Filter instance suitable for this field type. + + :param lookup_expr: Custom lookup expression (optional) """ kwargs = { 'field_name': f'custom_field_data__{self.name}' } + if lookup_expr is not None: + kwargs['lookup_expr'] = lookup_expr # Text/URL if self.type in ( @@ -354,7 +358,10 @@ class CustomField(ChangeLoggedModel): else: return None - return filter_class(**kwargs) + filter_instance = filter_class(**kwargs) + filter_instance.custom_field = self + + return filter_instance def validate(self, value): """ diff --git a/netbox/netbox/filtersets.py b/netbox/netbox/filtersets.py index ea0b9eda0..fff08693e 100644 --- a/netbox/netbox/filtersets.py +++ b/netbox/netbox/filtersets.py @@ -84,6 +84,7 @@ class BaseFilterSet(django_filters.FilterSet): def _get_filter_lookup_dict(existing_filter): # Choose the lookup expression map based on the filter type if isinstance(existing_filter, ( + django_filters.NumberFilter, filters.MultiValueDateFilter, filters.MultiValueDateTimeFilter, filters.MultiValueNumberFilter, @@ -151,6 +152,10 @@ class BaseFilterSet(django_filters.FilterSet): distinct=existing_filter.distinct, **existing_filter.extra ) + elif hasattr(existing_filter, 'custom_field'): + # Filter is for a custom field + custom_field = existing_filter.custom_field + new_filter = custom_field.to_filter(lookup_expr=lookup_expr) else: # The filter field is listed in Meta.fields so we can safely rely on default behaviour # Will raise FieldLookupError if the lookup is invalid @@ -222,9 +227,14 @@ class PrimaryModelFilterSet(ChangeLoggedModelFilterSet): custom_field_filters = {} for custom_field in custom_fields: - cf_filter = custom_field.to_filter() - if cf_filter: - custom_field_filters[f'cf_{custom_field.name}'] = cf_filter + filter_name = f'cf_{custom_field.name}' + filter_instance = custom_field.to_filter() + if filter_instance: + custom_field_filters[filter_name] = filter_instance + + # Add relevant additional lookups + additional_lookups = self.get_additional_lookups(filter_name, filter_instance) + custom_field_filters.update(additional_lookups) self.filters.update(custom_field_filters) From 1ce9192369f78de6edf388103f08622036b484b2 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Thu, 28 Oct 2021 16:26:31 -0400 Subject: [PATCH 111/289] Move MACAddressField to utilities --- netbox/dcim/forms/__init__.py | 1 - netbox/dcim/forms/fields.py | 25 ------------------------- netbox/netbox/filtersets.py | 2 +- netbox/utilities/filters.py | 2 +- netbox/utilities/forms/fields.py | 24 ++++++++++++++++++++++++ 5 files changed, 26 insertions(+), 28 deletions(-) delete mode 100644 netbox/dcim/forms/fields.py diff --git a/netbox/dcim/forms/__init__.py b/netbox/dcim/forms/__init__.py index 322abff9a..22f0b1204 100644 --- a/netbox/dcim/forms/__init__.py +++ b/netbox/dcim/forms/__init__.py @@ -1,4 +1,3 @@ -from .fields import * from .models import * from .filtersets import * from .object_create import * diff --git a/netbox/dcim/forms/fields.py b/netbox/dcim/forms/fields.py deleted file mode 100644 index 25a20667b..000000000 --- a/netbox/dcim/forms/fields.py +++ /dev/null @@ -1,25 +0,0 @@ -from django import forms -from netaddr import EUI -from netaddr.core import AddrFormatError - -__all__ = ( - 'MACAddressField', -) - - -class MACAddressField(forms.Field): - widget = forms.CharField - default_error_messages = { - 'invalid': 'MAC address must be in EUI-48 format', - } - - def to_python(self, value): - value = super().to_python(value) - - # Validate MAC address format - try: - value = EUI(value.strip()) - except AddrFormatError: - raise forms.ValidationError(self.error_messages['invalid'], code='invalid') - - return value diff --git a/netbox/netbox/filtersets.py b/netbox/netbox/filtersets.py index fff08693e..f42ab064b 100644 --- a/netbox/netbox/filtersets.py +++ b/netbox/netbox/filtersets.py @@ -5,7 +5,6 @@ from django.db import models from django_filters.exceptions import FieldLookupError from django_filters.utils import get_model_field, resolve_field -from dcim.forms import MACAddressField from extras.choices import CustomFieldFilterLogicChoices from extras.filters import TagFilter from extras.models import CustomField @@ -13,6 +12,7 @@ from utilities.constants import ( FILTER_CHAR_BASED_LOOKUP_MAP, FILTER_NEGATION_LOOKUP_MAP, FILTER_TREENODE_NEGATION_LOOKUP_MAP, FILTER_NUMERIC_BASED_LOOKUP_MAP ) +from utilities.forms import MACAddressField from utilities import filters __all__ = ( diff --git a/netbox/utilities/filters.py b/netbox/utilities/filters.py index 8dac65aac..fe4bae3b4 100644 --- a/netbox/utilities/filters.py +++ b/netbox/utilities/filters.py @@ -3,7 +3,7 @@ from django import forms from django.conf import settings from django_filters.constants import EMPTY_VALUES -from dcim.forms import MACAddressField +from utilities.forms import MACAddressField def multivalue_field_factory(field_class): diff --git a/netbox/utilities/forms/fields.py b/netbox/utilities/forms/fields.py index 2561c2e22..332da9ed9 100644 --- a/netbox/utilities/forms/fields.py +++ b/netbox/utilities/forms/fields.py @@ -2,6 +2,7 @@ import csv import json import re from io import StringIO +from netaddr import AddrFormatError, EUI import django_filters from django import forms @@ -38,6 +39,7 @@ __all__ = ( 'ExpandableNameField', 'JSONField', 'LaxURLField', + 'MACAddressField', 'SlugField', 'TagFilterField', ) @@ -129,6 +131,28 @@ class JSONField(_JSONField): return json.dumps(value, sort_keys=True, indent=4) +class MACAddressField(forms.Field): + widget = forms.CharField + default_error_messages = { + 'invalid': 'MAC address must be in EUI-48 format', + } + + def to_python(self, value): + value = super().to_python(value) + + # Validate MAC address format + try: + value = EUI(value.strip()) + except AddrFormatError: + raise forms.ValidationError(self.error_messages['invalid'], code='invalid') + + return value + + +# +# Content type fields +# + class ContentTypeChoiceMixin: def __init__(self, queryset, *args, **kwargs): From 32205045bae2e894886737df78861711be6b9d3e Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Thu, 28 Oct 2021 16:40:51 -0400 Subject: [PATCH 112/289] Use multi-value filters for custom fields --- netbox/extras/models/customfields.py | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/netbox/extras/models/customfields.py b/netbox/extras/models/customfields.py index 5f60c6fea..84ba13263 100644 --- a/netbox/extras/models/customfields.py +++ b/netbox/extras/models/customfields.py @@ -1,6 +1,7 @@ import re from datetime import datetime, date +import django_filters from django import forms from django.contrib.contenttypes.models import ContentType from django.contrib.postgres.fields import ArrayField @@ -8,11 +9,11 @@ from django.core.validators import RegexValidator, ValidationError from django.db import models from django.urls import reverse from django.utils.safestring import mark_safe -from django_filters import filters from extras.choices import * from extras.utils import FeatureQuery, extras_features from netbox.models import ChangeLoggedModel +from utilities import filters from utilities.forms import ( CSVChoiceField, DatePicker, LaxURLField, StaticSelectMultiple, StaticSelect, add_blank_choice, ) @@ -327,31 +328,29 @@ class CustomField(ChangeLoggedModel): CustomFieldTypeChoices.TYPE_LONGTEXT, CustomFieldTypeChoices.TYPE_URL, ): - filter_class = filters.CharFilter + filter_class = filters.MultiValueCharFilter if self.filter_logic == CustomFieldFilterLogicChoices.FILTER_LOOSE: kwargs['lookup_expr'] = 'icontains' # Integer elif self.type == CustomFieldTypeChoices.TYPE_INTEGER: - # TODO: Remove dirty hack to change lookup type from Decimal - filter_class = filters.NumberFilter - filter_class.field_class = forms.IntegerField + filter_class = filters.MultiValueNumberFilter # Boolean elif self.type == CustomFieldTypeChoices.TYPE_BOOLEAN: - filter_class = filters.BooleanFilter + filter_class = django_filters.BooleanFilter # Date elif self.type == CustomFieldTypeChoices.TYPE_DATE: - filter_class = filters.DateFilter + filter_class = filters.MultiValueDateFilter # Select elif self.type == CustomFieldTypeChoices.TYPE_SELECT: - filter_class = filters.CharFilter + filter_class = filters.MultiValueCharFilter # Multiselect elif self.type == CustomFieldTypeChoices.TYPE_MULTISELECT: - filter_class = filters.CharFilter + filter_class = filters.MultiValueCharFilter kwargs['lookup_expr'] = 'has_key' # Unsupported custom field type From 7c147db3241ce9c63ed3b9632c1fb9053baf22e5 Mon Sep 17 00:00:00 2001 From: Daniel Sheppard Date: Thu, 28 Oct 2021 16:08:32 -0500 Subject: [PATCH 113/289] #6732 - Fix test exception in Site form --- netbox/dcim/forms/models.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/netbox/dcim/forms/models.py b/netbox/dcim/forms/models.py index 2d2b28ee0..3f88fee04 100644 --- a/netbox/dcim/forms/models.py +++ b/netbox/dcim/forms/models.py @@ -175,7 +175,8 @@ class SiteForm(BootstrapMixin, TenancyForm, CustomFieldModelForm): def __init__(self, data=None, instance=None, *args, **kwargs): super().__init__(data=data, instance=instance, *args, **kwargs) - self.fields['asns'].initial = self.instance.asns.all().values_list('id', flat=True) + if self.instance and self.instance.pk is not None: + self.fields['asns'].initial = self.instance.asns.all().values_list('id', flat=True) # Hide the ASN field if there is nothing there as this is deprecated if instance is None or \ From 696fe7bc0d70da66e5e109f3dcf47761a1f67109 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Fri, 29 Oct 2021 09:45:48 -0400 Subject: [PATCH 114/289] Add tests for custom field lookups --- netbox/extras/tests/test_customfields.py | 89 +++++++++++++++++------- 1 file changed, 64 insertions(+), 25 deletions(-) diff --git a/netbox/extras/tests/test_customfields.py b/netbox/extras/tests/test_customfields.py index 0b51a4de3..5a9c4257f 100644 --- a/netbox/extras/tests/test_customfields.py +++ b/netbox/extras/tests/test_customfields.py @@ -719,7 +719,7 @@ class CustomFieldModelTest(TestCase): site.clean() -class CustomFieldFilterTest(TestCase): +class CustomFieldModelFilterTest(TestCase): queryset = Site.objects.all() filterset = SiteFilterSet @@ -772,7 +772,7 @@ class CustomFieldFilterTest(TestCase): cf.content_types.set([obj_type]) # Multiselect filtering - cf = CustomField(name='cf9', type=CustomFieldTypeChoices.TYPE_MULTISELECT, choices=['A', 'AA', 'B', 'C']) + cf = CustomField(name='cf9', type=CustomFieldTypeChoices.TYPE_MULTISELECT, choices=['A', 'B', 'C', 'X']) cf.save() cf.content_types.set([obj_type]) @@ -783,49 +783,88 @@ class CustomFieldFilterTest(TestCase): 'cf3': 'foo', 'cf4': 'foo', 'cf5': '2016-06-26', - 'cf6': 'http://foo.example.com/', - 'cf7': 'http://foo.example.com/', + 'cf6': 'http://a.example.com', + 'cf7': 'http://a.example.com', 'cf8': 'Foo', - 'cf9': ['A', 'B'], + 'cf9': ['A', 'X'], }), Site(name='Site 2', slug='site-2', custom_field_data={ 'cf1': 200, - 'cf2': False, + 'cf2': True, 'cf3': 'foobar', 'cf4': 'foobar', 'cf5': '2016-06-27', - 'cf6': 'http://bar.example.com/', - 'cf7': 'http://bar.example.com/', + 'cf6': 'http://b.example.com', + 'cf7': 'http://b.example.com', 'cf8': 'Bar', - 'cf9': ['AA', 'B'], + 'cf9': ['B', 'X'], + }), + Site(name='Site 3', slug='site-3', custom_field_data={ + 'cf1': 300, + 'cf2': False, + 'cf3': 'bar', + 'cf4': 'bar', + 'cf5': '2016-06-28', + 'cf6': 'http://c.example.com', + 'cf7': 'http://c.example.com', + 'cf8': 'Baz', + 'cf9': ['C', 'X'], }), - Site(name='Site 3', slug='site-3'), ]) def test_filter_integer(self): - self.assertEqual(self.filterset({'cf_cf1': 100}, self.queryset).qs.count(), 1) + self.assertEqual(self.filterset({'cf_cf1': [100, 200]}, self.queryset).qs.count(), 2) + self.assertEqual(self.filterset({'cf_cf1__n': [200]}, self.queryset).qs.count(), 2) + self.assertEqual(self.filterset({'cf_cf1__gt': [200]}, self.queryset).qs.count(), 1) + self.assertEqual(self.filterset({'cf_cf1__gte': [200]}, self.queryset).qs.count(), 2) + self.assertEqual(self.filterset({'cf_cf1__lt': [200]}, self.queryset).qs.count(), 1) + self.assertEqual(self.filterset({'cf_cf1__lte': [200]}, self.queryset).qs.count(), 2) def test_filter_boolean(self): - self.assertEqual(self.filterset({'cf_cf2': True}, self.queryset).qs.count(), 1) + self.assertEqual(self.filterset({'cf_cf2': True}, self.queryset).qs.count(), 2) self.assertEqual(self.filterset({'cf_cf2': False}, self.queryset).qs.count(), 1) - def test_filter_text(self): - self.assertEqual(self.filterset({'cf_cf3': 'foo'}, self.queryset).qs.count(), 1) - self.assertEqual(self.filterset({'cf_cf4': 'foo'}, self.queryset).qs.count(), 2) + def test_filter_text_strict(self): + self.assertEqual(self.filterset({'cf_cf3': ['foo']}, self.queryset).qs.count(), 1) + self.assertEqual(self.filterset({'cf_cf3__n': ['foo']}, self.queryset).qs.count(), 2) + self.assertEqual(self.filterset({'cf_cf3__ic': ['foo']}, self.queryset).qs.count(), 2) + self.assertEqual(self.filterset({'cf_cf3__nic': ['foo']}, self.queryset).qs.count(), 1) + self.assertEqual(self.filterset({'cf_cf3__isw': ['foo']}, self.queryset).qs.count(), 2) + self.assertEqual(self.filterset({'cf_cf3__nisw': ['foo']}, self.queryset).qs.count(), 1) + self.assertEqual(self.filterset({'cf_cf3__iew': ['bar']}, self.queryset).qs.count(), 2) + self.assertEqual(self.filterset({'cf_cf3__niew': ['bar']}, self.queryset).qs.count(), 1) + self.assertEqual(self.filterset({'cf_cf3__ie': ['FOO']}, self.queryset).qs.count(), 1) + self.assertEqual(self.filterset({'cf_cf3__nie': ['FOO']}, self.queryset).qs.count(), 2) + + def test_filter_text_loose(self): + self.assertEqual(self.filterset({'cf_cf4': ['foo']}, self.queryset).qs.count(), 2) def test_filter_date(self): - self.assertEqual(self.filterset({'cf_cf5': '2016-06-26'}, self.queryset).qs.count(), 1) + self.assertEqual(self.filterset({'cf_cf5': ['2016-06-26', '2016-06-27']}, self.queryset).qs.count(), 2) + self.assertEqual(self.filterset({'cf_cf5__n': ['2016-06-27']}, self.queryset).qs.count(), 2) + self.assertEqual(self.filterset({'cf_cf5__gt': ['2016-06-27']}, self.queryset).qs.count(), 1) + self.assertEqual(self.filterset({'cf_cf5__gte': ['2016-06-27']}, self.queryset).qs.count(), 2) + self.assertEqual(self.filterset({'cf_cf5__lt': ['2016-06-27']}, self.queryset).qs.count(), 1) + self.assertEqual(self.filterset({'cf_cf5__lte': ['2016-06-27']}, self.queryset).qs.count(), 2) - def test_filter_url(self): - self.assertEqual(self.filterset({'cf_cf6': 'http://foo.example.com/'}, self.queryset).qs.count(), 1) - self.assertEqual(self.filterset({'cf_cf7': 'example.com'}, self.queryset).qs.count(), 2) + def test_filter_url_strict(self): + self.assertEqual(self.filterset({'cf_cf6': ['http://a.example.com', 'http://b.example.com']}, self.queryset).qs.count(), 2) + self.assertEqual(self.filterset({'cf_cf6__n': ['http://b.example.com']}, self.queryset).qs.count(), 2) + self.assertEqual(self.filterset({'cf_cf6__ic': ['b']}, self.queryset).qs.count(), 1) + self.assertEqual(self.filterset({'cf_cf6__nic': ['b']}, self.queryset).qs.count(), 2) + self.assertEqual(self.filterset({'cf_cf6__isw': ['http://']}, self.queryset).qs.count(), 3) + self.assertEqual(self.filterset({'cf_cf6__nisw': ['http://']}, self.queryset).qs.count(), 0) + self.assertEqual(self.filterset({'cf_cf6__iew': ['.com']}, self.queryset).qs.count(), 3) + self.assertEqual(self.filterset({'cf_cf6__niew': ['.com']}, self.queryset).qs.count(), 0) + self.assertEqual(self.filterset({'cf_cf6__ie': ['HTTP://A.EXAMPLE.COM']}, self.queryset).qs.count(), 1) + self.assertEqual(self.filterset({'cf_cf6__nie': ['HTTP://A.EXAMPLE.COM']}, self.queryset).qs.count(), 2) + + def test_filter_url_loose(self): + self.assertEqual(self.filterset({'cf_cf7': ['example.com']}, self.queryset).qs.count(), 3) def test_filter_select(self): - self.assertEqual(self.filterset({'cf_cf8': 'Foo'}, self.queryset).qs.count(), 1) - self.assertEqual(self.filterset({'cf_cf8': 'Bar'}, self.queryset).qs.count(), 1) - self.assertEqual(self.filterset({'cf_cf8': 'Baz'}, self.queryset).qs.count(), 0) + self.assertEqual(self.filterset({'cf_cf8': ['Foo', 'Bar']}, self.queryset).qs.count(), 2) def test_filter_multiselect(self): - self.assertEqual(self.filterset({'cf_cf9': 'A'}, self.queryset).qs.count(), 1) - self.assertEqual(self.filterset({'cf_cf9': 'B'}, self.queryset).qs.count(), 2) - self.assertEqual(self.filterset({'cf_cf9': 'C'}, self.queryset).qs.count(), 0) + self.assertEqual(self.filterset({'cf_cf9': ['A', 'B']}, self.queryset).qs.count(), 2) + self.assertEqual(self.filterset({'cf_cf9': ['X']}, self.queryset).qs.count(), 3) From 4099dd3a052c0c26970be98cfb7d56fc04dc2939 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Fri, 29 Oct 2021 11:23:56 -0400 Subject: [PATCH 115/289] Closes #6615: Add filter lookups for custom fields --- docs/release-notes/version-3.1.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/release-notes/version-3.1.md b/docs/release-notes/version-3.1.md index f489f0966..d53f677d9 100644 --- a/docs/release-notes/version-3.1.md +++ b/docs/release-notes/version-3.1.md @@ -63,6 +63,7 @@ Multiple interfaces can be bridged to a single virtual interface to effect a bri * [#1943](https://github.com/netbox-community/netbox/issues/1943) - Relax uniqueness constraint on cluster names * [#3839](https://github.com/netbox-community/netbox/issues/3839) - Add `airflow` field for devices types and devices * [#6497](https://github.com/netbox-community/netbox/issues/6497) - Extend tag support to organizational models +* [#6615](https://github.com/netbox-community/netbox/issues/6615) - Add filter lookups for custom fields * [#6711](https://github.com/netbox-community/netbox/issues/6711) - Add `longtext` custom field type with Markdown support * [#6715](https://github.com/netbox-community/netbox/issues/6715) - Add tenant assignment for cables * [#6874](https://github.com/netbox-community/netbox/issues/6874) - Add tenant assignment for locations From d3364ef4d1c7d8fc1ae8e2aa92aa23f84f970d08 Mon Sep 17 00:00:00 2001 From: Daniel Sheppard Date: Fri, 29 Oct 2021 14:15:37 -0500 Subject: [PATCH 116/289] #6732 - Restore resolve_field to the filterset --- netbox/netbox/filtersets.py | 1 + 1 file changed, 1 insertion(+) diff --git a/netbox/netbox/filtersets.py b/netbox/netbox/filtersets.py index 2240ce58d..91108a318 100644 --- a/netbox/netbox/filtersets.py +++ b/netbox/netbox/filtersets.py @@ -153,6 +153,7 @@ class BaseFilterSet(django_filters.FilterSet): # The filter field has been explicity defined on the filterset class so we must manually # create the new filter with the same type because there is no guarantee the defined type # is the same as the default type for the field + resolve_field(field, lookup_expr) new_filter = type(existing_filter)( field_name=field_name, lookup_expr=lookup_expr, From 43b983054ae1eecc2d918e15e6b16fd74122395c Mon Sep 17 00:00:00 2001 From: Daniel Sheppard Date: Fri, 29 Oct 2021 14:26:19 -0500 Subject: [PATCH 117/289] #6732 - Corrected model field definitions --- netbox/ipam/migrations/0052_asn_model.py | 2 +- netbox/ipam/models/ip.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/netbox/ipam/migrations/0052_asn_model.py b/netbox/ipam/migrations/0052_asn_model.py index 4adafd411..1a69f0e42 100644 --- a/netbox/ipam/migrations/0052_asn_model.py +++ b/netbox/ipam/migrations/0052_asn_model.py @@ -24,7 +24,7 @@ class Migration(migrations.Migration): ('last_updated', models.DateTimeField(auto_now=True, null=True)), ('custom_field_data', models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder)), ('id', models.BigAutoField(primary_key=True, serialize=False)), - ('asn', dcim.fields.ASNField(blank=True, null=True, unique=True)), + ('asn', dcim.fields.ASNField(blank=False, null=False, unique=True)), ('description', models.CharField(blank=True, max_length=200)), ('rir', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='asns', to='ipam.rir')), ('sites', models.ManyToManyField(blank=True, related_name='asns', to='dcim.Site')), diff --git a/netbox/ipam/models/ip.py b/netbox/ipam/models/ip.py index 03fdbeae5..d61ad4c25 100644 --- a/netbox/ipam/models/ip.py +++ b/netbox/ipam/models/ip.py @@ -75,8 +75,8 @@ class ASN(PrimaryModel): asn = ASNField( unique=True, - blank=True, - null=True, + blank=False, + null=False, verbose_name='ASN', help_text='32-bit autonomous system number' ) From a30e7bf34f07dcf328907f6040ecf305a2829262 Mon Sep 17 00:00:00 2001 From: Daniel Sheppard Date: Fri, 29 Oct 2021 14:28:13 -0500 Subject: [PATCH 118/289] #6732 - Add ASN field back to bulk edit --- netbox/dcim/forms/bulk_edit.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/netbox/dcim/forms/bulk_edit.py b/netbox/dcim/forms/bulk_edit.py index 045dbf737..57c74cf84 100644 --- a/netbox/dcim/forms/bulk_edit.py +++ b/netbox/dcim/forms/bulk_edit.py @@ -7,6 +7,7 @@ from dcim.choices import * from dcim.constants import * from dcim.models import * from extras.forms import AddRemoveTagsForm, CustomFieldModelBulkEditForm +from ipam.constants import BGP_ASN_MIN, BGP_ASN_MAX from ipam.models import VLAN, ASN from tenancy.models import Tenant from utilities.forms import ( @@ -110,6 +111,12 @@ class SiteBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldModelBulkEd queryset=Tenant.objects.all(), required=False ) + asn = forms.IntegerField( + min_value=BGP_ASN_MIN, + max_value=BGP_ASN_MAX, + required=False, + label='ASN' + ) asns = DynamicModelChoiceField( queryset=ASN.objects.all(), label=_('ASNs'), @@ -127,7 +134,7 @@ class SiteBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldModelBulkEd class Meta: nullable_fields = [ - 'region', 'group', 'tenant', 'asns', 'description', 'time_zone', + 'region', 'group', 'tenant', 'asn', 'asns', 'description', 'time_zone', ] From 3991115ae57f0866c81b451a2484ca652580c5bc Mon Sep 17 00:00:00 2001 From: Daniel Sheppard Date: Fri, 29 Oct 2021 14:54:55 -0500 Subject: [PATCH 119/289] #6732 - Fix imports and other small items --- netbox/dcim/graphql/types.py | 4 ++-- netbox/dcim/tests/test_filtersets.py | 2 +- netbox/dcim/tests/test_views.py | 2 +- netbox/dcim/views.py | 2 +- netbox/ipam/api/serializers.py | 2 -- netbox/ipam/api/views.py | 1 - netbox/ipam/filtersets.py | 2 -- netbox/ipam/forms/bulk_import.py | 3 --- netbox/ipam/graphql/scalars.py | 5 ----- netbox/ipam/graphql/types.py | 4 ++-- netbox/ipam/tables/ip.py | 4 +--- 11 files changed, 8 insertions(+), 23 deletions(-) delete mode 100644 netbox/ipam/graphql/scalars.py diff --git a/netbox/dcim/graphql/types.py b/netbox/dcim/graphql/types.py index 8b9bd76ef..8ce10979e 100644 --- a/netbox/dcim/graphql/types.py +++ b/netbox/dcim/graphql/types.py @@ -5,7 +5,7 @@ from extras.graphql.mixins import ( ChangelogMixin, ConfigContextMixin, CustomFieldsMixin, ImageAttachmentsMixin, TagsMixin, ) from ipam.graphql.mixins import IPAddressesMixin, VLANGroupsMixin -from ipam.graphql.scalars import ASNField +from netbox.graphql.scalars import BigInt from netbox.graphql.types import BaseObjectType, OrganizationalObjectType, PrimaryObjectType __all__ = ( @@ -383,7 +383,7 @@ class RegionType(VLANGroupsMixin, OrganizationalObjectType): class SiteType(VLANGroupsMixin, ImageAttachmentsMixin, PrimaryObjectType): - asn = graphene.Field(ASNField) + asn = graphene.Field(BigInt) class Meta: model = models.Site diff --git a/netbox/dcim/tests/test_filtersets.py b/netbox/dcim/tests/test_filtersets.py index eb37f061a..1b27a43e3 100644 --- a/netbox/dcim/tests/test_filtersets.py +++ b/netbox/dcim/tests/test_filtersets.py @@ -4,7 +4,7 @@ from django.test import TestCase from dcim.choices import * from dcim.filtersets import * from dcim.models import * -from ipam.models import IPAddress, RIR, ASN +from ipam.models import ASN, IPAddress, RIR from tenancy.models import Tenant, TenantGroup from utilities.choices import ColorChoices from utilities.testing import ChangeLoggedFilterSetTests diff --git a/netbox/dcim/tests/test_views.py b/netbox/dcim/tests/test_views.py index 9c446fc8b..dc22b18a0 100644 --- a/netbox/dcim/tests/test_views.py +++ b/netbox/dcim/tests/test_views.py @@ -11,7 +11,7 @@ from netaddr import EUI from dcim.choices import * from dcim.constants import * from dcim.models import * -from ipam.models import VLAN, ASN, RIR +from ipam.models import ASN, VLAN, RIR from tenancy.models import Tenant from utilities.testing import ViewTestCases, create_tags, create_test_device diff --git a/netbox/dcim/views.py b/netbox/dcim/views.py index e188ecfe5..a05f62621 100644 --- a/netbox/dcim/views.py +++ b/netbox/dcim/views.py @@ -14,7 +14,7 @@ from django.views.generic import View from circuits.models import Circuit from extras.views import ObjectChangeLogView, ObjectConfigContextView, ObjectJournalView -from ipam.models import IPAddress, Prefix, Service, VLAN, ASN +from ipam.models import ASN, IPAddress, Prefix, Service, VLAN from ipam.tables import InterfaceIPAddressTable, InterfaceVLANTable from netbox.views import generic from utilities.forms import ConfirmationForm diff --git a/netbox/ipam/api/serializers.py b/netbox/ipam/api/serializers.py index 28ce1575e..4b68c0c1b 100644 --- a/netbox/ipam/api/serializers.py +++ b/netbox/ipam/api/serializers.py @@ -19,8 +19,6 @@ from .nested_serializers import * # # ASNs # -from ..models import ASN - class ASNSerializer(PrimaryModelSerializer): url = serializers.HyperlinkedIdentityField(view_name='ipam-api:asn-detail') diff --git a/netbox/ipam/api/views.py b/netbox/ipam/api/views.py index e066e0f57..274ce29e8 100644 --- a/netbox/ipam/api/views.py +++ b/netbox/ipam/api/views.py @@ -7,7 +7,6 @@ from ipam.models import * from netbox.api.views import ModelViewSet from utilities.utils import count_related from . import mixins, serializers -from ..models import ASN class IPAMRootView(APIRootView): diff --git a/netbox/ipam/filtersets.py b/netbox/ipam/filtersets.py index 81727edd1..1dd8f97d6 100644 --- a/netbox/ipam/filtersets.py +++ b/netbox/ipam/filtersets.py @@ -33,8 +33,6 @@ __all__ = ( 'VRFFilterSet', ) -from .models import ASN - class VRFFilterSet(PrimaryModelFilterSet, TenancyFilterSet): q = django_filters.CharFilter( diff --git a/netbox/ipam/forms/bulk_import.py b/netbox/ipam/forms/bulk_import.py index 41604f0e4..1d18e94c7 100644 --- a/netbox/ipam/forms/bulk_import.py +++ b/netbox/ipam/forms/bulk_import.py @@ -1,13 +1,11 @@ from django import forms from django.contrib.contenttypes.models import ContentType -from django.forms import IntegerField from dcim.models import Device, Interface, Site from extras.forms import CustomFieldModelCSVForm from ipam.choices import * from ipam.constants import * from ipam.models import * -from ipam.models import ASN from tenancy.models import Tenant from utilities.forms import CSVChoiceField, CSVContentTypeField, CSVModelChoiceField, SlugField from virtualization.models import VirtualMachine, VMInterface @@ -84,7 +82,6 @@ class AggregateCSVForm(CustomFieldModelCSVForm): class ASNCSVForm(CustomFieldModelCSVForm): - asn = IntegerField() rir = CSVModelChoiceField( queryset=RIR.objects.all(), to_field_name='name', diff --git a/netbox/ipam/graphql/scalars.py b/netbox/ipam/graphql/scalars.py deleted file mode 100644 index d59375ba3..000000000 --- a/netbox/ipam/graphql/scalars.py +++ /dev/null @@ -1,5 +0,0 @@ -from netbox.graphql.scalars import BigInt - - -class ASNField(BigInt): - pass diff --git a/netbox/ipam/graphql/types.py b/netbox/ipam/graphql/types.py index 71c7fd24e..3ba27fcf0 100644 --- a/netbox/ipam/graphql/types.py +++ b/netbox/ipam/graphql/types.py @@ -1,7 +1,7 @@ import graphene from ipam import filtersets, models -from ipam.graphql.scalars import ASNField +from netbox.graphql.scalars import BigInt from netbox.graphql.types import OrganizationalObjectType, PrimaryObjectType __all__ = ( @@ -21,7 +21,7 @@ __all__ = ( class ASNType(PrimaryObjectType): - asn = graphene.Field(ASNField) + asn = graphene.Field(BigInt) class Meta: model = models.ASN diff --git a/netbox/ipam/tables/ip.py b/netbox/ipam/tables/ip.py index 95376aad6..32937d17e 100644 --- a/netbox/ipam/tables/ip.py +++ b/netbox/ipam/tables/ip.py @@ -2,7 +2,6 @@ import django_tables2 as tables from django.utils.safestring import mark_safe from django_tables2.utils import Accessor -from ipam.models import ASN from tenancy.tables import TenantColumn from utilities.tables import ( BaseTable, BooleanColumn, ButtonsColumn, ChoiceFieldColumn, LinkedCountColumn, TagColumn, @@ -99,7 +98,7 @@ class RIRTable(BaseTable): # -# RIRs +# ASNs # class ASNTable(BaseTable): @@ -112,7 +111,6 @@ class ASNTable(BaseTable): url_params={'asn_id': 'pk'}, verbose_name='Sites' ) - actions = ButtonsColumn(ASN) class Meta(BaseTable.Meta): From 87e07e731d51d50519f53edb26fa533520ceb2c2 Mon Sep 17 00:00:00 2001 From: Daniel Sheppard Date: Fri, 29 Oct 2021 14:56:58 -0500 Subject: [PATCH 120/289] #6732 - Removed ASN field hiding --- netbox/dcim/forms/models.py | 17 +---------------- 1 file changed, 1 insertion(+), 16 deletions(-) diff --git a/netbox/dcim/forms/models.py b/netbox/dcim/forms/models.py index 3f88fee04..a9fdb3652 100644 --- a/netbox/dcim/forms/models.py +++ b/netbox/dcim/forms/models.py @@ -162,7 +162,7 @@ class SiteForm(BootstrapMixin, TenancyForm, CustomFieldModelForm): } help_texts = { 'name': "Full name of the site", - 'asn': "BGP autonomous system number. This field is depreciated in favour of the many-to-many field for ASNs", + 'asn': "BGP autonomous system number. This field is depreciated in favour of the ASN model", 'facility': "Data center provider and facility (e.g. Equinix NY7)", 'time_zone': "Local time zone", 'description': "Short description (will appear in sites list)", @@ -178,21 +178,6 @@ class SiteForm(BootstrapMixin, TenancyForm, CustomFieldModelForm): if self.instance and self.instance.pk is not None: self.fields['asns'].initial = self.instance.asns.all().values_list('id', flat=True) - # Hide the ASN field if there is nothing there as this is deprecated - if instance is None or \ - (instance and (instance.asn is None or instance.asn == '')) or \ - (data and (data.get('asn') is None or instance.get('asn')) == ''): - if 'asn' in self.Meta.fieldsets[0][1]: - site_fieldset = list(self.Meta.fieldsets[0][1]) - index = site_fieldset.index('asn') - site_fieldset.pop(index) - self.Meta.fieldsets = ( - ('Site', tuple(site_fieldset)), - self.Meta.fieldsets[1], - self.Meta.fieldsets[2], - ) - del self.fields['asn'] - def save(self, *args, **kwargs): instance = super().save(*args, **kwargs) instance.asns.set(self.cleaned_data['asns']) From 339776c139904671fcb745f527f780dc35093f2f Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Fri, 29 Oct 2021 17:06:14 -0400 Subject: [PATCH 121/289] Initial work on SSO support (WIP) --- base_requirements.txt | 8 ++++++++ netbox/netbox/middleware.py | 11 +---------- netbox/netbox/settings.py | 25 ++++++++++++++++++++++++- netbox/netbox/urls.py | 1 + netbox/templates/login.html | 8 ++++++++ netbox/users/views.py | 8 ++++++-- requirements.txt | 2 ++ 7 files changed, 50 insertions(+), 13 deletions(-) diff --git a/base_requirements.txt b/base_requirements.txt index 11ddac634..7295607f3 100644 --- a/base_requirements.txt +++ b/base_requirements.txt @@ -102,6 +102,14 @@ PyYAML # https://github.com/andymccurdy/redis-py redis +# Social authentication framework +# https://github.com/python-social-auth/social-core +social-auth-core[all] + +# Django app for social-auth-core +# https://github.com/python-social-auth/social-app-django +social-auth-app-django + # SVG image rendering (used for rack elevations) # https://github.com/mozman/svgwrite svgwrite diff --git a/netbox/netbox/middleware.py b/netbox/netbox/middleware.py index 8d03c6aee..959b6b525 100644 --- a/netbox/netbox/middleware.py +++ b/netbox/netbox/middleware.py @@ -8,7 +8,6 @@ from django.contrib import auth from django.core.exceptions import ImproperlyConfigured from django.db import ProgrammingError from django.http import Http404, HttpResponseRedirect -from django.urls import reverse from extras.context_managers import change_logging from netbox.config import clear_config @@ -20,23 +19,15 @@ class LoginRequiredMiddleware: """ If LOGIN_REQUIRED is True, redirect all non-authenticated users to the login page. """ - def __init__(self, get_response): self.get_response = get_response def __call__(self, request): # Redirect unauthenticated requests (except those exempted) to the login page if LOGIN_REQUIRED is true if settings.LOGIN_REQUIRED and not request.user.is_authenticated: - # Determine exempt paths - exempt_paths = [ - reverse('api-root'), - reverse('graphql'), - ] - if settings.METRICS_ENABLED: - exempt_paths.append(reverse('prometheus-django-metrics')) # Redirect unauthenticated requests - if not request.path_info.startswith(tuple(exempt_paths)) and request.path_info != settings.LOGIN_URL: + if not request.path_info.startswith(settings.EXEMPT_PATHS): login_url = f'{settings.LOGIN_URL}?next={parse.quote(request.get_full_path_info())}' return HttpResponseRedirect(login_url) diff --git a/netbox/netbox/settings.py b/netbox/netbox/settings.py index 45475ef9a..6efd4d375 100644 --- a/netbox/netbox/settings.py +++ b/netbox/netbox/settings.py @@ -305,6 +305,7 @@ INSTALLED_APPS = [ 'graphene_django', 'mptt', 'rest_framework', + 'social_django', 'taggit', 'timezone_field', 'circuits', @@ -400,7 +401,8 @@ MESSAGE_TAGS = { } # Authentication URLs -LOGIN_URL = '/{}login/'.format(BASE_PATH) +LOGIN_URL = f'/{BASE_PATH}login/' +LOGIN_REDIRECT_URL = f'/{BASE_PATH}' CSRF_TRUSTED_ORIGINS = ALLOWED_HOSTS @@ -414,6 +416,27 @@ EXEMPT_EXCLUDE_MODELS = ( ('users', 'objectpermission'), ) +# All URLs starting with a string listed here are exempt from login enforcement +EXEMPT_PATHS = ( + f'/{BASE_PATH}api/', + f'/{BASE_PATH}graphql/', + f'/{BASE_PATH}login/', + f'/{BASE_PATH}oauth/', + f'/{BASE_PATH}metrics/', +) + + +# +# Django social auth +# + +# Load all SOCIAL_AUTH_* settings from the user configuration +for param in dir(configuration): + if param.startswith('SOCIAL_AUTH_'): + globals()[param] = getattr(configuration, param) + +SOCIAL_AUTH_JSONFIELD_ENABLED = True + # # Django Prometheus diff --git a/netbox/netbox/urls.py b/netbox/netbox/urls.py index 4e0a2e2c6..e76efe0fe 100644 --- a/netbox/netbox/urls.py +++ b/netbox/netbox/urls.py @@ -39,6 +39,7 @@ _patterns = [ # Login/logout path('login/', LoginView.as_view(), name='login'), path('logout/', LogoutView.as_view(), name='logout'), + path('oauth/', include('social_django.urls', namespace='social')), # Apps path('circuits/', include('circuits.urls')), diff --git a/netbox/templates/login.html b/netbox/templates/login.html index a01d75422..b7f466c16 100644 --- a/netbox/templates/login.html +++ b/netbox/templates/login.html @@ -39,6 +39,14 @@ + {# TODO: Improve the design & layout #} + {% if auth_backends %} +
Or use an SSO provider:
+ {% for name, backend in auth_backends.items %} +

{{ name }}

+ {% endfor %} + {% endif %} + {# Login form errors #} {% if form.non_field_errors %} {% endif %} +
+
NHRP Groups
+
+ + + + + + + + + {% for assignment in object.fhrp_group_assignments.all %} + + + + + {% empty %} + + + + {% endfor %} + +
GroupPriority
+ {{ assignment.group }} + + {{ assignment.priority }} +
None
+
+ {% if perms.ipam.add_fhrpgroupassignment %} + + {% endif %} +
{% plugin_right_page object %} diff --git a/netbox/templates/inc/panels/nhrp_groups.html b/netbox/templates/inc/panels/nhrp_groups.html new file mode 100644 index 000000000..223354441 --- /dev/null +++ b/netbox/templates/inc/panels/nhrp_groups.html @@ -0,0 +1,49 @@ +{% load helpers %} + +
+
Contacts
+
+ {% with fhrp_groups=object.fhrp_group_assignments.all %} + {% if contacts.exists %} + + + + + + + + {% for contact in contacts %} + + + + + + + {% endfor %} +
ProtocolGroup IDPriority
+ {{ contact.contact }} + {{ contact.role|placeholder }}{{ contact.get_priority_display|placeholder }} + {% if perms.tenancy.change_contactassignment %} + + + + {% endif %} + {% if perms.tenancy.delete_contactassignment %} + + + + {% endif %} +
+ {% else %} +
None
+ {% endif %} + {% endwith %} +
+ {% if perms.tenancy.add_contactassignment %} + + {% endif %} +
diff --git a/netbox/templates/ipam/fhrpgroup.html b/netbox/templates/ipam/fhrpgroup.html new file mode 100644 index 000000000..c4e3eadc3 --- /dev/null +++ b/netbox/templates/ipam/fhrpgroup.html @@ -0,0 +1,82 @@ +{% extends 'generic/object.html' %} +{% load helpers %} +{% load plugins %} +{% load render_table from django_tables2 %} + +{% block breadcrumbs %} + {{ block.super }} + +{% endblock breadcrumbs %} + +{% block content %} +
+
+
+
FHRP Group
+
+ + + + + + + + + + + + + + + + + +
Protocol{{ object.get_protocol_display }}
Group ID{{ object.group_id }}
Description{{ object.description|placeholder }}
Members{{ member_count }}
+
+
+ {% include 'inc/panels/tags.html' %} + {% plugin_left_page object %} +
+
+
+
Authentication
+
+ + + + + + + + + +
Authentication Type{{ object.get_auth_type_display|placeholder }}
Authentication Key{{ object.auth_key|placeholder }}
+
+
+ {% include 'inc/panels/custom_fields.html' %} + {% plugin_right_page object %} +
+
+
+
+
+
IP Addresses
+
+ {% if ipaddress_table.rows %} + {% render_table ipaddress_table 'inc/table.html' %} + {% else %} +
None
+ {% endif %} +
+
+
+
Members
+
+ {% include 'inc/table.html' with table=members_table %} +
+
+ {% include 'inc/paginator.html' with paginator=members_table.paginator page=members_table.page %} + {% plugin_full_width_page object %} +
+
+{% endblock %} diff --git a/netbox/templates/ipam/ipaddress.html b/netbox/templates/ipam/ipaddress.html index 31782bdd7..c39f4398a 100644 --- a/netbox/templates/ipam/ipaddress.html +++ b/netbox/templates/ipam/ipaddress.html @@ -73,12 +73,14 @@ Assignment - {% if object.assigned_object %} - {{ object.assigned_object.parent_object }} / - {{ object.assigned_object }} - {% else %} - + {% if object.assigned_object %} + {% if object.assigned_object.parent_object %} + {{ object.assigned_object.parent_object }} / {% endif %} + {{ object.assigned_object }} + {% else %} + + {% endif %} diff --git a/netbox/virtualization/models.py b/netbox/virtualization/models.py index db2404546..3567b86c5 100644 --- a/netbox/virtualization/models.py +++ b/netbox/virtualization/models.py @@ -398,6 +398,12 @@ class VMInterface(PrimaryModel, BaseInterface): object_id_field='assigned_object_id', related_query_name='vminterface' ) + fhrp_group_assignments = GenericRelation( + to='ipam.FHRPGroupAssignment', + content_type_field='content_type', + object_id_field='object_id', + related_query_name='vminterface' + ) objects = RestrictedQuerySet.as_manager() diff --git a/netbox/virtualization/views.py b/netbox/virtualization/views.py index 2294d2c38..5cb4f133a 100644 --- a/netbox/virtualization/views.py +++ b/netbox/virtualization/views.py @@ -8,7 +8,7 @@ from dcim.models import Device from dcim.tables import DeviceTable from extras.views import ObjectConfigContextView from ipam.models import IPAddress, Service -from ipam.tables import InterfaceIPAddressTable, InterfaceVLANTable +from ipam.tables import AssignedIPAddressesTable, InterfaceVLANTable from netbox.views import generic from utilities.tables import paginate_table from utilities.utils import count_related @@ -421,7 +421,7 @@ class VMInterfaceView(generic.ObjectView): def get_extra_context(self, request, instance): # Get assigned IP addresses - ipaddress_table = InterfaceIPAddressTable( + ipaddress_table = AssignedIPAddressesTable( data=instance.ip_addresses.restrict(request.user, 'view').prefetch_related('vrf', 'tenant'), orderable=False ) From f48d7aedcee7a85d8c197152a63e80839151ff29 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Tue, 2 Nov 2021 09:05:56 -0400 Subject: [PATCH 125/289] Enable filtering FHRP groups by related IP addresses --- netbox/ipam/filtersets.py | 24 ++++++++++ netbox/ipam/forms/models.py | 7 +++ netbox/ipam/migrations/0052_fhrpgroup.py | 2 +- netbox/ipam/models/fhrp.py | 1 + netbox/ipam/tables/fhrp.py | 18 +++++--- netbox/ipam/views.py | 8 ++-- netbox/templates/dcim/interface.html | 37 +-------------- netbox/templates/ipam/fhrpgroup.html | 8 ++-- .../ipam/inc/panels/fhrp_groups.html | 45 +++++++++++++++++++ .../templates/virtualization/vminterface.html | 3 +- 10 files changed, 101 insertions(+), 52 deletions(-) create mode 100644 netbox/templates/ipam/inc/panels/fhrp_groups.html diff --git a/netbox/ipam/filtersets.py b/netbox/ipam/filtersets.py index 89bb61c02..5d385c7ef 100644 --- a/netbox/ipam/filtersets.py +++ b/netbox/ipam/filtersets.py @@ -624,6 +624,10 @@ class FHRPGroupFilterSet(PrimaryModelFilterSet): auth_type = django_filters.MultipleChoiceFilter( choices=FHRPGroupAuthTypeChoices ) + related_ip = django_filters.ModelMultipleChoiceFilter( + queryset=IPAddress.objects.all(), + method='filter_related_ip' + ) tag = TagFilter() class Meta: @@ -637,6 +641,26 @@ class FHRPGroupFilterSet(PrimaryModelFilterSet): Q(description__icontains=value) ) + def filter_related_ip(self, queryset, name, value): + """ + Filter by VRF & prefix of assigned IP addresses. + """ + ip_filter = Q() + for ipaddress in value: + if ipaddress.vrf: + q = Q( + ip_addresses__address__net_contained_or_equal=ipaddress.address, + ip_addresses__vrf=ipaddress.vrf + ) + else: + q = Q( + ip_addresses__address__net_contained_or_equal=ipaddress.address, + ip_addresses__vrf__isnull=True + ) + ip_filter |= q + + return queryset.filter(ip_filter) + class FHRPGroupAssignmentFilterSet(ChangeLoggedModelFilterSet): content_type = ContentTypeFilter() diff --git a/netbox/ipam/forms/models.py b/netbox/ipam/forms/models.py index 36a078071..c605a7b7c 100644 --- a/netbox/ipam/forms/models.py +++ b/netbox/ipam/forms/models.py @@ -546,6 +546,13 @@ class FHRPGroupAssignmentForm(BootstrapMixin, forms.ModelForm): model = FHRPGroupAssignment fields = ('group', 'priority') + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + + ipaddresses = self.instance.object.ip_addresses.all() + for ipaddress in ipaddresses: + self.fields['group'].widget.add_query_param('related_ip', ipaddress.pk) + class VLANGroupForm(BootstrapMixin, CustomFieldModelForm): scope_type = ContentTypeChoiceField( diff --git a/netbox/ipam/migrations/0052_fhrpgroup.py b/netbox/ipam/migrations/0052_fhrpgroup.py index f61191a7e..17d4ec9ca 100644 --- a/netbox/ipam/migrations/0052_fhrpgroup.py +++ b/netbox/ipam/migrations/0052_fhrpgroup.py @@ -44,7 +44,7 @@ class Migration(migrations.Migration): ('last_updated', models.DateTimeField(auto_now=True, null=True)), ('id', models.BigAutoField(primary_key=True, serialize=False)), ('object_id', models.PositiveIntegerField()), - ('priority', models.PositiveSmallIntegerField(blank=True)), + ('priority', models.PositiveSmallIntegerField(blank=True, null=True)), ('content_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='contenttypes.contenttype')), ('group', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='ipam.fhrpgroup')), ], diff --git a/netbox/ipam/models/fhrp.py b/netbox/ipam/models/fhrp.py index c108032b4..01ab6b5f8 100644 --- a/netbox/ipam/models/fhrp.py +++ b/netbox/ipam/models/fhrp.py @@ -82,6 +82,7 @@ class FHRPGroupAssignment(ChangeLoggedModel): ) priority = models.PositiveSmallIntegerField( blank=True, + null=True ) objects = RestrictedQuerySet.as_manager() diff --git a/netbox/ipam/tables/fhrp.py b/netbox/ipam/tables/fhrp.py index e3411cd7e..8aae4bba7 100644 --- a/netbox/ipam/tables/fhrp.py +++ b/netbox/ipam/tables/fhrp.py @@ -1,8 +1,6 @@ import django_tables2 as tables -from utilities.tables import ( - BaseTable, ContentTypeColumn, MarkdownColumn, TagColumn, ToggleColumn, -) +from utilities.tables import BaseTable, ButtonsColumn, MarkdownColumn, TagColumn, ToggleColumn from ipam.models import * __all__ = ( @@ -47,8 +45,11 @@ class FHRPGroupTable(BaseTable): class FHRPGroupAssignmentTable(BaseTable): pk = ToggleColumn() - content_type = ContentTypeColumn( - verbose_name='Object Type' + object_parent = tables.Column( + accessor=tables.A('object.parent_object'), + linkify=True, + orderable=False, + verbose_name='Parent' ) object = tables.Column( linkify=True, @@ -57,8 +58,11 @@ class FHRPGroupAssignmentTable(BaseTable): group = tables.Column( linkify=True ) + actions = ButtonsColumn( + model=FHRPGroupAssignment, + buttons=('edit', 'delete', 'foo') + ) class Meta(BaseTable.Meta): model = FHRPGroupAssignment - fields = ('pk', 'content_type', 'object', 'group', 'priority') - default_columns = ('pk', 'content_type', 'object', 'group', 'priority') + fields = ('pk', 'group', 'object_parent', 'object', 'priority') diff --git a/netbox/ipam/views.py b/netbox/ipam/views.py index b4864577d..8746787fe 100644 --- a/netbox/ipam/views.py +++ b/netbox/ipam/views.py @@ -849,12 +849,12 @@ class FHRPGroupView(generic.ObjectView): orderable=False ) - group_assignments = FHRPGroupAssignment.objects.restrict(request.user, 'view').filter( - group=instance + # Get assigned interfaces + members_table = tables.FHRPGroupAssignmentTable( + data=FHRPGroupAssignment.objects.restrict(request.user, 'view').filter(group=instance), + orderable=False ) - members_table = tables.FHRPGroupAssignmentTable(group_assignments) members_table.columns.hide('group') - paginate_table(members_table, request) return { 'ipaddress_table': ipaddress_table, diff --git a/netbox/templates/dcim/interface.html b/netbox/templates/dcim/interface.html index a6dc1a901..f4ab30e4d 100644 --- a/netbox/templates/dcim/interface.html +++ b/netbox/templates/dcim/interface.html @@ -440,42 +440,7 @@ {% endif %} - + {% include 'ipam/inc/panels/fhrp_groups.html' %} {% plugin_right_page object %} diff --git a/netbox/templates/ipam/fhrpgroup.html b/netbox/templates/ipam/fhrpgroup.html index c4e3eadc3..7f0b5d56e 100644 --- a/netbox/templates/ipam/fhrpgroup.html +++ b/netbox/templates/ipam/fhrpgroup.html @@ -72,10 +72,12 @@
Members
- {% include 'inc/table.html' with table=members_table %} + {% if ipaddress_table.rows %} + {% render_table members_table 'inc/table.html' %} + {% else %} +
None
+ {% endif %}
-
- {% include 'inc/paginator.html' with paginator=members_table.paginator page=members_table.page %} {% plugin_full_width_page object %} diff --git a/netbox/templates/ipam/inc/panels/fhrp_groups.html b/netbox/templates/ipam/inc/panels/fhrp_groups.html new file mode 100644 index 000000000..b3168b61c --- /dev/null +++ b/netbox/templates/ipam/inc/panels/fhrp_groups.html @@ -0,0 +1,45 @@ +{% load helpers %} + +
+
NHRP Groups
+
+ + + + + + + + + + {% for assignment in object.fhrp_group_assignments.all %} + + + + + + {% empty %} + + + + {% endfor %} + +
GroupVirtual IPsPriority
+ {{ assignment.group }} + + {% for ipaddress in assignment.group.ip_addresses.all %} + {{ ipaddress }} + {% if not forloop.last %}
{% endif %} + {% endfor %} +
+ {{ assignment.priority }} +
None
+
+ {% if perms.ipam.add_fhrpgroupassignment %} + + {% endif %} +
diff --git a/netbox/templates/virtualization/vminterface.html b/netbox/templates/virtualization/vminterface.html index 2646686e8..2a201bf85 100644 --- a/netbox/templates/virtualization/vminterface.html +++ b/netbox/templates/virtualization/vminterface.html @@ -76,11 +76,12 @@ + {% include 'inc/panels/tags.html' %} {% plugin_left_page object %}
{% include 'inc/panels/custom_fields.html' %} - {% include 'inc/panels/tags.html' %} + {% include 'ipam/inc/panels/fhrp_groups.html' %} {% plugin_right_page object %}
From b2dc6c5d3db4a2ea0c42cb873cbaf0ee10e71c73 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Tue, 2 Nov 2021 11:49:10 -0400 Subject: [PATCH 126/289] Changelog & initial docs for #7649 --- docs/administration/authentication.md | 37 +++++++++++++++++++++++++++ docs/administration/permissions.md | 2 +- docs/release-notes/version-3.1.md | 4 +++ mkdocs.yml | 1 + 4 files changed, 43 insertions(+), 1 deletion(-) create mode 100644 docs/administration/authentication.md diff --git a/docs/administration/authentication.md b/docs/administration/authentication.md new file mode 100644 index 000000000..31983be0b --- /dev/null +++ b/docs/administration/authentication.md @@ -0,0 +1,37 @@ +# Authentication + +## Local Authentication + +Local user accounts and groups can be created in NetBox under the "Authentication and Authorization" section of the administrative user interface. This interface is available only to users with the "staff" permission enabled. + +At a minimum, each user account must have a username and password set. User accounts may also denote a first name, last name, and email address. [Permissions](./permissions.md) may also be assigned to users and/or groups within the admin UI. + +## Remote Authentication + +NetBox may be configured to provide user authenticate via a remote backend in addition to local authentication. This is done by setting the `REMOTE_AUTH_BACKEND` configuration parameter to a suitable backend class. NetBox provides several options for remote authentication. + +### LDAP Authentication + +```python +REMOTE_AUTH_BACKEND = 'netbox.authentication.LDAPBackend' +``` + +NetBox includes an authentication backend which supports LDAP. See the [LDAP installation docs](../installation/6-ldap.md) for more detail about this backend. + +### HTTP Header Authentication + +```python +REMOTE_AUTH_BACKEND = 'netbox.authentication.RemoteUserBackend' +``` + +Another option for remote authentication in NetBox is to enable HTTP header-based user assignment. The front end HTTP server (e.g. nginx or Apache) performs client authentication as a process external to NetBox, and passes information about the authenticated user via HTTP headers. By default, the user is assigned via the `REMOTE_USER` header, but this can be customized via the `REMOTE_AUTH_HEADER` configuration parameter. + +### Single Sign-On (SSO) + +```python +REMOTE_AUTH_BACKEND = 'social_core.backends.google.GoogleOAuth2' +``` + +NetBox supports single sign-on authentication via the [python-social-auth](https://github.com/python-social-auth) library. To enable SSO, specify the path to the desired authentication backend within the `social_core` Python package. Please see the complete list of [supported authentication backends](https://github.com/python-social-auth/social-core/tree/master/social_core/backends) for the available options. + +Most remote authentication backends require some additional configuration through settings prefixed with `SOCIAL_AUTH_`. These will be automatically imported from NetBox's `configuration.py` file. Additionally, the [authentication pipeline](https://python-social-auth.readthedocs.io/en/latest/pipeline.html) can be customized via the `SOCIAL_AUTH_PIPELINE` parameter. diff --git a/docs/administration/permissions.md b/docs/administration/permissions.md index 97b691c1d..f859266af 100644 --- a/docs/administration/permissions.md +++ b/docs/administration/permissions.md @@ -1,6 +1,6 @@ # Permissions -NetBox v2.9 introduced a new object-based permissions framework, which replace's Django's built-in permissions model. Object-based permissions enable an administrator to grant users or groups the ability to perform an action on arbitrary subsets of objects in NetBox, rather than all objects of a certain type. For example, it is possible to grant a user permission to view only sites within a particular region, or to modify only VLANs with a numeric ID within a certain range. +NetBox v2.9 introduced a new object-based permissions framework, which replaces Django's built-in permissions model. Object-based permissions enable an administrator to grant users or groups the ability to perform an action on arbitrary subsets of objects in NetBox, rather than all objects of a certain type. For example, it is possible to grant a user permission to view only sites within a particular region, or to modify only VLANs with a numeric ID within a certain range. {!models/users/objectpermission.md!} diff --git a/docs/release-notes/version-3.1.md b/docs/release-notes/version-3.1.md index d53f677d9..ff615a92b 100644 --- a/docs/release-notes/version-3.1.md +++ b/docs/release-notes/version-3.1.md @@ -57,6 +57,10 @@ A `bridge` field has been added to the interface model for devices and virtual m Multiple interfaces can be bridged to a single virtual interface to effect a bridge group. Alternatively, two physical interfaces can be bridged to one another, to effect an internal cross-connect. +#### Single Sign-On (SSO) Authentication ([#7649](https://github.com/netbox-community/netbox/issues/7649)) + +Support for single sign-on (SSO) authentication has been added via the [python-social-auth](https://github.com/python-social-auth) library. NetBox administrators can configure one of the [supported authentication backends](https://python-social-auth.readthedocs.io/en/latest/intro.html#auth-providers) to enable SSO authentication for users. + ### Enhancements * [#1337](https://github.com/netbox-community/netbox/issues/1337) - Add WWN field to interfaces diff --git a/mkdocs.yml b/mkdocs.yml index 52efdd656..84a7d1033 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -84,6 +84,7 @@ nav: - Using Plugins: 'plugins/index.md' - Developing Plugins: 'plugins/development.md' - Administration: + - Authentication: 'administration/authentication.md' - Permissions: 'administration/permissions.md' - Housekeeping: 'administration/housekeeping.md' - Replicating NetBox: 'administration/replicating-netbox.md' From 8c27ff38590752656f049aef44bef6e6cd39572d Mon Sep 17 00:00:00 2001 From: Daniel Sheppard Date: Tue, 2 Nov 2021 11:07:19 -0500 Subject: [PATCH 127/289] #6732 - Add ASN back to filtersets --- netbox/dcim/filtersets.py | 8 ++--- netbox/dcim/tests/test_filtersets.py | 4 +++ netbox/utilities/tests/test_filters.py | 44 +++++++++----------------- 3 files changed, 23 insertions(+), 33 deletions(-) diff --git a/netbox/dcim/filtersets.py b/netbox/dcim/filtersets.py index c58e9d17e..aad02592e 100644 --- a/netbox/dcim/filtersets.py +++ b/netbox/dcim/filtersets.py @@ -131,12 +131,12 @@ class SiteFilterSet(PrimaryModelFilterSet, TenancyFilterSet): to_field_name='slug', label='Group (slug)', ) - asn_id = django_filters.ModelMultipleChoiceFilter( + asns_id = django_filters.ModelMultipleChoiceFilter( field_name='asns', queryset=ASN.objects.all(), label='AS (ID)', ) - asn = django_filters.ModelMultipleChoiceFilter( + asns = django_filters.ModelMultipleChoiceFilter( field_name='asns__asn', queryset=ASN.objects.all(), to_field_name='asn', @@ -147,7 +147,7 @@ class SiteFilterSet(PrimaryModelFilterSet, TenancyFilterSet): class Meta: model = Site fields = [ - 'id', 'name', 'slug', 'facility', 'latitude', 'longitude', 'contact_name', 'contact_phone', + 'id', 'name', 'slug', 'facility', 'asn', 'latitude', 'longitude', 'contact_name', 'contact_phone', 'contact_email', ] @@ -167,7 +167,7 @@ class SiteFilterSet(PrimaryModelFilterSet, TenancyFilterSet): ) try: qs_filter |= Q(asn=int(value.strip())) - qs_filter |= Q(asns=int(value.strip())) + qs_filter |= Q(asns__asn=int(value.strip())) except ValueError: pass return queryset.filter(qs_filter) diff --git a/netbox/dcim/tests/test_filtersets.py b/netbox/dcim/tests/test_filtersets.py index 1b27a43e3..d05d2b2f2 100644 --- a/netbox/dcim/tests/test_filtersets.py +++ b/netbox/dcim/tests/test_filtersets.py @@ -182,6 +182,10 @@ class SiteTestCase(TestCase, ChangeLoggedFilterSetTests): params = {'asn': [65001, 65002]} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + def test_asns(self): + params = {'asns': [65001, 65002]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + def test_latitude(self): params = {'latitude': [10, 20]} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) diff --git a/netbox/utilities/tests/test_filters.py b/netbox/utilities/tests/test_filters.py index e4609ef9b..2616dbf36 100644 --- a/netbox/utilities/tests/test_filters.py +++ b/netbox/utilities/tests/test_filters.py @@ -347,20 +347,6 @@ class DynamicFilterLookupExpressionTest(TestCase): @classmethod def setUpTestData(cls): - provider = Provider.objects.create(name='Test Provider', slug='test-provider') - circuit_type = CircuitType.objects.create(name='Test Circuit Type', slug='test-circuit-type') - - circuits = ( - Circuit(cid='CID12123', provider=provider, type=circuit_type, - status=CircuitStatusChoices.STATUS_ACTIVE, commit_rate=1000), - Circuit(cid='CID12124', provider=provider, type=circuit_type, - status=CircuitStatusChoices.STATUS_ACTIVE, commit_rate=10000), - Circuit(cid='CID12125', provider=provider, type=circuit_type, - status=CircuitStatusChoices.STATUS_ACTIVE, commit_rate=100000) - - ) - Circuit.objects.bulk_create(circuits) - manufacturers = ( Manufacturer(name='Manufacturer 1', slug='manufacturer-1'), Manufacturer(name='Manufacturer 2', slug='manufacturer-2'), @@ -398,9 +384,9 @@ class DynamicFilterLookupExpressionTest(TestCase): region.save() sites = ( - Site(name='Site 1', slug='abc-site-1', region=regions[0]), - Site(name='Site 2', slug='def-site-2', region=regions[1]), - Site(name='Site 3', slug='ghi-site-3', region=regions[2]), + Site(name='Site 1', slug='abc-site-1', region=regions[0], asn=65001), + Site(name='Site 2', slug='def-site-2', region=regions[1], asn=65101), + Site(name='Site 3', slug='ghi-site-3', region=regions[2], asn=65201), ) Site.objects.bulk_create(sites) @@ -469,21 +455,21 @@ class DynamicFilterLookupExpressionTest(TestCase): params = {'slug__niew': ['-1']} self.assertEqual(SiteFilterSet(params, self.site_queryset).qs.count(), 2) - def test_circuit_commit_lt(self): - params = {'commit_rate__lt': [10000]} - self.assertEqual(CircuitFilterSet(params, self.circuit_queryset).qs.count(), 1) + def test_site_asn_lt(self): + params = {'asn__lt': [65101]} + self.assertEqual(SiteFilterSet(params, self.site_queryset).qs.count(), 1) - def test_circuit_commit_lte(self): - params = {'commit_rate__lte': [10000]} - self.assertEqual(CircuitFilterSet(params, self.circuit_queryset).qs.count(), 2) + def test_site_asn_lte(self): + params = {'asn__lte': [65101]} + self.assertEqual(SiteFilterSet(params, self.site_queryset).qs.count(), 2) - def test_circuit_commit_gt(self): - params = {'commit_rate__gt': [10000]} - self.assertEqual(CircuitFilterSet(params, self.circuit_queryset).qs.count(), 1) + def test_site_asn_gt(self): + params = {'asn__lt': [65101]} + self.assertEqual(SiteFilterSet(params, self.site_queryset).qs.count(), 1) - def test_circuit_commit_gte(self): - params = {'commit_rate__gte': [10000]} - self.assertEqual(CircuitFilterSet(params, self.circuit_queryset).qs.count(), 2) + def test_site_asn_gte(self): + params = {'asn__gte': [65101]} + self.assertEqual(SiteFilterSet(params, self.site_queryset).qs.count(), 2) def test_site_region_negation(self): params = {'region__n': ['region-1']} From 5d0a7cb3079db63d9fa0efa2df32105102855bf4 Mon Sep 17 00:00:00 2001 From: Daniel Sheppard Date: Tue, 2 Nov 2021 11:10:50 -0500 Subject: [PATCH 128/289] #6732 - Remove migration --- netbox/ipam/migrations/0052_asn_model.py | 40 ------------------------ 1 file changed, 40 deletions(-) delete mode 100644 netbox/ipam/migrations/0052_asn_model.py diff --git a/netbox/ipam/migrations/0052_asn_model.py b/netbox/ipam/migrations/0052_asn_model.py deleted file mode 100644 index 1a69f0e42..000000000 --- a/netbox/ipam/migrations/0052_asn_model.py +++ /dev/null @@ -1,40 +0,0 @@ -# Generated by Django 3.2.8 on 2021-10-25 04:34 - -import dcim.fields -import django.core.serializers.json -from django.db import migrations, models -import django.db.models.deletion -import taggit.managers - - -class Migration(migrations.Migration): - - dependencies = [ - ('extras', '0062_clear_secrets_changelog'), - ('tenancy', '0003_contacts'), - ('dcim', '0137_relax_uniqueness_constraints'), - ('ipam', '0051_extend_tag_support'), - ] - - operations = [ - migrations.CreateModel( - name='ASN', - fields=[ - ('created', models.DateField(auto_now_add=True, null=True)), - ('last_updated', models.DateTimeField(auto_now=True, null=True)), - ('custom_field_data', models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder)), - ('id', models.BigAutoField(primary_key=True, serialize=False)), - ('asn', dcim.fields.ASNField(blank=False, null=False, unique=True)), - ('description', models.CharField(blank=True, max_length=200)), - ('rir', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='asns', to='ipam.rir')), - ('sites', models.ManyToManyField(blank=True, related_name='asns', to='dcim.Site')), - ('tags', taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag')), - ('tenant', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='asns', to='tenancy.tenant')), - ], - options={ - 'verbose_name': 'ASN', - 'verbose_name_plural': 'ASNs', - 'ordering': ['asn'], - }, - ), - ] From aeb4996ac2f50c8c9f298a7e598b3f9ae744b0f1 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Tue, 2 Nov 2021 13:06:58 -0400 Subject: [PATCH 129/289] Allow users to create new FHRP group directly from the interface view --- netbox/ipam/views.py | 11 +++++++++++ netbox/templates/ipam/inc/panels/fhrp_groups.html | 13 +++++++++---- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/netbox/ipam/views.py b/netbox/ipam/views.py index 8746787fe..14849c91f 100644 --- a/netbox/ipam/views.py +++ b/netbox/ipam/views.py @@ -3,6 +3,7 @@ from django.db.models import Prefetch from django.db.models.expressions import RawSQL from django.http import Http404 from django.shortcuts import get_object_or_404, redirect, render +from django.urls import reverse from dcim.models import Device, Interface from netbox.views import generic @@ -867,6 +868,16 @@ class FHRPGroupEditView(generic.ObjectEditView): queryset = FHRPGroup.objects.all() model_form = forms.FHRPGroupForm + def get_return_url(self, request, obj=None): + return_url = super().get_return_url(request, obj) + + # If we're redirecting the user to the FHRPGroupAssignment creation form, + # initialize the group field with the FHRPGroup we just saved. + if return_url.startswith(reverse('ipam:fhrpgroupassignment_add')): + return_url += f'&group={obj.pk}' + + return return_url + class FHRPGroupDeleteView(generic.ObjectDeleteView): queryset = FHRPGroup.objects.all() diff --git a/netbox/templates/ipam/inc/panels/fhrp_groups.html b/netbox/templates/ipam/inc/panels/fhrp_groups.html index b3168b61c..3ed4f1761 100644 --- a/netbox/templates/ipam/inc/panels/fhrp_groups.html +++ b/netbox/templates/ipam/inc/panels/fhrp_groups.html @@ -35,11 +35,16 @@ - {% if perms.ipam.add_fhrpgroupassignment %} - From 93da5a39be9613e9cd49ce313d58e2a68629f307 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Tue, 2 Nov 2021 13:15:23 -0400 Subject: [PATCH 130/289] Make assignment priority a required field --- netbox/ipam/constants.py | 8 ++++++++ netbox/ipam/migrations/0052_fhrpgroup.py | 3 ++- netbox/ipam/models/fhrp.py | 8 ++++++-- 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/netbox/ipam/constants.py b/netbox/ipam/constants.py index 1c370a65d..fdb1dc6d9 100644 --- a/netbox/ipam/constants.py +++ b/netbox/ipam/constants.py @@ -52,6 +52,14 @@ IPADDRESS_ROLES_NONUNIQUE = ( ) +# +# FHRP groups +# + +FHRPGROUPASSIGNMENT_PRIORITY_MIN = 0 +FHRPGROUPASSIGNMENT_PRIORITY_MAX = 255 + + # # VLANs # diff --git a/netbox/ipam/migrations/0052_fhrpgroup.py b/netbox/ipam/migrations/0052_fhrpgroup.py index 17d4ec9ca..9a3f41aab 100644 --- a/netbox/ipam/migrations/0052_fhrpgroup.py +++ b/netbox/ipam/migrations/0052_fhrpgroup.py @@ -1,4 +1,5 @@ import django.core.serializers.json +import django.core.validators from django.db import migrations, models import django.db.models.deletion import taggit.managers @@ -44,7 +45,7 @@ class Migration(migrations.Migration): ('last_updated', models.DateTimeField(auto_now=True, null=True)), ('id', models.BigAutoField(primary_key=True, serialize=False)), ('object_id', models.PositiveIntegerField()), - ('priority', models.PositiveSmallIntegerField(blank=True, null=True)), + ('priority', models.PositiveSmallIntegerField(validators=[django.core.validators.MinValueValidator(0), django.core.validators.MaxValueValidator(255)])), ('content_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='contenttypes.contenttype')), ('group', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='ipam.fhrpgroup')), ], diff --git a/netbox/ipam/models/fhrp.py b/netbox/ipam/models/fhrp.py index 01ab6b5f8..3544c0a00 100644 --- a/netbox/ipam/models/fhrp.py +++ b/netbox/ipam/models/fhrp.py @@ -1,11 +1,13 @@ from django.contrib.contenttypes.fields import GenericForeignKey, GenericRelation from django.contrib.contenttypes.models import ContentType +from django.core.validators import MaxValueValidator, MinValueValidator from django.db import models from django.urls import reverse from extras.utils import extras_features from netbox.models import ChangeLoggedModel, PrimaryModel from ipam.choices import * +from ipam.constants import * from utilities.querysets import RestrictedQuerySet __all__ = ( @@ -81,8 +83,10 @@ class FHRPGroupAssignment(ChangeLoggedModel): on_delete=models.CASCADE ) priority = models.PositiveSmallIntegerField( - blank=True, - null=True + validators=( + MinValueValidator(FHRPGROUPASSIGNMENT_PRIORITY_MIN), + MaxValueValidator(FHRPGROUPASSIGNMENT_PRIORITY_MAX) + ) ) objects = RestrictedQuerySet.as_manager() From 7625a2dd3c474fc41bc0b8342422e097ff8492a8 Mon Sep 17 00:00:00 2001 From: Daniel Sheppard Date: Tue, 2 Nov 2021 12:26:06 -0500 Subject: [PATCH 131/289] #6732 - Swap ASN M2M to Site model and update some templates/filters --- netbox/dcim/forms/bulk_edit.py | 2 +- netbox/dcim/forms/models.py | 11 ------- netbox/dcim/migrations/0141_asn_model.py | 19 ++++++++++++ netbox/dcim/models/sites.py | 5 ++++ netbox/dcim/tests/test_filtersets.py | 2 +- netbox/dcim/views.py | 7 ++++- netbox/ipam/forms/models.py | 19 ++++++++++-- netbox/ipam/migrations/0052_asn_model.py | 38 ++++++++++++++++++++++++ netbox/ipam/models/ip.py | 6 +--- netbox/ipam/views.py | 7 ++--- netbox/templates/dcim/site.html | 14 +++++++++ netbox/templates/ipam/asn.html | 19 ++++++++++-- 12 files changed, 120 insertions(+), 29 deletions(-) create mode 100644 netbox/dcim/migrations/0141_asn_model.py create mode 100644 netbox/ipam/migrations/0052_asn_model.py diff --git a/netbox/dcim/forms/bulk_edit.py b/netbox/dcim/forms/bulk_edit.py index 57c74cf84..453cead1c 100644 --- a/netbox/dcim/forms/bulk_edit.py +++ b/netbox/dcim/forms/bulk_edit.py @@ -117,7 +117,7 @@ class SiteBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldModelBulkEd required=False, label='ASN' ) - asns = DynamicModelChoiceField( + asns = DynamicModelMultipleChoiceField( queryset=ASN.objects.all(), label=_('ASNs'), required=False diff --git a/netbox/dcim/forms/models.py b/netbox/dcim/forms/models.py index a9fdb3652..36c349740 100644 --- a/netbox/dcim/forms/models.py +++ b/netbox/dcim/forms/models.py @@ -172,17 +172,6 @@ class SiteForm(BootstrapMixin, TenancyForm, CustomFieldModelForm): 'longitude': "Longitude in decimal format (xx.yyyyyy)" } - def __init__(self, data=None, instance=None, *args, **kwargs): - super().__init__(data=data, instance=instance, *args, **kwargs) - - if self.instance and self.instance.pk is not None: - self.fields['asns'].initial = self.instance.asns.all().values_list('id', flat=True) - - def save(self, *args, **kwargs): - instance = super().save(*args, **kwargs) - instance.asns.set(self.cleaned_data['asns']) - return instance - class LocationForm(BootstrapMixin, TenancyForm, CustomFieldModelForm): region = DynamicModelChoiceField( diff --git a/netbox/dcim/migrations/0141_asn_model.py b/netbox/dcim/migrations/0141_asn_model.py new file mode 100644 index 000000000..7650679f1 --- /dev/null +++ b/netbox/dcim/migrations/0141_asn_model.py @@ -0,0 +1,19 @@ +# Generated by Django 3.2.8 on 2021-11-02 16:16 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('ipam', '0052_asn_model'), + ('dcim', '0140_wireless'), + ] + + operations = [ + migrations.AddField( + model_name='site', + name='asns', + field=models.ManyToManyField(blank=True, related_name='sites', to='ipam.ASN'), + ), + ] diff --git a/netbox/dcim/models/sites.py b/netbox/dcim/models/sites.py index a978e69e6..79f8921d5 100644 --- a/netbox/dcim/models/sites.py +++ b/netbox/dcim/models/sites.py @@ -195,6 +195,11 @@ class Site(PrimaryModel): verbose_name='ASN', help_text='32-bit autonomous system number' ) + asns = models.ManyToManyField( + to='ipam.ASN', + related_name='sites', + blank=True + ) time_zone = TimeZoneField( blank=True ) diff --git a/netbox/dcim/tests/test_filtersets.py b/netbox/dcim/tests/test_filtersets.py index d05d2b2f2..0cbd892f5 100644 --- a/netbox/dcim/tests/test_filtersets.py +++ b/netbox/dcim/tests/test_filtersets.py @@ -183,7 +183,7 @@ class SiteTestCase(TestCase, ChangeLoggedFilterSetTests): self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) def test_asns(self): - params = {'asns': [65001, 65002]} + params = {'asns': [64512, 65002]} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) def test_latitude(self): diff --git a/netbox/dcim/views.py b/netbox/dcim/views.py index a05f62621..9b8ac3e45 100644 --- a/netbox/dcim/views.py +++ b/netbox/dcim/views.py @@ -310,7 +310,6 @@ class SiteView(generic.ObjectView): def get_extra_context(self, request, instance): stats = { - 'asn_count': ASN.objects.restrict(request.user, 'view').filter(sites=instance).count(), 'rack_count': Rack.objects.restrict(request.user, 'view').filter(site=instance).count(), 'device_count': Device.objects.restrict(request.user, 'view').filter(site=instance).count(), 'prefix_count': Prefix.objects.restrict(request.user, 'view').filter(site=instance).count(), @@ -333,9 +332,15 @@ class SiteView(generic.ObjectView): cumulative=True ).restrict(request.user, 'view').filter(site=instance) + asns = ASN.objects.restrict(request.user, 'view').filter(sites=instance) + asn_count = asns.count() + + stats.update({'asn_count': asn_count}) + return { 'stats': stats, 'locations': locations, + 'asns': asns, } diff --git a/netbox/ipam/forms/models.py b/netbox/ipam/forms/models.py index abf2aa4a1..ea00b6914 100644 --- a/netbox/ipam/forms/models.py +++ b/netbox/ipam/forms/models.py @@ -134,14 +134,18 @@ class ASNForm(BootstrapMixin, TenancyForm, CustomFieldModelForm): label='Sites', required=False ) + tags = DynamicModelMultipleChoiceField( + queryset=Tag.objects.all(), + required=False + ) class Meta: model = ASN fields = [ - 'asn', 'rir', 'sites', 'tenant_group', 'tenant', 'description' + 'asn', 'rir', 'sites', 'tenant_group', 'tenant', 'description', 'tags' ] fieldsets = ( - ('ASN', ('asn', 'rir', 'sites', 'description')), + ('ASN', ('asn', 'rir', 'sites', 'description', 'tags')), ('Tenancy', ('tenant_group', 'tenant')), ) help_texts = { @@ -152,6 +156,17 @@ class ASNForm(BootstrapMixin, TenancyForm, CustomFieldModelForm): 'date_added': DatePicker(), } + def __init__(self, data=None, instance=None, *args, **kwargs): + super().__init__(data=data, instance=instance, *args, **kwargs) + + if self.instance and self.instance.pk is not None: + self.fields['sites'].initial = self.instance.sites.all().values_list('id', flat=True) + + def save(self, *args, **kwargs): + instance = super().save(*args, **kwargs) + instance.sites.set(self.cleaned_data['sites']) + return instance + class RoleForm(BootstrapMixin, CustomFieldModelForm): slug = SlugField() diff --git a/netbox/ipam/migrations/0052_asn_model.py b/netbox/ipam/migrations/0052_asn_model.py new file mode 100644 index 000000000..04eac76c3 --- /dev/null +++ b/netbox/ipam/migrations/0052_asn_model.py @@ -0,0 +1,38 @@ +# Generated by Django 3.2.8 on 2021-11-02 16:16 + +import dcim.fields +import django.core.serializers.json +from django.db import migrations, models +import django.db.models.deletion +import taggit.managers + + +class Migration(migrations.Migration): + + dependencies = [ + ('tenancy', '0004_extend_tag_support'), + ('extras', '0064_configrevision'), + ('ipam', '0051_extend_tag_support'), + ] + + operations = [ + migrations.CreateModel( + name='ASN', + fields=[ + ('created', models.DateField(auto_now_add=True, null=True)), + ('last_updated', models.DateTimeField(auto_now=True, null=True)), + ('custom_field_data', models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder)), + ('id', models.BigAutoField(primary_key=True, serialize=False)), + ('asn', dcim.fields.ASNField(unique=True)), + ('description', models.CharField(blank=True, max_length=200)), + ('rir', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='asns', to='ipam.rir')), + ('tags', taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag')), + ('tenant', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='asns', to='tenancy.tenant')), + ], + options={ + 'verbose_name': 'ASN', + 'verbose_name_plural': 'ASNs', + 'ordering': ['asn'], + }, + ), + ] diff --git a/netbox/ipam/models/ip.py b/netbox/ipam/models/ip.py index d61ad4c25..ad707dda1 100644 --- a/netbox/ipam/models/ip.py +++ b/netbox/ipam/models/ip.py @@ -71,6 +71,7 @@ class RIR(OrganizationalModel): return reverse('ipam:rir', args=[self.pk]) +@extras_features('custom_fields', 'custom_links', 'export_templates', 'tags', 'webhooks') class ASN(PrimaryModel): asn = ASNField( @@ -98,11 +99,6 @@ class ASN(PrimaryModel): blank=True, null=True ) - sites = models.ManyToManyField( - to='dcim.Site', - related_name='asns', - blank=True - ) objects = RestrictedQuerySet.as_manager() diff --git a/netbox/ipam/views.py b/netbox/ipam/views.py index 73b228ac4..7801eec23 100644 --- a/netbox/ipam/views.py +++ b/netbox/ipam/views.py @@ -214,13 +214,10 @@ class ASNView(generic.ObjectView): queryset = ASN.objects.all() def get_extra_context(self, request, instance): - sites_table = SiteTable( - list(instance.sites.all()), - orderable=False - ) + sites = instance.sites.restrict(request.user, 'view').all() return { - 'sites_table': sites_table, + 'sites': sites, } diff --git a/netbox/templates/dcim/site.html b/netbox/templates/dcim/site.html index 0364dee64..308b09816 100644 --- a/netbox/templates/dcim/site.html +++ b/netbox/templates/dcim/site.html @@ -260,6 +260,20 @@ {% endif %} +
+
+ ASNs +
+
+ {% if asns %} + {% for asn in asns %} + {{ asn }} + {% endfor %} + {% else %} + None + {% endif %} +
+
{% include 'inc/panels/image_attachments.html' %} {% plugin_right_page object %} diff --git a/netbox/templates/ipam/asn.html b/netbox/templates/ipam/asn.html index 8be09c660..8eafe7633 100644 --- a/netbox/templates/ipam/asn.html +++ b/netbox/templates/ipam/asn.html @@ -47,17 +47,30 @@ + {% include 'inc/panels/custom_fields.html' %} + {% include 'inc/panels/tags.html' with tags=object.tags.all url='ipam:asn_list' %} {% plugin_left_page object %}
- {% include 'inc/panels/custom_fields.html' %} - {% include 'inc/panels/tags.html' with tags=object.tags.all url='ipam:asn_list' %} +
+
+ Sites +
+
+ {% if sites %} + {% for site in sites %} + {{ site }} + {% endfor %} + {% else %} + None + {% endif %} +
+
{% plugin_right_page object %}
- {% include 'inc/panel_table.html' with table=sites_table heading='Sites' %} {% plugin_full_width_page object %}
From 2cb53a0f7efd62e14a06b5627096460c0f24c657 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Tue, 2 Nov 2021 13:32:41 -0400 Subject: [PATCH 132/289] Clean up FHRP group templates, forms --- netbox/ipam/constants.py | 10 ++++- netbox/ipam/forms/models.py | 8 +--- netbox/ipam/views.py | 2 + netbox/templates/ipam/fhrpgroup.html | 2 +- netbox/templates/ipam/fhrpgroup_edit.html | 40 +++++++++++++++++++ .../ipam/fhrpgroupassignment_edit.html | 18 +++++++++ 6 files changed, 71 insertions(+), 9 deletions(-) create mode 100644 netbox/templates/ipam/fhrpgroup_edit.html create mode 100644 netbox/templates/ipam/fhrpgroupassignment_edit.html diff --git a/netbox/ipam/constants.py b/netbox/ipam/constants.py index fdb1dc6d9..b19d4061b 100644 --- a/netbox/ipam/constants.py +++ b/netbox/ipam/constants.py @@ -1,6 +1,6 @@ from django.db.models import Q -from .choices import IPAddressRoleChoices +from .choices import FHRPGroupProtocolChoices, IPAddressRoleChoices # BGP ASN bounds BGP_ASN_MIN = 1 @@ -59,6 +59,14 @@ IPADDRESS_ROLES_NONUNIQUE = ( FHRPGROUPASSIGNMENT_PRIORITY_MIN = 0 FHRPGROUPASSIGNMENT_PRIORITY_MAX = 255 +FHRP_PROTOCOL_ROLE_MAPPINGS = { + FHRPGroupProtocolChoices.PROTOCOL_VRRP2: IPAddressRoleChoices.ROLE_VRRP, + FHRPGroupProtocolChoices.PROTOCOL_VRRP3: IPAddressRoleChoices.ROLE_VRRP, + FHRPGroupProtocolChoices.PROTOCOL_HSRP: IPAddressRoleChoices.ROLE_HSRP, + FHRPGroupProtocolChoices.PROTOCOL_GLBP: IPAddressRoleChoices.ROLE_GLBP, + FHRPGroupProtocolChoices.PROTOCOL_CARP: IPAddressRoleChoices.ROLE_CARP, +} + # # VLANs diff --git a/netbox/ipam/forms/models.py b/netbox/ipam/forms/models.py index c605a7b7c..d421bdbcd 100644 --- a/netbox/ipam/forms/models.py +++ b/netbox/ipam/forms/models.py @@ -521,13 +521,7 @@ class FHRPGroupForm(BootstrapMixin, CustomFieldModelForm): status=self.cleaned_data['ip_status'], assigned_object=instance ) - ipaddress.role = { - FHRPGroupProtocolChoices.PROTOCOL_VRRP2: IPAddressRoleChoices.ROLE_VRRP, - FHRPGroupProtocolChoices.PROTOCOL_VRRP3: IPAddressRoleChoices.ROLE_VRRP, - FHRPGroupProtocolChoices.PROTOCOL_HSRP: IPAddressRoleChoices.ROLE_HSRP, - FHRPGroupProtocolChoices.PROTOCOL_GLBP: IPAddressRoleChoices.ROLE_GLBP, - FHRPGroupProtocolChoices.PROTOCOL_CARP: IPAddressRoleChoices.ROLE_CARP, - }[self.cleaned_data['protocol']] + ipaddress.role = FHRP_PROTOCOL_ROLE_MAPPINGS[self.cleaned_data['protocol']] ipaddress.save() # Check that the new IPAddress conforms with any assigned object-level permissions diff --git a/netbox/ipam/views.py b/netbox/ipam/views.py index 14849c91f..d9bd1977a 100644 --- a/netbox/ipam/views.py +++ b/netbox/ipam/views.py @@ -867,6 +867,7 @@ class FHRPGroupView(generic.ObjectView): class FHRPGroupEditView(generic.ObjectEditView): queryset = FHRPGroup.objects.all() model_form = forms.FHRPGroupForm + template_name = 'ipam/fhrpgroup_edit.html' def get_return_url(self, request, obj=None): return_url = super().get_return_url(request, obj) @@ -909,6 +910,7 @@ class FHRPGroupBulkDeleteView(generic.BulkDeleteView): class FHRPGroupAssignmentEditView(generic.ObjectEditView): queryset = FHRPGroupAssignment.objects.all() model_form = forms.FHRPGroupAssignmentForm + template_name = 'ipam/fhrpgroupassignment_edit.html' def alter_obj(self, instance, request, args, kwargs): if not instance.pk: diff --git a/netbox/templates/ipam/fhrpgroup.html b/netbox/templates/ipam/fhrpgroup.html index 7f0b5d56e..60d6a4bff 100644 --- a/netbox/templates/ipam/fhrpgroup.html +++ b/netbox/templates/ipam/fhrpgroup.html @@ -60,7 +60,7 @@
-
IP Addresses
+
Virtual IP Addresses
{% if ipaddress_table.rows %} {% render_table ipaddress_table 'inc/table.html' %} diff --git a/netbox/templates/ipam/fhrpgroup_edit.html b/netbox/templates/ipam/fhrpgroup_edit.html new file mode 100644 index 000000000..858d265ab --- /dev/null +++ b/netbox/templates/ipam/fhrpgroup_edit.html @@ -0,0 +1,40 @@ +{% extends 'generic/object_edit.html' %} +{% load form_helpers %} + +{% block form %} +
+
+
FHRP Group
+
+ {% render_field form.protocol %} + {% render_field form.group_id %} + {% render_field form.description %} + {% render_field form.tags %} +
+ +
+
+
Authentication
+
+ {% render_field form.auth_type %} + {% render_field form.auth_key %} +
+ + {% if not form.instance.pk %} +
+
+
Virtual IP Address
+
+ {% render_field form.ip_vrf %} + {% render_field form.ip_address %} + {% render_field form.ip_status %} +
+ {% endif %} + + {% if form.custom_fields %} +
+
Custom Fields
+
+ {% render_custom_fields form %} + {% endif %} +{% endblock %} diff --git a/netbox/templates/ipam/fhrpgroupassignment_edit.html b/netbox/templates/ipam/fhrpgroupassignment_edit.html new file mode 100644 index 000000000..730d2a15a --- /dev/null +++ b/netbox/templates/ipam/fhrpgroupassignment_edit.html @@ -0,0 +1,18 @@ +{% extends 'generic/object_edit.html' %} +{% load form_helpers %} + +{% block form %} +
+
+
FHRP Group Assignment
+
+
+ +
+ +
+
+ {% render_field form.group %} + {% render_field form.priority %} +
+{% endblock %} From 264652f2c38c17f13740f6115e930699b956f79c Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Tue, 2 Nov 2021 14:08:36 -0400 Subject: [PATCH 133/289] REST API optimizations --- netbox/ipam/api/serializers.py | 5 +++-- netbox/ipam/api/views.py | 4 ++-- netbox/ipam/models/fhrp.py | 3 +++ 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/netbox/ipam/api/serializers.py b/netbox/ipam/api/serializers.py index e2a3c1954..525ea393e 100644 --- a/netbox/ipam/api/serializers.py +++ b/netbox/ipam/api/serializers.py @@ -98,12 +98,13 @@ class AggregateSerializer(PrimaryModelSerializer): class FHRPGroupSerializer(PrimaryModelSerializer): url = serializers.HyperlinkedIdentityField(view_name='ipam-api:fhrpgroup-detail') + ip_addresses = NestedIPAddressSerializer(many=True, read_only=True) class Meta: model = FHRPGroup fields = [ - 'id', 'url', 'display', 'protocol', 'group_id', 'auth_type', 'auth_key', 'description', 'tags', - 'custom_fields', 'created', 'last_updated', + 'id', 'url', 'display', 'protocol', 'group_id', 'auth_type', 'auth_key', 'description', 'ip_addresses', + 'tags', 'custom_fields', 'created', 'last_updated', ] diff --git a/netbox/ipam/api/views.py b/netbox/ipam/api/views.py index 6199c0caf..dffe555e9 100644 --- a/netbox/ipam/api/views.py +++ b/netbox/ipam/api/views.py @@ -124,13 +124,13 @@ class IPAddressViewSet(CustomFieldModelViewSet): # class FHRPGroupViewSet(CustomFieldModelViewSet): - queryset = FHRPGroup.objects.prefetch_related('tags') + queryset = FHRPGroup.objects.prefetch_related('ip_addresses', 'tags') serializer_class = serializers.FHRPGroupSerializer filterset_class = filtersets.FHRPGroupFilterSet class FHRPGroupAssignmentViewSet(CustomFieldModelViewSet): - queryset = FHRPGroupAssignment.objects.prefetch_related('group') + queryset = FHRPGroupAssignment.objects.prefetch_related('group', 'object') serializer_class = serializers.FHRPGroupAssignmentSerializer filterset_class = filtersets.FHRPGroupAssignmentFilterSet diff --git a/netbox/ipam/models/fhrp.py b/netbox/ipam/models/fhrp.py index 3544c0a00..ee5a9a2be 100644 --- a/netbox/ipam/models/fhrp.py +++ b/netbox/ipam/models/fhrp.py @@ -95,3 +95,6 @@ class FHRPGroupAssignment(ChangeLoggedModel): ordering = ('priority', 'pk') unique_together = ('content_type', 'object_id', 'group') verbose_name = 'FHRP group assignment' + + def __str__(self): + return f'{self.object}: {self.group} ({self.priority})' From 131e433880fc369290cd21208b4befc029ccaa6c Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Tue, 2 Nov 2021 15:10:02 -0400 Subject: [PATCH 134/289] Rename FHRPGroupAssignment object to interface --- netbox/dcim/models/device_components.py | 6 +++--- netbox/ipam/api/serializers.py | 15 ++++++++------- netbox/ipam/api/views.py | 2 +- netbox/ipam/filtersets.py | 8 ++++++-- netbox/ipam/forms/models.py | 2 +- netbox/ipam/migrations/0052_fhrpgroup.py | 8 ++++---- netbox/ipam/models/fhrp.py | 14 +++++++------- netbox/ipam/tables/fhrp.py | 12 ++++++------ netbox/ipam/views.py | 10 +++++----- netbox/templates/dcim/interface.html | 2 +- .../templates/ipam/fhrpgroupassignment_edit.html | 2 +- netbox/templates/ipam/inc/panels/fhrp_groups.html | 10 +++++++--- netbox/templates/virtualization/vminterface.html | 2 +- netbox/virtualization/models.py | 6 +++--- 14 files changed, 54 insertions(+), 45 deletions(-) diff --git a/netbox/dcim/models/device_components.py b/netbox/dcim/models/device_components.py index 0d01435a3..a957aba41 100644 --- a/netbox/dcim/models/device_components.py +++ b/netbox/dcim/models/device_components.py @@ -601,9 +601,9 @@ class Interface(ComponentModel, BaseInterface, LinkTermination, PathEndpoint): ) fhrp_group_assignments = GenericRelation( to='ipam.FHRPGroupAssignment', - content_type_field='content_type', - object_id_field='object_id', - related_query_name='interface' + content_type_field='interface_type', + object_id_field='interface_id', + related_query_name='+' ) clone_fields = ['device', 'parent', 'bridge', 'lag', 'type', 'mgmt_only'] diff --git a/netbox/ipam/api/serializers.py b/netbox/ipam/api/serializers.py index 525ea393e..25c2297ab 100644 --- a/netbox/ipam/api/serializers.py +++ b/netbox/ipam/api/serializers.py @@ -110,24 +110,25 @@ class FHRPGroupSerializer(PrimaryModelSerializer): class FHRPGroupAssignmentSerializer(PrimaryModelSerializer): url = serializers.HyperlinkedIdentityField(view_name='tenancy-api:contactassignment-detail') - content_type = ContentTypeField( + interface_type = ContentTypeField( queryset=ContentType.objects.all() ) - object = serializers.SerializerMethodField(read_only=True) + interface = serializers.SerializerMethodField(read_only=True) class Meta: model = FHRPGroupAssignment fields = [ - 'id', 'url', 'display', 'content_type', 'object_id', 'object', 'priority', 'created', 'last_updated', + 'id', 'url', 'display', 'interface_type', 'interface_id', 'interface', 'priority', 'created', + 'last_updated', ] @swagger_serializer_method(serializer_or_field=serializers.DictField) - def get_object(self, obj): - if obj.object is None: + def get_interface(self, obj): + if obj.interface is None: return None - serializer = get_serializer_for_model(obj.object, prefix='Nested') + serializer = get_serializer_for_model(obj.interface, prefix='Nested') context = {'request': self.context['request']} - return serializer(obj.object, context=context).data + return serializer(obj.interface, context=context).data # diff --git a/netbox/ipam/api/views.py b/netbox/ipam/api/views.py index dffe555e9..a0ad4f375 100644 --- a/netbox/ipam/api/views.py +++ b/netbox/ipam/api/views.py @@ -130,7 +130,7 @@ class FHRPGroupViewSet(CustomFieldModelViewSet): class FHRPGroupAssignmentViewSet(CustomFieldModelViewSet): - queryset = FHRPGroupAssignment.objects.prefetch_related('group', 'object') + queryset = FHRPGroupAssignment.objects.prefetch_related('group', 'interface') serializer_class = serializers.FHRPGroupAssignmentSerializer filterset_class = filtersets.FHRPGroupAssignmentFilterSet diff --git a/netbox/ipam/filtersets.py b/netbox/ipam/filtersets.py index 5d385c7ef..db2f5aaea 100644 --- a/netbox/ipam/filtersets.py +++ b/netbox/ipam/filtersets.py @@ -663,11 +663,15 @@ class FHRPGroupFilterSet(PrimaryModelFilterSet): class FHRPGroupAssignmentFilterSet(ChangeLoggedModelFilterSet): - content_type = ContentTypeFilter() + interface_type = ContentTypeFilter() + group_id = django_filters.ModelMultipleChoiceFilter( + queryset=FHRPGroup.objects.all(), + label='Group (ID)', + ) class Meta: model = FHRPGroupAssignment - fields = ['id', 'content_type_id', 'priority'] + fields = ['id', 'group_id', 'interface_type', 'interface_id', 'priority'] class VLANGroupFilterSet(OrganizationalModelFilterSet): diff --git a/netbox/ipam/forms/models.py b/netbox/ipam/forms/models.py index d421bdbcd..70094a07a 100644 --- a/netbox/ipam/forms/models.py +++ b/netbox/ipam/forms/models.py @@ -543,7 +543,7 @@ class FHRPGroupAssignmentForm(BootstrapMixin, forms.ModelForm): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) - ipaddresses = self.instance.object.ip_addresses.all() + ipaddresses = self.instance.interface.ip_addresses.all() for ipaddress in ipaddresses: self.fields['group'].widget.add_query_param('related_ip', ipaddress.pk) diff --git a/netbox/ipam/migrations/0052_fhrpgroup.py b/netbox/ipam/migrations/0052_fhrpgroup.py index 9a3f41aab..976084b47 100644 --- a/netbox/ipam/migrations/0052_fhrpgroup.py +++ b/netbox/ipam/migrations/0052_fhrpgroup.py @@ -8,8 +8,8 @@ import taggit.managers class Migration(migrations.Migration): dependencies = [ - ('extras', '0064_configrevision'), ('contenttypes', '0002_remove_content_type_name'), + ('extras', '0064_configrevision'), ('ipam', '0051_extend_tag_support'), ] @@ -44,15 +44,15 @@ class Migration(migrations.Migration): ('created', models.DateField(auto_now_add=True, null=True)), ('last_updated', models.DateTimeField(auto_now=True, null=True)), ('id', models.BigAutoField(primary_key=True, serialize=False)), - ('object_id', models.PositiveIntegerField()), + ('interface_id', models.PositiveIntegerField()), ('priority', models.PositiveSmallIntegerField(validators=[django.core.validators.MinValueValidator(0), django.core.validators.MaxValueValidator(255)])), - ('content_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='contenttypes.contenttype')), ('group', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='ipam.fhrpgroup')), + ('interface_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='contenttypes.contenttype')), ], options={ 'verbose_name': 'FHRP group assignment', 'ordering': ('priority', 'pk'), - 'unique_together': {('content_type', 'object_id', 'group')}, + 'unique_together': {('interface_type', 'interface_id', 'group')}, }, ), ] diff --git a/netbox/ipam/models/fhrp.py b/netbox/ipam/models/fhrp.py index ee5a9a2be..95c907cfd 100644 --- a/netbox/ipam/models/fhrp.py +++ b/netbox/ipam/models/fhrp.py @@ -69,14 +69,14 @@ class FHRPGroup(PrimaryModel): @extras_features('webhooks') class FHRPGroupAssignment(ChangeLoggedModel): - content_type = models.ForeignKey( + interface_type = models.ForeignKey( to=ContentType, on_delete=models.CASCADE ) - object_id = models.PositiveIntegerField() - object = GenericForeignKey( - ct_field='content_type', - fk_field='object_id' + interface_id = models.PositiveIntegerField() + interface = GenericForeignKey( + ct_field='interface_type', + fk_field='interface_id' ) group = models.ForeignKey( to='ipam.FHRPGroup', @@ -93,8 +93,8 @@ class FHRPGroupAssignment(ChangeLoggedModel): class Meta: ordering = ('priority', 'pk') - unique_together = ('content_type', 'object_id', 'group') + unique_together = ('interface_type', 'interface_id', 'group') verbose_name = 'FHRP group assignment' def __str__(self): - return f'{self.object}: {self.group} ({self.priority})' + return f'{self.interface}: {self.group} ({self.priority})' diff --git a/netbox/ipam/tables/fhrp.py b/netbox/ipam/tables/fhrp.py index 8aae4bba7..8a31694bf 100644 --- a/netbox/ipam/tables/fhrp.py +++ b/netbox/ipam/tables/fhrp.py @@ -27,8 +27,8 @@ class FHRPGroupTable(BaseTable): orderable=False, verbose_name='IP Addresses' ) - member_count = tables.Column( - verbose_name='Members' + interface_count = tables.Column( + verbose_name='Interfaces' ) tags = TagColumn( url_name='ipam:fhrpgroup_list' @@ -37,10 +37,10 @@ class FHRPGroupTable(BaseTable): class Meta(BaseTable.Meta): model = FHRPGroup fields = ( - 'pk', 'group_id', 'protocol', 'auth_type', 'auth_key', 'description', 'ip_addresses', 'member_count', + 'pk', 'group_id', 'protocol', 'auth_type', 'auth_key', 'description', 'ip_addresses', 'interface_count', 'tags', ) - default_columns = ('pk', 'group_id', 'protocol', 'auth_type', 'description', 'ip_addresses', 'member_count') + default_columns = ('pk', 'group_id', 'protocol', 'auth_type', 'description', 'ip_addresses', 'interface_count') class FHRPGroupAssignmentTable(BaseTable): @@ -51,7 +51,7 @@ class FHRPGroupAssignmentTable(BaseTable): orderable=False, verbose_name='Parent' ) - object = tables.Column( + interface = tables.Column( linkify=True, orderable=False ) @@ -65,4 +65,4 @@ class FHRPGroupAssignmentTable(BaseTable): class Meta(BaseTable.Meta): model = FHRPGroupAssignment - fields = ('pk', 'group', 'object_parent', 'object', 'priority') + fields = ('pk', 'group', 'object_parent', 'interface', 'priority') diff --git a/netbox/ipam/views.py b/netbox/ipam/views.py index d9bd1977a..8592fc931 100644 --- a/netbox/ipam/views.py +++ b/netbox/ipam/views.py @@ -914,24 +914,24 @@ class FHRPGroupAssignmentEditView(generic.ObjectEditView): def alter_obj(self, instance, request, args, kwargs): if not instance.pk: - # Assign the object based on URL kwargs + # Assign the interface based on URL kwargs try: - app_label, model = request.GET.get('content_type').split('.') + app_label, model = request.GET.get('interface_type').split('.') except (AttributeError, ValueError): raise Http404("Content type not specified") content_type = get_object_or_404(ContentType, app_label=app_label, model=model) - instance.object = get_object_or_404(content_type.model_class(), pk=request.GET.get('object_id')) + instance.interface = get_object_or_404(content_type.model_class(), pk=request.GET.get('interface_id')) return instance def get_return_url(self, request, obj=None): - return obj.object.get_absolute_url() if obj else super().get_return_url(request) + return obj.interface.get_absolute_url() if obj else super().get_return_url(request) class FHRPGroupAssignmentDeleteView(generic.ObjectDeleteView): queryset = FHRPGroupAssignment.objects.all() def get_return_url(self, request, obj=None): - return obj.object.get_absolute_url() if obj else super().get_return_url(request) + return obj.interface.get_absolute_url() if obj else super().get_return_url(request) # diff --git a/netbox/templates/dcim/interface.html b/netbox/templates/dcim/interface.html index f4ab30e4d..811bf6257 100644 --- a/netbox/templates/dcim/interface.html +++ b/netbox/templates/dcim/interface.html @@ -459,7 +459,7 @@
{% if perms.ipam.add_ipaddress %} diff --git a/netbox/templates/ipam/fhrpgroupassignment_edit.html b/netbox/templates/ipam/fhrpgroupassignment_edit.html index 730d2a15a..5801febca 100644 --- a/netbox/templates/ipam/fhrpgroupassignment_edit.html +++ b/netbox/templates/ipam/fhrpgroupassignment_edit.html @@ -9,7 +9,7 @@
- +
{% render_field form.group %} diff --git a/netbox/templates/ipam/inc/panels/fhrp_groups.html b/netbox/templates/ipam/inc/panels/fhrp_groups.html index 3ed4f1761..e5cb26104 100644 --- a/netbox/templates/ipam/inc/panels/fhrp_groups.html +++ b/netbox/templates/ipam/inc/panels/fhrp_groups.html @@ -7,6 +7,7 @@ Group + Protocol Virtual IPs Priority @@ -15,7 +16,10 @@ {% for assignment in object.fhrp_group_assignments.all %} - {{ assignment.group }} + {{ assignment.group.group_id }} + + + {{ assignment.group.get_protocol_display }} {% for ipaddress in assignment.group.ip_addresses.all %} @@ -37,12 +41,12 @@
{% if perms.ipam.add_ipaddress %} diff --git a/netbox/virtualization/models.py b/netbox/virtualization/models.py index 3567b86c5..08df36d4d 100644 --- a/netbox/virtualization/models.py +++ b/netbox/virtualization/models.py @@ -400,9 +400,9 @@ class VMInterface(PrimaryModel, BaseInterface): ) fhrp_group_assignments = GenericRelation( to='ipam.FHRPGroupAssignment', - content_type_field='content_type', - object_id_field='object_id', - related_query_name='vminterface' + content_type_field='interface_type', + object_id_field='interface_id', + related_query_name='+' ) objects = RestrictedQuerySet.as_manager() From 412430e1c3eca4adb09050984bf7bf63793e5635 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Tue, 2 Nov 2021 15:26:45 -0400 Subject: [PATCH 135/289] Docs & changelog for #6235 --- docs/core-functionality/ipam.md | 4 ++++ docs/models/ipam/fhrpgroup.md | 14 ++++++++++++++ docs/release-notes/version-3.1.md | 4 ++++ 3 files changed, 22 insertions(+) create mode 100644 docs/models/ipam/fhrpgroup.md diff --git a/docs/core-functionality/ipam.md b/docs/core-functionality/ipam.md index c1e77069e..dd05d6a01 100644 --- a/docs/core-functionality/ipam.md +++ b/docs/core-functionality/ipam.md @@ -17,3 +17,7 @@ {!models/ipam/vrf.md!} {!models/ipam/routetarget.md!} + +__ + +{!models/ipam/fhrpgroup.md!} diff --git a/docs/models/ipam/fhrpgroup.md b/docs/models/ipam/fhrpgroup.md new file mode 100644 index 000000000..ec21ca37f --- /dev/null +++ b/docs/models/ipam/fhrpgroup.md @@ -0,0 +1,14 @@ +# FHRP Group + +A first-hop redundancy protocol (FHRP) enables multiple physical interfaces to present a virtual IP address in a redundant manner. Example of such protocols include: + +* Hot Standby Router Protocol (HSRP) +* Virtual Router Redundancy Protocol (VRRP) +* Common Address Redundancy Protocol (CARP) +* Gateway Load Balancing Protocol (GLBP) + +NetBox models these redundancy groups by protocol and group ID. Each group may optionally be assigned an authentication type and key. (Note that the authentication key is stored as a plaintext value in NetBox.) Each group may be assigned or more virtual IPv4 and/or IPv6 addresses. + +## FHRP Group Assignments + +Member device and VM interfaces can be assigned to FHRP groups, along with a numeric priority value. For instance, three interfaces, each belonging to a different router, may each be assigned to the same FHRP group to serve a common virtual IP address. Each of these assignments would typically receive a different priority. diff --git a/docs/release-notes/version-3.1.md b/docs/release-notes/version-3.1.md index ff615a92b..65d3627e5 100644 --- a/docs/release-notes/version-3.1.md +++ b/docs/release-notes/version-3.1.md @@ -37,6 +37,10 @@ Dynamic configuration parameters may also still be defined within `configuration For a complete list of supported parameters, please see the [dynamic configuration documentation](../configuration/dynamic-settings.md). +#### First Hop Redundancy Protocol (FHRP) Groups ([#6235](https://github.com/netbox-community/netbox/issues/6235)) + +A new FHRP group model has been introduced to aid in modeling the configurations of protocols such as HSRP, VRRP, and GLBP. Each FHRP group may be assigned one or more virtual IP addresses, as well as an authentication type and key. Member device and VM interfaces may be associated with one or more FHRP groups, with each assignment receiving a numeric priority designation. + #### Conditional Webhooks ([#6238](https://github.com/netbox-community/netbox/issues/6238)) Webhooks now include a `conditions` field, which may be used to specify conditions under which a webhook triggers. For example, you may wish to generate outgoing requests for a device webhook only when its status is "active" or "staged". This can be done by declaring conditional logic in JSON: From 25957bfae3086e769f22ee337311154182344f23 Mon Sep 17 00:00:00 2001 From: Daniel Sheppard Date: Wed, 3 Nov 2021 08:56:04 -0500 Subject: [PATCH 136/289] Fix migration issues --- netbox/ipam/migrations/{0052_asn_model.py => 0053_asn_model.py} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename netbox/ipam/migrations/{0052_asn_model.py => 0053_asn_model.py} (97%) diff --git a/netbox/ipam/migrations/0052_asn_model.py b/netbox/ipam/migrations/0053_asn_model.py similarity index 97% rename from netbox/ipam/migrations/0052_asn_model.py rename to netbox/ipam/migrations/0053_asn_model.py index 04eac76c3..1c7ee8e23 100644 --- a/netbox/ipam/migrations/0052_asn_model.py +++ b/netbox/ipam/migrations/0053_asn_model.py @@ -12,7 +12,7 @@ class Migration(migrations.Migration): dependencies = [ ('tenancy', '0004_extend_tag_support'), ('extras', '0064_configrevision'), - ('ipam', '0051_extend_tag_support'), + ('ipam', '0052_fhrpgroup'), ] operations = [ From 0ec0185d844b251c04d190b8d51655ea3ca0c2b3 Mon Sep 17 00:00:00 2001 From: Daniel Sheppard Date: Wed, 3 Nov 2021 09:51:03 -0500 Subject: [PATCH 137/289] Fix Migration --- netbox/dcim/migrations/0141_asn_model.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/netbox/dcim/migrations/0141_asn_model.py b/netbox/dcim/migrations/0141_asn_model.py index 7650679f1..6f011f35d 100644 --- a/netbox/dcim/migrations/0141_asn_model.py +++ b/netbox/dcim/migrations/0141_asn_model.py @@ -6,7 +6,7 @@ from django.db import migrations, models class Migration(migrations.Migration): dependencies = [ - ('ipam', '0052_asn_model'), + ('ipam', '0053_asn_model'), ('dcim', '0140_wireless'), ] From 76d73abd81dfb1653565b96d18401ed9a8ae3e9b Mon Sep 17 00:00:00 2001 From: Daniel Sheppard Date: Wed, 3 Nov 2021 10:04:26 -0500 Subject: [PATCH 138/289] Update ip.py --- netbox/ipam/tables/ip.py | 1 - 1 file changed, 1 deletion(-) diff --git a/netbox/ipam/tables/ip.py b/netbox/ipam/tables/ip.py index 5c41a3f0b..462fc8845 100644 --- a/netbox/ipam/tables/ip.py +++ b/netbox/ipam/tables/ip.py @@ -12,7 +12,6 @@ from ipam.models import * __all__ = ( 'AggregateTable', 'ASNTable', - 'InterfaceIPAddressTable', 'AssignedIPAddressesTable', 'IPAddressAssignTable', 'IPAddressTable', From 04d145d6d8957956369bdd224a852d7cd172fecf Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Wed, 3 Nov 2021 11:47:11 -0400 Subject: [PATCH 139/289] Add summary page to release notes --- docs/release-notes/index.md | 114 +++++++++++++++++++++++++++++- docs/release-notes/version-3.1.md | 2 +- mkdocs.yml | 2 + 3 files changed, 116 insertions(+), 2 deletions(-) mode change 120000 => 100644 docs/release-notes/index.md diff --git a/docs/release-notes/index.md b/docs/release-notes/index.md deleted file mode 120000 index 247ba3e1d..000000000 --- a/docs/release-notes/index.md +++ /dev/null @@ -1 +0,0 @@ -version-3.0.md \ No newline at end of file diff --git a/docs/release-notes/index.md b/docs/release-notes/index.md new file mode 100644 index 000000000..7caa1e3ab --- /dev/null +++ b/docs/release-notes/index.md @@ -0,0 +1,113 @@ +# Release Notes + +Listed below are the major features introduced in each NetBox release. For more detail on a specific release train, see its individual release notes page. + +#### [Version 3.1](./version-3.1.md) (December 2021) + +* Contact Objects ([#1344](https://github.com/netbox-community/netbox/issues/1344)) +* Wireless Networks ([#3979](https://github.com/netbox-community/netbox/issues/3979)) +* Dynamic Configuration Updates ([#5883](https://github.com/netbox-community/netbox/issues/5883)) +* First Hop Redundancy Protocol (FHRP) Groups ([#6235](https://github.com/netbox-community/netbox/issues/6235)) +* Conditional Webhooks ([#6238](https://github.com/netbox-community/netbox/issues/6238)) +* Interface Bridging ([#6346](https://github.com/netbox-community/netbox/issues/6346)) +* Multiple ASNs per Site ([#6732](https://github.com/netbox-community/netbox/issues/6732)) +* Single Sign-On (SSO) Authentication ([#7649](https://github.com/netbox-community/netbox/issues/7649)) + +#### [Version 3.0](./version-3.0.md) (August 2021) + +* Updated User Interface ([#5893](https://github.com/netbox-community/netbox/issues/5893)) +* GraphQL API ([#2007](https://github.com/netbox-community/netbox/issues/2007)) +* IP Ranges ([#834](https://github.com/netbox-community/netbox/issues/834)) +* Custom Model Validation ([#5963](https://github.com/netbox-community/netbox/issues/5963)) +* SVG Cable Traces ([#6000](https://github.com/netbox-community/netbox/issues/6000)) +* New Views for Models Previously Under the Admin UI ([#6466](https://github.com/netbox-community/netbox/issues/6466)) +* REST API Token Provisioning ([#5264](https://github.com/netbox-community/netbox/issues/5264)) +* New Housekeeping Command ([#6590](https://github.com/netbox-community/netbox/issues/6590)) +* Custom Queue Support for Plugins ([#6651](https://github.com/netbox-community/netbox/issues/6651)) + +#### [Version 2.11](./version-2.11.md) (April 2021) + +* Journaling Support ([#151](https://github.com/netbox-community/netbox/issues/151)) +* Parent Interface Assignments ([#1519](https://github.com/netbox-community/netbox/issues/1519)) +* Pre- and Post-Change Snapshots in Webhooks ([#3451](https://github.com/netbox-community/netbox/issues/3451)) +* Mark as Connected Without a Cable ([#3648](https://github.com/netbox-community/netbox/issues/3648)) +* Allow Assigning Devices to Locations ([#4971](https://github.com/netbox-community/netbox/issues/4971)) +* Dynamic Object Exports ([#4999](https://github.com/netbox-community/netbox/issues/4999)) +* Variable Scope Support for VLAN Groups ([#5284](https://github.com/netbox-community/netbox/issues/5284)) +* New Site Group Model ([#5892](https://github.com/netbox-community/netbox/issues/5892)) +* Improved Change Logging ([#5913](https://github.com/netbox-community/netbox/issues/5913)) +* Provider Network Modeling ([#5986](https://github.com/netbox-community/netbox/issues/5986)) + +#### [Version 2.10](./version-2.10.md) (December 2020) + +* Route Targets ([#259](https://github.com/netbox-community/netbox/issues/259)) +* REST API Bulk Deletion ([#3436](https://github.com/netbox-community/netbox/issues/3436)) +* REST API Bulk Update ([#4882](https://github.com/netbox-community/netbox/issues/4882)) +* Reimplementation of Custom Fields ([#4878](https://github.com/netbox-community/netbox/issues/4878)) +* Improved Cable Trace Performance ([#4900](https://github.com/netbox-community/netbox/issues/4900)) + +#### [Version 2.9](./version-2.9.md) (August 2020) + +* Object-Based Permissions ([#554](https://github.com/netbox-community/netbox/issues/554)) +* Background Execution of Scripts & Reports ([#2006](https://github.com/netbox-community/netbox/issues/2006)) +* Named Virtual Chassis ([#2018](https://github.com/netbox-community/netbox/issues/2018)) +* Changes to Tag Creation ([#3703](https://github.com/netbox-community/netbox/issues/3703)) +* Dedicated Model for VM Interfaces ([#4721](https://github.com/netbox-community/netbox/issues/4721)) +* REST API Endpoints for Users and Groups ([#4877](https://github.com/netbox-community/netbox/issues/4877)) + +#### [Version 2.8](./version-2.8.md) (April 2020) + +* Remote Authentication Support ([#2328](https://github.com/netbox-community/netbox/issues/2328)) +* Plugins ([#3351](https://github.com/netbox-community/netbox/issues/3351)) + +#### [Version 2.7](./version-2.7.md) (January 2020) + +* Enhanced Device Type Import ([#451](https://github.com/netbox-community/netbox/issues/451)) +* Bulk Import of Device Components ([#822](https://github.com/netbox-community/netbox/issues/822)) +* External File Storage ([#1814](https://github.com/netbox-community/netbox/issues/1814)) +* Rack Elevations Rendered via SVG ([#2248](https://github.com/netbox-community/netbox/issues/2248)) + +#### [Version 2.6](./version-2.6.md) (June 2019) + +* Power Panels and Feeds ([#54](https://github.com/netbox-community/netbox/issues/54)) +* Caching ([#2647](https://github.com/netbox-community/netbox/issues/2647)) +* View Permissions ([#323](https://github.com/netbox-community/netbox/issues/323)) +* Custom Links ([#969](https://github.com/netbox-community/netbox/issues/969)) +* Prometheus Metrics ([#3104](https://github.com/netbox-community/netbox/issues/3104)) + +#### [Version 2.5](./version-2.5.md) (December 2018) + +* Patch Panels and Cables ([#20](https://github.com/netbox-community/netbox/issues/20)) + +#### [Version 2.4](./version-2.4.md) (August 2018) + +* Webhooks ([#81](https://github.com/netbox-community/netbox/issues/81)) +* Tagging ([#132](https://github.com/netbox-community/netbox/issues/132)) +* Contextual Configuration Data ([#1349](https://github.com/netbox-community/netbox/issues/1349)) +* Change Logging ([#1898](https://github.com/netbox-community/netbox/issues/1898)) + +#### [Version 2.3](./version-2.3.md) (February 2018) + +* Virtual Chassis ([#99](https://github.com/netbox-community/netbox/issues/99)) +* Interface VLAN Assignments ([#150](https://github.com/netbox-community/netbox/issues/150)) +* Bulk Object Creation via the API ([#1553](https://github.com/netbox-community/netbox/issues/1553)) +* Automatic Provisioning of Next Available Prefixes ([#1694](https://github.com/netbox-community/netbox/issues/1694)) +* Bulk Renaming of Device/VM Components ([#1781](https://github.com/netbox-community/netbox/issues/1781)) + +#### [Version 2.2](./version-2.2.md) (October 2017) + +* Virtual Machines and Clusters ([#142](https://github.com/netbox-community/netbox/issues/142)) +* Custom Validation Reports ([#1511](https://github.com/netbox-community/netbox/issues/1511)) + +#### [Version 2.1](./version-2.1.md) (July 2017) + +* IP Address Roles ([#819](https://github.com/netbox-community/netbox/issues/819)) +* Automatic Provisioning of Next Available IP ([#1246](https://github.com/netbox-community/netbox/issues/1246)) +* NAPALM Integration ([#1348](https://github.com/netbox-community/netbox/issues/1348)) + +#### [Version 2.0](./version-2.0.md) (May 2017) + +* API 2.0 ([#113](https://github.com/netbox-community/netbox/issues/113)) +* Image Attachments ([#152](https://github.com/netbox-community/netbox/issues/152)) +* Global Search ([#159](https://github.com/netbox-community/netbox/issues/159)) +* Rack Elevations View ([#951](https://github.com/netbox-community/netbox/issues/951)) diff --git a/docs/release-notes/version-3.1.md b/docs/release-notes/version-3.1.md index 65d3627e5..aa6b002e1 100644 --- a/docs/release-notes/version-3.1.md +++ b/docs/release-notes/version-3.1.md @@ -10,7 +10,7 @@ ### New Features -#### Contacts ([#1344](https://github.com/netbox-community/netbox/issues/1344)) +#### Contact Objects ([#1344](https://github.com/netbox-community/netbox/issues/1344)) A set of new models for tracking contact information has been introduced within the tenancy app. Users may now create individual contact objects to be associated with various models within NetBox. Each contact has a name, title, email address, etc. Contacts can be arranged in hierarchical groups for ease of management. diff --git a/mkdocs.yml b/mkdocs.yml index 84a7d1033..a13826ecf 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -110,6 +110,8 @@ nav: - Web UI: 'development/web-ui.md' - Release Checklist: 'development/release-checklist.md' - Release Notes: + - Summary: 'release-notes/index.md' + - Version 3.1: 'release-notes/version-3.1.md' - Version 3.0: 'release-notes/version-3.0.md' - Version 2.11: 'release-notes/version-2.11.md' - Version 2.10: 'release-notes/version-2.10.md' From cf9eaf2eff576041cff85d739aa22e1fd18ea2de Mon Sep 17 00:00:00 2001 From: Daniel Sheppard Date: Wed, 3 Nov 2021 11:36:54 -0500 Subject: [PATCH 140/289] Fix dcim/views.py merge error --- netbox/dcim/views.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/netbox/dcim/views.py b/netbox/dcim/views.py index 7eef45f1b..f07bc6900 100644 --- a/netbox/dcim/views.py +++ b/netbox/dcim/views.py @@ -15,7 +15,7 @@ from django.views.generic import View from circuits.models import Circuit from extras.views import ObjectChangeLogView, ObjectConfigContextView, ObjectJournalView from ipam.models import ASN, IPAddress, Prefix, Service, VLAN -from ipam.tables import InterfaceIPAddressTable, InterfaceVLANTable +from ipam.tables import AssignedIPAddressesTable, InterfaceVLANTable from netbox.views import generic from utilities.forms import ConfirmationForm from utilities.paginator import EnhancedPaginator, get_paginate_count From c72f25c69376bd423ab79b9026c58e11e9f97622 Mon Sep 17 00:00:00 2001 From: Daniel Sheppard Date: Wed, 3 Nov 2021 12:22:44 -0500 Subject: [PATCH 141/289] #6732 - Add documentation --- docs/core-functionality/ipam.md | 6 +++++- docs/models/ipam/asn.md | 15 +++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 docs/models/ipam/asn.md diff --git a/docs/core-functionality/ipam.md b/docs/core-functionality/ipam.md index dd05d6a01..9fa5e0eb4 100644 --- a/docs/core-functionality/ipam.md +++ b/docs/core-functionality/ipam.md @@ -18,6 +18,10 @@ {!models/ipam/vrf.md!} {!models/ipam/routetarget.md!} -__ +--- {!models/ipam/fhrpgroup.md!} + +--- + +{!models/ipam/asn.md!} diff --git a/docs/models/ipam/asn.md b/docs/models/ipam/asn.md new file mode 100644 index 000000000..cfef1da29 --- /dev/null +++ b/docs/models/ipam/asn.md @@ -0,0 +1,15 @@ +# ASN + +ASN is short for Autonomous System Number. This identifier is used in the BGP protocol to identify which "autonomous system" a particular prefix is originating and transiting through. + +The AS number model within NetBox allows you to model some of this real-world relationship. + +Within NetBox: + +* AS numbers are globally unique +* Each AS number must be associated with a RIR (ARIN, RFC 6996, etc) +* Each AS number can be associated with many different sites +* Each site can have many different AS numbers +* Each AS number can be assigned to a single tenant + + From 839afe5ac067f55ad585c8fc63601bbba4f8894f Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Wed, 3 Nov 2021 14:01:59 -0400 Subject: [PATCH 142/289] Improve webhook tests --- netbox/extras/tests/test_webhooks.py | 36 ++++++++++++++++++++++++++-- netbox/extras/webhooks_worker.py | 20 +++++++++++++--- netbox/templates/extras/webhook.html | 12 ++++++++++ 3 files changed, 63 insertions(+), 5 deletions(-) diff --git a/netbox/extras/tests/test_webhooks.py b/netbox/extras/tests/test_webhooks.py index 57db6dd02..811260f92 100644 --- a/netbox/extras/tests/test_webhooks.py +++ b/netbox/extras/tests/test_webhooks.py @@ -9,11 +9,12 @@ from django.urls import reverse from requests import Session from rest_framework import status +from dcim.choices import SiteStatusChoices from dcim.models import Site from extras.choices import ObjectChangeActionChoices from extras.models import Tag, Webhook -from extras.webhooks import enqueue_object, flush_webhooks, generate_signature -from extras.webhooks_worker import process_webhook +from extras.webhooks import enqueue_object, flush_webhooks, generate_signature, serialize_for_webhook +from extras.webhooks_worker import eval_conditions, process_webhook from utilities.testing import APITestCase @@ -251,6 +252,37 @@ class WebhookTest(APITestCase): self.assertEqual(job.kwargs['snapshots']['prechange']['name'], sites[i].name) self.assertEqual(job.kwargs['snapshots']['prechange']['tags'], ['Bar', 'Foo']) + def test_webhook_conditions(self): + # Create a conditional Webhook + webhook = Webhook( + name='Conditional Webhook', + type_create=True, + type_update=True, + payload_url='http://localhost/', + conditions={ + 'and': [ + { + 'attr': 'status.value', + 'value': 'active', + } + ] + } + ) + + # Create a Site to evaluate + site = Site.objects.create(name='Site 1', slug='site-1', status=SiteStatusChoices.STATUS_STAGING) + data = serialize_for_webhook(site) + + # Evaluate the conditions (status='staging') + self.assertFalse(eval_conditions(webhook, data)) + + # Change the site's status + site.status = SiteStatusChoices.STATUS_ACTIVE + data = serialize_for_webhook(site) + + # Evaluate the conditions (status='active') + self.assertTrue(eval_conditions(webhook, data)) + def test_webhooks_worker(self): request_id = uuid.uuid4() diff --git a/netbox/extras/webhooks_worker.py b/netbox/extras/webhooks_worker.py index 6bbfba907..1f0a66b8a 100644 --- a/netbox/extras/webhooks_worker.py +++ b/netbox/extras/webhooks_worker.py @@ -12,15 +12,29 @@ from .webhooks import generate_signature logger = logging.getLogger('netbox.webhooks_worker') +def eval_conditions(webhook, data): + """ + Test whether the given data meets the conditions of the webhook (if any). Return True + if met or no conditions are specified. + """ + if not webhook.conditions: + return True + + logger.debug(f'Evaluating webhook conditions: {webhook.conditions}') + if ConditionSet(webhook.conditions).eval(data): + return True + + return False + + @job('default') def process_webhook(webhook, model_name, event, data, snapshots, timestamp, username, request_id): """ Make a POST request to the defined Webhook """ # Evaluate webhook conditions (if any) - if webhook.conditions: - if not ConditionSet(webhook.conditions).eval(data): - return + if not eval_conditions(webhook, data): + return # Prepare context data for headers & body templates context = { diff --git a/netbox/templates/extras/webhook.html b/netbox/templates/extras/webhook.html index c92ec4c99..9aa103cb6 100644 --- a/netbox/templates/extras/webhook.html +++ b/netbox/templates/extras/webhook.html @@ -132,6 +132,18 @@
+
+
+ Conditions +
+
+ {% if object.conditions %} +
{{ object.conditions|render_json }}
+ {% else %} +

None

+ {% endif %} +
+
Additional Headers From dcececf9c03af834f49b5f3be5af56bc3714d1a2 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Wed, 3 Nov 2021 14:02:43 -0400 Subject: [PATCH 143/289] Improve documentation and testing for conditions --- docs/reference/conditions.md | 37 ++++++++++++++++++++++++-- netbox/extras/conditions.py | 6 ++++- netbox/extras/tests/test_conditions.py | 10 +++++++ 3 files changed, 50 insertions(+), 3 deletions(-) diff --git a/docs/reference/conditions.md b/docs/reference/conditions.md index c335bf9a8..40b2ccb4b 100644 --- a/docs/reference/conditions.md +++ b/docs/reference/conditions.md @@ -23,14 +23,47 @@ A condition is expressed as a JSON object with the following keys: * `in`: Is present within a list of values * `contains`: Contains the specified value +### Accessing Nested Keys + +To access nested keys, use dots to denote the path to the desired attribute. For example, assume the following data: + +```json +{ + "a": { + "b": { + "c": 123 + } + } +} +``` + +The following condition will evaluate as true: + +```json +{ + "attr": "a.b.c", + "value": 123 +} +``` + ### Examples -`name` equals "foobar": +`name` equals "foo": ```json { "attr": "name", - "value": "foobar" + "value": "foo" +} +``` + +`name` does not equal "foo" + +```json +{ + "attr": "name", + "value": "foo", + "negate": true } ``` diff --git a/netbox/extras/conditions.py b/netbox/extras/conditions.py index 6f1b012eb..965488c3a 100644 --- a/netbox/extras/conditions.py +++ b/netbox/extras/conditions.py @@ -64,7 +64,11 @@ class Condition: """ Evaluate the provided data to determine whether it matches the condition. """ - value = functools.reduce(dict.get, self.attr.split('.'), data) + try: + value = functools.reduce(dict.get, self.attr.split('.'), data) + except TypeError: + # Invalid key path + value = None result = self.eval_func(value) if self.negate: diff --git a/netbox/extras/tests/test_conditions.py b/netbox/extras/tests/test_conditions.py index ee6afeaf6..8e02eb75d 100644 --- a/netbox/extras/tests/test_conditions.py +++ b/netbox/extras/tests/test_conditions.py @@ -35,6 +35,16 @@ class ConditionTestCase(TestCase): # 'gt' supports only numeric values Condition('x', 'foo', 'gt') + # + # Nested attrs tests + # + + def test_nested(self): + c = Condition('x.y.z', 1) + self.assertTrue(c.eval({'x': {'y': {'z': 1}}})) + self.assertFalse(c.eval({'x': {'y': {'z': 2}}})) + self.assertFalse(c.eval({'a': {'b': {'c': 1}}})) + # # Operator tests # From 7a97d5d4ebc75f4bfe224284d3ac0e453f78eb0a Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Wed, 3 Nov 2021 14:40:14 -0400 Subject: [PATCH 144/289] Changelog for #6732; misc fixes --- docs/release-notes/version-3.1.md | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/docs/release-notes/version-3.1.md b/docs/release-notes/version-3.1.md index aa6b002e1..5c039f38b 100644 --- a/docs/release-notes/version-3.1.md +++ b/docs/release-notes/version-3.1.md @@ -47,7 +47,7 @@ Webhooks now include a `conditions` field, which may be used to specify conditio ```json { - "attr": "status", + "attr": "status.value", "op": "in", "value": ["active", "staged"] } @@ -61,6 +61,12 @@ A `bridge` field has been added to the interface model for devices and virtual m Multiple interfaces can be bridged to a single virtual interface to effect a bridge group. Alternatively, two physical interfaces can be bridged to one another, to effect an internal cross-connect. +#### Multiple ASNs per Site ([#6732](https://github.com/netbox-community/netbox/issues/6732)) + +With the introduction of the new ASN model, NetBox now supports the assignment of multiple ASNs per site. Each ASN instance must have a 32-bit AS number, and may optionally be assigned to a RIR and/or Tenant. + +The `asn` integer field on the site model has been preserved to maintain backward compatability until a later release. + #### Single Sign-On (SSO) Authentication ([#7649](https://github.com/netbox-community/netbox/issues/7649)) Support for single sign-on (SSO) authentication has been added via the [python-social-auth](https://github.com/python-social-auth) library. NetBox administrators can configure one of the [supported authentication backends](https://python-social-auth.readthedocs.io/en/latest/intro.html#auth-providers) to enable SSO authentication for users. @@ -86,6 +92,8 @@ Support for single sign-on (SSO) authentication has been added via the [python-s ### REST API Changes +* Added the following endpoints for ASNs: + * `/api/ipam/asn/` * Added the following endpoints for contacts: * `/api/tenancy/contact-assignments/` * `/api/tenancy/contact-groups/` @@ -120,16 +128,19 @@ Support for single sign-on (SSO) authentication has been added via the [python-s * Added `airflow` field * dcim.Interface * Added `bridge` field - * Added `rf_role` field * Added `rf_channel` field * Added `rf_channel_frequency` field - * Added `rf_chanel_width` field + * Added `rf_channel_width` field + * Added `rf_role` field * Added `tx_power` field + * Added `wireless_link` field * Added `wwn` field * `cable_peer` has been renamed to `link_peer` * `cable_peer_type` has been renamed to `link_peer_type` * dcim.Location * Added `tenant` field +* dcim.Site + * Added `asns` relationship to ipam.ASN * extras.Webhook * Added the `conditions` field * virtualization.VMInterface From 7a55832a223ec8f92ec0b2514251a0ef13ee9e63 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Wed, 3 Nov 2021 15:15:14 -0400 Subject: [PATCH 145/289] #6732: Add asns relationship to SiteSerializer and extend tests --- netbox/dcim/api/serializers.py | 18 +++++++++------ netbox/dcim/api/views.py | 3 +-- netbox/dcim/tests/test_api.py | 12 +++++++++- netbox/dcim/tests/test_views.py | 40 ++++++++++----------------------- netbox/ipam/api/serializers.py | 1 - netbox/ipam/models/ip.py | 10 ++++----- 6 files changed, 40 insertions(+), 44 deletions(-) diff --git a/netbox/dcim/api/serializers.py b/netbox/dcim/api/serializers.py index 6fd67bf69..b85283bdb 100644 --- a/netbox/dcim/api/serializers.py +++ b/netbox/dcim/api/serializers.py @@ -1,4 +1,3 @@ -from django.conf import settings from django.contrib.contenttypes.models import ContentType from drf_yasg.utils import swagger_serializer_method from rest_framework import serializers @@ -7,8 +6,8 @@ from timezone_field.rest_framework import TimeZoneSerializerField from dcim.choices import * from dcim.constants import * from dcim.models import * -from ipam.api.nested_serializers import NestedIPAddressSerializer, NestedVLANSerializer, NestedASNSerializer -from ipam.models import VLAN +from ipam.api.nested_serializers import NestedASNSerializer, NestedIPAddressSerializer, NestedVLANSerializer +from ipam.models import ASN, VLAN from netbox.api import ChoiceField, ContentTypeField, SerializedPKRelatedField from netbox.api.serializers import ( NestedGroupModelSerializer, PrimaryModelSerializer, ValidatedModelSerializer, WritableNestedSerializer, @@ -113,13 +112,19 @@ class SiteSerializer(PrimaryModelSerializer): region = NestedRegionSerializer(required=False, allow_null=True) group = NestedSiteGroupSerializer(required=False, allow_null=True) tenant = NestedTenantSerializer(required=False, allow_null=True) - asns = NestedASNSerializer(many=True, required=False, allow_null=True) time_zone = TimeZoneSerializerField(required=False) + asns = SerializedPKRelatedField( + queryset=ASN.objects.all(), + serializer=NestedASNSerializer, + required=False, + many=True + ) + + # Related object counts circuit_count = serializers.IntegerField(read_only=True) device_count = serializers.IntegerField(read_only=True) prefix_count = serializers.IntegerField(read_only=True) rack_count = serializers.IntegerField(read_only=True) - asn_count = serializers.IntegerField(read_only=True) virtualmachine_count = serializers.IntegerField(read_only=True) vlan_count = serializers.IntegerField(read_only=True) @@ -129,8 +134,7 @@ class SiteSerializer(PrimaryModelSerializer): 'id', 'url', 'display', 'name', 'slug', 'status', 'region', 'group', 'tenant', 'facility', 'asn', 'asns', 'time_zone', 'description', 'physical_address', 'shipping_address', 'latitude', 'longitude', 'contact_name', 'contact_phone', 'contact_email', 'comments', 'tags', 'custom_fields', 'created', 'last_updated', - 'asn_count', 'circuit_count', 'device_count', 'prefix_count', 'rack_count', 'virtualmachine_count', - 'vlan_count', + 'circuit_count', 'device_count', 'prefix_count', 'rack_count', 'virtualmachine_count', 'vlan_count', ] diff --git a/netbox/dcim/api/views.py b/netbox/dcim/api/views.py index e05ccaed2..b6685aba8 100644 --- a/netbox/dcim/api/views.py +++ b/netbox/dcim/api/views.py @@ -137,9 +137,8 @@ class SiteGroupViewSet(CustomFieldModelViewSet): class SiteViewSet(CustomFieldModelViewSet): queryset = Site.objects.prefetch_related( - 'region', 'tenant', 'tags' + 'region', 'tenant', 'asns', 'tags' ).annotate( - asn_count=count_related(ASN, 'sites'), device_count=count_related(Device, 'site'), rack_count=count_related(Rack, 'site'), prefix_count=count_related(Prefix, 'site'), diff --git a/netbox/dcim/tests/test_api.py b/netbox/dcim/tests/test_api.py index 042b4ce28..0c733cc18 100644 --- a/netbox/dcim/tests/test_api.py +++ b/netbox/dcim/tests/test_api.py @@ -6,7 +6,7 @@ from rest_framework import status from dcim.choices import * from dcim.constants import * from dcim.models import * -from ipam.models import VLAN +from ipam.models import ASN, RIR, VLAN from utilities.testing import APITestCase, APIViewTestCases from virtualization.models import Cluster, ClusterType @@ -143,6 +143,13 @@ class SiteTest(APIViewTestCases.APIViewTestCase): ) Site.objects.bulk_create(sites) + rir = RIR.objects.create(name='RFC 6996', is_private=True) + + asns = [ + ASN(asn=65000 + i, rir=rir) for i in range(8) + ] + ASN.objects.bulk_create(asns) + cls.create_data = [ { 'name': 'Site 4', @@ -150,6 +157,7 @@ class SiteTest(APIViewTestCases.APIViewTestCase): 'region': regions[1].pk, 'group': groups[1].pk, 'status': SiteStatusChoices.STATUS_ACTIVE, + 'asns': [asns[0].pk, asns[1].pk], }, { 'name': 'Site 5', @@ -157,6 +165,7 @@ class SiteTest(APIViewTestCases.APIViewTestCase): 'region': regions[1].pk, 'group': groups[1].pk, 'status': SiteStatusChoices.STATUS_ACTIVE, + 'asns': [asns[2].pk, asns[3].pk], }, { 'name': 'Site 6', @@ -164,6 +173,7 @@ class SiteTest(APIViewTestCases.APIViewTestCase): 'region': regions[1].pk, 'group': groups[1].pk, 'status': SiteStatusChoices.STATUS_ACTIVE, + 'asns': [asns[4].pk, asns[5].pk], }, ] diff --git a/netbox/dcim/tests/test_views.py b/netbox/dcim/tests/test_views.py index dc22b18a0..ac1b93274 100644 --- a/netbox/dcim/tests/test_views.py +++ b/netbox/dcim/tests/test_views.py @@ -11,7 +11,7 @@ from netaddr import EUI from dcim.choices import * from dcim.constants import * from dcim.models import * -from ipam.models import ASN, VLAN, RIR +from ipam.models import ASN, RIR, VLAN from tenancy.models import Tenant from utilities.testing import ViewTestCases, create_tags, create_test_device @@ -110,41 +110,24 @@ class SiteTestCase(ViewTestCases.PrimaryObjectViewTestCase): for group in groups: group.save() + rir = RIR.objects.create(name='RFC 6996', is_private=True) + + asns = [ + ASN(asn=65000 + i, rir=rir) for i in range(8) + ] + ASN.objects.bulk_create(asns) + sites = Site.objects.bulk_create([ Site(name='Site 1', slug='site-1', region=regions[0], group=groups[1]), Site(name='Site 2', slug='site-2', region=regions[0], group=groups[1]), Site(name='Site 3', slug='site-3', region=regions[0], group=groups[1]), ]) + sites[0].asns.set([asns[0], asns[1]]) + sites[1].asns.set([asns[2], asns[3]]) + sites[2].asns.set([asns[4], asns[5]]) tags = create_tags('Alpha', 'Bravo', 'Charlie') - rir = RIR.objects.create(name='RFC 6996', is_private=True) - - asns = [ - ASN(asn=65000, rir=rir), - ASN(asn=65001, rir=rir), - ASN(asn=65002, rir=rir), - ASN(asn=65003, rir=rir), - ASN(asn=65004, rir=rir), - ASN(asn=65005, rir=rir), - ASN(asn=65006, rir=rir), - ASN(asn=65007, rir=rir), - ASN(asn=65008, rir=rir), - ASN(asn=65009, rir=rir), - ASN(asn=65010, rir=rir), - ] - ASN.objects.bulk_create(asns) - - asns[0].sites.set([sites[0]]) - asns[2].sites.set([sites[0]]) - asns[3].sites.set([sites[1]]) - asns[4].sites.set([sites[2]]) - asns[5].sites.set([sites[1]]) - asns[6].sites.set([sites[2]]) - asns[7].sites.set([sites[2]]) - asns[8].sites.set([sites[2]]) - asns[10].sites.set([sites[0]]) - cls.form_data = { 'name': 'Site X', 'slug': 'site-x', @@ -153,6 +136,7 @@ class SiteTestCase(ViewTestCases.PrimaryObjectViewTestCase): 'group': groups[1].pk, 'tenant': None, 'facility': 'Facility X', + 'asns': [asns[6].pk, asns[7].pk], 'time_zone': pytz.UTC, 'description': 'Site description', 'physical_address': '742 Evergreen Terrace, Springfield, USA', diff --git a/netbox/ipam/api/serializers.py b/netbox/ipam/api/serializers.py index eae653ad7..28be07334 100644 --- a/netbox/ipam/api/serializers.py +++ b/netbox/ipam/api/serializers.py @@ -23,7 +23,6 @@ from .nested_serializers import * class ASNSerializer(PrimaryModelSerializer): url = serializers.HyperlinkedIdentityField(view_name='ipam-api:asn-detail') tenant = NestedTenantSerializer(required=False, allow_null=True) - site_count = serializers.IntegerField(read_only=True) class Meta: diff --git a/netbox/ipam/models/ip.py b/netbox/ipam/models/ip.py index ad707dda1..b6c0a1b6b 100644 --- a/netbox/ipam/models/ip.py +++ b/netbox/ipam/models/ip.py @@ -73,11 +73,12 @@ class RIR(OrganizationalModel): @extras_features('custom_fields', 'custom_links', 'export_templates', 'tags', 'webhooks') class ASN(PrimaryModel): - + """ + An autonomous system (AS) number is typically used to represent an independent routing domain. A site can have + one or more ASNs assigned to it. + """ asn = ASNField( unique=True, - blank=False, - null=False, verbose_name='ASN', help_text='32-bit autonomous system number' ) @@ -89,8 +90,7 @@ class ASN(PrimaryModel): to='ipam.RIR', on_delete=models.PROTECT, related_name='asns', - blank=False, - null=False + verbose_name='RIR' ) tenant = models.ForeignKey( to='tenancy.Tenant', From ea39c8a4c171ab28f36fb0162fe7ba9da10a82d9 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Wed, 3 Nov 2021 15:38:17 -0400 Subject: [PATCH 146/289] Optimize interface REST API endpoints --- netbox/dcim/api/views.py | 3 ++- netbox/virtualization/api/views.py | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/netbox/dcim/api/views.py b/netbox/dcim/api/views.py index b6685aba8..d99e28938 100644 --- a/netbox/dcim/api/views.py +++ b/netbox/dcim/api/views.py @@ -547,7 +547,8 @@ class PowerOutletViewSet(PathEndpointMixin, ModelViewSet): class InterfaceViewSet(PathEndpointMixin, ModelViewSet): queryset = Interface.objects.prefetch_related( - 'device', 'parent', 'bridge', 'lag', '_path__destination', 'cable', '_link_peer', 'ip_addresses', 'tags' + 'device', 'parent', 'bridge', 'lag', '_path__destination', 'cable', '_link_peer', 'wireless_lans', + 'untagged_vlan', 'tagged_vlans', 'ip_addresses', 'tags' ) serializer_class = serializers.InterfaceSerializer filterset_class = filtersets.InterfaceFilterSet diff --git a/netbox/virtualization/api/views.py b/netbox/virtualization/api/views.py index d07ace3d5..0035a3c13 100644 --- a/netbox/virtualization/api/views.py +++ b/netbox/virtualization/api/views.py @@ -80,7 +80,7 @@ class VirtualMachineViewSet(ConfigContextQuerySetMixin, CustomFieldModelViewSet) class VMInterfaceViewSet(ModelViewSet): queryset = VMInterface.objects.prefetch_related( - 'virtual_machine', 'parent', 'tags', 'tagged_vlans', 'ip_addresses' + 'virtual_machine', 'parent', 'tags', 'untagged_vlan', 'tagged_vlans', 'ip_addresses' ) serializer_class = serializers.VMInterfaceSerializer filterset_class = filtersets.VMInterfaceFilterSet From 96cde7d4afb689e781ef806a8f3895d878f21e78 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Wed, 3 Nov 2021 15:55:16 -0400 Subject: [PATCH 147/289] Add wireless_lans to InterfaceSerializer; extend tests --- netbox/dcim/api/serializers.py | 11 +++++++++-- netbox/dcim/tests/test_api.py | 10 ++++++++++ netbox/dcim/tests/test_views.py | 9 +++++++++ 3 files changed, 28 insertions(+), 2 deletions(-) diff --git a/netbox/dcim/api/serializers.py b/netbox/dcim/api/serializers.py index b85283bdb..8e74099da 100644 --- a/netbox/dcim/api/serializers.py +++ b/netbox/dcim/api/serializers.py @@ -17,8 +17,9 @@ from tenancy.api.nested_serializers import NestedTenantSerializer from users.api.nested_serializers import NestedUserSerializer from utilities.api import get_serializer_for_model from virtualization.api.nested_serializers import NestedClusterSerializer -from wireless.api.nested_serializers import NestedWirelessLinkSerializer +from wireless.api.nested_serializers import NestedWirelessLANSerializer, NestedWirelessLinkSerializer from wireless.choices import * +from wireless.models import WirelessLAN from .nested_serializers import * @@ -628,6 +629,12 @@ class InterfaceSerializer(PrimaryModelSerializer, LinkTerminationSerializer, Con ) cable = NestedCableSerializer(read_only=True) wireless_link = NestedWirelessLinkSerializer(read_only=True) + wireless_lans = SerializedPKRelatedField( + queryset=WirelessLAN.objects.all(), + serializer=NestedWirelessLANSerializer, + required=False, + many=True + ) count_ipaddresses = serializers.IntegerField(read_only=True) class Meta: @@ -636,7 +643,7 @@ class InterfaceSerializer(PrimaryModelSerializer, LinkTerminationSerializer, Con 'id', 'url', 'display', 'device', 'name', 'label', 'type', 'enabled', 'parent', 'bridge', 'lag', 'mtu', 'mac_address', 'wwn', 'mgmt_only', 'description', 'mode', 'rf_role', 'rf_channel', 'rf_channel_frequency', 'rf_channel_width', 'tx_power', 'untagged_vlan', 'tagged_vlans', 'mark_connected', 'cable', 'wireless_link', - 'link_peer', 'link_peer_type', 'connected_endpoint', 'connected_endpoint_type', + 'link_peer', 'link_peer_type', 'wireless_lans', 'connected_endpoint', 'connected_endpoint_type', 'connected_endpoint_reachable', 'tags', 'custom_fields', 'created', 'last_updated', 'count_ipaddresses', '_occupied', ] diff --git a/netbox/dcim/tests/test_api.py b/netbox/dcim/tests/test_api.py index 0c733cc18..594bbddaf 100644 --- a/netbox/dcim/tests/test_api.py +++ b/netbox/dcim/tests/test_api.py @@ -9,6 +9,7 @@ from dcim.models import * from ipam.models import ASN, RIR, VLAN from utilities.testing import APITestCase, APIViewTestCases from virtualization.models import Cluster, ClusterType +from wireless.models import WirelessLAN class AppTest(APITestCase): @@ -1202,6 +1203,12 @@ class InterfaceTest(Mixins.ComponentTraceMixin, APIViewTestCases.APIViewTestCase ) VLAN.objects.bulk_create(vlans) + wireless_lans = ( + WirelessLAN(ssid='WLAN1'), + WirelessLAN(ssid='WLAN2'), + ) + WirelessLAN.objects.bulk_create(wireless_lans) + cls.create_data = [ { 'device': device.pk, @@ -1211,6 +1218,7 @@ class InterfaceTest(Mixins.ComponentTraceMixin, APIViewTestCases.APIViewTestCase 'tx_power': 10, 'tagged_vlans': [vlans[0].pk, vlans[1].pk], 'untagged_vlan': vlans[2].pk, + 'wireless_lans': [wireless_lans[0].pk, wireless_lans[1].pk], }, { 'device': device.pk, @@ -1221,6 +1229,7 @@ class InterfaceTest(Mixins.ComponentTraceMixin, APIViewTestCases.APIViewTestCase 'tx_power': 10, 'tagged_vlans': [vlans[0].pk, vlans[1].pk], 'untagged_vlan': vlans[2].pk, + 'wireless_lans': [wireless_lans[0].pk, wireless_lans[1].pk], }, { 'device': device.pk, @@ -1231,6 +1240,7 @@ class InterfaceTest(Mixins.ComponentTraceMixin, APIViewTestCases.APIViewTestCase 'tx_power': 10, 'tagged_vlans': [vlans[0].pk, vlans[1].pk], 'untagged_vlan': vlans[2].pk, + 'wireless_lans': [wireless_lans[0].pk, wireless_lans[1].pk], }, ] diff --git a/netbox/dcim/tests/test_views.py b/netbox/dcim/tests/test_views.py index ac1b93274..154ea03c3 100644 --- a/netbox/dcim/tests/test_views.py +++ b/netbox/dcim/tests/test_views.py @@ -14,6 +14,7 @@ from dcim.models import * from ipam.models import ASN, RIR, VLAN from tenancy.models import Tenant from utilities.testing import ViewTestCases, create_tags, create_test_device +from wireless.models import WirelessLAN class RegionTestCase(ViewTestCases.OrganizationalObjectViewTestCase): @@ -1602,6 +1603,12 @@ class InterfaceTestCase(ViewTestCases.DeviceComponentViewTestCase): ) VLAN.objects.bulk_create(vlans) + wireless_lans = ( + WirelessLAN(ssid='WLAN1'), + WirelessLAN(ssid='WLAN2'), + ) + WirelessLAN.objects.bulk_create(wireless_lans) + tags = create_tags('Alpha', 'Bravo', 'Charlie') cls.form_data = { @@ -1620,6 +1627,7 @@ class InterfaceTestCase(ViewTestCases.DeviceComponentViewTestCase): 'tx_power': 10, 'untagged_vlan': vlans[0].pk, 'tagged_vlans': [v.pk for v in vlans[1:4]], + 'wireless_lans': [wireless_lans[0].pk, wireless_lans[1].pk], 'tags': [t.pk for t in tags], } @@ -1638,6 +1646,7 @@ class InterfaceTestCase(ViewTestCases.DeviceComponentViewTestCase): 'mode': InterfaceModeChoices.MODE_TAGGED, 'untagged_vlan': vlans[0].pk, 'tagged_vlans': [v.pk for v in vlans[1:4]], + 'wireless_lans': [wireless_lans[0].pk, wireless_lans[1].pk], 'tags': [t.pk for t in tags], } From 8bb9f4b8a2ac6a35b657a2445804489a66837fa3 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Wed, 3 Nov 2021 16:27:43 -0400 Subject: [PATCH 148/289] #1344: Add missing object field to ContactAssignmentSerializer --- netbox/tenancy/api/serializers.py | 11 ++++++++++- netbox/tenancy/api/views.py | 2 +- netbox/tenancy/filtersets.py | 2 +- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/netbox/tenancy/api/serializers.py b/netbox/tenancy/api/serializers.py index 90c13725c..b97c3dac4 100644 --- a/netbox/tenancy/api/serializers.py +++ b/netbox/tenancy/api/serializers.py @@ -1,10 +1,12 @@ from django.contrib.auth.models import ContentType +from drf_yasg.utils import swagger_serializer_method from rest_framework import serializers from netbox.api import ChoiceField, ContentTypeField from netbox.api.serializers import NestedGroupModelSerializer, PrimaryModelSerializer from tenancy.choices import ContactPriorityChoices from tenancy.models import * +from utilities.api import get_serializer_for_model from .nested_serializers import * @@ -92,6 +94,7 @@ class ContactAssignmentSerializer(PrimaryModelSerializer): content_type = ContentTypeField( queryset=ContentType.objects.all() ) + object = serializers.SerializerMethodField(read_only=True) contact = NestedContactSerializer() role = NestedContactRoleSerializer(required=False, allow_null=True) priority = ChoiceField(choices=ContactPriorityChoices, required=False) @@ -99,6 +102,12 @@ class ContactAssignmentSerializer(PrimaryModelSerializer): class Meta: model = ContactAssignment fields = [ - 'id', 'url', 'display', 'content_type', 'object_id', 'contact', 'role', 'priority', 'created', + 'id', 'url', 'display', 'content_type', 'object_id', 'object', 'contact', 'role', 'priority', 'created', 'last_updated', ] + + @swagger_serializer_method(serializer_or_field=serializers.DictField) + def get_object(self, instance): + serializer = get_serializer_for_model(instance.content_type.model_class(), prefix='Nested') + context = {'request': self.context['request']} + return serializer(instance.object, context=context).data diff --git a/netbox/tenancy/api/views.py b/netbox/tenancy/api/views.py index 8c7c33aba..50b188b5f 100644 --- a/netbox/tenancy/api/views.py +++ b/netbox/tenancy/api/views.py @@ -82,6 +82,6 @@ class ContactViewSet(CustomFieldModelViewSet): class ContactAssignmentViewSet(CustomFieldModelViewSet): - queryset = ContactAssignment.objects.prefetch_related('contact', 'role') + queryset = ContactAssignment.objects.prefetch_related('object', 'contact', 'role') serializer_class = serializers.ContactAssignmentSerializer filterset_class = filtersets.ContactAssignmentFilterSet diff --git a/netbox/tenancy/filtersets.py b/netbox/tenancy/filtersets.py index dd73edace..c8af89143 100644 --- a/netbox/tenancy/filtersets.py +++ b/netbox/tenancy/filtersets.py @@ -190,4 +190,4 @@ class ContactAssignmentFilterSet(ChangeLoggedModelFilterSet): class Meta: model = ContactAssignment - fields = ['id', 'content_type_id', 'priority'] + fields = ['id', 'content_type_id', 'object_id', 'priority'] From bbb98083ebf4e8407fba9fc47e8f1b4069fd6b66 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Wed, 3 Nov 2021 16:58:31 -0400 Subject: [PATCH 149/289] Clean up filtersets --- netbox/dcim/filtersets.py | 2 +- netbox/ipam/filtersets.py | 4 +--- netbox/wireless/filtersets.py | 4 +++- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/netbox/dcim/filtersets.py b/netbox/dcim/filtersets.py index aad02592e..06b697502 100644 --- a/netbox/dcim/filtersets.py +++ b/netbox/dcim/filtersets.py @@ -173,7 +173,7 @@ class SiteFilterSet(PrimaryModelFilterSet, TenancyFilterSet): return queryset.filter(qs_filter) -class LocationFilterSet(OrganizationalModelFilterSet): +class LocationFilterSet(TenancyFilterSet, OrganizationalModelFilterSet): region_id = TreeNodeMultipleChoiceFilter( queryset=Region.objects.all(), field_name='site__region', diff --git a/netbox/ipam/filtersets.py b/netbox/ipam/filtersets.py index 6b6d14f5b..2e3b6b47b 100644 --- a/netbox/ipam/filtersets.py +++ b/netbox/ipam/filtersets.py @@ -9,7 +9,6 @@ from dcim.models import Device, Interface, Region, Site, SiteGroup from extras.filters import TagFilter from netbox.filtersets import ChangeLoggedModelFilterSet, OrganizationalModelFilterSet, PrimaryModelFilterSet from tenancy.filtersets import TenancyFilterSet -from tenancy.models import Tenant from utilities.filters import ( ContentTypeFilter, MultiValueCharFilter, MultiValueNumberFilter, NumericArrayFilter, TreeNodeMultipleChoiceFilter, ) @@ -180,7 +179,6 @@ class AggregateFilterSet(PrimaryModelFilterSet, TenancyFilterSet): class ASNFilterSet(OrganizationalModelFilterSet, TenancyFilterSet): - rir_id = django_filters.ModelMultipleChoiceFilter( queryset=RIR.objects.all(), label='RIR (ID)', @@ -210,7 +208,7 @@ class ASNFilterSet(OrganizationalModelFilterSet, TenancyFilterSet): def search(self, queryset, name, value): if not value.strip(): return queryset - qs_filter = Q(Q(description__icontains=value) | Q(asn__icontains=value)) + qs_filter = Q(description__icontains=value) return queryset.filter(qs_filter) diff --git a/netbox/wireless/filtersets.py b/netbox/wireless/filtersets.py index 654dd843f..3fb173b1b 100644 --- a/netbox/wireless/filtersets.py +++ b/netbox/wireless/filtersets.py @@ -5,7 +5,7 @@ from dcim.choices import LinkStatusChoices from extras.filters import TagFilter from ipam.models import VLAN from netbox.filtersets import OrganizationalModelFilterSet, PrimaryModelFilterSet -from utilities.filters import TreeNodeMultipleChoiceFilter +from utilities.filters import MultiValueNumberFilter, TreeNodeMultipleChoiceFilter from .choices import * from .models import * @@ -78,6 +78,8 @@ class WirelessLinkFilterSet(PrimaryModelFilterSet): method='search', label='Search', ) + interface_a_id = MultiValueNumberFilter() + interface_b_id = MultiValueNumberFilter() status = django_filters.MultipleChoiceFilter( choices=LinkStatusChoices ) From 67c73768c1820060d37612952700ee5f782d3b51 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Thu, 4 Nov 2021 09:58:33 -0400 Subject: [PATCH 150/289] Add count_fhrp_groups to interface serializers --- docs/release-notes/version-3.1.md | 9 +++++++-- netbox/dcim/api/serializers.py | 9 ++++++--- netbox/dcim/api/views.py | 2 +- netbox/dcim/models/device_components.py | 4 ++++ netbox/ipam/api/nested_serializers.py | 4 ++++ netbox/virtualization/api/serializers.py | 3 ++- netbox/virtualization/api/views.py | 2 +- 7 files changed, 25 insertions(+), 8 deletions(-) diff --git a/docs/release-notes/version-3.1.md b/docs/release-notes/version-3.1.md index 5c039f38b..616313ef2 100644 --- a/docs/release-notes/version-3.1.md +++ b/docs/release-notes/version-3.1.md @@ -94,6 +94,9 @@ Support for single sign-on (SSO) authentication has been added via the [python-s * Added the following endpoints for ASNs: * `/api/ipam/asn/` +* Added the following endpoints for FHRP groups: + * `/api/ipam/fhrp-groups/` + * `/api/ipam/fhrp-group-assignments/` * Added the following endpoints for contacts: * `/api/tenancy/contact-assignments/` * `/api/tenancy/contact-groups/` @@ -127,6 +130,8 @@ Support for single sign-on (SSO) authentication has been added via the [python-s * dcim.DeviceType * Added `airflow` field * dcim.Interface + * `cable_peer` has been renamed to `link_peer` + * `cable_peer_type` has been renamed to `link_peer_type` * Added `bridge` field * Added `rf_channel` field * Added `rf_channel_frequency` field @@ -135,8 +140,7 @@ Support for single sign-on (SSO) authentication has been added via the [python-s * Added `tx_power` field * Added `wireless_link` field * Added `wwn` field - * `cable_peer` has been renamed to `link_peer` - * `cable_peer_type` has been renamed to `link_peer_type` + * Added `count_fhrp_groups` read-only field * dcim.Location * Added `tenant` field * dcim.Site @@ -145,3 +149,4 @@ Support for single sign-on (SSO) authentication has been added via the [python-s * Added the `conditions` field * virtualization.VMInterface * Added `bridge` field + * Added `count_fhrp_groups` read-only field diff --git a/netbox/dcim/api/serializers.py b/netbox/dcim/api/serializers.py index 8e74099da..f8e195a98 100644 --- a/netbox/dcim/api/serializers.py +++ b/netbox/dcim/api/serializers.py @@ -6,8 +6,10 @@ from timezone_field.rest_framework import TimeZoneSerializerField from dcim.choices import * from dcim.constants import * from dcim.models import * -from ipam.api.nested_serializers import NestedASNSerializer, NestedIPAddressSerializer, NestedVLANSerializer -from ipam.models import ASN, VLAN +from ipam.api.nested_serializers import ( + NestedASNSerializer, NestedFHRPGroupAssignmentSerializer, NestedIPAddressSerializer, NestedVLANSerializer, +) +from ipam.models import ASN, FHRPGroupAssignment, VLAN from netbox.api import ChoiceField, ContentTypeField, SerializedPKRelatedField from netbox.api.serializers import ( NestedGroupModelSerializer, PrimaryModelSerializer, ValidatedModelSerializer, WritableNestedSerializer, @@ -636,6 +638,7 @@ class InterfaceSerializer(PrimaryModelSerializer, LinkTerminationSerializer, Con many=True ) count_ipaddresses = serializers.IntegerField(read_only=True) + count_fhrp_groups = serializers.IntegerField(read_only=True) class Meta: model = Interface @@ -645,7 +648,7 @@ class InterfaceSerializer(PrimaryModelSerializer, LinkTerminationSerializer, Con 'rf_channel_width', 'tx_power', 'untagged_vlan', 'tagged_vlans', 'mark_connected', 'cable', 'wireless_link', 'link_peer', 'link_peer_type', 'wireless_lans', 'connected_endpoint', 'connected_endpoint_type', 'connected_endpoint_reachable', 'tags', 'custom_fields', 'created', 'last_updated', 'count_ipaddresses', - '_occupied', + 'count_fhrp_groups', '_occupied', ] def validate(self, data): diff --git a/netbox/dcim/api/views.py b/netbox/dcim/api/views.py index d99e28938..f359f0f24 100644 --- a/netbox/dcim/api/views.py +++ b/netbox/dcim/api/views.py @@ -548,7 +548,7 @@ class PowerOutletViewSet(PathEndpointMixin, ModelViewSet): class InterfaceViewSet(PathEndpointMixin, ModelViewSet): queryset = Interface.objects.prefetch_related( 'device', 'parent', 'bridge', 'lag', '_path__destination', 'cable', '_link_peer', 'wireless_lans', - 'untagged_vlan', 'tagged_vlans', 'ip_addresses', 'tags' + 'untagged_vlan', 'tagged_vlans', 'ip_addresses', 'fhrp_group_assignments', 'tags' ) serializer_class = serializers.InterfaceSerializer filterset_class = filtersets.InterfaceFilterSet diff --git a/netbox/dcim/models/device_components.py b/netbox/dcim/models/device_components.py index a957aba41..3896e5e83 100644 --- a/netbox/dcim/models/device_components.py +++ b/netbox/dcim/models/device_components.py @@ -498,6 +498,10 @@ class BaseInterface(models.Model): def count_ipaddresses(self): return self.ip_addresses.count() + @property + def count_fhrp_groups(self): + return self.fhrp_group_assignments.count() + @extras_features('custom_fields', 'custom_links', 'export_templates', 'tags', 'webhooks') class Interface(ComponentModel, BaseInterface, LinkTermination, PathEndpoint): diff --git a/netbox/ipam/api/nested_serializers.py b/netbox/ipam/api/nested_serializers.py index 885982afb..bb0c02a47 100644 --- a/netbox/ipam/api/nested_serializers.py +++ b/netbox/ipam/api/nested_serializers.py @@ -91,6 +91,10 @@ class NestedFHRPGroupSerializer(WritableNestedSerializer): fields = ['id', 'url', 'display', 'protocol', 'group_id'] +class NestedFHRPGroupAssignmentSerializer(WritableNestedSerializer): + url = serializers.HyperlinkedIdentityField(view_name='ipam-api:fhrpgroupassignment-detail') + + # # VLANs # diff --git a/netbox/virtualization/api/serializers.py b/netbox/virtualization/api/serializers.py index 6cdc0e09a..866b8f9bb 100644 --- a/netbox/virtualization/api/serializers.py +++ b/netbox/virtualization/api/serializers.py @@ -117,13 +117,14 @@ class VMInterfaceSerializer(PrimaryModelSerializer): many=True ) count_ipaddresses = serializers.IntegerField(read_only=True) + count_fhrp_groups = serializers.IntegerField(read_only=True) class Meta: model = VMInterface fields = [ 'id', 'url', 'display', 'virtual_machine', 'name', 'enabled', 'parent', 'bridge', 'mtu', 'mac_address', 'description', 'mode', 'untagged_vlan', 'tagged_vlans', 'tags', 'custom_fields', 'created', 'last_updated', - 'count_ipaddresses', + 'count_ipaddresses', 'count_fhrp_groups', ] def validate(self, data): diff --git a/netbox/virtualization/api/views.py b/netbox/virtualization/api/views.py index 0035a3c13..894045c1a 100644 --- a/netbox/virtualization/api/views.py +++ b/netbox/virtualization/api/views.py @@ -80,7 +80,7 @@ class VirtualMachineViewSet(ConfigContextQuerySetMixin, CustomFieldModelViewSet) class VMInterfaceViewSet(ModelViewSet): queryset = VMInterface.objects.prefetch_related( - 'virtual_machine', 'parent', 'tags', 'untagged_vlan', 'tagged_vlans', 'ip_addresses' + 'virtual_machine', 'parent', 'tags', 'untagged_vlan', 'tagged_vlans', 'ip_addresses', 'fhrp_group_assignments', ) serializer_class = serializers.VMInterfaceSerializer filterset_class = filtersets.VMInterfaceFilterSet From c023e5f518afd0b271e47c86a176a351372d6db6 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Thu, 4 Nov 2021 10:05:47 -0400 Subject: [PATCH 151/289] Fix up FHRPGroupAssignmentTable --- netbox/ipam/tables/fhrp.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/netbox/ipam/tables/fhrp.py b/netbox/ipam/tables/fhrp.py index 8a31694bf..94bc50b93 100644 --- a/netbox/ipam/tables/fhrp.py +++ b/netbox/ipam/tables/fhrp.py @@ -45,8 +45,8 @@ class FHRPGroupTable(BaseTable): class FHRPGroupAssignmentTable(BaseTable): pk = ToggleColumn() - object_parent = tables.Column( - accessor=tables.A('object.parent_object'), + interface_parent = tables.Column( + accessor=tables.A('interface.parent_object'), linkify=True, orderable=False, verbose_name='Parent' @@ -65,4 +65,5 @@ class FHRPGroupAssignmentTable(BaseTable): class Meta(BaseTable.Meta): model = FHRPGroupAssignment - fields = ('pk', 'group', 'object_parent', 'interface', 'priority') + fields = ('pk', 'group', 'interface_parent', 'interface', 'priority') + exclude = ('id',) From 3f0a98acbdeac3cd585cbca6afd579a4694a6c77 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Thu, 4 Nov 2021 11:15:34 -0400 Subject: [PATCH 152/289] Add nested FHRPGroupAssignment serializer; add missing API tests --- netbox/dcim/api/serializers.py | 6 +- netbox/ipam/api/nested_serializers.py | 5 ++ netbox/ipam/api/serializers.py | 3 +- netbox/ipam/graphql/types.py | 4 +- netbox/ipam/tests/test_api.py | 83 ++++++++++++++++++++++++++- 5 files changed, 92 insertions(+), 9 deletions(-) diff --git a/netbox/dcim/api/serializers.py b/netbox/dcim/api/serializers.py index f8e195a98..ede7e340f 100644 --- a/netbox/dcim/api/serializers.py +++ b/netbox/dcim/api/serializers.py @@ -6,10 +6,8 @@ from timezone_field.rest_framework import TimeZoneSerializerField from dcim.choices import * from dcim.constants import * from dcim.models import * -from ipam.api.nested_serializers import ( - NestedASNSerializer, NestedFHRPGroupAssignmentSerializer, NestedIPAddressSerializer, NestedVLANSerializer, -) -from ipam.models import ASN, FHRPGroupAssignment, VLAN +from ipam.api.nested_serializers import NestedASNSerializer, NestedIPAddressSerializer, NestedVLANSerializer +from ipam.models import ASN, VLAN from netbox.api import ChoiceField, ContentTypeField, SerializedPKRelatedField from netbox.api.serializers import ( NestedGroupModelSerializer, PrimaryModelSerializer, ValidatedModelSerializer, WritableNestedSerializer, diff --git a/netbox/ipam/api/nested_serializers.py b/netbox/ipam/api/nested_serializers.py index bb0c02a47..1eb66743b 100644 --- a/netbox/ipam/api/nested_serializers.py +++ b/netbox/ipam/api/nested_serializers.py @@ -7,6 +7,7 @@ __all__ = [ 'NestedAggregateSerializer', 'NestedASNSerializer', 'NestedFHRPGroupSerializer', + 'NestedFHRPGroupAssignmentSerializer', 'NestedIPAddressSerializer', 'NestedIPRangeSerializer', 'NestedPrefixSerializer', @@ -94,6 +95,10 @@ class NestedFHRPGroupSerializer(WritableNestedSerializer): class NestedFHRPGroupAssignmentSerializer(WritableNestedSerializer): url = serializers.HyperlinkedIdentityField(view_name='ipam-api:fhrpgroupassignment-detail') + class Meta: + model = models.FHRPGroupAssignment + fields = ['id', 'url', 'display', 'interface_type', 'interface_id', 'group_id', 'priority'] + # # VLANs diff --git a/netbox/ipam/api/serializers.py b/netbox/ipam/api/serializers.py index 28be07334..aa1d2834a 100644 --- a/netbox/ipam/api/serializers.py +++ b/netbox/ipam/api/serializers.py @@ -127,6 +127,7 @@ class FHRPGroupSerializer(PrimaryModelSerializer): class FHRPGroupAssignmentSerializer(PrimaryModelSerializer): url = serializers.HyperlinkedIdentityField(view_name='tenancy-api:contactassignment-detail') + group = NestedFHRPGroupSerializer() interface_type = ContentTypeField( queryset=ContentType.objects.all() ) @@ -135,7 +136,7 @@ class FHRPGroupAssignmentSerializer(PrimaryModelSerializer): class Meta: model = FHRPGroupAssignment fields = [ - 'id', 'url', 'display', 'interface_type', 'interface_id', 'interface', 'priority', 'created', + 'id', 'url', 'display', 'group', 'interface_type', 'interface_id', 'interface', 'priority', 'created', 'last_updated', ] diff --git a/netbox/ipam/graphql/types.py b/netbox/ipam/graphql/types.py index 72526b3bd..d9aec66b3 100644 --- a/netbox/ipam/graphql/types.py +++ b/netbox/ipam/graphql/types.py @@ -2,7 +2,7 @@ import graphene from ipam import filtersets, models from netbox.graphql.scalars import BigInt -from netbox.graphql.types import OrganizationalObjectType, PrimaryObjectType +from netbox.graphql.types import BaseObjectType, OrganizationalObjectType, PrimaryObjectType __all__ = ( 'ASNType', @@ -50,7 +50,7 @@ class FHRPGroupType(PrimaryObjectType): return self.auth_type or None -class FHRPGroupAssignmentType(PrimaryObjectType): +class FHRPGroupAssignmentType(BaseObjectType): class Meta: model = models.FHRPGroupAssignment diff --git a/netbox/ipam/tests/test_api.py b/netbox/ipam/tests/test_api.py index 5ec0a0177..50eb64060 100644 --- a/netbox/ipam/tests/test_api.py +++ b/netbox/ipam/tests/test_api.py @@ -4,11 +4,11 @@ from django.urls import reverse from netaddr import IPNetwork from rest_framework import status -from dcim.models import Device, DeviceRole, DeviceType, Manufacturer, Site +from dcim.models import Device, DeviceRole, DeviceType, Interface, Manufacturer, Site from ipam.choices import * from ipam.models import * from tenancy.models import Tenant -from utilities.testing import APITestCase, APIViewTestCases, disable_warnings +from utilities.testing import APITestCase, APIViewTestCases, create_test_device, disable_warnings class AppTest(APITestCase): @@ -585,6 +585,85 @@ class FHRPGroupTest(APIViewTestCases.APIViewTestCase): ] +class FHRPGroupAssignmentTest(APIViewTestCases.APIViewTestCase): + model = FHRPGroupAssignment + brief_fields = ['display', 'group_id', 'id', 'interface_id', 'interface_type', 'priority', 'url'] + bulk_update_data = { + 'priority': 100, + } + + @classmethod + def setUpTestData(cls): + + device1 = create_test_device('device1') + device2 = create_test_device('device2') + device3 = create_test_device('device3') + + interfaces = ( + Interface(device=device1, name='eth0', type='other'), + Interface(device=device1, name='eth1', type='other'), + Interface(device=device1, name='eth2', type='other'), + Interface(device=device2, name='eth0', type='other'), + Interface(device=device2, name='eth1', type='other'), + Interface(device=device2, name='eth2', type='other'), + Interface(device=device3, name='eth0', type='other'), + Interface(device=device3, name='eth1', type='other'), + Interface(device=device3, name='eth2', type='other'), + ) + Interface.objects.bulk_create(interfaces) + + ip_addresses = ( + IPAddress(address=IPNetwork('192.168.0.2/24'), assigned_object=interfaces[0]), + IPAddress(address=IPNetwork('192.168.1.2/24'), assigned_object=interfaces[1]), + IPAddress(address=IPNetwork('192.168.2.2/24'), assigned_object=interfaces[2]), + IPAddress(address=IPNetwork('192.168.0.3/24'), assigned_object=interfaces[3]), + IPAddress(address=IPNetwork('192.168.1.3/24'), assigned_object=interfaces[4]), + IPAddress(address=IPNetwork('192.168.2.3/24'), assigned_object=interfaces[5]), + IPAddress(address=IPNetwork('192.168.0.4/24'), assigned_object=interfaces[6]), + IPAddress(address=IPNetwork('192.168.1.4/24'), assigned_object=interfaces[7]), + IPAddress(address=IPNetwork('192.168.2.4/24'), assigned_object=interfaces[8]), + ) + IPAddress.objects.bulk_create(ip_addresses) + + fhrp_groups = ( + FHRPGroup(protocol=FHRPGroupProtocolChoices.PROTOCOL_VRRP2, group_id=10), + FHRPGroup(protocol=FHRPGroupProtocolChoices.PROTOCOL_VRRP2, group_id=20), + FHRPGroup(protocol=FHRPGroupProtocolChoices.PROTOCOL_VRRP2, group_id=30), + ) + FHRPGroup.objects.bulk_create(fhrp_groups) + + fhrp_group_assignments = ( + FHRPGroupAssignment(group=fhrp_groups[0], interface=interfaces[0], priority=10), + FHRPGroupAssignment(group=fhrp_groups[1], interface=interfaces[1], priority=10), + FHRPGroupAssignment(group=fhrp_groups[2], interface=interfaces[2], priority=10), + FHRPGroupAssignment(group=fhrp_groups[0], interface=interfaces[3], priority=20), + FHRPGroupAssignment(group=fhrp_groups[1], interface=interfaces[4], priority=20), + FHRPGroupAssignment(group=fhrp_groups[2], interface=interfaces[5], priority=20), + ) + FHRPGroupAssignment.objects.bulk_create(fhrp_group_assignments) + + cls.create_data = [ + { + 'group': fhrp_groups[0].pk, + 'interface_type': 'dcim.interface', + 'interface_id': interfaces[6].pk, + 'priority': 30, + }, + { + 'group': fhrp_groups[1].pk, + 'interface_type': 'dcim.interface', + 'interface_id': interfaces[7].pk, + 'priority': 30, + }, + { + 'group': fhrp_groups[2].pk, + 'interface_type': 'dcim.interface', + 'interface_id': interfaces[8].pk, + 'priority': 30, + }, + ] + + class VLANGroupTest(APIViewTestCases.APIViewTestCase): model = VLANGroup brief_fields = ['display', 'id', 'name', 'slug', 'url', 'vlan_count'] From 519884d167fe28cf08de9ca89bbbf5ff33bf04b0 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Thu, 4 Nov 2021 11:17:10 -0400 Subject: [PATCH 153/289] Invert default priority ordering for FHRPGroupAssignment --- netbox/ipam/migrations/0052_fhrpgroup.py | 2 +- netbox/ipam/models/fhrp.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/netbox/ipam/migrations/0052_fhrpgroup.py b/netbox/ipam/migrations/0052_fhrpgroup.py index 976084b47..70219543f 100644 --- a/netbox/ipam/migrations/0052_fhrpgroup.py +++ b/netbox/ipam/migrations/0052_fhrpgroup.py @@ -51,7 +51,7 @@ class Migration(migrations.Migration): ], options={ 'verbose_name': 'FHRP group assignment', - 'ordering': ('priority', 'pk'), + 'ordering': ('-priority', 'pk'), 'unique_together': {('interface_type', 'interface_id', 'group')}, }, ), diff --git a/netbox/ipam/models/fhrp.py b/netbox/ipam/models/fhrp.py index 95c907cfd..42ab0b530 100644 --- a/netbox/ipam/models/fhrp.py +++ b/netbox/ipam/models/fhrp.py @@ -92,7 +92,7 @@ class FHRPGroupAssignment(ChangeLoggedModel): objects = RestrictedQuerySet.as_manager() class Meta: - ordering = ('priority', 'pk') + ordering = ('-priority', 'pk') unique_together = ('interface_type', 'interface_id', 'group') verbose_name = 'FHRP group assignment' From ff3edc98895d7e72d1a0e0f1b1afe9890af1a9fb Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Thu, 4 Nov 2021 11:55:00 -0400 Subject: [PATCH 154/289] Add NestedContactAssignmentSerializer; add contact assignment API tests --- netbox/tenancy/api/nested_serializers.py | 11 ++++ netbox/tenancy/graphql/types.py | 4 +- netbox/tenancy/tests/test_api.py | 67 ++++++++++++++++++++++++ 3 files changed, 80 insertions(+), 2 deletions(-) diff --git a/netbox/tenancy/api/nested_serializers.py b/netbox/tenancy/api/nested_serializers.py index a072331f5..00ac6ff84 100644 --- a/netbox/tenancy/api/nested_serializers.py +++ b/netbox/tenancy/api/nested_serializers.py @@ -5,6 +5,7 @@ from tenancy.models import * __all__ = [ 'NestedContactSerializer', + 'NestedContactAssignmentSerializer', 'NestedContactGroupSerializer', 'NestedContactRoleSerializer', 'NestedTenantGroupSerializer', @@ -62,3 +63,13 @@ class NestedContactSerializer(WritableNestedSerializer): class Meta: model = Contact fields = ['id', 'url', 'display', 'name'] + + +class NestedContactAssignmentSerializer(WritableNestedSerializer): + url = serializers.HyperlinkedIdentityField(view_name='tenancy-api:contactassignment-detail') + contact = NestedContactSerializer() + role = NestedContactRoleSerializer + + class Meta: + model = ContactAssignment + fields = ['id', 'url', 'display', 'contact', 'role', 'priority'] diff --git a/netbox/tenancy/graphql/types.py b/netbox/tenancy/graphql/types.py index a16d51081..ce00eafa3 100644 --- a/netbox/tenancy/graphql/types.py +++ b/netbox/tenancy/graphql/types.py @@ -1,7 +1,7 @@ import graphene from tenancy import filtersets, models -from netbox.graphql.types import OrganizationalObjectType, PrimaryObjectType +from netbox.graphql.types import BaseObjectType, OrganizationalObjectType, PrimaryObjectType __all__ = ( 'ContactAssignmentType', @@ -68,7 +68,7 @@ class ContactGroupType(OrganizationalObjectType): filterset_class = filtersets.ContactGroupFilterSet -class ContactAssignmentType(OrganizationalObjectType): +class ContactAssignmentType(BaseObjectType): class Meta: model = models.ContactAssignment diff --git a/netbox/tenancy/tests/test_api.py b/netbox/tenancy/tests/test_api.py index c7c6cf846..467352588 100644 --- a/netbox/tenancy/tests/test_api.py +++ b/netbox/tenancy/tests/test_api.py @@ -1,5 +1,7 @@ from django.urls import reverse +from dcim.models import Site +from tenancy.choices import * from tenancy.models import * from utilities.testing import APITestCase, APIViewTestCases @@ -201,3 +203,68 @@ class ContactTest(APIViewTestCases.APIViewTestCase): 'group': contact_groups[1].pk, }, ] + + +class ContactAssignmentTest(APIViewTestCases.APIViewTestCase): + model = ContactAssignment + brief_fields = ['contact', 'display', 'id', 'priority', 'role', 'url'] + bulk_update_data = { + 'priority': ContactPriorityChoices.PRIORITY_INACTIVE, + } + + @classmethod + def setUpTestData(cls): + + sites = ( + Site(name='Site 1', slug='site-1'), + Site(name='Site 2', slug='site-2'), + ) + Site.objects.bulk_create(sites) + + contacts = ( + Contact(name='Contact 1'), + Contact(name='Contact 2'), + Contact(name='Contact 3'), + Contact(name='Contact 4'), + Contact(name='Contact 5'), + Contact(name='Contact 6'), + ) + Contact.objects.bulk_create(contacts) + + contact_roles = ( + ContactRole(name='Contact Role 1', slug='contact-role-1'), + ContactRole(name='Contact Role 2', slug='contact-role-2'), + ContactRole(name='Contact Role 3', slug='contact-role-3'), + ) + ContactRole.objects.bulk_create(contact_roles) + + contact_assignments = ( + ContactAssignment(object=sites[0], contact=contacts[0], role=contact_roles[0], priority=ContactPriorityChoices.PRIORITY_PRIMARY), + ContactAssignment(object=sites[0], contact=contacts[1], role=contact_roles[1], priority=ContactPriorityChoices.PRIORITY_SECONDARY), + ContactAssignment(object=sites[0], contact=contacts[2], role=contact_roles[2], priority=ContactPriorityChoices.PRIORITY_TERTIARY), + ) + ContactAssignment.objects.bulk_create(contact_assignments) + + cls.create_data = [ + { + 'content_type': 'dcim.site', + 'object_id': sites[1].pk, + 'contact': contacts[3].pk, + 'role': contact_roles[0].pk, + 'priority': ContactPriorityChoices.PRIORITY_PRIMARY, + }, + { + 'content_type': 'dcim.site', + 'object_id': sites[1].pk, + 'contact': contacts[4].pk, + 'role': contact_roles[1].pk, + 'priority': ContactPriorityChoices.PRIORITY_SECONDARY, + }, + { + 'content_type': 'dcim.site', + 'object_id': sites[1].pk, + 'contact': contacts[5].pk, + 'role': contact_roles[2].pk, + 'priority': ContactPriorityChoices.PRIORITY_TERTIARY, + }, + ] From 06f1d152838da9c8f433e5570a6af71b6091b19a Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Thu, 4 Nov 2021 13:22:21 -0400 Subject: [PATCH 155/289] Introduce create_test_virtualmachine() --- netbox/utilities/testing/utils.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/netbox/utilities/testing/utils.py b/netbox/utilities/testing/utils.py index bec3bc762..466b5e22b 100644 --- a/netbox/utilities/testing/utils.py +++ b/netbox/utilities/testing/utils.py @@ -7,6 +7,7 @@ from django.utils.text import slugify from dcim.models import Device, DeviceRole, DeviceType, Manufacturer, Site from extras.models import Tag +from virtualization.models import Cluster, ClusterType, VirtualMachine def post_data(data): @@ -46,6 +47,17 @@ def create_test_device(name): return device +def create_test_virtualmachine(name): + """ + Convenience method for creating a VirtualMachine. + """ + cluster_type, _ = ClusterType.objects.get_or_create(name='Cluster Type 1', slug='cluster-type-1') + cluster, _ = Cluster.objects.get_or_create(name='Cluster 1', type=cluster_type) + virtual_machine = VirtualMachine.objects.create(name=name, cluster=cluster) + + return virtual_machine + + def create_test_user(username='testuser', permissions=None): """ Create a User with the given permissions. From 734a00237a28620b92f8c84dfae3dece6c141092 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Thu, 4 Nov 2021 13:23:02 -0400 Subject: [PATCH 156/289] Clean up FHRP group filterset tests --- netbox/ipam/filtersets.py | 2 +- netbox/ipam/tests/test_filtersets.py | 89 +++++++++++++++++++++++++++- 2 files changed, 87 insertions(+), 4 deletions(-) diff --git a/netbox/ipam/filtersets.py b/netbox/ipam/filtersets.py index 2e3b6b47b..df6ee1055 100644 --- a/netbox/ipam/filtersets.py +++ b/netbox/ipam/filtersets.py @@ -667,7 +667,7 @@ class FHRPGroupFilterSet(PrimaryModelFilterSet): class Meta: model = FHRPGroup - fields = ['id', 'protocol', 'group_id', 'auth_type'] + fields = ['id', 'group_id', 'auth_key'] def search(self, queryset, name, value): if not value.strip(): diff --git a/netbox/ipam/tests/test_filtersets.py b/netbox/ipam/tests/test_filtersets.py index 19b6a8e8f..773737dea 100644 --- a/netbox/ipam/tests/test_filtersets.py +++ b/netbox/ipam/tests/test_filtersets.py @@ -1,10 +1,11 @@ from django.test import TestCase +from netaddr import IPNetwork from dcim.models import Device, DeviceRole, DeviceType, Interface, Location, Manufacturer, Rack, Region, Site, SiteGroup from ipam.choices import * from ipam.filtersets import * from ipam.models import * -from utilities.testing import ChangeLoggedFilterSetTests +from utilities.testing import ChangeLoggedFilterSetTests, create_test_device, create_test_virtualmachine from virtualization.models import Cluster, ClusterGroup, ClusterType, VirtualMachine, VMInterface from tenancy.models import Tenant, TenantGroup @@ -879,12 +880,22 @@ class FHRPGroupTestCase(TestCase, ChangeLoggedFilterSetTests): @classmethod def setUpTestData(cls): + ip_addresses = ( + IPAddress(address=IPNetwork('192.168.1.1/24')), + IPAddress(address=IPNetwork('192.168.2.1/24')), + IPAddress(address=IPNetwork('192.168.3.1/24')), + ) + IPAddress.objects.bulk_create(ip_addresses) + fhrp_groups = ( - FHRPGroup(protocol=FHRPGroupProtocolChoices.PROTOCOL_VRRP2, group_id=10, auth_type=FHRPGroupAuthTypeChoices.AUTHENTICATION_PLAINTEXT, auth_key='foobar123'), - FHRPGroup(protocol=FHRPGroupProtocolChoices.PROTOCOL_VRRP3, group_id=20, auth_type=FHRPGroupAuthTypeChoices.AUTHENTICATION_MD5, auth_key='foobar123'), + FHRPGroup(protocol=FHRPGroupProtocolChoices.PROTOCOL_VRRP2, group_id=10, auth_type=FHRPGroupAuthTypeChoices.AUTHENTICATION_PLAINTEXT, auth_key='foo123'), + FHRPGroup(protocol=FHRPGroupProtocolChoices.PROTOCOL_VRRP3, group_id=20, auth_type=FHRPGroupAuthTypeChoices.AUTHENTICATION_MD5, auth_key='bar456'), FHRPGroup(protocol=FHRPGroupProtocolChoices.PROTOCOL_HSRP, group_id=30), ) FHRPGroup.objects.bulk_create(fhrp_groups) + fhrp_groups[0].ip_addresses.set([ip_addresses[0]]) + fhrp_groups[1].ip_addresses.set([ip_addresses[1]]) + fhrp_groups[2].ip_addresses.set([ip_addresses[2]]) def test_protocol(self): params = {'protocol': [FHRPGroupProtocolChoices.PROTOCOL_VRRP2, FHRPGroupProtocolChoices.PROTOCOL_VRRP3]} @@ -898,6 +909,78 @@ class FHRPGroupTestCase(TestCase, ChangeLoggedFilterSetTests): params = {'auth_type': [FHRPGroupAuthTypeChoices.AUTHENTICATION_PLAINTEXT, FHRPGroupAuthTypeChoices.AUTHENTICATION_MD5]} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + def test_auth_key(self): + params = {'auth_key': ['foo123', 'bar456']} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + def test_related_ip(self): + # Create some regular IPs to query for related IPs + ipaddresses = ( + IPAddress.objects.create(address=IPNetwork('192.168.1.2/24')), + IPAddress.objects.create(address=IPNetwork('192.168.2.2/24')), + ) + params = {'related_ip': [ipaddresses[0].pk, ipaddresses[1].pk]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + +class FHRPGroupAssignmentTestCase(TestCase, ChangeLoggedFilterSetTests): + queryset = FHRPGroupAssignment.objects.all() + filterset = FHRPGroupAssignmentFilterSet + + @classmethod + def setUpTestData(cls): + + device = create_test_device('device1') + interfaces = ( + Interface(device=device, name='eth0'), + Interface(device=device, name='eth1'), + Interface(device=device, name='eth2'), + ) + Interface.objects.bulk_create(interfaces) + + virtual_machine = create_test_virtualmachine('virtual_machine1') + vm_interfaces = ( + VMInterface(virtual_machine=virtual_machine, name='eth0'), + VMInterface(virtual_machine=virtual_machine, name='eth1'), + VMInterface(virtual_machine=virtual_machine, name='eth2'), + ) + VMInterface.objects.bulk_create(vm_interfaces) + + fhrp_groups = ( + FHRPGroup(protocol=FHRPGroupProtocolChoices.PROTOCOL_VRRP2, group_id=10), + FHRPGroup(protocol=FHRPGroupProtocolChoices.PROTOCOL_VRRP3, group_id=20), + FHRPGroup(protocol=FHRPGroupProtocolChoices.PROTOCOL_HSRP, group_id=30), + ) + FHRPGroup.objects.bulk_create(fhrp_groups) + + fhrp_group_assignments = ( + FHRPGroupAssignment(group=fhrp_groups[0], interface=interfaces[0], priority=10), + FHRPGroupAssignment(group=fhrp_groups[1], interface=interfaces[1], priority=20), + FHRPGroupAssignment(group=fhrp_groups[2], interface=interfaces[2], priority=30), + FHRPGroupAssignment(group=fhrp_groups[0], interface=vm_interfaces[0], priority=10), + FHRPGroupAssignment(group=fhrp_groups[1], interface=vm_interfaces[1], priority=20), + FHRPGroupAssignment(group=fhrp_groups[2], interface=vm_interfaces[2], priority=30), + ) + FHRPGroupAssignment.objects.bulk_create(fhrp_group_assignments) + + def test_group_id(self): + fhrp_groups = FHRPGroup.objects.all()[:2] + params = {'group_id': [fhrp_groups[0].pk, fhrp_groups[1].pk]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4) + + def test_interface_type(self): + params = {'interface_type': 'dcim.interface'} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 3) + + def test_interface(self): + interfaces = Interface.objects.all()[:2] + params = {'interface_type': 'dcim.interface', 'interface_id': [interfaces[0].pk, interfaces[1].pk]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + def test_priority(self): + params = {'priority': [10, 20]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4) + class VLANGroupTestCase(TestCase, ChangeLoggedFilterSetTests): queryset = VLANGroup.objects.all() From a5024a65a0b47bdb3c42783017e322373ea378b5 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Thu, 4 Nov 2021 13:32:52 -0400 Subject: [PATCH 157/289] Add warning for Python 3.7 --- netbox/netbox/settings.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/netbox/netbox/settings.py b/netbox/netbox/settings.py index 6efd4d375..e8ae1ef69 100644 --- a/netbox/netbox/settings.py +++ b/netbox/netbox/settings.py @@ -31,6 +31,10 @@ if platform.python_version_tuple() < ('3', '7'): raise RuntimeError( f"NetBox requires Python 3.7 or higher (current: Python {platform.python_version()})" ) +if platform.python_version_tuple() < ('3', '8'): + warnings.warn( + f"NetBox v3.2 will require Python 3.8 or later. (Currently installed: Python {platform.python_version()})" + ) # From 803e0bfe72fab200c8e54929448eb36cf8bb3a07 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Thu, 4 Nov 2021 13:44:02 -0400 Subject: [PATCH 158/289] #1344: Show object type & name when assigning a contact --- .../tenancy/contactassignment_edit.html | 23 +++++++++++++++++++ netbox/tenancy/views.py | 1 + 2 files changed, 24 insertions(+) create mode 100644 netbox/templates/tenancy/contactassignment_edit.html diff --git a/netbox/templates/tenancy/contactassignment_edit.html b/netbox/templates/tenancy/contactassignment_edit.html new file mode 100644 index 000000000..4d1747e72 --- /dev/null +++ b/netbox/templates/tenancy/contactassignment_edit.html @@ -0,0 +1,23 @@ +{% extends 'generic/object_edit.html' %} +{% load helpers %} +{% load form_helpers %} + +{% block form %} +
+
+
Contact Assignment
+
+
+ +
+ +
+
+ {% render_field form.group %} + {% render_field form.contact %} + {% render_field form.role %} + {% render_field form.priority %} +
+{% endblock %} diff --git a/netbox/tenancy/views.py b/netbox/tenancy/views.py index cdbaebdb1..604b3ed70 100644 --- a/netbox/tenancy/views.py +++ b/netbox/tenancy/views.py @@ -338,6 +338,7 @@ class ContactBulkDeleteView(generic.BulkDeleteView): class ContactAssignmentEditView(generic.ObjectEditView): queryset = ContactAssignment.objects.all() model_form = forms.ContactAssignmentForm + template_name = 'tenancy/contactassignment_edit.html' def alter_obj(self, instance, request, args, kwargs): if not instance.pk: From e4b0359b8ed580f14102f79a4a48dd3b458729ee Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Thu, 4 Nov 2021 14:01:07 -0400 Subject: [PATCH 159/289] Include action buttons on contact assignments table --- netbox/templates/tenancy/contact.html | 9 +++++++-- netbox/tenancy/tables.py | 8 ++++++-- netbox/tenancy/views.py | 8 ++++---- 3 files changed, 17 insertions(+), 8 deletions(-) diff --git a/netbox/templates/tenancy/contact.html b/netbox/templates/tenancy/contact.html index 3c6ada5a0..af466cb30 100644 --- a/netbox/templates/tenancy/contact.html +++ b/netbox/templates/tenancy/contact.html @@ -1,6 +1,7 @@ {% extends 'generic/object.html' %} {% load helpers %} {% load plugins %} +{% load render_table from django_tables2 %} {% block breadcrumbs %} {{ block.super }} @@ -69,10 +70,14 @@
Assignments
- {% include 'inc/table.html' with table=contacts_table %} + {% if assignments_table.rows %} + {% render_table assignments_table 'inc/table.html' %} + {% else %} +
None
+ {% endif %}
- {% include 'inc/paginator.html' with paginator=contacts_table.paginator page=contacts_table.page %} + {% include 'inc/paginator.html' with paginator=assignments_table.paginator page=assignments_table.page %} {% plugin_full_width_page object %}
diff --git a/netbox/tenancy/tables.py b/netbox/tenancy/tables.py index 541087cff..ff9f826ae 100644 --- a/netbox/tenancy/tables.py +++ b/netbox/tenancy/tables.py @@ -160,8 +160,12 @@ class ContactAssignmentTable(BaseTable): role = tables.Column( linkify=True ) + actions = ButtonsColumn( + model=ContactAssignment, + buttons=('edit', 'delete') + ) class Meta(BaseTable.Meta): model = ContactAssignment - fields = ('pk', 'content_type', 'object', 'contact', 'role', 'priority') - default_columns = ('pk', 'object', 'contact', 'role', 'priority') + fields = ('pk', 'content_type', 'object', 'contact', 'role', 'priority', 'actions') + default_columns = ('pk', 'content_type', 'object', 'contact', 'role', 'priority', 'actions') diff --git a/netbox/tenancy/views.py b/netbox/tenancy/views.py index 604b3ed70..dcef3d8be 100644 --- a/netbox/tenancy/views.py +++ b/netbox/tenancy/views.py @@ -293,12 +293,12 @@ class ContactView(generic.ObjectView): contact_assignments = ContactAssignment.objects.restrict(request.user, 'view').filter( contact=instance ) - contacts_table = tables.ContactAssignmentTable(contact_assignments) - contacts_table.columns.hide('contact') - paginate_table(contacts_table, request) + assignments_table = tables.ContactAssignmentTable(contact_assignments) + assignments_table.columns.hide('contact') + paginate_table(assignments_table, request) return { - 'contacts_table': contacts_table, + 'assignments_table': assignments_table, 'assignment_count': ContactAssignment.objects.filter(contact=instance).count(), } From 2e75a111ed0e72e599c74bc057ee3c51a4bbcc5e Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Thu, 4 Nov 2021 14:09:12 -0400 Subject: [PATCH 160/289] Fix return URLs for contact assignment edit/delete --- netbox/templates/inc/panels/contacts.html | 6 +++--- netbox/tenancy/views.py | 6 ------ 2 files changed, 3 insertions(+), 9 deletions(-) diff --git a/netbox/templates/inc/panels/contacts.html b/netbox/templates/inc/panels/contacts.html index 33788a561..872c11153 100644 --- a/netbox/templates/inc/panels/contacts.html +++ b/netbox/templates/inc/panels/contacts.html @@ -21,12 +21,12 @@ {{ contact.get_priority_display|placeholder }} {% if perms.tenancy.change_contactassignment %} - + {% endif %} {% if perms.tenancy.delete_contactassignment %} - + {% endif %} @@ -41,7 +41,7 @@ {% if perms.tenancy.add_contactassignment %} diff --git a/netbox/tenancy/views.py b/netbox/tenancy/views.py index dcef3d8be..5dadf86fb 100644 --- a/netbox/tenancy/views.py +++ b/netbox/tenancy/views.py @@ -351,12 +351,6 @@ class ContactAssignmentEditView(generic.ObjectEditView): instance.object = get_object_or_404(content_type.model_class(), pk=request.GET.get('object_id')) return instance - def get_return_url(self, request, obj=None): - return obj.object.get_absolute_url() if obj else super().get_return_url(request) - class ContactAssignmentDeleteView(generic.ObjectDeleteView): queryset = ContactAssignment.objects.all() - - def get_return_url(self, request, obj=None): - return obj.object.get_absolute_url() if obj else super().get_return_url(request) From bd3d2c60d97897cbbec5f992a857e76529d02f44 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Thu, 4 Nov 2021 14:19:10 -0400 Subject: [PATCH 161/289] FHRP groups cleanup --- netbox/ipam/forms/models.py | 2 +- netbox/ipam/models/fhrp.py | 2 +- netbox/ipam/views.py | 6 ------ netbox/templates/ipam/fhrpgroup.html | 3 ++- .../templates/ipam/inc/panels/fhrp_groups.html | 17 +++++++++++++++-- 5 files changed, 19 insertions(+), 11 deletions(-) diff --git a/netbox/ipam/forms/models.py b/netbox/ipam/forms/models.py index d69800aa5..afbe33282 100644 --- a/netbox/ipam/forms/models.py +++ b/netbox/ipam/forms/models.py @@ -529,7 +529,7 @@ class FHRPGroupForm(BootstrapMixin, CustomFieldModelForm): required=False ) - # Optionally create a new IPAddress along with the NHRPGroup + # Optionally create a new IPAddress along with the FHRPGroup ip_vrf = DynamicModelChoiceField( queryset=VRF.objects.all(), required=False, diff --git a/netbox/ipam/models/fhrp.py b/netbox/ipam/models/fhrp.py index 42ab0b530..5a12a54bb 100644 --- a/netbox/ipam/models/fhrp.py +++ b/netbox/ipam/models/fhrp.py @@ -47,7 +47,7 @@ class FHRPGroup(PrimaryModel): to='ipam.IPAddress', content_type_field='assigned_object_type', object_id_field='assigned_object_id', - related_query_name='nhrp_group' + related_query_name='fhrp_group' ) objects = RestrictedQuerySet.as_manager() diff --git a/netbox/ipam/views.py b/netbox/ipam/views.py index f869a75c1..c9d126f45 100644 --- a/netbox/ipam/views.py +++ b/netbox/ipam/views.py @@ -981,16 +981,10 @@ class FHRPGroupAssignmentEditView(generic.ObjectEditView): instance.interface = get_object_or_404(content_type.model_class(), pk=request.GET.get('interface_id')) return instance - def get_return_url(self, request, obj=None): - return obj.interface.get_absolute_url() if obj else super().get_return_url(request) - class FHRPGroupAssignmentDeleteView(generic.ObjectDeleteView): queryset = FHRPGroupAssignment.objects.all() - def get_return_url(self, request, obj=None): - return obj.interface.get_absolute_url() if obj else super().get_return_url(request) - # # VLANs diff --git a/netbox/templates/ipam/fhrpgroup.html b/netbox/templates/ipam/fhrpgroup.html index 60d6a4bff..a7fa1a248 100644 --- a/netbox/templates/ipam/fhrpgroup.html +++ b/netbox/templates/ipam/fhrpgroup.html @@ -72,12 +72,13 @@
Members
- {% if ipaddress_table.rows %} + {% if members_table.rows %} {% render_table members_table 'inc/table.html' %} {% else %}
None
{% endif %}
+
{% plugin_full_width_page object %} diff --git a/netbox/templates/ipam/inc/panels/fhrp_groups.html b/netbox/templates/ipam/inc/panels/fhrp_groups.html index e5cb26104..9692927a3 100644 --- a/netbox/templates/ipam/inc/panels/fhrp_groups.html +++ b/netbox/templates/ipam/inc/panels/fhrp_groups.html @@ -1,7 +1,7 @@ {% load helpers %}
-
NHRP Groups
+
FHRP Groups
@@ -10,6 +10,7 @@ + @@ -30,6 +31,18 @@ + {% empty %} @@ -46,7 +59,7 @@ {% endif %} {% if perms.ipam.add_fhrpgroupassignment %} - + Assign Group {% endif %} From 54233aba1b127fc84c2dbb2d3b8478cfde37b30b Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Thu, 4 Nov 2021 14:23:24 -0400 Subject: [PATCH 162/289] Remove extraneous slug field from contact import form --- netbox/tenancy/forms/bulk_import.py | 1 - netbox/tenancy/tests/test_views.py | 8 ++++---- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/netbox/tenancy/forms/bulk_import.py b/netbox/tenancy/forms/bulk_import.py index 73e152a29..51b863cac 100644 --- a/netbox/tenancy/forms/bulk_import.py +++ b/netbox/tenancy/forms/bulk_import.py @@ -70,7 +70,6 @@ class ContactRoleCSVForm(CustomFieldModelCSVForm): class ContactCSVForm(CustomFieldModelCSVForm): - slug = SlugField() group = CSVModelChoiceField( queryset=ContactGroup.objects.all(), required=False, diff --git a/netbox/tenancy/tests/test_views.py b/netbox/tenancy/tests/test_views.py index dcfcc1652..881802a7b 100644 --- a/netbox/tenancy/tests/test_views.py +++ b/netbox/tenancy/tests/test_views.py @@ -176,10 +176,10 @@ class ContactTestCase(ViewTestCases.PrimaryObjectViewTestCase): } cls.csv_data = ( - "name,slug", - "Contact 4,contact-4", - "Contact 5,contact-5", - "Contact 6,contact-6", + "group,name", + "Contact Group 1,Contact 4", + "Contact Group 1,Contact 5", + "Contact Group 1,Contact 6", ) cls.bulk_edit_data = { From 0aae155c809acaca71412894ba08e7e21716dfc7 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Thu, 4 Nov 2021 15:18:58 -0400 Subject: [PATCH 163/289] Refresh installation docs --- docs/installation/1-postgresql.md | 10 ++++++++-- docs/installation/2-redis.md | 8 +++++++- docs/installation/3-netbox.md | 16 ++++++++-------- 3 files changed, 23 insertions(+), 11 deletions(-) diff --git a/docs/installation/1-postgresql.md b/docs/installation/1-postgresql.md index 36a4f87b9..97a44c20e 100644 --- a/docs/installation/1-postgresql.md +++ b/docs/installation/1-postgresql.md @@ -2,7 +2,7 @@ This section entails the installation and configuration of a local PostgreSQL database. If you already have a PostgreSQL database service in place, skip to [the next section](2-redis.md). -!!! warning +!!! warning "PostgreSQL 10 or later required" NetBox requires PostgreSQL 10 or later. Please note that MySQL and other relational databases are **not** supported. ## Installation @@ -38,6 +38,12 @@ sudo systemctl start postgresql sudo systemctl enable postgresql ``` +Before continuing, verify that you have installed PostgreSQL 10 or later: + +```no-highlight +psql -V +``` + ## Database Creation At a minimum, we need to create a database for NetBox and assign it a username and password for authentication. Start by invoking the PostgreSQL shell as the system Postgres user. @@ -54,7 +60,7 @@ CREATE USER netbox WITH PASSWORD 'J5brHrAXFLQSif0K'; GRANT ALL PRIVILEGES ON DATABASE netbox TO netbox; ``` -!!! danger +!!! danger "Use a strong password" **Do not use the password from the example.** Choose a strong, random password to ensure secure database authentication for your NetBox installation. Once complete, enter `\q` to exit the PostgreSQL shell. diff --git a/docs/installation/2-redis.md b/docs/installation/2-redis.md index 14dda60f1..fcdfa9ceb 100644 --- a/docs/installation/2-redis.md +++ b/docs/installation/2-redis.md @@ -4,7 +4,7 @@ [Redis](https://redis.io/) is an in-memory key-value store which NetBox employs for caching and queuing. This section entails the installation and configuration of a local Redis instance. If you already have a Redis service in place, skip to [the next section](3-netbox.md). -!!! note +!!! warning "Redis v4.0 or later required" NetBox v2.9.0 and later require Redis v4.0 or higher. If your distribution does not offer a recent enough release, you will need to build Redis from source. Please see [the Redis installation documentation](https://github.com/redis/redis) for further details. === "Ubuntu" @@ -21,6 +21,12 @@ sudo systemctl enable redis ``` +Before continuing, verify that your installed version of Redis is at least v4.0: + +```no-highlight +redis-server -v +``` + You may wish to modify the Redis configuration at `/etc/redis.conf` or `/etc/redis/redis.conf`, however in most cases the default configuration is sufficient. ## Verify Service Status diff --git a/docs/installation/3-netbox.md b/docs/installation/3-netbox.md index 87a64b325..c864ccd07 100644 --- a/docs/installation/3-netbox.md +++ b/docs/installation/3-netbox.md @@ -6,8 +6,8 @@ This section of the documentation discusses installing and configuring the NetBo Begin by installing all system packages required by NetBox and its dependencies. -!!! note - NetBox v3.0 and later require Python 3.7, 3.8, or 3.9. +!!! warning "Python 3.7 or later required" + NetBox v3.0 and v3.1 require Python 3.7, 3.8, or 3.9. It is recommended to install at least Python v3.8, as this will become the minimum supported Python version in NetBox v3.2. === "Ubuntu" @@ -21,10 +21,10 @@ Begin by installing all system packages required by NetBox and its dependencies. sudo yum install -y gcc python36 python36-devel python3-pip libxml2-devel libxslt-devel libffi-devel libpq-devel openssl-devel redhat-rpm-config ``` -Before continuing with either platform, update pip (Python's package management tool) to its latest release: +Before continuing, check that your installed Python version is at least 3.7: ```no-highlight -sudo pip3 install --upgrade pip +python3 -V ``` ## Download NetBox @@ -89,7 +89,7 @@ Resolving deltas: 100% (148/148), done. ``` !!! note - Installation via git also allows you to easily try out development versions of NetBox. The `develop` branch contains all work underway for the next minor release, and the `feature` branch tracks progress on the next major release. + Installation via git also allows you to easily try out different versions of NetBox. To check out a [specific NetBox release](https://github.com/netbox-community/netbox/releases), use the `git checkout` command with the desired release tag. For example, `git checkout v3.0.8`. ## Create the NetBox System User @@ -190,7 +190,7 @@ A simple Python script named `generate_secret_key.py` is provided in the parent python3 ../generate_secret_key.py ``` -!!! warning +!!! warning "SECRET_KEY values must match" In the case of a highly available installation with multiple web servers, `SECRET_KEY` must be identical among all servers in order to maintain a persistent user session state. When you have finished modifying the configuration, remember to save the file. @@ -229,7 +229,7 @@ Once NetBox has been configured, we're ready to proceed with the actual installa sudo /opt/netbox/upgrade.sh ``` -Note that **Python 3.7 or later is required** for NetBox v3.0 and later releases. If the default Python installation on your server does not meet this requirement, you'll need to install Python 3.7 or later separately, and pass the path to the support installation as an environment variable named `PYTHON`. (Note that the environment variable must be passed _after_ the `sudo` command.) +Note that **Python 3.7 or later is required** for NetBox v3.0 and later releases. If the default Python installation on your server is set to a lesser version, pass the path to the supported installation as an environment variable named `PYTHON`. (Note that the environment variable must be passed _after_ the `sudo` command.) ```no-highlight sudo PYTHON=/usr/bin/python3.7 /opt/netbox/upgrade.sh @@ -297,7 +297,7 @@ Next, connect to the name or IP of the server (as defined in `ALLOWED_HOSTS`) on firewall-cmd --zone=public --add-port=8000/tcp ``` -!!! danger +!!! danger "Not for production use" The development server is for development and testing purposes only. It is neither performant nor secure enough for production use. **Do not use it in production.** !!! warning From 9094f072906e7b488f2e3c5d63cde360348a6af0 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Thu, 4 Nov 2021 15:35:17 -0400 Subject: [PATCH 164/289] Fix config revision form help texts --- netbox/extras/forms/config.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/netbox/extras/forms/config.py b/netbox/extras/forms/config.py index fab6fdbd1..4a7dba614 100644 --- a/netbox/extras/forms/config.py +++ b/netbox/extras/forms/config.py @@ -48,12 +48,15 @@ class ConfigRevisionForm(forms.BaseModelForm, metaclass=FormMetaclass): value = getattr(config, param.name) is_static = hasattr(settings, param.name) if value: - help_text = f'
Current value: {value}' + help_text = self.fields[param.name].help_text + if help_text: + help_text += '
' # Line break + help_text += f'Current value: {value}' if is_static: help_text += ' (defined statically)' elif value == param.default: help_text += ' (default)' - self.fields[param.name].help_text += help_text + self.fields[param.name].help_text = help_text if is_static: self.fields[param.name].disabled = True From 93772e7265c290ac89883e34c4c92d98558fb528 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Thu, 4 Nov 2021 15:41:46 -0400 Subject: [PATCH 165/289] Move remote authentication config parameters to a separate page --- docs/configuration/index.md | 1 + docs/configuration/optional-settings.md | 107 ------------------- docs/configuration/remote-authentication.md | 110 ++++++++++++++++++++ mkdocs.yml | 1 + 4 files changed, 112 insertions(+), 107 deletions(-) create mode 100644 docs/configuration/remote-authentication.md diff --git a/docs/configuration/index.md b/docs/configuration/index.md index c568fc7f0..95ed3fc37 100644 --- a/docs/configuration/index.md +++ b/docs/configuration/index.md @@ -9,6 +9,7 @@ Some configuration parameters may alternatively be defined either in `configurat * [Required settings](required-settings.md) * [Optional settings](optional-settings.md) * [Dynamic settings](dynamic-settings.md) +* [Remote authentication settings](remote-authentication.md) ## Changing the Configuration diff --git a/docs/configuration/optional-settings.md b/docs/configuration/optional-settings.md index 3c1e24e9b..d3b82e995 100644 --- a/docs/configuration/optional-settings.md +++ b/docs/configuration/optional-settings.md @@ -313,113 +313,6 @@ Note that a plugin must be listed in `PLUGINS` for its configuration to take eff --- -## REMOTE_AUTH_AUTO_CREATE_USER - -Default: `False` - -If true, NetBox will automatically create local accounts for users authenticated via a remote service. (Requires `REMOTE_AUTH_ENABLED`.) - ---- - -## REMOTE_AUTH_BACKEND - -Default: `'netbox.authentication.RemoteUserBackend'` - -This is the Python path to the custom [Django authentication backend](https://docs.djangoproject.com/en/stable/topics/auth/customizing/) to use for external user authentication. NetBox provides two built-in backends (listed below), though custom authentication backends may also be provided by other packages or plugins. - -* `netbox.authentication.RemoteUserBackend` -* `netbox.authentication.LDAPBackend` - ---- - -## REMOTE_AUTH_DEFAULT_GROUPS - -Default: `[]` (Empty list) - -The list of groups to assign a new user account when created using remote authentication. (Requires `REMOTE_AUTH_ENABLED`.) - ---- - -## REMOTE_AUTH_DEFAULT_PERMISSIONS - -Default: `{}` (Empty dictionary) - -A mapping of permissions to assign a new user account when created using remote authentication. Each key in the dictionary should be set to a dictionary of the attributes to be applied to the permission, or `None` to allow all objects. (Requires `REMOTE_AUTH_ENABLED`.) - ---- - -## REMOTE_AUTH_ENABLED - -Default: `False` - -NetBox can be configured to support remote user authentication by inferring user authentication from an HTTP header set by the HTTP reverse proxy (e.g. nginx or Apache). Set this to `True` to enable this functionality. (Local authentication will still take effect as a fallback.) - ---- - -## REMOTE_AUTH_GROUP_SYNC_ENABLED - -Default: `False` - -NetBox can be configured to sync remote user groups by inferring user authentication from an HTTP header set by the HTTP reverse proxy (e.g. nginx or Apache). Set this to `True` to enable this functionality. (Local authentication will still take effect as a fallback.) (Requires `REMOTE_AUTH_ENABLED`.) - ---- - -## REMOTE_AUTH_HEADER - -Default: `'HTTP_REMOTE_USER'` - -When remote user authentication is in use, this is the name of the HTTP header which informs NetBox of the currently authenticated user. For example, to use the request header `X-Remote-User` it needs to be set to `HTTP_X_REMOTE_USER`. (Requires `REMOTE_AUTH_ENABLED`.) - ---- - -## REMOTE_AUTH_GROUP_HEADER - -Default: `'HTTP_REMOTE_USER_GROUP'` - -When remote user authentication is in use, this is the name of the HTTP header which informs NetBox of the currently authenticated user. For example, to use the request header `X-Remote-User-Groups` it needs to be set to `HTTP_X_REMOTE_USER_GROUPS`. (Requires `REMOTE_AUTH_ENABLED` and `REMOTE_AUTH_GROUP_SYNC_ENABLED` ) - ---- - -## REMOTE_AUTH_SUPERUSER_GROUPS - -Default: `[]` (Empty list) - -The list of groups that promote an remote User to Superuser on Login. If group isn't present on next Login, the Role gets revoked. (Requires `REMOTE_AUTH_ENABLED` and `REMOTE_AUTH_GROUP_SYNC_ENABLED` ) - ---- - -## REMOTE_AUTH_SUPERUSERS - -Default: `[]` (Empty list) - -The list of users that get promoted to Superuser on Login. If user isn't present in list on next Login, the Role gets revoked. (Requires `REMOTE_AUTH_ENABLED` and `REMOTE_AUTH_GROUP_SYNC_ENABLED` ) - ---- - -## REMOTE_AUTH_STAFF_GROUPS - -Default: `[]` (Empty list) - -The list of groups that promote an remote User to Staff on Login. If group isn't present on next Login, the Role gets revoked. (Requires `REMOTE_AUTH_ENABLED` and `REMOTE_AUTH_GROUP_SYNC_ENABLED` ) - ---- - -## REMOTE_AUTH_STAFF_USERS - -Default: `[]` (Empty list) - -The list of users that get promoted to Staff on Login. If user isn't present in list on next Login, the Role gets revoked. (Requires `REMOTE_AUTH_ENABLED` and `REMOTE_AUTH_GROUP_SYNC_ENABLED` ) - ---- - -## REMOTE_AUTH_GROUP_SEPARATOR - -Default: `|` (Pipe) - -The Seperator upon which `REMOTE_AUTH_GROUP_HEADER` gets split into individual Groups. This needs to be coordinated with your authentication Proxy. (Requires `REMOTE_AUTH_ENABLED` and `REMOTE_AUTH_GROUP_SYNC_ENABLED` ) - ---- - ## RELEASE_CHECK_URL Default: None (disabled) diff --git a/docs/configuration/remote-authentication.md b/docs/configuration/remote-authentication.md new file mode 100644 index 000000000..c00da8b67 --- /dev/null +++ b/docs/configuration/remote-authentication.md @@ -0,0 +1,110 @@ +# Remote Authentication Settings + +The configuration parameters listed here control remote authentication for NetBox. Note that `REMOTE_AUTH_ENABLED` must be true in order for these settings to take effect. + +--- + +## REMOTE_AUTH_AUTO_CREATE_USER + +Default: `False` + +If true, NetBox will automatically create local accounts for users authenticated via a remote service. (Requires `REMOTE_AUTH_ENABLED`.) + +--- + +## REMOTE_AUTH_BACKEND + +Default: `'netbox.authentication.RemoteUserBackend'` + +This is the Python path to the custom [Django authentication backend](https://docs.djangoproject.com/en/stable/topics/auth/customizing/) to use for external user authentication. NetBox provides two built-in backends (listed below), though custom authentication backends may also be provided by other packages or plugins. + +* `netbox.authentication.RemoteUserBackend` +* `netbox.authentication.LDAPBackend` + +--- + +## REMOTE_AUTH_DEFAULT_GROUPS + +Default: `[]` (Empty list) + +The list of groups to assign a new user account when created using remote authentication. (Requires `REMOTE_AUTH_ENABLED`.) + +--- + +## REMOTE_AUTH_DEFAULT_PERMISSIONS + +Default: `{}` (Empty dictionary) + +A mapping of permissions to assign a new user account when created using remote authentication. Each key in the dictionary should be set to a dictionary of the attributes to be applied to the permission, or `None` to allow all objects. (Requires `REMOTE_AUTH_ENABLED`.) + +--- + +## REMOTE_AUTH_ENABLED + +Default: `False` + +NetBox can be configured to support remote user authentication by inferring user authentication from an HTTP header set by the HTTP reverse proxy (e.g. nginx or Apache). Set this to `True` to enable this functionality. (Local authentication will still take effect as a fallback.) + +--- + +## REMOTE_AUTH_GROUP_SYNC_ENABLED + +Default: `False` + +NetBox can be configured to sync remote user groups by inferring user authentication from an HTTP header set by the HTTP reverse proxy (e.g. nginx or Apache). Set this to `True` to enable this functionality. (Local authentication will still take effect as a fallback.) (Requires `REMOTE_AUTH_ENABLED`.) + +--- + +## REMOTE_AUTH_HEADER + +Default: `'HTTP_REMOTE_USER'` + +When remote user authentication is in use, this is the name of the HTTP header which informs NetBox of the currently authenticated user. For example, to use the request header `X-Remote-User` it needs to be set to `HTTP_X_REMOTE_USER`. (Requires `REMOTE_AUTH_ENABLED`.) + +--- + +## REMOTE_AUTH_GROUP_HEADER + +Default: `'HTTP_REMOTE_USER_GROUP'` + +When remote user authentication is in use, this is the name of the HTTP header which informs NetBox of the currently authenticated user. For example, to use the request header `X-Remote-User-Groups` it needs to be set to `HTTP_X_REMOTE_USER_GROUPS`. (Requires `REMOTE_AUTH_ENABLED` and `REMOTE_AUTH_GROUP_SYNC_ENABLED` ) + +--- + +## REMOTE_AUTH_SUPERUSER_GROUPS + +Default: `[]` (Empty list) + +The list of groups that promote an remote User to Superuser on Login. If group isn't present on next Login, the Role gets revoked. (Requires `REMOTE_AUTH_ENABLED` and `REMOTE_AUTH_GROUP_SYNC_ENABLED` ) + +--- + +## REMOTE_AUTH_SUPERUSERS + +Default: `[]` (Empty list) + +The list of users that get promoted to Superuser on Login. If user isn't present in list on next Login, the Role gets revoked. (Requires `REMOTE_AUTH_ENABLED` and `REMOTE_AUTH_GROUP_SYNC_ENABLED` ) + +--- + +## REMOTE_AUTH_STAFF_GROUPS + +Default: `[]` (Empty list) + +The list of groups that promote an remote User to Staff on Login. If group isn't present on next Login, the Role gets revoked. (Requires `REMOTE_AUTH_ENABLED` and `REMOTE_AUTH_GROUP_SYNC_ENABLED` ) + +--- + +## REMOTE_AUTH_STAFF_USERS + +Default: `[]` (Empty list) + +The list of users that get promoted to Staff on Login. If user isn't present in list on next Login, the Role gets revoked. (Requires `REMOTE_AUTH_ENABLED` and `REMOTE_AUTH_GROUP_SYNC_ENABLED` ) + +--- + +## REMOTE_AUTH_GROUP_SEPARATOR + +Default: `|` (Pipe) + +The Seperator upon which `REMOTE_AUTH_GROUP_HEADER` gets split into individual Groups. This needs to be coordinated with your authentication Proxy. (Requires `REMOTE_AUTH_ENABLED` and `REMOTE_AUTH_GROUP_SYNC_ENABLED` ) diff --git a/mkdocs.yml b/mkdocs.yml index a13826ecf..3fb838ffd 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -52,6 +52,7 @@ nav: - Required Settings: 'configuration/required-settings.md' - Optional Settings: 'configuration/optional-settings.md' - Dynamic Settings: 'configuration/dynamic-settings.md' + - Remote Authentication: 'configuration/remote-authentication.md' - Core Functionality: - IP Address Management: 'core-functionality/ipam.md' - VLAN Management: 'core-functionality/vlans.md' From 806dcd74ec518bd8f55bcb5861cf66a9b3e8d39f Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Thu, 4 Nov 2021 15:58:17 -0400 Subject: [PATCH 166/289] Split circuits models into submodules --- netbox/circuits/models/__init__.py | 2 + .../{models.py => models/circuits.py} | 120 +----------------- netbox/circuits/models/providers.py | 116 +++++++++++++++++ 3 files changed, 122 insertions(+), 116 deletions(-) create mode 100644 netbox/circuits/models/__init__.py rename netbox/circuits/{models.py => models/circuits.py} (69%) create mode 100644 netbox/circuits/models/providers.py diff --git a/netbox/circuits/models/__init__.py b/netbox/circuits/models/__init__.py new file mode 100644 index 000000000..7bbaf75d3 --- /dev/null +++ b/netbox/circuits/models/__init__.py @@ -0,0 +1,2 @@ +from .circuits import * +from .providers import * diff --git a/netbox/circuits/models.py b/netbox/circuits/models/circuits.py similarity index 69% rename from netbox/circuits/models.py rename to netbox/circuits/models/circuits.py index 089d6cb2d..3af3c6bc0 100644 --- a/netbox/circuits/models.py +++ b/netbox/circuits/models/circuits.py @@ -3,131 +3,19 @@ from django.core.exceptions import ValidationError from django.db import models from django.urls import reverse -from dcim.fields import ASNField -from dcim.models import LinkTermination, PathEndpoint -from extras.models import ObjectChange +from circuits.choices import * +from dcim.models import LinkTermination from extras.utils import extras_features -from netbox.models import BigIDModel, ChangeLoggedModel, OrganizationalModel, PrimaryModel +from netbox.models import ChangeLoggedModel, OrganizationalModel, PrimaryModel from utilities.querysets import RestrictedQuerySet -from .choices import * - __all__ = ( 'Circuit', 'CircuitTermination', 'CircuitType', - 'ProviderNetwork', - 'Provider', ) -@extras_features('custom_fields', 'custom_links', 'export_templates', 'tags', 'webhooks') -class Provider(PrimaryModel): - """ - Each Circuit belongs to a Provider. This is usually a telecommunications company or similar organization. This model - stores information pertinent to the user's relationship with the Provider. - """ - name = models.CharField( - max_length=100, - unique=True - ) - slug = models.SlugField( - max_length=100, - unique=True - ) - asn = ASNField( - blank=True, - null=True, - verbose_name='ASN', - help_text='32-bit autonomous system number' - ) - account = models.CharField( - max_length=30, - blank=True, - verbose_name='Account number' - ) - portal_url = models.URLField( - blank=True, - verbose_name='Portal URL' - ) - noc_contact = models.TextField( - blank=True, - verbose_name='NOC contact' - ) - admin_contact = models.TextField( - blank=True, - verbose_name='Admin contact' - ) - comments = models.TextField( - blank=True - ) - - # Generic relations - contacts = GenericRelation( - to='tenancy.ContactAssignment' - ) - - objects = RestrictedQuerySet.as_manager() - - clone_fields = [ - 'asn', 'account', 'portal_url', 'noc_contact', 'admin_contact', - ] - - class Meta: - ordering = ['name'] - - def __str__(self): - return self.name - - def get_absolute_url(self): - return reverse('circuits:provider', args=[self.pk]) - - -# -# Provider networks -# - -@extras_features('custom_fields', 'custom_links', 'export_templates', 'tags', 'webhooks') -class ProviderNetwork(PrimaryModel): - """ - This represents a provider network which exists outside of NetBox, the details of which are unknown or - unimportant to the user. - """ - name = models.CharField( - max_length=100 - ) - provider = models.ForeignKey( - to='circuits.Provider', - on_delete=models.PROTECT, - related_name='networks' - ) - description = models.CharField( - max_length=200, - blank=True - ) - comments = models.TextField( - blank=True - ) - - objects = RestrictedQuerySet.as_manager() - - class Meta: - ordering = ('provider', 'name') - constraints = ( - models.UniqueConstraint( - fields=('provider', 'name'), - name='circuits_providernetwork_provider_name' - ), - ) - unique_together = ('provider', 'name') - - def __str__(self): - return self.name - - def get_absolute_url(self): - return reverse('circuits:providernetwork', args=[self.pk]) - - @extras_features('custom_fields', 'custom_links', 'export_templates', 'tags', 'webhooks') class CircuitType(OrganizationalModel): """ @@ -275,7 +163,7 @@ class CircuitTermination(ChangeLoggedModel, LinkTermination): null=True ) provider_network = models.ForeignKey( - to=ProviderNetwork, + to='circuits.ProviderNetwork', on_delete=models.PROTECT, related_name='circuit_terminations', blank=True, diff --git a/netbox/circuits/models/providers.py b/netbox/circuits/models/providers.py new file mode 100644 index 000000000..1449e9520 --- /dev/null +++ b/netbox/circuits/models/providers.py @@ -0,0 +1,116 @@ +from django.contrib.contenttypes.fields import GenericRelation +from django.db import models +from django.urls import reverse + +from dcim.fields import ASNField +from extras.utils import extras_features +from netbox.models import PrimaryModel +from utilities.querysets import RestrictedQuerySet + +__all__ = ( + 'ProviderNetwork', + 'Provider', +) + + +@extras_features('custom_fields', 'custom_links', 'export_templates', 'tags', 'webhooks') +class Provider(PrimaryModel): + """ + Each Circuit belongs to a Provider. This is usually a telecommunications company or similar organization. This model + stores information pertinent to the user's relationship with the Provider. + """ + name = models.CharField( + max_length=100, + unique=True + ) + slug = models.SlugField( + max_length=100, + unique=True + ) + asn = ASNField( + blank=True, + null=True, + verbose_name='ASN', + help_text='32-bit autonomous system number' + ) + account = models.CharField( + max_length=30, + blank=True, + verbose_name='Account number' + ) + portal_url = models.URLField( + blank=True, + verbose_name='Portal URL' + ) + noc_contact = models.TextField( + blank=True, + verbose_name='NOC contact' + ) + admin_contact = models.TextField( + blank=True, + verbose_name='Admin contact' + ) + comments = models.TextField( + blank=True + ) + + # Generic relations + contacts = GenericRelation( + to='tenancy.ContactAssignment' + ) + + objects = RestrictedQuerySet.as_manager() + + clone_fields = [ + 'asn', 'account', 'portal_url', 'noc_contact', 'admin_contact', + ] + + class Meta: + ordering = ['name'] + + def __str__(self): + return self.name + + def get_absolute_url(self): + return reverse('circuits:provider', args=[self.pk]) + + +@extras_features('custom_fields', 'custom_links', 'export_templates', 'tags', 'webhooks') +class ProviderNetwork(PrimaryModel): + """ + This represents a provider network which exists outside of NetBox, the details of which are unknown or + unimportant to the user. + """ + name = models.CharField( + max_length=100 + ) + provider = models.ForeignKey( + to='circuits.Provider', + on_delete=models.PROTECT, + related_name='networks' + ) + description = models.CharField( + max_length=200, + blank=True + ) + comments = models.TextField( + blank=True + ) + + objects = RestrictedQuerySet.as_manager() + + class Meta: + ordering = ('provider', 'name') + constraints = ( + models.UniqueConstraint( + fields=('provider', 'name'), + name='circuits_providernetwork_provider_name' + ), + ) + unique_together = ('provider', 'name') + + def __str__(self): + return self.name + + def get_absolute_url(self): + return reverse('circuits:providernetwork', args=[self.pk]) From 0bbd18663547a25e53393ed6aec637529f64f60a Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Thu, 4 Nov 2021 15:58:52 -0400 Subject: [PATCH 167/289] Rearrange site view layout --- netbox/templates/dcim/site.html | 71 ++++++++++++++++----------------- 1 file changed, 35 insertions(+), 36 deletions(-) diff --git a/netbox/templates/dcim/site.html b/netbox/templates/dcim/site.html index 308b09816..fe7f86d67 100644 --- a/netbox/templates/dcim/site.html +++ b/netbox/templates/dcim/site.html @@ -95,49 +95,48 @@ {% endif %}
- - - - - - - - - - - -
Protocol Virtual IPs Priority
{{ assignment.priority }} + {% if perms.ipam.change_fhrpgroupassignment %} + + + + {% endif %} + {% if perms.ipam.delete_fhrpgroupassignment %} + + + + {% endif %} +
Physical Address - {% if object.physical_address %} - - {{ object.physical_address|linebreaksbr }} - {% else %} - - {% endif %} -
Shipping Address{{ object.shipping_address|linebreaksbr|placeholder }}
GPS Coordinates - {% if object.latitude and object.longitude %} - - {{ object.latitude }}, {{ object.longitude }} - {% else %} - - {% endif %} -
- {% include 'inc/panels/contacts.html' %}
Contact Info
{% with deprecation_warning="This field will be removed in a future release. Please migrate this data to contact objects." %} + + + + + + + + + + + + {% for location in locations %} - {% empty %} - + {% endfor %} @@ -54,12 +54,12 @@ - + - + diff --git a/netbox/tenancy/tables.py b/netbox/tenancy/tables.py index ff9f826ae..0ae1139bf 100644 --- a/netbox/tenancy/tables.py +++ b/netbox/tenancy/tables.py @@ -1,7 +1,8 @@ import django_tables2 as tables from utilities.tables import ( - BaseTable, ButtonsColumn, ContentTypeColumn, LinkedCountColumn, MarkdownColumn, MPTTColumn, TagColumn, ToggleColumn, + BaseTable, ButtonsColumn, ContentTypeColumn, LinkedCountColumn, linkify_phone, MarkdownColumn, MPTTColumn, + TagColumn, ToggleColumn, ) from .models import * @@ -131,6 +132,9 @@ class ContactTable(BaseTable): group = tables.Column( linkify=True ) + phone = tables.Column( + linkify=linkify_phone, + ) comments = MarkdownColumn() assignment_count = tables.Column( verbose_name='Assignments' diff --git a/netbox/utilities/tables.py b/netbox/utilities/tables.py index 6ad8ce6ca..7b348b5ac 100644 --- a/netbox/utilities/tables.py +++ b/netbox/utilities/tables.py @@ -489,3 +489,19 @@ def paginate_table(table, request): 'per_page': get_paginate_count(request) } RequestConfig(request, paginate).configure(table) + + +# +# Callables +# + +def linkify_email(value): + if value is None: + return None + return f"mailto:{value}" + + +def linkify_phone(value): + if value is None: + return None + return f"tel:{value}" From a99d14c13ffa68096073091372bae1ba170e9f5e Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Fri, 3 Dec 2021 11:00:00 -0500 Subject: [PATCH 278/289] Closes #7924: Include child groups on contact group view --- docs/release-notes/version-3.1.md | 1 + netbox/templates/tenancy/contactgroup.html | 21 ++++++++++++++++++--- netbox/tenancy/views.py | 12 ++++++++++++ 3 files changed, 31 insertions(+), 3 deletions(-) diff --git a/docs/release-notes/version-3.1.md b/docs/release-notes/version-3.1.md index 11e034fca..86058f6e3 100644 --- a/docs/release-notes/version-3.1.md +++ b/docs/release-notes/version-3.1.md @@ -15,6 +15,7 @@ * [#7812](https://github.com/netbox-community/netbox/issues/7812) - Enable change logging for image attachments * [#7858](https://github.com/netbox-community/netbox/issues/7858) - Standardize the representation of content types across import & export functions * [#7884](https://github.com/netbox-community/netbox/issues/7884) - Add FHRP groups column to interface tables +* [#7924](https://github.com/netbox-community/netbox/issues/7924) - Include child groups on contact group view * [#7925](https://github.com/netbox-community/netbox/issues/7925) - Linkify contact phone and email attributes ### Bug Fixes diff --git a/netbox/templates/tenancy/contactgroup.html b/netbox/templates/tenancy/contactgroup.html index efb86af91..05ec88022 100644 --- a/netbox/templates/tenancy/contactgroup.html +++ b/netbox/templates/tenancy/contactgroup.html @@ -50,15 +50,30 @@
{% include 'inc/panels/custom_fields.html' %} +
+
+ Child Groups +
+
+ {% include 'inc/table.html' with table=child_groups_table %} +
+ {% if perms.tenancy.add_contactgroup %} + + {% endif %} +
{% plugin_right_page object %}
-
- Tenants -
+
+ Contacts +
{% include 'inc/table.html' with table=contacts_table %}
diff --git a/netbox/tenancy/views.py b/netbox/tenancy/views.py index a3e680401..5991d34d9 100644 --- a/netbox/tenancy/views.py +++ b/netbox/tenancy/views.py @@ -168,6 +168,17 @@ class ContactGroupView(generic.ObjectView): queryset = ContactGroup.objects.all() def get_extra_context(self, request, instance): + child_groups = ContactGroup.objects.add_related_count( + ContactGroup.objects.all(), + Contact, + 'group', + 'contact_count', + cumulative=True + ).restrict(request.user, 'view').filter( + parent__in=instance.get_descendants(include_self=True) + ) + child_groups_table = tables.ContactGroupTable(child_groups) + contacts = Contact.objects.restrict(request.user, 'view').filter( group=instance ) @@ -175,6 +186,7 @@ class ContactGroupView(generic.ObjectView): paginate_table(contacts_table, request) return { + 'child_groups_table': child_groups_table, 'contacts_table': contacts_table, } From 09b612546b9b0c70be9ffa8c857d927c5adaabf3 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Fri, 3 Dec 2021 11:07:16 -0500 Subject: [PATCH 279/289] Omit actions column from non-paginated child object tables --- netbox/dcim/views.py | 2 ++ netbox/tenancy/views.py | 1 + 2 files changed, 3 insertions(+) diff --git a/netbox/dcim/views.py b/netbox/dcim/views.py index f07bc6900..e353f24d0 100644 --- a/netbox/dcim/views.py +++ b/netbox/dcim/views.py @@ -157,6 +157,7 @@ class RegionView(generic.ObjectView): parent__in=instance.get_descendants(include_self=True) ) child_regions_table = tables.RegionTable(child_regions) + child_regions_table.columns.hide('actions') sites = Site.objects.restrict(request.user, 'view').filter( region=instance @@ -241,6 +242,7 @@ class SiteGroupView(generic.ObjectView): parent__in=instance.get_descendants(include_self=True) ) child_groups_table = tables.SiteGroupTable(child_groups) + child_groups_table.columns.hide('actions') sites = Site.objects.restrict(request.user, 'view').filter( group=instance diff --git a/netbox/tenancy/views.py b/netbox/tenancy/views.py index 5991d34d9..c848de47f 100644 --- a/netbox/tenancy/views.py +++ b/netbox/tenancy/views.py @@ -178,6 +178,7 @@ class ContactGroupView(generic.ObjectView): parent__in=instance.get_descendants(include_self=True) ) child_groups_table = tables.ContactGroupTable(child_groups) + child_groups_table.columns.hide('actions') contacts = Contact.objects.restrict(request.user, 'view').filter( group=instance From b43980d6607babee9222d4c5d19b0896c8a72914 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Fri, 3 Dec 2021 15:09:56 -0500 Subject: [PATCH 280/289] Fixes #7960: Prevent creation of regions/site groups/locations with duplicate names (see #7354) --- docs/release-notes/version-3.1.md | 1 + .../0137_relax_uniqueness_constraints.py | 56 +++++++-- netbox/dcim/models/sites.py | 110 ++++++++++++++++-- 3 files changed, 148 insertions(+), 19 deletions(-) diff --git a/docs/release-notes/version-3.1.md b/docs/release-notes/version-3.1.md index 86058f6e3..0ab4a611d 100644 --- a/docs/release-notes/version-3.1.md +++ b/docs/release-notes/version-3.1.md @@ -27,6 +27,7 @@ * [#7771](https://github.com/netbox-community/netbox/issues/7771) - Group assignment should be optional when creating contacts via REST API * [#7849](https://github.com/netbox-community/netbox/issues/7849) - Fix exception when creating an FHRPGroup with an invalid IP address * [#7880](https://github.com/netbox-community/netbox/issues/7880) - Include assigned IP addresses in FHRP group object representation +* [#7960](https://github.com/netbox-community/netbox/issues/7960) - Prevent creation of regions/site groups/locations with duplicate names (see #7354) ### REST API Changes diff --git a/netbox/dcim/migrations/0137_relax_uniqueness_constraints.py b/netbox/dcim/migrations/0137_relax_uniqueness_constraints.py index 8f7d40026..7cedb1b08 100644 --- a/netbox/dcim/migrations/0137_relax_uniqueness_constraints.py +++ b/netbox/dcim/migrations/0137_relax_uniqueness_constraints.py @@ -1,5 +1,3 @@ -# Generated by Django 3.2.8 on 2021-10-19 17:41 - from django.db import migrations, models @@ -32,14 +30,54 @@ class Migration(migrations.Migration): ), migrations.AlterUniqueTogether( name='location', - unique_together={('site', 'parent', 'name'), ('site', 'parent', 'slug')}, + unique_together=set(), ), - migrations.AlterUniqueTogether( - name='region', - unique_together={('parent', 'slug'), ('parent', 'name')}, + migrations.AddConstraint( + model_name='location', + constraint=models.UniqueConstraint(fields=('site', 'parent', 'name'), name='dcim_location_parent_name'), ), - migrations.AlterUniqueTogether( - name='sitegroup', - unique_together={('parent', 'slug'), ('parent', 'name')}, + migrations.AddConstraint( + model_name='location', + constraint=models.UniqueConstraint(condition=models.Q(('parent', None)), fields=('site', 'name'), name='dcim_location_name'), + ), + migrations.AddConstraint( + model_name='location', + constraint=models.UniqueConstraint(fields=('site', 'parent', 'slug'), name='dcim_location_parent_slug'), + ), + migrations.AddConstraint( + model_name='location', + constraint=models.UniqueConstraint(condition=models.Q(('parent', None)), fields=('site', 'slug'), name='dcim_location_slug'), + ), + migrations.AddConstraint( + model_name='region', + constraint=models.UniqueConstraint(fields=('parent', 'name'), name='dcim_region_parent_name'), + ), + migrations.AddConstraint( + model_name='region', + constraint=models.UniqueConstraint(condition=models.Q(('parent', None)), fields=('name',), name='dcim_region_name'), + ), + migrations.AddConstraint( + model_name='region', + constraint=models.UniqueConstraint(fields=('parent', 'slug'), name='dcim_region_parent_slug'), + ), + migrations.AddConstraint( + model_name='region', + constraint=models.UniqueConstraint(condition=models.Q(('parent', None)), fields=('slug',), name='dcim_region_slug'), + ), + migrations.AddConstraint( + model_name='sitegroup', + constraint=models.UniqueConstraint(fields=('parent', 'name'), name='dcim_sitegroup_parent_name'), + ), + migrations.AddConstraint( + model_name='sitegroup', + constraint=models.UniqueConstraint(condition=models.Q(('parent', None)), fields=('name',), name='dcim_sitegroup_name'), + ), + migrations.AddConstraint( + model_name='sitegroup', + constraint=models.UniqueConstraint(fields=('parent', 'slug'), name='dcim_sitegroup_parent_slug'), + ), + migrations.AddConstraint( + model_name='sitegroup', + constraint=models.UniqueConstraint(condition=models.Q(('parent', None)), fields=('slug',), name='dcim_sitegroup_slug'), ), ] diff --git a/netbox/dcim/models/sites.py b/netbox/dcim/models/sites.py index fd40b30c4..a19ae8050 100644 --- a/netbox/dcim/models/sites.py +++ b/netbox/dcim/models/sites.py @@ -62,11 +62,41 @@ class Region(NestedGroupModel): ) class Meta: - unique_together = ( - ('parent', 'name'), - ('parent', 'slug'), + constraints = ( + models.UniqueConstraint( + fields=('parent', 'name'), + name='dcim_region_parent_name' + ), + models.UniqueConstraint( + fields=('name',), + name='dcim_region_name', + condition=Q(parent=None) + ), + models.UniqueConstraint( + fields=('parent', 'slug'), + name='dcim_region_parent_slug' + ), + models.UniqueConstraint( + fields=('slug',), + name='dcim_region_slug', + condition=Q(parent=None) + ), ) + def validate_unique(self, exclude=None): + if self.parent is None: + regions = Region.objects.exclude(pk=self.pk) + if regions.filter(name=self.name, parent__isnull=True).exists(): + raise ValidationError({ + 'name': 'A region with this name already exists.' + }) + if regions.filter(slug=self.slug, parent__isnull=True).exists(): + raise ValidationError({ + 'name': 'A region with this slug already exists.' + }) + + super().validate_unique(exclude=exclude) + def get_absolute_url(self): return reverse('dcim:region', args=[self.pk]) @@ -119,11 +149,41 @@ class SiteGroup(NestedGroupModel): ) class Meta: - unique_together = ( - ('parent', 'name'), - ('parent', 'slug'), + constraints = ( + models.UniqueConstraint( + fields=('parent', 'name'), + name='dcim_sitegroup_parent_name' + ), + models.UniqueConstraint( + fields=('name',), + name='dcim_sitegroup_name', + condition=Q(parent=None) + ), + models.UniqueConstraint( + fields=('parent', 'slug'), + name='dcim_sitegroup_parent_slug' + ), + models.UniqueConstraint( + fields=('slug',), + name='dcim_sitegroup_slug', + condition=Q(parent=None) + ), ) + def validate_unique(self, exclude=None): + if self.parent is None: + site_groups = SiteGroup.objects.exclude(pk=self.pk) + if site_groups.filter(name=self.name, parent__isnull=True).exists(): + raise ValidationError({ + 'name': 'A site group with this name already exists.' + }) + if site_groups.filter(slug=self.slug, parent__isnull=True).exists(): + raise ValidationError({ + 'name': 'A site group with this slug already exists.' + }) + + super().validate_unique(exclude=exclude) + def get_absolute_url(self): return reverse('dcim:sitegroup', args=[self.pk]) @@ -335,10 +395,40 @@ class Location(NestedGroupModel): class Meta: ordering = ['site', 'name'] - unique_together = ([ - ('site', 'parent', 'name'), - ('site', 'parent', 'slug'), - ]) + constraints = ( + models.UniqueConstraint( + fields=('site', 'parent', 'name'), + name='dcim_location_parent_name' + ), + models.UniqueConstraint( + fields=('site', 'name'), + name='dcim_location_name', + condition=Q(parent=None) + ), + models.UniqueConstraint( + fields=('site', 'parent', 'slug'), + name='dcim_location_parent_slug' + ), + models.UniqueConstraint( + fields=('site', 'slug'), + name='dcim_location_slug', + condition=Q(parent=None) + ), + ) + + def validate_unique(self, exclude=None): + if self.parent is None: + locations = Location.objects.exclude(pk=self.pk) + if locations.filter(name=self.name, site=self.site, parent__isnull=True).exists(): + raise ValidationError({ + "name": f"A location with this name in site {self.site} already exists." + }) + if locations.filter(slug=self.slug, site=self.site, parent__isnull=True).exists(): + raise ValidationError({ + "name": f"A location with this slug in site {self.site} already exists." + }) + + super().validate_unique(exclude=exclude) def get_absolute_url(self): return reverse('dcim:location', args=[self.pk]) From 7cb9cedfe1335b00307145312edf73852c8a6444 Mon Sep 17 00:00:00 2001 From: thatmattlove Date: Fri, 3 Dec 2021 16:20:05 -0700 Subject: [PATCH 281/289] Fixes #7823: Properly handle return_url when Save & Continue button is present --- docs/release-notes/version-3.0.md | 1 + netbox/project-static/dist/netbox.js | 14 +++---- netbox/project-static/dist/netbox.js.map | 2 +- netbox/project-static/src/forms/elements.ts | 40 ++++++++++++++++++- netbox/templates/dcim/interface_edit.html | 2 +- .../virtualization/vminterface_edit.html | 2 +- 6 files changed, 50 insertions(+), 11 deletions(-) diff --git a/docs/release-notes/version-3.0.md b/docs/release-notes/version-3.0.md index b84f2a3c0..9be270999 100644 --- a/docs/release-notes/version-3.0.md +++ b/docs/release-notes/version-3.0.md @@ -5,6 +5,7 @@ ### Enhancements * [#7751](https://github.com/netbox-community/netbox/issues/7751) - Get API user from LDAP only when `FIND_GROUP_PERMS` is enabled +* [#7823](https://github.com/netbox-community/netbox/issues/7823) - Fix issue where `return_url` is not honored when 'Save & Continue' button is present * [#7885](https://github.com/netbox-community/netbox/issues/7885) - Linkify VLAN name in VLANs table * [#7892](https://github.com/netbox-community/netbox/issues/7892) - Add L22-30 power port & outlet types * [#7932](https://github.com/netbox-community/netbox/issues/7932) - Improve performance of the "quick find" function diff --git a/netbox/project-static/dist/netbox.js b/netbox/project-static/dist/netbox.js index b8567f060..c4a8e802d 100644 --- a/netbox/project-static/dist/netbox.js +++ b/netbox/project-static/dist/netbox.js @@ -1,12 +1,12 @@ -(()=>{var ib=Object.create;var ei=Object.defineProperty,rb=Object.defineProperties,ob=Object.getOwnPropertyDescriptor,sb=Object.getOwnPropertyDescriptors,ab=Object.getOwnPropertyNames,Ul=Object.getOwnPropertySymbols,lb=Object.getPrototypeOf,Kl=Object.prototype.hasOwnProperty,cb=Object.prototype.propertyIsEnumerable;var Wo=(t,e,n)=>e in t?ei(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,K=(t,e)=>{for(var n in e||(e={}))Kl.call(e,n)&&Wo(t,n,e[n]);if(Ul)for(var n of Ul(e))cb.call(e,n)&&Wo(t,n,e[n]);return t},tr=(t,e)=>rb(t,sb(e)),Gl=t=>ei(t,"__esModule",{value:!0});var x=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),ub=(t,e)=>{Gl(t);for(var n in e)ei(t,n,{get:e[n],enumerable:!0})},db=(t,e,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of ab(e))!Kl.call(t,i)&&i!=="default"&&ei(t,i,{get:()=>e[i],enumerable:!(n=ob(e,i))||n.enumerable});return t},Le=t=>db(Gl(ei(t!=null?ib(lb(t)):{},"default",t&&t.__esModule&&"default"in t?{get:()=>t.default,enumerable:!0}:{value:t,enumerable:!0})),t);var Q=(t,e,n)=>(Wo(t,typeof e!="symbol"?e+"":e,n),n);var Pe=(t,e,n)=>new Promise((i,o)=>{var s=d=>{try{c(n.next(d))}catch(u){o(u)}},a=d=>{try{c(n.throw(d))}catch(u){o(u)}},c=d=>d.done?i(d.value):Promise.resolve(d.value).then(s,a);c((n=n.apply(t,e)).next())});var de=x((xP,Du)=>{var Or=function(t){return t&&t.Math==Math&&t};Du.exports=Or(typeof globalThis=="object"&&globalThis)||Or(typeof window=="object"&&window)||Or(typeof self=="object"&&self)||Or(typeof global=="object"&&global)||function(){return this}()||Function("return this")()});var ye=x((OP,Mu)=>{Mu.exports=function(t){try{return!!t()}catch(e){return!0}}});var Rt=x((AP,Iu)=>{var uS=ye();Iu.exports=!uS(function(){return Object.defineProperty({},1,{get:function(){return 7}})[1]!=7})});var xs=x(Nu=>{"use strict";var ku={}.propertyIsEnumerable,Pu=Object.getOwnPropertyDescriptor,dS=Pu&&!ku.call({1:2},1);Nu.f=dS?function(e){var n=Pu(this,e);return!!n&&n.enumerable}:ku});var Ar=x((LP,Ru)=>{Ru.exports=function(t,e){return{enumerable:!(t&1),configurable:!(t&2),writable:!(t&4),value:e}}});var Nn=x((DP,ju)=>{var fS={}.toString;ju.exports=function(t){return fS.call(t).slice(8,-1)}});var Ti=x((MP,Hu)=>{var hS=ye(),pS=Nn(),mS="".split;Hu.exports=hS(function(){return!Object("z").propertyIsEnumerable(0)})?function(t){return pS(t)=="String"?mS.call(t,""):Object(t)}:Object});var un=x((IP,qu)=>{qu.exports=function(t){if(t==null)throw TypeError("Can't call method on "+t);return t}});var Rn=x((kP,$u)=>{var gS=Ti(),vS=un();$u.exports=function(t){return gS(vS(t))}});var je=x((PP,Fu)=>{Fu.exports=function(t){return typeof t=="object"?t!==null:typeof t=="function"}});var xi=x((NP,Bu)=>{var Os=de(),bS=function(t){return typeof t=="function"?t:void 0};Bu.exports=function(t,e){return arguments.length<2?bS(Os[t]):Os[t]&&Os[t][e]}});var Wu=x((RP,zu)=>{var yS=xi();zu.exports=yS("navigator","userAgent")||""});var Lr=x((jP,Xu)=>{var Vu=de(),As=Wu(),Yu=Vu.process,Uu=Vu.Deno,Ku=Yu&&Yu.versions||Uu&&Uu.version,Gu=Ku&&Ku.v8,nt,Cr;Gu?(nt=Gu.split("."),Cr=nt[0]<4?1:nt[0]+nt[1]):As&&(nt=As.match(/Edge\/(\d+)/),(!nt||nt[1]>=74)&&(nt=As.match(/Chrome\/(\d+)/),nt&&(Cr=nt[1])));Xu.exports=Cr&&+Cr});var Cs=x((HP,Ju)=>{var Qu=Lr(),ES=ye();Ju.exports=!!Object.getOwnPropertySymbols&&!ES(function(){var t=Symbol();return!String(t)||!(Object(t)instanceof Symbol)||!Symbol.sham&&Qu&&Qu<41})});var Ls=x((qP,Zu)=>{var _S=Cs();Zu.exports=_S&&!Symbol.sham&&typeof Symbol.iterator=="symbol"});var Dr=x(($P,ed)=>{var SS=xi(),wS=Ls();ed.exports=wS?function(t){return typeof t=="symbol"}:function(t){var e=SS("Symbol");return typeof e=="function"&&Object(t)instanceof e}});var nd=x((FP,td)=>{var Ds=je();td.exports=function(t,e){var n,i;if(e==="string"&&typeof(n=t.toString)=="function"&&!Ds(i=n.call(t))||typeof(n=t.valueOf)=="function"&&!Ds(i=n.call(t))||e!=="string"&&typeof(n=t.toString)=="function"&&!Ds(i=n.call(t)))return i;throw TypeError("Can't convert object to primitive value")}});var Mr=x((BP,id)=>{id.exports=!1});var Ir=x((zP,od)=>{var rd=de();od.exports=function(t,e){try{Object.defineProperty(rd,t,{value:e,configurable:!0,writable:!0})}catch(n){rd[t]=e}return e}});var kr=x((WP,ad)=>{var TS=de(),xS=Ir(),sd="__core-js_shared__",OS=TS[sd]||xS(sd,{});ad.exports=OS});var Pr=x((VP,cd)=>{var AS=Mr(),ld=kr();(cd.exports=function(t,e){return ld[t]||(ld[t]=e!==void 0?e:{})})("versions",[]).push({version:"3.16.4",mode:AS?"pure":"global",copyright:"\xA9 2021 Denis Pushkarev (zloirock.ru)"})});var dn=x((YP,ud)=>{var CS=un();ud.exports=function(t){return Object(CS(t))}});var ze=x((UP,dd)=>{var LS=dn(),DS={}.hasOwnProperty;dd.exports=Object.hasOwn||function(e,n){return DS.call(LS(e),n)}});var Nr=x((KP,fd)=>{var MS=0,IS=Math.random();fd.exports=function(t){return"Symbol("+String(t===void 0?"":t)+")_"+(++MS+IS).toString(36)}});var Se=x((GP,md)=>{var kS=de(),PS=Pr(),hd=ze(),NS=Nr(),pd=Cs(),RS=Ls(),Oi=PS("wks"),Ai=kS.Symbol,jS=RS?Ai:Ai&&Ai.withoutSetter||NS;md.exports=function(t){return(!hd(Oi,t)||!(pd||typeof Oi[t]=="string"))&&(pd&&hd(Ai,t)?Oi[t]=Ai[t]:Oi[t]=jS("Symbol."+t)),Oi[t]}});var yd=x((XP,bd)=>{var gd=je(),vd=Dr(),HS=nd(),qS=Se(),$S=qS("toPrimitive");bd.exports=function(t,e){if(!gd(t)||vd(t))return t;var n=t[$S],i;if(n!==void 0){if(e===void 0&&(e="default"),i=n.call(t,e),!gd(i)||vd(i))return i;throw TypeError("Can't convert object to primitive value")}return e===void 0&&(e="number"),HS(t,e)}});var Ms=x((QP,Ed)=>{var FS=yd(),BS=Dr();Ed.exports=function(t){var e=FS(t,"string");return BS(e)?e:String(e)}});var ks=x((JP,Sd)=>{var zS=de(),_d=je(),Is=zS.document,WS=_d(Is)&&_d(Is.createElement);Sd.exports=function(t){return WS?Is.createElement(t):{}}});var Ps=x((ZP,wd)=>{var VS=Rt(),YS=ye(),US=ks();wd.exports=!VS&&!YS(function(){return Object.defineProperty(US("div"),"a",{get:function(){return 7}}).a!=7})});var Ns=x(xd=>{var KS=Rt(),GS=xs(),XS=Ar(),QS=Rn(),JS=Ms(),ZS=ze(),ew=Ps(),Td=Object.getOwnPropertyDescriptor;xd.f=KS?Td:function(e,n){if(e=QS(e),n=JS(n),ew)try{return Td(e,n)}catch(i){}if(ZS(e,n))return XS(!GS.f.call(e,n),e[n])}});var He=x((tN,Od)=>{var tw=je();Od.exports=function(t){if(!tw(t))throw TypeError(String(t)+" is not an object");return t}});var jt=x(Ld=>{var nw=Rt(),iw=Ps(),Ad=He(),rw=Ms(),Cd=Object.defineProperty;Ld.f=nw?Cd:function(e,n,i){if(Ad(e),n=rw(n),Ad(i),iw)try{return Cd(e,n,i)}catch(o){}if("get"in i||"set"in i)throw TypeError("Accessors not supported");return"value"in i&&(e[n]=i.value),e}});var St=x((iN,Dd)=>{var ow=Rt(),sw=jt(),aw=Ar();Dd.exports=ow?function(t,e,n){return sw.f(t,e,aw(1,n))}:function(t,e,n){return t[e]=n,t}});var js=x((rN,Md)=>{var Rs=kr(),lw=Function.toString;typeof Rs.inspectSource!="function"&&(Rs.inspectSource=function(t){return lw.call(t)});Md.exports=Rs.inspectSource});var Hs=x((oN,kd)=>{var cw=de(),uw=js(),Id=cw.WeakMap;kd.exports=typeof Id=="function"&&/native code/.test(uw(Id))});var Rr=x((sN,Nd)=>{var dw=Pr(),fw=Nr(),Pd=dw("keys");Nd.exports=function(t){return Pd[t]||(Pd[t]=fw(t))}});var Ci=x((aN,Rd)=>{Rd.exports={}});var hn=x((lN,$d)=>{var hw=Hs(),pw=de(),mw=je(),gw=St(),qs=ze(),$s=kr(),vw=Rr(),bw=Ci(),jd="Object already initialized",yw=pw.WeakMap,jr,Li,Hr,Ew=function(t){return Hr(t)?Li(t):jr(t,{})},_w=function(t){return function(e){var n;if(!mw(e)||(n=Li(e)).type!==t)throw TypeError("Incompatible receiver, "+t+" required");return n}};hw||$s.state?(Ht=$s.state||($s.state=new yw),Hd=Ht.get,Fs=Ht.has,qd=Ht.set,jr=function(t,e){if(Fs.call(Ht,t))throw new TypeError(jd);return e.facade=t,qd.call(Ht,t,e),e},Li=function(t){return Hd.call(Ht,t)||{}},Hr=function(t){return Fs.call(Ht,t)}):(fn=vw("state"),bw[fn]=!0,jr=function(t,e){if(qs(t,fn))throw new TypeError(jd);return e.facade=t,gw(t,fn,e),e},Li=function(t){return qs(t,fn)?t[fn]:{}},Hr=function(t){return qs(t,fn)});var Ht,Hd,Fs,qd,fn;$d.exports={set:jr,get:Li,has:Hr,enforce:Ew,getterFor:_w}});var pn=x((cN,zd)=>{var Sw=de(),Fd=St(),ww=ze(),Tw=Ir(),xw=js(),Bd=hn(),Ow=Bd.get,Aw=Bd.enforce,Cw=String(String).split("String");(zd.exports=function(t,e,n,i){var o=i?!!i.unsafe:!1,s=i?!!i.enumerable:!1,a=i?!!i.noTargetGet:!1,c;if(typeof n=="function"&&(typeof e=="string"&&!ww(n,"name")&&Fd(n,"name",e),c=Aw(n),c.source||(c.source=Cw.join(typeof e=="string"?e:""))),t===Sw){s?t[e]=n:Tw(e,n);return}else o?!a&&t[e]&&(s=!0):delete t[e];s?t[e]=n:Fd(t,e,n)})(Function.prototype,"toString",function(){return typeof this=="function"&&Ow(this).source||xw(this)})});var Di=x((uN,Wd)=>{var Lw=Math.ceil,Dw=Math.floor;Wd.exports=function(t){return isNaN(t=+t)?0:(t>0?Dw:Lw)(t)}});var mn=x((dN,Vd)=>{var Mw=Di(),Iw=Math.min;Vd.exports=function(t){return t>0?Iw(Mw(t),9007199254740991):0}});var Ud=x((fN,Yd)=>{var kw=Di(),Pw=Math.max,Nw=Math.min;Yd.exports=function(t,e){var n=kw(t);return n<0?Pw(n+e,0):Nw(n,e)}});var Xd=x((hN,Gd)=>{var Rw=Rn(),jw=mn(),Hw=Ud(),Kd=function(t){return function(e,n,i){var o=Rw(e),s=jw(o.length),a=Hw(i,s),c;if(t&&n!=n){for(;s>a;)if(c=o[a++],c!=c)return!0}else for(;s>a;a++)if((t||a in o)&&o[a]===n)return t||a||0;return!t&&-1}};Gd.exports={includes:Kd(!0),indexOf:Kd(!1)}});var zs=x((pN,Qd)=>{var Bs=ze(),qw=Rn(),$w=Xd().indexOf,Fw=Ci();Qd.exports=function(t,e){var n=qw(t),i=0,o=[],s;for(s in n)!Bs(Fw,s)&&Bs(n,s)&&o.push(s);for(;e.length>i;)Bs(n,s=e[i++])&&(~$w(o,s)||o.push(s));return o}});var qr=x((mN,Jd)=>{Jd.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]});var $r=x(Zd=>{var Bw=zs(),zw=qr(),Ww=zw.concat("length","prototype");Zd.f=Object.getOwnPropertyNames||function(e){return Bw(e,Ww)}});var Ws=x(ef=>{ef.f=Object.getOwnPropertySymbols});var nf=x((bN,tf)=>{var Vw=xi(),Yw=$r(),Uw=Ws(),Kw=He();tf.exports=Vw("Reflect","ownKeys")||function(e){var n=Yw.f(Kw(e)),i=Uw.f;return i?n.concat(i(e)):n}});var of=x((yN,rf)=>{var Gw=ze(),Xw=nf(),Qw=Ns(),Jw=jt();rf.exports=function(t,e){for(var n=Xw(e),i=Jw.f,o=Qw.f,s=0;s{var Zw=ye(),eT=/#|\.prototype\./,Mi=function(t,e){var n=nT[tT(t)];return n==rT?!0:n==iT?!1:typeof e=="function"?Zw(e):!!e},tT=Mi.normalize=function(t){return String(t).replace(eT,".").toLowerCase()},nT=Mi.data={},iT=Mi.NATIVE="N",rT=Mi.POLYFILL="P";sf.exports=Mi});var it=x((_N,af)=>{var Ys=de(),oT=Ns().f,sT=St(),aT=pn(),lT=Ir(),cT=of(),uT=Vs();af.exports=function(t,e){var n=t.target,i=t.global,o=t.stat,s,a,c,d,u,l;if(i?a=Ys:o?a=Ys[n]||lT(n,{}):a=(Ys[n]||{}).prototype,a)for(c in e){if(u=e[c],t.noTargetGet?(l=oT(a,c),d=l&&l.value):d=a[c],s=uT(i?c:n+(o?".":"#")+c,t.forced),!s&&d!==void 0){if(typeof u==typeof d)continue;cT(u,d)}(t.sham||d&&d.sham)&&sT(u,"sham",!0),aT(a,c,u,t)}}});var Us=x((SN,lf)=>{lf.exports=function(t){if(typeof t!="function")throw TypeError(String(t)+" is not a function");return t}});var Ks=x((wN,cf)=>{var dT=Us();cf.exports=function(t,e,n){if(dT(t),e===void 0)return t;switch(n){case 0:return function(){return t.call(e)};case 1:return function(i){return t.call(e,i)};case 2:return function(i,o){return t.call(e,i,o)};case 3:return function(i,o,s){return t.call(e,i,o,s)}}return function(){return t.apply(e,arguments)}}});var df=x((TN,uf)=>{var fT=Nn();uf.exports=Array.isArray||function(e){return fT(e)=="Array"}});var pf=x((xN,hf)=>{var hT=je(),ff=df(),pT=Se(),mT=pT("species");hf.exports=function(t){var e;return ff(t)&&(e=t.constructor,typeof e=="function"&&(e===Array||ff(e.prototype))?e=void 0:hT(e)&&(e=e[mT],e===null&&(e=void 0))),e===void 0?Array:e}});var gf=x((ON,mf)=>{var gT=pf();mf.exports=function(t,e){return new(gT(t))(e===0?0:e)}});var Fr=x((AN,bf)=>{var vT=Ks(),bT=Ti(),yT=dn(),ET=mn(),_T=gf(),vf=[].push,qt=function(t){var e=t==1,n=t==2,i=t==3,o=t==4,s=t==6,a=t==7,c=t==5||s;return function(d,u,l,m){for(var f=yT(d),p=bT(f),g=vT(u,l,3),v=ET(p.length),h=0,y=m||_T,_=e?y(d,v):n||a?y(d,0):void 0,A,O;v>h;h++)if((c||h in p)&&(A=p[h],O=g(A,h,f),t))if(e)_[h]=O;else if(O)switch(t){case 3:return!0;case 5:return A;case 6:return h;case 2:vf.call(_,A)}else switch(t){case 4:return!1;case 7:vf.call(_,A)}return s?-1:i||o?o:_}};bf.exports={forEach:qt(0),map:qt(1),filter:qt(2),some:qt(3),every:qt(4),find:qt(5),findIndex:qt(6),filterReject:qt(7)}});var Gs=x((CN,yf)=>{"use strict";var ST=ye();yf.exports=function(t,e){var n=[][t];return!!n&&ST(function(){n.call(null,e||function(){throw 1},1)})}});var Xs=x((LN,Ef)=>{"use strict";var wT=Fr().forEach,TT=Gs(),xT=TT("forEach");Ef.exports=xT?[].forEach:function(e){return wT(this,e,arguments.length>1?arguments[1]:void 0)}});var Qs=x((MN,Sf)=>{Sf.exports={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}});var xf=x((kN,Tf)=>{var DT=!!(typeof window!="undefined"&&window.document&&window.document.createElement);Tf.exports=DT});var Af=x((PN,Of)=>{var MT=ye(),IT=Se(),kT=Lr(),PT=IT("species");Of.exports=function(t){return kT>=51||!MT(function(){var e=[],n=e.constructor={};return n[PT]=function(){return{foo:1}},e[t](Boolean).foo!==1})}});var ea=x((RN,Cf)=>{var qT=zs(),$T=qr();Cf.exports=Object.keys||function(e){return qT(e,$T)}});var Df=x((jN,Lf)=>{var FT=Rt(),BT=jt(),zT=He(),WT=ea();Lf.exports=FT?Object.defineProperties:function(e,n){zT(e);for(var i=WT(n),o=i.length,s=0,a;o>s;)BT.f(e,a=i[s++],n[a]);return e}});var If=x((HN,Mf)=>{var VT=xi();Mf.exports=VT("document","documentElement")});var Wr=x((qN,qf)=>{var YT=He(),UT=Df(),kf=qr(),KT=Ci(),GT=If(),XT=ks(),QT=Rr(),Pf=">",Nf="<",ta="prototype",na="script",Rf=QT("IE_PROTO"),ia=function(){},jf=function(t){return Nf+na+Pf+t+Nf+"/"+na+Pf},Hf=function(t){t.write(jf("")),t.close();var e=t.parentWindow.Object;return t=null,e},JT=function(){var t=XT("iframe"),e="java"+na+":",n;return t.style.display="none",GT.appendChild(t),t.src=String(e),n=t.contentWindow.document,n.open(),n.write(jf("document.F=Object")),n.close(),n.F},Br,zr=function(){try{Br=new ActiveXObject("htmlfile")}catch(e){}zr=typeof document!="undefined"?document.domain&&Br?Hf(Br):JT():Hf(Br);for(var t=kf.length;t--;)delete zr[ta][kf[t]];return zr()};KT[Rf]=!0;qf.exports=Object.create||function(e,n){var i;return e!==null?(ia[ta]=YT(e),i=new ia,ia[ta]=null,i[Rf]=e):i=zr(),n===void 0?i:UT(i,n)}});var Ff=x(($N,$f)=>{var ZT=Se(),ex=Wr(),tx=jt(),ra=ZT("unscopables"),oa=Array.prototype;oa[ra]==null&&tx.f(oa,ra,{configurable:!0,value:ex(null)});$f.exports=function(t){oa[ra][t]=!0}});var jn=x((FN,Bf)=>{Bf.exports={}});var Wf=x((BN,zf)=>{var nx=ye();zf.exports=!nx(function(){function t(){}return t.prototype.constructor=null,Object.getPrototypeOf(new t)!==t.prototype})});var sa=x((zN,Yf)=>{var ix=ze(),rx=dn(),ox=Rr(),sx=Wf(),Vf=ox("IE_PROTO"),ax=Object.prototype;Yf.exports=sx?Object.getPrototypeOf:function(t){return t=rx(t),ix(t,Vf)?t[Vf]:typeof t.constructor=="function"&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?ax:null}});var ua=x((WN,Xf)=>{"use strict";var lx=ye(),Uf=sa(),cx=St(),ux=ze(),dx=Se(),fx=Mr(),aa=dx("iterator"),Kf=!1,hx=function(){return this},gn,la,ca;[].keys&&(ca=[].keys(),"next"in ca?(la=Uf(Uf(ca)),la!==Object.prototype&&(gn=la)):Kf=!0);var Gf=gn==null||lx(function(){var t={};return gn[aa].call(t)!==t});Gf&&(gn={});(!fx||Gf)&&!ux(gn,aa)&&cx(gn,aa,hx);Xf.exports={IteratorPrototype:gn,BUGGY_SAFARI_ITERATORS:Kf}});var Vr=x((VN,Jf)=>{var px=jt().f,mx=ze(),gx=Se(),Qf=gx("toStringTag");Jf.exports=function(t,e,n){t&&!mx(t=n?t:t.prototype,Qf)&&px(t,Qf,{configurable:!0,value:e})}});var eh=x((YN,Zf)=>{"use strict";var vx=ua().IteratorPrototype,bx=Wr(),yx=Ar(),Ex=Vr(),_x=jn(),Sx=function(){return this};Zf.exports=function(t,e,n){var i=e+" Iterator";return t.prototype=bx(vx,{next:yx(1,n)}),Ex(t,i,!1,!0),_x[i]=Sx,t}});var nh=x((UN,th)=>{var wx=je();th.exports=function(t){if(!wx(t)&&t!==null)throw TypeError("Can't set "+String(t)+" as a prototype");return t}});var da=x((KN,ih)=>{var Tx=He(),xx=nh();ih.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var t=!1,e={},n;try{n=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set,n.call(e,[]),t=e instanceof Array}catch(i){}return function(o,s){return Tx(o),xx(s),t?n.call(o,s):o.__proto__=s,o}}():void 0)});var pa=x((GN,fh)=>{"use strict";var Ox=it(),Ax=eh(),rh=sa(),oh=da(),Cx=Vr(),sh=St(),Lx=pn(),Dx=Se(),fa=Mr(),ah=jn(),lh=ua(),ha=lh.IteratorPrototype,Yr=lh.BUGGY_SAFARI_ITERATORS,ki=Dx("iterator"),ch="keys",Ur="values",uh="entries",dh=function(){return this};fh.exports=function(t,e,n,i,o,s,a){Ax(n,e,i);var c=function(y){if(y===o&&f)return f;if(!Yr&&y in l)return l[y];switch(y){case ch:return function(){return new n(this,y)};case Ur:return function(){return new n(this,y)};case uh:return function(){return new n(this,y)}}return function(){return new n(this)}},d=e+" Iterator",u=!1,l=t.prototype,m=l[ki]||l["@@iterator"]||o&&l[o],f=!Yr&&m||c(o),p=e=="Array"&&l.entries||m,g,v,h;if(p&&(g=rh(p.call(new t)),ha!==Object.prototype&&g.next&&(!fa&&rh(g)!==ha&&(oh?oh(g,ha):typeof g[ki]!="function"&&sh(g,ki,dh)),Cx(g,d,!0,!0),fa&&(ah[d]=dh))),o==Ur&&m&&m.name!==Ur&&(u=!0,f=function(){return m.call(this)}),(!fa||a)&&l[ki]!==f&&sh(l,ki,f),ah[e]=f,o)if(v={values:c(Ur),keys:s?f:c(ch),entries:c(uh)},a)for(h in v)(Yr||u||!(h in l))&&Lx(l,h,v[h]);else Ox({target:e,proto:!0,forced:Yr||u},v);return v}});var ga=x((XN,gh)=>{"use strict";var Mx=Rn(),ma=Ff(),hh=jn(),ph=hn(),Ix=pa(),mh="Array Iterator",kx=ph.set,Px=ph.getterFor(mh);gh.exports=Ix(Array,"Array",function(t,e){kx(this,{type:mh,target:Mx(t),index:0,kind:e})},function(){var t=Px(this),e=t.target,n=t.kind,i=t.index++;return!e||i>=e.length?(t.target=void 0,{value:void 0,done:!0}):n=="keys"?{value:i,done:!1}:n=="values"?{value:e[i],done:!1}:{value:[i,e[i]],done:!1}},"values");hh.Arguments=hh.Array;ma("keys");ma("values");ma("entries")});var Eh=x((QN,yh)=>{"use strict";var vh=Rt(),Nx=ye(),va=ea(),Rx=Ws(),jx=xs(),Hx=dn(),qx=Ti(),Hn=Object.assign,bh=Object.defineProperty;yh.exports=!Hn||Nx(function(){if(vh&&Hn({b:1},Hn(bh({},"a",{enumerable:!0,get:function(){bh(this,"b",{value:3,enumerable:!1})}}),{b:2})).b!==1)return!0;var t={},e={},n=Symbol(),i="abcdefghijklmnopqrst";return t[n]=7,i.split("").forEach(function(o){e[o]=o}),Hn({},t)[n]!=7||va(Hn({},e)).join("")!=i})?function(e,n){for(var i=Hx(e),o=arguments.length,s=1,a=Rx.f,c=jx.f;o>s;)for(var d=qx(arguments[s++]),u=a?va(d).concat(a(d)):va(d),l=u.length,m=0,f;l>m;)f=u[m++],(!vh||c.call(d,f))&&(i[f]=d[f]);return i}:Hn});var Kr=x((ZN,wh)=>{var Fx=Se(),Bx=Fx("toStringTag"),Sh={};Sh[Bx]="z";wh.exports=String(Sh)==="[object z]"});var ba=x((eR,Th)=>{var zx=Kr(),Gr=Nn(),Wx=Se(),Vx=Wx("toStringTag"),Yx=Gr(function(){return arguments}())=="Arguments",Ux=function(t,e){try{return t[e]}catch(n){}};Th.exports=zx?Gr:function(t){var e,n,i;return t===void 0?"Undefined":t===null?"Null":typeof(n=Ux(e=Object(t),Vx))=="string"?n:Yx?Gr(e):(i=Gr(e))=="Object"&&typeof e.callee=="function"?"Arguments":i}});var Oh=x((tR,xh)=>{"use strict";var Kx=Kr(),Gx=ba();xh.exports=Kx?{}.toString:function(){return"[object "+Gx(this)+"]"}});var $t=x((iR,Ah)=>{var Zx=Dr();Ah.exports=function(t){if(Zx(t))throw TypeError("Cannot convert a Symbol value to a string");return String(t)}});var ya=x((rR,Ch)=>{Ch.exports=` -\v\f\r \xA0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF`});var Dh=x((oR,Lh)=>{var eO=un(),tO=$t(),nO=ya(),Xr="["+nO+"]",iO=RegExp("^"+Xr+Xr+"*"),rO=RegExp(Xr+Xr+"*$"),Ea=function(t){return function(e){var n=tO(eO(e));return t&1&&(n=n.replace(iO,"")),t&2&&(n=n.replace(rO,"")),n}};Lh.exports={start:Ea(1),end:Ea(2),trim:Ea(3)}});var kh=x((sR,Ih)=>{var oO=de(),sO=$t(),aO=Dh().trim,Mh=ya(),Qr=oO.parseInt,lO=/^[+-]?0[Xx]/,cO=Qr(Mh+"08")!==8||Qr(Mh+"0x16")!==22;Ih.exports=cO?function(e,n){var i=aO(sO(e));return Qr(i,n>>>0||(lO.test(i)?16:10))}:Qr});var _a=x((lR,Rh)=>{var dO=Di(),fO=$t(),hO=un(),Nh=function(t){return function(e,n){var i=fO(hO(e)),o=dO(n),s=i.length,a,c;return o<0||o>=s?t?"":void 0:(a=i.charCodeAt(o),a<55296||a>56319||o+1===s||(c=i.charCodeAt(o+1))<56320||c>57343?t?i.charAt(o):a:t?i.slice(o,o+2):(a-55296<<10)+(c-56320)+65536)}};Rh.exports={codeAt:Nh(!1),charAt:Nh(!0)}});var Sa=x((uR,qh)=>{var yO=pn();qh.exports=function(t,e,n){for(var i in e)yO(t,i,e[i],n);return t}});var zh=x((dR,Bh)=>{var EO=Rn(),$h=$r().f,_O={}.toString,Fh=typeof window=="object"&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],SO=function(t){try{return $h(t)}catch(e){return Fh.slice()}};Bh.exports.f=function(e){return Fh&&_O.call(e)=="[object Window]"?SO(e):$h(EO(e))}});var Vh=x((fR,Wh)=>{var wO=ye();Wh.exports=!wO(function(){return Object.isExtensible(Object.preventExtensions({}))})});var Jr=x((hR,Kh)=>{var TO=it(),xO=Ci(),OO=je(),wa=ze(),AO=jt().f,Yh=$r(),CO=zh(),LO=Nr(),DO=Vh(),Uh=!1,wt=LO("meta"),MO=0,Ta=Object.isExtensible||function(){return!0},xa=function(t){AO(t,wt,{value:{objectID:"O"+MO++,weakData:{}}})},IO=function(t,e){if(!OO(t))return typeof t=="symbol"?t:(typeof t=="string"?"S":"P")+t;if(!wa(t,wt)){if(!Ta(t))return"F";if(!e)return"E";xa(t)}return t[wt].objectID},kO=function(t,e){if(!wa(t,wt)){if(!Ta(t))return!0;if(!e)return!1;xa(t)}return t[wt].weakData},PO=function(t){return DO&&Uh&&Ta(t)&&!wa(t,wt)&&xa(t),t},NO=function(){RO.enable=function(){},Uh=!0;var t=Yh.f,e=[].splice,n={};n[wt]=1,t(n).length&&(Yh.f=function(i){for(var o=t(i),s=0,a=o.length;s{var jO=Se(),HO=jn(),qO=jO("iterator"),$O=Array.prototype;Gh.exports=function(t){return t!==void 0&&(HO.Array===t||$O[qO]===t)}});var Oa=x((mR,Qh)=>{var FO=ba(),BO=jn(),zO=Se(),WO=zO("iterator");Qh.exports=function(t){if(t!=null)return t[WO]||t["@@iterator"]||BO[FO(t)]}});var Zh=x((gR,Jh)=>{var VO=He(),YO=Oa();Jh.exports=function(t,e){var n=arguments.length<2?YO(t):e;if(typeof n!="function")throw TypeError(String(t)+" is not iterable");return VO(n.call(t))}});var np=x((vR,tp)=>{var ep=He();tp.exports=function(t,e,n){var i,o;ep(t);try{if(i=t.return,i===void 0){if(e==="throw")throw n;return n}i=i.call(t)}catch(s){o=!0,i=s}if(e==="throw")throw n;if(o)throw i;return ep(i),n}});var Aa=x((bR,rp)=>{var UO=He(),KO=Xh(),GO=mn(),XO=Ks(),QO=Zh(),JO=Oa(),ip=np(),Pi=function(t,e){this.stopped=t,this.result=e};rp.exports=function(t,e,n){var i=n&&n.that,o=!!(n&&n.AS_ENTRIES),s=!!(n&&n.IS_ITERATOR),a=!!(n&&n.INTERRUPTED),c=XO(e,i,1+o+a),d,u,l,m,f,p,g,v=function(y){return d&&ip(d,"return",y),new Pi(!0,y)},h=function(y){return o?(UO(y),a?c(y[0],y[1],v):c(y[0],y[1])):a?c(y,v):c(y)};if(s)d=t;else{if(u=JO(t),typeof u!="function")throw TypeError("Target is not iterable");if(KO(u)){for(l=0,m=GO(t.length);m>l;l++)if(f=h(t[l]),f&&f instanceof Pi)return f;return new Pi(!1)}d=QO(t,u)}for(p=d.next;!(g=p.call(d)).done;){try{f=h(g.value)}catch(y){ip(d,"throw",y)}if(typeof f=="object"&&f&&f instanceof Pi)return f}return new Pi(!1)}});var Ca=x((yR,op)=>{op.exports=function(t,e,n){if(!(t instanceof e))throw TypeError("Incorrect "+(n?n+" ":"")+"invocation");return t}});var up=x((ER,cp)=>{var ZO=Se(),sp=ZO("iterator"),ap=!1;try{lp=0,La={next:function(){return{done:!!lp++}},return:function(){ap=!0}},La[sp]=function(){return this},Array.from(La,function(){throw 2})}catch(t){}var lp,La;cp.exports=function(t,e){if(!e&&!ap)return!1;var n=!1;try{var i={};i[sp]=function(){return{next:function(){return{done:n=!0}}}},t(i)}catch(o){}return n}});var hp=x((_R,fp)=>{var e0=je(),dp=da();fp.exports=function(t,e,n){var i,o;return dp&&typeof(i=e.constructor)=="function"&&i!==n&&e0(o=i.prototype)&&o!==n.prototype&&dp(t,o),t}});var gp=x((SR,mp)=>{"use strict";var t0=it(),n0=de(),pp=Vs(),i0=pn(),r0=Jr(),o0=Aa(),s0=Ca(),Da=je(),Ma=ye(),a0=up(),l0=Vr(),c0=hp();mp.exports=function(t,e,n){var i=t.indexOf("Map")!==-1,o=t.indexOf("Weak")!==-1,s=i?"set":"add",a=n0[t],c=a&&a.prototype,d=a,u={},l=function(y){var _=c[y];i0(c,y,y=="add"?function(O){return _.call(this,O===0?0:O),this}:y=="delete"?function(A){return o&&!Da(A)?!1:_.call(this,A===0?0:A)}:y=="get"?function(O){return o&&!Da(O)?void 0:_.call(this,O===0?0:O)}:y=="has"?function(O){return o&&!Da(O)?!1:_.call(this,O===0?0:O)}:function(O,k){return _.call(this,O===0?0:O,k),this})},m=pp(t,typeof a!="function"||!(o||c.forEach&&!Ma(function(){new a().entries().next()})));if(m)d=n.getConstructor(e,t,i,s),r0.enable();else if(pp(t,!0)){var f=new d,p=f[s](o?{}:-0,1)!=f,g=Ma(function(){f.has(1)}),v=a0(function(y){new a(y)}),h=!o&&Ma(function(){for(var y=new a,_=5;_--;)y[s](_,_);return!y.has(-0)});v||(d=e(function(y,_){s0(y,d,t);var A=c0(new a,y,d);return _!=null&&o0(_,A[s],{that:A,AS_ENTRIES:i}),A}),d.prototype=c,c.constructor=d),(g||h)&&(l("delete"),l("has"),i&&l("get")),(h||p)&&l(s),o&&c.clear&&delete c.clear}return u[t]=d,t0({global:!0,forced:d!=a},u),l0(d,t),o||n.setStrong(d,t,i),d}});var wp=x((wR,Sp)=>{"use strict";var vp=Sa(),Zr=Jr().getWeakData,u0=He(),Ia=je(),d0=Ca(),f0=Aa(),bp=Fr(),yp=ze(),Ep=hn(),h0=Ep.set,p0=Ep.getterFor,m0=bp.find,g0=bp.findIndex,v0=0,eo=function(t){return t.frozen||(t.frozen=new _p)},_p=function(){this.entries=[]},ka=function(t,e){return m0(t.entries,function(n){return n[0]===e})};_p.prototype={get:function(t){var e=ka(this,t);if(e)return e[1]},has:function(t){return!!ka(this,t)},set:function(t,e){var n=ka(this,t);n?n[1]=e:this.entries.push([t,e])},delete:function(t){var e=g0(this.entries,function(n){return n[0]===t});return~e&&this.entries.splice(e,1),!!~e}};Sp.exports={getConstructor:function(t,e,n,i){var o=t(function(c,d){d0(c,o,e),h0(c,{type:e,id:v0++,frozen:void 0}),d!=null&&f0(d,c[i],{that:c,AS_ENTRIES:n})}),s=p0(e),a=function(c,d,u){var l=s(c),m=Zr(u0(d),!0);return m===!0?eo(l).set(d,u):m[l.id]=u,c};return vp(o.prototype,{delete:function(c){var d=s(this);if(!Ia(c))return!1;var u=Zr(c);return u===!0?eo(d).delete(c):u&&yp(u,d.id)&&delete u[d.id]},has:function(d){var u=s(this);if(!Ia(d))return!1;var l=Zr(d);return l===!0?eo(u).has(d):l&&yp(l,u.id)}}),vp(o.prototype,n?{get:function(d){var u=s(this);if(Ia(d)){var l=Zr(d);return l===!0?eo(u).get(d):l?l[u.id]:void 0}},set:function(d,u){return a(this,d,u)}}:{add:function(d){return a(this,d,!0)}}),o}}});var Cp=x((TR,Ap)=>{"use strict";var Tp=de(),b0=Sa(),y0=Jr(),E0=gp(),xp=wp(),to=je(),no=hn().enforce,_0=Hs(),S0=!Tp.ActiveXObject&&"ActiveXObject"in Tp,io=Object.isExtensible,Ni,Op=function(t){return function(){return t(this,arguments.length?arguments[0]:void 0)}},w0=Ap.exports=E0("WeakMap",Op,xp);_0&&S0&&(Ni=xp.getConstructor(Op,"WeakMap",!0),y0.enable(),qn=w0.prototype,Pa=qn.delete,Ri=qn.has,Na=qn.get,Ra=qn.set,b0(qn,{delete:function(t){if(to(t)&&!io(t)){var e=no(this);return e.frozen||(e.frozen=new Ni),Pa.call(this,t)||e.frozen.delete(t)}return Pa.call(this,t)},has:function(e){if(to(e)&&!io(e)){var n=no(this);return n.frozen||(n.frozen=new Ni),Ri.call(this,e)||n.frozen.has(e)}return Ri.call(this,e)},get:function(e){if(to(e)&&!io(e)){var n=no(this);return n.frozen||(n.frozen=new Ni),Ri.call(this,e)?Na.call(this,e):n.frozen.get(e)}return Na.call(this,e)},set:function(e,n){if(to(e)&&!io(e)){var i=no(this);i.frozen||(i.frozen=new Ni),Ri.call(this,e)?Ra.call(this,e,n):i.frozen.set(e,n)}else Ra.call(this,e,n);return this}}));var qn,Pa,Ri,Na,Ra});var Rp=x((OR,Np)=>{var Ip="Expected a function",kp=0/0,x0="[object Symbol]",O0=/^\s+|\s+$/g,A0=/^[-+]0x[0-9a-f]+$/i,C0=/^0b[01]+$/i,L0=/^0o[0-7]+$/i,D0=parseInt,M0=typeof global=="object"&&global&&global.Object===Object&&global,I0=typeof self=="object"&&self&&self.Object===Object&&self,k0=M0||I0||Function("return this")(),P0=Object.prototype,N0=P0.toString,R0=Math.max,j0=Math.min,Fa=function(){return k0.Date.now()};function H0(t,e,n){var i,o,s,a,c,d,u=0,l=!1,m=!1,f=!0;if(typeof t!="function")throw new TypeError(Ip);e=Pp(e)||0,oo(n)&&(l=!!n.leading,m="maxWait"in n,s=m?R0(Pp(n.maxWait)||0,e):s,f="trailing"in n?!!n.trailing:f);function p(M){var H=i,$=o;return i=o=void 0,u=M,a=t.apply($,H),a}function g(M){return u=M,c=setTimeout(y,e),l?p(M):a}function v(M){var H=M-d,$=M-u,G=e-H;return m?j0(G,s-$):G}function h(M){var H=M-d,$=M-u;return d===void 0||H>=e||H<0||m&&$>=s}function y(){var M=Fa();if(h(M))return _(M);c=setTimeout(y,v(M))}function _(M){return c=void 0,f&&i?p(M):(i=o=void 0,a)}function A(){c!==void 0&&clearTimeout(c),u=0,i=d=o=c=void 0}function O(){return c===void 0?a:_(Fa())}function k(){var M=Fa(),H=h(M);if(i=arguments,o=this,d=M,H){if(c===void 0)return g(d);if(m)return c=setTimeout(y,e),p(d)}return c===void 0&&(c=setTimeout(y,e)),a}return k.cancel=A,k.flush=O,k}function q0(t,e,n){var i=!0,o=!0;if(typeof t!="function")throw new TypeError(Ip);return oo(n)&&(i="leading"in n?!!n.leading:i,o="trailing"in n?!!n.trailing:o),H0(t,e,{leading:i,maxWait:e,trailing:o})}function oo(t){var e=typeof t;return!!t&&(e=="object"||e=="function")}function $0(t){return!!t&&typeof t=="object"}function F0(t){return typeof t=="symbol"||$0(t)&&N0.call(t)==x0}function Pp(t){if(typeof t=="number")return t;if(F0(t))return kp;if(oo(t)){var e=typeof t.valueOf=="function"?t.valueOf():t;t=oo(e)?e+"":e}if(typeof t!="string")return t===0?t:+t;t=t.replace(O0,"");var n=C0.test(t);return n||L0.test(t)?D0(t.slice(2),n?2:8):A0.test(t)?kp:+t}Np.exports=q0});var $p=x((AR,qp)=>{var B0="Expected a function",jp=0/0,z0="[object Symbol]",W0=/^\s+|\s+$/g,V0=/^[-+]0x[0-9a-f]+$/i,Y0=/^0b[01]+$/i,U0=/^0o[0-7]+$/i,K0=parseInt,G0=typeof global=="object"&&global&&global.Object===Object&&global,X0=typeof self=="object"&&self&&self.Object===Object&&self,Q0=G0||X0||Function("return this")(),J0=Object.prototype,Z0=J0.toString,eA=Math.max,tA=Math.min,Ba=function(){return Q0.Date.now()};function nA(t,e,n){var i,o,s,a,c,d,u=0,l=!1,m=!1,f=!0;if(typeof t!="function")throw new TypeError(B0);e=Hp(e)||0,za(n)&&(l=!!n.leading,m="maxWait"in n,s=m?eA(Hp(n.maxWait)||0,e):s,f="trailing"in n?!!n.trailing:f);function p(M){var H=i,$=o;return i=o=void 0,u=M,a=t.apply($,H),a}function g(M){return u=M,c=setTimeout(y,e),l?p(M):a}function v(M){var H=M-d,$=M-u,G=e-H;return m?tA(G,s-$):G}function h(M){var H=M-d,$=M-u;return d===void 0||H>=e||H<0||m&&$>=s}function y(){var M=Ba();if(h(M))return _(M);c=setTimeout(y,v(M))}function _(M){return c=void 0,f&&i?p(M):(i=o=void 0,a)}function A(){c!==void 0&&clearTimeout(c),u=0,i=d=o=c=void 0}function O(){return c===void 0?a:_(Ba())}function k(){var M=Ba(),H=h(M);if(i=arguments,o=this,d=M,H){if(c===void 0)return g(d);if(m)return c=setTimeout(y,e),p(d)}return c===void 0&&(c=setTimeout(y,e)),a}return k.cancel=A,k.flush=O,k}function za(t){var e=typeof t;return!!t&&(e=="object"||e=="function")}function iA(t){return!!t&&typeof t=="object"}function rA(t){return typeof t=="symbol"||iA(t)&&Z0.call(t)==z0}function Hp(t){if(typeof t=="number")return t;if(rA(t))return jp;if(za(t)){var e=typeof t.valueOf=="function"?t.valueOf():t;t=za(e)?e+"":e}if(typeof t!="string")return t===0?t:+t;t=t.replace(W0,"");var n=Y0.test(t);return n||U0.test(t)?K0(t.slice(2),n?2:8):V0.test(t)?jp:+t}qp.exports=nA});var Gp=x((CR,Kp)=>{var oA="Expected a function",Fp="__lodash_hash_undefined__",sA="[object Function]",aA="[object GeneratorFunction]",lA=/[\\^$.*+?()[\]{}|]/g,cA=/^\[object .+?Constructor\]$/,uA=typeof global=="object"&&global&&global.Object===Object&&global,dA=typeof self=="object"&&self&&self.Object===Object&&self,Bp=uA||dA||Function("return this")();function fA(t,e){return t==null?void 0:t[e]}function hA(t){var e=!1;if(t!=null&&typeof t.toString!="function")try{e=!!(t+"")}catch(n){}return e}var pA=Array.prototype,mA=Function.prototype,zp=Object.prototype,Wa=Bp["__core-js_shared__"],Wp=function(){var t=/[^.]+$/.exec(Wa&&Wa.keys&&Wa.keys.IE_PROTO||"");return t?"Symbol(src)_1."+t:""}(),Vp=mA.toString,Va=zp.hasOwnProperty,gA=zp.toString,vA=RegExp("^"+Vp.call(Va).replace(lA,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),bA=pA.splice,yA=Yp(Bp,"Map"),Hi=Yp(Object,"create");function bn(t){var e=-1,n=t?t.length:0;for(this.clear();++e-1}function LA(t,e){var n=this.__data__,i=so(n,t);return i<0?n.push([t,e]):n[i][1]=e,this}$n.prototype.clear=xA;$n.prototype.delete=OA;$n.prototype.get=AA;$n.prototype.has=CA;$n.prototype.set=LA;function yn(t){var e=-1,n=t?t.length:0;for(this.clear();++e{var GA=Us(),XA=dn(),QA=Ti(),JA=mn(),hm=function(t){return function(e,n,i,o){GA(n);var s=XA(e),a=QA(s),c=JA(s.length),d=t?c-1:0,u=t?-1:1;if(i<2)for(;;){if(d in a){o=a[d],d+=u;break}if(d+=u,t?d<0:c<=d)throw TypeError("Reduce of empty array with no initial value")}for(;t?d>=0:c>d;d+=u)d in a&&(o=n(o,a[d],d,s));return o}};pm.exports={left:hm(!1),right:hm(!0)}});var vm=x(($j,gm)=>{var ZA=Nn(),eC=de();gm.exports=ZA(eC.process)=="process"});var _m=x((zj,Em)=>{"use strict";var dC=He();Em.exports=function(){var t=dC(this),e="";return t.global&&(e+="g"),t.ignoreCase&&(e+="i"),t.multiline&&(e+="m"),t.dotAll&&(e+="s"),t.unicode&&(e+="u"),t.sticky&&(e+="y"),e}});var Tm=x(rl=>{var Sm=ye(),fC=de(),wm=fC.RegExp;rl.UNSUPPORTED_Y=Sm(function(){var t=wm("a","y");return t.lastIndex=2,t.exec("abcd")!=null});rl.BROKEN_CARET=Sm(function(){var t=wm("^r","gy");return t.lastIndex=2,t.exec("str")!=null})});var Om=x((Vj,xm)=>{var hC=ye(),pC=de(),mC=pC.RegExp;xm.exports=hC(function(){var t=mC(".","s");return!(t.dotAll&&t.exec(` -`)&&t.flags==="s")})});var Cm=x((Yj,Am)=>{var gC=ye(),vC=de(),bC=vC.RegExp;Am.exports=gC(function(){var t=bC("(?b)","g");return t.exec("b").groups.a!=="b"||"b".replace(t,"$c")!=="bc"})});var vo=x((Uj,Mm)=>{"use strict";var yC=$t(),EC=_m(),Lm=Tm(),_C=Pr(),SC=Wr(),wC=hn().get,TC=Om(),xC=Cm(),go=RegExp.prototype.exec,OC=_C("native-string-replace",String.prototype.replace),ol=go,sl=function(){var t=/a/,e=/b*/g;return go.call(t,"a"),go.call(e,"a"),t.lastIndex!==0||e.lastIndex!==0}(),Dm=Lm.UNSUPPORTED_Y||Lm.BROKEN_CARET,al=/()??/.exec("")[1]!==void 0,AC=sl||al||Dm||TC||xC;AC&&(ol=function(e){var n=this,i=wC(n),o=yC(e),s=i.raw,a,c,d,u,l,m,f;if(s)return s.lastIndex=n.lastIndex,a=ol.call(s,o),n.lastIndex=s.lastIndex,a;var p=i.groups,g=Dm&&n.sticky,v=EC.call(n),h=n.source,y=0,_=o;if(g&&(v=v.replace("y",""),v.indexOf("g")===-1&&(v+="g"),_=o.slice(n.lastIndex),n.lastIndex>0&&(!n.multiline||n.multiline&&o.charAt(n.lastIndex-1)!==` -`)&&(h="(?: "+h+")",_=" "+_,y++),c=new RegExp("^(?:"+h+")",v)),al&&(c=new RegExp("^"+h+"$(?!\\s)",v)),sl&&(d=n.lastIndex),u=go.call(g?c:n,_),g?u?(u.input=u.input.slice(y),u[0]=u[0].slice(y),u.index=n.lastIndex,n.lastIndex+=u[0].length):n.lastIndex=0:sl&&u&&(n.lastIndex=n.global?u.index+u[0].length:d),al&&u&&u.length>1&&OC.call(u[0],c,function(){for(l=1;l{"use strict";var CC=it(),Im=vo();CC({target:"RegExp",proto:!0,forced:/./.exec!==Im},{exec:Im})});var ul=x((Xj,Rm)=>{"use strict";ll();var km=pn(),LC=vo(),Pm=ye(),Nm=Se(),DC=St(),MC=Nm("species"),cl=RegExp.prototype;Rm.exports=function(t,e,n,i){var o=Nm(t),s=!Pm(function(){var u={};return u[o]=function(){return 7},""[t](u)!=7}),a=s&&!Pm(function(){var u=!1,l=/a/;return t==="split"&&(l={},l.constructor={},l.constructor[MC]=function(){return l},l.flags="",l[o]=/./[o]),l.exec=function(){return u=!0,null},l[o](""),!u});if(!s||!a||n){var c=/./[o],d=e(o,""[t],function(u,l,m,f,p){var g=l.exec;return g===LC||g===cl.exec?s&&!p?{done:!0,value:c.call(l,m,f)}:{done:!0,value:u.call(m,l,f)}:{done:!1}});km(String.prototype,t,d[0]),km(cl,o,d[1])}i&&DC(cl[o],"sham",!0)}});var dl=x((Qj,jm)=>{"use strict";var IC=_a().charAt;jm.exports=function(t,e,n){return e+(n?IC(t,e).length:1)}});var fl=x((Jj,Hm)=>{var kC=Nn(),PC=vo();Hm.exports=function(t,e){var n=t.exec;if(typeof n=="function"){var i=n.call(t,e);if(typeof i!="object")throw TypeError("RegExp exec method returned something other than an Object or null");return i}if(kC(t)!=="RegExp")throw TypeError("RegExp#exec called on incompatible receiver");return PC.call(t,e)}});var Fm=x((e1,$m)=>{var $C=dn(),FC=Math.floor,BC="".replace,zC=/\$([$&'`]|\d{1,2}|<[^>]*>)/g,WC=/\$([$&'`]|\d{1,2})/g;$m.exports=function(t,e,n,i,o,s){var a=n+t.length,c=i.length,d=WC;return o!==void 0&&(o=$C(o),d=zC),BC.call(s,d,function(u,l){var m;switch(l.charAt(0)){case"$":return"$";case"&":return t;case"`":return e.slice(0,n);case"'":return e.slice(a);case"<":m=o[l.slice(1,-1)];break;default:var f=+l;if(f===0)return u;if(f>c){var p=FC(f/10);return p===0?u:p<=c?i[p-1]===void 0?l.charAt(1):i[p-1]+l.charAt(1):u}m=i[f-1]}return m===void 0?"":m})}});var Ym=x(vl=>{"use strict";vl.parse=cL;vl.serialize=uL;var sL=decodeURIComponent,aL=encodeURIComponent,lL=/; */,_o=/^[\u0009\u0020-\u007e\u0080-\u00ff]+$/;function cL(t,e){if(typeof t!="string")throw new TypeError("argument str must be a string");for(var n={},i=e||{},o=t.split(lL),s=i.decode||sL,a=0;a{(function(t,e){typeof define=="function"&&define.amd?define(e):typeof wo=="object"&&wo.exports?wo.exports=e():t.EvEmitter=e()})(typeof window!="undefined"?window:cg,function(){"use strict";function t(){}var e=t.prototype;return e.on=function(n,i){if(!(!n||!i)){var o=this._events=this._events||{},s=o[n]=o[n]||[];return s.indexOf(i)==-1&&s.push(i),this}},e.once=function(n,i){if(!(!n||!i)){this.on(n,i);var o=this._onceEvents=this._onceEvents||{},s=o[n]=o[n]||{};return s[i]=!0,this}},e.off=function(n,i){var o=this._events&&this._events[n];if(!(!o||!o.length)){var s=o.indexOf(i);return s!=-1&&o.splice(s,1),this}},e.emitEvent=function(n,i){var o=this._events&&this._events[n];if(!(!o||!o.length)){o=o.slice(0),i=i||[];for(var s=this._onceEvents&&this._onceEvents[n],a=0;a{(function(t,e){typeof define=="function"&&define.amd?define(e):typeof To=="object"&&To.exports?To.exports=e():t.getSize=e()})(window,function(){"use strict";function e(f){var p=parseFloat(f),g=f.indexOf("%")==-1&&!isNaN(p);return g&&p}function n(){}var i=typeof console=="undefined"?n:function(f){console.error(f)},o=["paddingLeft","paddingRight","paddingTop","paddingBottom","marginLeft","marginRight","marginTop","marginBottom","borderLeftWidth","borderRightWidth","borderTopWidth","borderBottomWidth"],s=o.length;function a(){for(var f={width:0,height:0,innerWidth:0,innerHeight:0,outerWidth:0,outerHeight:0},p=0;pb)","g");return t.exec("b").groups.a!=="b"||"b".replace(t,"$c")!=="bc"})});var vo=x((Gj,Mm)=>{"use strict";var yC=$t(),EC=_m(),Lm=Tm(),_C=Pr(),SC=Wr(),wC=hn().get,TC=Om(),xC=Cm(),go=RegExp.prototype.exec,OC=_C("native-string-replace",String.prototype.replace),ol=go,sl=function(){var t=/a/,e=/b*/g;return go.call(t,"a"),go.call(e,"a"),t.lastIndex!==0||e.lastIndex!==0}(),Dm=Lm.UNSUPPORTED_Y||Lm.BROKEN_CARET,al=/()??/.exec("")[1]!==void 0,AC=sl||al||Dm||TC||xC;AC&&(ol=function(e){var n=this,i=wC(n),o=yC(e),s=i.raw,a,c,d,u,l,m,f;if(s)return s.lastIndex=n.lastIndex,a=ol.call(s,o),n.lastIndex=s.lastIndex,a;var p=i.groups,g=Dm&&n.sticky,v=EC.call(n),h=n.source,y=0,_=o;if(g&&(v=v.replace("y",""),v.indexOf("g")===-1&&(v+="g"),_=o.slice(n.lastIndex),n.lastIndex>0&&(!n.multiline||n.multiline&&o.charAt(n.lastIndex-1)!==` +`)&&(h="(?: "+h+")",_=" "+_,y++),c=new RegExp("^(?:"+h+")",v)),al&&(c=new RegExp("^"+h+"$(?!\\s)",v)),sl&&(d=n.lastIndex),u=go.call(g?c:n,_),g?u?(u.input=u.input.slice(y),u[0]=u[0].slice(y),u.index=n.lastIndex,n.lastIndex+=u[0].length):n.lastIndex=0:sl&&u&&(n.lastIndex=n.global?u.index+u[0].length:d),al&&u&&u.length>1&&OC.call(u[0],c,function(){for(l=1;l{"use strict";var CC=it(),Im=vo();CC({target:"RegExp",proto:!0,forced:/./.exec!==Im},{exec:Im})});var ul=x((Jj,Rm)=>{"use strict";ll();var km=pn(),LC=vo(),Pm=ye(),Nm=Se(),DC=St(),MC=Nm("species"),cl=RegExp.prototype;Rm.exports=function(t,e,n,i){var o=Nm(t),s=!Pm(function(){var u={};return u[o]=function(){return 7},""[t](u)!=7}),a=s&&!Pm(function(){var u=!1,l=/a/;return t==="split"&&(l={},l.constructor={},l.constructor[MC]=function(){return l},l.flags="",l[o]=/./[o]),l.exec=function(){return u=!0,null},l[o](""),!u});if(!s||!a||n){var c=/./[o],d=e(o,""[t],function(u,l,m,f,p){var g=l.exec;return g===LC||g===cl.exec?s&&!p?{done:!0,value:c.call(l,m,f)}:{done:!0,value:u.call(m,l,f)}:{done:!1}});km(String.prototype,t,d[0]),km(cl,o,d[1])}i&&DC(cl[o],"sham",!0)}});var dl=x((Zj,jm)=>{"use strict";var IC=_a().charAt;jm.exports=function(t,e,n){return e+(n?IC(t,e).length:1)}});var fl=x((e1,Hm)=>{var kC=Nn(),PC=vo();Hm.exports=function(t,e){var n=t.exec;if(typeof n=="function"){var i=n.call(t,e);if(typeof i!="object")throw TypeError("RegExp exec method returned something other than an Object or null");return i}if(kC(t)!=="RegExp")throw TypeError("RegExp#exec called on incompatible receiver");return PC.call(t,e)}});var Bm=x((n1,$m)=>{var $C=dn(),BC=Math.floor,FC="".replace,zC=/\$([$&'`]|\d{1,2}|<[^>]*>)/g,WC=/\$([$&'`]|\d{1,2})/g;$m.exports=function(t,e,n,i,o,s){var a=n+t.length,c=i.length,d=WC;return o!==void 0&&(o=$C(o),d=zC),FC.call(s,d,function(u,l){var m;switch(l.charAt(0)){case"$":return"$";case"&":return t;case"`":return e.slice(0,n);case"'":return e.slice(a);case"<":m=o[l.slice(1,-1)];break;default:var f=+l;if(f===0)return u;if(f>c){var p=BC(f/10);return p===0?u:p<=c?i[p-1]===void 0?l.charAt(1):i[p-1]+l.charAt(1):u}m=i[f-1]}return m===void 0?"":m})}});var Ym=x(vl=>{"use strict";vl.parse=cL;vl.serialize=uL;var sL=decodeURIComponent,aL=encodeURIComponent,lL=/; */,_o=/^[\u0009\u0020-\u007e\u0080-\u00ff]+$/;function cL(t,e){if(typeof t!="string")throw new TypeError("argument str must be a string");for(var n={},i=e||{},o=t.split(lL),s=i.decode||sL,a=0;a{(function(t,e){typeof define=="function"&&define.amd?define(e):typeof wo=="object"&&wo.exports?wo.exports=e():t.EvEmitter=e()})(typeof window!="undefined"?window:cg,function(){"use strict";function t(){}var e=t.prototype;return e.on=function(n,i){if(!(!n||!i)){var o=this._events=this._events||{},s=o[n]=o[n]||[];return s.indexOf(i)==-1&&s.push(i),this}},e.once=function(n,i){if(!(!n||!i)){this.on(n,i);var o=this._onceEvents=this._onceEvents||{},s=o[n]=o[n]||{};return s[i]=!0,this}},e.off=function(n,i){var o=this._events&&this._events[n];if(!(!o||!o.length)){var s=o.indexOf(i);return s!=-1&&o.splice(s,1),this}},e.emitEvent=function(n,i){var o=this._events&&this._events[n];if(!(!o||!o.length)){o=o.slice(0),i=i||[];for(var s=this._onceEvents&&this._onceEvents[n],a=0;a{(function(t,e){typeof define=="function"&&define.amd?define(e):typeof To=="object"&&To.exports?To.exports=e():t.getSize=e()})(window,function(){"use strict";function e(f){var p=parseFloat(f),g=f.indexOf("%")==-1&&!isNaN(p);return g&&p}function n(){}var i=typeof console=="undefined"?n:function(f){console.error(f)},o=["paddingLeft","paddingRight","paddingTop","paddingBottom","marginLeft","marginRight","marginTop","marginBottom","borderLeftWidth","borderRightWidth","borderTopWidth","borderBottomWidth"],s=o.length;function a(){for(var f={width:0,height:0,innerWidth:0,innerHeight:0,outerWidth:0,outerHeight:0},p=0;p")!=="7"});VC("replace",function(t,e,n){var i=Bm?"$":"$0";return[function(s,a){var c=XC(this),d=s==null?void 0:s[pl];return d!==void 0?d.call(s,c,a):e.call(Bn(c),s,a)},function(o,s){var a=UC(this),c=Bn(o);if(typeof s=="string"&&s.indexOf(i)===-1&&s.indexOf("$<")===-1){var d=n(e,a,c,s);if(d.done)return d.value}var u=typeof s=="function";u||(s=Bn(s));var l=a.global;if(l){var m=a.unicode;a.lastIndex=0}for(var f=[];;){var p=ZC(a,c);if(p===null||(f.push(p),!l))break;var g=Bn(p[0]);g===""&&(a.lastIndex=QC(c,GC(a.lastIndex),m))}for(var v="",h=0,y=0;y=h&&(v+=c.slice(h,A)+$,h=A+_.length)}return v+c.slice(h)}]},!oL||!rL||Bm);var yo=function(e){var n=Array.prototype.reduce.call(e,function(i,o){var s=o.name.match(/data-simplebar-(.+)/);if(s){var a=s[1].replace(/\W+(.)/g,function(c,d){return d.toUpperCase()});switch(o.value){case"true":i[a]=!0;break;case"false":i[a]=!1;break;case void 0:i[a]=!0;break;default:i[a]=o.value}}return i},{});return n};function Ft(t){return!t||!t.ownerDocument||!t.ownerDocument.defaultView?window:t.ownerDocument.defaultView}function Eo(t){return!t||!t.ownerDocument?document:t.ownerDocument}var zn=null,Wm=null;bo.default&&window.addEventListener("resize",function(){Wm!==window.devicePixelRatio&&(Wm=window.devicePixelRatio,zn=null)});function Vm(t){if(zn===null){var e=Eo(t);if(typeof e=="undefined")return zn=0,zn;var n=e.body,i=e.createElement("div");i.classList.add("simplebar-hide-scrollbar"),n.appendChild(i);var o=i.getBoundingClientRect().right;n.removeChild(i),zn=o}return zn}var he=function(){function t(n,i){var o=this;this.onScroll=function(){var s=Ft(o.el);o.scrollXTicking||(s.requestAnimationFrame(o.scrollX),o.scrollXTicking=!0),o.scrollYTicking||(s.requestAnimationFrame(o.scrollY),o.scrollYTicking=!0)},this.scrollX=function(){o.axis.x.isOverflowing&&(o.showScrollbar("x"),o.positionScrollbar("x")),o.scrollXTicking=!1},this.scrollY=function(){o.axis.y.isOverflowing&&(o.showScrollbar("y"),o.positionScrollbar("y")),o.scrollYTicking=!1},this.onMouseEnter=function(){o.showScrollbar("x"),o.showScrollbar("y")},this.onMouseMove=function(s){o.mouseX=s.clientX,o.mouseY=s.clientY,(o.axis.x.isOverflowing||o.axis.x.forceVisible)&&o.onMouseMoveForAxis("x"),(o.axis.y.isOverflowing||o.axis.y.forceVisible)&&o.onMouseMoveForAxis("y")},this.onMouseLeave=function(){o.onMouseMove.cancel(),(o.axis.x.isOverflowing||o.axis.x.forceVisible)&&o.onMouseLeaveForAxis("x"),(o.axis.y.isOverflowing||o.axis.y.forceVisible)&&o.onMouseLeaveForAxis("y"),o.mouseX=-1,o.mouseY=-1},this.onWindowResize=function(){o.scrollbarWidth=o.getScrollbarWidth(),o.hideNativeScrollbar()},this.hideScrollbars=function(){o.axis.x.track.rect=o.axis.x.track.el.getBoundingClientRect(),o.axis.y.track.rect=o.axis.y.track.el.getBoundingClientRect(),o.isWithinBounds(o.axis.y.track.rect)||(o.axis.y.scrollbar.el.classList.remove(o.classNames.visible),o.axis.y.isVisible=!1),o.isWithinBounds(o.axis.x.track.rect)||(o.axis.x.scrollbar.el.classList.remove(o.classNames.visible),o.axis.x.isVisible=!1)},this.onPointerEvent=function(s){var a,c;o.axis.x.track.rect=o.axis.x.track.el.getBoundingClientRect(),o.axis.y.track.rect=o.axis.y.track.el.getBoundingClientRect(),(o.axis.x.isOverflowing||o.axis.x.forceVisible)&&(a=o.isWithinBounds(o.axis.x.track.rect)),(o.axis.y.isOverflowing||o.axis.y.forceVisible)&&(c=o.isWithinBounds(o.axis.y.track.rect)),(a||c)&&(s.preventDefault(),s.stopPropagation(),s.type==="mousedown"&&(a&&(o.axis.x.scrollbar.rect=o.axis.x.scrollbar.el.getBoundingClientRect(),o.isWithinBounds(o.axis.x.scrollbar.rect)?o.onDragStart(s,"x"):o.onTrackClick(s,"x")),c&&(o.axis.y.scrollbar.rect=o.axis.y.scrollbar.el.getBoundingClientRect(),o.isWithinBounds(o.axis.y.scrollbar.rect)?o.onDragStart(s,"y"):o.onTrackClick(s,"y"))))},this.drag=function(s){var a,c=o.axis[o.draggedAxis].track,d=c.rect[o.axis[o.draggedAxis].sizeAttr],u=o.axis[o.draggedAxis].scrollbar,l=o.contentWrapperEl[o.axis[o.draggedAxis].scrollSizeAttr],m=parseInt(o.elStyles[o.axis[o.draggedAxis].sizeAttr],10);s.preventDefault(),s.stopPropagation(),o.draggedAxis==="y"?a=s.pageY:a=s.pageX;var f=a-c.rect[o.axis[o.draggedAxis].offsetAttr]-o.axis[o.draggedAxis].dragOffset,p=f/(d-u.size),g=p*(l-m);o.draggedAxis==="x"&&(g=o.isRtl&&t.getRtlHelpers().isRtlScrollbarInverted?g-(d+u.size):g,g=o.isRtl&&t.getRtlHelpers().isRtlScrollingInverted?-g:g),o.contentWrapperEl[o.axis[o.draggedAxis].scrollOffsetAttr]=g},this.onEndDrag=function(s){var a=Eo(o.el),c=Ft(o.el);s.preventDefault(),s.stopPropagation(),o.el.classList.remove(o.classNames.dragging),a.removeEventListener("mousemove",o.drag,!0),a.removeEventListener("mouseup",o.onEndDrag,!0),o.removePreventClickId=c.setTimeout(function(){a.removeEventListener("click",o.preventClick,!0),a.removeEventListener("dblclick",o.preventClick,!0),o.removePreventClickId=null})},this.preventClick=function(s){s.preventDefault(),s.stopPropagation()},this.el=n,this.minScrollbarWidth=20,this.options=Object.assign({},t.defaultOptions,{},i),this.classNames=Object.assign({},t.defaultOptions.classNames,{},this.options.classNames),this.axis={x:{scrollOffsetAttr:"scrollLeft",sizeAttr:"width",scrollSizeAttr:"scrollWidth",offsetSizeAttr:"offsetWidth",offsetAttr:"left",overflowAttr:"overflowX",dragOffset:0,isOverflowing:!0,isVisible:!1,forceVisible:!1,track:{},scrollbar:{}},y:{scrollOffsetAttr:"scrollTop",sizeAttr:"height",scrollSizeAttr:"scrollHeight",offsetSizeAttr:"offsetHeight",offsetAttr:"top",overflowAttr:"overflowY",dragOffset:0,isOverflowing:!0,isVisible:!1,forceVisible:!1,track:{},scrollbar:{}}},this.removePreventClickId=null,!t.instances.has(this.el)&&(this.recalculate=(0,ml.default)(this.recalculate.bind(this),64),this.onMouseMove=(0,ml.default)(this.onMouseMove.bind(this),64),this.hideScrollbars=(0,gl.default)(this.hideScrollbars.bind(this),this.options.timeout),this.onWindowResize=(0,gl.default)(this.onWindowResize.bind(this),64,{leading:!0}),t.getRtlHelpers=(0,zm.default)(t.getRtlHelpers),this.init())}t.getRtlHelpers=function(){var i=document.createElement("div");i.innerHTML='
';var o=i.firstElementChild;document.body.appendChild(o);var s=o.firstElementChild;o.scrollLeft=0;var a=t.getOffset(o),c=t.getOffset(s);o.scrollLeft=999;var d=t.getOffset(s);return{isRtlScrollingInverted:a.left!==c.left&&c.left-d.left!=0,isRtlScrollbarInverted:a.left!==c.left}},t.getOffset=function(i){var o=i.getBoundingClientRect(),s=Eo(i),a=Ft(i);return{top:o.top+(a.pageYOffset||s.documentElement.scrollTop),left:o.left+(a.pageXOffset||s.documentElement.scrollLeft)}};var e=t.prototype;return e.init=function(){t.instances.set(this.el,this),bo.default&&(this.initDOM(),this.scrollbarWidth=this.getScrollbarWidth(),this.recalculate(),this.initListeners())},e.initDOM=function(){var i=this;if(Array.prototype.filter.call(this.el.children,function(a){return a.classList.contains(i.classNames.wrapper)}).length)this.wrapperEl=this.el.querySelector("."+this.classNames.wrapper),this.contentWrapperEl=this.options.scrollableNode||this.el.querySelector("."+this.classNames.contentWrapper),this.contentEl=this.options.contentNode||this.el.querySelector("."+this.classNames.contentEl),this.offsetEl=this.el.querySelector("."+this.classNames.offset),this.maskEl=this.el.querySelector("."+this.classNames.mask),this.placeholderEl=this.findChild(this.wrapperEl,"."+this.classNames.placeholder),this.heightAutoObserverWrapperEl=this.el.querySelector("."+this.classNames.heightAutoObserverWrapperEl),this.heightAutoObserverEl=this.el.querySelector("."+this.classNames.heightAutoObserverEl),this.axis.x.track.el=this.findChild(this.el,"."+this.classNames.track+"."+this.classNames.horizontal),this.axis.y.track.el=this.findChild(this.el,"."+this.classNames.track+"."+this.classNames.vertical);else{for(this.wrapperEl=document.createElement("div"),this.contentWrapperEl=document.createElement("div"),this.offsetEl=document.createElement("div"),this.maskEl=document.createElement("div"),this.contentEl=document.createElement("div"),this.placeholderEl=document.createElement("div"),this.heightAutoObserverWrapperEl=document.createElement("div"),this.heightAutoObserverEl=document.createElement("div"),this.wrapperEl.classList.add(this.classNames.wrapper),this.contentWrapperEl.classList.add(this.classNames.contentWrapper),this.offsetEl.classList.add(this.classNames.offset),this.maskEl.classList.add(this.classNames.mask),this.contentEl.classList.add(this.classNames.contentEl),this.placeholderEl.classList.add(this.classNames.placeholder),this.heightAutoObserverWrapperEl.classList.add(this.classNames.heightAutoObserverWrapperEl),this.heightAutoObserverEl.classList.add(this.classNames.heightAutoObserverEl);this.el.firstChild;)this.contentEl.appendChild(this.el.firstChild);this.contentWrapperEl.appendChild(this.contentEl),this.offsetEl.appendChild(this.contentWrapperEl),this.maskEl.appendChild(this.offsetEl),this.heightAutoObserverWrapperEl.appendChild(this.heightAutoObserverEl),this.wrapperEl.appendChild(this.heightAutoObserverWrapperEl),this.wrapperEl.appendChild(this.maskEl),this.wrapperEl.appendChild(this.placeholderEl),this.el.appendChild(this.wrapperEl)}if(!this.axis.x.track.el||!this.axis.y.track.el){var o=document.createElement("div"),s=document.createElement("div");o.classList.add(this.classNames.track),s.classList.add(this.classNames.scrollbar),o.appendChild(s),this.axis.x.track.el=o.cloneNode(!0),this.axis.x.track.el.classList.add(this.classNames.horizontal),this.axis.y.track.el=o.cloneNode(!0),this.axis.y.track.el.classList.add(this.classNames.vertical),this.el.appendChild(this.axis.x.track.el),this.el.appendChild(this.axis.y.track.el)}this.axis.x.scrollbar.el=this.axis.x.track.el.querySelector("."+this.classNames.scrollbar),this.axis.y.scrollbar.el=this.axis.y.track.el.querySelector("."+this.classNames.scrollbar),this.options.autoHide||(this.axis.x.scrollbar.el.classList.add(this.classNames.visible),this.axis.y.scrollbar.el.classList.add(this.classNames.visible)),this.el.setAttribute("data-simplebar","init")},e.initListeners=function(){var i=this,o=Ft(this.el);this.options.autoHide&&this.el.addEventListener("mouseenter",this.onMouseEnter),["mousedown","click","dblclick"].forEach(function(c){i.el.addEventListener(c,i.onPointerEvent,!0)}),["touchstart","touchend","touchmove"].forEach(function(c){i.el.addEventListener(c,i.onPointerEvent,{capture:!0,passive:!0})}),this.el.addEventListener("mousemove",this.onMouseMove),this.el.addEventListener("mouseleave",this.onMouseLeave),this.contentWrapperEl.addEventListener("scroll",this.onScroll),o.addEventListener("resize",this.onWindowResize);var s=!1,a=o.ResizeObserver||nl;this.resizeObserver=new a(function(){!s||i.recalculate()}),this.resizeObserver.observe(this.el),this.resizeObserver.observe(this.contentEl),o.requestAnimationFrame(function(){s=!0}),this.mutationObserver=new o.MutationObserver(this.recalculate),this.mutationObserver.observe(this.contentEl,{childList:!0,subtree:!0,characterData:!0})},e.recalculate=function(){var i=Ft(this.el);this.elStyles=i.getComputedStyle(this.el),this.isRtl=this.elStyles.direction==="rtl";var o=this.heightAutoObserverEl.offsetHeight<=1,s=this.heightAutoObserverEl.offsetWidth<=1,a=this.contentEl.offsetWidth,c=this.contentWrapperEl.offsetWidth,d=this.elStyles.overflowX,u=this.elStyles.overflowY;this.contentEl.style.padding=this.elStyles.paddingTop+" "+this.elStyles.paddingRight+" "+this.elStyles.paddingBottom+" "+this.elStyles.paddingLeft,this.wrapperEl.style.margin="-"+this.elStyles.paddingTop+" -"+this.elStyles.paddingRight+" -"+this.elStyles.paddingBottom+" -"+this.elStyles.paddingLeft;var l=this.contentEl.scrollHeight,m=this.contentEl.scrollWidth;this.contentWrapperEl.style.height=o?"auto":"100%",this.placeholderEl.style.width=s?a+"px":"auto",this.placeholderEl.style.height=l+"px";var f=this.contentWrapperEl.offsetHeight;this.axis.x.isOverflowing=m>a,this.axis.y.isOverflowing=l>f,this.axis.x.isOverflowing=d==="hidden"?!1:this.axis.x.isOverflowing,this.axis.y.isOverflowing=u==="hidden"?!1:this.axis.y.isOverflowing,this.axis.x.forceVisible=this.options.forceVisible==="x"||this.options.forceVisible===!0,this.axis.y.forceVisible=this.options.forceVisible==="y"||this.options.forceVisible===!0,this.hideNativeScrollbar();var p=this.axis.x.isOverflowing?this.scrollbarWidth:0,g=this.axis.y.isOverflowing?this.scrollbarWidth:0;this.axis.x.isOverflowing=this.axis.x.isOverflowing&&m>c-g,this.axis.y.isOverflowing=this.axis.y.isOverflowing&&l>f-p,this.axis.x.scrollbar.size=this.getScrollbarSize("x"),this.axis.y.scrollbar.size=this.getScrollbarSize("y"),this.axis.x.scrollbar.el.style.width=this.axis.x.scrollbar.size+"px",this.axis.y.scrollbar.el.style.height=this.axis.y.scrollbar.size+"px",this.positionScrollbar("x"),this.positionScrollbar("y"),this.toggleTrackVisibility("x"),this.toggleTrackVisibility("y")},e.getScrollbarSize=function(i){if(i===void 0&&(i="y"),!this.axis[i].isOverflowing)return 0;var o=this.contentEl[this.axis[i].scrollSizeAttr],s=this.axis[i].track.el[this.axis[i].offsetSizeAttr],a,c=s/o;return a=Math.max(~~(c*s),this.options.scrollbarMinSize),this.options.scrollbarMaxSize&&(a=Math.min(a,this.options.scrollbarMaxSize)),a},e.positionScrollbar=function(i){if(i===void 0&&(i="y"),!!this.axis[i].isOverflowing){var o=this.contentWrapperEl[this.axis[i].scrollSizeAttr],s=this.axis[i].track.el[this.axis[i].offsetSizeAttr],a=parseInt(this.elStyles[this.axis[i].sizeAttr],10),c=this.axis[i].scrollbar,d=this.contentWrapperEl[this.axis[i].scrollOffsetAttr];d=i==="x"&&this.isRtl&&t.getRtlHelpers().isRtlScrollingInverted?-d:d;var u=d/(o-a),l=~~((s-c.size)*u);l=i==="x"&&this.isRtl&&t.getRtlHelpers().isRtlScrollbarInverted?l+(s-c.size):l,c.el.style.transform=i==="x"?"translate3d("+l+"px, 0, 0)":"translate3d(0, "+l+"px, 0)"}},e.toggleTrackVisibility=function(i){i===void 0&&(i="y");var o=this.axis[i].track.el,s=this.axis[i].scrollbar.el;this.axis[i].isOverflowing||this.axis[i].forceVisible?(o.style.visibility="visible",this.contentWrapperEl.style[this.axis[i].overflowAttr]="scroll"):(o.style.visibility="hidden",this.contentWrapperEl.style[this.axis[i].overflowAttr]="hidden"),this.axis[i].isOverflowing?s.style.display="block":s.style.display="none"},e.hideNativeScrollbar=function(){this.offsetEl.style[this.isRtl?"left":"right"]=this.axis.y.isOverflowing||this.axis.y.forceVisible?"-"+this.scrollbarWidth+"px":0,this.offsetEl.style.bottom=this.axis.x.isOverflowing||this.axis.x.forceVisible?"-"+this.scrollbarWidth+"px":0},e.onMouseMoveForAxis=function(i){i===void 0&&(i="y"),this.axis[i].track.rect=this.axis[i].track.el.getBoundingClientRect(),this.axis[i].scrollbar.rect=this.axis[i].scrollbar.el.getBoundingClientRect();var o=this.isWithinBounds(this.axis[i].scrollbar.rect);o?this.axis[i].scrollbar.el.classList.add(this.classNames.hover):this.axis[i].scrollbar.el.classList.remove(this.classNames.hover),this.isWithinBounds(this.axis[i].track.rect)?(this.showScrollbar(i),this.axis[i].track.el.classList.add(this.classNames.hover)):this.axis[i].track.el.classList.remove(this.classNames.hover)},e.onMouseLeaveForAxis=function(i){i===void 0&&(i="y"),this.axis[i].track.el.classList.remove(this.classNames.hover),this.axis[i].scrollbar.el.classList.remove(this.classNames.hover)},e.showScrollbar=function(i){i===void 0&&(i="y");var o=this.axis[i].scrollbar.el;this.axis[i].isVisible||(o.classList.add(this.classNames.visible),this.axis[i].isVisible=!0),this.options.autoHide&&this.hideScrollbars()},e.onDragStart=function(i,o){o===void 0&&(o="y");var s=Eo(this.el),a=Ft(this.el),c=this.axis[o].scrollbar,d=o==="y"?i.pageY:i.pageX;this.axis[o].dragOffset=d-c.rect[this.axis[o].offsetAttr],this.draggedAxis=o,this.el.classList.add(this.classNames.dragging),s.addEventListener("mousemove",this.drag,!0),s.addEventListener("mouseup",this.onEndDrag,!0),this.removePreventClickId===null?(s.addEventListener("click",this.preventClick,!0),s.addEventListener("dblclick",this.preventClick,!0)):(a.clearTimeout(this.removePreventClickId),this.removePreventClickId=null)},e.onTrackClick=function(i,o){var s=this;if(o===void 0&&(o="y"),!!this.options.clickOnTrack){var a=Ft(this.el);this.axis[o].scrollbar.rect=this.axis[o].scrollbar.el.getBoundingClientRect();var c=this.axis[o].scrollbar,d=c.rect[this.axis[o].offsetAttr],u=parseInt(this.elStyles[this.axis[o].sizeAttr],10),l=this.contentWrapperEl[this.axis[o].scrollOffsetAttr],m=o==="y"?this.mouseY-d:this.mouseX-d,f=m<0?-1:1,p=f===-1?l-u:l+u,g=function v(){if(f===-1){if(l>p){var h;l-=s.options.clickOnTrackSpeed,s.contentWrapperEl.scrollTo((h={},h[s.axis[o].offsetAttr]=l,h)),a.requestAnimationFrame(v)}}else if(l=i.left&&this.mouseX<=i.left+i.width&&this.mouseY>=i.top&&this.mouseY<=i.top+i.height},e.findChild=function(i,o){var s=i.matches||i.webkitMatchesSelector||i.mozMatchesSelector||i.msMatchesSelector;return Array.prototype.filter.call(i.children,function(a){return s.call(a,o)})[0]},t}();he.defaultOptions={autoHide:!0,forceVisible:!1,clickOnTrack:!0,clickOnTrackSpeed:40,classNames:{contentEl:"simplebar-content",contentWrapper:"simplebar-content-wrapper",offset:"simplebar-offset",mask:"simplebar-mask",wrapper:"simplebar-wrapper",placeholder:"simplebar-placeholder",scrollbar:"simplebar-scrollbar",track:"simplebar-track",heightAutoObserverWrapperEl:"simplebar-height-auto-observer-wrapper",heightAutoObserverEl:"simplebar-height-auto-observer",visible:"simplebar-visible",horizontal:"simplebar-horizontal",vertical:"simplebar-vertical",hover:"simplebar-hover",dragging:"simplebar-dragging"},scrollbarMinSize:25,scrollbarMaxSize:0,timeout:1e3};he.instances=new WeakMap;he.initDOMLoadedElements=function(){document.removeEventListener("DOMContentLoaded",this.initDOMLoadedElements),window.removeEventListener("load",this.initDOMLoadedElements),Array.prototype.forEach.call(document.querySelectorAll("[data-simplebar]"),function(t){t.getAttribute("data-simplebar")!=="init"&&!he.instances.has(t)&&new he(t,yo(t.attributes))})};he.removeObserver=function(){this.globalObserver.disconnect()};he.initHtmlApi=function(){this.initDOMLoadedElements=this.initDOMLoadedElements.bind(this),typeof MutationObserver!="undefined"&&(this.globalObserver=new MutationObserver(he.handleMutations),this.globalObserver.observe(document,{childList:!0,subtree:!0})),document.readyState==="complete"||document.readyState!=="loading"&&!document.documentElement.doScroll?window.setTimeout(this.initDOMLoadedElements):(document.addEventListener("DOMContentLoaded",this.initDOMLoadedElements),window.addEventListener("load",this.initDOMLoadedElements))};he.handleMutations=function(t){t.forEach(function(e){Array.prototype.forEach.call(e.addedNodes,function(n){n.nodeType===1&&(n.hasAttribute("data-simplebar")?!he.instances.has(n)&&document.documentElement.contains(n)&&new he(n,yo(n.attributes)):Array.prototype.forEach.call(n.querySelectorAll("[data-simplebar]"),function(i){i.getAttribute("data-simplebar")!=="init"&&!he.instances.has(i)&&document.documentElement.contains(i)&&new he(i,yo(i.attributes))}))}),Array.prototype.forEach.call(e.removedNodes,function(n){n.nodeType===1&&(n.getAttribute("data-simplebar")==="init"?he.instances.has(n)&&!document.documentElement.contains(n)&&he.instances.get(n).unMount():Array.prototype.forEach.call(n.querySelectorAll('[data-simplebar="init"]'),function(i){he.instances.has(i)&&!document.documentElement.contains(i)&&he.instances.get(i).unMount()}))})})};he.getOptions=yo;bo.default&&he.initHtmlApi();var Um=Le(Ym());function Km(t){return"error"in t&&"exception"in t}function Wn(t){return"error"in t}function Gm(t){return typeof t.next=="string"}function re(t){let e=["","null","undefined"];return Array.isArray(t)?t.length>0:typeof t=="string"&&!e.includes(t)||typeof t=="number"||typeof t=="boolean"?!0:typeof t=="object"&&t!==null}function Fi(t){return t.every(e=>typeof e!="undefined"&&e!==null)}function Bi(t){for(let e of t.options)e.selected&&(e.selected=!1);t.value=""}function bl(t){return typeof t!==null&&typeof t!="undefined"}function fL(){let{csrftoken:t}=Um.default.parse(document.cookie);if(typeof t=="undefined")throw new Error("Invalid or missing CSRF token");return t}function Xm(t,e,n){return Pe(this,null,function*(){let i=fL(),o=new Headers({"X-CSRFToken":i}),s;typeof n!="undefined"&&(s=JSON.stringify(n),o.set("content-type","application/json"));let a=yield fetch(t,{method:e,body:s,headers:o,credentials:"same-origin"}),c=a.headers.get("Content-Type");if(typeof c=="string"&&c.includes("text"))return{error:yield a.text()};let d=yield a.json();return!a.ok&&Array.isArray(d)?{error:d.join(` -`)}:!a.ok&&"detail"in d?{error:d.detail}:d})}function So(t,e){return Pe(this,null,function*(){return yield Xm(t,"PATCH",e)})}function hL(t){return Pe(this,null,function*(){return yield Xm(t,"GET")})}function Qm(t){return Pe(this,null,function*(){return yield hL(t)})}function*j(...t){for(let e of t)for(let n of document.querySelectorAll(e))n!==null&&(yield n)}function ae(t){return document.getElementById(t)}function Jm(t,e=0){let n=e,i=document.getElementById("content-title");i!==null&&(n+=i.getBoundingClientRect().bottom);let o=t.getBoundingClientRect().top+window.pageYOffset+n;window.scrollTo({top:o,behavior:"smooth"})}function Zm(t){let e=[];for(let n of t.querySelectorAll("select"))if(n!==null){let i={name:n.name,options:[]};for(let o of n.options)o.selected&&i.options.push(o.value);e=[...e,i]}return e}function zi(t,e){t!==null&&(typeof e=="undefined"?window.getComputedStyle(t).display==="none"?t.style.display="":t.style.display="none":e==="show"?t.style.display="":t.style.display="none")}function*eg(t){for(let e of t.querySelectorAll("td"))e!==null&&re(e.innerText)&&e.innerText!=="\u2014"&&(yield e.innerText.replaceAll(/[\n\r]/g,"").trim())}function Ve(t,e,n){function i(s){return!!(typeof n=="string"&&s!==null&&s.matches(n))}function o(s){if(s!==null&&s.parentElement!==null&&!i(s)){for(let a of s.parentElement.querySelectorAll(e))if(a!==null)return a;return o(s.parentElement.parentElement)}return null}return o(t)}function Vn(t,e,n=null,i=[]){let o=document.createElement(t);if(e!==null)for(let s of Object.keys(e)){let a=s,c=e[a];a in o&&(o[a]=c)}n!==null&&n.length>0&&o.classList.add(...n);for(let s of i)o.appendChild(s);return o}function tg(t,e){let n=new Map;for(let i of t){let o=i[e];n.has(o)||n.set(o,i)}return Array.from(n.values())}function pL(t,e){let n=new Set;for(let i of e.querySelectorAll("*[name]"))i.validity.valid?(i.classList.contains("is-invalid")&&i.classList.remove("is-invalid"),i.classList.contains("is-valid")||i.classList.add("is-valid")):(n.add(i.name),i.classList.contains("is-valid")&&i.classList.remove("is-valid"),i.classList.contains("is-invalid")||i.classList.add("is-invalid"));if(n.size!==0){let i=e.elements.namedItem(Array.from(n)[0]);Jm(i),t.preventDefault()}}function ng(){for(let t of j("form")){let e=t.querySelectorAll("button[type=submit]");for(let n of e)n.addEventListener("click",i=>pL(i,t))}}function ig(){for(let t of j("a.set_speed"))if(t!==null){let e=function(n){n.preventDefault();let i=t.getAttribute("data"),o=document.getElementById(t.target);o!==null&&i!==null&&(o.value=i)};t.addEventListener("click",e)}}var yl={vlangroup_edit:{region:{hide:["id_sitegroup","id_site","id_location","id_rack","id_clustergroup","id_cluster"],show:["id_region"]},"site group":{hide:["id_region","id_site","id_location","id_rack","id_clustergroup","id_cluster"],show:["id_sitegroup"]},site:{hide:["id_location","id_rack","id_clustergroup","id_cluster"],show:["id_region","id_sitegroup","id_site"]},location:{hide:["id_rack","id_clustergroup","id_cluster"],show:["id_region","id_sitegroup","id_site","id_location"]},rack:{hide:["id_clustergroup","id_cluster"],show:["id_region","id_sitegroup","id_site","id_location","id_rack"]},"cluster group":{hide:["id_region","id_sitegroup","id_site","id_location","id_rack","id_cluster"],show:["id_clustergroup"]},cluster:{hide:["id_region","id_sitegroup","id_site","id_location","id_rack"],show:["id_clustergroup","id_cluster"]},default:{hide:["id_region","id_sitegroup","id_site","id_location","id_rack","id_clustergroup","id_cluster"],show:[]}}};function El(t,e){var n;for(let i of j(t)){let o=(n=i.parentElement)==null?void 0:n.parentElement;o!==null&&(e==="show"?zi(o,"show"):zi(o,"hide"))}}function rg(t,e){let n=e.options[e.selectedIndex].innerText.toLowerCase();for(let[i,o]of Object.entries(yl[t]))if(n.endsWith(i)){for(let s of o.hide)El(`#${s}`,"hide");for(let s of o.show)El(`#${s}`,"show");break}else for(let s of yl[t].default.hide)El(`#${s}`,"hide")}function og(){for(let t of Object.keys(yl))for(let e of j(`html[data-netbox-url-name="${t}"] #id_scope_type`))rg(t,e),e.addEventListener("change",()=>rg(t,e))}function mL(t){var n,i;let e=(i=(n=t==null?void 0:t.parentElement)==null?void 0:n.parentElement)!=null?i:null;return e!==null&&e.classList.contains("row")?e:null}function st(t,e){let n=mL(t);if(t!==null&&n!==null){zi(n,e);let i=new Event(`netbox.select.disabled.${t.name}`);switch(e){case"hide":t.disabled=!0,t.dispatchEvent(i);break;case"show":t.disabled=!1,t.dispatchEvent(i)}}}function gL(){let t=[ae("id_tagged_vlans"),ae("id_untagged_vlan"),ae("id_vlan_group")];if(Fi(t)){let[e,n]=t;Bi(n),Bi(e);for(let i of t)st(i,"hide")}}function vL(){let t=[ae("id_tagged_vlans"),ae("id_untagged_vlan"),ae("id_vlan_group")];if(Fi(t)){let[e,n,i]=t;Bi(e),st(i,"show"),st(n,"show"),st(e,"hide")}}function bL(){let t=[ae("id_tagged_vlans"),ae("id_untagged_vlan"),ae("id_vlan_group")];if(Fi(t)){let[e,n,i]=t;st(e,"show"),st(i,"show"),st(n,"show")}}function yL(){let t=[ae("id_tagged_vlans"),ae("id_untagged_vlan"),ae("id_vlan_group")];if(Fi(t)){let[e,n,i]=t;Bi(e),st(i,"show"),st(n,"show"),st(e,"hide")}}function sg(t){switch(t.value){case"access":vL();break;case"tagged":bL();break;case"tagged-all":yL();break;case"":gL();break}}function ag(){let t=ae("id_mode");t!==null&&(t.addEventListener("change",()=>sg(t)),sg(t))}function lg(){for(let t of[ng,ig,og,ag])t()}var mg=Le(pg());window.Collapse=Me;window.Modal=Nt;window.Popover=an;window.Toast=_t;window.Tooltip=et;function EL(){for(let t of j(".masonry"))new mg.default(t,{itemSelector:".masonry-item",percentPosition:!0})}function _L(){for(let t of j('[data-bs-toggle="tooltip"]'))new et(t,{container:"body"})}function SL(){for(let t of j('[data-bs-toggle="modal"]'))new Nt(t)}function Sn(t,e,n,i){let o="mdi-alert";switch(t){case"warning":o="mdi-alert";break;case"success":o="mdi-check-circle";break;case"info":o="mdi-information";break;case"danger":o="mdi-alert";break}let s=document.createElement("div");s.setAttribute("class","toast-container position-fixed bottom-0 end-0 m-3");let a=document.createElement("div");a.setAttribute("class",`toast bg-${t}`),a.setAttribute("role","alert"),a.setAttribute("aria-live","assertive"),a.setAttribute("aria-atomic","true");let c=document.createElement("div");c.setAttribute("class",`toast-header bg-${t} text-body`);let d=document.createElement("i");d.setAttribute("class",`mdi ${o}`);let u=document.createElement("strong");u.setAttribute("class","me-auto ms-1"),u.innerText=e;let l=document.createElement("button");l.setAttribute("type","button"),l.setAttribute("class","btn-close"),l.setAttribute("data-bs-dismiss","toast"),l.setAttribute("aria-label","Close");let m=document.createElement("div");if(m.setAttribute("class","toast-body"),c.appendChild(d),c.appendChild(u),typeof i!="undefined"){let p=document.createElement("small");p.setAttribute("class","text-muted"),c.appendChild(p)}return c.appendChild(l),m.innerText=n.trim(),a.appendChild(c),a.appendChild(m),s.appendChild(a),document.body.appendChild(s),new _t(a)}function wL(){let{hash:t}=location;if(t&&t.match(/^#tab_.+$/)){let e=t.replace("tab_","");for(let n of j(`ul.nav.nav-tabs .nav-link[data-bs-target="${e}"]`))new cn(n).show()}}function TL(){let t=document.querySelectorAll(".sidebar .accordion-item");function e(n){for(let i of t)i!==n?i.classList.remove("is-open"):i.classList.toggle("is-open")}for(let n of t)for(let i of n.querySelectorAll(".accordion-button"))i.addEventListener("click",()=>{e(n)})}function xL(){for(let t of j("a.image-preview")){let e=`${Math.round(window.innerWidth/4)}px`,n=Vn("img",{src:t.href});n.style.maxWidth=e;let i=Vn("div",null,null,[n]);new an(t,{customClass:"image-preview-popover",trigger:"hover",html:!0,content:i})}}function gg(){for(let t of[_L,SL,EL,wL,xL,TL])t()}var wl=Le(Sl());function AL(t,e){var c;let n=t.currentTarget,i=Ve(n,"span.search-obj-selected"),o=Ve(n,"input.search-obj-type"),s=n.getAttribute("data-search-value"),a="";i!==null&&o!==null&&(re(s)&&a!==s?(a=s,i.innerHTML=(c=e.textContent)!=null?c:"Error",o.value=s):(a="",i.innerHTML="All Objects",o.value=""))}function CL(){for(let t of j(".search-obj-selector"))for(let e of t.querySelectorAll("li > button.dropdown-item"))e.addEventListener("click",n=>AL(n,e))}function LL(){var t;for(let e of j("input.interface-filter")){let o=function(s){let a=s.target,c=new RegExp(a.value.toLowerCase().trim());for(let d of i){let u=d.querySelector('input[type="checkbox"][name="pk"]');u!==null&&(u.checked=!1);let l=d.getAttribute("data-name");typeof l=="string"&&(c.test(l.toLowerCase().trim())?d.classList.contains("d-none")&&d.classList.remove("d-none"):d.classList.add("d-none"))}},n=Ve(e,"table"),i=Array.from((t=n==null?void 0:n.querySelectorAll("tbody > tr"))!=null?t:[]).filter(s=>s!==null);e.addEventListener("keyup",(0,wl.default)(o,300))}}function DL(){var t;for(let e of j("input.object-filter")){let o=function(s){let a=s.target,c=new RegExp(a.value.toLowerCase().trim()),d=[];for(let u of i){let l=u.querySelector('input[type="checkbox"][name="pk"]');l!==null&&(l.checked=!1);for(let m of eg(u))if(c.test(m.toLowerCase())){d.push(u);break}}for(let u of i)d.indexOf(u)>=0?u.classList.remove("d-none"):u.classList.add("d-none")},n=Ve(e,"table"),i=Array.from((t=n==null?void 0:n.querySelectorAll("tbody > tr"))!=null?t:[]).filter(s=>s!==null);e.addEventListener("keyup",(0,wl.default)(o,300))}}function bg(){for(let t of[CL,DL,LL])t()}function yg(t,e,n){return Math.min(Math.max(t,n),e)}var Yn=class extends Error{constructor(e){super(`Failed to parse color: "${e}"`)}};function ML(t){if(typeof t!="string")throw new Yn(t);if(t.trim().toLowerCase()==="transparent")return[0,0,0,0];let e=t.trim();e=jL.test(t)?function(a){let c=a.toLowerCase().trim(),d=IL[function(u){let l=5381,m=u.length;for(;m;)l=33*l^u.charCodeAt(--m);return(l>>>0)%2341}(c)];if(!d)throw new Yn(a);return`#${d}`}(t):t;let n=kL.exec(e);if(n){let a=Array.from(n).slice(1);return[...a.slice(0,3).map(c=>parseInt(Wi(c,2),16)),parseInt(Wi(a[3]||"f",2),16)/255]}let i=PL.exec(e);if(i){let a=Array.from(i).slice(1);return[...a.slice(0,3).map(c=>parseInt(c,16)),parseInt(a[3]||"ff",16)/255]}let o=NL.exec(e);if(o){let a=Array.from(o).slice(1);return[...a.slice(0,3).map(c=>parseInt(c,10)),parseFloat(a[3]||"1")]}let s=RL.exec(e);if(s){let[a,c,d,u]=Array.from(s).slice(1).map(parseFloat);if(yg(0,100,c)!==c)throw new Yn(t);if(yg(0,100,d)!==d)throw new Yn(t);return[...HL(a,c,d),u||1]}throw new Yn(t)}var Eg=t=>parseInt(t.replace(/_/g,""),36),IL="1q29ehhb 1n09sgk7 1kl1ekf_ _yl4zsno 16z9eiv3 1p29lhp8 _bd9zg04 17u0____ _iw9zhe5 _to73___ _r45e31e _7l6g016 _jh8ouiv _zn3qba8 1jy4zshs 11u87k0u 1ro9yvyo 1aj3xael 1gz9zjz0 _3w8l4xo 1bf1ekf_ _ke3v___ _4rrkb__ 13j776yz _646mbhl _nrjr4__ _le6mbhl 1n37ehkb _m75f91n _qj3bzfz 1939yygw 11i5z6x8 _1k5f8xs 1509441m 15t5lwgf _ae2th1n _tg1ugcv 1lp1ugcv 16e14up_ _h55rw7n _ny9yavn _7a11xb_ 1ih442g9 _pv442g9 1mv16xof 14e6y7tu 1oo9zkds 17d1cisi _4v9y70f _y98m8kc 1019pq0v 12o9zda8 _348j4f4 1et50i2o _8epa8__ _ts6senj 1o350i2o 1mi9eiuo 1259yrp0 1ln80gnw _632xcoy 1cn9zldc _f29edu4 1n490c8q _9f9ziet 1b94vk74 _m49zkct 1kz6s73a 1eu9dtog _q58s1rz 1dy9sjiq __u89jo3 _aj5nkwg _ld89jo3 13h9z6wx _qa9z2ii _l119xgq _bs5arju 1hj4nwk9 1qt4nwk9 1ge6wau6 14j9zlcw 11p1edc_ _ms1zcxe _439shk6 _jt9y70f _754zsow 1la40eju _oq5p___ _x279qkz 1fa5r3rv _yd2d9ip _424tcku _8y1di2_ _zi2uabw _yy7rn9h 12yz980_ __39ljp6 1b59zg0x _n39zfzp 1fy9zest _b33k___ _hp9wq92 1il50hz4 _io472ub _lj9z3eo 19z9ykg0 _8t8iu3a 12b9bl4a 1ak5yw0o _896v4ku _tb8k8lv _s59zi6t _c09ze0p 1lg80oqn 1id9z8wb _238nba5 1kq6wgdi _154zssg _tn3zk49 _da9y6tc 1sg7cv4f _r12jvtt 1gq5fmkz 1cs9rvci _lp9jn1c _xw1tdnb 13f9zje6 16f6973h _vo7ir40 _bt5arjf _rc45e4t _hr4e100 10v4e100 _hc9zke2 _w91egv_ _sj2r1kk 13c87yx8 _vqpds__ _ni8ggk8 _tj9yqfb 1ia2j4r4 _7x9b10u 1fc9ld4j 1eq9zldr _5j9lhpx _ez9zl6o _md61fzm".split(" ").reduce((t,e)=>{let n=Eg(e.substring(0,3)),i=Eg(e.substring(3)).toString(16),o="";for(let s=0;s<6-i.length;s++)o+="0";return t[n]=`${o}${i}`,t},{}),Wi=(t,e)=>Array.from(Array(e)).map(()=>t).join(""),kL=new RegExp(`^#${Wi("([a-f0-9])",3)}([a-f0-9])?$`,"i"),PL=new RegExp(`^#${Wi("([a-f0-9]{2})",3)}([a-f0-9]{2})?$`,"i"),NL=new RegExp(`^rgba?\\(\\s*(\\d+)\\s*${Wi(",\\s*(\\d+)\\s*",2)}(?:,\\s*([\\d.]+))?\\s*\\)$`,"i"),RL=/^hsla?\(\s*([\d.]+)\s*,\s*([\d.]+)%\s*,\s*([\d.]+)%(?:\s*,\s*([\d.]+))?\s*\)$/i,jL=/^[a-z]+$/i,_g=t=>Math.round(255*t),HL=(t,e,n)=>{let i=n/100;if(e===0)return[i,i,i].map(_g);let o=(t%360+360)%360/60,s=(1-Math.abs(2*i-1))*(e/100),a=s*(1-Math.abs(o%2-1)),c=0,d=0,u=0;o>=0&&o<1?(c=s,d=a):o>=1&&o<2?(c=a,d=s):o>=2&&o<3?(d=s,u=a):o>=3&&o<4?(d=a,u=s):o>=4&&o<5?(c=a,u=s):o>=5&&o<6&&(c=s,u=a);let l=i-s/2;return[c+l,d+l,u+l].map(_g)};function qL(t){if(t==="transparent")return 0;function e(s){let a=s/255;return a<=.03928?a/12.92:Math.pow((a+.055)/1.055,2.4)}let[n,i,o]=ML(t);return .2126*e(n)+.7152*e(i)+.0722*e(o)}function $L(t){return qL(t)>.179}function Vi(t){return $L(t)?"#000":"#fff"}var Ug=Le(Sl()),Ol=Le($g());var Mo={};(function(t,e){typeof Mo=="object"&&typeof module=="object"?module.exports=e():typeof define=="function"&&define.amd?define([],e):typeof Mo=="object"?Mo.SlimSelect=e():t.SlimSelect=e()})(window,function(){return n={},t.m=e=[function(i,o,s){"use strict";function a(d,u){u=u||{bubbles:!1,cancelable:!1,detail:void 0};var l=document.createEvent("CustomEvent");return l.initCustomEvent(d,u.bubbles,u.cancelable,u.detail),l}var c;o.__esModule=!0,o.hasClassInTree=function(d,u){function l(m,f){return f&&m&&m.classList&&m.classList.contains(f)?m:null}return l(d,u)||function m(f,p){return f&&f!==document?l(f,p)?f:m(f.parentNode,p):null}(d,u)},o.ensureElementInView=function(d,u){var l=d.scrollTop+d.offsetTop,m=l+d.clientHeight,f=u.offsetTop,p=f+u.clientHeight;f=window.innerHeight?"above":l?u:"below"},o.debounce=function(d,u,l){var m;return u===void 0&&(u=100),l===void 0&&(l=!1),function(){for(var f=[],p=0;p[^<>]*'+v+"")},o.kebabCase=function(d){var u=d.replace(/[A-Z\u00C0-\u00D6\u00D8-\u00DE]/g,function(l){return"-"+l.toLowerCase()});return d[0]===d[0].toUpperCase()?u.substring(1):u},typeof(c=window).CustomEvent!="function"&&(a.prototype=c.Event.prototype,c.CustomEvent=a)},function(i,o,s){"use strict";o.__esModule=!0;var a=(c.prototype.newOption=function(u){return{id:u.id?u.id:String(Math.floor(1e8*Math.random())),value:u.value?u.value:"",text:u.text?u.text:"",innerHTML:u.innerHTML?u.innerHTML:"",selected:!!u.selected&&u.selected,display:u.display===void 0||u.display,disabled:!!u.disabled&&u.disabled,placeholder:!!u.placeholder&&u.placeholder,class:u.class?u.class:void 0,data:u.data?u.data:{},mandatory:!!u.mandatory&&u.mandatory}},c.prototype.add=function(u){this.data.push({id:String(Math.floor(1e8*Math.random())),value:u.value,text:u.text,innerHTML:"",selected:!1,display:!0,disabled:!1,placeholder:!1,class:void 0,mandatory:u.mandatory,data:{}})},c.prototype.parseSelectData=function(){this.data=[];for(var u=0,l=this.main.select.element.childNodes;u',placeholder:this.placeholder,searchPlaceholder:"Filter",onChange:()=>this.handleSlimChange()}),this.getStaticParams(),this.getDynamicParams(),this.getPathKeys();for(let[a,c]of this.staticParams.entries())this.queryParams.set(a,c);for(let a of this.dynamicParams.keys())this.updateQueryParams(a);for(let a of this.pathValues.keys())this.updatePathValues(a);this.queryParams.set("brief",[!0]),this.updateQueryUrl(),this.resetClasses(),this.setSlimStyles(),this.initResetButton(),this.initRefreshButton(),this.addEventListeners();let o=this.base.getAttribute("data-fetch-trigger"),s=this.base.closest(".content-container .collapse");switch(zg(o)?this.trigger=o:s!==null?this.trigger="collapse":this.trigger="load",this.trigger){case"collapse":s!==null&&(s.addEventListener("show.bs.collapse",()=>this.loadData()),s.addEventListener("hide.bs.collapse",()=>this.resetOptions()));break;case"open":this.slim.beforeOpen=()=>this.loadData();break;case"load":Promise.all([this.loadData()]);break}}get options(){return this.slim.data.data.filter(Yg)}set options(e){let n=e;this.nullOption!==null&&(n=[this.nullOption,...n]);let i=tg(n,"value"),o=typeof i.find(a=>a.value==="")!="undefined",s=i.findIndex(a=>a.value==="");o&&s>=0?i[s]=this.emptyOption:i.unshift(this.emptyOption),this.slim.setData(i)}resetOptions(){this.options=[this.emptyOption]}disable(){this.slim.slim.singleSelected!==null?this.slim.slim.singleSelected.container.hasAttribute("disabled")||this.slim.slim.singleSelected.container.setAttribute("disabled",""):this.slim.slim.multiSelected!==null&&(this.slim.slim.multiSelected.container.hasAttribute("disabled")||this.slim.slim.multiSelected.container.setAttribute("disabled","")),this.slim.disable()}enable(){this.slim.slim.singleSelected!==null?this.slim.slim.singleSelected.container.hasAttribute("disabled")&&this.slim.slim.singleSelected.container.removeAttribute("disabled"):this.slim.slim.multiSelected!==null&&this.slim.slim.multiSelected.container.hasAttribute("disabled")&&this.slim.slim.multiSelected.container.removeAttribute("disabled"),this.slim.enable()}addEventListeners(){let e=(0,Ug.default)(i=>this.handleSearch(i),300,!1);this.slim.slim.search.input.addEventListener("keyup",i=>{if(!i.key.match(/^(Arrow|Enter|Tab).*/))return e(i)}),this.slim.slim.search.input.addEventListener("paste",i=>e(i)),this.slim.slim.list.addEventListener("scroll",()=>this.handleScroll()),this.base.addEventListener(`netbox.select.atbottom.${this.name}`,()=>this.fetchOptions(this.more,"merge")),this.base.addEventListener(`netbox.select.disabled.${this.name}`,i=>this.handleDisableEnable(i));let n=new Set([...this.dynamicParams.keys(),...this.pathValues.keys()]);for(let i of n){let o=document.querySelector(`[name="${i}"]`);o!==null&&o.addEventListener("change",s=>this.handleEvent(s)),this.base.addEventListener(`netbox.select.onload.${i}`,s=>this.handleEvent(s))}}loadData(){return Pe(this,null,function*(){try{this.disable(),yield this.getOptions("replace")}catch(e){console.error(e)}finally{this.setOptionStyles(),this.enable(),this.base.dispatchEvent(this.loadEvent)}})}getPreselectedOptions(){return Array.from(this.base.options).filter(e=>e.selected).filter(e=>!(e.value==="---------"||e.innerText==="---------"))}processOptions(e,n="merge"){return Pe(this,null,function*(){let i=this.getPreselectedOptions(),o=i.map(c=>c.getAttribute("value")).filter(re),s=i.map(c=>({value:c.value,text:c.innerText,selected:!0,disabled:!1})),a=[];for(let c of e.results){let d=c.display;typeof c._depth=="number"&&c._depth>0&&(d=`${"\u2500".repeat(c._depth)} ${d}`);let u={},l=c.id.toString(),m,f,p;for(let[v,h]of Object.entries(c)){if(!["id","slug"].includes(v)&&["string","number","boolean"].includes(typeof h)){let y=v.replaceAll("_","-");u[y]=String(h)}this.disabledAttributes.some(y=>y.toLowerCase()===v.toLowerCase())&&(typeof h=="string"&&h.toLowerCase()!=="false"||typeof h=="boolean"&&h===!0||typeof h=="number"&&h>0)&&(p=!0)}o.some(v=>this.disabledOptions.includes(v))&&(p=!0),o.includes(l)&&(f=!0,p=!1);let g={value:l,text:d,data:u,style:m,selected:f,disabled:p};a=[...a,g]}switch(n){case"merge":this.options=[...this.options,...a];break;case"replace":this.options=[...s,...a];break}Gm(e)?this.more=e.next:this.more=null})}fetchOptions(e,n="merge"){return Pe(this,null,function*(){if(typeof e=="string"){let i=yield Qm(e);if(Wn(i))return Km(i)?this.handleError(i.exception,i.error):this.handleError(`Error Fetching Options for field '${this.name}'`,i.error);yield this.processOptions(i,n)}})}getOptions(e="merge"){return Pe(this,null,function*(){if(this.queryUrl.includes("{{")){this.resetOptions();return}yield this.fetchOptions(this.queryUrl,e)})}handleSearch(e){return Pe(this,null,function*(){let{value:n}=e.target,i=Ol.default.stringifyUrl({url:this.queryUrl,query:{q:n}});yield this.fetchOptions(i,"merge"),this.slim.data.search(n),this.slim.render()})}handleScroll(){let e=this.slim.slim.list.scrollTop+this.slim.slim.list.offsetHeight===this.slim.slim.list.scrollHeight;this.atBottom&&!e?(this.atBottom=!1,this.base.dispatchEvent(this.bottomEvent)):!this.atBottom&&e&&(this.atBottom=!0,this.base.dispatchEvent(this.bottomEvent))}handleEvent(e){let n=e.target;this.updateQueryParams(n.name),this.updatePathValues(n.name),this.updateQueryUrl(),Promise.all([this.loadData()])}handleDisableEnable(e){let n=e.target;n.disabled===!0?this.disable():n.disabled===!1&&this.enable()}handleError(e,n){Sn("danger",e,n).show(),this.resetOptions()}handleSlimChange(){let e=this.slim.slim;e&&(e.container.classList.contains("is-invalid")||this.base.classList.contains("is-invalid"))&&(e.container.classList.remove("is-invalid"),this.base.classList.remove("is-invalid")),this.base.dispatchEvent(this.loadEvent)}updateQueryUrl(){let e={};for(let[o,s]of this.queryParams.entries())e[o]=s;let n=this.url;for(let[o,s]of this.pathValues.entries())for(let a of this.url.matchAll(new RegExp(`({{${o}}})`,"g")))re(s)&&(n=n.replaceAll(a[1],s.toString()));let i=Ol.default.stringifyUrl({url:n,query:e});this.queryUrl!==i&&(this.queryUrl=i,this.base.setAttribute("data-url",i))}updateQueryParams(e){let n=document.querySelector(`[name="${e}"]`);if(n!==null){let i=[];if(n.multiple?i=Array.from(n.options).filter(o=>o.selected).map(o=>o.value):n.value!==""&&(i=[n.value]),i.length>0){this.dynamicParams.updateValue(e,i);let o=this.dynamicParams.get(e);if(typeof o!="undefined"){let{queryParam:s,queryValue:a}=o,c=[];if(this.staticParams.has(s)){let d=this.staticParams.get(s);typeof d!="undefined"&&(c=[...d,...a])}else c=a;c.length>0?this.queryParams.set(s,c):this.queryParams.delete(s)}}else{let o=this.dynamicParams.queryParam(e);o!==null&&this.queryParams.delete(o)}}}updatePathValues(e){let n=e.replaceAll(/^id_/gi,""),i=ae(`id_${n}`);i!==null&&this.url.includes("{{")&&Boolean(this.url.match(new RegExp(`({{(${e})}})`,"g")))&&(re(i.value)?this.pathValues.set(e,i.value):this.pathValues.set(e,""))}getPlaceholder(){let e=this.name;if(this.base.id){let n=document.querySelector(`label[for="${this.base.id}"]`);n!==null&&(e=`Select ${n.innerText.trim()}`)}return e}getDisabledOptions(){var n;let e=[];if(Bg(this.base))try{let i=JSON.parse((n=this.base.getAttribute("data-query-param-exclude"))!=null?n:"[]");e=[...e,...i]}catch(i){console.group(`Unable to parse data-query-param-exclude value on select element '${this.name}'`),console.warn(i),console.groupEnd()}return e}getDisabledAttributes(){let e=[...Kg],n=this.base.getAttribute("disabled-indicator");return re(n)&&(e=[...e,n]),e}getPathKeys(){for(let e of this.url.matchAll(new RegExp("{{(.+)}}","g")))this.pathValues.set(e[1],"")}getDynamicParams(){let e=this.base.getAttribute("data-dynamic-params");try{this.dynamicParams.addFromJson(e)}catch(n){console.group(`Unable to determine dynamic query parameters for select field '${this.name}'`),console.warn(n),console.groupEnd()}}getStaticParams(){let e=this.base.getAttribute("data-static-params");try{if(re(e)){let n=JSON.parse(e);if(Vg(n))for(let{queryParam:i,queryValue:o}of n)Array.isArray(o)?this.staticParams.set(i,o):this.staticParams.set(i,[o])}}catch(n){console.group(`Unable to determine static query parameters for select field '${this.name}'`),console.warn(n),console.groupEnd()}}setSlimStyles(){let{width:e,height:n}=this.slim.slim.container.getBoundingClientRect();this.base.style.opacity="0",this.base.style.width=`${e}px`,this.base.style.height=`${n}px`,this.base.style.display="block",this.base.style.position="absolute",this.base.style.pointerEvents="none"}setOptionStyles(){for(let e of this.options)if("data"in e&&"id"in e&&typeof e.data!="undefined"&&typeof e.id!="undefined"&&"color"in e.data){let n=e.id,i=e.data,o=document.createElement("style"),s=`#${i.color}`,a=Vi(s);o.setAttribute("data-netbox",n),o.innerHTML=` + `}}function jv(){r.calendarContainer.classList.add("hasWeeks");var b=u("div","flatpickr-weekwrapper");b.appendChild(u("span","flatpickr-weekday",r.l10n.weekAbbreviation));var E=u("div","flatpickr-weeks");return b.appendChild(E),{weekWrapper:b,weekNumbers:E}}function Ro(b,E){E===void 0&&(E=!0);var w=E?b:b-r.currentMonth;w<0&&r._hidePrevMonthArrow===!0||w>0&&r._hideNextMonthArrow===!0||(r.currentMonth+=w,(r.currentMonth<0||r.currentMonth>11)&&(r.currentYear+=r.currentMonth>11?1:-1,r.currentMonth=(r.currentMonth+12)%12,re("onYearChange"),Gn()),Ki(),re("onMonthChange"),Ji())}function Hv(b,E){b===void 0&&(b=!0),E===void 0&&(E=!0),r.input.value="",r.altInput!==void 0&&(r.altInput.value=""),r.mobileInput!==void 0&&(r.mobileInput.value=""),r.selectedDates=[],r.latestSelectedDateObj=void 0,E===!0&&(r.currentYear=r._initialDate.getFullYear(),r.currentMonth=r._initialDate.getMonth()),r.showTimeInput=!1,r.config.enableTime===!0&&Te(),r.redraw(),b&&re("onChange")}function qv(){r.isOpen=!1,r.isMobile||(r.calendarContainer!==void 0&&r.calendarContainer.classList.remove("open"),r._input!==void 0&&r._input.classList.remove("active")),re("onClose")}function $v(){r.config!==void 0&&re("onDestroy");for(var b=r._handlers.length;b--;){var E=r._handlers[b];E.element.removeEventListener(E.event,E.handler,E.options)}if(r._handlers=[],r.mobileInput)r.mobileInput.parentNode&&r.mobileInput.parentNode.removeChild(r.mobileInput),r.mobileInput=void 0;else if(r.calendarContainer&&r.calendarContainer.parentNode)if(r.config.static&&r.calendarContainer.parentNode){var w=r.calendarContainer.parentNode;if(w.lastChild&&w.removeChild(w.lastChild),w.parentNode){for(;w.firstChild;)w.parentNode.insertBefore(w.firstChild,w);w.parentNode.removeChild(w)}}else r.calendarContainer.parentNode.removeChild(r.calendarContainer);r.altInput&&(r.input.type="text",r.altInput.parentNode&&r.altInput.parentNode.removeChild(r.altInput),delete r.altInput),r.input&&(r.input.type=r.input._type,r.input.classList.remove("flatpickr-input"),r.input.removeAttribute("readonly"),r.input.value=""),["_showTimeInput","latestSelectedDateObj","_hideNextMonthArrow","_hidePrevMonthArrow","__hideNextMonthArrow","__hidePrevMonthArrow","isMobile","isOpen","selectedDateElem","minDateHasTime","maxDateHasTime","days","daysContainer","_input","_positionElement","innerContainer","rContainer","monthNav","todayDateElem","calendarContainer","weekdayContainer","prevMonthNav","nextMonthNav","monthsDropdownContainer","currentMonthElement","currentYearElement","navigationCurrentMonth","selectedDateElem","config"].forEach(function(D){try{delete r[D]}catch(R){}})}function Xn(b){return r.config.appendTo&&r.config.appendTo.contains(b)?!0:r.calendarContainer.contains(b)}function jo(b){if(r.isOpen&&!r.config.inline){var E=p(b),w=Xn(E),D=E===r.input||E===r.altInput||r.element.contains(E)||b.path&&b.path.indexOf&&(~b.path.indexOf(r.input)||~b.path.indexOf(r.altInput)),R=b.type==="blur"?D&&b.relatedTarget&&!Xn(b.relatedTarget):!D&&!w&&!Xn(b.relatedTarget),P=!r.config.ignoredFocusElements.some(function(B){return B.contains(E)});R&&P&&(r.timeContainer!==void 0&&r.minuteElement!==void 0&&r.hourElement!==void 0&&q(),r.close(),r.config.mode==="range"&&r.selectedDates.length===1&&(r.clear(!1),r.redraw()))}}function Gi(b){if(!(!b||r.config.minDate&&br.config.maxDate.getFullYear())){var E=b,w=r.currentYear!==E;r.currentYear=E||r.currentYear,r.config.maxDate&&r.currentYear===r.config.maxDate.getFullYear()?r.currentMonth=Math.min(r.config.maxDate.getMonth(),r.currentMonth):r.config.minDate&&r.currentYear===r.config.minDate.getFullYear()&&(r.currentMonth=Math.max(r.config.minDate.getMonth(),r.currentMonth)),w&&(r.redraw(),re("onYearChange"),Gn())}}function zt(b,E){E===void 0&&(E=!0);var w=r.parseDate(b,void 0,E);if(r.config.minDate&&w&&k(w,r.config.minDate,E!==void 0?E:!r.minDateHasTime)<0||r.config.maxDate&&w&&k(w,r.config.maxDate,E!==void 0?E:!r.maxDateHasTime)>0)return!1;if(r.config.enable.length===0&&r.config.disable.length===0)return!0;if(w===void 0)return!1;for(var D=r.config.enable.length>0,R=D?r.config.enable:r.config.disable,P=0,B=void 0;P=B.from.getTime()&&w.getTime()<=B.to.getTime())return D}return!D}function Xi(b){return r.daysContainer!==void 0?b.className.indexOf("hidden")===-1&&r.daysContainer.contains(b):!1}function Bv(b){var E=b.target===r._input,w=r.config.allowInput,D=r.isOpen&&(!w||!E),R=r.config.inline&&E&&!w;if(b.keyCode===13&&E){if(w)return r.setDate(r._input.value,!0,b.target===r.altInput?r.config.altFormat:r.config.dateFormat),b.target.blur();r.open()}else if(Xn(b.target)||D||R){var P=!!r.timeContainer&&r.timeContainer.contains(b.target);switch(b.keyCode){case 13:P?(b.preventDefault(),q(),qo()):zl(b);break;case 27:b.preventDefault(),qo();break;case 8:case 46:E&&!r.config.allowInput&&(b.preventDefault(),r.clear());break;case 37:case 39:if(!P&&!E){if(b.preventDefault(),r.daysContainer!==void 0&&(w===!1||document.activeElement&&Xi(document.activeElement))){var B=b.keyCode===39?1:-1;b.ctrlKey?(b.stopPropagation(),Ro(B),At(ct(1),0)):At(void 0,B)}}else r.hourElement&&r.hourElement.focus();break;case 38:case 40:b.preventDefault();var V=b.keyCode===40?1:-1;r.daysContainer&&b.target.$i!==void 0||b.target===r.input||b.target===r.altInput?b.ctrlKey?(b.stopPropagation(),Gi(r.currentYear-V),At(ct(1),0)):P||At(void 0,V*7):b.target===r.currentYearElement?Gi(r.currentYear-V):r.config.enableTime&&(!P&&r.hourElement&&r.hourElement.focus(),q(b),r._debouncedChange());break;case 9:if(P){var U=[r.hourElement,r.minuteElement,r.secondElement,r.amPM].concat(r.pluginElements).filter(function(xe){return xe}),X=U.indexOf(b.target);if(X!==-1){var J=U[X+(b.shiftKey?-1:1)];b.preventDefault(),(J||r._input).focus()}}else!r.config.noCalendar&&r.daysContainer&&r.daysContainer.contains(b.target)&&b.shiftKey&&(b.preventDefault(),r._input.focus());break;default:break}}if(r.amPM!==void 0&&b.target===r.amPM)switch(b.key){case r.l10n.amPM[0].charAt(0):case r.l10n.amPM[0].charAt(0).toLowerCase():r.amPM.textContent=r.l10n.amPM[0],ee(),ut();break;case r.l10n.amPM[1].charAt(0):case r.l10n.amPM[1].charAt(0).toLowerCase():r.amPM.textContent=r.l10n.amPM[1],ee(),ut();break}(E||Xn(b.target))&&re("onKeyDown",b)}function Ho(b){if(!(r.selectedDates.length!==1||b&&(!b.classList.contains("flatpickr-day")||b.classList.contains("flatpickr-disabled")))){for(var E=b?b.dateObj.getTime():r.days.firstElementChild.dateObj.getTime(),w=r.parseDate(r.selectedDates[0],void 0,!0).getTime(),D=Math.min(E,r.selectedDates[0].getTime()),R=Math.max(E,r.selectedDates[0].getTime()),P=!1,B=0,V=0,U=D;UD&&UB)?B=U:U>w&&(!V||U0&&ht0&&ht>V;if(er)return ft.classList.add("notAllowed"),["inRange","startRange","endRange"].forEach(function(Zn){ft.classList.remove(Zn)}),"continue";if(P&&!er)return"continue";["startRange","inRange","endRange","notAllowed"].forEach(function(Zn){ft.classList.remove(Zn)}),b!==void 0&&(b.classList.add(E<=r.selectedDates[0].getTime()?"startRange":"endRange"),wE&&ht===w&&ft.classList.add("endRange"),ht>=B&&(V===0||ht<=V)&&M(ht,w,E)&&ft.classList.add("inRange"))},dt=0,Jn=J.children.length;dt0||w.getMinutes()>0||w.getSeconds()>0),r.selectedDates&&(r.selectedDates=r.selectedDates.filter(function(R){return zt(R)}),!r.selectedDates.length&&b==="min"&&we(w),ut()),r.daysContainer&&(Fl(),w!==void 0?r.currentYearElement[b]=w.getFullYear().toString():r.currentYearElement.removeAttribute(b),r.currentYearElement.disabled=!!D&&w!==void 0&&D.getFullYear()===w.getFullYear())}}function Wv(){var b=["wrap","weekNumbers","allowInput","clickOpens","time_24hr","enableTime","noCalendar","altInput","shorthandCurrentMonth","inline","static","enableSeconds","disableMobile"],E=t({},T,JSON.parse(JSON.stringify(S.dataset||{}))),w={};r.config.parseDate=E.parseDate,r.config.formatDate=E.formatDate,Object.defineProperty(r.config,"enable",{get:function(){return r.config._enable},set:function(J){r.config._enable=Vl(J)}}),Object.defineProperty(r.config,"disable",{get:function(){return r.config._disable},set:function(J){r.config._disable=Vl(J)}});var D=E.mode==="time";if(!E.dateFormat&&(E.enableTime||D)){var R=z.defaultConfig.dateFormat||n.dateFormat;w.dateFormat=E.noCalendar||D?"H:i"+(E.enableSeconds?":S":""):R+" H:i"+(E.enableSeconds?":S":"")}if(E.altInput&&(E.enableTime||D)&&!E.altFormat){var P=z.defaultConfig.altFormat||n.altFormat;w.altFormat=E.noCalendar||D?"h:i"+(E.enableSeconds?":S K":" K"):P+(" h:i"+(E.enableSeconds?":S":"")+" K")}E.altInputClass||(r.config.altInputClass=r.input.className+" "+r.config.altInputClass),Object.defineProperty(r.config,"minDate",{get:function(){return r.config._minDate},set:$l("min")}),Object.defineProperty(r.config,"maxDate",{get:function(){return r.config._maxDate},set:$l("max")});var B=function(J){return function(xe){r.config[J==="min"?"_minTime":"_maxTime"]=r.parseDate(xe,"H:i:S")}};Object.defineProperty(r.config,"minTime",{get:function(){return r.config._minTime},set:B("min")}),Object.defineProperty(r.config,"maxTime",{get:function(){return r.config._maxTime},set:B("max")}),E.mode==="time"&&(r.config.noCalendar=!0,r.config.enableTime=!0),Object.assign(r.config,w,E);for(var V=0;V-1?r.config[X]=c(U[X]).map(L).concat(r.config[X]):typeof E[X]=="undefined"&&(r.config[X]=U[X])}re("onParseConfig")}function Bl(){typeof r.config.locale!="object"&&typeof z.l10ns[r.config.locale]=="undefined"&&r.config.errorHandler(new Error("flatpickr: invalid locale "+r.config.locale)),r.l10n=t({},z.l10ns.default,typeof r.config.locale=="object"?r.config.locale:r.config.locale!=="default"?z.l10ns[r.config.locale]:void 0),y.K="("+r.l10n.amPM[0]+"|"+r.l10n.amPM[1]+"|"+r.l10n.amPM[0].toLowerCase()+"|"+r.l10n.amPM[1].toLowerCase()+")";var b=t({},T,JSON.parse(JSON.stringify(S.dataset||{})));b.time_24hr===void 0&&z.defaultConfig.time_24hr===void 0&&(r.config.time_24hr=r.l10n.time_24hr),r.formatDate=A(r),r.parseDate=O({config:r.config,l10n:r.l10n})}function Qn(b){if(r.calendarContainer!==void 0){re("onPreCalendarPosition");var E=b||r._positionElement,w=Array.prototype.reduce.call(r.calendarContainer.children,function(tb,nb){return tb+nb.offsetHeight},0),D=r.calendarContainer.offsetWidth,R=r.config.position.split(" "),P=R[0],B=R.length>1?R[1]:null,V=E.getBoundingClientRect(),U=window.innerHeight-V.bottom,X=P==="above"||P!=="below"&&Uw,J=window.pageYOffset+V.top+(X?-w-2:E.offsetHeight+2);if(d(r.calendarContainer,"arrowTop",!X),d(r.calendarContainer,"arrowBottom",X),!r.config.inline){var xe=window.pageXOffset+V.left-(B!=null&&B==="center"?(D-V.width)/2:0),dt=window.document.body.offsetWidth-(window.pageXOffset+V.right),Jn=xe+D>window.document.body.offsetWidth,Fo=dt+D>window.document.body.offsetWidth;if(d(r.calendarContainer,"rightMost",Jn),!r.config.static)if(r.calendarContainer.style.top=J+"px",!Jn)r.calendarContainer.style.left=xe+"px",r.calendarContainer.style.right="auto";else if(!Fo)r.calendarContainer.style.left="auto",r.calendarContainer.style.right=dt+"px";else{var Zi=document.styleSheets[0];if(Zi===void 0)return;var ft=window.document.body.offsetWidth,zo=Math.max(0,ft/2-D/2),ht=".flatpickr-calendar.centerMost:before",er=".flatpickr-calendar.centerMost:after",Zn=Zi.cssRules.length,eb="{left:"+V.left+"px;right:auto;}";d(r.calendarContainer,"rightMost",!1),d(r.calendarContainer,"centerMost",!0),Zi.insertRule(ht+","+er+eb,Zn),r.calendarContainer.style.left=zo+"px",r.calendarContainer.style.right="auto"}}}}function Fl(){r.config.noCalendar||r.isMobile||(Ji(),Ki())}function qo(){r._input.focus(),window.navigator.userAgent.indexOf("MSIE")!==-1||navigator.msMaxTouchPoints!==void 0?setTimeout(r.close,0):r.close()}function zl(b){b.preventDefault(),b.stopPropagation();var E=function(J){return J.classList&&J.classList.contains("flatpickr-day")&&!J.classList.contains("flatpickr-disabled")&&!J.classList.contains("notAllowed")},w=m(b.target,E);if(w!==void 0){var D=w,R=r.latestSelectedDateObj=new Date(D.dateObj.getTime()),P=(R.getMonth()r.currentMonth+r.config.showMonths-1)&&r.config.mode!=="range";if(r.selectedDateElem=D,r.config.mode==="single")r.selectedDates=[R];else if(r.config.mode==="multiple"){var B=Bo(R);B?r.selectedDates.splice(parseInt(B),1):r.selectedDates.push(R)}else r.config.mode==="range"&&(r.selectedDates.length===2&&r.clear(!1,!1),r.latestSelectedDateObj=R,r.selectedDates.push(R),k(R,r.selectedDates[0],!0)!==0&&r.selectedDates.sort(function(J,xe){return J.getTime()-xe.getTime()}));if(ee(),P){var V=r.currentYear!==R.getFullYear();r.currentYear=R.getFullYear(),r.currentMonth=R.getMonth(),V&&(re("onYearChange"),Gn()),re("onMonthChange")}if(Ji(),Ki(),ut(),r.config.enableTime&&setTimeout(function(){return r.showTimeInput=!0},50),!P&&r.config.mode!=="range"&&r.config.showMonths===1?Ge(D):r.selectedDateElem!==void 0&&r.hourElement===void 0&&r.selectedDateElem&&r.selectedDateElem.focus(),r.hourElement!==void 0&&r.hourElement!==void 0&&r.hourElement.focus(),r.config.closeOnSelect){var U=r.config.mode==="single"&&!r.config.enableTime,X=r.config.mode==="range"&&r.selectedDates.length===2&&!r.config.enableTime;(U||X)&&qo()}lt()}}var Qi={locale:[Bl,Hl],showMonths:[Rl,I,jl],minDate:[ke],maxDate:[ke]};function Vv(b,E){if(b!==null&&typeof b=="object"){Object.assign(r.config,b);for(var w in b)Qi[w]!==void 0&&Qi[w].forEach(function(D){return D()})}else r.config[b]=E,Qi[b]!==void 0?Qi[b].forEach(function(D){return D()}):e.indexOf(b)>-1&&(r.config[b]=c(E));r.redraw(),ut(!1)}function Wl(b,E){var w=[];if(b instanceof Array)w=b.map(function(D){return r.parseDate(D,E)});else if(b instanceof Date||typeof b=="number")w=[r.parseDate(b,E)];else if(typeof b=="string")switch(r.config.mode){case"single":case"time":w=[r.parseDate(b,E)];break;case"multiple":w=b.split(r.config.conjunction).map(function(D){return r.parseDate(D,E)});break;case"range":w=b.split(r.l10n.rangeSeparator).map(function(D){return r.parseDate(D,E)});break;default:break}else r.config.errorHandler(new Error("Invalid date supplied: "+JSON.stringify(b)));r.selectedDates=w.filter(function(D){return D instanceof Date&&zt(D,!1)}),r.config.mode==="range"&&r.selectedDates.sort(function(D,R){return D.getTime()-R.getTime()})}function Yv(b,E,w){if(E===void 0&&(E=!1),w===void 0&&(w=r.config.dateFormat),b!==0&&!b||b instanceof Array&&b.length===0)return r.clear(E);Wl(b,w),r.showTimeInput=r.selectedDates.length>0,r.latestSelectedDateObj=r.selectedDates[r.selectedDates.length-1],r.redraw(),ke(),we(),r.selectedDates.length===0&&r.clear(!1),ut(E),E&&re("onChange")}function Vl(b){return b.slice().map(function(E){return typeof E=="string"||typeof E=="number"||E instanceof Date?r.parseDate(E,void 0,!0):E&&typeof E=="object"&&E.from&&E.to?{from:r.parseDate(E.from,void 0),to:r.parseDate(E.to,void 0)}:E}).filter(function(E){return E})}function Uv(){r.selectedDates=[],r.now=r.parseDate(r.config.now)||new Date;var b=r.config.defaultDate||((r.input.nodeName==="INPUT"||r.input.nodeName==="TEXTAREA")&&r.input.placeholder&&r.input.value===r.input.placeholder?null:r.input.value);b&&Wl(b,r.config.dateFormat),r._initialDate=r.selectedDates.length>0?r.selectedDates[0]:r.config.minDate&&r.config.minDate.getTime()>r.now.getTime()?r.config.minDate:r.config.maxDate&&r.config.maxDate.getTime()0&&(r.latestSelectedDateObj=r.selectedDates[0]),r.config.minTime!==void 0&&(r.config.minTime=r.parseDate(r.config.minTime,"H:i")),r.config.maxTime!==void 0&&(r.config.maxTime=r.parseDate(r.config.maxTime,"H:i")),r.minDateHasTime=!!r.config.minDate&&(r.config.minDate.getHours()>0||r.config.minDate.getMinutes()>0||r.config.minDate.getSeconds()>0),r.maxDateHasTime=!!r.config.maxDate&&(r.config.maxDate.getHours()>0||r.config.maxDate.getMinutes()>0||r.config.maxDate.getSeconds()>0),Object.defineProperty(r,"showTimeInput",{get:function(){return r._showTimeInput},set:function(E){r._showTimeInput=E,r.calendarContainer&&d(r.calendarContainer,"showTimeInput",E),r.isOpen&&Qn()}})}function Kv(){if(r.input=r.config.wrap?S.querySelector("[data-input]"):S,!r.input){r.config.errorHandler(new Error("Invalid input element specified"));return}r.input._type=r.input.type,r.input.type="text",r.input.classList.add("flatpickr-input"),r._input=r.input,r.config.altInput&&(r.altInput=u(r.input.nodeName,r.config.altInputClass),r._input=r.altInput,r.altInput.placeholder=r.input.placeholder,r.altInput.disabled=r.input.disabled,r.altInput.required=r.input.required,r.altInput.tabIndex=r.input.tabIndex,r.altInput.type="text",r.input.setAttribute("type","hidden"),!r.config.static&&r.input.parentNode&&r.input.parentNode.insertBefore(r.altInput,r.input.nextSibling)),r.config.allowInput||r._input.setAttribute("readonly","readonly"),r._positionElement=r.config.positionElement||r._input}function Gv(){var b=r.config.enableTime?r.config.noCalendar?"time":"datetime-local":"date";r.mobileInput=u("input",r.input.className+" flatpickr-mobile"),r.mobileInput.step=r.input.getAttribute("step")||"any",r.mobileInput.tabIndex=1,r.mobileInput.type=b,r.mobileInput.disabled=r.input.disabled,r.mobileInput.required=r.input.required,r.mobileInput.placeholder=r.input.placeholder,r.mobileFormatStr=b==="datetime-local"?"Y-m-d\\TH:i:S":b==="date"?"Y-m-d":"H:i:S",r.selectedDates.length>0&&(r.mobileInput.defaultValue=r.mobileInput.value=r.formatDate(r.selectedDates[0],r.mobileFormatStr)),r.config.minDate&&(r.mobileInput.min=r.formatDate(r.config.minDate,"Y-m-d")),r.config.maxDate&&(r.mobileInput.max=r.formatDate(r.config.maxDate,"Y-m-d")),r.input.type="hidden",r.altInput!==void 0&&(r.altInput.type="hidden");try{r.input.parentNode&&r.input.parentNode.insertBefore(r.mobileInput,r.input.nextSibling)}catch(E){}ne(r.mobileInput,"change",function(E){r.setDate(E.target.value,!1,r.mobileFormatStr),re("onChange"),re("onClose")})}function Xv(b){if(r.isOpen===!0)return r.close();r.open(b)}function re(b,E){if(r.config!==void 0){var w=r.config[b];if(w!==void 0&&w.length>0)for(var D=0;w[D]&&D=0&&k(b,r.selectedDates[1])<=0}function Ji(){r.config.noCalendar||r.isMobile||!r.monthNav||(r.yearElements.forEach(function(b,E){var w=new Date(r.currentYear,r.currentMonth,1);w.setMonth(r.currentMonth+E),r.config.showMonths>1||r.config.monthSelectorType==="static"?r.monthElements[E].textContent=v(w.getMonth(),r.config.shorthandCurrentMonth,r.l10n)+" ":r.monthsDropdownContainer.value=w.getMonth().toString(),b.value=w.getFullYear().toString()}),r._hidePrevMonthArrow=r.config.minDate!==void 0&&(r.currentYear===r.config.minDate.getFullYear()?r.currentMonth<=r.config.minDate.getMonth():r.currentYearr.config.maxDate.getMonth():r.currentYear>r.config.maxDate.getFullYear()))}function Yl(b){return r.selectedDates.map(function(E){return r.formatDate(E,b)}).filter(function(E,w,D){return r.config.mode!=="range"||r.config.enableTime||D.indexOf(E)===w}).join(r.config.mode!=="range"?r.config.conjunction:r.l10n.rangeSeparator)}function ut(b){b===void 0&&(b=!0),r.mobileInput!==void 0&&r.mobileFormatStr&&(r.mobileInput.value=r.latestSelectedDateObj!==void 0?r.formatDate(r.latestSelectedDateObj,r.mobileFormatStr):""),r.input.value=Yl(r.config.dateFormat),r.altInput!==void 0&&(r.altInput.value=Yl(r.config.altFormat)),b!==!1&&re("onValueUpdate")}function Jv(b){var E=r.prevMonthNav.contains(b.target),w=r.nextMonthNav.contains(b.target);E||w?Ro(E?-1:1):r.yearElements.indexOf(b.target)>=0?b.target.select():b.target.classList.contains("arrowUp")?r.changeYear(r.currentYear+1):b.target.classList.contains("arrowDown")&&r.changeYear(r.currentYear-1)}function Zv(b){b.preventDefault();var E=b.type==="keydown",w=b.target;r.amPM!==void 0&&b.target===r.amPM&&(r.amPM.textContent=r.l10n.amPM[s(r.amPM.textContent===r.l10n.amPM[0])]);var D=parseFloat(w.getAttribute("min")),R=parseFloat(w.getAttribute("max")),P=parseFloat(w.getAttribute("step")),B=parseInt(w.value,10),V=b.delta||(E?b.which===38?1:-1:0),U=B+P*V;if(typeof w.value!="undefined"&&w.value.length===2){var X=w===r.hourElement,J=w===r.minuteElement;UR&&(U=w===r.hourElement?U-R-s(!r.amPM):D,J&&xt(void 0,1,r.hourElement)),r.amPM&&X&&(P===1?U+B===23:Math.abs(U-B)>P)&&(r.amPM.textContent=r.l10n.amPM[s(r.amPM.textContent===r.l10n.amPM[0])]),w.value=o(U)}}return N(),r}function Z(S,T){for(var r=Array.prototype.slice.call(S).filter(function(I){return I instanceof HTMLElement}),Y=[],N=0;Ntc,afterRead:()=>Jl,afterWrite:()=>rc,applyStyles:()=>xn,arrow:()=>rr,auto:()=>ti,basePlacements:()=>pt,beforeMain:()=>Zl,beforeRead:()=>Xl,beforeWrite:()=>nc,bottom:()=>fe,clippingParents:()=>Vo,computeStyles:()=>On,createPopper:()=>fr,createPopperBase:()=>fc,createPopperLite:()=>hc,detectOverflow:()=>Ae,end:()=>ni,eventListeners:()=>An,flip:()=>lr,hide:()=>cr,left:()=>ce,main:()=>ec,modifierPhases:()=>Uo,offset:()=>ur,placements:()=>ri,popper:()=>Wt,popperGenerator:()=>Qt,popperOffsets:()=>Dn,preventOverflow:()=>dr,read:()=>Ql,reference:()=>Yo,right:()=>le,start:()=>Xe,top:()=>oe,variationPlacements:()=>nr,viewport:()=>ii,write:()=>ic});var oe="top",fe="bottom",le="right",ce="left",ti="auto",pt=[oe,fe,le,ce],Xe="start",ni="end",Vo="clippingParents",ii="viewport",Wt="popper",Yo="reference",nr=pt.reduce(function(t,e){return t.concat([e+"-"+Xe,e+"-"+ni])},[]),ri=[].concat(pt,[ti]).reduce(function(t,e){return t.concat([e,e+"-"+Xe,e+"-"+ni])},[]),Xl="beforeRead",Ql="read",Jl="afterRead",Zl="beforeMain",ec="main",tc="afterMain",nc="beforeWrite",ic="write",rc="afterWrite",Uo=[Xl,Ql,Jl,Zl,ec,tc,nc,ic,rc];function ge(t){return t?(t.nodeName||"").toLowerCase():null}function se(t){if(t==null)return window;if(t.toString()!=="[object Window]"){var e=t.ownerDocument;return e&&e.defaultView||window}return t}function mt(t){var e=se(t).Element;return t instanceof e||t instanceof Element}function ue(t){var e=se(t).HTMLElement;return t instanceof e||t instanceof HTMLElement}function ir(t){if(typeof ShadowRoot=="undefined")return!1;var e=se(t).ShadowRoot;return t instanceof e||t instanceof ShadowRoot}function fb(t){var e=t.state;Object.keys(e.elements).forEach(function(n){var i=e.styles[n]||{},o=e.attributes[n]||{},s=e.elements[n];!ue(s)||!ge(s)||(Object.assign(s.style,i),Object.keys(o).forEach(function(a){var c=o[a];c===!1?s.removeAttribute(a):s.setAttribute(a,c===!0?"":c)}))})}function hb(t){var e=t.state,n={popper:{position:e.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(e.elements.popper.style,n.popper),e.styles=n,e.elements.arrow&&Object.assign(e.elements.arrow.style,n.arrow),function(){Object.keys(e.elements).forEach(function(i){var o=e.elements[i],s=e.attributes[i]||{},a=Object.keys(e.styles.hasOwnProperty(i)?e.styles[i]:n[i]),c=a.reduce(function(d,u){return d[u]="",d},{});!ue(o)||!ge(o)||(Object.assign(o.style,c),Object.keys(s).forEach(function(d){o.removeAttribute(d)}))})}}var xn={name:"applyStyles",enabled:!0,phase:"write",fn:fb,effect:hb,requires:["computeStyles"]};function ve(t){return t.split("-")[0]}var Ct=Math.round;function qe(t,e){e===void 0&&(e=!1);var n=t.getBoundingClientRect(),i=1,o=1;return ue(t)&&e&&(i=n.width/t.offsetWidth||1,o=n.height/t.offsetHeight||1),{width:Ct(n.width/i),height:Ct(n.height/o),top:Ct(n.top/o),right:Ct(n.right/i),bottom:Ct(n.bottom/o),left:Ct(n.left/i),x:Ct(n.left/i),y:Ct(n.top/o)}}function Vt(t){var e=qe(t),n=t.offsetWidth,i=t.offsetHeight;return Math.abs(e.width-n)<=1&&(n=e.width),Math.abs(e.height-i)<=1&&(i=e.height),{x:t.offsetLeft,y:t.offsetTop,width:n,height:i}}function oi(t,e){var n=e.getRootNode&&e.getRootNode();if(t.contains(e))return!0;if(n&&ir(n)){var i=e;do{if(i&&t.isSameNode(i))return!0;i=i.parentNode||i.host}while(i)}return!1}function Oe(t){return se(t).getComputedStyle(t)}function Ko(t){return["table","td","th"].indexOf(ge(t))>=0}function Ee(t){return((mt(t)?t.ownerDocument:t.document)||window.document).documentElement}function gt(t){return ge(t)==="html"?t:t.assignedSlot||t.parentNode||(ir(t)?t.host:null)||Ee(t)}function oc(t){return!ue(t)||Oe(t).position==="fixed"?null:t.offsetParent}function pb(t){var e=navigator.userAgent.toLowerCase().indexOf("firefox")!==-1,n=navigator.userAgent.indexOf("Trident")!==-1;if(n&&ue(t)){var i=Oe(t);if(i.position==="fixed")return null}for(var o=gt(t);ue(o)&&["html","body"].indexOf(ge(o))<0;){var s=Oe(o);if(s.transform!=="none"||s.perspective!=="none"||s.contain==="paint"||["transform","perspective"].indexOf(s.willChange)!==-1||e&&s.willChange==="filter"||e&&s.filter&&s.filter!=="none")return o;o=o.parentNode}return null}function Ye(t){for(var e=se(t),n=oc(t);n&&Ko(n)&&Oe(n).position==="static";)n=oc(n);return n&&(ge(n)==="html"||ge(n)==="body"&&Oe(n).position==="static")?e:n||pb(t)||e}function Yt(t){return["top","bottom"].indexOf(t)>=0?"x":"y"}var $e=Math.max,Lt=Math.min,si=Math.round;function Ut(t,e,n){return $e(t,Lt(e,n))}function ai(){return{top:0,right:0,bottom:0,left:0}}function li(t){return Object.assign({},ai(),t)}function ci(t,e){return e.reduce(function(n,i){return n[i]=t,n},{})}var mb=function(e,n){return e=typeof e=="function"?e(Object.assign({},n.rects,{placement:n.placement})):e,li(typeof e!="number"?e:ci(e,pt))};function gb(t){var e,n=t.state,i=t.name,o=t.options,s=n.elements.arrow,a=n.modifiersData.popperOffsets,c=ve(n.placement),d=Yt(c),u=[ce,le].indexOf(c)>=0,l=u?"height":"width";if(!(!s||!a)){var m=mb(o.padding,n),f=Vt(s),p=d==="y"?oe:ce,g=d==="y"?fe:le,v=n.rects.reference[l]+n.rects.reference[d]-a[d]-n.rects.popper[l],h=a[d]-n.rects.reference[d],y=Ye(s),_=y?d==="y"?y.clientHeight||0:y.clientWidth||0:0,A=v/2-h/2,O=m[p],k=_-f[l]-m[g],M=_/2-f[l]/2+A,H=Ut(O,M,k),$=d;n.modifiersData[i]=(e={},e[$]=H,e.centerOffset=H-M,e)}}function vb(t){var e=t.state,n=t.options,i=n.element,o=i===void 0?"[data-popper-arrow]":i;o!=null&&(typeof o=="string"&&(o=e.elements.popper.querySelector(o),!o)||!oi(e.elements.popper,o)||(e.elements.arrow=o))}var rr={name:"arrow",enabled:!0,phase:"main",fn:gb,effect:vb,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};var bb={top:"auto",right:"auto",bottom:"auto",left:"auto"};function yb(t){var e=t.x,n=t.y,i=window,o=i.devicePixelRatio||1;return{x:si(si(e*o)/o)||0,y:si(si(n*o)/o)||0}}function sc(t){var e,n=t.popper,i=t.popperRect,o=t.placement,s=t.offsets,a=t.position,c=t.gpuAcceleration,d=t.adaptive,u=t.roundOffsets,l=u===!0?yb(s):typeof u=="function"?u(s):s,m=l.x,f=m===void 0?0:m,p=l.y,g=p===void 0?0:p,v=s.hasOwnProperty("x"),h=s.hasOwnProperty("y"),y=ce,_=oe,A=window;if(d){var O=Ye(n),k="clientHeight",M="clientWidth";O===se(n)&&(O=Ee(n),Oe(O).position!=="static"&&(k="scrollHeight",M="scrollWidth")),O=O,o===oe&&(_=fe,g-=O[k]-i.height,g*=c?1:-1),o===ce&&(y=le,f-=O[M]-i.width,f*=c?1:-1)}var H=Object.assign({position:a},d&&bb);if(c){var $;return Object.assign({},H,($={},$[_]=h?"0":"",$[y]=v?"0":"",$.transform=(A.devicePixelRatio||1)<2?"translate("+f+"px, "+g+"px)":"translate3d("+f+"px, "+g+"px, 0)",$))}return Object.assign({},H,(e={},e[_]=h?g+"px":"",e[y]=v?f+"px":"",e.transform="",e))}function Eb(t){var e=t.state,n=t.options,i=n.gpuAcceleration,o=i===void 0?!0:i,s=n.adaptive,a=s===void 0?!0:s,c=n.roundOffsets,d=c===void 0?!0:c;if(!1)var u;var l={placement:ve(e.placement),popper:e.elements.popper,popperRect:e.rects.popper,gpuAcceleration:o};e.modifiersData.popperOffsets!=null&&(e.styles.popper=Object.assign({},e.styles.popper,sc(Object.assign({},l,{offsets:e.modifiersData.popperOffsets,position:e.options.strategy,adaptive:a,roundOffsets:d})))),e.modifiersData.arrow!=null&&(e.styles.arrow=Object.assign({},e.styles.arrow,sc(Object.assign({},l,{offsets:e.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:d})))),e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-placement":e.placement})}var On={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:Eb,data:{}};var or={passive:!0};function _b(t){var e=t.state,n=t.instance,i=t.options,o=i.scroll,s=o===void 0?!0:o,a=i.resize,c=a===void 0?!0:a,d=se(e.elements.popper),u=[].concat(e.scrollParents.reference,e.scrollParents.popper);return s&&u.forEach(function(l){l.addEventListener("scroll",n.update,or)}),c&&d.addEventListener("resize",n.update,or),function(){s&&u.forEach(function(l){l.removeEventListener("scroll",n.update,or)}),c&&d.removeEventListener("resize",n.update,or)}}var An={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:_b,data:{}};var Sb={left:"right",right:"left",bottom:"top",top:"bottom"};function Cn(t){return t.replace(/left|right|bottom|top/g,function(e){return Sb[e]})}var wb={start:"end",end:"start"};function sr(t){return t.replace(/start|end/g,function(e){return wb[e]})}function Kt(t){var e=se(t),n=e.pageXOffset,i=e.pageYOffset;return{scrollLeft:n,scrollTop:i}}function Gt(t){return qe(Ee(t)).left+Kt(t).scrollLeft}function Go(t){var e=se(t),n=Ee(t),i=e.visualViewport,o=n.clientWidth,s=n.clientHeight,a=0,c=0;return i&&(o=i.width,s=i.height,/^((?!chrome|android).)*safari/i.test(navigator.userAgent)||(a=i.offsetLeft,c=i.offsetTop)),{width:o,height:s,x:a+Gt(t),y:c}}function Xo(t){var e,n=Ee(t),i=Kt(t),o=(e=t.ownerDocument)==null?void 0:e.body,s=$e(n.scrollWidth,n.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),a=$e(n.scrollHeight,n.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),c=-i.scrollLeft+Gt(t),d=-i.scrollTop;return Oe(o||n).direction==="rtl"&&(c+=$e(n.clientWidth,o?o.clientWidth:0)-s),{width:s,height:a,x:c,y:d}}function Xt(t){var e=Oe(t),n=e.overflow,i=e.overflowX,o=e.overflowY;return/auto|scroll|overlay|hidden/.test(n+o+i)}function ar(t){return["html","body","#document"].indexOf(ge(t))>=0?t.ownerDocument.body:ue(t)&&Xt(t)?t:ar(gt(t))}function Dt(t,e){var n;e===void 0&&(e=[]);var i=ar(t),o=i===((n=t.ownerDocument)==null?void 0:n.body),s=se(i),a=o?[s].concat(s.visualViewport||[],Xt(i)?i:[]):i,c=e.concat(a);return o?c:c.concat(Dt(gt(a)))}function Ln(t){return Object.assign({},t,{left:t.x,top:t.y,right:t.x+t.width,bottom:t.y+t.height})}function Tb(t){var e=qe(t);return e.top=e.top+t.clientTop,e.left=e.left+t.clientLeft,e.bottom=e.top+t.clientHeight,e.right=e.left+t.clientWidth,e.width=t.clientWidth,e.height=t.clientHeight,e.x=e.left,e.y=e.top,e}function ac(t,e){return e===ii?Ln(Go(t)):ue(e)?Tb(e):Ln(Xo(Ee(t)))}function xb(t){var e=Dt(gt(t)),n=["absolute","fixed"].indexOf(Oe(t).position)>=0,i=n&&ue(t)?Ye(t):t;return mt(i)?e.filter(function(o){return mt(o)&&oi(o,i)&&ge(o)!=="body"}):[]}function Qo(t,e,n){var i=e==="clippingParents"?xb(t):[].concat(e),o=[].concat(i,[n]),s=o[0],a=o.reduce(function(c,d){var u=ac(t,d);return c.top=$e(u.top,c.top),c.right=Lt(u.right,c.right),c.bottom=Lt(u.bottom,c.bottom),c.left=$e(u.left,c.left),c},ac(t,s));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}function Qe(t){return t.split("-")[1]}function ui(t){var e=t.reference,n=t.element,i=t.placement,o=i?ve(i):null,s=i?Qe(i):null,a=e.x+e.width/2-n.width/2,c=e.y+e.height/2-n.height/2,d;switch(o){case oe:d={x:a,y:e.y-n.height};break;case fe:d={x:a,y:e.y+e.height};break;case le:d={x:e.x+e.width,y:c};break;case ce:d={x:e.x-n.width,y:c};break;default:d={x:e.x,y:e.y}}var u=o?Yt(o):null;if(u!=null){var l=u==="y"?"height":"width";switch(s){case Xe:d[u]=d[u]-(e[l]/2-n[l]/2);break;case ni:d[u]=d[u]+(e[l]/2-n[l]/2);break;default:}}return d}function Ae(t,e){e===void 0&&(e={});var n=e,i=n.placement,o=i===void 0?t.placement:i,s=n.boundary,a=s===void 0?Vo:s,c=n.rootBoundary,d=c===void 0?ii:c,u=n.elementContext,l=u===void 0?Wt:u,m=n.altBoundary,f=m===void 0?!1:m,p=n.padding,g=p===void 0?0:p,v=li(typeof g!="number"?g:ci(g,pt)),h=l===Wt?Yo:Wt,y=t.elements.reference,_=t.rects.popper,A=t.elements[f?h:l],O=Qo(mt(A)?A:A.contextElement||Ee(t.elements.popper),a,d),k=qe(y),M=ui({reference:k,element:_,strategy:"absolute",placement:o}),H=Ln(Object.assign({},_,M)),$=l===Wt?H:k,G={top:O.top-$.top+v.top,bottom:$.bottom-O.bottom+v.bottom,left:O.left-$.left+v.left,right:$.right-O.right+v.right},Z=t.modifiersData.offset;if(l===Wt&&Z){var z=Z[o];Object.keys(G).forEach(function(S){var T=[le,fe].indexOf(S)>=0?1:-1,r=[oe,fe].indexOf(S)>=0?"y":"x";G[S]+=z[r]*T})}return G}function Jo(t,e){e===void 0&&(e={});var n=e,i=n.placement,o=n.boundary,s=n.rootBoundary,a=n.padding,c=n.flipVariations,d=n.allowedAutoPlacements,u=d===void 0?ri:d,l=Qe(i),m=l?c?nr:nr.filter(function(g){return Qe(g)===l}):pt,f=m.filter(function(g){return u.indexOf(g)>=0});f.length===0&&(f=m);var p=f.reduce(function(g,v){return g[v]=Ae(t,{placement:v,boundary:o,rootBoundary:s,padding:a})[ve(v)],g},{});return Object.keys(p).sort(function(g,v){return p[g]-p[v]})}function Ob(t){if(ve(t)===ti)return[];var e=Cn(t);return[sr(t),e,sr(e)]}function Ab(t){var e=t.state,n=t.options,i=t.name;if(!e.modifiersData[i]._skip){for(var o=n.mainAxis,s=o===void 0?!0:o,a=n.altAxis,c=a===void 0?!0:a,d=n.fallbackPlacements,u=n.padding,l=n.boundary,m=n.rootBoundary,f=n.altBoundary,p=n.flipVariations,g=p===void 0?!0:p,v=n.allowedAutoPlacements,h=e.options.placement,y=ve(h),_=y===h,A=d||(_||!g?[Cn(h)]:Ob(h)),O=[h].concat(A).reduce(function(Te,pe){return Te.concat(ve(pe)===ti?Jo(e,{placement:pe,boundary:l,rootBoundary:m,padding:u,flipVariations:g,allowedAutoPlacements:v}):pe)},[]),k=e.rects.reference,M=e.rects.popper,H=new Map,$=!0,G=O[0],Z=0;Z=0,Y=r?"width":"height",N=Ae(e,{placement:z,boundary:l,rootBoundary:m,altBoundary:f,padding:u}),L=r?T?le:ce:T?fe:oe;k[Y]>M[Y]&&(L=Cn(L));var I=Cn(L),q=[];if(s&&q.push(N[S]<=0),c&&q.push(N[L]<=0,N[I]<=0),q.every(function(Te){return Te})){G=z,$=!1;break}H.set(z,q)}if($)for(var W=g?3:1,te=function(pe){var at=O.find(function(ne){var me=H.get(ne);if(me)return me.slice(0,pe).every(function(lt){return lt})});if(at)return G=at,"break"},ee=W;ee>0;ee--){var we=te(ee);if(we==="break")break}e.placement!==G&&(e.modifiersData[i]._skip=!0,e.placement=G,e.reset=!0)}}var lr={name:"flip",enabled:!0,phase:"main",fn:Ab,requiresIfExists:["offset"],data:{_skip:!1}};function lc(t,e,n){return n===void 0&&(n={x:0,y:0}),{top:t.top-e.height-n.y,right:t.right-e.width+n.x,bottom:t.bottom-e.height+n.y,left:t.left-e.width-n.x}}function cc(t){return[oe,le,fe,ce].some(function(e){return t[e]>=0})}function Cb(t){var e=t.state,n=t.name,i=e.rects.reference,o=e.rects.popper,s=e.modifiersData.preventOverflow,a=Ae(e,{elementContext:"reference"}),c=Ae(e,{altBoundary:!0}),d=lc(a,i),u=lc(c,o,s),l=cc(d),m=cc(u);e.modifiersData[n]={referenceClippingOffsets:d,popperEscapeOffsets:u,isReferenceHidden:l,hasPopperEscaped:m},e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-reference-hidden":l,"data-popper-escaped":m})}var cr={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:Cb};function Lb(t,e,n){var i=ve(t),o=[ce,oe].indexOf(i)>=0?-1:1,s=typeof n=="function"?n(Object.assign({},e,{placement:t})):n,a=s[0],c=s[1];return a=a||0,c=(c||0)*o,[ce,le].indexOf(i)>=0?{x:c,y:a}:{x:a,y:c}}function Db(t){var e=t.state,n=t.options,i=t.name,o=n.offset,s=o===void 0?[0,0]:o,a=ri.reduce(function(l,m){return l[m]=Lb(m,e.rects,s),l},{}),c=a[e.placement],d=c.x,u=c.y;e.modifiersData.popperOffsets!=null&&(e.modifiersData.popperOffsets.x+=d,e.modifiersData.popperOffsets.y+=u),e.modifiersData[i]=a}var ur={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:Db};function Mb(t){var e=t.state,n=t.name;e.modifiersData[n]=ui({reference:e.rects.reference,element:e.rects.popper,strategy:"absolute",placement:e.placement})}var Dn={name:"popperOffsets",enabled:!0,phase:"read",fn:Mb,data:{}};function Zo(t){return t==="x"?"y":"x"}function Ib(t){var e=t.state,n=t.options,i=t.name,o=n.mainAxis,s=o===void 0?!0:o,a=n.altAxis,c=a===void 0?!1:a,d=n.boundary,u=n.rootBoundary,l=n.altBoundary,m=n.padding,f=n.tether,p=f===void 0?!0:f,g=n.tetherOffset,v=g===void 0?0:g,h=Ae(e,{boundary:d,rootBoundary:u,padding:m,altBoundary:l}),y=ve(e.placement),_=Qe(e.placement),A=!_,O=Yt(y),k=Zo(O),M=e.modifiersData.popperOffsets,H=e.rects.reference,$=e.rects.popper,G=typeof v=="function"?v(Object.assign({},e.rects,{placement:e.placement})):v,Z={x:0,y:0};if(!!M){if(s||c){var z=O==="y"?oe:ce,S=O==="y"?fe:le,T=O==="y"?"height":"width",r=M[O],Y=M[O]+h[z],N=M[O]-h[S],L=p?-$[T]/2:0,I=_===Xe?H[T]:$[T],q=_===Xe?-$[T]:-H[T],W=e.elements.arrow,te=p&&W?Vt(W):{width:0,height:0},ee=e.modifiersData["arrow#persistent"]?e.modifiersData["arrow#persistent"].padding:ai(),we=ee[z],Te=ee[S],pe=Ut(0,H[T],te[T]),at=A?H[T]/2-L-pe-we-G:I-pe-we-G,ne=A?-H[T]/2+L+pe+Te+G:q+pe+Te+G,me=e.elements.arrow&&Ye(e.elements.arrow),lt=me?O==="y"?me.clientTop||0:me.clientLeft||0:0,Tt=e.modifiersData.offset?e.modifiersData.offset[e.placement][O]:0,ke=M[O]+at-Tt-lt,Ft=M[O]+ne-Tt;if(s){var xt=Ut(p?Lt(Y,ke):Y,r,p?$e(N,Ft):N);M[O]=xt,Z[O]=xt-r}if(c){var Tn=O==="x"?oe:ce,Ot=O==="x"?fe:le,Ge=M[k],ct=Ge+h[Tn],Ui=Ge-h[Ot],At=Ut(p?Lt(ct,ke):ct,Ge,p?$e(Ui,Ft):Ui);M[k]=At,Z[k]=At-Ge}}e.modifiersData[i]=Z}}var dr={name:"preventOverflow",enabled:!0,phase:"main",fn:Ib,requiresIfExists:["offset"]};function es(t){return{scrollLeft:t.scrollLeft,scrollTop:t.scrollTop}}function ts(t){return t===se(t)||!ue(t)?Kt(t):es(t)}function kb(t){var e=t.getBoundingClientRect(),n=e.width/t.offsetWidth||1,i=e.height/t.offsetHeight||1;return n!==1||i!==1}function ns(t,e,n){n===void 0&&(n=!1);var i=ue(e),o=ue(e)&&kb(e),s=Ee(e),a=qe(t,o),c={scrollLeft:0,scrollTop:0},d={x:0,y:0};return(i||!i&&!n)&&((ge(e)!=="body"||Xt(s))&&(c=ts(e)),ue(e)?(d=qe(e,!0),d.x+=e.clientLeft,d.y+=e.clientTop):s&&(d.x=Gt(s))),{x:a.left+c.scrollLeft-d.x,y:a.top+c.scrollTop-d.y,width:a.width,height:a.height}}function Pb(t){var e=new Map,n=new Set,i=[];t.forEach(function(s){e.set(s.name,s)});function o(s){n.add(s.name);var a=[].concat(s.requires||[],s.requiresIfExists||[]);a.forEach(function(c){if(!n.has(c)){var d=e.get(c);d&&o(d)}}),i.push(s)}return t.forEach(function(s){n.has(s.name)||o(s)}),i}function is(t){var e=Pb(t);return Uo.reduce(function(n,i){return n.concat(e.filter(function(o){return o.phase===i}))},[])}function rs(t){var e;return function(){return e||(e=new Promise(function(n){Promise.resolve().then(function(){e=void 0,n(t())})})),e}}function os(t){var e=t.reduce(function(n,i){var o=n[i.name];return n[i.name]=o?Object.assign({},o,i,{options:Object.assign({},o.options,i.options),data:Object.assign({},o.data,i.data)}):i,n},{});return Object.keys(e).map(function(n){return e[n]})}var uc={placement:"bottom",modifiers:[],strategy:"absolute"};function dc(){for(var t=arguments.length,e=new Array(t),n=0;nn.matches(e))},parents(t,e){let n=[],i=t.parentNode;for(;i&&i.nodeType===Node.ELEMENT_NODE&&i.nodeType!==jb;)i.matches(e)&&n.push(i),i=i.parentNode;return n},prev(t,e){let n=t.previousElementSibling;for(;n;){if(n.matches(e))return[n];n=n.previousElementSibling}return[]},next(t,e){let n=t.nextElementSibling;for(;n;){if(n.matches(e))return[n];n=n.nextElementSibling}return[]}},Hb=1e6,qb=1e3,ss="transitionend",$b=t=>t==null?`${t}`:{}.toString.call(t).match(/\s([a-z]+)/i)[1].toLowerCase(),pc=t=>{do t+=Math.floor(Math.random()*Hb);while(document.getElementById(t));return t},mc=t=>{let e=t.getAttribute("data-bs-target");if(!e||e==="#"){let n=t.getAttribute("href");if(!n||!n.includes("#")&&!n.startsWith("."))return null;n.includes("#")&&!n.startsWith("#")&&(n=`#${n.split("#")[1]}`),e=n&&n!=="#"?n.trim():null}return e},as=t=>{let e=mc(t);return e&&document.querySelector(e)?e:null},Mt=t=>{let e=mc(t);return e?document.querySelector(e):null},Bb=t=>{if(!t)return 0;let{transitionDuration:e,transitionDelay:n}=window.getComputedStyle(t),i=Number.parseFloat(e),o=Number.parseFloat(n);return!i&&!o?0:(e=e.split(",")[0],n=n.split(",")[0],(Number.parseFloat(e)+Number.parseFloat(n))*qb)},gc=t=>{t.dispatchEvent(new Event(ss))},It=t=>!t||typeof t!="object"?!1:(typeof t.jquery!="undefined"&&(t=t[0]),typeof t.nodeType!="undefined"),Mn=t=>It(t)?t.jquery?t[0]:t:typeof t=="string"&&t.length>0?F.findOne(t):null,vt=(t,e,n)=>{Object.keys(n).forEach(i=>{let o=n[i],s=e[i],a=s&&It(s)?"element":$b(s);if(!new RegExp(o).test(a))throw new TypeError(`${t.toUpperCase()}: Option "${i}" provided type "${a}" but expected type "${o}".`)})},pr=t=>!It(t)||t.getClientRects().length===0?!1:getComputedStyle(t).getPropertyValue("visibility")==="visible",In=t=>!t||t.nodeType!==Node.ELEMENT_NODE||t.classList.contains("disabled")?!0:typeof t.disabled!="undefined"?t.disabled:t.hasAttribute("disabled")&&t.getAttribute("disabled")!=="false",vc=t=>{if(!document.documentElement.attachShadow)return null;if(typeof t.getRootNode=="function"){let e=t.getRootNode();return e instanceof ShadowRoot?e:null}return t instanceof ShadowRoot?t:t.parentNode?vc(t.parentNode):null},mr=()=>{},kn=t=>t.offsetHeight,bc=()=>{let{jQuery:t}=window;return t&&!document.body.hasAttribute("data-bs-no-jquery")?t:null},ls=[],Fb=t=>{document.readyState==="loading"?(ls.length||document.addEventListener("DOMContentLoaded",()=>{ls.forEach(e=>e())}),ls.push(t)):t()},De=()=>document.documentElement.dir==="rtl",Be=t=>{Fb(()=>{let e=bc();if(e){let n=t.NAME,i=e.fn[n];e.fn[n]=t.jQueryInterface,e.fn[n].Constructor=t,e.fn[n].noConflict=()=>(e.fn[n]=i,t.jQueryInterface)}})},Jt=t=>{typeof t=="function"&&t()},yc=(t,e,n=!0)=>{if(!n){Jt(t);return}let i=5,o=Bb(e)+i,s=!1,a=({target:c})=>{c===e&&(s=!0,e.removeEventListener(ss,a),Jt(t))};e.addEventListener(ss,a),setTimeout(()=>{s||gc(e)},o)},Ec=(t,e,n,i)=>{let o=t.indexOf(e);if(o===-1)return t[!n&&i?t.length-1:0];let s=t.length;return o+=n?1:-1,i&&(o=(o+s)%s),t[Math.max(0,Math.min(o,s-1))]},zb=/[^.]*(?=\..*)\.|.*/,Wb=/\..*/,Vb=/::\d+$/,cs={},_c=1,Yb={mouseenter:"mouseover",mouseleave:"mouseout"},Ub=/^(mouseenter|mouseleave)/i,Sc=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function wc(t,e){return e&&`${e}::${_c++}`||t.uidEvent||_c++}function Tc(t){let e=wc(t);return t.uidEvent=e,cs[e]=cs[e]||{},cs[e]}function Kb(t,e){return function n(i){return i.delegateTarget=t,n.oneOff&&C.off(t,i.type,e),e.apply(t,[i])}}function Gb(t,e,n){return function i(o){let s=t.querySelectorAll(e);for(let{target:a}=o;a&&a!==this;a=a.parentNode)for(let c=s.length;c--;)if(s[c]===a)return o.delegateTarget=a,i.oneOff&&C.off(t,o.type,e,n),n.apply(a,[o]);return null}}function xc(t,e,n=null){let i=Object.keys(t);for(let o=0,s=i.length;ofunction(v){if(!v.relatedTarget||v.relatedTarget!==v.delegateTarget&&!v.delegateTarget.contains(v.relatedTarget))return g.call(this,v)};i?i=p(i):n=p(n)}let[s,a,c]=Oc(e,n,i),d=Tc(t),u=d[c]||(d[c]={}),l=xc(u,a,s?n:null);if(l){l.oneOff=l.oneOff&&o;return}let m=wc(a,e.replace(zb,"")),f=s?Gb(t,n,i):Kb(t,n);f.delegationSelector=s?n:null,f.originalHandler=a,f.oneOff=o,f.uidEvent=m,u[m]=f,t.addEventListener(c,f,s)}function us(t,e,n,i,o){let s=xc(e[n],i,o);!s||(t.removeEventListener(n,s,Boolean(o)),delete e[n][s.uidEvent])}function Xb(t,e,n,i){let o=e[n]||{};Object.keys(o).forEach(s=>{if(s.includes(i)){let a=o[s];us(t,e,n,a.originalHandler,a.delegationSelector)}})}function Cc(t){return t=t.replace(Wb,""),Yb[t]||t}var C={on(t,e,n,i){Ac(t,e,n,i,!1)},one(t,e,n,i){Ac(t,e,n,i,!0)},off(t,e,n,i){if(typeof e!="string"||!t)return;let[o,s,a]=Oc(e,n,i),c=a!==e,d=Tc(t),u=e.startsWith(".");if(typeof s!="undefined"){if(!d||!d[a])return;us(t,d,a,s,o?n:null);return}u&&Object.keys(d).forEach(m=>{Xb(t,d,m,e.slice(1))});let l=d[a]||{};Object.keys(l).forEach(m=>{let f=m.replace(Vb,"");if(!c||e.includes(f)){let p=l[m];us(t,d,a,p.originalHandler,p.delegationSelector)}})},trigger(t,e,n){if(typeof e!="string"||!t)return null;let i=bc(),o=Cc(e),s=e!==o,a=Sc.has(o),c,d=!0,u=!0,l=!1,m=null;return s&&i&&(c=i.Event(e,n),i(t).trigger(c),d=!c.isPropagationStopped(),u=!c.isImmediatePropagationStopped(),l=c.isDefaultPrevented()),a?(m=document.createEvent("HTMLEvents"),m.initEvent(o,d,!0)):m=new CustomEvent(e,{bubbles:d,cancelable:!0}),typeof n!="undefined"&&Object.keys(n).forEach(f=>{Object.defineProperty(m,f,{get(){return n[f]}})}),l&&m.preventDefault(),u&&t.dispatchEvent(m),m.defaultPrevented&&typeof c!="undefined"&&c.preventDefault(),m}},kt=new Map,Zt={set(t,e,n){kt.has(t)||kt.set(t,new Map);let i=kt.get(t);if(!i.has(e)&&i.size!==0){console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(i.keys())[0]}.`);return}i.set(e,n)},get(t,e){return kt.has(t)&&kt.get(t).get(e)||null},remove(t,e){if(!kt.has(t))return;let n=kt.get(t);n.delete(e),n.size===0&&kt.delete(t)}},Qb="5.0.2",Fe=class{constructor(e){e=Mn(e),!!e&&(this._element=e,Zt.set(this._element,this.constructor.DATA_KEY,this))}dispose(){Zt.remove(this._element,this.constructor.DATA_KEY),C.off(this._element,this.constructor.EVENT_KEY),Object.getOwnPropertyNames(this).forEach(e=>{this[e]=null})}_queueCallback(e,n,i=!0){yc(e,n,i)}static getInstance(e){return Zt.get(e,this.DATA_KEY)}static getOrCreateInstance(e,n={}){return this.getInstance(e)||new this(e,typeof n=="object"?n:null)}static get VERSION(){return Qb}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}},Jb="alert",Zb="bs.alert",ds=`.${Zb}`,ey=".data-api",ty='[data-bs-dismiss="alert"]',ny=`close${ds}`,iy=`closed${ds}`,ry=`click${ds}${ey}`,oy="alert",sy="fade",ay="show",Pn=class extends Fe{static get NAME(){return Jb}close(e){let n=e?this._getRootElement(e):this._element,i=this._triggerCloseEvent(n);i===null||i.defaultPrevented||this._removeElement(n)}_getRootElement(e){return Mt(e)||e.closest(`.${oy}`)}_triggerCloseEvent(e){return C.trigger(e,ny)}_removeElement(e){e.classList.remove(ay);let n=e.classList.contains(sy);this._queueCallback(()=>this._destroyElement(e),e,n)}_destroyElement(e){e.remove(),C.trigger(e,iy)}static jQueryInterface(e){return this.each(function(){let n=Pn.getOrCreateInstance(this);e==="close"&&n[e](this)})}static handleDismiss(e){return function(n){n&&n.preventDefault(),e.close(this)}}};C.on(document,ry,ty,Pn.handleDismiss(new Pn));Be(Pn);var ly="button",cy="bs.button",uy=`.${cy}`,dy=".data-api",fy="active",Lc='[data-bs-toggle="button"]',hy=`click${uy}${dy}`,di=class extends Fe{static get NAME(){return ly}toggle(){this._element.setAttribute("aria-pressed",this._element.classList.toggle(fy))}static jQueryInterface(e){return this.each(function(){let n=di.getOrCreateInstance(this);e==="toggle"&&n[e]()})}};C.on(document,hy,Lc,t=>{t.preventDefault();let e=t.target.closest(Lc);di.getOrCreateInstance(e).toggle()});Be(di);function Dc(t){return t==="true"?!0:t==="false"?!1:t===Number(t).toString()?Number(t):t===""||t==="null"?null:t}function fs(t){return t.replace(/[A-Z]/g,e=>`-${e.toLowerCase()}`)}var be={setDataAttribute(t,e,n){t.setAttribute(`data-bs-${fs(e)}`,n)},removeDataAttribute(t,e){t.removeAttribute(`data-bs-${fs(e)}`)},getDataAttributes(t){if(!t)return{};let e={};return Object.keys(t.dataset).filter(n=>n.startsWith("bs")).forEach(n=>{let i=n.replace(/^bs/,"");i=i.charAt(0).toLowerCase()+i.slice(1,i.length),e[i]=Dc(t.dataset[n])}),e},getDataAttribute(t,e){return Dc(t.getAttribute(`data-bs-${fs(e)}`))},offset(t){let e=t.getBoundingClientRect();return{top:e.top+document.body.scrollTop,left:e.left+document.body.scrollLeft}},position(t){return{top:t.offsetTop,left:t.offsetLeft}}},Mc="carousel",py="bs.carousel",Ne=`.${py}`,Ic=".data-api",my="ArrowLeft",gy="ArrowRight",vy=500,by=40,kc={interval:5e3,keyboard:!0,slide:!1,pause:"hover",wrap:!0,touch:!0},yy={interval:"(number|boolean)",keyboard:"boolean",slide:"(boolean|string)",pause:"(string|boolean)",wrap:"boolean",touch:"boolean"},en="next",tn="prev",nn="left",fi="right",Ey={[my]:fi,[gy]:nn},_y=`slide${Ne}`,Pc=`slid${Ne}`,Sy=`keydown${Ne}`,wy=`mouseenter${Ne}`,Ty=`mouseleave${Ne}`,xy=`touchstart${Ne}`,Oy=`touchmove${Ne}`,Ay=`touchend${Ne}`,Cy=`pointerdown${Ne}`,Ly=`pointerup${Ne}`,Dy=`dragstart${Ne}`,My=`load${Ne}${Ic}`,Iy=`click${Ne}${Ic}`,ky="carousel",rn="active",Py="slide",Ny="carousel-item-end",Ry="carousel-item-start",jy="carousel-item-next",Hy="carousel-item-prev",qy="pointer-event",$y=".active",gr=".active.carousel-item",By=".carousel-item",Fy=".carousel-item img",zy=".carousel-item-next, .carousel-item-prev",Wy=".carousel-indicators",Vy="[data-bs-target]",Yy="[data-bs-slide], [data-bs-slide-to]",Uy='[data-bs-ride="carousel"]',Nc="touch",Rc="pen",Je=class extends Fe{constructor(e,n){super(e);this._items=null,this._interval=null,this._activeElement=null,this._isPaused=!1,this._isSliding=!1,this.touchTimeout=null,this.touchStartX=0,this.touchDeltaX=0,this._config=this._getConfig(n),this._indicatorsElement=F.findOne(Wy,this._element),this._touchSupported="ontouchstart"in document.documentElement||navigator.maxTouchPoints>0,this._pointerEvent=Boolean(window.PointerEvent),this._addEventListeners()}static get Default(){return kc}static get NAME(){return Mc}next(){this._slide(en)}nextWhenVisible(){!document.hidden&&pr(this._element)&&this.next()}prev(){this._slide(tn)}pause(e){e||(this._isPaused=!0),F.findOne(zy,this._element)&&(gc(this._element),this.cycle(!0)),clearInterval(this._interval),this._interval=null}cycle(e){e||(this._isPaused=!1),this._interval&&(clearInterval(this._interval),this._interval=null),this._config&&this._config.interval&&!this._isPaused&&(this._updateInterval(),this._interval=setInterval((document.visibilityState?this.nextWhenVisible:this.next).bind(this),this._config.interval))}to(e){this._activeElement=F.findOne(gr,this._element);let n=this._getItemIndex(this._activeElement);if(e>this._items.length-1||e<0)return;if(this._isSliding){C.one(this._element,Pc,()=>this.to(e));return}if(n===e){this.pause(),this.cycle();return}let i=e>n?en:tn;this._slide(i,this._items[e])}_getConfig(e){return e=K(K(K({},kc),be.getDataAttributes(this._element)),typeof e=="object"?e:{}),vt(Mc,e,yy),e}_handleSwipe(){let e=Math.abs(this.touchDeltaX);if(e<=by)return;let n=e/this.touchDeltaX;this.touchDeltaX=0,!!n&&this._slide(n>0?fi:nn)}_addEventListeners(){this._config.keyboard&&C.on(this._element,Sy,e=>this._keydown(e)),this._config.pause==="hover"&&(C.on(this._element,wy,e=>this.pause(e)),C.on(this._element,Ty,e=>this.cycle(e))),this._config.touch&&this._touchSupported&&this._addTouchEventListeners()}_addTouchEventListeners(){let e=o=>{this._pointerEvent&&(o.pointerType===Rc||o.pointerType===Nc)?this.touchStartX=o.clientX:this._pointerEvent||(this.touchStartX=o.touches[0].clientX)},n=o=>{this.touchDeltaX=o.touches&&o.touches.length>1?0:o.touches[0].clientX-this.touchStartX},i=o=>{this._pointerEvent&&(o.pointerType===Rc||o.pointerType===Nc)&&(this.touchDeltaX=o.clientX-this.touchStartX),this._handleSwipe(),this._config.pause==="hover"&&(this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout(s=>this.cycle(s),vy+this._config.interval))};F.find(Fy,this._element).forEach(o=>{C.on(o,Dy,s=>s.preventDefault())}),this._pointerEvent?(C.on(this._element,Cy,o=>e(o)),C.on(this._element,Ly,o=>i(o)),this._element.classList.add(qy)):(C.on(this._element,xy,o=>e(o)),C.on(this._element,Oy,o=>n(o)),C.on(this._element,Ay,o=>i(o)))}_keydown(e){if(/input|textarea/i.test(e.target.tagName))return;let n=Ey[e.key];n&&(e.preventDefault(),this._slide(n))}_getItemIndex(e){return this._items=e&&e.parentNode?F.find(By,e.parentNode):[],this._items.indexOf(e)}_getItemByOrder(e,n){let i=e===en;return Ec(this._items,n,i,this._config.wrap)}_triggerSlideEvent(e,n){let i=this._getItemIndex(e),o=this._getItemIndex(F.findOne(gr,this._element));return C.trigger(this._element,_y,{relatedTarget:e,direction:n,from:o,to:i})}_setActiveIndicatorElement(e){if(this._indicatorsElement){let n=F.findOne($y,this._indicatorsElement);n.classList.remove(rn),n.removeAttribute("aria-current");let i=F.find(Vy,this._indicatorsElement);for(let o=0;o{C.trigger(this._element,Pc,{relatedTarget:a,direction:f,from:s,to:c})};if(this._element.classList.contains(Py)){a.classList.add(m),kn(a),o.classList.add(l),a.classList.add(l);let v=()=>{a.classList.remove(l,m),a.classList.add(rn),o.classList.remove(rn,m,l),this._isSliding=!1,setTimeout(g,0)};this._queueCallback(v,o,!0)}else o.classList.remove(rn),a.classList.add(rn),this._isSliding=!1,g();d&&this.cycle()}_directionToOrder(e){return[fi,nn].includes(e)?De()?e===nn?tn:en:e===nn?en:tn:e}_orderToDirection(e){return[en,tn].includes(e)?De()?e===tn?nn:fi:e===tn?fi:nn:e}static carouselInterface(e,n){let i=Je.getOrCreateInstance(e,n),{_config:o}=i;typeof n=="object"&&(o=K(K({},o),n));let s=typeof n=="string"?n:o.slide;if(typeof n=="number")i.to(n);else if(typeof s=="string"){if(typeof i[s]=="undefined")throw new TypeError(`No method named "${s}"`);i[s]()}else o.interval&&o.ride&&(i.pause(),i.cycle())}static jQueryInterface(e){return this.each(function(){Je.carouselInterface(this,e)})}static dataApiClickHandler(e){let n=Mt(this);if(!n||!n.classList.contains(ky))return;let i=K(K({},be.getDataAttributes(n)),be.getDataAttributes(this)),o=this.getAttribute("data-bs-slide-to");o&&(i.interval=!1),Je.carouselInterface(n,i),o&&Je.getInstance(n).to(o),e.preventDefault()}};C.on(document,Iy,Yy,Je.dataApiClickHandler);C.on(window,My,()=>{let t=F.find(Uy);for(let e=0,n=t.length;eu===this._element);c!==null&&d.length&&(this._selector=c,this._triggerArray.push(a))}this._parent=this._config.parent?this._getParent():null,this._config.parent||this._addAriaAndCollapsedClass(this._element,this._triggerArray),this._config.toggle&&this.toggle()}static get Default(){return hs}static get NAME(){return jc}toggle(){this._element.classList.contains(on)?this.hide():this.show()}show(){if(this._isTransitioning||this._element.classList.contains(on))return;let e,n;this._parent&&(e=F.find(nE,this._parent).filter(u=>typeof this._config.parent=="string"?u.getAttribute("data-bs-parent")===this._config.parent:u.classList.contains(pi)),e.length===0&&(e=null));let i=F.findOne(this._selector);if(e){let u=e.find(l=>i!==l);if(n=u?Me.getInstance(u):null,n&&n._isTransitioning)return}if(C.trigger(this._element,Xy).defaultPrevented)return;e&&e.forEach(u=>{i!==u&&Me.collapseInterface(u,"hide"),n||Zt.set(u,Hc,null)});let s=this._getDimension();this._element.classList.remove(pi),this._element.classList.add(vr),this._element.style[s]=0,this._triggerArray.length&&this._triggerArray.forEach(u=>{u.classList.remove(br),u.setAttribute("aria-expanded",!0)}),this.setTransitioning(!0);let a=()=>{this._element.classList.remove(vr),this._element.classList.add(pi,on),this._element.style[s]="",this.setTransitioning(!1),C.trigger(this._element,Qy)},d=`scroll${s[0].toUpperCase()+s.slice(1)}`;this._queueCallback(a,this._element,!0),this._element.style[s]=`${this._element[d]}px`}hide(){if(this._isTransitioning||!this._element.classList.contains(on)||C.trigger(this._element,Jy).defaultPrevented)return;let n=this._getDimension();this._element.style[n]=`${this._element.getBoundingClientRect()[n]}px`,kn(this._element),this._element.classList.add(vr),this._element.classList.remove(pi,on);let i=this._triggerArray.length;if(i>0)for(let s=0;s{this.setTransitioning(!1),this._element.classList.remove(vr),this._element.classList.add(pi),C.trigger(this._element,Zy)};this._element.style[n]="",this._queueCallback(o,this._element,!0)}setTransitioning(e){this._isTransitioning=e}_getConfig(e){return e=K(K({},hs),e),e.toggle=Boolean(e.toggle),vt(jc,e,Gy),e}_getDimension(){return this._element.classList.contains(qc)?qc:tE}_getParent(){let{parent:e}=this._config;e=Mn(e);let n=`${mi}[data-bs-parent="${e}"]`;return F.find(n,e).forEach(i=>{let o=Mt(i);this._addAriaAndCollapsedClass(o,[i])}),e}_addAriaAndCollapsedClass(e,n){if(!e||!n.length)return;let i=e.classList.contains(on);n.forEach(o=>{i?o.classList.remove(br):o.classList.add(br),o.setAttribute("aria-expanded",i)})}static collapseInterface(e,n){let i=Me.getInstance(e),o=K(K(K({},hs),be.getDataAttributes(e)),typeof n=="object"&&n?n:{});if(!i&&o.toggle&&typeof n=="string"&&/show|hide/.test(n)&&(o.toggle=!1),i||(i=new Me(e,o)),typeof n=="string"){if(typeof i[n]=="undefined")throw new TypeError(`No method named "${n}"`);i[n]()}}static jQueryInterface(e){return this.each(function(){Me.collapseInterface(this,e)})}};C.on(document,eE,mi,function(t){(t.target.tagName==="A"||t.delegateTarget&&t.delegateTarget.tagName==="A")&&t.preventDefault();let e=be.getDataAttributes(this),n=as(this);F.find(n).forEach(o=>{let s=Me.getInstance(o),a;s?(s._parent===null&&typeof e.parent=="string"&&(s._config.parent=e.parent,s._parent=s._getParent()),a="toggle"):a=e,Me.collapseInterface(o,a)})});Be(Me);var ps="dropdown",iE="bs.dropdown",Pt=`.${iE}`,ms=".data-api",yr="Escape",$c="Space",Bc="Tab",gs="ArrowUp",Er="ArrowDown",rE=2,oE=new RegExp(`${gs}|${Er}|${yr}`),sE=`hide${Pt}`,aE=`hidden${Pt}`,lE=`show${Pt}`,cE=`shown${Pt}`,uE=`click${Pt}`,Fc=`click${Pt}${ms}`,zc=`keydown${Pt}${ms}`,dE=`keyup${Pt}${ms}`,bt="show",fE="dropup",hE="dropend",pE="dropstart",mE="navbar",gi='[data-bs-toggle="dropdown"]',vs=".dropdown-menu",gE=".navbar-nav",vE=".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",bE=De()?"top-end":"top-start",yE=De()?"top-start":"top-end",EE=De()?"bottom-end":"bottom-start",_E=De()?"bottom-start":"bottom-end",SE=De()?"left-start":"right-start",wE=De()?"right-start":"left-start",TE={offset:[0,2],boundary:"clippingParents",reference:"toggle",display:"dynamic",popperConfig:null,autoClose:!0},xE={offset:"(array|string|function)",boundary:"(string|element)",reference:"(string|element|object)",display:"string",popperConfig:"(null|object|function)",autoClose:"(boolean|string)"},Ce=class extends Fe{constructor(e,n){super(e);this._popper=null,this._config=this._getConfig(n),this._menu=this._getMenuElement(),this._inNavbar=this._detectNavbar(),this._addEventListeners()}static get Default(){return TE}static get DefaultType(){return xE}static get NAME(){return ps}toggle(){if(In(this._element))return;if(this._element.classList.contains(bt)){this.hide();return}this.show()}show(){if(In(this._element)||this._menu.classList.contains(bt))return;let e=Ce.getParentFromElement(this._element),n={relatedTarget:this._element};if(!C.trigger(this._element,lE,n).defaultPrevented){if(this._inNavbar)be.setDataAttribute(this._menu,"popper","none");else{if(typeof hr=="undefined")throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org)");let o=this._element;this._config.reference==="parent"?o=e:It(this._config.reference)?o=Mn(this._config.reference):typeof this._config.reference=="object"&&(o=this._config.reference);let s=this._getPopperConfig(),a=s.modifiers.find(c=>c.name==="applyStyles"&&c.enabled===!1);this._popper=fr(o,this._menu,s),a&&be.setDataAttribute(this._menu,"popper","static")}"ontouchstart"in document.documentElement&&!e.closest(gE)&&[].concat(...document.body.children).forEach(o=>C.on(o,"mouseover",mr)),this._element.focus(),this._element.setAttribute("aria-expanded",!0),this._menu.classList.toggle(bt),this._element.classList.toggle(bt),C.trigger(this._element,cE,n)}}hide(){if(In(this._element)||!this._menu.classList.contains(bt))return;let e={relatedTarget:this._element};this._completeHide(e)}dispose(){this._popper&&this._popper.destroy(),super.dispose()}update(){this._inNavbar=this._detectNavbar(),this._popper&&this._popper.update()}_addEventListeners(){C.on(this._element,uE,e=>{e.preventDefault(),this.toggle()})}_completeHide(e){C.trigger(this._element,sE,e).defaultPrevented||("ontouchstart"in document.documentElement&&[].concat(...document.body.children).forEach(i=>C.off(i,"mouseover",mr)),this._popper&&this._popper.destroy(),this._menu.classList.remove(bt),this._element.classList.remove(bt),this._element.setAttribute("aria-expanded","false"),be.removeDataAttribute(this._menu,"popper"),C.trigger(this._element,aE,e))}_getConfig(e){if(e=K(K(K({},this.constructor.Default),be.getDataAttributes(this._element)),e),vt(ps,e,this.constructor.DefaultType),typeof e.reference=="object"&&!It(e.reference)&&typeof e.reference.getBoundingClientRect!="function")throw new TypeError(`${ps.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`);return e}_getMenuElement(){return F.next(this._element,vs)[0]}_getPlacement(){let e=this._element.parentNode;if(e.classList.contains(hE))return SE;if(e.classList.contains(pE))return wE;let n=getComputedStyle(this._menu).getPropertyValue("--bs-position").trim()==="end";return e.classList.contains(fE)?n?yE:bE:n?_E:EE}_detectNavbar(){return this._element.closest(`.${mE}`)!==null}_getOffset(){let{offset:e}=this._config;return typeof e=="string"?e.split(",").map(n=>Number.parseInt(n,10)):typeof e=="function"?n=>e(n,this._element):e}_getPopperConfig(){let e={placement:this._getPlacement(),modifiers:[{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"offset",options:{offset:this._getOffset()}}]};return this._config.display==="static"&&(e.modifiers=[{name:"applyStyles",enabled:!1}]),K(K({},e),typeof this._config.popperConfig=="function"?this._config.popperConfig(e):this._config.popperConfig)}_selectMenuItem({key:e,target:n}){let i=F.find(vE,this._menu).filter(pr);!i.length||Ec(i,n,e===Er,!i.includes(n)).focus()}static dropdownInterface(e,n){let i=Ce.getOrCreateInstance(e,n);if(typeof n=="string"){if(typeof i[n]=="undefined")throw new TypeError(`No method named "${n}"`);i[n]()}}static jQueryInterface(e){return this.each(function(){Ce.dropdownInterface(this,e)})}static clearMenus(e){if(e&&(e.button===rE||e.type==="keyup"&&e.key!==Bc))return;let n=F.find(gi);for(let i=0,o=n.length;ithis.matches(gi)?this:F.prev(this,gi)[0];if(e.key===yr){i().focus(),Ce.clearMenus();return}if(e.key===gs||e.key===Er){n||i().click(),Ce.getInstance(i())._selectMenuItem(e);return}(!n||e.key===$c)&&Ce.clearMenus()}};C.on(document,zc,gi,Ce.dataApiKeydownHandler);C.on(document,zc,vs,Ce.dataApiKeydownHandler);C.on(document,Fc,Ce.clearMenus);C.on(document,dE,Ce.clearMenus);C.on(document,Fc,gi,function(t){t.preventDefault(),Ce.dropdownInterface(this)});Be(Ce);var Wc=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",Vc=".sticky-top",_r=class{constructor(){this._element=document.body}getWidth(){let e=document.documentElement.clientWidth;return Math.abs(window.innerWidth-e)}hide(){let e=this.getWidth();this._disableOverFlow(),this._setElementAttributes(this._element,"paddingRight",n=>n+e),this._setElementAttributes(Wc,"paddingRight",n=>n+e),this._setElementAttributes(Vc,"marginRight",n=>n-e)}_disableOverFlow(){this._saveInitialAttribute(this._element,"overflow"),this._element.style.overflow="hidden"}_setElementAttributes(e,n,i){let o=this.getWidth(),s=a=>{if(a!==this._element&&window.innerWidth>a.clientWidth+o)return;this._saveInitialAttribute(a,n);let c=window.getComputedStyle(a)[n];a.style[n]=`${i(Number.parseFloat(c))}px`};this._applyManipulationCallback(e,s)}reset(){this._resetElementAttributes(this._element,"overflow"),this._resetElementAttributes(this._element,"paddingRight"),this._resetElementAttributes(Wc,"paddingRight"),this._resetElementAttributes(Vc,"marginRight")}_saveInitialAttribute(e,n){let i=e.style[n];i&&be.setDataAttribute(e,n,i)}_resetElementAttributes(e,n){let i=o=>{let s=be.getDataAttribute(o,n);typeof s=="undefined"?o.style.removeProperty(n):(be.removeDataAttribute(o,n),o.style[n]=s)};this._applyManipulationCallback(e,i)}_applyManipulationCallback(e,n){It(e)?n(e):F.find(e,this._element).forEach(n)}isOverflowing(){return this.getWidth()>0}},OE={isVisible:!0,isAnimated:!1,rootElement:"body",clickCallback:null},AE={isVisible:"boolean",isAnimated:"boolean",rootElement:"(element|string)",clickCallback:"(function|null)"},Yc="backdrop",CE="modal-backdrop",LE="fade",Uc="show",Kc=`mousedown.bs.${Yc}`,bs=class{constructor(e){this._config=this._getConfig(e),this._isAppended=!1,this._element=null}show(e){if(!this._config.isVisible){Jt(e);return}this._append(),this._config.isAnimated&&kn(this._getElement()),this._getElement().classList.add(Uc),this._emulateAnimation(()=>{Jt(e)})}hide(e){if(!this._config.isVisible){Jt(e);return}this._getElement().classList.remove(Uc),this._emulateAnimation(()=>{this.dispose(),Jt(e)})}_getElement(){if(!this._element){let e=document.createElement("div");e.className=CE,this._config.isAnimated&&e.classList.add(LE),this._element=e}return this._element}_getConfig(e){return e=K(K({},OE),typeof e=="object"?e:{}),e.rootElement=Mn(e.rootElement),vt(Yc,e,AE),e}_append(){this._isAppended||(this._config.rootElement.appendChild(this._getElement()),C.on(this._getElement(),Kc,()=>{Jt(this._config.clickCallback)}),this._isAppended=!0)}dispose(){!this._isAppended||(C.off(this._element,Kc),this._element.remove(),this._isAppended=!1)}_emulateAnimation(e){yc(e,this._getElement(),this._config.isAnimated)}},Gc="modal",DE="bs.modal",Re=`.${DE}`,ME=".data-api",Xc="Escape",Qc={backdrop:!0,keyboard:!0,focus:!0},IE={backdrop:"(boolean|string)",keyboard:"boolean",focus:"boolean"},kE=`hide${Re}`,PE=`hidePrevented${Re}`,Jc=`hidden${Re}`,Zc=`show${Re}`,NE=`shown${Re}`,Sr=`focusin${Re}`,eu=`resize${Re}`,ys=`click.dismiss${Re}`,tu=`keydown.dismiss${Re}`,RE=`mouseup.dismiss${Re}`,nu=`mousedown.dismiss${Re}`,jE=`click${Re}${ME}`,iu="modal-open",HE="fade",ru="show",Es="modal-static",qE=".modal-dialog",$E=".modal-body",BE='[data-bs-toggle="modal"]',FE='[data-bs-dismiss="modal"]',Nt=class extends Fe{constructor(e,n){super(e);this._config=this._getConfig(n),this._dialog=F.findOne(qE,this._element),this._backdrop=this._initializeBackDrop(),this._isShown=!1,this._ignoreBackdropClick=!1,this._isTransitioning=!1,this._scrollBar=new _r}static get Default(){return Qc}static get NAME(){return Gc}toggle(e){return this._isShown?this.hide():this.show(e)}show(e){this._isShown||this._isTransitioning||C.trigger(this._element,Zc,{relatedTarget:e}).defaultPrevented||(this._isShown=!0,this._isAnimated()&&(this._isTransitioning=!0),this._scrollBar.hide(),document.body.classList.add(iu),this._adjustDialog(),this._setEscapeEvent(),this._setResizeEvent(),C.on(this._element,ys,FE,i=>this.hide(i)),C.on(this._dialog,nu,()=>{C.one(this._element,RE,i=>{i.target===this._element&&(this._ignoreBackdropClick=!0)})}),this._showBackdrop(()=>this._showElement(e)))}hide(e){if(e&&["A","AREA"].includes(e.target.tagName)&&e.preventDefault(),!this._isShown||this._isTransitioning||C.trigger(this._element,kE).defaultPrevented)return;this._isShown=!1;let i=this._isAnimated();i&&(this._isTransitioning=!0),this._setEscapeEvent(),this._setResizeEvent(),C.off(document,Sr),this._element.classList.remove(ru),C.off(this._element,ys),C.off(this._dialog,nu),this._queueCallback(()=>this._hideModal(),this._element,i)}dispose(){[window,this._dialog].forEach(e=>C.off(e,Re)),this._backdrop.dispose(),super.dispose(),C.off(document,Sr)}handleUpdate(){this._adjustDialog()}_initializeBackDrop(){return new bs({isVisible:Boolean(this._config.backdrop),isAnimated:this._isAnimated()})}_getConfig(e){return e=K(K(K({},Qc),be.getDataAttributes(this._element)),typeof e=="object"?e:{}),vt(Gc,e,IE),e}_showElement(e){let n=this._isAnimated(),i=F.findOne($E,this._dialog);(!this._element.parentNode||this._element.parentNode.nodeType!==Node.ELEMENT_NODE)&&document.body.appendChild(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.scrollTop=0,i&&(i.scrollTop=0),n&&kn(this._element),this._element.classList.add(ru),this._config.focus&&this._enforceFocus();let o=()=>{this._config.focus&&this._element.focus(),this._isTransitioning=!1,C.trigger(this._element,NE,{relatedTarget:e})};this._queueCallback(o,this._dialog,n)}_enforceFocus(){C.off(document,Sr),C.on(document,Sr,e=>{document!==e.target&&this._element!==e.target&&!this._element.contains(e.target)&&this._element.focus()})}_setEscapeEvent(){this._isShown?C.on(this._element,tu,e=>{this._config.keyboard&&e.key===Xc?(e.preventDefault(),this.hide()):!this._config.keyboard&&e.key===Xc&&this._triggerBackdropTransition()}):C.off(this._element,tu)}_setResizeEvent(){this._isShown?C.on(window,eu,()=>this._adjustDialog()):C.off(window,eu)}_hideModal(){this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._backdrop.hide(()=>{document.body.classList.remove(iu),this._resetAdjustments(),this._scrollBar.reset(),C.trigger(this._element,Jc)})}_showBackdrop(e){C.on(this._element,ys,n=>{if(this._ignoreBackdropClick){this._ignoreBackdropClick=!1;return}n.target===n.currentTarget&&(this._config.backdrop===!0?this.hide():this._config.backdrop==="static"&&this._triggerBackdropTransition())}),this._backdrop.show(e)}_isAnimated(){return this._element.classList.contains(HE)}_triggerBackdropTransition(){if(C.trigger(this._element,PE).defaultPrevented)return;let{classList:n,scrollHeight:i,style:o}=this._element,s=i>document.documentElement.clientHeight;!s&&o.overflowY==="hidden"||n.contains(Es)||(s||(o.overflowY="hidden"),n.add(Es),this._queueCallback(()=>{n.remove(Es),s||this._queueCallback(()=>{o.overflowY=""},this._dialog)},this._dialog),this._element.focus())}_adjustDialog(){let e=this._element.scrollHeight>document.documentElement.clientHeight,n=this._scrollBar.getWidth(),i=n>0;(!i&&e&&!De()||i&&!e&&De())&&(this._element.style.paddingLeft=`${n}px`),(i&&!e&&!De()||!i&&e&&De())&&(this._element.style.paddingRight=`${n}px`)}_resetAdjustments(){this._element.style.paddingLeft="",this._element.style.paddingRight=""}static jQueryInterface(e,n){return this.each(function(){let i=Nt.getOrCreateInstance(this,e);if(typeof e=="string"){if(typeof i[e]=="undefined")throw new TypeError(`No method named "${e}"`);i[e](n)}})}};C.on(document,jE,BE,function(t){let e=Mt(this);["A","AREA"].includes(this.tagName)&&t.preventDefault(),C.one(e,Zc,i=>{i.defaultPrevented||C.one(e,Jc,()=>{pr(this)&&this.focus()})}),Nt.getOrCreateInstance(e).toggle(this)});Be(Nt);var ou="offcanvas",zE="bs.offcanvas",yt=`.${zE}`,su=".data-api",WE=`load${yt}${su}`,VE="Escape",au={backdrop:!0,keyboard:!0,scroll:!1},YE={backdrop:"boolean",keyboard:"boolean",scroll:"boolean"},lu="show",cu=".offcanvas.show",UE=`show${yt}`,KE=`shown${yt}`,GE=`hide${yt}`,uu=`hidden${yt}`,wr=`focusin${yt}`,XE=`click${yt}${su}`,QE=`click.dismiss${yt}`,JE=`keydown.dismiss${yt}`,ZE='[data-bs-dismiss="offcanvas"]',e_='[data-bs-toggle="offcanvas"]',sn=class extends Fe{constructor(e,n){super(e);this._config=this._getConfig(n),this._isShown=!1,this._backdrop=this._initializeBackDrop(),this._addEventListeners()}static get NAME(){return ou}static get Default(){return au}toggle(e){return this._isShown?this.hide():this.show(e)}show(e){if(this._isShown||C.trigger(this._element,UE,{relatedTarget:e}).defaultPrevented)return;this._isShown=!0,this._element.style.visibility="visible",this._backdrop.show(),this._config.scroll||(new _r().hide(),this._enforceFocusOnElement(this._element)),this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.classList.add(lu);let i=()=>{C.trigger(this._element,KE,{relatedTarget:e})};this._queueCallback(i,this._element,!0)}hide(){if(!this._isShown||C.trigger(this._element,GE).defaultPrevented)return;C.off(document,wr),this._element.blur(),this._isShown=!1,this._element.classList.remove(lu),this._backdrop.hide();let n=()=>{this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._element.style.visibility="hidden",this._config.scroll||new _r().reset(),C.trigger(this._element,uu)};this._queueCallback(n,this._element,!0)}dispose(){this._backdrop.dispose(),super.dispose(),C.off(document,wr)}_getConfig(e){return e=K(K(K({},au),be.getDataAttributes(this._element)),typeof e=="object"?e:{}),vt(ou,e,YE),e}_initializeBackDrop(){return new bs({isVisible:this._config.backdrop,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:()=>this.hide()})}_enforceFocusOnElement(e){C.off(document,wr),C.on(document,wr,n=>{document!==n.target&&e!==n.target&&!e.contains(n.target)&&e.focus()}),e.focus()}_addEventListeners(){C.on(this._element,QE,ZE,()=>this.hide()),C.on(this._element,JE,e=>{this._config.keyboard&&e.key===VE&&this.hide()})}static jQueryInterface(e){return this.each(function(){let n=sn.getOrCreateInstance(this,e);if(typeof e=="string"){if(n[e]===void 0||e.startsWith("_")||e==="constructor")throw new TypeError(`No method named "${e}"`);n[e](this)}})}};C.on(document,XE,e_,function(t){let e=Mt(this);if(["A","AREA"].includes(this.tagName)&&t.preventDefault(),In(this))return;C.one(e,uu,()=>{pr(this)&&this.focus()});let n=F.findOne(cu);n&&n!==e&&sn.getInstance(n).hide(),sn.getOrCreateInstance(e).toggle(this)});C.on(window,WE,()=>F.find(cu).forEach(t=>sn.getOrCreateInstance(t).show()));Be(sn);var t_=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),n_=/^aria-[\w-]*$/i,i_=/^(?:(?:https?|mailto|ftp|tel|file):|[^#&/:?]*(?:[#/?]|$))/i,r_=/^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[\d+/a-z]+=*$/i,o_=(t,e)=>{let n=t.nodeName.toLowerCase();if(e.includes(n))return t_.has(n)?Boolean(i_.test(t.nodeValue)||r_.test(t.nodeValue)):!0;let i=e.filter(o=>o instanceof RegExp);for(let o=0,s=i.length;o{o_(p,f)||u.removeAttribute(p.nodeName)})}return o.body.innerHTML}var fu="tooltip",a_="bs.tooltip",Ze=`.${a_}`,hu="bs-tooltip",l_=new RegExp(`(^|\\s)${hu}\\S+`,"g"),c_=new Set(["sanitize","allowList","sanitizeFn"]),u_={animation:"boolean",template:"string",title:"(string|element|function)",trigger:"string",delay:"(number|object)",html:"boolean",selector:"(string|boolean)",placement:"(string|function)",offset:"(array|string|function)",container:"(string|element|boolean)",fallbackPlacements:"array",boundary:"(string|element)",customClass:"(string|function)",sanitize:"boolean",sanitizeFn:"(null|function)",allowList:"object",popperConfig:"(null|object|function)"},d_={AUTO:"auto",TOP:"top",RIGHT:De()?"left":"right",BOTTOM:"bottom",LEFT:De()?"right":"left"},f_={animation:!0,template:'',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:[0,0],container:!1,fallbackPlacements:["top","right","bottom","left"],boundary:"clippingParents",customClass:"",sanitize:!0,sanitizeFn:null,allowList:s_,popperConfig:null},h_={HIDE:`hide${Ze}`,HIDDEN:`hidden${Ze}`,SHOW:`show${Ze}`,SHOWN:`shown${Ze}`,INSERTED:`inserted${Ze}`,CLICK:`click${Ze}`,FOCUSIN:`focusin${Ze}`,FOCUSOUT:`focusout${Ze}`,MOUSEENTER:`mouseenter${Ze}`,MOUSELEAVE:`mouseleave${Ze}`},Tr="fade",pu="modal",vi="show",bi="show",_s="out",p_=".tooltip-inner",yi="hover",Ss="focus",m_="click",g_="manual",et=class extends Fe{constructor(e,n){if(typeof hr=="undefined")throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(e);this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this._config=this._getConfig(n),this.tip=null,this._setListeners()}static get Default(){return f_}static get NAME(){return fu}static get Event(){return h_}static get DefaultType(){return u_}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(e){if(!!this._isEnabled)if(e){let n=this._initializeOnDelegatedTarget(e);n._activeTrigger.click=!n._activeTrigger.click,n._isWithActiveTrigger()?n._enter(null,n):n._leave(null,n)}else{if(this.getTipElement().classList.contains(vi)){this._leave(null,this);return}this._enter(null,this)}}dispose(){clearTimeout(this._timeout),C.off(this._element.closest(`.${pu}`),"hide.bs.modal",this._hideModalHandler),this.tip&&this.tip.remove(),this._popper&&this._popper.destroy(),super.dispose()}show(){if(this._element.style.display==="none")throw new Error("Please use show on visible elements");if(!(this.isWithContent()&&this._isEnabled))return;let e=C.trigger(this._element,this.constructor.Event.SHOW),n=vc(this._element),i=n===null?this._element.ownerDocument.documentElement.contains(this._element):n.contains(this._element);if(e.defaultPrevented||!i)return;let o=this.getTipElement(),s=pc(this.constructor.NAME);o.setAttribute("id",s),this._element.setAttribute("aria-describedby",s),this.setContent(),this._config.animation&&o.classList.add(Tr);let a=typeof this._config.placement=="function"?this._config.placement.call(this,o,this._element):this._config.placement,c=this._getAttachment(a);this._addAttachmentClass(c);let{container:d}=this._config;Zt.set(o,this.constructor.DATA_KEY,this),this._element.ownerDocument.documentElement.contains(this.tip)||(d.appendChild(o),C.trigger(this._element,this.constructor.Event.INSERTED)),this._popper?this._popper.update():this._popper=fr(this._element,o,this._getPopperConfig(c)),o.classList.add(vi);let u=typeof this._config.customClass=="function"?this._config.customClass():this._config.customClass;u&&o.classList.add(...u.split(" ")),"ontouchstart"in document.documentElement&&[].concat(...document.body.children).forEach(f=>{C.on(f,"mouseover",mr)});let l=()=>{let f=this._hoverState;this._hoverState=null,C.trigger(this._element,this.constructor.Event.SHOWN),f===_s&&this._leave(null,this)},m=this.tip.classList.contains(Tr);this._queueCallback(l,this.tip,m)}hide(){if(!this._popper)return;let e=this.getTipElement(),n=()=>{this._isWithActiveTrigger()||(this._hoverState!==bi&&e.remove(),this._cleanTipClass(),this._element.removeAttribute("aria-describedby"),C.trigger(this._element,this.constructor.Event.HIDDEN),this._popper&&(this._popper.destroy(),this._popper=null))};if(C.trigger(this._element,this.constructor.Event.HIDE).defaultPrevented)return;e.classList.remove(vi),"ontouchstart"in document.documentElement&&[].concat(...document.body.children).forEach(s=>C.off(s,"mouseover",mr)),this._activeTrigger[m_]=!1,this._activeTrigger[Ss]=!1,this._activeTrigger[yi]=!1;let o=this.tip.classList.contains(Tr);this._queueCallback(n,this.tip,o),this._hoverState=""}update(){this._popper!==null&&this._popper.update()}isWithContent(){return Boolean(this.getTitle())}getTipElement(){if(this.tip)return this.tip;let e=document.createElement("div");return e.innerHTML=this._config.template,this.tip=e.children[0],this.tip}setContent(){let e=this.getTipElement();this.setElementContent(F.findOne(p_,e),this.getTitle()),e.classList.remove(Tr,vi)}setElementContent(e,n){if(e!==null){if(It(n)){n=Mn(n),this._config.html?n.parentNode!==e&&(e.innerHTML="",e.appendChild(n)):e.textContent=n.textContent;return}this._config.html?(this._config.sanitize&&(n=du(n,this._config.allowList,this._config.sanitizeFn)),e.innerHTML=n):e.textContent=n}}getTitle(){let e=this._element.getAttribute("data-bs-original-title");return e||(e=typeof this._config.title=="function"?this._config.title.call(this._element):this._config.title),e}updateAttachment(e){return e==="right"?"end":e==="left"?"start":e}_initializeOnDelegatedTarget(e,n){let i=this.constructor.DATA_KEY;return n=n||Zt.get(e.delegateTarget,i),n||(n=new this.constructor(e.delegateTarget,this._getDelegateConfig()),Zt.set(e.delegateTarget,i,n)),n}_getOffset(){let{offset:e}=this._config;return typeof e=="string"?e.split(",").map(n=>Number.parseInt(n,10)):typeof e=="function"?n=>e(n,this._element):e}_getPopperConfig(e){let n={placement:e,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"onChange",enabled:!0,phase:"afterWrite",fn:i=>this._handlePopperPlacementChange(i)}],onFirstUpdate:i=>{i.options.placement!==i.placement&&this._handlePopperPlacementChange(i)}};return K(K({},n),typeof this._config.popperConfig=="function"?this._config.popperConfig(n):this._config.popperConfig)}_addAttachmentClass(e){this.getTipElement().classList.add(`${hu}-${this.updateAttachment(e)}`)}_getAttachment(e){return d_[e.toUpperCase()]}_setListeners(){this._config.trigger.split(" ").forEach(n=>{if(n==="click")C.on(this._element,this.constructor.Event.CLICK,this._config.selector,i=>this.toggle(i));else if(n!==g_){let i=n===yi?this.constructor.Event.MOUSEENTER:this.constructor.Event.FOCUSIN,o=n===yi?this.constructor.Event.MOUSELEAVE:this.constructor.Event.FOCUSOUT;C.on(this._element,i,this._config.selector,s=>this._enter(s)),C.on(this._element,o,this._config.selector,s=>this._leave(s))}}),this._hideModalHandler=()=>{this._element&&this.hide()},C.on(this._element.closest(`.${pu}`),"hide.bs.modal",this._hideModalHandler),this._config.selector?this._config=tr(K({},this._config),{trigger:"manual",selector:""}):this._fixTitle()}_fixTitle(){let e=this._element.getAttribute("title"),n=typeof this._element.getAttribute("data-bs-original-title");(e||n!=="string")&&(this._element.setAttribute("data-bs-original-title",e||""),e&&!this._element.getAttribute("aria-label")&&!this._element.textContent&&this._element.setAttribute("aria-label",e),this._element.setAttribute("title",""))}_enter(e,n){if(n=this._initializeOnDelegatedTarget(e,n),e&&(n._activeTrigger[e.type==="focusin"?Ss:yi]=!0),n.getTipElement().classList.contains(vi)||n._hoverState===bi){n._hoverState=bi;return}if(clearTimeout(n._timeout),n._hoverState=bi,!n._config.delay||!n._config.delay.show){n.show();return}n._timeout=setTimeout(()=>{n._hoverState===bi&&n.show()},n._config.delay.show)}_leave(e,n){if(n=this._initializeOnDelegatedTarget(e,n),e&&(n._activeTrigger[e.type==="focusout"?Ss:yi]=n._element.contains(e.relatedTarget)),!n._isWithActiveTrigger()){if(clearTimeout(n._timeout),n._hoverState=_s,!n._config.delay||!n._config.delay.hide){n.hide();return}n._timeout=setTimeout(()=>{n._hoverState===_s&&n.hide()},n._config.delay.hide)}}_isWithActiveTrigger(){for(let e in this._activeTrigger)if(this._activeTrigger[e])return!0;return!1}_getConfig(e){let n=be.getDataAttributes(this._element);return Object.keys(n).forEach(i=>{c_.has(i)&&delete n[i]}),e=K(K(K({},this.constructor.Default),n),typeof e=="object"&&e?e:{}),e.container=e.container===!1?document.body:Mn(e.container),typeof e.delay=="number"&&(e.delay={show:e.delay,hide:e.delay}),typeof e.title=="number"&&(e.title=e.title.toString()),typeof e.content=="number"&&(e.content=e.content.toString()),vt(fu,e,this.constructor.DefaultType),e.sanitize&&(e.template=du(e.template,e.allowList,e.sanitizeFn)),e}_getDelegateConfig(){let e={};if(this._config)for(let n in this._config)this.constructor.Default[n]!==this._config[n]&&(e[n]=this._config[n]);return e}_cleanTipClass(){let e=this.getTipElement(),n=e.getAttribute("class").match(l_);n!==null&&n.length>0&&n.map(i=>i.trim()).forEach(i=>e.classList.remove(i))}_handlePopperPlacementChange(e){let{state:n}=e;!n||(this.tip=n.elements.popper,this._cleanTipClass(),this._addAttachmentClass(this._getAttachment(n.placement)))}static jQueryInterface(e){return this.each(function(){let n=et.getOrCreateInstance(this,e);if(typeof e=="string"){if(typeof n[e]=="undefined")throw new TypeError(`No method named "${e}"`);n[e]()}})}};Be(et);var v_="popover",b_="bs.popover",tt=`.${b_}`,mu="bs-popover",y_=new RegExp(`(^|\\s)${mu}\\S+`,"g"),E_=tr(K({},et.Default),{placement:"right",offset:[0,8],trigger:"click",content:"",template:''}),__=tr(K({},et.DefaultType),{content:"(string|element|function)"}),S_={HIDE:`hide${tt}`,HIDDEN:`hidden${tt}`,SHOW:`show${tt}`,SHOWN:`shown${tt}`,INSERTED:`inserted${tt}`,CLICK:`click${tt}`,FOCUSIN:`focusin${tt}`,FOCUSOUT:`focusout${tt}`,MOUSEENTER:`mouseenter${tt}`,MOUSELEAVE:`mouseleave${tt}`},w_="fade",T_="show",gu=".popover-header",vu=".popover-body",an=class extends et{static get Default(){return E_}static get NAME(){return v_}static get Event(){return S_}static get DefaultType(){return __}isWithContent(){return this.getTitle()||this._getContent()}getTipElement(){return this.tip?this.tip:(this.tip=super.getTipElement(),this.getTitle()||F.findOne(gu,this.tip).remove(),this._getContent()||F.findOne(vu,this.tip).remove(),this.tip)}setContent(){let e=this.getTipElement();this.setElementContent(F.findOne(gu,e),this.getTitle());let n=this._getContent();typeof n=="function"&&(n=n.call(this._element)),this.setElementContent(F.findOne(vu,e),n),e.classList.remove(w_,T_)}_addAttachmentClass(e){this.getTipElement().classList.add(`${mu}-${this.updateAttachment(e)}`)}_getContent(){return this._element.getAttribute("data-bs-content")||this._config.content}_cleanTipClass(){let e=this.getTipElement(),n=e.getAttribute("class").match(y_);n!==null&&n.length>0&&n.map(i=>i.trim()).forEach(i=>e.classList.remove(i))}static jQueryInterface(e){return this.each(function(){let n=an.getOrCreateInstance(this,e);if(typeof e=="string"){if(typeof n[e]=="undefined")throw new TypeError(`No method named "${e}"`);n[e]()}})}};Be(an);var ws="scrollspy",x_="bs.scrollspy",xr=`.${x_}`,O_=".data-api",bu={offset:10,method:"auto",target:""},A_={offset:"number",method:"string",target:"(string|element)"},C_=`activate${xr}`,L_=`scroll${xr}`,D_=`load${xr}${O_}`,yu="dropdown-item",ln="active",M_='[data-bs-spy="scroll"]',I_=".nav, .list-group",Ts=".nav-link",k_=".nav-item",Eu=".list-group-item",P_=".dropdown",N_=".dropdown-toggle",R_="offset",_u="position",Ei=class extends Fe{constructor(e,n){super(e);this._scrollElement=this._element.tagName==="BODY"?window:this._element,this._config=this._getConfig(n),this._selector=`${this._config.target} ${Ts}, ${this._config.target} ${Eu}, ${this._config.target} .${yu}`,this._offsets=[],this._targets=[],this._activeTarget=null,this._scrollHeight=0,C.on(this._scrollElement,L_,()=>this._process()),this.refresh(),this._process()}static get Default(){return bu}static get NAME(){return ws}refresh(){let e=this._scrollElement===this._scrollElement.window?R_:_u,n=this._config.method==="auto"?e:this._config.method,i=n===_u?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),F.find(this._selector).map(s=>{let a=as(s),c=a?F.findOne(a):null;if(c){let d=c.getBoundingClientRect();if(d.width||d.height)return[be[n](c).top+i,a]}return null}).filter(s=>s).sort((s,a)=>s[0]-a[0]).forEach(s=>{this._offsets.push(s[0]),this._targets.push(s[1])})}dispose(){C.off(this._scrollElement,xr),super.dispose()}_getConfig(e){if(e=K(K(K({},bu),be.getDataAttributes(this._element)),typeof e=="object"&&e?e:{}),typeof e.target!="string"&&It(e.target)){let{id:n}=e.target;n||(n=pc(ws),e.target.id=n),e.target=`#${n}`}return vt(ws,e,A_),e}_getScrollTop(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop}_getScrollHeight(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)}_getOffsetHeight(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height}_process(){let e=this._getScrollTop()+this._config.offset,n=this._getScrollHeight(),i=this._config.offset+n-this._getOffsetHeight();if(this._scrollHeight!==n&&this.refresh(),e>=i){let o=this._targets[this._targets.length-1];this._activeTarget!==o&&this._activate(o);return}if(this._activeTarget&&e0){this._activeTarget=null,this._clear();return}for(let o=this._offsets.length;o--;)this._activeTarget!==this._targets[o]&&e>=this._offsets[o]&&(typeof this._offsets[o+1]=="undefined"||e`${o}[data-bs-target="${e}"],${o}[href="${e}"]`),i=F.findOne(n.join(","));i.classList.contains(yu)?(F.findOne(N_,i.closest(P_)).classList.add(ln),i.classList.add(ln)):(i.classList.add(ln),F.parents(i,I_).forEach(o=>{F.prev(o,`${Ts}, ${Eu}`).forEach(s=>s.classList.add(ln)),F.prev(o,k_).forEach(s=>{F.children(s,Ts).forEach(a=>a.classList.add(ln))})})),C.trigger(this._scrollElement,C_,{relatedTarget:e})}_clear(){F.find(this._selector).filter(e=>e.classList.contains(ln)).forEach(e=>e.classList.remove(ln))}static jQueryInterface(e){return this.each(function(){let n=Ei.getOrCreateInstance(this,e);if(typeof e=="string"){if(typeof n[e]=="undefined")throw new TypeError(`No method named "${e}"`);n[e]()}})}};C.on(window,D_,()=>{F.find(M_).forEach(t=>new Ei(t))});Be(Ei);var j_="tab",H_="bs.tab",_i=`.${H_}`,q_=".data-api",$_=`hide${_i}`,B_=`hidden${_i}`,F_=`show${_i}`,z_=`shown${_i}`,W_=`click${_i}${q_}`,V_="dropdown-menu",Si="active",Su="fade",wu="show",Y_=".dropdown",U_=".nav, .list-group",Tu=".active",xu=":scope > li > .active",K_='[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',G_=".dropdown-toggle",X_=":scope > .dropdown-menu .active",cn=class extends Fe{static get NAME(){return j_}show(){if(this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE&&this._element.classList.contains(Si))return;let e,n=Mt(this._element),i=this._element.closest(U_);if(i){let c=i.nodeName==="UL"||i.nodeName==="OL"?xu:Tu;e=F.find(c,i),e=e[e.length-1]}let o=e?C.trigger(e,$_,{relatedTarget:this._element}):null;if(C.trigger(this._element,F_,{relatedTarget:e}).defaultPrevented||o!==null&&o.defaultPrevented)return;this._activate(this._element,i);let a=()=>{C.trigger(e,B_,{relatedTarget:this._element}),C.trigger(this._element,z_,{relatedTarget:e})};n?this._activate(n,n.parentNode,a):a()}_activate(e,n,i){let s=(n&&(n.nodeName==="UL"||n.nodeName==="OL")?F.find(xu,n):F.children(n,Tu))[0],a=i&&s&&s.classList.contains(Su),c=()=>this._transitionComplete(e,s,i);s&&a?(s.classList.remove(wu),this._queueCallback(c,e,!0)):c()}_transitionComplete(e,n,i){if(n){n.classList.remove(Si);let s=F.findOne(X_,n.parentNode);s&&s.classList.remove(Si),n.getAttribute("role")==="tab"&&n.setAttribute("aria-selected",!1)}e.classList.add(Si),e.getAttribute("role")==="tab"&&e.setAttribute("aria-selected",!0),kn(e),e.classList.contains(Su)&&e.classList.add(wu);let o=e.parentNode;if(o&&o.nodeName==="LI"&&(o=o.parentNode),o&&o.classList.contains(V_)){let s=e.closest(Y_);s&&F.find(G_,s).forEach(a=>a.classList.add(Si)),e.setAttribute("aria-expanded",!0)}i&&i()}static jQueryInterface(e){return this.each(function(){let n=cn.getOrCreateInstance(this);if(typeof e=="string"){if(typeof n[e]=="undefined")throw new TypeError(`No method named "${e}"`);n[e]()}})}};C.on(document,W_,K_,function(t){if(["A","AREA"].includes(this.tagName)&&t.preventDefault(),In(this))return;cn.getOrCreateInstance(this).show()});Be(cn);var Ou="toast",Q_="bs.toast",Et=`.${Q_}`,J_=`click.dismiss${Et}`,Z_=`mouseover${Et}`,eS=`mouseout${Et}`,tS=`focusin${Et}`,nS=`focusout${Et}`,iS=`hide${Et}`,rS=`hidden${Et}`,oS=`show${Et}`,sS=`shown${Et}`,aS="fade",Au="hide",wi="show",Cu="showing",lS={animation:"boolean",autohide:"boolean",delay:"number"},Lu={animation:!0,autohide:!0,delay:5e3},cS='[data-bs-dismiss="toast"]',_t=class extends Fe{constructor(e,n){super(e);this._config=this._getConfig(n),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get DefaultType(){return lS}static get Default(){return Lu}static get NAME(){return Ou}show(){if(C.trigger(this._element,oS).defaultPrevented)return;this._clearTimeout(),this._config.animation&&this._element.classList.add(aS);let n=()=>{this._element.classList.remove(Cu),this._element.classList.add(wi),C.trigger(this._element,sS),this._maybeScheduleHide()};this._element.classList.remove(Au),kn(this._element),this._element.classList.add(Cu),this._queueCallback(n,this._element,this._config.animation)}hide(){if(!this._element.classList.contains(wi)||C.trigger(this._element,iS).defaultPrevented)return;let n=()=>{this._element.classList.add(Au),C.trigger(this._element,rS)};this._element.classList.remove(wi),this._queueCallback(n,this._element,this._config.animation)}dispose(){this._clearTimeout(),this._element.classList.contains(wi)&&this._element.classList.remove(wi),super.dispose()}_getConfig(e){return e=K(K(K({},Lu),be.getDataAttributes(this._element)),typeof e=="object"&&e?e:{}),vt(Ou,e,this.constructor.DefaultType),e}_maybeScheduleHide(){!this._config.autohide||this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout(()=>{this.hide()},this._config.delay))}_onInteraction(e,n){switch(e.type){case"mouseover":case"mouseout":this._hasMouseInteraction=n;break;case"focusin":case"focusout":this._hasKeyboardInteraction=n;break}if(n){this._clearTimeout();return}let i=e.relatedTarget;this._element===i||this._element.contains(i)||this._maybeScheduleHide()}_setListeners(){C.on(this._element,J_,cS,()=>this.hide()),C.on(this._element,Z_,e=>this._onInteraction(e,!0)),C.on(this._element,eS,e=>this._onInteraction(e,!1)),C.on(this._element,tS,e=>this._onInteraction(e,!0)),C.on(this._element,nS,e=>this._onInteraction(e,!1))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}static jQueryInterface(e){return this.each(function(){let n=_t.getOrCreateInstance(this,e);if(typeof e=="string"){if(typeof n[e]=="undefined")throw new TypeError(`No method named "${e}"`);n[e](this)}})}};Be(_t);"use strict";var OT=it(),_f=Xs();OT({target:"Array",proto:!0,forced:[].forEach!=_f},{forEach:_f});var AT=de(),CT=Qs(),Js=Xs(),LT=St();for(wf in CT)if(Zs=AT[wf],Ii=Zs&&Zs.prototype,Ii&&Ii.forEach!==Js)try{LT(Ii,"forEach",Js)}catch(t){Ii.forEach=Js}var Zs,Ii,wf;var bo=Le(xf());"use strict";var NT=it(),RT=Br().filter,jT=Af(),HT=jT("filter");NT({target:"Array",proto:!0,forced:!HT},{filter:function(e){return RT(this,e,arguments.length>1?arguments[1]:void 0)}});var a1=Le(ga());var $x=it(),_h=Eh();$x({target:"Object",stat:!0,forced:Object.assign!==_h},{assign:_h});var Xx=Kr(),Qx=pn(),Jx=Oh();Xx||Qx(Object.prototype,"toString",Jx,{unsafe:!0});var uO=it(),Ph=kh();uO({global:!0,forced:parseInt!=Ph},{parseInt:Ph});"use strict";var pO=_a().charAt,mO=$t(),jh=hn(),gO=pa(),Hh="String Iterator",vO=jh.set,bO=jh.getterFor(Hh);gO(String,"String",function(t){vO(this,{type:Hh,string:mO(t),index:0})},function(){var e=bO(this),n=e.string,i=e.index,o;return i>=n.length?{value:void 0,done:!0}:(o=pO(n,i),e.index+=o.length,{value:o,done:!1})});var f1=Le(Cp());var T0=de(),Lp=Qs(),ji=ga(),ja=St(),Dp=Se(),Ha=Dp("iterator"),Mp=Dp("toStringTag"),qa=ji.values;for(ro in Lp)if($a=T0[ro],rt=$a&&$a.prototype,rt){if(rt[Ha]!==qa)try{ja(rt,Ha,qa)}catch(t){rt[Ha]=qa}if(rt[Mp]||ja(rt,Mp,ro),Lp[ro]){for(vn in ji)if(rt[vn]!==ji[vn])try{ja(rt,vn,ji[vn])}catch(t){rt[vn]=ji[vn]}}}var $a,rt,vn,ro;var ml=Le(Rp()),gl=Le($p()),zm=Le(Gp());var We=[];var Xp=function(){return We.some(function(t){return t.activeTargets.length>0})};var Qp=function(){return We.some(function(t){return t.skippedTargets.length>0})};var Jp="ResizeObserver loop completed with undelivered notifications.",Zp=function(){var t;typeof ErrorEvent=="function"?t=new ErrorEvent("error",{message:Jp}):(t=document.createEvent("Event"),t.initEvent("error",!1,!1),t.message=Jp),window.dispatchEvent(t)};var En;(function(t){t.BORDER_BOX="border-box",t.CONTENT_BOX="content-box",t.DEVICE_PIXEL_CONTENT_BOX="device-pixel-content-box"})(En||(En={}));var Ue=function(t){return Object.freeze(t)};var Ua=function(){function t(e,n){this.inlineSize=e,this.blockSize=n,Ue(this)}return t}();var Ka=function(){function t(e,n,i,o){return this.x=e,this.y=n,this.width=i,this.height=o,this.top=this.y,this.left=this.x,this.bottom=this.top+this.height,this.right=this.left+this.width,Ue(this)}return t.prototype.toJSON=function(){var e=this,n=e.x,i=e.y,o=e.top,s=e.right,a=e.bottom,c=e.left,d=e.width,u=e.height;return{x:n,y:i,top:o,right:s,bottom:a,left:c,width:d,height:u}},t.fromRect=function(e){return new t(e.x,e.y,e.width,e.height)},t}();var qi=function(t){return t instanceof SVGElement&&"getBBox"in t},lo=function(t){if(qi(t)){var e=t.getBBox(),n=e.width,i=e.height;return!n&&!i}var o=t,s=o.offsetWidth,a=o.offsetHeight;return!(s||a||t.getClientRects().length)},Ga=function(t){var e,n;if(t instanceof Element)return!0;var i=(n=(e=t)===null||e===void 0?void 0:e.ownerDocument)===null||n===void 0?void 0:n.defaultView;return!!(i&&t instanceof i.Element)},em=function(t){switch(t.tagName){case"INPUT":if(t.type!=="image")break;case"VIDEO":case"AUDIO":case"EMBED":case"OBJECT":case"CANVAS":case"IFRAME":case"IMG":return!0}return!1};var _n=typeof window!="undefined"?window:{};var co=new WeakMap,tm=/auto|scroll/,BA=/^tb|vertical/,FA=/msie|trident/i.test(_n.navigator&&_n.navigator.userAgent),ot=function(t){return parseFloat(t||"0")},Bn=function(t,e,n){return t===void 0&&(t=0),e===void 0&&(e=0),n===void 0&&(n=!1),new Ua((n?e:t)||0,(n?t:e)||0)},nm=Ue({devicePixelContentBoxSize:Bn(),borderBoxSize:Bn(),contentBoxSize:Bn(),contentRect:new Ka(0,0,0,0)}),Xa=function(t,e){if(e===void 0&&(e=!1),co.has(t)&&!e)return co.get(t);if(lo(t))return co.set(t,nm),nm;var n=getComputedStyle(t),i=qi(t)&&t.ownerSVGElement&&t.getBBox(),o=!FA&&n.boxSizing==="border-box",s=BA.test(n.writingMode||""),a=!i&&tm.test(n.overflowY||""),c=!i&&tm.test(n.overflowX||""),d=i?0:ot(n.paddingTop),u=i?0:ot(n.paddingRight),l=i?0:ot(n.paddingBottom),m=i?0:ot(n.paddingLeft),f=i?0:ot(n.borderTopWidth),p=i?0:ot(n.borderRightWidth),g=i?0:ot(n.borderBottomWidth),v=i?0:ot(n.borderLeftWidth),h=m+u,y=d+l,_=v+p,A=f+g,O=c?t.offsetHeight-A-t.clientHeight:0,k=a?t.offsetWidth-_-t.clientWidth:0,M=o?h+_:0,H=o?y+A:0,$=i?i.width:ot(n.width)-M-k,G=i?i.height:ot(n.height)-H-O,Z=$+h+k+_,z=G+y+O+A,S=Ue({devicePixelContentBoxSize:Bn(Math.round($*devicePixelRatio),Math.round(G*devicePixelRatio),s),borderBoxSize:Bn(Z,z,s),contentBoxSize:Bn($,G,s),contentRect:new Ka(m,d,$,G)});return co.set(t,S),S},uo=function(t,e,n){var i=Xa(t,n),o=i.borderBoxSize,s=i.contentBoxSize,a=i.devicePixelContentBoxSize;switch(e){case En.DEVICE_PIXEL_CONTENT_BOX:return a;case En.BORDER_BOX:return o;default:return s}};var Qa=function(){function t(e){var n=Xa(e);this.target=e,this.contentRect=n.contentRect,this.borderBoxSize=Ue([n.borderBoxSize]),this.contentBoxSize=Ue([n.contentBoxSize]),this.devicePixelContentBoxSize=Ue([n.devicePixelContentBoxSize])}return t}();var fo=function(t){if(lo(t))return 1/0;for(var e=0,n=t.parentNode;n;)e+=1,n=n.parentNode;return e};var im=function(){var t=1/0,e=[];We.forEach(function(a){if(a.activeTargets.length!==0){var c=[];a.activeTargets.forEach(function(u){var l=new Qa(u.target),m=fo(u.target);c.push(l),u.lastReportedSize=uo(u.target,u.observedBox),mt?n.activeTargets.push(o):n.skippedTargets.push(o))})})};var rm=function(){var t=0;for(Ja(t);Xp();)t=im(),Ja(t);return Qp()&&Zp(),t>0};var Za,om=[],zA=function(){return om.splice(0).forEach(function(t){return t()})},sm=function(t){if(!Za){var e=0,n=document.createTextNode(""),i={characterData:!0};new MutationObserver(function(){return zA()}).observe(n,i),Za=function(){n.textContent=""+(e?e--:e++)}}om.push(t),Za()};var am=function(t){sm(function(){requestAnimationFrame(t)})};var ho=0,WA=function(){return!!ho},VA=250,YA={attributes:!0,characterData:!0,childList:!0,subtree:!0},lm=["resize","load","transitionend","animationend","animationstart","animationiteration","keyup","keydown","mouseup","mousedown","mouseover","mouseout","blur","focus"],cm=function(t){return t===void 0&&(t=0),Date.now()+t},el=!1,UA=function(){function t(){var e=this;this.stopped=!0,this.listener=function(){return e.schedule()}}return t.prototype.run=function(e){var n=this;if(e===void 0&&(e=VA),!el){el=!0;var i=cm(e);am(function(){var o=!1;try{o=rm()}finally{if(el=!1,e=i-cm(),!WA())return;o?n.run(1e3):e>0?n.run(e):n.start()}})}},t.prototype.schedule=function(){this.stop(),this.run()},t.prototype.observe=function(){var e=this,n=function(){return e.observer&&e.observer.observe(document.body,YA)};document.body?n():_n.addEventListener("DOMContentLoaded",n)},t.prototype.start=function(){var e=this;this.stopped&&(this.stopped=!1,this.observer=new MutationObserver(this.listener),this.observe(),lm.forEach(function(n){return _n.addEventListener(n,e.listener,!0)}))},t.prototype.stop=function(){var e=this;this.stopped||(this.observer&&this.observer.disconnect(),lm.forEach(function(n){return _n.removeEventListener(n,e.listener,!0)}),this.stopped=!0)},t}(),po=new UA,tl=function(t){!ho&&t>0&&po.start(),ho+=t,!ho&&po.stop()};var KA=function(t){return!qi(t)&&!em(t)&&getComputedStyle(t).display==="inline"},um=function(){function t(e,n){this.target=e,this.observedBox=n||En.CONTENT_BOX,this.lastReportedSize={inlineSize:0,blockSize:0}}return t.prototype.isActive=function(){var e=uo(this.target,this.observedBox,!0);return KA(this.target)&&(this.lastReportedSize=e),this.lastReportedSize.inlineSize!==e.inlineSize||this.lastReportedSize.blockSize!==e.blockSize},t}();var dm=function(){function t(e,n){this.activeTargets=[],this.skippedTargets=[],this.observationTargets=[],this.observer=e,this.callback=n}return t}();var mo=new WeakMap,fm=function(t,e){for(var n=0;n=0&&(s&&We.splice(We.indexOf(i),1),i.observationTargets.splice(o,1),tl(-1))},t.disconnect=function(e){var n=this,i=mo.get(e);i.observationTargets.slice().forEach(function(o){return n.unobserve(e,o.target)}),i.activeTargets.splice(0,i.activeTargets.length)},t}();var nl=function(){function t(e){if(arguments.length===0)throw new TypeError("Failed to construct 'ResizeObserver': 1 argument required, but only 0 present.");if(typeof e!="function")throw new TypeError("Failed to construct 'ResizeObserver': The callback provided as parameter 1 is not a function.");$i.connect(this,e)}return t.prototype.observe=function(e,n){if(arguments.length===0)throw new TypeError("Failed to execute 'observe' on 'ResizeObserver': 1 argument required, but only 0 present.");if(!Ga(e))throw new TypeError("Failed to execute 'observe' on 'ResizeObserver': parameter 1 is not of type 'Element");$i.observe(this,e,n)},t.prototype.unobserve=function(e){if(arguments.length===0)throw new TypeError("Failed to execute 'unobserve' on 'ResizeObserver': 1 argument required, but only 0 present.");if(!Ga(e))throw new TypeError("Failed to execute 'unobserve' on 'ResizeObserver': parameter 1 is not of type 'Element");$i.unobserve(this,e)},t.prototype.disconnect=function(){$i.disconnect(this)},t.toString=function(){return"function ResizeObserver () { [polyfill code] }"},t}();"use strict";var tC=it(),nC=mm().left,iC=Gs(),bm=Lr(),rC=vm(),oC=iC("reduce"),sC=!rC&&bm>79&&bm<83;tC({target:"Array",proto:!0,forced:!oC||sC},{reduce:function(e){return nC(this,e,arguments.length,arguments.length>1?arguments[1]:void 0)}});var aC=Rt(),lC=jt().f,il=Function.prototype,cC=il.toString,uC=/^\s*function ([^ (]*)/,ym="name";aC&&!(ym in il)&&lC(il,ym,{configurable:!0,get:function(){try{return cC.call(this).match(uC)[1]}catch(t){return""}}});var v1=Le(ll());"use strict";var NC=ul(),RC=He(),jC=mn(),hl=$t(),HC=un(),qC=dl(),qm=fl();NC("match",function(t,e,n){return[function(o){var s=HC(this),a=o==null?void 0:o[t];return a!==void 0?a.call(o,s):new RegExp(o)[t](hl(s))},function(i){var o=RC(this),s=hl(i),a=n(e,o,s);if(a.done)return a.value;if(!o.global)return qm(o,s);var c=o.unicode;o.lastIndex=0;for(var d=[],u=0,l;(l=qm(o,s))!==null;){var m=hl(l[0]);d[u]=m,m===""&&(o.lastIndex=qC(s,jC(o.lastIndex),c)),u++}return u===0?null:d}]});"use strict";var VC=ul(),YC=ye(),UC=He(),KC=Di(),GC=mn(),Fn=$t(),XC=un(),QC=dl(),JC=Bm(),ZC=fl(),eL=Se(),pl=eL("replace"),tL=Math.max,nL=Math.min,iL=function(t){return t===void 0?t:String(t)},rL=function(){return"a".replace(/./,"$0")==="$0"}(),Fm=function(){return/./[pl]?/./[pl]("a","$0")==="":!1}(),oL=!YC(function(){var t=/./;return t.exec=function(){var e=[];return e.groups={a:"7"},e},"".replace(t,"$
")!=="7"});VC("replace",function(t,e,n){var i=Fm?"$":"$0";return[function(s,a){var c=XC(this),d=s==null?void 0:s[pl];return d!==void 0?d.call(s,c,a):e.call(Fn(c),s,a)},function(o,s){var a=UC(this),c=Fn(o);if(typeof s=="string"&&s.indexOf(i)===-1&&s.indexOf("$<")===-1){var d=n(e,a,c,s);if(d.done)return d.value}var u=typeof s=="function";u||(s=Fn(s));var l=a.global;if(l){var m=a.unicode;a.lastIndex=0}for(var f=[];;){var p=ZC(a,c);if(p===null||(f.push(p),!l))break;var g=Fn(p[0]);g===""&&(a.lastIndex=QC(c,GC(a.lastIndex),m))}for(var v="",h=0,y=0;y=h&&(v+=c.slice(h,A)+$,h=A+_.length)}return v+c.slice(h)}]},!oL||!rL||Fm);var yo=function(e){var n=Array.prototype.reduce.call(e,function(i,o){var s=o.name.match(/data-simplebar-(.+)/);if(s){var a=s[1].replace(/\W+(.)/g,function(c,d){return d.toUpperCase()});switch(o.value){case"true":i[a]=!0;break;case"false":i[a]=!1;break;case void 0:i[a]=!0;break;default:i[a]=o.value}}return i},{});return n};function Bt(t){return!t||!t.ownerDocument||!t.ownerDocument.defaultView?window:t.ownerDocument.defaultView}function Eo(t){return!t||!t.ownerDocument?document:t.ownerDocument}var zn=null,Wm=null;bo.default&&window.addEventListener("resize",function(){Wm!==window.devicePixelRatio&&(Wm=window.devicePixelRatio,zn=null)});function Vm(t){if(zn===null){var e=Eo(t);if(typeof e=="undefined")return zn=0,zn;var n=e.body,i=e.createElement("div");i.classList.add("simplebar-hide-scrollbar"),n.appendChild(i);var o=i.getBoundingClientRect().right;n.removeChild(i),zn=o}return zn}var he=function(){function t(n,i){var o=this;this.onScroll=function(){var s=Bt(o.el);o.scrollXTicking||(s.requestAnimationFrame(o.scrollX),o.scrollXTicking=!0),o.scrollYTicking||(s.requestAnimationFrame(o.scrollY),o.scrollYTicking=!0)},this.scrollX=function(){o.axis.x.isOverflowing&&(o.showScrollbar("x"),o.positionScrollbar("x")),o.scrollXTicking=!1},this.scrollY=function(){o.axis.y.isOverflowing&&(o.showScrollbar("y"),o.positionScrollbar("y")),o.scrollYTicking=!1},this.onMouseEnter=function(){o.showScrollbar("x"),o.showScrollbar("y")},this.onMouseMove=function(s){o.mouseX=s.clientX,o.mouseY=s.clientY,(o.axis.x.isOverflowing||o.axis.x.forceVisible)&&o.onMouseMoveForAxis("x"),(o.axis.y.isOverflowing||o.axis.y.forceVisible)&&o.onMouseMoveForAxis("y")},this.onMouseLeave=function(){o.onMouseMove.cancel(),(o.axis.x.isOverflowing||o.axis.x.forceVisible)&&o.onMouseLeaveForAxis("x"),(o.axis.y.isOverflowing||o.axis.y.forceVisible)&&o.onMouseLeaveForAxis("y"),o.mouseX=-1,o.mouseY=-1},this.onWindowResize=function(){o.scrollbarWidth=o.getScrollbarWidth(),o.hideNativeScrollbar()},this.hideScrollbars=function(){o.axis.x.track.rect=o.axis.x.track.el.getBoundingClientRect(),o.axis.y.track.rect=o.axis.y.track.el.getBoundingClientRect(),o.isWithinBounds(o.axis.y.track.rect)||(o.axis.y.scrollbar.el.classList.remove(o.classNames.visible),o.axis.y.isVisible=!1),o.isWithinBounds(o.axis.x.track.rect)||(o.axis.x.scrollbar.el.classList.remove(o.classNames.visible),o.axis.x.isVisible=!1)},this.onPointerEvent=function(s){var a,c;o.axis.x.track.rect=o.axis.x.track.el.getBoundingClientRect(),o.axis.y.track.rect=o.axis.y.track.el.getBoundingClientRect(),(o.axis.x.isOverflowing||o.axis.x.forceVisible)&&(a=o.isWithinBounds(o.axis.x.track.rect)),(o.axis.y.isOverflowing||o.axis.y.forceVisible)&&(c=o.isWithinBounds(o.axis.y.track.rect)),(a||c)&&(s.preventDefault(),s.stopPropagation(),s.type==="mousedown"&&(a&&(o.axis.x.scrollbar.rect=o.axis.x.scrollbar.el.getBoundingClientRect(),o.isWithinBounds(o.axis.x.scrollbar.rect)?o.onDragStart(s,"x"):o.onTrackClick(s,"x")),c&&(o.axis.y.scrollbar.rect=o.axis.y.scrollbar.el.getBoundingClientRect(),o.isWithinBounds(o.axis.y.scrollbar.rect)?o.onDragStart(s,"y"):o.onTrackClick(s,"y"))))},this.drag=function(s){var a,c=o.axis[o.draggedAxis].track,d=c.rect[o.axis[o.draggedAxis].sizeAttr],u=o.axis[o.draggedAxis].scrollbar,l=o.contentWrapperEl[o.axis[o.draggedAxis].scrollSizeAttr],m=parseInt(o.elStyles[o.axis[o.draggedAxis].sizeAttr],10);s.preventDefault(),s.stopPropagation(),o.draggedAxis==="y"?a=s.pageY:a=s.pageX;var f=a-c.rect[o.axis[o.draggedAxis].offsetAttr]-o.axis[o.draggedAxis].dragOffset,p=f/(d-u.size),g=p*(l-m);o.draggedAxis==="x"&&(g=o.isRtl&&t.getRtlHelpers().isRtlScrollbarInverted?g-(d+u.size):g,g=o.isRtl&&t.getRtlHelpers().isRtlScrollingInverted?-g:g),o.contentWrapperEl[o.axis[o.draggedAxis].scrollOffsetAttr]=g},this.onEndDrag=function(s){var a=Eo(o.el),c=Bt(o.el);s.preventDefault(),s.stopPropagation(),o.el.classList.remove(o.classNames.dragging),a.removeEventListener("mousemove",o.drag,!0),a.removeEventListener("mouseup",o.onEndDrag,!0),o.removePreventClickId=c.setTimeout(function(){a.removeEventListener("click",o.preventClick,!0),a.removeEventListener("dblclick",o.preventClick,!0),o.removePreventClickId=null})},this.preventClick=function(s){s.preventDefault(),s.stopPropagation()},this.el=n,this.minScrollbarWidth=20,this.options=Object.assign({},t.defaultOptions,{},i),this.classNames=Object.assign({},t.defaultOptions.classNames,{},this.options.classNames),this.axis={x:{scrollOffsetAttr:"scrollLeft",sizeAttr:"width",scrollSizeAttr:"scrollWidth",offsetSizeAttr:"offsetWidth",offsetAttr:"left",overflowAttr:"overflowX",dragOffset:0,isOverflowing:!0,isVisible:!1,forceVisible:!1,track:{},scrollbar:{}},y:{scrollOffsetAttr:"scrollTop",sizeAttr:"height",scrollSizeAttr:"scrollHeight",offsetSizeAttr:"offsetHeight",offsetAttr:"top",overflowAttr:"overflowY",dragOffset:0,isOverflowing:!0,isVisible:!1,forceVisible:!1,track:{},scrollbar:{}}},this.removePreventClickId=null,!t.instances.has(this.el)&&(this.recalculate=(0,ml.default)(this.recalculate.bind(this),64),this.onMouseMove=(0,ml.default)(this.onMouseMove.bind(this),64),this.hideScrollbars=(0,gl.default)(this.hideScrollbars.bind(this),this.options.timeout),this.onWindowResize=(0,gl.default)(this.onWindowResize.bind(this),64,{leading:!0}),t.getRtlHelpers=(0,zm.default)(t.getRtlHelpers),this.init())}t.getRtlHelpers=function(){var i=document.createElement("div");i.innerHTML='
';var o=i.firstElementChild;document.body.appendChild(o);var s=o.firstElementChild;o.scrollLeft=0;var a=t.getOffset(o),c=t.getOffset(s);o.scrollLeft=999;var d=t.getOffset(s);return{isRtlScrollingInverted:a.left!==c.left&&c.left-d.left!=0,isRtlScrollbarInverted:a.left!==c.left}},t.getOffset=function(i){var o=i.getBoundingClientRect(),s=Eo(i),a=Bt(i);return{top:o.top+(a.pageYOffset||s.documentElement.scrollTop),left:o.left+(a.pageXOffset||s.documentElement.scrollLeft)}};var e=t.prototype;return e.init=function(){t.instances.set(this.el,this),bo.default&&(this.initDOM(),this.scrollbarWidth=this.getScrollbarWidth(),this.recalculate(),this.initListeners())},e.initDOM=function(){var i=this;if(Array.prototype.filter.call(this.el.children,function(a){return a.classList.contains(i.classNames.wrapper)}).length)this.wrapperEl=this.el.querySelector("."+this.classNames.wrapper),this.contentWrapperEl=this.options.scrollableNode||this.el.querySelector("."+this.classNames.contentWrapper),this.contentEl=this.options.contentNode||this.el.querySelector("."+this.classNames.contentEl),this.offsetEl=this.el.querySelector("."+this.classNames.offset),this.maskEl=this.el.querySelector("."+this.classNames.mask),this.placeholderEl=this.findChild(this.wrapperEl,"."+this.classNames.placeholder),this.heightAutoObserverWrapperEl=this.el.querySelector("."+this.classNames.heightAutoObserverWrapperEl),this.heightAutoObserverEl=this.el.querySelector("."+this.classNames.heightAutoObserverEl),this.axis.x.track.el=this.findChild(this.el,"."+this.classNames.track+"."+this.classNames.horizontal),this.axis.y.track.el=this.findChild(this.el,"."+this.classNames.track+"."+this.classNames.vertical);else{for(this.wrapperEl=document.createElement("div"),this.contentWrapperEl=document.createElement("div"),this.offsetEl=document.createElement("div"),this.maskEl=document.createElement("div"),this.contentEl=document.createElement("div"),this.placeholderEl=document.createElement("div"),this.heightAutoObserverWrapperEl=document.createElement("div"),this.heightAutoObserverEl=document.createElement("div"),this.wrapperEl.classList.add(this.classNames.wrapper),this.contentWrapperEl.classList.add(this.classNames.contentWrapper),this.offsetEl.classList.add(this.classNames.offset),this.maskEl.classList.add(this.classNames.mask),this.contentEl.classList.add(this.classNames.contentEl),this.placeholderEl.classList.add(this.classNames.placeholder),this.heightAutoObserverWrapperEl.classList.add(this.classNames.heightAutoObserverWrapperEl),this.heightAutoObserverEl.classList.add(this.classNames.heightAutoObserverEl);this.el.firstChild;)this.contentEl.appendChild(this.el.firstChild);this.contentWrapperEl.appendChild(this.contentEl),this.offsetEl.appendChild(this.contentWrapperEl),this.maskEl.appendChild(this.offsetEl),this.heightAutoObserverWrapperEl.appendChild(this.heightAutoObserverEl),this.wrapperEl.appendChild(this.heightAutoObserverWrapperEl),this.wrapperEl.appendChild(this.maskEl),this.wrapperEl.appendChild(this.placeholderEl),this.el.appendChild(this.wrapperEl)}if(!this.axis.x.track.el||!this.axis.y.track.el){var o=document.createElement("div"),s=document.createElement("div");o.classList.add(this.classNames.track),s.classList.add(this.classNames.scrollbar),o.appendChild(s),this.axis.x.track.el=o.cloneNode(!0),this.axis.x.track.el.classList.add(this.classNames.horizontal),this.axis.y.track.el=o.cloneNode(!0),this.axis.y.track.el.classList.add(this.classNames.vertical),this.el.appendChild(this.axis.x.track.el),this.el.appendChild(this.axis.y.track.el)}this.axis.x.scrollbar.el=this.axis.x.track.el.querySelector("."+this.classNames.scrollbar),this.axis.y.scrollbar.el=this.axis.y.track.el.querySelector("."+this.classNames.scrollbar),this.options.autoHide||(this.axis.x.scrollbar.el.classList.add(this.classNames.visible),this.axis.y.scrollbar.el.classList.add(this.classNames.visible)),this.el.setAttribute("data-simplebar","init")},e.initListeners=function(){var i=this,o=Bt(this.el);this.options.autoHide&&this.el.addEventListener("mouseenter",this.onMouseEnter),["mousedown","click","dblclick"].forEach(function(c){i.el.addEventListener(c,i.onPointerEvent,!0)}),["touchstart","touchend","touchmove"].forEach(function(c){i.el.addEventListener(c,i.onPointerEvent,{capture:!0,passive:!0})}),this.el.addEventListener("mousemove",this.onMouseMove),this.el.addEventListener("mouseleave",this.onMouseLeave),this.contentWrapperEl.addEventListener("scroll",this.onScroll),o.addEventListener("resize",this.onWindowResize);var s=!1,a=o.ResizeObserver||nl;this.resizeObserver=new a(function(){!s||i.recalculate()}),this.resizeObserver.observe(this.el),this.resizeObserver.observe(this.contentEl),o.requestAnimationFrame(function(){s=!0}),this.mutationObserver=new o.MutationObserver(this.recalculate),this.mutationObserver.observe(this.contentEl,{childList:!0,subtree:!0,characterData:!0})},e.recalculate=function(){var i=Bt(this.el);this.elStyles=i.getComputedStyle(this.el),this.isRtl=this.elStyles.direction==="rtl";var o=this.heightAutoObserverEl.offsetHeight<=1,s=this.heightAutoObserverEl.offsetWidth<=1,a=this.contentEl.offsetWidth,c=this.contentWrapperEl.offsetWidth,d=this.elStyles.overflowX,u=this.elStyles.overflowY;this.contentEl.style.padding=this.elStyles.paddingTop+" "+this.elStyles.paddingRight+" "+this.elStyles.paddingBottom+" "+this.elStyles.paddingLeft,this.wrapperEl.style.margin="-"+this.elStyles.paddingTop+" -"+this.elStyles.paddingRight+" -"+this.elStyles.paddingBottom+" -"+this.elStyles.paddingLeft;var l=this.contentEl.scrollHeight,m=this.contentEl.scrollWidth;this.contentWrapperEl.style.height=o?"auto":"100%",this.placeholderEl.style.width=s?a+"px":"auto",this.placeholderEl.style.height=l+"px";var f=this.contentWrapperEl.offsetHeight;this.axis.x.isOverflowing=m>a,this.axis.y.isOverflowing=l>f,this.axis.x.isOverflowing=d==="hidden"?!1:this.axis.x.isOverflowing,this.axis.y.isOverflowing=u==="hidden"?!1:this.axis.y.isOverflowing,this.axis.x.forceVisible=this.options.forceVisible==="x"||this.options.forceVisible===!0,this.axis.y.forceVisible=this.options.forceVisible==="y"||this.options.forceVisible===!0,this.hideNativeScrollbar();var p=this.axis.x.isOverflowing?this.scrollbarWidth:0,g=this.axis.y.isOverflowing?this.scrollbarWidth:0;this.axis.x.isOverflowing=this.axis.x.isOverflowing&&m>c-g,this.axis.y.isOverflowing=this.axis.y.isOverflowing&&l>f-p,this.axis.x.scrollbar.size=this.getScrollbarSize("x"),this.axis.y.scrollbar.size=this.getScrollbarSize("y"),this.axis.x.scrollbar.el.style.width=this.axis.x.scrollbar.size+"px",this.axis.y.scrollbar.el.style.height=this.axis.y.scrollbar.size+"px",this.positionScrollbar("x"),this.positionScrollbar("y"),this.toggleTrackVisibility("x"),this.toggleTrackVisibility("y")},e.getScrollbarSize=function(i){if(i===void 0&&(i="y"),!this.axis[i].isOverflowing)return 0;var o=this.contentEl[this.axis[i].scrollSizeAttr],s=this.axis[i].track.el[this.axis[i].offsetSizeAttr],a,c=s/o;return a=Math.max(~~(c*s),this.options.scrollbarMinSize),this.options.scrollbarMaxSize&&(a=Math.min(a,this.options.scrollbarMaxSize)),a},e.positionScrollbar=function(i){if(i===void 0&&(i="y"),!!this.axis[i].isOverflowing){var o=this.contentWrapperEl[this.axis[i].scrollSizeAttr],s=this.axis[i].track.el[this.axis[i].offsetSizeAttr],a=parseInt(this.elStyles[this.axis[i].sizeAttr],10),c=this.axis[i].scrollbar,d=this.contentWrapperEl[this.axis[i].scrollOffsetAttr];d=i==="x"&&this.isRtl&&t.getRtlHelpers().isRtlScrollingInverted?-d:d;var u=d/(o-a),l=~~((s-c.size)*u);l=i==="x"&&this.isRtl&&t.getRtlHelpers().isRtlScrollbarInverted?l+(s-c.size):l,c.el.style.transform=i==="x"?"translate3d("+l+"px, 0, 0)":"translate3d(0, "+l+"px, 0)"}},e.toggleTrackVisibility=function(i){i===void 0&&(i="y");var o=this.axis[i].track.el,s=this.axis[i].scrollbar.el;this.axis[i].isOverflowing||this.axis[i].forceVisible?(o.style.visibility="visible",this.contentWrapperEl.style[this.axis[i].overflowAttr]="scroll"):(o.style.visibility="hidden",this.contentWrapperEl.style[this.axis[i].overflowAttr]="hidden"),this.axis[i].isOverflowing?s.style.display="block":s.style.display="none"},e.hideNativeScrollbar=function(){this.offsetEl.style[this.isRtl?"left":"right"]=this.axis.y.isOverflowing||this.axis.y.forceVisible?"-"+this.scrollbarWidth+"px":0,this.offsetEl.style.bottom=this.axis.x.isOverflowing||this.axis.x.forceVisible?"-"+this.scrollbarWidth+"px":0},e.onMouseMoveForAxis=function(i){i===void 0&&(i="y"),this.axis[i].track.rect=this.axis[i].track.el.getBoundingClientRect(),this.axis[i].scrollbar.rect=this.axis[i].scrollbar.el.getBoundingClientRect();var o=this.isWithinBounds(this.axis[i].scrollbar.rect);o?this.axis[i].scrollbar.el.classList.add(this.classNames.hover):this.axis[i].scrollbar.el.classList.remove(this.classNames.hover),this.isWithinBounds(this.axis[i].track.rect)?(this.showScrollbar(i),this.axis[i].track.el.classList.add(this.classNames.hover)):this.axis[i].track.el.classList.remove(this.classNames.hover)},e.onMouseLeaveForAxis=function(i){i===void 0&&(i="y"),this.axis[i].track.el.classList.remove(this.classNames.hover),this.axis[i].scrollbar.el.classList.remove(this.classNames.hover)},e.showScrollbar=function(i){i===void 0&&(i="y");var o=this.axis[i].scrollbar.el;this.axis[i].isVisible||(o.classList.add(this.classNames.visible),this.axis[i].isVisible=!0),this.options.autoHide&&this.hideScrollbars()},e.onDragStart=function(i,o){o===void 0&&(o="y");var s=Eo(this.el),a=Bt(this.el),c=this.axis[o].scrollbar,d=o==="y"?i.pageY:i.pageX;this.axis[o].dragOffset=d-c.rect[this.axis[o].offsetAttr],this.draggedAxis=o,this.el.classList.add(this.classNames.dragging),s.addEventListener("mousemove",this.drag,!0),s.addEventListener("mouseup",this.onEndDrag,!0),this.removePreventClickId===null?(s.addEventListener("click",this.preventClick,!0),s.addEventListener("dblclick",this.preventClick,!0)):(a.clearTimeout(this.removePreventClickId),this.removePreventClickId=null)},e.onTrackClick=function(i,o){var s=this;if(o===void 0&&(o="y"),!!this.options.clickOnTrack){var a=Bt(this.el);this.axis[o].scrollbar.rect=this.axis[o].scrollbar.el.getBoundingClientRect();var c=this.axis[o].scrollbar,d=c.rect[this.axis[o].offsetAttr],u=parseInt(this.elStyles[this.axis[o].sizeAttr],10),l=this.contentWrapperEl[this.axis[o].scrollOffsetAttr],m=o==="y"?this.mouseY-d:this.mouseX-d,f=m<0?-1:1,p=f===-1?l-u:l+u,g=function v(){if(f===-1){if(l>p){var h;l-=s.options.clickOnTrackSpeed,s.contentWrapperEl.scrollTo((h={},h[s.axis[o].offsetAttr]=l,h)),a.requestAnimationFrame(v)}}else if(l=i.left&&this.mouseX<=i.left+i.width&&this.mouseY>=i.top&&this.mouseY<=i.top+i.height},e.findChild=function(i,o){var s=i.matches||i.webkitMatchesSelector||i.mozMatchesSelector||i.msMatchesSelector;return Array.prototype.filter.call(i.children,function(a){return s.call(a,o)})[0]},t}();he.defaultOptions={autoHide:!0,forceVisible:!1,clickOnTrack:!0,clickOnTrackSpeed:40,classNames:{contentEl:"simplebar-content",contentWrapper:"simplebar-content-wrapper",offset:"simplebar-offset",mask:"simplebar-mask",wrapper:"simplebar-wrapper",placeholder:"simplebar-placeholder",scrollbar:"simplebar-scrollbar",track:"simplebar-track",heightAutoObserverWrapperEl:"simplebar-height-auto-observer-wrapper",heightAutoObserverEl:"simplebar-height-auto-observer",visible:"simplebar-visible",horizontal:"simplebar-horizontal",vertical:"simplebar-vertical",hover:"simplebar-hover",dragging:"simplebar-dragging"},scrollbarMinSize:25,scrollbarMaxSize:0,timeout:1e3};he.instances=new WeakMap;he.initDOMLoadedElements=function(){document.removeEventListener("DOMContentLoaded",this.initDOMLoadedElements),window.removeEventListener("load",this.initDOMLoadedElements),Array.prototype.forEach.call(document.querySelectorAll("[data-simplebar]"),function(t){t.getAttribute("data-simplebar")!=="init"&&!he.instances.has(t)&&new he(t,yo(t.attributes))})};he.removeObserver=function(){this.globalObserver.disconnect()};he.initHtmlApi=function(){this.initDOMLoadedElements=this.initDOMLoadedElements.bind(this),typeof MutationObserver!="undefined"&&(this.globalObserver=new MutationObserver(he.handleMutations),this.globalObserver.observe(document,{childList:!0,subtree:!0})),document.readyState==="complete"||document.readyState!=="loading"&&!document.documentElement.doScroll?window.setTimeout(this.initDOMLoadedElements):(document.addEventListener("DOMContentLoaded",this.initDOMLoadedElements),window.addEventListener("load",this.initDOMLoadedElements))};he.handleMutations=function(t){t.forEach(function(e){Array.prototype.forEach.call(e.addedNodes,function(n){n.nodeType===1&&(n.hasAttribute("data-simplebar")?!he.instances.has(n)&&document.documentElement.contains(n)&&new he(n,yo(n.attributes)):Array.prototype.forEach.call(n.querySelectorAll("[data-simplebar]"),function(i){i.getAttribute("data-simplebar")!=="init"&&!he.instances.has(i)&&document.documentElement.contains(i)&&new he(i,yo(i.attributes))}))}),Array.prototype.forEach.call(e.removedNodes,function(n){n.nodeType===1&&(n.getAttribute("data-simplebar")==="init"?he.instances.has(n)&&!document.documentElement.contains(n)&&he.instances.get(n).unMount():Array.prototype.forEach.call(n.querySelectorAll('[data-simplebar="init"]'),function(i){he.instances.has(i)&&!document.documentElement.contains(i)&&he.instances.get(i).unMount()}))})})};he.getOptions=yo;bo.default&&he.initHtmlApi();var Um=Le(Ym());function Km(t){return"error"in t&&"exception"in t}function Wn(t){return"error"in t}function Gm(t){return typeof t.next=="string"}function ie(t){let e=["","null","undefined"];return Array.isArray(t)?t.length>0:typeof t=="string"&&!e.includes(t)||typeof t=="number"||typeof t=="boolean"?!0:typeof t=="object"&&t!==null}function Bi(t){return t.every(e=>typeof e!="undefined"&&e!==null)}function Fi(t){for(let e of t.options)e.selected&&(e.selected=!1);t.value=""}function bl(t){return typeof t!==null&&typeof t!="undefined"}function fL(){let{csrftoken:t}=Um.default.parse(document.cookie);if(typeof t=="undefined")throw new Error("Invalid or missing CSRF token");return t}function Xm(t,e,n){return Pe(this,null,function*(){let i=fL(),o=new Headers({"X-CSRFToken":i}),s;typeof n!="undefined"&&(s=JSON.stringify(n),o.set("content-type","application/json"));let a=yield fetch(t,{method:e,body:s,headers:o,credentials:"same-origin"}),c=a.headers.get("Content-Type");if(typeof c=="string"&&c.includes("text"))return{error:yield a.text()};let d=yield a.json();return!a.ok&&Array.isArray(d)?{error:d.join(` +`)}:!a.ok&&"detail"in d?{error:d.detail}:d})}function So(t,e){return Pe(this,null,function*(){return yield Xm(t,"PATCH",e)})}function hL(t){return Pe(this,null,function*(){return yield Xm(t,"GET")})}function Qm(t){return Pe(this,null,function*(){return yield hL(t)})}function*j(...t){for(let e of t)for(let n of document.querySelectorAll(e))n!==null&&(yield n)}function ae(t){return document.getElementById(t)}function Jm(t,e=0){let n=e,i=document.getElementById("content-title");i!==null&&(n+=i.getBoundingClientRect().bottom);let o=t.getBoundingClientRect().top+window.pageYOffset+n;window.scrollTo({top:o,behavior:"smooth"})}function Zm(t){let e=[];for(let n of t.querySelectorAll("select"))if(n!==null){let i={name:n.name,options:[]};for(let o of n.options)o.selected&&i.options.push(o.value);e=[...e,i]}return e}function zi(t,e){t!==null&&(typeof e=="undefined"?window.getComputedStyle(t).display==="none"?t.style.display="":t.style.display="none":e==="show"?t.style.display="":t.style.display="none")}function*eg(t){for(let e of t.querySelectorAll("td"))e!==null&&ie(e.innerText)&&e.innerText!=="\u2014"&&(yield e.innerText.replaceAll(/[\n\r]/g,"").trim())}function Ve(t,e,n){function i(s){return!!(typeof n=="string"&&s!==null&&s.matches(n))}function o(s){if(s!==null&&s.parentElement!==null&&!i(s)){for(let a of s.parentElement.querySelectorAll(e))if(a!==null)return a;return o(s.parentElement.parentElement)}return null}return o(t)}function Vn(t,e,n=null,i=[]){let o=document.createElement(t);if(e!==null)for(let s of Object.keys(e)){let a=s,c=e[a];a in o&&(o[a]=c)}n!==null&&n.length>0&&o.classList.add(...n);for(let s of i)o.appendChild(s);return o}function tg(t,e){let n=new Map;for(let i of t){let o=i[e];n.has(o)||n.set(o,i)}return Array.from(n.values())}function pL(t){let e=t.target;if(e.tagName==="BUTTON"){let n=e,i=n.getAttribute("return-url"),o=n.form;o!==null&&ie(i)&&(o.action=i,o.submit())}}function mL(t,e){let n=new Set;for(let i of e.querySelectorAll("*[name]"))i.validity.valid?(i.classList.contains("is-invalid")&&i.classList.remove("is-invalid"),i.classList.contains("is-valid")||i.classList.add("is-valid")):(n.add(i.name),i.classList.contains("is-valid")&&i.classList.remove("is-valid"),i.classList.contains("is-invalid")||i.classList.add("is-invalid"));if(n.size!==0){let i=e.elements.namedItem(Array.from(n)[0]);Jm(i),t.preventDefault()}}function gL(){for(let t of j("button[return-url]"))t.addEventListener("click",pL)}function ng(){for(let t of j("form")){let e=t.querySelectorAll("button[type=submit]");for(let n of e)n.addEventListener("click",i=>mL(i,t))}gL()}function ig(){for(let t of j("a.set_speed"))if(t!==null){let e=function(n){n.preventDefault();let i=t.getAttribute("data"),o=document.getElementById(t.target);o!==null&&i!==null&&(o.value=i)};t.addEventListener("click",e)}}var yl={vlangroup_edit:{region:{hide:["id_sitegroup","id_site","id_location","id_rack","id_clustergroup","id_cluster"],show:["id_region"]},"site group":{hide:["id_region","id_site","id_location","id_rack","id_clustergroup","id_cluster"],show:["id_sitegroup"]},site:{hide:["id_location","id_rack","id_clustergroup","id_cluster"],show:["id_region","id_sitegroup","id_site"]},location:{hide:["id_rack","id_clustergroup","id_cluster"],show:["id_region","id_sitegroup","id_site","id_location"]},rack:{hide:["id_clustergroup","id_cluster"],show:["id_region","id_sitegroup","id_site","id_location","id_rack"]},"cluster group":{hide:["id_region","id_sitegroup","id_site","id_location","id_rack","id_cluster"],show:["id_clustergroup"]},cluster:{hide:["id_region","id_sitegroup","id_site","id_location","id_rack"],show:["id_clustergroup","id_cluster"]},default:{hide:["id_region","id_sitegroup","id_site","id_location","id_rack","id_clustergroup","id_cluster"],show:[]}}};function El(t,e){var n;for(let i of j(t)){let o=(n=i.parentElement)==null?void 0:n.parentElement;o!==null&&(e==="show"?zi(o,"show"):zi(o,"hide"))}}function rg(t,e){let n=e.options[e.selectedIndex].innerText.toLowerCase();for(let[i,o]of Object.entries(yl[t]))if(n.endsWith(i)){for(let s of o.hide)El(`#${s}`,"hide");for(let s of o.show)El(`#${s}`,"show");break}else for(let s of yl[t].default.hide)El(`#${s}`,"hide")}function og(){for(let t of Object.keys(yl))for(let e of j(`html[data-netbox-url-name="${t}"] #id_scope_type`))rg(t,e),e.addEventListener("change",()=>rg(t,e))}function vL(t){var n,i;let e=(i=(n=t==null?void 0:t.parentElement)==null?void 0:n.parentElement)!=null?i:null;return e!==null&&e.classList.contains("row")?e:null}function st(t,e){let n=vL(t);if(t!==null&&n!==null){zi(n,e);let i=new Event(`netbox.select.disabled.${t.name}`);switch(e){case"hide":t.disabled=!0,t.dispatchEvent(i);break;case"show":t.disabled=!1,t.dispatchEvent(i)}}}function bL(){let t=[ae("id_tagged_vlans"),ae("id_untagged_vlan"),ae("id_vlan_group")];if(Bi(t)){let[e,n]=t;Fi(n),Fi(e);for(let i of t)st(i,"hide")}}function yL(){let t=[ae("id_tagged_vlans"),ae("id_untagged_vlan"),ae("id_vlan_group")];if(Bi(t)){let[e,n,i]=t;Fi(e),st(i,"show"),st(n,"show"),st(e,"hide")}}function EL(){let t=[ae("id_tagged_vlans"),ae("id_untagged_vlan"),ae("id_vlan_group")];if(Bi(t)){let[e,n,i]=t;st(e,"show"),st(i,"show"),st(n,"show")}}function _L(){let t=[ae("id_tagged_vlans"),ae("id_untagged_vlan"),ae("id_vlan_group")];if(Bi(t)){let[e,n,i]=t;Fi(e),st(i,"show"),st(n,"show"),st(e,"hide")}}function sg(t){switch(t.value){case"access":yL();break;case"tagged":EL();break;case"tagged-all":_L();break;case"":bL();break}}function ag(){let t=ae("id_mode");t!==null&&(t.addEventListener("change",()=>sg(t)),sg(t))}function lg(){for(let t of[ng,ig,og,ag])t()}var mg=Le(pg());window.Collapse=Me;window.Modal=Nt;window.Popover=an;window.Toast=_t;window.Tooltip=et;function SL(){for(let t of j(".masonry"))new mg.default(t,{itemSelector:".masonry-item",percentPosition:!0})}function wL(){for(let t of j('[data-bs-toggle="tooltip"]'))new et(t,{container:"body"})}function TL(){for(let t of j('[data-bs-toggle="modal"]'))new Nt(t)}function Sn(t,e,n,i){let o="mdi-alert";switch(t){case"warning":o="mdi-alert";break;case"success":o="mdi-check-circle";break;case"info":o="mdi-information";break;case"danger":o="mdi-alert";break}let s=document.createElement("div");s.setAttribute("class","toast-container position-fixed bottom-0 end-0 m-3");let a=document.createElement("div");a.setAttribute("class",`toast bg-${t}`),a.setAttribute("role","alert"),a.setAttribute("aria-live","assertive"),a.setAttribute("aria-atomic","true");let c=document.createElement("div");c.setAttribute("class",`toast-header bg-${t} text-body`);let d=document.createElement("i");d.setAttribute("class",`mdi ${o}`);let u=document.createElement("strong");u.setAttribute("class","me-auto ms-1"),u.innerText=e;let l=document.createElement("button");l.setAttribute("type","button"),l.setAttribute("class","btn-close"),l.setAttribute("data-bs-dismiss","toast"),l.setAttribute("aria-label","Close");let m=document.createElement("div");if(m.setAttribute("class","toast-body"),c.appendChild(d),c.appendChild(u),typeof i!="undefined"){let p=document.createElement("small");p.setAttribute("class","text-muted"),c.appendChild(p)}return c.appendChild(l),m.innerText=n.trim(),a.appendChild(c),a.appendChild(m),s.appendChild(a),document.body.appendChild(s),new _t(a)}function xL(){let{hash:t}=location;if(t&&t.match(/^#tab_.+$/)){let e=t.replace("tab_","");for(let n of j(`ul.nav.nav-tabs .nav-link[data-bs-target="${e}"]`))new cn(n).show()}}function OL(){let t=document.querySelectorAll(".sidebar .accordion-item");function e(n){for(let i of t)i!==n?i.classList.remove("is-open"):i.classList.toggle("is-open")}for(let n of t)for(let i of n.querySelectorAll(".accordion-button"))i.addEventListener("click",()=>{e(n)})}function AL(){for(let t of j("a.image-preview")){let e=`${Math.round(window.innerWidth/4)}px`,n=Vn("img",{src:t.href});n.style.maxWidth=e;let i=Vn("div",null,null,[n]);new an(t,{customClass:"image-preview-popover",trigger:"hover",html:!0,content:i})}}function gg(){for(let t of[wL,TL,SL,xL,AL,OL])t()}var wl=Le(Sl());function LL(t,e){var c;let n=t.currentTarget,i=Ve(n,"span.search-obj-selected"),o=Ve(n,"input.search-obj-type"),s=n.getAttribute("data-search-value"),a="";i!==null&&o!==null&&(ie(s)&&a!==s?(a=s,i.innerHTML=(c=e.textContent)!=null?c:"Error",o.value=s):(a="",i.innerHTML="All Objects",o.value=""))}function DL(){for(let t of j(".search-obj-selector"))for(let e of t.querySelectorAll("li > button.dropdown-item"))e.addEventListener("click",n=>LL(n,e))}function ML(){var t;for(let e of j("input.interface-filter")){let o=function(s){let a=s.target,c=new RegExp(a.value.toLowerCase().trim());for(let d of i){let u=d.querySelector('input[type="checkbox"][name="pk"]');u!==null&&(u.checked=!1);let l=d.getAttribute("data-name");typeof l=="string"&&(c.test(l.toLowerCase().trim())?d.classList.contains("d-none")&&d.classList.remove("d-none"):d.classList.add("d-none"))}},n=Ve(e,"table"),i=Array.from((t=n==null?void 0:n.querySelectorAll("tbody > tr"))!=null?t:[]).filter(s=>s!==null);e.addEventListener("keyup",(0,wl.default)(o,300))}}function IL(){var t;for(let e of j("input.object-filter")){let o=function(s){let a=s.target,c=new RegExp(a.value.toLowerCase().trim()),d=[];for(let u of i){let l=u.querySelector('input[type="checkbox"][name="pk"]');l!==null&&(l.checked=!1);for(let m of eg(u))if(c.test(m.toLowerCase())){d.push(u);break}}for(let u of i)d.indexOf(u)>=0?u.classList.remove("d-none"):u.classList.add("d-none")},n=Ve(e,"table"),i=Array.from((t=n==null?void 0:n.querySelectorAll("tbody > tr"))!=null?t:[]).filter(s=>s!==null);e.addEventListener("keyup",(0,wl.default)(o,300))}}function bg(){for(let t of[DL,IL,ML])t()}function yg(t,e,n){return Math.min(Math.max(t,n),e)}var Yn=class extends Error{constructor(e){super(`Failed to parse color: "${e}"`)}};function kL(t){if(typeof t!="string")throw new Yn(t);if(t.trim().toLowerCase()==="transparent")return[0,0,0,0];let e=t.trim();e=qL.test(t)?function(a){let c=a.toLowerCase().trim(),d=PL[function(u){let l=5381,m=u.length;for(;m;)l=33*l^u.charCodeAt(--m);return(l>>>0)%2341}(c)];if(!d)throw new Yn(a);return`#${d}`}(t):t;let n=NL.exec(e);if(n){let a=Array.from(n).slice(1);return[...a.slice(0,3).map(c=>parseInt(Wi(c,2),16)),parseInt(Wi(a[3]||"f",2),16)/255]}let i=RL.exec(e);if(i){let a=Array.from(i).slice(1);return[...a.slice(0,3).map(c=>parseInt(c,16)),parseInt(a[3]||"ff",16)/255]}let o=jL.exec(e);if(o){let a=Array.from(o).slice(1);return[...a.slice(0,3).map(c=>parseInt(c,10)),parseFloat(a[3]||"1")]}let s=HL.exec(e);if(s){let[a,c,d,u]=Array.from(s).slice(1).map(parseFloat);if(yg(0,100,c)!==c)throw new Yn(t);if(yg(0,100,d)!==d)throw new Yn(t);return[...$L(a,c,d),u||1]}throw new Yn(t)}var Eg=t=>parseInt(t.replace(/_/g,""),36),PL="1q29ehhb 1n09sgk7 1kl1ekf_ _yl4zsno 16z9eiv3 1p29lhp8 _bd9zg04 17u0____ _iw9zhe5 _to73___ _r45e31e _7l6g016 _jh8ouiv _zn3qba8 1jy4zshs 11u87k0u 1ro9yvyo 1aj3xael 1gz9zjz0 _3w8l4xo 1bf1ekf_ _ke3v___ _4rrkb__ 13j776yz _646mbhl _nrjr4__ _le6mbhl 1n37ehkb _m75f91n _qj3bzfz 1939yygw 11i5z6x8 _1k5f8xs 1509441m 15t5lwgf _ae2th1n _tg1ugcv 1lp1ugcv 16e14up_ _h55rw7n _ny9yavn _7a11xb_ 1ih442g9 _pv442g9 1mv16xof 14e6y7tu 1oo9zkds 17d1cisi _4v9y70f _y98m8kc 1019pq0v 12o9zda8 _348j4f4 1et50i2o _8epa8__ _ts6senj 1o350i2o 1mi9eiuo 1259yrp0 1ln80gnw _632xcoy 1cn9zldc _f29edu4 1n490c8q _9f9ziet 1b94vk74 _m49zkct 1kz6s73a 1eu9dtog _q58s1rz 1dy9sjiq __u89jo3 _aj5nkwg _ld89jo3 13h9z6wx _qa9z2ii _l119xgq _bs5arju 1hj4nwk9 1qt4nwk9 1ge6wau6 14j9zlcw 11p1edc_ _ms1zcxe _439shk6 _jt9y70f _754zsow 1la40eju _oq5p___ _x279qkz 1fa5r3rv _yd2d9ip _424tcku _8y1di2_ _zi2uabw _yy7rn9h 12yz980_ __39ljp6 1b59zg0x _n39zfzp 1fy9zest _b33k___ _hp9wq92 1il50hz4 _io472ub _lj9z3eo 19z9ykg0 _8t8iu3a 12b9bl4a 1ak5yw0o _896v4ku _tb8k8lv _s59zi6t _c09ze0p 1lg80oqn 1id9z8wb _238nba5 1kq6wgdi _154zssg _tn3zk49 _da9y6tc 1sg7cv4f _r12jvtt 1gq5fmkz 1cs9rvci _lp9jn1c _xw1tdnb 13f9zje6 16f6973h _vo7ir40 _bt5arjf _rc45e4t _hr4e100 10v4e100 _hc9zke2 _w91egv_ _sj2r1kk 13c87yx8 _vqpds__ _ni8ggk8 _tj9yqfb 1ia2j4r4 _7x9b10u 1fc9ld4j 1eq9zldr _5j9lhpx _ez9zl6o _md61fzm".split(" ").reduce((t,e)=>{let n=Eg(e.substring(0,3)),i=Eg(e.substring(3)).toString(16),o="";for(let s=0;s<6-i.length;s++)o+="0";return t[n]=`${o}${i}`,t},{}),Wi=(t,e)=>Array.from(Array(e)).map(()=>t).join(""),NL=new RegExp(`^#${Wi("([a-f0-9])",3)}([a-f0-9])?$`,"i"),RL=new RegExp(`^#${Wi("([a-f0-9]{2})",3)}([a-f0-9]{2})?$`,"i"),jL=new RegExp(`^rgba?\\(\\s*(\\d+)\\s*${Wi(",\\s*(\\d+)\\s*",2)}(?:,\\s*([\\d.]+))?\\s*\\)$`,"i"),HL=/^hsla?\(\s*([\d.]+)\s*,\s*([\d.]+)%\s*,\s*([\d.]+)%(?:\s*,\s*([\d.]+))?\s*\)$/i,qL=/^[a-z]+$/i,_g=t=>Math.round(255*t),$L=(t,e,n)=>{let i=n/100;if(e===0)return[i,i,i].map(_g);let o=(t%360+360)%360/60,s=(1-Math.abs(2*i-1))*(e/100),a=s*(1-Math.abs(o%2-1)),c=0,d=0,u=0;o>=0&&o<1?(c=s,d=a):o>=1&&o<2?(c=a,d=s):o>=2&&o<3?(d=s,u=a):o>=3&&o<4?(d=a,u=s):o>=4&&o<5?(c=a,u=s):o>=5&&o<6&&(c=s,u=a);let l=i-s/2;return[c+l,d+l,u+l].map(_g)};function BL(t){if(t==="transparent")return 0;function e(s){let a=s/255;return a<=.03928?a/12.92:Math.pow((a+.055)/1.055,2.4)}let[n,i,o]=kL(t);return .2126*e(n)+.7152*e(i)+.0722*e(o)}function FL(t){return BL(t)>.179}function Vi(t){return FL(t)?"#000":"#fff"}var Ug=Le(Sl()),Ol=Le($g());var Mo={};(function(t,e){typeof Mo=="object"&&typeof module=="object"?module.exports=e():typeof define=="function"&&define.amd?define([],e):typeof Mo=="object"?Mo.SlimSelect=e():t.SlimSelect=e()})(window,function(){return n={},t.m=e=[function(i,o,s){"use strict";function a(d,u){u=u||{bubbles:!1,cancelable:!1,detail:void 0};var l=document.createEvent("CustomEvent");return l.initCustomEvent(d,u.bubbles,u.cancelable,u.detail),l}var c;o.__esModule=!0,o.hasClassInTree=function(d,u){function l(m,f){return f&&m&&m.classList&&m.classList.contains(f)?m:null}return l(d,u)||function m(f,p){return f&&f!==document?l(f,p)?f:m(f.parentNode,p):null}(d,u)},o.ensureElementInView=function(d,u){var l=d.scrollTop+d.offsetTop,m=l+d.clientHeight,f=u.offsetTop,p=f+u.clientHeight;f=window.innerHeight?"above":l?u:"below"},o.debounce=function(d,u,l){var m;return u===void 0&&(u=100),l===void 0&&(l=!1),function(){for(var f=[],p=0;p[^<>]*'+v+"")},o.kebabCase=function(d){var u=d.replace(/[A-Z\u00C0-\u00D6\u00D8-\u00DE]/g,function(l){return"-"+l.toLowerCase()});return d[0]===d[0].toUpperCase()?u.substring(1):u},typeof(c=window).CustomEvent!="function"&&(a.prototype=c.Event.prototype,c.CustomEvent=a)},function(i,o,s){"use strict";o.__esModule=!0;var a=(c.prototype.newOption=function(u){return{id:u.id?u.id:String(Math.floor(1e8*Math.random())),value:u.value?u.value:"",text:u.text?u.text:"",innerHTML:u.innerHTML?u.innerHTML:"",selected:!!u.selected&&u.selected,display:u.display===void 0||u.display,disabled:!!u.disabled&&u.disabled,placeholder:!!u.placeholder&&u.placeholder,class:u.class?u.class:void 0,data:u.data?u.data:{},mandatory:!!u.mandatory&&u.mandatory}},c.prototype.add=function(u){this.data.push({id:String(Math.floor(1e8*Math.random())),value:u.value,text:u.text,innerHTML:"",selected:!1,display:!0,disabled:!1,placeholder:!1,class:void 0,mandatory:u.mandatory,data:{}})},c.prototype.parseSelectData=function(){this.data=[];for(var u=0,l=this.main.select.element.childNodes;u',placeholder:this.placeholder,searchPlaceholder:"Filter",onChange:()=>this.handleSlimChange()}),this.getStaticParams(),this.getDynamicParams(),this.getPathKeys();for(let[a,c]of this.staticParams.entries())this.queryParams.set(a,c);for(let a of this.dynamicParams.keys())this.updateQueryParams(a);for(let a of this.pathValues.keys())this.updatePathValues(a);this.queryParams.set("brief",[!0]),this.updateQueryUrl(),this.resetClasses(),this.setSlimStyles(),this.initResetButton(),this.initRefreshButton(),this.addEventListeners();let o=this.base.getAttribute("data-fetch-trigger"),s=this.base.closest(".content-container .collapse");switch(zg(o)?this.trigger=o:s!==null?this.trigger="collapse":this.trigger="load",this.trigger){case"collapse":s!==null&&(s.addEventListener("show.bs.collapse",()=>this.loadData()),s.addEventListener("hide.bs.collapse",()=>this.resetOptions()));break;case"open":this.slim.beforeOpen=()=>this.loadData();break;case"load":Promise.all([this.loadData()]);break}}get options(){return this.slim.data.data.filter(Yg)}set options(e){let n=e;this.nullOption!==null&&(n=[this.nullOption,...n]);let i=tg(n,"value"),o=typeof i.find(a=>a.value==="")!="undefined",s=i.findIndex(a=>a.value==="");o&&s>=0?i[s]=this.emptyOption:i.unshift(this.emptyOption),this.slim.setData(i)}resetOptions(){this.options=[this.emptyOption]}disable(){this.slim.slim.singleSelected!==null?this.slim.slim.singleSelected.container.hasAttribute("disabled")||this.slim.slim.singleSelected.container.setAttribute("disabled",""):this.slim.slim.multiSelected!==null&&(this.slim.slim.multiSelected.container.hasAttribute("disabled")||this.slim.slim.multiSelected.container.setAttribute("disabled","")),this.slim.disable()}enable(){this.slim.slim.singleSelected!==null?this.slim.slim.singleSelected.container.hasAttribute("disabled")&&this.slim.slim.singleSelected.container.removeAttribute("disabled"):this.slim.slim.multiSelected!==null&&this.slim.slim.multiSelected.container.hasAttribute("disabled")&&this.slim.slim.multiSelected.container.removeAttribute("disabled"),this.slim.enable()}addEventListeners(){let e=(0,Ug.default)(i=>this.handleSearch(i),300,!1);this.slim.slim.search.input.addEventListener("keyup",i=>{if(!i.key.match(/^(Arrow|Enter|Tab).*/))return e(i)}),this.slim.slim.search.input.addEventListener("paste",i=>e(i)),this.slim.slim.list.addEventListener("scroll",()=>this.handleScroll()),this.base.addEventListener(`netbox.select.atbottom.${this.name}`,()=>this.fetchOptions(this.more,"merge")),this.base.addEventListener(`netbox.select.disabled.${this.name}`,i=>this.handleDisableEnable(i));let n=new Set([...this.dynamicParams.keys(),...this.pathValues.keys()]);for(let i of n){let o=document.querySelector(`[name="${i}"]`);o!==null&&o.addEventListener("change",s=>this.handleEvent(s)),this.base.addEventListener(`netbox.select.onload.${i}`,s=>this.handleEvent(s))}}loadData(){return Pe(this,null,function*(){try{this.disable(),yield this.getOptions("replace")}catch(e){console.error(e)}finally{this.setOptionStyles(),this.enable(),this.base.dispatchEvent(this.loadEvent)}})}getPreselectedOptions(){return Array.from(this.base.options).filter(e=>e.selected).filter(e=>!(e.value==="---------"||e.innerText==="---------"))}processOptions(e,n="merge"){return Pe(this,null,function*(){let i=this.getPreselectedOptions(),o=i.map(c=>c.getAttribute("value")).filter(ie),s=i.map(c=>({value:c.value,text:c.innerText,selected:!0,disabled:!1})),a=[];for(let c of e.results){let d=c.display;typeof c._depth=="number"&&c._depth>0&&(d=`${"\u2500".repeat(c._depth)} ${d}`);let u={},l=c.id.toString(),m,f,p;for(let[v,h]of Object.entries(c)){if(!["id","slug"].includes(v)&&["string","number","boolean"].includes(typeof h)){let y=v.replaceAll("_","-");u[y]=String(h)}this.disabledAttributes.some(y=>y.toLowerCase()===v.toLowerCase())&&(typeof h=="string"&&h.toLowerCase()!=="false"||typeof h=="boolean"&&h===!0||typeof h=="number"&&h>0)&&(p=!0)}o.some(v=>this.disabledOptions.includes(v))&&(p=!0),o.includes(l)&&(f=!0,p=!1);let g={value:l,text:d,data:u,style:m,selected:f,disabled:p};a=[...a,g]}switch(n){case"merge":this.options=[...this.options,...a];break;case"replace":this.options=[...s,...a];break}Gm(e)?this.more=e.next:this.more=null})}fetchOptions(e,n="merge"){return Pe(this,null,function*(){if(typeof e=="string"){let i=yield Qm(e);if(Wn(i))return Km(i)?this.handleError(i.exception,i.error):this.handleError(`Error Fetching Options for field '${this.name}'`,i.error);yield this.processOptions(i,n)}})}getOptions(e="merge"){return Pe(this,null,function*(){if(this.queryUrl.includes("{{")){this.resetOptions();return}yield this.fetchOptions(this.queryUrl,e)})}handleSearch(e){return Pe(this,null,function*(){let{value:n}=e.target,i=Ol.default.stringifyUrl({url:this.queryUrl,query:{q:n}});yield this.fetchOptions(i,"merge"),this.slim.data.search(n),this.slim.render()})}handleScroll(){let e=this.slim.slim.list.scrollTop+this.slim.slim.list.offsetHeight===this.slim.slim.list.scrollHeight;this.atBottom&&!e?(this.atBottom=!1,this.base.dispatchEvent(this.bottomEvent)):!this.atBottom&&e&&(this.atBottom=!0,this.base.dispatchEvent(this.bottomEvent))}handleEvent(e){let n=e.target;this.updateQueryParams(n.name),this.updatePathValues(n.name),this.updateQueryUrl(),Promise.all([this.loadData()])}handleDisableEnable(e){let n=e.target;n.disabled===!0?this.disable():n.disabled===!1&&this.enable()}handleError(e,n){Sn("danger",e,n).show(),this.resetOptions()}handleSlimChange(){let e=this.slim.slim;e&&(e.container.classList.contains("is-invalid")||this.base.classList.contains("is-invalid"))&&(e.container.classList.remove("is-invalid"),this.base.classList.remove("is-invalid")),this.base.dispatchEvent(this.loadEvent)}updateQueryUrl(){let e={};for(let[o,s]of this.queryParams.entries())e[o]=s;let n=this.url;for(let[o,s]of this.pathValues.entries())for(let a of this.url.matchAll(new RegExp(`({{${o}}})`,"g")))ie(s)&&(n=n.replaceAll(a[1],s.toString()));let i=Ol.default.stringifyUrl({url:n,query:e});this.queryUrl!==i&&(this.queryUrl=i,this.base.setAttribute("data-url",i))}updateQueryParams(e){let n=document.querySelector(`[name="${e}"]`);if(n!==null){let i=[];if(n.multiple?i=Array.from(n.options).filter(o=>o.selected).map(o=>o.value):n.value!==""&&(i=[n.value]),i.length>0){this.dynamicParams.updateValue(e,i);let o=this.dynamicParams.get(e);if(typeof o!="undefined"){let{queryParam:s,queryValue:a}=o,c=[];if(this.staticParams.has(s)){let d=this.staticParams.get(s);typeof d!="undefined"&&(c=[...d,...a])}else c=a;c.length>0?this.queryParams.set(s,c):this.queryParams.delete(s)}}else{let o=this.dynamicParams.queryParam(e);o!==null&&this.queryParams.delete(o)}}}updatePathValues(e){let n=e.replaceAll(/^id_/gi,""),i=ae(`id_${n}`);i!==null&&this.url.includes("{{")&&Boolean(this.url.match(new RegExp(`({{(${e})}})`,"g")))&&(ie(i.value)?this.pathValues.set(e,i.value):this.pathValues.set(e,""))}getPlaceholder(){let e=this.name;if(this.base.id){let n=document.querySelector(`label[for="${this.base.id}"]`);n!==null&&(e=`Select ${n.innerText.trim()}`)}return e}getDisabledOptions(){var n;let e=[];if(Fg(this.base))try{let i=JSON.parse((n=this.base.getAttribute("data-query-param-exclude"))!=null?n:"[]");e=[...e,...i]}catch(i){console.group(`Unable to parse data-query-param-exclude value on select element '${this.name}'`),console.warn(i),console.groupEnd()}return e}getDisabledAttributes(){let e=[...Kg],n=this.base.getAttribute("disabled-indicator");return ie(n)&&(e=[...e,n]),e}getPathKeys(){for(let e of this.url.matchAll(new RegExp("{{(.+)}}","g")))this.pathValues.set(e[1],"")}getDynamicParams(){let e=this.base.getAttribute("data-dynamic-params");try{this.dynamicParams.addFromJson(e)}catch(n){console.group(`Unable to determine dynamic query parameters for select field '${this.name}'`),console.warn(n),console.groupEnd()}}getStaticParams(){let e=this.base.getAttribute("data-static-params");try{if(ie(e)){let n=JSON.parse(e);if(Vg(n))for(let{queryParam:i,queryValue:o}of n)Array.isArray(o)?this.staticParams.set(i,o):this.staticParams.set(i,[o])}}catch(n){console.group(`Unable to determine static query parameters for select field '${this.name}'`),console.warn(n),console.groupEnd()}}setSlimStyles(){let{width:e,height:n}=this.slim.slim.container.getBoundingClientRect();this.base.style.opacity="0",this.base.style.width=`${e}px`,this.base.style.height=`${n}px`,this.base.style.display="block",this.base.style.position="absolute",this.base.style.pointerEvents="none"}setOptionStyles(){for(let e of this.options)if("data"in e&&"id"in e&&typeof e.data!="undefined"&&typeof e.id!="undefined"&&"color"in e.data){let n=e.id,i=e.data,o=document.createElement("style"),s=`#${i.color}`,a=Vi(s);o.setAttribute("data-netbox",n),o.innerHTML=` div.ss-values div.ss-value[data-id="${n}"], div.ss-list div.ss-option:not(.ss-disabled)[data-id="${n}"] { @@ -14,7 +14,7 @@ color: ${a} !important; } `.replaceAll(` -`,"").trim(),document.head.appendChild(o)}}resetClasses(){let e=this.slim.slim;if(e)for(let n of this.base.classList)e.container.classList.remove(n)}initResetButton(){let e=Ve(this.base,"button[data-reset-select]");e!==null&&e.addEventListener("click",()=>{window.location.assign(window.location.origin+window.location.pathname)})}initRefreshButton(){if(this.allowRefresh){let e=Vn("button",{type:"button"},["btn","btn-sm","btn-ghost-dark"],[Vn("i",null,["mdi","mdi-reload"])]);e.addEventListener("click",()=>this.loadData()),e.type="button",this.slim.slim.search.container.appendChild(e)}}};function Gg(){for(let t of j(".netbox-api-select"))new Al(t)}function Xg(t){return typeof t.value=="string"&&t.value!==""}function Qg(t,e){if(t.slim.singleSelected!==null)if(Xg(e)){let n=`#${e.value}`,i=Vi(n);t.slim.singleSelected.container.style.backgroundColor=n,t.slim.singleSelected.container.style.color=i}else t.slim.singleSelected.container.removeAttribute("style")}function Jg(){for(let t of j("select.netbox-color-select")){for(let n of t.options)if(Xg(n)){let i=`#${n.value}`,o=Vi(i);n.style.backgroundColor=i,n.style.color=o}let e=new Un({select:t,allowDeselect:!0,deselectLabel:''});for(let n of e.data.data)if("selected"in n&&n.selected){Qg(e,n);break}for(let n of t.classList)e.slim.container.classList.remove(n);e.onChange=n=>Qg(e,n)}}function Zg(){for(let t of j(".netbox-static-select"))if(t!==null){let e=document.querySelector(`label[for="${t.id}"]`),n;e!==null&&(n=`Select ${e.innerText.trim()}`);let i=new Un({select:t,allowDeselect:!0,deselectLabel:'',placeholder:n});for(let o of t.classList)i.slim.container.classList.remove(o)}}function ev(){for(let t of[Gg,Jg,Zg])t()}function QL(t){let e=t.getAttribute("data-url"),n=t.classList.contains("connected"),i=n?"planned":"connected";re(e)&&So(e,{status:i}).then(o=>{var s;if(Wn(o)){Sn("danger","Error",o.error).show();return}else{let a=(s=t.parentElement)==null?void 0:s.parentElement,c=t.querySelector("i.mdi, span.mdi");n?(a.classList.remove("success"),a.classList.add("info"),t.classList.remove("connected","btn-warning"),t.classList.add("btn-info"),t.title="Mark Installed",c.classList.remove("mdi-lan-disconnect"),c.classList.add("mdi-lan-connect")):(a.classList.remove("info"),a.classList.add("success"),t.classList.remove("btn-success"),t.classList.add("connected","btn-warning"),t.title="Mark Installed",c.classList.remove("mdi-lan-connect"),c.classList.add("mdi-lan-disconnect"))}})}function tv(){for(let t of j("button.cable-toggle"))t.addEventListener("click",()=>QL(t))}var nv=class{set(e,n,i){return e[n]=i,!0}get(e,n){return e[n]}has(e,n){return n in e}},Io=class{constructor(e,n){Q(this,"handlers");Q(this,"proxy");Q(this,"options");Q(this,"key","");if(this.options=n,typeof this.options.key=="string"?this.key=this.options.key:this.key=this.generateStateKey(e),this.options.persist){let i=this.retrieve();i!==null&&(e=K(K({},e),i))}this.handlers=new nv,this.proxy=new Proxy(e,this.handlers),this.options.persist&&this.save()}generateStateKey(e){return`netbox-${window.btoa(Object.keys(e).join("---"))}`}get(e){return this.handlers.get(this.proxy,e)}set(e,n){this.handlers.set(this.proxy,e,n),this.options.persist&&this.save()}all(){return this.proxy}keys(){return Object.keys(this.proxy)}values(){return Object.values(this.proxy)}save(){let e=JSON.stringify(this.proxy);localStorage.setItem(this.key,e)}retrieve(){let e=localStorage.getItem(this.key);return e!==null?JSON.parse(e):null}};function ko(t,e={}){return new Io(t,e)}var Cl=ko({hidden:!1},{persist:!0,key:"netbox-object-depth"});var Ll=ko({view:"images-and-labels"},{persist:!0});function iv(t,e){e.setAttribute("data-depth-indicators",t?"hidden":"shown"),e.innerText=t?"Show Depth Indicators":"Hide Depth Indicators"}function rv(){for(let t of j(".record-depth"))t.style.display=""}function ov(){for(let t of j(".record-depth"))t.style.display="none"}function JL(t,e){let n=t.get("hidden");t.set("hidden",!n);let i=t.get("hidden");i?ov():rv(),iv(i,e)}function sv(){let t=Cl.get("hidden");for(let e of j("button.toggle-depth"))iv(t,e),e.addEventListener("click",n=>{JL(Cl,n.currentTarget)},!1);t?ov():t||rv()}function ZL(t){let e=Array.from(t.options);for(let n=1;n=0;n--){let i=e[n];if(i.selected){let o=t.options[n+1];i=t.removeChild(i),o=t.replaceChild(i,o),t.insertBefore(o,i)}}}function av(){for(let t of j("#move-option-up")){let e=t.getAttribute("data-target");if(e!==null)for(let n of j(`#${e}`))t.addEventListener("click",()=>ZL(n))}for(let t of j("#move-option-down")){let e=t.getAttribute("data-target");if(e!==null)for(let n of j(`#${e}`))t.addEventListener("click",()=>eD(n))}}function tD(t){let e=t.currentTarget;e.form!==null&&e.form.submit()}function lv(){for(let t of j("select.per-page"))t.addEventListener("change",tD)}var Kn="netbox-color-mode",nD="Light Mode",iD="Dark Mode",cv="mdi-lightbulb-on",uv="mdi-lightbulb";function rD(t){return t==="dark"||t==="light"}function oD(t){return localStorage.setItem(Kn,t)}function sD(t){var e,n;document.documentElement.setAttribute(`data-${Kn}`,t);for(let i of j("span.color-mode-text"))t==="light"?i.innerText=iD:t==="dark"&&(i.innerText=nD);for(let i of j("i.color-mode-icon","span.color-mode-icon"))t==="light"?(i.classList.remove(cv),i.classList.add(uv)):t==="dark"&&(i.classList.remove(uv),i.classList.add(cv));for(let i of j(".rack_elevation")){let o=(n=(e=i.contentDocument)==null?void 0:e.querySelector("svg"))!=null?n:null;o!==null&&o.setAttribute(`data-${Kn}`,t)}}function Ke(t){for(let e of[oD,sD])e(t)}function aD(){let t=localStorage.getItem(Kn);t==="light"?Ke("dark"):t==="dark"?Ke("light"):console.warn("Unable to determine the current color mode")}function lD(){let t=localStorage.getItem(Kn),e=document.documentElement.getAttribute(`data-${Kn}`);if(re(e)&&re(t))return Ke(t);let n="none";for(let i of["dark","light"])if(window.matchMedia(`(prefers-color-scheme: ${i})`).matches){n=i;break}if(re(t)&&!re(e)&&rD(t))return Ke(t);switch(n){case"dark":return Ke("dark");case"light":return Ke("light");case"none":return Ke("light");default:return Ke("light")}}function cD(){for(let t of j("button.color-mode-toggle"))t.addEventListener("click",aD)}function dv(){window.addEventListener("load",lD);for(let t of[cD])t()}function uD(t){let e=t.currentTarget,n=new FormData(e);n.get("ui.colormode")==="dark"?Ke("dark"):n.get("ui.colormode")==="light"&&Ke("light")}function fv(){let t=ae("preferences-update");t!==null&&t.addEventListener("submit",uD)}function hv(t,e){return t.replace(/[^\-.\w\s]/g,"").replace(/^[\s.]+|[\s.]+$/g,"").replace(/[-.\s]+/g,"-").toLowerCase().substring(0,e)}function pv(){let t=document.getElementById("id_slug"),e=document.getElementById("reslug");if(t===null||e===null)return;let n=t.getAttribute("slug-source"),i=document.getElementById(`id_${n}`);if(i===null){console.error("Unable to find field for slug field.");return}let o=t.getAttribute("maxlength"),s=50;o&&(s=Number(o)),i.addEventListener("blur",()=>{t.value=hv(i.value,s)}),e.addEventListener("click",()=>{t.value=hv(i.value,s)})}function dD(t){if(!t.currentTarget.checked)for(let n of j('input[type="checkbox"].toggle',"input#select-all"))n.checked=!1}function fD(t){let e=t.currentTarget,n=Ve(e,"table"),i=document.getElementById("select-all-box"),o=document.getElementById("select-all");if(n!==null){for(let s of n.querySelectorAll('tr:not(.d-none) input[type="checkbox"][name="pk"]'))e.checked?s.checked=!0:s.checked=!1;i!==null&&(e.checked?i.classList.remove("d-none"):(i.classList.add("d-none"),o!==null&&(o.checked=!1)))}}function hD(t){let e=t.currentTarget,n=ae("select-all-box");if(n!==null)for(let i of n.querySelectorAll('button[type="submit"]'))e.checked?i.disabled=!1:i.disabled=!0}function mv(){for(let e of j('table tr th > input[type="checkbox"].toggle'))e.addEventListener("change",fD);for(let e of j('input[type="checkbox"][name="pk"]'))e.addEventListener("change",dD);let t=ae("select-all");t!==null&&t.addEventListener("change",hD)}function gv(){for(let t of[sv,tv,pv,mv,fv,lv,av])t()}function vv(){let t=document.querySelectorAll("body > div#django-messages > div.django-message.toast");for(let e of t)e!==null&&new _t(e).show()}var yv=Le(bv());function Ev(){for(let t of j("a.copy-token","button.copy-secret"))new yv.default(t)}var Po=Le(_v());function Sv(){(0,Po.default)(".date-picker",{allowInput:!0}),(0,Po.default)(".datetime-picker",{allowInput:!0,enableSeconds:!0,enableTime:!0,time_24hr:!0}),(0,Po.default)(".time-picker",{allowInput:!0,enableSeconds:!0,enableTime:!0,noCalendar:!0,time_24hr:!0})}function pD(){for(let t of j('select[name="columns"] option'))t.selected=!0}function mD(){for(let t of j('select[name="columns"]'))t.value=""}function gD(t){for(let e of j("#id_available_columns > option"))if(e.selected){for(let n of j("#id_columns"))n.appendChild(e.cloneNode(!0));e.remove()}t.preventDefault()}function vD(t){for(let e of j("#id_columns > option"))if(e.selected){for(let n of j("#id_available_columns"))n.appendChild(e.cloneNode(!0));e.remove()}t.preventDefault()}function bD(t,e){return Pe(this,null,function*(){return yield So(t,e)})}function yD(t){var c,d;t.preventDefault();let e=t.currentTarget,n=e.getAttribute("data-url");if(n==null){Sn("danger","Error Updating Table Configuration","No API path defined for configuration form.").show();return}let i=Zm(e),o=Object.assign({},...i.map(u=>({[u.name]:u.options}))),a=((d=(c=e.getAttribute("data-config-root"))==null?void 0:c.split("."))!=null?d:[]).reduceRight((u,l)=>({[l]:u}),o);bD(n,a).then(u=>{Wn(u)?Sn("danger","Error Updating Table Configuration",u.error).show():location.reload()})}function wv(){for(let t of j("#save_tableconfig"))t.addEventListener("click",pD);for(let t of j("#reset_tableconfig"))t.addEventListener("click",mD);for(let t of j("#add_columns"))t.addEventListener("click",gD);for(let t of j("#remove_columns"))t.addEventListener("click",vD);for(let t of j("form.userconfigform"))t.addEventListener("submit",yD)}function Tv(t){return typeof t=="string"&&["show","hide"].includes(t)}var No=class extends Error{constructor(e,n){super(e);Q(this,"table");this.table=n}},kl=class{constructor(e,n){Q(this,"button");Q(this,"enabledRows");Q(this,"disabledRows");this.button=e,this.enabledRows=n.querySelectorAll('tr[data-enabled="enabled"]'),this.disabledRows=n.querySelectorAll('tr[data-enabled="disabled"]')}get directive(){if(this.button.classList.contains("toggle-disabled"))return"disabled";if(this.button.classList.contains("toggle-enabled"))return"enabled";throw console.warn(this.button),new Error("Toggle button does not contain expected class")}toggleEnabledRows(){for(let e of this.enabledRows)e.classList.toggle("d-none")}toggleDisabledRows(){for(let e of this.disabledRows)e.classList.toggle("d-none")}set buttonState(e){Tv(e)&&this.button.setAttribute("data-state",e)}get buttonState(){let e=this.button.getAttribute("data-state");return Tv(e)?e:null}toggleButton(){this.buttonState==="show"?this.button.innerText=this.button.innerText.replaceAll("Show","Hide"):this.buttonState==="hide"&&(this.button.innerText=this.button.innerText.replaceAll("Hide","Show"))}toggleRows(){this.directive==="enabled"?this.toggleEnabledRows():this.directive==="disabled"&&this.toggleDisabledRows()}toggleState(){this.buttonState==="show"?this.buttonState="hide":this.buttonState==="hide"&&(this.buttonState="show")}toggle(){this.toggleState(),this.toggleButton(),this.toggleRows()}handleClick(e){e.currentTarget.isEqualNode(this.button)&&this.toggle()}},xv=class{constructor(e){Q(this,"table");Q(this,"enabledButton");Q(this,"disabledButton");Q(this,"caption",null);this.table=e;try{let n=Ve(this.table,"button.toggle-enabled"),i=Ve(this.table,"button.toggle-disabled"),o=this.table.querySelector("caption");if(this.caption=o,n===null)throw new No("Table is missing a 'toggle-enabled' button.",e);if(i===null)throw new No("Table is missing a 'toggle-disabled' button.",e);n.addEventListener("click",s=>this.handleClick(s,this)),i.addEventListener("click",s=>this.handleClick(s,this)),this.enabledButton=new kl(n,this.table),this.disabledButton=new kl(i,this.table)}catch(n){if(n instanceof No){console.debug("Table does not contain enable/disable toggle buttons");return}else throw n}}get captionText(){return this.caption!==null?this.caption.innerText:""}set captionText(e){this.caption!==null&&(this.caption.innerText=e)}toggleCaption(){let e=this.enabledButton.buttonState==="show",n=this.disabledButton.buttonState==="show";e&&!n?this.captionText="Showing Enabled Interfaces":e&&n?this.captionText="Showing Enabled & Disabled Interfaces":!e&&n?this.captionText="Showing Disabled Interfaces":!e&&!n?this.captionText="Hiding Enabled & Disabled Interfaces":this.captionText=""}handleClick(e,n){let i=e.currentTarget,o=i.isEqualNode(n.enabledButton.button),s=i.isEqualNode(n.disabledButton.button);o?n.enabledButton.handleClick(e):s&&n.disabledButton.handleClick(e),n.toggleCaption()}};function Ov(){for(let t of j("table"))new xv(t)}var Av=class{constructor(e){Q(this,"base");Q(this,"state");Q(this,"activeLink",null);Q(this,"sections",[]);this.base=e,this.state=new Io({pinned:!0},{persist:!0,key:"netbox-sidenav"}),this.init(),this.initSectionLinks(),this.initLinks()}bodyHas(e){return document.body.hasAttribute(`data-sidenav-${e}`)}bodyRemove(...e){for(let n of e)document.body.removeAttribute(`data-sidenav-${n}`)}bodyAdd(...e){for(let n of e)document.body.setAttribute(`data-sidenav-${n}`,"")}init(){for(let e of this.base.querySelectorAll(".sidenav-toggle"))e.addEventListener("click",n=>this.onToggle(n));for(let e of j(".sidenav-toggle-mobile"))e.addEventListener("click",n=>this.onMobileToggle(n));window.innerWidth>1200&&(this.state.get("pinned")&&this.pin(),this.state.get("pinned")||this.unpin(),window.addEventListener("resize",()=>this.onResize())),window.innerWidth<1200&&(this.bodyRemove("hide"),this.bodyAdd("hidden"),window.addEventListener("resize",()=>this.onResize())),this.base.addEventListener("mouseenter",()=>this.onEnter()),this.base.addEventListener("mouseleave",()=>this.onLeave())}initLinks(){for(let e of this.getActiveLinks())this.bodyHas("show")?this.activateLink(e,"expand"):this.bodyHas("hidden")&&this.activateLink(e,"collapse")}show(){this.bodyAdd("show"),this.bodyRemove("hidden","hide")}hide(){this.bodyAdd("hidden"),this.bodyRemove("pinned","show");for(let e of this.base.querySelectorAll(".collapse"))e.classList.remove("show")}pin(){this.bodyAdd("show","pinned"),this.bodyRemove("hidden"),this.state.set("pinned",!0)}unpin(){this.bodyRemove("pinned","show"),this.bodyAdd("hidden");for(let e of this.base.querySelectorAll(".collapse"))e.classList.remove("show");this.state.set("pinned",!1)}handleSectionClick(e){e.preventDefault();let n=e.target;this.activeLink=n,this.closeInactiveSections()}closeInactiveSections(){for(let[e,n]of this.sections)e!==this.activeLink&&(e.classList.add("collapsed"),e.setAttribute("aria-expanded","false"),n.hide())}initSectionLinks(){for(let e of j(".navbar-nav .nav-item .nav-link[data-bs-toggle]"))if(e.parentElement!==null){let n=e.parentElement.querySelector(".collapse");if(n!==null){let i=new Me(n,{toggle:!1});this.sections.push([e,i]),e.addEventListener("click",o=>this.handleSectionClick(o))}}}activateLink(e,n){var o;let i=e.closest(".collapse");if(bl(i)){let s=(o=i.parentElement)==null?void 0:o.querySelector(".nav-link");if(bl(s))switch(s.classList.add("active"),n){case"expand":s.setAttribute("aria-expanded","true"),i.classList.add("show"),e.classList.add("active");break;case"collapse":s.setAttribute("aria-expanded","false"),i.classList.remove("show"),e.classList.remove("active");break}}}*getActiveLinks(){for(let e of this.base.querySelectorAll(".navbar-nav .nav .nav-item a.nav-link")){let n=new RegExp(e.href,"gi");window.location.href.match(n)&&(yield e)}}onEnter(){if(!this.bodyHas("pinned")){this.bodyRemove("hide","hidden"),this.bodyAdd("show");for(let e of this.getActiveLinks())this.activateLink(e,"expand")}}onLeave(){if(!this.bodyHas("pinned")){this.bodyRemove("show"),this.bodyAdd("hide");for(let e of this.getActiveLinks())this.activateLink(e,"collapse");this.bodyRemove("hide"),this.bodyAdd("hidden")}}onResize(){this.bodyHas("show")&&!this.bodyHas("pinned")&&(this.bodyRemove("show"),this.bodyAdd("hidden"))}onToggle(e){e.preventDefault(),this.state.get("pinned")?this.unpin():this.pin()}onMobileToggle(e){e.preventDefault(),this.bodyHas("hidden")?this.show():this.hide()}};function Cv(){for(let t of j(".sidenav"))new Av(t)}function Lv(t,e){switch(t){case"images-and-labels":{Pl("image.device-image",e),Pl("text.device-image-label",e);break}case"images-only":{Pl("image.device-image",e),Nl("text.device-image-label",e);break}case"labels-only":{Nl("image.device-image",e),Nl("text.device-image-label",e);break}}}function Pl(t,e){var i,o;let n=(o=(i=e.contentDocument)==null?void 0:i.querySelectorAll(t))!=null?o:[];for(let s of n)s.classList.remove("hidden")}function Nl(t,e){var i,o;let n=(o=(i=e.contentDocument)==null?void 0:i.querySelectorAll(t))!=null?o:[];for(let s of n)s.classList.add("hidden")}function ED(t,e){e.set("view",t);for(let n of j(".rack_elevation"))Lv(t,n)}function Dv(){let t=Ll.get("view");for(let e of j("select.rack-view"))e.selectedIndex=[...e.options].findIndex(n=>n.value==t),e.addEventListener("change",n=>{ED(n.currentTarget.value,Ll)},!1);for(let e of j(".rack_elevation"))e.addEventListener("load",()=>{Lv(t,e)})}function Mv(){for(let t of j("*[data-href]")){let e=t.getAttribute("data-href");re(e)&&t.addEventListener("click",()=>{window.location.assign(e)})}}function Iv(){for(let t of[gg,dv,vv,lg,bg,ev,Sv,gv,Ev,wv,Ov,Cv,Dv,Mv])t()}function _D(){let t=document.querySelector(".content-container");t!==null&&t.focus()}window.addEventListener("load",_D);document.readyState!=="loading"?Iv():document.addEventListener("DOMContentLoaded",Iv);})(); +`,"").trim(),document.head.appendChild(o)}}resetClasses(){let e=this.slim.slim;if(e)for(let n of this.base.classList)e.container.classList.remove(n)}initResetButton(){let e=Ve(this.base,"button[data-reset-select]");e!==null&&e.addEventListener("click",()=>{window.location.assign(window.location.origin+window.location.pathname)})}initRefreshButton(){if(this.allowRefresh){let e=Vn("button",{type:"button"},["btn","btn-sm","btn-ghost-dark"],[Vn("i",null,["mdi","mdi-reload"])]);e.addEventListener("click",()=>this.loadData()),e.type="button",this.slim.slim.search.container.appendChild(e)}}};function Gg(){for(let t of j(".netbox-api-select"))new Al(t)}function Xg(t){return typeof t.value=="string"&&t.value!==""}function Qg(t,e){if(t.slim.singleSelected!==null)if(Xg(e)){let n=`#${e.value}`,i=Vi(n);t.slim.singleSelected.container.style.backgroundColor=n,t.slim.singleSelected.container.style.color=i}else t.slim.singleSelected.container.removeAttribute("style")}function Jg(){for(let t of j("select.netbox-color-select")){for(let n of t.options)if(Xg(n)){let i=`#${n.value}`,o=Vi(i);n.style.backgroundColor=i,n.style.color=o}let e=new Un({select:t,allowDeselect:!0,deselectLabel:''});for(let n of e.data.data)if("selected"in n&&n.selected){Qg(e,n);break}for(let n of t.classList)e.slim.container.classList.remove(n);e.onChange=n=>Qg(e,n)}}function Zg(){for(let t of j(".netbox-static-select"))if(t!==null){let e=document.querySelector(`label[for="${t.id}"]`),n;e!==null&&(n=`Select ${e.innerText.trim()}`);let i=new Un({select:t,allowDeselect:!0,deselectLabel:'',placeholder:n});for(let o of t.classList)i.slim.container.classList.remove(o)}}function ev(){for(let t of[Gg,Jg,Zg])t()}function ZL(t){let e=t.getAttribute("data-url"),n=t.classList.contains("connected"),i=n?"planned":"connected";ie(e)&&So(e,{status:i}).then(o=>{var s;if(Wn(o)){Sn("danger","Error",o.error).show();return}else{let a=(s=t.parentElement)==null?void 0:s.parentElement,c=t.querySelector("i.mdi, span.mdi");n?(a.classList.remove("success"),a.classList.add("info"),t.classList.remove("connected","btn-warning"),t.classList.add("btn-info"),t.title="Mark Installed",c.classList.remove("mdi-lan-disconnect"),c.classList.add("mdi-lan-connect")):(a.classList.remove("info"),a.classList.add("success"),t.classList.remove("btn-success"),t.classList.add("connected","btn-warning"),t.title="Mark Installed",c.classList.remove("mdi-lan-connect"),c.classList.add("mdi-lan-disconnect"))}})}function tv(){for(let t of j("button.cable-toggle"))t.addEventListener("click",()=>ZL(t))}var nv=class{set(e,n,i){return e[n]=i,!0}get(e,n){return e[n]}has(e,n){return n in e}},Io=class{constructor(e,n){Q(this,"handlers");Q(this,"proxy");Q(this,"options");Q(this,"key","");if(this.options=n,typeof this.options.key=="string"?this.key=this.options.key:this.key=this.generateStateKey(e),this.options.persist){let i=this.retrieve();i!==null&&(e=K(K({},e),i))}this.handlers=new nv,this.proxy=new Proxy(e,this.handlers),this.options.persist&&this.save()}generateStateKey(e){return`netbox-${window.btoa(Object.keys(e).join("---"))}`}get(e){return this.handlers.get(this.proxy,e)}set(e,n){this.handlers.set(this.proxy,e,n),this.options.persist&&this.save()}all(){return this.proxy}keys(){return Object.keys(this.proxy)}values(){return Object.values(this.proxy)}save(){let e=JSON.stringify(this.proxy);localStorage.setItem(this.key,e)}retrieve(){let e=localStorage.getItem(this.key);return e!==null?JSON.parse(e):null}};function ko(t,e={}){return new Io(t,e)}var Cl=ko({hidden:!1},{persist:!0,key:"netbox-object-depth"});var Ll=ko({view:"images-and-labels"},{persist:!0});function iv(t,e){e.setAttribute("data-depth-indicators",t?"hidden":"shown"),e.innerText=t?"Show Depth Indicators":"Hide Depth Indicators"}function rv(){for(let t of j(".record-depth"))t.style.display=""}function ov(){for(let t of j(".record-depth"))t.style.display="none"}function eD(t,e){let n=t.get("hidden");t.set("hidden",!n);let i=t.get("hidden");i?ov():rv(),iv(i,e)}function sv(){let t=Cl.get("hidden");for(let e of j("button.toggle-depth"))iv(t,e),e.addEventListener("click",n=>{eD(Cl,n.currentTarget)},!1);t?ov():t||rv()}function tD(t){let e=Array.from(t.options);for(let n=1;n=0;n--){let i=e[n];if(i.selected){let o=t.options[n+1];i=t.removeChild(i),o=t.replaceChild(i,o),t.insertBefore(o,i)}}}function av(){for(let t of j("#move-option-up")){let e=t.getAttribute("data-target");if(e!==null)for(let n of j(`#${e}`))t.addEventListener("click",()=>tD(n))}for(let t of j("#move-option-down")){let e=t.getAttribute("data-target");if(e!==null)for(let n of j(`#${e}`))t.addEventListener("click",()=>nD(n))}}function iD(t){let e=t.currentTarget;e.form!==null&&e.form.submit()}function lv(){for(let t of j("select.per-page"))t.addEventListener("change",iD)}var Kn="netbox-color-mode",rD="Light Mode",oD="Dark Mode",cv="mdi-lightbulb-on",uv="mdi-lightbulb";function sD(t){return t==="dark"||t==="light"}function aD(t){return localStorage.setItem(Kn,t)}function lD(t){var e,n;document.documentElement.setAttribute(`data-${Kn}`,t);for(let i of j("span.color-mode-text"))t==="light"?i.innerText=oD:t==="dark"&&(i.innerText=rD);for(let i of j("i.color-mode-icon","span.color-mode-icon"))t==="light"?(i.classList.remove(cv),i.classList.add(uv)):t==="dark"&&(i.classList.remove(uv),i.classList.add(cv));for(let i of j(".rack_elevation")){let o=(n=(e=i.contentDocument)==null?void 0:e.querySelector("svg"))!=null?n:null;o!==null&&o.setAttribute(`data-${Kn}`,t)}}function Ke(t){for(let e of[aD,lD])e(t)}function cD(){let t=localStorage.getItem(Kn);t==="light"?Ke("dark"):t==="dark"?Ke("light"):console.warn("Unable to determine the current color mode")}function uD(){let t=localStorage.getItem(Kn),e=document.documentElement.getAttribute(`data-${Kn}`);if(ie(e)&&ie(t))return Ke(t);let n="none";for(let i of["dark","light"])if(window.matchMedia(`(prefers-color-scheme: ${i})`).matches){n=i;break}if(ie(t)&&!ie(e)&&sD(t))return Ke(t);switch(n){case"dark":return Ke("dark");case"light":return Ke("light");case"none":return Ke("light");default:return Ke("light")}}function dD(){for(let t of j("button.color-mode-toggle"))t.addEventListener("click",cD)}function dv(){window.addEventListener("load",uD);for(let t of[dD])t()}function fD(t){let e=t.currentTarget,n=new FormData(e);n.get("ui.colormode")==="dark"?Ke("dark"):n.get("ui.colormode")==="light"&&Ke("light")}function fv(){let t=ae("preferences-update");t!==null&&t.addEventListener("submit",fD)}function hv(t,e){return t.replace(/[^\-.\w\s]/g,"").replace(/^[\s.]+|[\s.]+$/g,"").replace(/[-.\s]+/g,"-").toLowerCase().substring(0,e)}function pv(){let t=document.getElementById("id_slug"),e=document.getElementById("reslug");if(t===null||e===null)return;let n=t.getAttribute("slug-source"),i=document.getElementById(`id_${n}`);if(i===null){console.error("Unable to find field for slug field.");return}let o=t.getAttribute("maxlength"),s=50;o&&(s=Number(o)),i.addEventListener("blur",()=>{t.value=hv(i.value,s)}),e.addEventListener("click",()=>{t.value=hv(i.value,s)})}function hD(t){if(!t.currentTarget.checked)for(let n of j('input[type="checkbox"].toggle',"input#select-all"))n.checked=!1}function pD(t){let e=t.currentTarget,n=Ve(e,"table"),i=document.getElementById("select-all-box"),o=document.getElementById("select-all");if(n!==null){for(let s of n.querySelectorAll('tr:not(.d-none) input[type="checkbox"][name="pk"]'))e.checked?s.checked=!0:s.checked=!1;i!==null&&(e.checked?i.classList.remove("d-none"):(i.classList.add("d-none"),o!==null&&(o.checked=!1)))}}function mD(t){let e=t.currentTarget,n=ae("select-all-box");if(n!==null)for(let i of n.querySelectorAll('button[type="submit"]'))e.checked?i.disabled=!1:i.disabled=!0}function mv(){for(let e of j('table tr th > input[type="checkbox"].toggle'))e.addEventListener("change",pD);for(let e of j('input[type="checkbox"][name="pk"]'))e.addEventListener("change",hD);let t=ae("select-all");t!==null&&t.addEventListener("change",mD)}function gv(){for(let t of[sv,tv,pv,mv,fv,lv,av])t()}function vv(){let t=document.querySelectorAll("body > div#django-messages > div.django-message.toast");for(let e of t)e!==null&&new _t(e).show()}var yv=Le(bv());function Ev(){for(let t of j("a.copy-token","button.copy-secret"))new yv.default(t)}var Po=Le(_v());function Sv(){(0,Po.default)(".date-picker",{allowInput:!0}),(0,Po.default)(".datetime-picker",{allowInput:!0,enableSeconds:!0,enableTime:!0,time_24hr:!0}),(0,Po.default)(".time-picker",{allowInput:!0,enableSeconds:!0,enableTime:!0,noCalendar:!0,time_24hr:!0})}function gD(){for(let t of j('select[name="columns"] option'))t.selected=!0}function vD(){for(let t of j('select[name="columns"]'))t.value=""}function bD(t){for(let e of j("#id_available_columns > option"))if(e.selected){for(let n of j("#id_columns"))n.appendChild(e.cloneNode(!0));e.remove()}t.preventDefault()}function yD(t){for(let e of j("#id_columns > option"))if(e.selected){for(let n of j("#id_available_columns"))n.appendChild(e.cloneNode(!0));e.remove()}t.preventDefault()}function ED(t,e){return Pe(this,null,function*(){return yield So(t,e)})}function _D(t){var c,d;t.preventDefault();let e=t.currentTarget,n=e.getAttribute("data-url");if(n==null){Sn("danger","Error Updating Table Configuration","No API path defined for configuration form.").show();return}let i=Zm(e),o=Object.assign({},...i.map(u=>({[u.name]:u.options}))),a=((d=(c=e.getAttribute("data-config-root"))==null?void 0:c.split("."))!=null?d:[]).reduceRight((u,l)=>({[l]:u}),o);ED(n,a).then(u=>{Wn(u)?Sn("danger","Error Updating Table Configuration",u.error).show():location.reload()})}function wv(){for(let t of j("#save_tableconfig"))t.addEventListener("click",gD);for(let t of j("#reset_tableconfig"))t.addEventListener("click",vD);for(let t of j("#add_columns"))t.addEventListener("click",bD);for(let t of j("#remove_columns"))t.addEventListener("click",yD);for(let t of j("form.userconfigform"))t.addEventListener("submit",_D)}function Tv(t){return typeof t=="string"&&["show","hide"].includes(t)}var No=class extends Error{constructor(e,n){super(e);Q(this,"table");this.table=n}},kl=class{constructor(e,n){Q(this,"button");Q(this,"enabledRows");Q(this,"disabledRows");this.button=e,this.enabledRows=n.querySelectorAll('tr[data-enabled="enabled"]'),this.disabledRows=n.querySelectorAll('tr[data-enabled="disabled"]')}get directive(){if(this.button.classList.contains("toggle-disabled"))return"disabled";if(this.button.classList.contains("toggle-enabled"))return"enabled";throw console.warn(this.button),new Error("Toggle button does not contain expected class")}toggleEnabledRows(){for(let e of this.enabledRows)e.classList.toggle("d-none")}toggleDisabledRows(){for(let e of this.disabledRows)e.classList.toggle("d-none")}set buttonState(e){Tv(e)&&this.button.setAttribute("data-state",e)}get buttonState(){let e=this.button.getAttribute("data-state");return Tv(e)?e:null}toggleButton(){this.buttonState==="show"?this.button.innerText=this.button.innerText.replaceAll("Show","Hide"):this.buttonState==="hide"&&(this.button.innerText=this.button.innerText.replaceAll("Hide","Show"))}toggleRows(){this.directive==="enabled"?this.toggleEnabledRows():this.directive==="disabled"&&this.toggleDisabledRows()}toggleState(){this.buttonState==="show"?this.buttonState="hide":this.buttonState==="hide"&&(this.buttonState="show")}toggle(){this.toggleState(),this.toggleButton(),this.toggleRows()}handleClick(e){e.currentTarget.isEqualNode(this.button)&&this.toggle()}},xv=class{constructor(e){Q(this,"table");Q(this,"enabledButton");Q(this,"disabledButton");Q(this,"caption",null);this.table=e;try{let n=Ve(this.table,"button.toggle-enabled"),i=Ve(this.table,"button.toggle-disabled"),o=this.table.querySelector("caption");if(this.caption=o,n===null)throw new No("Table is missing a 'toggle-enabled' button.",e);if(i===null)throw new No("Table is missing a 'toggle-disabled' button.",e);n.addEventListener("click",s=>this.handleClick(s,this)),i.addEventListener("click",s=>this.handleClick(s,this)),this.enabledButton=new kl(n,this.table),this.disabledButton=new kl(i,this.table)}catch(n){if(n instanceof No){console.debug("Table does not contain enable/disable toggle buttons");return}else throw n}}get captionText(){return this.caption!==null?this.caption.innerText:""}set captionText(e){this.caption!==null&&(this.caption.innerText=e)}toggleCaption(){let e=this.enabledButton.buttonState==="show",n=this.disabledButton.buttonState==="show";e&&!n?this.captionText="Showing Enabled Interfaces":e&&n?this.captionText="Showing Enabled & Disabled Interfaces":!e&&n?this.captionText="Showing Disabled Interfaces":!e&&!n?this.captionText="Hiding Enabled & Disabled Interfaces":this.captionText=""}handleClick(e,n){let i=e.currentTarget,o=i.isEqualNode(n.enabledButton.button),s=i.isEqualNode(n.disabledButton.button);o?n.enabledButton.handleClick(e):s&&n.disabledButton.handleClick(e),n.toggleCaption()}};function Ov(){for(let t of j("table"))new xv(t)}var Av=class{constructor(e){Q(this,"base");Q(this,"state");Q(this,"activeLink",null);Q(this,"sections",[]);this.base=e,this.state=new Io({pinned:!0},{persist:!0,key:"netbox-sidenav"}),this.init(),this.initSectionLinks(),this.initLinks()}bodyHas(e){return document.body.hasAttribute(`data-sidenav-${e}`)}bodyRemove(...e){for(let n of e)document.body.removeAttribute(`data-sidenav-${n}`)}bodyAdd(...e){for(let n of e)document.body.setAttribute(`data-sidenav-${n}`,"")}init(){for(let e of this.base.querySelectorAll(".sidenav-toggle"))e.addEventListener("click",n=>this.onToggle(n));for(let e of j(".sidenav-toggle-mobile"))e.addEventListener("click",n=>this.onMobileToggle(n));window.innerWidth>1200&&(this.state.get("pinned")&&this.pin(),this.state.get("pinned")||this.unpin(),window.addEventListener("resize",()=>this.onResize())),window.innerWidth<1200&&(this.bodyRemove("hide"),this.bodyAdd("hidden"),window.addEventListener("resize",()=>this.onResize())),this.base.addEventListener("mouseenter",()=>this.onEnter()),this.base.addEventListener("mouseleave",()=>this.onLeave())}initLinks(){for(let e of this.getActiveLinks())this.bodyHas("show")?this.activateLink(e,"expand"):this.bodyHas("hidden")&&this.activateLink(e,"collapse")}show(){this.bodyAdd("show"),this.bodyRemove("hidden","hide")}hide(){this.bodyAdd("hidden"),this.bodyRemove("pinned","show");for(let e of this.base.querySelectorAll(".collapse"))e.classList.remove("show")}pin(){this.bodyAdd("show","pinned"),this.bodyRemove("hidden"),this.state.set("pinned",!0)}unpin(){this.bodyRemove("pinned","show"),this.bodyAdd("hidden");for(let e of this.base.querySelectorAll(".collapse"))e.classList.remove("show");this.state.set("pinned",!1)}handleSectionClick(e){e.preventDefault();let n=e.target;this.activeLink=n,this.closeInactiveSections()}closeInactiveSections(){for(let[e,n]of this.sections)e!==this.activeLink&&(e.classList.add("collapsed"),e.setAttribute("aria-expanded","false"),n.hide())}initSectionLinks(){for(let e of j(".navbar-nav .nav-item .nav-link[data-bs-toggle]"))if(e.parentElement!==null){let n=e.parentElement.querySelector(".collapse");if(n!==null){let i=new Me(n,{toggle:!1});this.sections.push([e,i]),e.addEventListener("click",o=>this.handleSectionClick(o))}}}activateLink(e,n){var o;let i=e.closest(".collapse");if(bl(i)){let s=(o=i.parentElement)==null?void 0:o.querySelector(".nav-link");if(bl(s))switch(s.classList.add("active"),n){case"expand":s.setAttribute("aria-expanded","true"),i.classList.add("show"),e.classList.add("active");break;case"collapse":s.setAttribute("aria-expanded","false"),i.classList.remove("show"),e.classList.remove("active");break}}}*getActiveLinks(){for(let e of this.base.querySelectorAll(".navbar-nav .nav .nav-item a.nav-link")){let n=new RegExp(e.href,"gi");window.location.href.match(n)&&(yield e)}}onEnter(){if(!this.bodyHas("pinned")){this.bodyRemove("hide","hidden"),this.bodyAdd("show");for(let e of this.getActiveLinks())this.activateLink(e,"expand")}}onLeave(){if(!this.bodyHas("pinned")){this.bodyRemove("show"),this.bodyAdd("hide");for(let e of this.getActiveLinks())this.activateLink(e,"collapse");this.bodyRemove("hide"),this.bodyAdd("hidden")}}onResize(){this.bodyHas("show")&&!this.bodyHas("pinned")&&(this.bodyRemove("show"),this.bodyAdd("hidden"))}onToggle(e){e.preventDefault(),this.state.get("pinned")?this.unpin():this.pin()}onMobileToggle(e){e.preventDefault(),this.bodyHas("hidden")?this.show():this.hide()}};function Cv(){for(let t of j(".sidenav"))new Av(t)}function Lv(t,e){switch(t){case"images-and-labels":{Pl("image.device-image",e),Pl("text.device-image-label",e);break}case"images-only":{Pl("image.device-image",e),Nl("text.device-image-label",e);break}case"labels-only":{Nl("image.device-image",e),Nl("text.device-image-label",e);break}}}function Pl(t,e){var i,o;let n=(o=(i=e.contentDocument)==null?void 0:i.querySelectorAll(t))!=null?o:[];for(let s of n)s.classList.remove("hidden")}function Nl(t,e){var i,o;let n=(o=(i=e.contentDocument)==null?void 0:i.querySelectorAll(t))!=null?o:[];for(let s of n)s.classList.add("hidden")}function SD(t,e){e.set("view",t);for(let n of j(".rack_elevation"))Lv(t,n)}function Dv(){let t=Ll.get("view");for(let e of j("select.rack-view"))e.selectedIndex=[...e.options].findIndex(n=>n.value==t),e.addEventListener("change",n=>{SD(n.currentTarget.value,Ll)},!1);for(let e of j(".rack_elevation"))e.addEventListener("load",()=>{Lv(t,e)})}function Mv(){for(let t of j("*[data-href]")){let e=t.getAttribute("data-href");ie(e)&&t.addEventListener("click",()=>{window.location.assign(e)})}}function Iv(){for(let t of[gg,dv,vv,lg,bg,ev,Sv,gv,Ev,wv,Ov,Cv,Dv,Mv])t()}function wD(){let t=document.querySelector(".content-container");t!==null&&t.focus()}window.addEventListener("load",wD);document.readyState!=="loading"?Iv():document.addEventListener("DOMContentLoaded",Iv);})(); /* flatpickr v4.6.3, @license MIT */ /*! * Bootstrap v5.0.2 (https://getbootstrap.com/) diff --git a/netbox/project-static/dist/netbox.js.map b/netbox/project-static/dist/netbox.js.map index c2e1c5b4f..b95e6ba02 100644 --- a/netbox/project-static/dist/netbox.js.map +++ b/netbox/project-static/dist/netbox.js.map @@ -1,6 +1,6 @@ { "version": 3, "sources": ["../node_modules/core-js/internals/global.js", "../node_modules/core-js/internals/fails.js", "../node_modules/core-js/internals/descriptors.js", "../node_modules/core-js/internals/object-property-is-enumerable.js", "../node_modules/core-js/internals/create-property-descriptor.js", "../node_modules/core-js/internals/classof-raw.js", "../node_modules/core-js/internals/indexed-object.js", "../node_modules/core-js/internals/require-object-coercible.js", "../node_modules/core-js/internals/to-indexed-object.js", "../node_modules/core-js/internals/is-object.js", "../node_modules/core-js/internals/get-built-in.js", "../node_modules/core-js/internals/engine-user-agent.js", "../node_modules/core-js/internals/engine-v8-version.js", "../node_modules/core-js/internals/native-symbol.js", "../node_modules/core-js/internals/use-symbol-as-uid.js", "../node_modules/core-js/internals/is-symbol.js", "../node_modules/core-js/internals/ordinary-to-primitive.js", "../node_modules/core-js/internals/is-pure.js", "../node_modules/core-js/internals/set-global.js", "../node_modules/core-js/internals/shared-store.js", "../node_modules/core-js/internals/shared.js", "../node_modules/core-js/internals/to-object.js", "../node_modules/core-js/internals/has.js", "../node_modules/core-js/internals/uid.js", "../node_modules/core-js/internals/well-known-symbol.js", "../node_modules/core-js/internals/to-primitive.js", "../node_modules/core-js/internals/to-property-key.js", "../node_modules/core-js/internals/document-create-element.js", "../node_modules/core-js/internals/ie8-dom-define.js", "../node_modules/core-js/internals/object-get-own-property-descriptor.js", "../node_modules/core-js/internals/an-object.js", "../node_modules/core-js/internals/object-define-property.js", "../node_modules/core-js/internals/create-non-enumerable-property.js", "../node_modules/core-js/internals/inspect-source.js", "../node_modules/core-js/internals/native-weak-map.js", "../node_modules/core-js/internals/shared-key.js", "../node_modules/core-js/internals/hidden-keys.js", "../node_modules/core-js/internals/internal-state.js", "../node_modules/core-js/internals/redefine.js", "../node_modules/core-js/internals/to-integer.js", "../node_modules/core-js/internals/to-length.js", "../node_modules/core-js/internals/to-absolute-index.js", "../node_modules/core-js/internals/array-includes.js", "../node_modules/core-js/internals/object-keys-internal.js", "../node_modules/core-js/internals/enum-bug-keys.js", "../node_modules/core-js/internals/object-get-own-property-names.js", "../node_modules/core-js/internals/object-get-own-property-symbols.js", "../node_modules/core-js/internals/own-keys.js", "../node_modules/core-js/internals/copy-constructor-properties.js", "../node_modules/core-js/internals/is-forced.js", "../node_modules/core-js/internals/export.js", "../node_modules/core-js/internals/a-function.js", "../node_modules/core-js/internals/function-bind-context.js", "../node_modules/core-js/internals/is-array.js", "../node_modules/core-js/internals/array-species-constructor.js", "../node_modules/core-js/internals/array-species-create.js", "../node_modules/core-js/internals/array-iteration.js", "../node_modules/core-js/internals/array-method-is-strict.js", "../node_modules/core-js/internals/array-for-each.js", "../node_modules/core-js/internals/dom-iterables.js", "../node_modules/can-use-dom/index.js", "../node_modules/core-js/internals/array-method-has-species-support.js", "../node_modules/core-js/internals/object-keys.js", "../node_modules/core-js/internals/object-define-properties.js", "../node_modules/core-js/internals/html.js", "../node_modules/core-js/internals/object-create.js", "../node_modules/core-js/internals/add-to-unscopables.js", "../node_modules/core-js/internals/iterators.js", "../node_modules/core-js/internals/correct-prototype-getter.js", "../node_modules/core-js/internals/object-get-prototype-of.js", "../node_modules/core-js/internals/iterators-core.js", "../node_modules/core-js/internals/set-to-string-tag.js", "../node_modules/core-js/internals/create-iterator-constructor.js", "../node_modules/core-js/internals/a-possible-prototype.js", "../node_modules/core-js/internals/object-set-prototype-of.js", "../node_modules/core-js/internals/define-iterator.js", "../node_modules/core-js/modules/es.array.iterator.js", "../node_modules/core-js/internals/object-assign.js", "../node_modules/core-js/internals/to-string-tag-support.js", "../node_modules/core-js/internals/classof.js", "../node_modules/core-js/internals/object-to-string.js", "../node_modules/core-js/internals/to-string.js", "../node_modules/core-js/internals/whitespaces.js", "../node_modules/core-js/internals/string-trim.js", "../node_modules/core-js/internals/number-parse-int.js", "../node_modules/core-js/internals/string-multibyte.js", "../node_modules/core-js/internals/redefine-all.js", "../node_modules/core-js/internals/object-get-own-property-names-external.js", "../node_modules/core-js/internals/freezing.js", "../node_modules/core-js/internals/internal-metadata.js", "../node_modules/core-js/internals/is-array-iterator-method.js", "../node_modules/core-js/internals/get-iterator-method.js", "../node_modules/core-js/internals/get-iterator.js", "../node_modules/core-js/internals/iterator-close.js", "../node_modules/core-js/internals/iterate.js", "../node_modules/core-js/internals/an-instance.js", "../node_modules/core-js/internals/check-correctness-of-iteration.js", "../node_modules/core-js/internals/inherit-if-required.js", "../node_modules/core-js/internals/collection.js", "../node_modules/core-js/internals/collection-weak.js", "../node_modules/core-js/modules/es.weak-map.js", "../node_modules/lodash.throttle/index.js", "../node_modules/lodash.debounce/index.js", "../node_modules/lodash.memoize/index.js", "../node_modules/core-js/internals/array-reduce.js", "../node_modules/core-js/internals/engine-is-node.js", "../node_modules/core-js/internals/regexp-flags.js", "../node_modules/core-js/internals/regexp-sticky-helpers.js", "../node_modules/core-js/internals/regexp-unsupported-dot-all.js", "../node_modules/core-js/internals/regexp-unsupported-ncg.js", "../node_modules/core-js/internals/regexp-exec.js", "../node_modules/core-js/modules/es.regexp.exec.js", "../node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js", "../node_modules/core-js/internals/advance-string-index.js", "../node_modules/core-js/internals/regexp-exec-abstract.js", "../node_modules/core-js/internals/get-substitution.js", "../node_modules/cookie/index.js", "../node_modules/ev-emitter/ev-emitter.js", "../node_modules/get-size/get-size.js", "../node_modules/desandro-matches-selector/matches-selector.js", "../node_modules/fizzy-ui-utils/utils.js", "../node_modules/outlayer/item.js", "../node_modules/outlayer/outlayer.js", "../node_modules/masonry-layout/masonry.js", "../node_modules/just-debounce-it/index.js", "../node_modules/strict-uri-encode/index.js", "../node_modules/decode-uri-component/index.js", "../node_modules/split-on-first/index.js", "../node_modules/filter-obj/index.js", "../node_modules/query-string/index.js", "../node_modules/clipboard/dist/clipboard.js", "../node_modules/flatpickr/dist/flatpickr.js", "../node_modules/@popperjs/core/lib/index.js", "../node_modules/@popperjs/core/lib/enums.js", "../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js", "../node_modules/@popperjs/core/lib/dom-utils/getWindow.js", "../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js", "../node_modules/@popperjs/core/lib/modifiers/applyStyles.js", "../node_modules/@popperjs/core/lib/utils/getBasePlacement.js", "../node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js", "../node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js", "../node_modules/@popperjs/core/lib/dom-utils/contains.js", "../node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js", "../node_modules/@popperjs/core/lib/dom-utils/isTableElement.js", "../node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js", "../node_modules/@popperjs/core/lib/dom-utils/getParentNode.js", "../node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js", "../node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js", "../node_modules/@popperjs/core/lib/utils/math.js", "../node_modules/@popperjs/core/lib/utils/within.js", "../node_modules/@popperjs/core/lib/utils/getFreshSideObject.js", "../node_modules/@popperjs/core/lib/utils/mergePaddingObject.js", "../node_modules/@popperjs/core/lib/utils/expandToHashMap.js", "../node_modules/@popperjs/core/lib/modifiers/arrow.js", "../node_modules/@popperjs/core/lib/modifiers/computeStyles.js", "../node_modules/@popperjs/core/lib/modifiers/eventListeners.js", "../node_modules/@popperjs/core/lib/utils/getOppositePlacement.js", "../node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js", "../node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js", "../node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js", "../node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js", "../node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js", "../node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js", "../node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js", "../node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js", "../node_modules/@popperjs/core/lib/utils/rectToClientRect.js", "../node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js", "../node_modules/@popperjs/core/lib/utils/getVariation.js", "../node_modules/@popperjs/core/lib/utils/computeOffsets.js", "../node_modules/@popperjs/core/lib/utils/detectOverflow.js", "../node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js", "../node_modules/@popperjs/core/lib/modifiers/flip.js", "../node_modules/@popperjs/core/lib/modifiers/hide.js", "../node_modules/@popperjs/core/lib/modifiers/offset.js", "../node_modules/@popperjs/core/lib/modifiers/popperOffsets.js", "../node_modules/@popperjs/core/lib/utils/getAltAxis.js", "../node_modules/@popperjs/core/lib/modifiers/preventOverflow.js", "../node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js", "../node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js", "../node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js", "../node_modules/@popperjs/core/lib/utils/orderModifiers.js", "../node_modules/@popperjs/core/lib/utils/debounce.js", "../node_modules/@popperjs/core/lib/utils/mergeByName.js", "../node_modules/@popperjs/core/lib/createPopper.js", "../node_modules/@popperjs/core/lib/popper-lite.js", "../node_modules/@popperjs/core/lib/popper.js", "../node_modules/bootstrap/js/src/dom/selector-engine.js", "../node_modules/bootstrap/js/src/util/index.js", "../node_modules/bootstrap/js/src/dom/event-handler.js", "../node_modules/bootstrap/js/src/dom/data.js", "../node_modules/bootstrap/js/src/base-component.js", "../node_modules/bootstrap/js/src/alert.js", "../node_modules/bootstrap/js/src/button.js", "../node_modules/bootstrap/js/src/dom/manipulator.js", "../node_modules/bootstrap/js/src/carousel.js", "../node_modules/bootstrap/js/src/collapse.js", "../node_modules/bootstrap/js/src/dropdown.js", "../node_modules/bootstrap/js/src/util/scrollbar.js", "../node_modules/bootstrap/js/src/util/backdrop.js", "../node_modules/bootstrap/js/src/modal.js", "../node_modules/bootstrap/js/src/offcanvas.js", "../node_modules/bootstrap/js/src/util/sanitizer.js", "../node_modules/bootstrap/js/src/tooltip.js", "../node_modules/bootstrap/js/src/popover.js", "../node_modules/bootstrap/js/src/scrollspy.js", "../node_modules/bootstrap/js/src/tab.js", "../node_modules/bootstrap/js/src/toast.js", "../node_modules/core-js/modules/es.array.for-each.js", "../node_modules/core-js/modules/web.dom-collections.for-each.js", "../node_modules/core-js/modules/es.array.filter.js", "../node_modules/core-js/modules/es.object.assign.js", "../node_modules/core-js/modules/es.object.to-string.js", "../node_modules/core-js/modules/es.parse-int.js", "../node_modules/core-js/modules/es.string.iterator.js", "../node_modules/core-js/modules/web.dom-collections.iterator.js", "../node_modules/@juggle/resize-observer/lib/utils/resizeObservers.js", "../node_modules/@juggle/resize-observer/lib/algorithms/hasActiveObservations.js", "../node_modules/@juggle/resize-observer/lib/algorithms/hasSkippedObservations.js", "../node_modules/@juggle/resize-observer/lib/algorithms/deliverResizeLoopError.js", "../node_modules/@juggle/resize-observer/lib/ResizeObserverBoxOptions.js", "../node_modules/@juggle/resize-observer/lib/utils/freeze.js", "../node_modules/@juggle/resize-observer/lib/ResizeObserverSize.js", "../node_modules/@juggle/resize-observer/lib/DOMRectReadOnly.js", "../node_modules/@juggle/resize-observer/lib/utils/element.js", "../node_modules/@juggle/resize-observer/lib/utils/global.js", "../node_modules/@juggle/resize-observer/lib/algorithms/calculateBoxSize.js", "../node_modules/@juggle/resize-observer/lib/ResizeObserverEntry.js", "../node_modules/@juggle/resize-observer/lib/algorithms/calculateDepthForNode.js", "../node_modules/@juggle/resize-observer/lib/algorithms/broadcastActiveObservations.js", "../node_modules/@juggle/resize-observer/lib/algorithms/gatherActiveObservationsAtDepth.js", "../node_modules/@juggle/resize-observer/lib/utils/process.js", "../node_modules/@juggle/resize-observer/lib/utils/queueMicroTask.js", "../node_modules/@juggle/resize-observer/lib/utils/queueResizeObserver.js", "../node_modules/@juggle/resize-observer/lib/utils/scheduler.js", "../node_modules/@juggle/resize-observer/lib/ResizeObservation.js", "../node_modules/@juggle/resize-observer/lib/ResizeObserverDetail.js", "../node_modules/@juggle/resize-observer/lib/ResizeObserverController.js", "../node_modules/@juggle/resize-observer/lib/ResizeObserver.js", "../node_modules/core-js/modules/es.array.reduce.js", "../node_modules/core-js/modules/es.function.name.js", "../node_modules/core-js/modules/es.string.match.js", "../node_modules/core-js/modules/es.string.replace.js", "../node_modules/simplebar/src/helpers.js", "../node_modules/simplebar/src/scrollbar-width.js", "../node_modules/simplebar/src/simplebar.js", "../node_modules/simplebar/src/index.js", "../src/util.ts", "../src/forms/elements.ts", "../src/forms/speedSelector.ts", "../src/forms/scopeSelector.ts", "../src/forms/vlanTags.ts", "../src/forms/index.ts", "../src/bs.ts", "../src/search.ts", "../node_modules/color2k/src/guard.ts", "../node_modules/color2k/src/ColorError.ts", "../node_modules/color2k/src/parseToRgba.ts", "../node_modules/color2k/src/parseToHsla.ts", "../node_modules/color2k/src/hsla.ts", "../node_modules/color2k/src/adjustHue.ts", "../node_modules/color2k/src/darken.ts", "../node_modules/color2k/src/desaturate.ts", "../node_modules/color2k/src/getLuminance.ts", "../node_modules/color2k/src/getContrast.ts", "../node_modules/color2k/src/rgba.ts", "../node_modules/color2k/src/mix.ts", "../node_modules/color2k/src/getScale.ts", "../node_modules/color2k/src/hasBadContrast.ts", "../node_modules/color2k/src/lighten.ts", "../node_modules/color2k/src/transparentize.ts", "../node_modules/color2k/src/opacify.ts", "../node_modules/color2k/src/readableColorIsBlack.ts", "../node_modules/color2k/src/readableColor.ts", "../node_modules/color2k/src/saturate.ts", "../node_modules/color2k/src/toHex.ts", "../node_modules/color2k/src/toRgba.ts", "../node_modules/color2k/src/toHsla.ts", "../src/select/api/apiSelect.ts", "../node_modules/slim-select/dist/slimselect.min.mjs", "../src/select/util.ts", "../src/select/api/types.ts", "../src/select/api/dynamicParams.ts", "../src/select/api/index.ts", "../src/select/color.ts", "../src/select/static.ts", "../src/select/index.ts", "../src/buttons/connectionToggle.ts", "../src/state/index.ts", "../src/stores/objectDepth.ts", "../src/stores/rackImages.ts", "../src/buttons/depthToggle.ts", "../src/buttons/moveOptions.ts", "../src/buttons/pagination.ts", "../src/colorMode.ts", "../src/buttons/preferences.ts", "../src/buttons/reslug.ts", "../src/buttons/selectAll.ts", "../src/buttons/index.ts", "../src/messages.ts", "../src/clipboard.ts", "../src/dateSelector.ts", "../src/tableConfig.ts", "../src/tables/interfaceTable.ts", "../src/sidenav.ts", "../src/racks.ts", "../src/links.ts", "../src/netbox.ts"], - "mappings": "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", + "mappings": "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", "names": [] } diff --git a/netbox/project-static/src/forms/elements.ts b/netbox/project-static/src/forms/elements.ts index 978c25e10..5cb17f5c7 100644 --- a/netbox/project-static/src/forms/elements.ts +++ b/netbox/project-static/src/forms/elements.ts @@ -1,4 +1,32 @@ -import { getElements, scrollTo } from '../util'; +import { getElements, scrollTo, isTruthy } from '../util'; + +/** + * When editing an object, it is sometimes desirable to customize the form action *without* + * overriding the form's `submit` event. For example, the 'Save & Continue' button. We don't want + * to use the `formaction` attribute on that element because it will be included on the form even + * if the button isn't clicked. + * + * @example + * ```html + * + * ``` + * + * @param event Click event. + */ +function handleSubmitWithReturnUrl(event: MouseEvent): void { + const element = event.target as HTMLElement; + if (element.tagName === 'BUTTON') { + const button = element as HTMLButtonElement; + const action = button.getAttribute('return-url'); + const form = button.form; + if (form !== null && isTruthy(action)) { + form.action = action; + form.submit(); + } + } +} function handleFormSubmit(event: Event, form: HTMLFormElement): void { // Track the names of each invalid field. @@ -38,6 +66,15 @@ function handleFormSubmit(event: Event, form: HTMLFormElement): void { } } +/** + * Attach event listeners to form buttons with the `return-url` attribute present. + */ +function initReturnUrlSubmitButtons(): void { + for (const button of getElements('button[return-url]')) { + button.addEventListener('click', handleSubmitWithReturnUrl); + } +} + /** * Attach an event listener to each form's submitter (button[type=submit]). When called, the * callback checks the validity of each form field and adds the appropriate Bootstrap CSS class @@ -54,4 +91,5 @@ export function initFormElements(): void { submitter.addEventListener('click', (event: Event) => handleFormSubmit(event, form)); } } + initReturnUrlSubmitButtons(); } diff --git a/netbox/templates/dcim/interface_edit.html b/netbox/templates/dcim/interface_edit.html index 38b22fe5e..317b49a79 100644 --- a/netbox/templates/dcim/interface_edit.html +++ b/netbox/templates/dcim/interface_edit.html @@ -51,7 +51,7 @@ {% block buttons %}
Cancel {% if obj.pk %} - + {% else %} diff --git a/netbox/templates/virtualization/vminterface_edit.html b/netbox/templates/virtualization/vminterface_edit.html index b4d097513..7e5b8599c 100644 --- a/netbox/templates/virtualization/vminterface_edit.html +++ b/netbox/templates/virtualization/vminterface_edit.html @@ -46,7 +46,7 @@ {% block buttons %} Cancel {% if obj.pk %} - + {% else %} From 40c6b172f747b1f9cd983a637a96908cb530bd11 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Mon, 6 Dec 2021 11:33:00 -0500 Subject: [PATCH 282/289] Fixes #7981: Fix Markdown sanitization regex --- docs/release-notes/version-3.0.md | 6 +++++- netbox/utilities/templatetags/helpers.py | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/docs/release-notes/version-3.0.md b/docs/release-notes/version-3.0.md index 9be270999..41b366bf2 100644 --- a/docs/release-notes/version-3.0.md +++ b/docs/release-notes/version-3.0.md @@ -5,12 +5,16 @@ ### Enhancements * [#7751](https://github.com/netbox-community/netbox/issues/7751) - Get API user from LDAP only when `FIND_GROUP_PERMS` is enabled -* [#7823](https://github.com/netbox-community/netbox/issues/7823) - Fix issue where `return_url` is not honored when 'Save & Continue' button is present * [#7885](https://github.com/netbox-community/netbox/issues/7885) - Linkify VLAN name in VLANs table * [#7892](https://github.com/netbox-community/netbox/issues/7892) - Add L22-30 power port & outlet types * [#7932](https://github.com/netbox-community/netbox/issues/7932) - Improve performance of the "quick find" function * [#7941](https://github.com/netbox-community/netbox/issues/7941) - Add multi-standard ITA power outlet type +### Bug Fixes + +* [#7823](https://github.com/netbox-community/netbox/issues/7823) - Fix issue where `return_url` is not honored when 'Save & Continue' button is present +* [#7981](https://github.com/netbox-community/netbox/issues/7981) - Fix Markdown sanitization regex + --- ## v3.0.11 (2021-11-24) diff --git a/netbox/utilities/templatetags/helpers.py b/netbox/utilities/templatetags/helpers.py index 0f3f75bc2..3064cdf38 100644 --- a/netbox/utilities/templatetags/helpers.py +++ b/netbox/utilities/templatetags/helpers.py @@ -51,7 +51,7 @@ def render_markdown(value): value = re.sub(pattern, '[\\1](\\3)', value, flags=re.IGNORECASE) # Sanitize Markdown reference links - pattern = fr'\[(.+)\]:\w?(?!({schemes})).*:(.+)' + pattern = fr'\[(.+)\]:\s*(?!({schemes}))\w*:(.+)' value = re.sub(pattern, '[\\1]: \\3', value, flags=re.IGNORECASE) # Render Markdown From dc6decd404e2d128eeb70161e9b2b34461db9bee Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Mon, 6 Dec 2021 11:54:50 -0500 Subject: [PATCH 283/289] Release v3.0.12 --- .github/ISSUE_TEMPLATE/bug_report.yaml | 2 +- .github/ISSUE_TEMPLATE/feature_request.yaml | 2 +- docs/release-notes/version-3.0.md | 2 +- netbox/netbox/settings.py | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.yaml b/.github/ISSUE_TEMPLATE/bug_report.yaml index 4a6dba734..b041c7ff4 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yaml +++ b/.github/ISSUE_TEMPLATE/bug_report.yaml @@ -14,7 +14,7 @@ body: attributes: label: NetBox version description: What version of NetBox are you currently running? - placeholder: v3.0.11 + placeholder: v3.0.12 validations: required: true - type: dropdown diff --git a/.github/ISSUE_TEMPLATE/feature_request.yaml b/.github/ISSUE_TEMPLATE/feature_request.yaml index 4c3ab0277..0852b4f9b 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.yaml +++ b/.github/ISSUE_TEMPLATE/feature_request.yaml @@ -14,7 +14,7 @@ body: attributes: label: NetBox version description: What version of NetBox are you currently running? - placeholder: v3.0.11 + placeholder: v3.0.12 validations: required: true - type: dropdown diff --git a/docs/release-notes/version-3.0.md b/docs/release-notes/version-3.0.md index 41b366bf2..51ad02395 100644 --- a/docs/release-notes/version-3.0.md +++ b/docs/release-notes/version-3.0.md @@ -1,6 +1,6 @@ # NetBox v3.0 -## v3.0.12 (FUTURE) +## v3.0.12 (2021-12-06) ### Enhancements diff --git a/netbox/netbox/settings.py b/netbox/netbox/settings.py index 7c205cca4..64869fab0 100644 --- a/netbox/netbox/settings.py +++ b/netbox/netbox/settings.py @@ -17,7 +17,7 @@ from django.core.validators import URLValidator # Environment setup # -VERSION = '3.0.12-dev' +VERSION = '3.0.12' # Hostname HOSTNAME = platform.node() From 414810bdf5b12f0d0bd1405d6747ead9cda3ec4e Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Mon, 6 Dec 2021 13:15:17 -0500 Subject: [PATCH 284/289] Update required dependencies --- requirements.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/requirements.txt b/requirements.txt index 385370884..a4a16aa2f 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,12 +1,12 @@ Django==3.2.9 -django-cors-headers==3.10.0 +django-cors-headers==3.10.1 django-debug-toolbar==3.2.2 django-filter==21.1 django-graphiql-debug-toolbar==0.2.0 django-mptt==0.13.4 django-pglocks==1.0.4 django-prometheus==2.1.0 -django-redis==5.0.0 +django-redis==5.1.0 django-rq==2.5.1 django-tables2==2.4.1 django-taggit==1.5.1 @@ -18,7 +18,7 @@ gunicorn==20.1.0 Jinja2==3.0.3 Markdown==3.3.6 markdown-include==0.6.0 -mkdocs-material==7.3.6 +mkdocs-material==8.0.4 netaddr==0.8.0 Pillow==8.4.0 psycopg2-binary==2.9.2 From 0cd173f9dfaa1a31b152d1dda1f54c16f0111c66 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Mon, 6 Dec 2021 13:25:09 -0500 Subject: [PATCH 285/289] Update django-taggit to 2.0 --- netbox/extras/tests/test_changelog.py | 6 +++--- netbox/extras/tests/test_filtersets.py | 4 ++-- netbox/extras/tests/test_webhooks.py | 8 ++++---- netbox/netbox/api/serializers.py | 2 +- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/netbox/extras/tests/test_changelog.py b/netbox/extras/tests/test_changelog.py index 33251473f..e0be8c3bd 100644 --- a/netbox/extras/tests/test_changelog.py +++ b/netbox/extras/tests/test_changelog.py @@ -73,7 +73,7 @@ class ChangeLogViewTest(ModelViewTestCase): site = Site(name='Site 1', slug='site-1') site.save() tags = create_tags('Tag 1', 'Tag 2', 'Tag 3') - site.tags.set('Tag 1', 'Tag 2') + site.tags.set(['Tag 1', 'Tag 2']) form_data = { 'name': 'Site X', @@ -117,7 +117,7 @@ class ChangeLogViewTest(ModelViewTestCase): ) site.save() create_tags('Tag 1', 'Tag 2') - site.tags.set('Tag 1', 'Tag 2') + site.tags.set(['Tag 1', 'Tag 2']) request = { 'path': self._get_url('delete', instance=site), @@ -310,7 +310,7 @@ class ChangeLogAPITest(APITestCase): } ) site.save() - site.tags.set(*Tag.objects.all()[:2]) + site.tags.set(Tag.objects.all()[:2]) self.assertEqual(ObjectChange.objects.count(), 0) self.add_permissions('dcim.delete_site') url = reverse('dcim-api:site-detail', kwargs={'pk': site.pk}) diff --git a/netbox/extras/tests/test_filtersets.py b/netbox/extras/tests/test_filtersets.py index 656c3efdc..0f4b35cf6 100644 --- a/netbox/extras/tests/test_filtersets.py +++ b/netbox/extras/tests/test_filtersets.py @@ -542,8 +542,8 @@ class TagTestCase(TestCase, ChangeLoggedFilterSetTests): site = Site.objects.create(name='Site 1', slug='site-1') provider = Provider.objects.create(name='Provider 1', slug='provider-1') - site.tags.set(tags[0]) - provider.tags.set(tags[1]) + site.tags.set([tags[0]]) + provider.tags.set([tags[1]]) def test_name(self): params = {'name': ['Tag 1', 'Tag 2']} diff --git a/netbox/extras/tests/test_webhooks.py b/netbox/extras/tests/test_webhooks.py index 811260f92..111ec6353 100644 --- a/netbox/extras/tests/test_webhooks.py +++ b/netbox/extras/tests/test_webhooks.py @@ -123,7 +123,7 @@ class WebhookTest(APITestCase): def test_enqueue_webhook_update(self): site = Site.objects.create(name='Site 1', slug='site-1') - site.tags.set(*Tag.objects.filter(name__in=['Foo', 'Bar'])) + site.tags.set(Tag.objects.filter(name__in=['Foo', 'Bar'])) # Update an object via the REST API data = { @@ -159,7 +159,7 @@ class WebhookTest(APITestCase): ) Site.objects.bulk_create(sites) for site in sites: - site.tags.set(*Tag.objects.filter(name__in=['Foo', 'Bar'])) + site.tags.set(Tag.objects.filter(name__in=['Foo', 'Bar'])) # Update three objects via the REST API data = [ @@ -205,7 +205,7 @@ class WebhookTest(APITestCase): def test_enqueue_webhook_delete(self): site = Site.objects.create(name='Site 1', slug='site-1') - site.tags.set(*Tag.objects.filter(name__in=['Foo', 'Bar'])) + site.tags.set(Tag.objects.filter(name__in=['Foo', 'Bar'])) # Delete an object via the REST API url = reverse('dcim-api:site-detail', kwargs={'pk': site.pk}) @@ -231,7 +231,7 @@ class WebhookTest(APITestCase): ) Site.objects.bulk_create(sites) for site in sites: - site.tags.set(*Tag.objects.filter(name__in=['Foo', 'Bar'])) + site.tags.set(Tag.objects.filter(name__in=['Foo', 'Bar'])) # Delete three objects via the REST API data = [ diff --git a/netbox/netbox/api/serializers.py b/netbox/netbox/api/serializers.py index 9f51d475d..4c26dbada 100644 --- a/netbox/netbox/api/serializers.py +++ b/netbox/netbox/api/serializers.py @@ -175,7 +175,7 @@ class PrimaryModelSerializer(CustomFieldModelSerializer): def _save_tags(self, instance, tags): if tags: - instance.tags.set(*[t.name for t in tags]) + instance.tags.set([t.name for t in tags]) else: instance.tags.clear() From 029605f926e4fab5cfb2260c8d6d03c7fe7161ac Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Mon, 6 Dec 2021 13:43:02 -0500 Subject: [PATCH 286/289] Clean up site view --- netbox/dcim/views.py | 1 + netbox/templates/dcim/site.html | 524 +++++++++++++++++--------------- 2 files changed, 273 insertions(+), 252 deletions(-) diff --git a/netbox/dcim/views.py b/netbox/dcim/views.py index e353f24d0..b1a53e93c 100644 --- a/netbox/dcim/views.py +++ b/netbox/dcim/views.py @@ -312,6 +312,7 @@ class SiteView(generic.ObjectView): def get_extra_context(self, request, instance): stats = { + 'location_count': Location.objects.restrict(request.user, 'view').filter(site=instance).count(), 'rack_count': Rack.objects.restrict(request.user, 'view').filter(site=instance).count(), 'device_count': Device.objects.restrict(request.user, 'view').filter(site=instance).count(), 'prefix_count': Prefix.objects.restrict(request.user, 'view').filter(site=instance).count(), diff --git a/netbox/templates/dcim/site.html b/netbox/templates/dcim/site.html index b895d3cec..2ad970301 100644 --- a/netbox/templates/dcim/site.html +++ b/netbox/templates/dcim/site.html @@ -20,266 +20,286 @@ {% block content %}
-
-
-
- Site -
-
-
Physical Address + {% if object.physical_address %} + + {{ object.physical_address|linebreaksbr }} + {% else %} + + {% endif %} +
Shipping Address{{ object.shipping_address|linebreaksbr|placeholder }}
GPS Coordinates + {% if object.latitude and object.longitude %} + + {{ object.latitude }}, {{ object.longitude }} + {% else %} + + {% endif %} +
Contact Name @@ -180,8 +179,8 @@ {% include 'inc/panels/custom_fields.html' %} - {% include 'inc/panels/tags.html' %} {% include 'inc/panels/comments.html' %} + {% include 'inc/panels/contacts.html' %} {% plugin_left_page object %}
From c2f85a287780eb7b9711524eac1ea074f34bb9fc Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Thu, 4 Nov 2021 16:16:59 -0400 Subject: [PATCH 168/289] #6732: Show sites table under ASN view --- netbox/ipam/views.py | 7 +- netbox/templates/ipam/asn.html | 123 +++++++++++++++++---------------- 2 files changed, 67 insertions(+), 63 deletions(-) diff --git a/netbox/ipam/views.py b/netbox/ipam/views.py index c9d126f45..407f6d29e 100644 --- a/netbox/ipam/views.py +++ b/netbox/ipam/views.py @@ -216,10 +216,13 @@ class ASNView(generic.ObjectView): queryset = ASN.objects.all() def get_extra_context(self, request, instance): - sites = instance.sites.restrict(request.user, 'view').all() + sites = instance.sites.restrict(request.user, 'view') + sites_table = SiteTable(sites) + paginate_table(sites_table, request) return { - 'sites': sites, + 'sites_table': sites_table, + 'sites_count': sites.count() } diff --git a/netbox/templates/ipam/asn.html b/netbox/templates/ipam/asn.html index 8eafe7633..ad828c32e 100644 --- a/netbox/templates/ipam/asn.html +++ b/netbox/templates/ipam/asn.html @@ -6,72 +6,73 @@ {% block breadcrumbs %} {{ block.super }} -{% endblock %} +{% endblock breadcrumbs %} {% block content %} -
-
-
-
- ASN -
-
- - - - - - - - - - - - - - - - - -
AS Number{{ object.asn }}
RIR - {{ object.rir }} -
Tenant - {% if object.tenant %} - {% if prefix.object.group %} - {{ object.tenant.group }} / - {% endif %} - {{ object.tenant }} - {% else %} - None - {% endif %} -
Description{{ object.description|placeholder }}
-
+
+
+
+
ASN
+
+ + + + + + + + + + + + + + + + + + + + + +
AS Number{{ object.asn }}
RIR + {{ object.rir }} +
Tenant + {% if object.tenant %} + {% if prefix.object.group %} + {{ object.tenant.group }} / + {% endif %} + {{ object.tenant }} + {% else %} + None + {% endif %} +
Description{{ object.description|placeholder }}
Sites + {% if sites_count %} + {{ sites_count }} + {% else %} + {{ sites_count }} + {% endif %} +
- {% include 'inc/panels/custom_fields.html' %} - {% include 'inc/panels/tags.html' with tags=object.tags.all url='ipam:asn_list' %} - {% plugin_left_page object %} +
+ {% plugin_left_page object %}
-
-
- Sites -
-
- {% if sites %} - {% for site in sites %} - {{ site }} - {% endfor %} - {% else %} - None - {% endif %} -
-
- {% plugin_right_page object %} + {% include 'inc/panels/custom_fields.html' %} + {% include 'inc/panels/tags.html' with tags=object.tags.all url='ipam:asn_list' %} + {% plugin_right_page object %}
-
-
+
+
- {% plugin_full_width_page object %} +
+
Sites
+
+ {% include 'inc/table.html' with table=sites_table %} +
+
+ {% include 'inc/paginator.html' with paginator=sites_table.paginator page=sites_table.page %} + {% plugin_full_width_page object %}
-
-{% endblock %} +
+{% endblock content %} From bc92f9221a8afc48cf97300fc05a711eb1dcb134 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Thu, 4 Nov 2021 16:22:55 -0400 Subject: [PATCH 169/289] Tweak site ASN filters & tests --- netbox/dcim/filtersets.py | 8 +------ netbox/dcim/tests/test_filtersets.py | 33 ++++++++++++---------------- 2 files changed, 15 insertions(+), 26 deletions(-) diff --git a/netbox/dcim/filtersets.py b/netbox/dcim/filtersets.py index 06b697502..f166a23de 100644 --- a/netbox/dcim/filtersets.py +++ b/netbox/dcim/filtersets.py @@ -131,17 +131,11 @@ class SiteFilterSet(PrimaryModelFilterSet, TenancyFilterSet): to_field_name='slug', label='Group (slug)', ) - asns_id = django_filters.ModelMultipleChoiceFilter( + asn_id = django_filters.ModelMultipleChoiceFilter( field_name='asns', queryset=ASN.objects.all(), label='AS (ID)', ) - asns = django_filters.ModelMultipleChoiceFilter( - field_name='asns__asn', - queryset=ASN.objects.all(), - to_field_name='asn', - label='AS (Number)', - ) tag = TagFilter() class Meta: diff --git a/netbox/dcim/tests/test_filtersets.py b/netbox/dcim/tests/test_filtersets.py index 0cbd892f5..0f3b994a2 100644 --- a/netbox/dcim/tests/test_filtersets.py +++ b/netbox/dcim/tests/test_filtersets.py @@ -142,29 +142,23 @@ class SiteTestCase(TestCase, ChangeLoggedFilterSetTests): ) Tenant.objects.bulk_create(tenants) + rir = RIR.objects.create(name='RFC 6996', is_private=True) + asns = ( + ASN(asn=64512, rir=rir, tenant=tenants[0]), + ASN(asn=64513, rir=rir, tenant=tenants[0]), + ASN(asn=64514, rir=rir, tenant=tenants[0]), + ) + ASN.objects.bulk_create(asns) + sites = ( Site(name='Site 1', slug='site-1', region=regions[0], group=groups[0], tenant=tenants[0], status=SiteStatusChoices.STATUS_ACTIVE, facility='Facility 1', asn=65001, latitude=10, longitude=10, contact_name='Contact 1', contact_phone='123-555-0001', contact_email='contact1@example.com'), Site(name='Site 2', slug='site-2', region=regions[1], group=groups[1], tenant=tenants[1], status=SiteStatusChoices.STATUS_PLANNED, facility='Facility 2', asn=65002, latitude=20, longitude=20, contact_name='Contact 2', contact_phone='123-555-0002', contact_email='contact2@example.com'), Site(name='Site 3', slug='site-3', region=regions[2], group=groups[2], tenant=tenants[2], status=SiteStatusChoices.STATUS_RETIRED, facility='Facility 3', asn=65003, latitude=30, longitude=30, contact_name='Contact 3', contact_phone='123-555-0003', contact_email='contact3@example.com'), ) Site.objects.bulk_create(sites) - - rir = RIR.objects.create(name='RFC 6996', is_private=True) - - asns = ( - ASN(asn=64512, rir=rir, tenant=tenants[0]), - ASN(asn=64513, rir=rir, tenant=tenants[0]), - ASN(asn=64514, rir=rir, tenant=tenants[0]), - ASN(asn=65001, rir=rir, tenant=tenants[0]), - ASN(asn=65002, rir=rir, tenant=tenants[0]) - ) - ASN.objects.bulk_create(asns) - - asns[0].sites.set([sites[0]]) - asns[1].sites.set([sites[1]]) - asns[2].sites.set([sites[2]]) - asns[3].sites.set([sites[2]]) - asns[4].sites.set([sites[1]]) + sites[0].asns.set([asns[0]]) + sites[1].asns.set([asns[1]]) + sites[2].asns.set([asns[2]]) def test_name(self): params = {'name': ['Site 1', 'Site 2']} @@ -182,8 +176,9 @@ class SiteTestCase(TestCase, ChangeLoggedFilterSetTests): params = {'asn': [65001, 65002]} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) - def test_asns(self): - params = {'asns': [64512, 65002]} + def test_asn_id(self): + asns = ASN.objects.all()[:2] + params = {'asn_id': [asns[0].pk, asns[1].pk]} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) def test_latitude(self): From 83ac8696936a5a9a68c5c05542533a2b7a991032 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Thu, 4 Nov 2021 16:29:43 -0400 Subject: [PATCH 170/289] Fix ASNs column in SiteTable --- netbox/dcim/tables/sites.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/netbox/dcim/tables/sites.py b/netbox/dcim/tables/sites.py index 5a5975e4a..8ef17c6f2 100644 --- a/netbox/dcim/tables/sites.py +++ b/netbox/dcim/tables/sites.py @@ -82,6 +82,7 @@ class SiteTable(BaseTable): linkify=True ) asn_count = LinkedCountColumn( + accessor=tables.A('asns.count'), viewname='ipam:asn_list', url_params={'site_id': 'pk'}, verbose_name='ASNs' @@ -99,7 +100,7 @@ class SiteTable(BaseTable): 'description', 'physical_address', 'shipping_address', 'latitude', 'longitude', 'contact_name', 'contact_phone', 'contact_email', 'comments', 'tags', ) - default_columns = ('pk', 'name', 'status', 'facility', 'region', 'group', 'tenant', 'asn_count', 'description') + default_columns = ('pk', 'name', 'status', 'facility', 'region', 'group', 'tenant', 'description') # From 2826f2715303d329278b33c6954a716af6430882 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Thu, 4 Nov 2021 16:36:49 -0400 Subject: [PATCH 171/289] Split interface edit forms into subsections --- netbox/templates/dcim/interface_edit.html | 34 ++++++++++++++----- .../virtualization/vminterface_edit.html | 14 +++++--- 2 files changed, 36 insertions(+), 12 deletions(-) diff --git a/netbox/templates/dcim/interface_edit.html b/netbox/templates/dcim/interface_edit.html index 2abe723f6..ace19c521 100644 --- a/netbox/templates/dcim/interface_edit.html +++ b/netbox/templates/dcim/interface_edit.html @@ -15,22 +15,40 @@
{% endif %} {% render_field form.name %} - {% render_field form.label %} {% render_field form.type %} - {% render_field form.parent %} - {% render_field form.bridge %} - {% render_field form.lag %} - {% render_field form.mac_address %} - {% render_field form.wwn %} - {% render_field form.mtu %} - {% render_field form.tx_power %} + {% render_field form.label %} {% render_field form.description %} {% render_field form.tags %} +
+ +
+
+
Addressing
+
+ {% render_field form.mac_address %} + {% render_field form.wwn %} +
+ +
+
+
Operation
+
+ {% render_field form.mtu %} + {% render_field form.tx_power %} {% render_field form.enabled %} {% render_field form.mgmt_only %} {% render_field form.mark_connected %}
+
+
+
Related Interfaces
+
+ {% render_field form.parent %} + {% render_field form.bridge %} + {% render_field form.lag %} +
+ {% if form.instance.is_wireless %}
diff --git a/netbox/templates/virtualization/vminterface_edit.html b/netbox/templates/virtualization/vminterface_edit.html index 824f2bf24..2e54d7e2b 100644 --- a/netbox/templates/virtualization/vminterface_edit.html +++ b/netbox/templates/virtualization/vminterface_edit.html @@ -15,13 +15,19 @@
{% endif %} {% render_field form.name %} - {% render_field form.enabled %} - {% render_field form.parent %} - {% render_field form.bridge %} + {% render_field form.description %} {% render_field form.mac_address %} {% render_field form.mtu %} - {% render_field form.description %} {% render_field form.tags %} + {% render_field form.enabled %} +
+ +
+
+
Related Interfaces
+
+ {% render_field form.parent %} + {% render_field form.bridge %}
From 830cf4b31f6036c4ca17422d9bace348f034c41e Mon Sep 17 00:00:00 2001 From: kkthxbye-code Date: Thu, 28 Oct 2021 21:29:08 +0200 Subject: [PATCH 172/289] Fix #7399 - LDAP using excessive CPU when AUTH_LDAP_FIND_GROUP_PERMS is enabled --- netbox/netbox/authentication.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/netbox/netbox/authentication.py b/netbox/netbox/authentication.py index 653fad3b0..a67ec451d 100644 --- a/netbox/netbox/authentication.py +++ b/netbox/netbox/authentication.py @@ -34,7 +34,7 @@ class ObjectPermissionMixin(): object_permissions = ObjectPermission.objects.filter( self.get_permission_filter(user_obj), enabled=True - ).prefetch_related('object_types') + ).order_by('id').distinct('id').prefetch_related('object_types') # Create a dictionary mapping permissions to their constraints perms = defaultdict(list) From 2fd526b35940d558b41ca2bc1cc3af8d3c474096 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Fri, 5 Nov 2021 08:33:16 -0400 Subject: [PATCH 173/289] Fix up contact template --- netbox/templates/tenancy/contact.html | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/netbox/templates/tenancy/contact.html b/netbox/templates/tenancy/contact.html index af466cb30..79878b1ac 100644 --- a/netbox/templates/tenancy/contact.html +++ b/netbox/templates/tenancy/contact.html @@ -14,7 +14,7 @@
-
Tenant
+
Contact
@@ -49,9 +49,7 @@ - +
Assignments - {{ assignment_count }} - {{ assignment_count }}
From 773fd47ca6f7a33238d63816e4a589c2f2f5687c Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Fri, 5 Nov 2021 08:45:57 -0400 Subject: [PATCH 174/289] Fixes #7752: Fix minimum version check under Python v3.10 --- docs/release-notes/version-3.0.md | 4 ++++ netbox/netbox/settings.py | 3 ++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/docs/release-notes/version-3.0.md b/docs/release-notes/version-3.0.md index 528b90846..eaac82444 100644 --- a/docs/release-notes/version-3.0.md +++ b/docs/release-notes/version-3.0.md @@ -2,6 +2,10 @@ ## v3.0.10 (FUTURE) +### Bug Fixes + +* [#7752](https://github.com/netbox-community/netbox/issues/7752) - Fix minimum version check under Python v3.10 + --- ## v3.0.9 (2021-11-03) diff --git a/netbox/netbox/settings.py b/netbox/netbox/settings.py index ccf3b3752..b0c996141 100644 --- a/netbox/netbox/settings.py +++ b/netbox/netbox/settings.py @@ -4,6 +4,7 @@ import os import platform import re import socket +import sys import warnings from urllib.parse import urlsplit @@ -25,7 +26,7 @@ HOSTNAME = platform.node() BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) # Validate Python version -if platform.python_version_tuple() < ('3', '7'): +if sys.version_info < (3, 7): raise RuntimeError( f"NetBox requires Python 3.7 or higher (current: Python {platform.python_version()})" ) From cf80c1a5066eeff81e3e84df3da3ec91133161f0 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Fri, 5 Nov 2021 09:03:27 -0400 Subject: [PATCH 175/289] Release v3.1-beta1 --- docs/release-notes/version-3.1.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/release-notes/version-3.1.md b/docs/release-notes/version-3.1.md index 616313ef2..f33ee605b 100644 --- a/docs/release-notes/version-3.1.md +++ b/docs/release-notes/version-3.1.md @@ -1,4 +1,4 @@ -## v3.1-beta1 (FUTURE) +## v3.1-beta1 (2021-11-05) !!! warning "PostgreSQL 10 Required" NetBox v3.1 requires PostgreSQL 10 or later. From e5d757866364a55795ca060f2fa4ecb5aed3cf2b Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Fri, 5 Nov 2021 11:10:17 -0400 Subject: [PATCH 176/289] Fixes #7750: Fix cable trace image link --- docs/core-functionality/devices.md | 10 ++++++++++ docs/models/dcim/cable.md | 10 ---------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/docs/core-functionality/devices.md b/docs/core-functionality/devices.md index 67e3612b9..982ee3071 100644 --- a/docs/core-functionality/devices.md +++ b/docs/core-functionality/devices.md @@ -27,3 +27,13 @@ Device components represent discrete objects within a device which are used to t --- {!models/dcim/cable.md!} + +In the example below, three individual cables comprise a path between devices A and D: + +![Cable path](../media/models/dcim_cable_trace.png) + +Traced from Interface 1 on Device A, NetBox will show the following path: + +* Cable 1: Interface 1 to Front Port 1 +* Cable 2: Rear Port 1 to Rear Port 2 +* Cable 3: Front Port 2 to Interface 2 diff --git a/docs/models/dcim/cable.md b/docs/models/dcim/cable.md index 87ec68e03..43c0abfab 100644 --- a/docs/models/dcim/cable.md +++ b/docs/models/dcim/cable.md @@ -22,13 +22,3 @@ Each cable may be assigned a type, label, length, and color. Each cable is also ## Tracing Cables A cable may be traced from either of its endpoints by clicking the "trace" button. (A REST API endpoint also provides this functionality.) NetBox will follow the path of connected cables from this termination across the directly connected cable to the far-end termination. If the cable connects to a pass-through port, and the peer port has another cable connected, NetBox will continue following the cable path until it encounters a non-pass-through or unconnected termination point. The entire path will be displayed to the user. - -In the example below, three individual cables comprise a path between devices A and D: - -![Cable path](../media/models/dcim_cable_trace.png) - -Traced from Interface 1 on Device A, NetBox will show the following path: - -* Cable 1: Interface 1 to Front Port 1 -* Cable 2: Rear Port 1 to Rear Port 2 -* Cable 3: Front Port 2 to Interface 2 From fab1d3651bcdb2728f9a7d79048d3834c4b055fd Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Fri, 5 Nov 2021 13:10:27 -0400 Subject: [PATCH 177/289] Add new models to developer docs --- docs/development/models.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/docs/development/models.md b/docs/development/models.md index 59e795cf7..62dd016f3 100644 --- a/docs/development/models.md +++ b/docs/development/models.md @@ -41,15 +41,20 @@ The Django [content types](https://docs.djangoproject.com/en/stable/ref/contrib/ * [dcim.Site](../models/dcim/site.md) * [dcim.VirtualChassis](../models/dcim/virtualchassis.md) * [ipam.Aggregate](../models/ipam/aggregate.md) +* [ipam.ASN](../models/ipam/asn.md) +* [ipam.FHRPGroup](../models/ipam/fhrpgroup.md) * [ipam.IPAddress](../models/ipam/ipaddress.md) * [ipam.Prefix](../models/ipam/prefix.md) * [ipam.RouteTarget](../models/ipam/routetarget.md) * [ipam.Service](../models/ipam/service.md) * [ipam.VLAN](../models/ipam/vlan.md) * [ipam.VRF](../models/ipam/vrf.md) +* [tenancy.Contact](../models/tenancy/contact.md) * [tenancy.Tenant](../models/tenancy/tenant.md) * [virtualization.Cluster](../models/virtualization/cluster.md) * [virtualization.VirtualMachine](../models/virtualization/virtualmachine.md) +* [wireless.WirelessLAN](../models/wireless/wirelesslan.md) +* [wireless.WirelessLink](../models/wireless/wirelesslink.md) ### Organizational Models @@ -61,6 +66,7 @@ The Django [content types](https://docs.djangoproject.com/en/stable/ref/contrib/ * [ipam.RIR](../models/ipam/rir.md) * [ipam.Role](../models/ipam/role.md) * [ipam.VLANGroup](../models/ipam/vlangroup.md) +* [tenancy.ContactRole](../models/tenancy/contactrole.md) * [virtualization.ClusterGroup](../models/virtualization/clustergroup.md) * [virtualization.ClusterType](../models/virtualization/clustertype.md) @@ -69,7 +75,9 @@ The Django [content types](https://docs.djangoproject.com/en/stable/ref/contrib/ * [dcim.Location](../models/dcim/location.md) (formerly RackGroup) * [dcim.Region](../models/dcim/region.md) * [dcim.SiteGroup](../models/dcim/sitegroup.md) +* [tenancy.ContactGroup](../models/tenancy/contactgroup.md) * [tenancy.TenantGroup](../models/tenancy/tenantgroup.md) +* [wireless.WirelessLANGroup](../models/wireless/wirelesslangroup.md) ### Component Models From f7d0db9cd25468fbf2a97f05761f670d5974f854 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Fri, 5 Nov 2021 13:16:43 -0400 Subject: [PATCH 178/289] Fixes #7756: Fix AttributeError exception when editing an IP address assigned to a FHRPGroup --- docs/release-notes/version-3.1.md | 8 ++++++++ netbox/ipam/forms/models.py | 4 ++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/docs/release-notes/version-3.1.md b/docs/release-notes/version-3.1.md index f33ee605b..df7ad3a4a 100644 --- a/docs/release-notes/version-3.1.md +++ b/docs/release-notes/version-3.1.md @@ -1,3 +1,11 @@ +## v3.1-beta2 (FUTURE) + +### Bug Fixes + +* [#7756](https://github.com/netbox-community/netbox/issues/7756) - Fix AttributeError exception when editing an IP address assigned to a FHRPGroup + +--- + ## v3.1-beta1 (2021-11-05) !!! warning "PostgreSQL 10 Required" diff --git a/netbox/ipam/forms/models.py b/netbox/ipam/forms/models.py index afbe33282..7eda3c38d 100644 --- a/netbox/ipam/forms/models.py +++ b/netbox/ipam/forms/models.py @@ -444,8 +444,8 @@ class IPAddressForm(BootstrapMixin, TenancyForm, CustomFieldModelForm): # Initialize primary_for_parent if IP address is already assigned if self.instance.pk and self.instance.assigned_object: - parent = self.instance.assigned_object.parent_object - if ( + parent = getattr(self.instance.assigned_object, 'parent_object', None) + if parent and ( self.instance.address.version == 4 and parent.primary_ip4_id == self.instance.pk or self.instance.address.version == 6 and parent.primary_ip6_id == self.instance.pk ): From 79f2f03fb241f35ff74bbd034df7ff26aa0be025 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Fri, 5 Nov 2021 13:26:18 -0400 Subject: [PATCH 179/289] Issues policy tweaks --- .github/ISSUE_TEMPLATE/bug_report.yaml | 5 +---- CONTRIBUTING.md | 12 ++++-------- 2 files changed, 5 insertions(+), 12 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.yaml b/.github/ISSUE_TEMPLATE/bug_report.yaml index 6c13631d9..fa773eb13 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yaml +++ b/.github/ISSUE_TEMPLATE/bug_report.yaml @@ -13,10 +13,7 @@ body: - type: input attributes: label: NetBox version - description: > - What version of NetBox are you currently running? (If you don't have access to the most - recent NetBox release, consider testing on our [demo instance](https://demo.netbox.dev/) - before opening a bug report to see if your issue has already been addressed.) + description: What version of NetBox are you currently running? placeholder: v3.0.9 validations: required: true diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 7a3b1f002..a3627a2b1 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -76,14 +76,10 @@ free to add a comment with any additional justification for the feature. (However, note that comments with no substance other than a "+1" will be deleted. Please use GitHub's reactions feature to indicate your support.) -* Due to a large backlog of feature requests, we are not currently accepting -any proposals which substantially extend NetBox's functionality beyond its -current feature set. This includes the introduction of any new views or models -which have not already been proposed in an existing feature request. - -* Before filing a new feature request, consider raising your idea on the -mailing list first. Feedback you receive there will help validate and shape the -proposed feature before filing a formal issue. +* Before filing a new feature request, consider raising your idea in a +[GitHub discussion](https://github.com/netbox-community/netbox/discussions) +first. Feedback you receive there will help validate and shape the proposed +feature before filing a formal issue. * Good feature requests are very narrowly defined. Be sure to thoroughly describe the functionality and data model(s) being proposed. The more effort From 3eda8d84821cafcf8170f52be8300bdabdedb3ee Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Fri, 5 Nov 2021 13:31:36 -0400 Subject: [PATCH 180/289] Closes #7760: Add vid filter field to VLANs list --- docs/release-notes/version-3.0.md | 4 ++++ netbox/ipam/forms/filtersets.py | 7 ++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/docs/release-notes/version-3.0.md b/docs/release-notes/version-3.0.md index eaac82444..52ca0e5cf 100644 --- a/docs/release-notes/version-3.0.md +++ b/docs/release-notes/version-3.0.md @@ -2,6 +2,10 @@ ## v3.0.10 (FUTURE) +### Enhancements + +* [#7760](https://github.com/netbox-community/netbox/issues/7760) - Add `vid` filter field to VLANs list + ### Bug Fixes * [#7752](https://github.com/netbox-community/netbox/issues/7752) - Fix minimum version check under Python v3.10 diff --git a/netbox/ipam/forms/filtersets.py b/netbox/ipam/forms/filtersets.py index 8bc0f10fb..02fac75b3 100644 --- a/netbox/ipam/forms/filtersets.py +++ b/netbox/ipam/forms/filtersets.py @@ -1,3 +1,4 @@ +import django_filters from django import forms from django.utils.translation import gettext as _ @@ -409,7 +410,7 @@ class VLANFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldModelFilterFo field_groups = [ ['q', 'tag'], ['region_id', 'site_group_id', 'site_id'], - ['group_id', 'status', 'role_id'], + ['group_id', 'status', 'role_id', 'vid'], ['tenant_group_id', 'tenant_id'], ] q = forms.CharField( @@ -461,6 +462,10 @@ class VLANFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldModelFilterFo label=_('Role'), fetch_trigger='open' ) + vid = forms.IntegerField( + required=False, + label='VLAN ID' + ) tag = TagFilterField(model) From e04402ed570ad702f8f7f32ba5e2ecc3d51829f1 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Fri, 5 Nov 2021 13:40:38 -0400 Subject: [PATCH 181/289] Allow bypassing the pre-commit script with NOVALIDATE=1 --- scripts/git-hooks/pre-commit | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/scripts/git-hooks/pre-commit b/scripts/git-hooks/pre-commit index 71b8cca6e..7a3d680a4 100755 --- a/scripts/git-hooks/pre-commit +++ b/scripts/git-hooks/pre-commit @@ -11,6 +11,7 @@ exec 1>&2 EXIT=0 RED='\033[0;31m' +YELLOW='\033[0;33m' NOCOLOR='\033[0m' if [ -d ./venv/ ]; then @@ -22,6 +23,11 @@ if [ -d ./venv/ ]; then fi fi +if [ ${NOVALIDATE} ]; then + echo "${YELLOW}Skipping validation checks${NOCOLOR}" + exit $EXIT +fi + echo "Validating PEP8 compliance..." pycodestyle --ignore=W504,E501 --exclude=node_modules netbox/ if [ $? != 0 ]; then From 9c2514fce4d8d6c46fddae8e79afe66631b468ae Mon Sep 17 00:00:00 2001 From: Nico Domino Date: Mon, 8 Nov 2021 14:15:26 +0100 Subject: [PATCH 182/289] feat: add outer_width to RackTable (#7766) * feat: add outer_width to RackTable * fix: add outer_units to column display * feat: add outer_depth to available columns --- netbox/dcim/tables/racks.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/netbox/dcim/tables/racks.py b/netbox/dcim/tables/racks.py index f3d1cb7f8..982e2a47f 100644 --- a/netbox/dcim/tables/racks.py +++ b/netbox/dcim/tables/racks.py @@ -72,12 +72,20 @@ class RackTable(BaseTable): tags = TagColumn( url_name='dcim:rack_list' ) + outer_width = tables.TemplateColumn( + template_code="{{ record.outer_width }} {{ record.outer_unit }}", + verbose_name='Outer Width' + ) + outer_depth = tables.TemplateColumn( + template_code="{{ record.outer_depth }} {{ record.outer_unit }}", + verbose_name='Outer Depth' + ) class Meta(BaseTable.Meta): model = Rack fields = ( 'pk', 'id', 'name', 'site', 'location', 'status', 'facility_id', 'tenant', 'role', 'serial', 'asset_tag', 'type', - 'width', 'u_height', 'comments', 'device_count', 'get_utilization', 'get_power_utilization', 'tags', + 'width', 'outer_width', 'outer_depth', 'u_height', 'comments', 'device_count', 'get_utilization', 'get_power_utilization', 'tags', ) default_columns = ( 'pk', 'name', 'site', 'location', 'status', 'facility_id', 'tenant', 'role', 'u_height', 'device_count', From 7b7afd3e7b75b810a48c1fe84f601f98ed2fef14 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Mon, 8 Nov 2021 08:24:14 -0500 Subject: [PATCH 183/289] Changelog for #7765 --- docs/release-notes/version-3.0.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/release-notes/version-3.0.md b/docs/release-notes/version-3.0.md index 52ca0e5cf..ddf32c680 100644 --- a/docs/release-notes/version-3.0.md +++ b/docs/release-notes/version-3.0.md @@ -9,6 +9,7 @@ ### Bug Fixes * [#7752](https://github.com/netbox-community/netbox/issues/7752) - Fix minimum version check under Python v3.10 +* [#7766](https://github.com/netbox-community/netbox/issues/7766) - Add missing outer dimension columns to rack table --- From 2ce8ef57046ed1e8ef4f71e0a0dc02ffdd8fdfac Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Mon, 8 Nov 2021 08:34:10 -0500 Subject: [PATCH 184/289] Fixes #7771: Group assignment should be optional when creating contacts via REST API --- docs/release-notes/version-3.1.md | 1 + netbox/tenancy/api/serializers.py | 2 +- netbox/tenancy/tests/test_api.py | 1 - 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/release-notes/version-3.1.md b/docs/release-notes/version-3.1.md index df7ad3a4a..1a0daf93f 100644 --- a/docs/release-notes/version-3.1.md +++ b/docs/release-notes/version-3.1.md @@ -3,6 +3,7 @@ ### Bug Fixes * [#7756](https://github.com/netbox-community/netbox/issues/7756) - Fix AttributeError exception when editing an IP address assigned to a FHRPGroup +* [#7771](https://github.com/netbox-community/netbox/issues/7771) - Group assignment should be optional when creating contacts via REST API --- diff --git a/netbox/tenancy/api/serializers.py b/netbox/tenancy/api/serializers.py index b97c3dac4..f60c8f258 100644 --- a/netbox/tenancy/api/serializers.py +++ b/netbox/tenancy/api/serializers.py @@ -79,7 +79,7 @@ class ContactRoleSerializer(PrimaryModelSerializer): class ContactSerializer(PrimaryModelSerializer): url = serializers.HyperlinkedIdentityField(view_name='tenancy-api:contact-detail') - group = NestedContactGroupSerializer(required=False, allow_null=True) + group = NestedContactGroupSerializer(required=False, allow_null=True, default=None) class Meta: model = Contact diff --git a/netbox/tenancy/tests/test_api.py b/netbox/tenancy/tests/test_api.py index 467352588..a4469e0f2 100644 --- a/netbox/tenancy/tests/test_api.py +++ b/netbox/tenancy/tests/test_api.py @@ -200,7 +200,6 @@ class ContactTest(APIViewTestCases.APIViewTestCase): }, { 'name': 'Contact 6', - 'group': contact_groups[1].pk, }, ] From 17fd6e692ed1118626306180bd7520d283d1ee17 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Mon, 8 Nov 2021 08:40:24 -0500 Subject: [PATCH 185/289] Fixes #7768: Validate IP address status when creating a new FHRP group --- docs/release-notes/version-3.1.md | 1 + netbox/ipam/forms/models.py | 9 +++++++++ 2 files changed, 10 insertions(+) diff --git a/docs/release-notes/version-3.1.md b/docs/release-notes/version-3.1.md index 1a0daf93f..650770b37 100644 --- a/docs/release-notes/version-3.1.md +++ b/docs/release-notes/version-3.1.md @@ -3,6 +3,7 @@ ### Bug Fixes * [#7756](https://github.com/netbox-community/netbox/issues/7756) - Fix AttributeError exception when editing an IP address assigned to a FHRPGroup +* [#7768](https://github.com/netbox-community/netbox/issues/7768) - Validate IP address status when creating a new FHRP group * [#7771](https://github.com/netbox-community/netbox/issues/7771) - Group assignment should be optional when creating contacts via REST API --- diff --git a/netbox/ipam/forms/models.py b/netbox/ipam/forms/models.py index 7eda3c38d..2875c5182 100644 --- a/netbox/ipam/forms/models.py +++ b/netbox/ipam/forms/models.py @@ -576,6 +576,15 @@ class FHRPGroupForm(BootstrapMixin, CustomFieldModelForm): return instance + def clean(self): + ip_address = self.cleaned_data['ip_address'] + ip_status = self.cleaned_data['ip_status'] + + if ip_address and not ip_status: + raise forms.ValidationError({ + 'ip_status': "Status must be set when creating a new IP address." + }) + class FHRPGroupAssignmentForm(BootstrapMixin, forms.ModelForm): group = DynamicModelChoiceField( From b7aa44837fe5e152becda03ee1401c04766bc3dc Mon Sep 17 00:00:00 2001 From: Flo <52775027+FloEisen@users.noreply.github.com> Date: Mon, 8 Nov 2021 17:50:13 +0100 Subject: [PATCH 186/289] Add Mini-DIN 8 Console-Port-Type --- netbox/dcim/choices.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/netbox/dcim/choices.py b/netbox/dcim/choices.py index 2f6228751..5a732fa8d 100644 --- a/netbox/dcim/choices.py +++ b/netbox/dcim/choices.py @@ -185,6 +185,7 @@ class ConsolePortTypeChoices(ChoiceSet): TYPE_RJ11 = 'rj-11' TYPE_RJ12 = 'rj-12' TYPE_RJ45 = 'rj-45' + TYPE_MINI_DIN_8 = 'mini-din-8' TYPE_USB_A = 'usb-a' TYPE_USB_B = 'usb-b' TYPE_USB_C = 'usb-c' @@ -202,6 +203,7 @@ class ConsolePortTypeChoices(ChoiceSet): (TYPE_RJ11, 'RJ-11'), (TYPE_RJ12, 'RJ-12'), (TYPE_RJ45, 'RJ-45'), + (TYPE_MINI_DIN_8, 'Mini-DIN 8'), )), ('USB', ( (TYPE_USB_A, 'USB Type A'), From 3292a2aecc4dbefa80e5970dece66a69be4a8b28 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Mon, 8 Nov 2021 14:52:56 -0500 Subject: [PATCH 187/289] Closes #7619: Permit custom validation rules to be defined as plain data or dotted path to class --- docs/customization/custom-validation.md | 100 +++++++++++++------- docs/release-notes/version-3.1.md | 4 + netbox/extras/signals.py | 13 +++ netbox/extras/tests/test_customvalidator.py | 35 +++++++ 4 files changed, 118 insertions(+), 34 deletions(-) diff --git a/docs/customization/custom-validation.md b/docs/customization/custom-validation.md index 720e8e487..bfa1fc1b1 100644 --- a/docs/customization/custom-validation.md +++ b/docs/customization/custom-validation.md @@ -1,22 +1,18 @@ # Custom Validation -NetBox validates every object prior to it being written to the database to ensure data integrity. This validation includes things like checking for proper formatting and that references to related objects are valid. However, you may wish to supplement this validation with some rules of your own. For example, perhaps you require that every site's name conforms to a specific pattern. This can be done using NetBox's `CustomValidator` class. +NetBox validates every object prior to it being written to the database to ensure data integrity. This validation includes things like checking for proper formatting and that references to related objects are valid. However, you may wish to supplement this validation with some rules of your own. For example, perhaps you require that every site's name conforms to a specific pattern. This can be done using custom validation rules. -## CustomValidator +## Custom Validation Rules -### Validation Rules +Custom validation rules are expressed as a mapping of model attributes to a set of rules to which that attribute must conform. For example: -A custom validator can be instantiated by passing a mapping of attributes to a set of rules to which that attribute must conform. For example: - -```python -from extras.validators import CustomValidator - -CustomValidator({ - 'name': { - 'min_length': 5, - 'max_length': 30, - } -}) +```json +{ + "name": { + "min_length": 5, + "max_length": 30 + } +} ``` This defines a custom validator which checks that the length of the `name` attribute for an object is at least five characters long, and no longer than 30 characters. This validation is executed _after_ NetBox has performed its own internal validation. @@ -38,12 +34,13 @@ The `min` and `max` types should be defined for numeric values, whereas `min_len ### Custom Validation Logic -There may be instances where the provided validation types are insufficient. The `CustomValidator` class can be extended to enforce arbitrary validation logic by overriding its `validate()` method, and calling `fail()` when an unsatisfactory condition is detected. +There may be instances where the provided validation types are insufficient. NetBox provides a `CustomValidator` class which can be extended to enforce arbitrary validation logic by overriding its `validate()` method, and calling `fail()` when an unsatisfactory condition is detected. ```python from extras.validators import CustomValidator class MyValidator(CustomValidator): + def validate(self, instance): if instance.status == 'active' and not instance.description: self.fail("Active sites must have a description set!", field='status') @@ -53,34 +50,69 @@ The `fail()` method may optionally specify a field with which to associate the s ## Assigning Custom Validators -Custom validators are associated with specific NetBox models under the [CUSTOM_VALIDATORS](../configuration/optional-settings.md#custom_validators) configuration parameter, as such: +Custom validators are associated with specific NetBox models under the [CUSTOM_VALIDATORS](../configuration/optional-settings.md#custom_validators) configuration parameter. There are three manners by which custom validation rules can be defined: + +1. Plain JSON mapping (no custom logic) +2. Dotted path to a custom validator class +3. Direct reference to a custom validator class + +### Plain Data + +For cases where custom logic is not needed, it is sufficient to pass validation rules as plain JSON-compatible objects. This approach typically affords the most portability for your configuration. For instance: + +```python +CUSTOM_VALIDATORS = { + "dcim.site": [ + { + "name": { + "min_length": 5, + "max_length": 30, + } + } + ], + "dcim.device": [ + { + "platform": { + "required": True, + } + } + ] +} +``` + +### Dotted Path + +In instances where a custom validator class is needed, it can be referenced by its Python path (relative to NetBox's working directory): ```python +CUSTOM_VALIDATORS = { + 'dcim.site': ( + 'my_validators.Validator1', + 'my_validators.Validator2', + ), + 'dcim.device': ( + 'my_validators.Validator3', + ) +} +``` + +### Direct Class Reference + +This approach requires each class being instantiated to be imported directly within the Python configuration file. + +```python +from my_validators import Validator1, Validator2, Validator3 + CUSTOM_VALIDATORS = { 'dcim.site': ( Validator1, Validator2, - Validator3 + ), + 'dcim.device': ( + Validator3, ) } ``` !!! note Even if defining only a single validator, it must be passed as an iterable. - -When it is not necessary to define a custom `validate()` method, you may opt to pass a `CustomValidator` instance directly: - -```python -from extras.validators import CustomValidator - -CUSTOM_VALIDATORS = { - 'dcim.site': ( - CustomValidator({ - 'name': { - 'min_length': 5, - 'max_length': 30, - } - }), - ) -} -``` diff --git a/docs/release-notes/version-3.1.md b/docs/release-notes/version-3.1.md index 650770b37..746a64e62 100644 --- a/docs/release-notes/version-3.1.md +++ b/docs/release-notes/version-3.1.md @@ -1,5 +1,9 @@ ## v3.1-beta2 (FUTURE) +### Enhancements + +* [#7619](https://github.com/netbox-community/netbox/issues/7619) - Permit custom validation rules to be defined as plain data or dotted path to class + ### Bug Fixes * [#7756](https://github.com/netbox-community/netbox/issues/7756) - Fix AttributeError exception when editing an IP address assigned to a FHRPGroup diff --git a/netbox/extras/signals.py b/netbox/extras/signals.py index 9b37dd763..99bc91236 100644 --- a/netbox/extras/signals.py +++ b/netbox/extras/signals.py @@ -1,3 +1,4 @@ +import importlib import logging from django.conf import settings @@ -6,6 +7,7 @@ from django.db.models.signals import m2m_changed, post_save, pre_delete from django.dispatch import receiver, Signal from django_prometheus.models import model_deletes, model_inserts, model_updates +from extras.validators import CustomValidator from netbox.signals import post_clean from .choices import ObjectChangeActionChoices from .models import ConfigRevision, CustomField, ObjectChange @@ -159,7 +161,18 @@ m2m_changed.connect(handle_cf_removed_obj_types, sender=CustomField.content_type def run_custom_validators(sender, instance, **kwargs): model_name = f'{sender._meta.app_label}.{sender._meta.model_name}' validators = settings.CUSTOM_VALIDATORS.get(model_name, []) + for validator in validators: + + # Loading a validator class by dotted path + if type(validator) is str: + module, cls = validator.rsplit('.', 1) + validator = getattr(importlib.import_module(module), cls)() + + # Constructing a new instance on the fly from a ruleset + elif type(validator) is dict: + validator = CustomValidator(validator) + validator(instance) diff --git a/netbox/extras/tests/test_customvalidator.py b/netbox/extras/tests/test_customvalidator.py index 373303fb1..89857b615 100644 --- a/netbox/extras/tests/test_customvalidator.py +++ b/netbox/extras/tests/test_customvalidator.py @@ -119,3 +119,38 @@ class CustomValidatorTest(TestCase): @override_settings(CUSTOM_VALIDATORS={'dcim.site': [custom_validator]}) def test_custom_valid(self): Site(name='foo', slug='foo').clean() + + +class CustomValidatorConfigTest(TestCase): + + @override_settings( + CUSTOM_VALIDATORS={ + 'dcim.site': [ + {'name': {'min_length': 5}} + ] + } + ) + def test_plain_data(self): + """ + Test custom validator configuration using plain data (as opposed to a CustomValidator + class) + """ + with self.assertRaises(ValidationError): + Site(name='abcd', slug='abcd').clean() + Site(name='abcde', slug='abcde').clean() + + @override_settings( + CUSTOM_VALIDATORS={ + 'dcim.site': ( + 'extras.tests.test_customvalidator.MyValidator', + ) + } + ) + def test_dotted_path(self): + """ + Test custom validator configuration using a dotted path (string) reference to a + CustomValidator class. + """ + Site(name='foo', slug='foo').clean() + with self.assertRaises(ValidationError): + Site(name='bar', slug='bar').clean() From 2a00519b93afeffe638f0a27b1e204adbf66d59f Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Mon, 8 Nov 2021 15:07:58 -0500 Subject: [PATCH 188/289] Move CHANGELOG_RETENTION to dyanmic configuration --- docs/configuration/dynamic-settings.md | 12 ++++++++++++ docs/configuration/optional-settings.md | 12 ------------ netbox/extras/admin.py | 2 +- netbox/extras/management/commands/housekeeping.py | 10 ++++++---- netbox/netbox/config/parameters.py | 7 +++++++ netbox/netbox/configuration.example.py | 3 --- netbox/netbox/settings.py | 1 - 7 files changed, 26 insertions(+), 21 deletions(-) diff --git a/docs/configuration/dynamic-settings.md b/docs/configuration/dynamic-settings.md index 765e1d0f1..bb8fb33d7 100644 --- a/docs/configuration/dynamic-settings.md +++ b/docs/configuration/dynamic-settings.md @@ -31,6 +31,18 @@ This defines custom content to be displayed on the login page above the login fo --- +## CHANGELOG_RETENTION + +Default: 90 + +The number of days to retain logged changes (object creations, updates, and deletions). Set this to `0` to retain +changes in the database indefinitely. + +!!! warning + If enabling indefinite changelog retention, it is recommended to periodically delete old entries. Otherwise, the database may eventually exceed capacity. + +--- + ## ENFORCE_GLOBAL_UNIQUE Default: False diff --git a/docs/configuration/optional-settings.md b/docs/configuration/optional-settings.md index d3b82e995..49a4a776b 100644 --- a/docs/configuration/optional-settings.md +++ b/docs/configuration/optional-settings.md @@ -25,18 +25,6 @@ BASE_PATH = 'netbox/' --- -## CHANGELOG_RETENTION - -Default: 90 - -The number of days to retain logged changes (object creations, updates, and deletions). Set this to `0` to retain -changes in the database indefinitely. - -!!! warning - If enabling indefinite changelog retention, it is recommended to periodically delete old entries. Otherwise, the database may eventually exceed capacity. - ---- - ## CORS_ORIGIN_ALLOW_ALL Default: False diff --git a/netbox/extras/admin.py b/netbox/extras/admin.py index 752c8c83d..a905367c5 100644 --- a/netbox/extras/admin.py +++ b/netbox/extras/admin.py @@ -31,7 +31,7 @@ class ConfigRevisionAdmin(admin.ModelAdmin): 'fields': ('NAPALM_USERNAME', 'NAPALM_PASSWORD', 'NAPALM_TIMEOUT', 'NAPALM_ARGS'), }), ('Miscellaneous', { - 'fields': ('MAINTENANCE_MODE', 'MAPS_URL'), + 'fields': ('MAINTENANCE_MODE', 'CHANGELOG_RETENTION', 'MAPS_URL'), }), ('Config Revision', { 'fields': ('comment',), diff --git a/netbox/extras/management/commands/housekeeping.py b/netbox/extras/management/commands/housekeeping.py index a4d617c9a..0607a16c2 100644 --- a/netbox/extras/management/commands/housekeeping.py +++ b/netbox/extras/management/commands/housekeeping.py @@ -10,12 +10,14 @@ from django.utils import timezone from packaging import version from extras.models import ObjectChange +from netbox.config import Config class Command(BaseCommand): help = "Perform nightly housekeeping tasks. (This command can be run at any time.)" def handle(self, *args, **options): + config = Config() # Clear expired authentication sessions (essentially replicating the `clearsessions` command) if options['verbosity']: @@ -37,10 +39,10 @@ class Command(BaseCommand): # Delete expired ObjectRecords if options['verbosity']: self.stdout.write("[*] Checking for expired changelog records") - if settings.CHANGELOG_RETENTION: - cutoff = timezone.now() - timedelta(days=settings.CHANGELOG_RETENTION) + if config.CHANGELOG_RETENTION: + cutoff = timezone.now() - timedelta(days=config.CHANGELOG_RETENTION) if options['verbosity'] >= 2: - self.stdout.write(f"\tRetention period: {settings.CHANGELOG_RETENTION} days") + self.stdout.write(f"\tRetention period: {config.CHANGELOG_RETENTION} days") self.stdout.write(f"\tCut-off time: {cutoff}") expired_records = ObjectChange.objects.filter(time__lt=cutoff).count() if expired_records: @@ -58,7 +60,7 @@ class Command(BaseCommand): self.stdout.write("\tNo expired records found.", self.style.SUCCESS) elif options['verbosity']: self.stdout.write( - f"\tSkipping: No retention period specified (CHANGELOG_RETENTION = {settings.CHANGELOG_RETENTION})" + f"\tSkipping: No retention period specified (CHANGELOG_RETENTION = {config.CHANGELOG_RETENTION})" ) # Check for new releases (if enabled) diff --git a/netbox/netbox/config/parameters.py b/netbox/netbox/config/parameters.py index 8bf1d6dc5..7b9f6a1f7 100644 --- a/netbox/netbox/config/parameters.py +++ b/netbox/netbox/config/parameters.py @@ -130,6 +130,13 @@ PARAMS = ( description="Enable maintenance mode", field=forms.BooleanField ), + ConfigParam( + name='CHANGELOG_RETENTION', + label='Changelog retention', + default=90, + description="Days to retain changelog history (set to zero for unlimited)", + field=forms.IntegerField + ), ConfigParam( name='MAPS_URL', label='Maps URL', diff --git a/netbox/netbox/configuration.example.py b/netbox/netbox/configuration.example.py index 189e98d11..947ed6d53 100644 --- a/netbox/netbox/configuration.example.py +++ b/netbox/netbox/configuration.example.py @@ -76,9 +76,6 @@ ADMINS = [ # BASE_PATH = 'netbox/' BASE_PATH = '' -# Maximum number of days to retain logged changes. Set to 0 to retain changes indefinitely. (Default: 90) -CHANGELOG_RETENTION = 90 - # API Cross-Origin Resource Sharing (CORS) settings. If CORS_ORIGIN_ALLOW_ALL is set to True, all origins will be # allowed. Otherwise, define a list of allowed origins using either CORS_ORIGIN_WHITELIST or # CORS_ORIGIN_REGEX_WHITELIST. For more information, see https://github.com/ottoyiu/django-cors-headers diff --git a/netbox/netbox/settings.py b/netbox/netbox/settings.py index f4f6c2f32..c91a5e75b 100644 --- a/netbox/netbox/settings.py +++ b/netbox/netbox/settings.py @@ -80,7 +80,6 @@ ADMINS = getattr(configuration, 'ADMINS', []) BASE_PATH = getattr(configuration, 'BASE_PATH', '') if BASE_PATH: BASE_PATH = BASE_PATH.strip('/') + '/' # Enforce trailing slash only -CHANGELOG_RETENTION = getattr(configuration, 'CHANGELOG_RETENTION', 90) CORS_ORIGIN_ALLOW_ALL = getattr(configuration, 'CORS_ORIGIN_ALLOW_ALL', False) CORS_ORIGIN_REGEX_WHITELIST = getattr(configuration, 'CORS_ORIGIN_REGEX_WHITELIST', []) CORS_ORIGIN_WHITELIST = getattr(configuration, 'CORS_ORIGIN_WHITELIST', []) From f8e44c09ebd54704594eb1c544a98a7e3e991fa9 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Mon, 8 Nov 2021 15:22:29 -0500 Subject: [PATCH 189/289] Move CUSTOM_VALIDATORS to dynamic configuration --- docs/configuration/dynamic-settings.md | 23 +++++++++++++++++++++++ docs/configuration/optional-settings.md | 16 ---------------- netbox/extras/admin.py | 3 +++ netbox/extras/signals.py | 5 +++-- netbox/netbox/config/parameters.py | 9 +++++++++ netbox/netbox/configuration.example.py | 14 -------------- netbox/netbox/settings.py | 1 - 7 files changed, 38 insertions(+), 33 deletions(-) diff --git a/docs/configuration/dynamic-settings.md b/docs/configuration/dynamic-settings.md index bb8fb33d7..a98143045 100644 --- a/docs/configuration/dynamic-settings.md +++ b/docs/configuration/dynamic-settings.md @@ -43,6 +43,29 @@ changes in the database indefinitely. --- +## CUSTOM_VALIDATORS + +This is a mapping of models to [custom validators](../customization/custom-validation.md) that have been defined locally to enforce custom validation logic. An example is provided below: + +```python +CUSTOM_VALIDATORS = { + "dcim.site": [ + { + "name": { + "min_length": 5, + "max_length": 30 + } + }, + "my_plugin.validators.Validator1" + ], + "dim.device": [ + "my_plugin.validators.Validator1" + ] +} +``` + +--- + ## ENFORCE_GLOBAL_UNIQUE Default: False diff --git a/docs/configuration/optional-settings.md b/docs/configuration/optional-settings.md index 49a4a776b..e49968130 100644 --- a/docs/configuration/optional-settings.md +++ b/docs/configuration/optional-settings.md @@ -49,22 +49,6 @@ CORS_ORIGIN_WHITELIST = [ --- -## CUSTOM_VALIDATORS - -This is a mapping of models to [custom validators](../customization/custom-validation.md) that have been defined locally to enforce custom validation logic. An example is provided below: - -```python -CUSTOM_VALIDATORS = { - 'dcim.site': ( - Validator1, - Validator2, - Validator3 - ) -} -``` - ---- - ## DEBUG Default: False diff --git a/netbox/extras/admin.py b/netbox/extras/admin.py index a905367c5..73ffb40fc 100644 --- a/netbox/extras/admin.py +++ b/netbox/extras/admin.py @@ -27,6 +27,9 @@ class ConfigRevisionAdmin(admin.ModelAdmin): ('Pagination', { 'fields': ('PAGINATE_COUNT', 'MAX_PAGE_SIZE'), }), + ('Validation', { + 'fields': ('CUSTOM_VALIDATORS',), + }), ('NAPALM', { 'fields': ('NAPALM_USERNAME', 'NAPALM_PASSWORD', 'NAPALM_TIMEOUT', 'NAPALM_ARGS'), }), diff --git a/netbox/extras/signals.py b/netbox/extras/signals.py index 99bc91236..77931f268 100644 --- a/netbox/extras/signals.py +++ b/netbox/extras/signals.py @@ -1,13 +1,13 @@ import importlib import logging -from django.conf import settings from django.contrib.contenttypes.models import ContentType from django.db.models.signals import m2m_changed, post_save, pre_delete from django.dispatch import receiver, Signal from django_prometheus.models import model_deletes, model_inserts, model_updates from extras.validators import CustomValidator +from netbox.config import get_config from netbox.signals import post_clean from .choices import ObjectChangeActionChoices from .models import ConfigRevision, CustomField, ObjectChange @@ -159,8 +159,9 @@ m2m_changed.connect(handle_cf_removed_obj_types, sender=CustomField.content_type @receiver(post_clean) def run_custom_validators(sender, instance, **kwargs): + config = get_config() model_name = f'{sender._meta.app_label}.{sender._meta.model_name}' - validators = settings.CUSTOM_VALIDATORS.get(model_name, []) + validators = config.CUSTOM_VALIDATORS.get(model_name, []) for validator in validators: diff --git a/netbox/netbox/config/parameters.py b/netbox/netbox/config/parameters.py index 7b9f6a1f7..1be664b28 100644 --- a/netbox/netbox/config/parameters.py +++ b/netbox/netbox/config/parameters.py @@ -94,6 +94,15 @@ PARAMS = ( field=forms.IntegerField ), + # Validation + ConfigParam( + name='CUSTOM_VALIDATORS', + label='Custom validators', + default={}, + description="Custom validation rules (JSON)", + field=forms.JSONField + ), + # NAPALM ConfigParam( name='NAPALM_USERNAME', diff --git a/netbox/netbox/configuration.example.py b/netbox/netbox/configuration.example.py index 947ed6d53..48885f844 100644 --- a/netbox/netbox/configuration.example.py +++ b/netbox/netbox/configuration.example.py @@ -87,20 +87,6 @@ CORS_ORIGIN_REGEX_WHITELIST = [ # r'^(https?://)?(\w+\.)?example\.com$', ] -# Specify any custom validators here, as a mapping of model to a list of validators classes. Validators should be -# instances of or inherit from CustomValidator. -# from extras.validators import CustomValidator -CUSTOM_VALIDATORS = { - # 'dcim.site': [ - # CustomValidator({ - # 'name': { - # 'min_length': 10, - # 'regex': r'\d{3}$', - # } - # }) - # ], -} - # Set to True to enable server debugging. WARNING: Debugging introduces a substantial performance penalty and may reveal # sensitive information about your installation. Only enable debugging while performing testing. Never enable debugging # on a production system. diff --git a/netbox/netbox/settings.py b/netbox/netbox/settings.py index c91a5e75b..529da77dc 100644 --- a/netbox/netbox/settings.py +++ b/netbox/netbox/settings.py @@ -83,7 +83,6 @@ if BASE_PATH: CORS_ORIGIN_ALLOW_ALL = getattr(configuration, 'CORS_ORIGIN_ALLOW_ALL', False) CORS_ORIGIN_REGEX_WHITELIST = getattr(configuration, 'CORS_ORIGIN_REGEX_WHITELIST', []) CORS_ORIGIN_WHITELIST = getattr(configuration, 'CORS_ORIGIN_WHITELIST', []) -CUSTOM_VALIDATORS = getattr(configuration, 'CUSTOM_VALIDATORS', {}) DATE_FORMAT = getattr(configuration, 'DATE_FORMAT', 'N j, Y') DATETIME_FORMAT = getattr(configuration, 'DATETIME_FORMAT', 'N j, Y g:i a') DEBUG = getattr(configuration, 'DEBUG', False) From d2391b9c63ecdac04121e18f2f072f7c62193d2a Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Mon, 8 Nov 2021 15:31:09 -0500 Subject: [PATCH 190/289] Move GRAPHQL_ENABLED to dynamic configuration --- docs/configuration/dynamic-settings.md | 8 ++++++++ docs/configuration/optional-settings.md | 8 -------- netbox/extras/admin.py | 2 +- netbox/netbox/config/parameters.py | 7 +++++++ netbox/netbox/configuration.example.py | 3 --- netbox/netbox/graphql/views.py | 4 +++- netbox/netbox/settings.py | 1 - netbox/templates/base/layout.html | 2 +- 8 files changed, 20 insertions(+), 15 deletions(-) diff --git a/docs/configuration/dynamic-settings.md b/docs/configuration/dynamic-settings.md index a98143045..a222272c2 100644 --- a/docs/configuration/dynamic-settings.md +++ b/docs/configuration/dynamic-settings.md @@ -74,6 +74,14 @@ By default, NetBox will permit users to create duplicate prefixes and IP address --- +## GRAPHQL_ENABLED + +Default: True + +Setting this to False will disable the GraphQL API. + +--- + ## MAINTENANCE_MODE Default: False diff --git a/docs/configuration/optional-settings.md b/docs/configuration/optional-settings.md index e49968130..d8d79b6ec 100644 --- a/docs/configuration/optional-settings.md +++ b/docs/configuration/optional-settings.md @@ -140,14 +140,6 @@ EXEMPT_VIEW_PERMISSIONS = ['*'] --- -## GRAPHQL_ENABLED - -Default: True - -Setting this to False will disable the GraphQL API. - ---- - ## HTTP_PROXIES Default: None diff --git a/netbox/extras/admin.py b/netbox/extras/admin.py index 73ffb40fc..b6ee01db9 100644 --- a/netbox/extras/admin.py +++ b/netbox/extras/admin.py @@ -34,7 +34,7 @@ class ConfigRevisionAdmin(admin.ModelAdmin): 'fields': ('NAPALM_USERNAME', 'NAPALM_PASSWORD', 'NAPALM_TIMEOUT', 'NAPALM_ARGS'), }), ('Miscellaneous', { - 'fields': ('MAINTENANCE_MODE', 'CHANGELOG_RETENTION', 'MAPS_URL'), + 'fields': ('MAINTENANCE_MODE', 'GRAPHQL_ENABLED', 'CHANGELOG_RETENTION', 'MAPS_URL'), }), ('Config Revision', { 'fields': ('comment',), diff --git a/netbox/netbox/config/parameters.py b/netbox/netbox/config/parameters.py index 1be664b28..b4f16bf28 100644 --- a/netbox/netbox/config/parameters.py +++ b/netbox/netbox/config/parameters.py @@ -139,6 +139,13 @@ PARAMS = ( description="Enable maintenance mode", field=forms.BooleanField ), + ConfigParam( + name='GRAPHQL_ENABLED', + label='GraphQL enabled', + default=True, + description="Enable the GraphQL API", + field=forms.BooleanField + ), ConfigParam( name='CHANGELOG_RETENTION', label='Changelog retention', diff --git a/netbox/netbox/configuration.example.py b/netbox/netbox/configuration.example.py index 48885f844..8130acb2e 100644 --- a/netbox/netbox/configuration.example.py +++ b/netbox/netbox/configuration.example.py @@ -112,9 +112,6 @@ EXEMPT_VIEW_PERMISSIONS = [ # 'ipam.prefix', ] -# Enable the GraphQL API -GRAPHQL_ENABLED = True - # HTTP proxies NetBox should use when sending outbound HTTP requests (e.g. for webhooks). # HTTP_PROXIES = { # 'http': 'http://10.10.1.10:3128', diff --git a/netbox/netbox/graphql/views.py b/netbox/netbox/graphql/views.py index c2c0269fa..e1573dba6 100644 --- a/netbox/netbox/graphql/views.py +++ b/netbox/netbox/graphql/views.py @@ -6,6 +6,7 @@ from graphene_django.views import GraphQLView as GraphQLView_ from rest_framework.exceptions import AuthenticationFailed from netbox.api.authentication import TokenAuthentication +from netbox.config import get_config class GraphQLView(GraphQLView_): @@ -15,9 +16,10 @@ class GraphQLView(GraphQLView_): graphiql_template = 'graphiql.html' def dispatch(self, request, *args, **kwargs): + config = get_config() # Enforce GRAPHQL_ENABLED - if not settings.GRAPHQL_ENABLED: + if not config.GRAPHQL_ENABLED: return HttpResponseNotFound("The GraphQL API is not enabled.") # Attempt to authenticate the user using a DRF token, if provided diff --git a/netbox/netbox/settings.py b/netbox/netbox/settings.py index 529da77dc..5e5718559 100644 --- a/netbox/netbox/settings.py +++ b/netbox/netbox/settings.py @@ -90,7 +90,6 @@ DEVELOPER = getattr(configuration, 'DEVELOPER', False) DOCS_ROOT = getattr(configuration, 'DOCS_ROOT', os.path.join(os.path.dirname(BASE_DIR), 'docs')) EMAIL = getattr(configuration, 'EMAIL', {}) EXEMPT_VIEW_PERMISSIONS = getattr(configuration, 'EXEMPT_VIEW_PERMISSIONS', []) -GRAPHQL_ENABLED = getattr(configuration, 'GRAPHQL_ENABLED', True) HTTP_PROXIES = getattr(configuration, 'HTTP_PROXIES', None) INTERNAL_IPS = getattr(configuration, 'INTERNAL_IPS', ('127.0.0.1', '::1')) LOGGING = getattr(configuration, 'LOGGING', {}) diff --git a/netbox/templates/base/layout.html b/netbox/templates/base/layout.html index 2770a6dc6..d45dc62f6 100644 --- a/netbox/templates/base/layout.html +++ b/netbox/templates/base/layout.html @@ -127,7 +127,7 @@ {# GraphQL API #} - {% if settings.GRAPHQL_ENABLED %} + {% if config.GRAPHQL_ENABLED %} From f3d8f1b1fb06be80ef7afc2fc6c145f2fe83922a Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Mon, 8 Nov 2021 15:38:55 -0500 Subject: [PATCH 191/289] Changelog for #7775 --- docs/release-notes/version-3.1.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/release-notes/version-3.1.md b/docs/release-notes/version-3.1.md index 746a64e62..b19e7979c 100644 --- a/docs/release-notes/version-3.1.md +++ b/docs/release-notes/version-3.1.md @@ -3,6 +3,7 @@ ### Enhancements * [#7619](https://github.com/netbox-community/netbox/issues/7619) - Permit custom validation rules to be defined as plain data or dotted path to class +* [#7775](https://github.com/netbox-community/netbox/issues/7775) - Enable dynamic config for `CHANGELOG_RETENTION`, `CUSTOM_VALIDATORS`, and `GRAPHQL_ENABLED` ### Bug Fixes From 3f72492a59550469bc621df8071948f26c3fbacb Mon Sep 17 00:00:00 2001 From: Jason Yates Date: Tue, 9 Nov 2021 15:18:46 +0000 Subject: [PATCH 192/289] Fixed #7783 - Site location visual changes Updating site location list to visually match the /dcim/locations list where child locations are "indtended" with mdi-circle-small. Also removes the padding-left attribute on each row as it is no longer functional. --- netbox/templates/dcim/site.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/netbox/templates/dcim/site.html b/netbox/templates/dcim/site.html index 1ee8cfce0..2afa5376c 100644 --- a/netbox/templates/dcim/site.html +++ b/netbox/templates/dcim/site.html @@ -219,8 +219,8 @@
- + + {% for i in location.level|as_range %}{% endfor %} {{ location }} From 82210cc116bb54d63a80cf54ec431d14b32da7c8 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Tue, 9 Nov 2021 15:15:34 -0500 Subject: [PATCH 193/289] Changelog for #7783 --- docs/release-notes/version-3.0.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/release-notes/version-3.0.md b/docs/release-notes/version-3.0.md index ddf32c680..8c2d3cbad 100644 --- a/docs/release-notes/version-3.0.md +++ b/docs/release-notes/version-3.0.md @@ -10,6 +10,7 @@ * [#7752](https://github.com/netbox-community/netbox/issues/7752) - Fix minimum version check under Python v3.10 * [#7766](https://github.com/netbox-community/netbox/issues/7766) - Add missing outer dimension columns to rack table +* [#7783](https://github.com/netbox-community/netbox/issues/7783) - Fix indentation of locations under site view --- From d08ed9fe5f69d736d566f8f5f6ebba7c3b25951a Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Tue, 9 Nov 2021 15:24:21 -0500 Subject: [PATCH 194/289] Fixes #7780: Preserve mutli-line values during CSV file import --- docs/release-notes/version-3.0.md | 1 + netbox/utilities/forms/fields.py | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/release-notes/version-3.0.md b/docs/release-notes/version-3.0.md index 8c2d3cbad..6fe9948a0 100644 --- a/docs/release-notes/version-3.0.md +++ b/docs/release-notes/version-3.0.md @@ -10,6 +10,7 @@ * [#7752](https://github.com/netbox-community/netbox/issues/7752) - Fix minimum version check under Python v3.10 * [#7766](https://github.com/netbox-community/netbox/issues/7766) - Add missing outer dimension columns to rack table +* [#7780](https://github.com/netbox-community/netbox/issues/7780) - Preserve mutli-line values during CSV file import * [#7783](https://github.com/netbox-community/netbox/issues/7783) - Fix indentation of locations under site view --- diff --git a/netbox/utilities/forms/fields.py b/netbox/utilities/forms/fields.py index 2561c2e22..d9f1719ec 100644 --- a/netbox/utilities/forms/fields.py +++ b/netbox/utilities/forms/fields.py @@ -224,7 +224,7 @@ class CSVFileField(forms.FileField): return None csv_str = file.read().decode('utf-8').strip() - reader = csv.reader(csv_str.splitlines()) + reader = csv.reader(StringIO(csv_str)) headers, records = parse_csv(reader) return headers, records From 9dad7e4daf22bce29ce9318f849a81dac2647c33 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Tue, 9 Nov 2021 16:04:16 -0500 Subject: [PATCH 195/289] Fixes #7701: Fix conflation of assigned IP status & role in interface tables --- docs/release-notes/version-3.0.md | 1 + netbox/dcim/tables/template_code.py | 18 +++++++----------- netbox/project-static/dist/netbox-dark.css | 2 +- netbox/project-static/dist/netbox-light.css | 2 +- netbox/project-static/dist/netbox-print.css | 2 +- netbox/project-static/styles/netbox.scss | 2 +- 6 files changed, 12 insertions(+), 15 deletions(-) diff --git a/docs/release-notes/version-3.0.md b/docs/release-notes/version-3.0.md index 6fe9948a0..1f3716383 100644 --- a/docs/release-notes/version-3.0.md +++ b/docs/release-notes/version-3.0.md @@ -8,6 +8,7 @@ ### Bug Fixes +* [#7701](https://github.com/netbox-community/netbox/issues/7701) - Fix conflation of assigned IP status & role in interface tables * [#7752](https://github.com/netbox-community/netbox/issues/7752) - Fix minimum version check under Python v3.10 * [#7766](https://github.com/netbox-community/netbox/issues/7766) - Add missing outer dimension columns to rack table * [#7780](https://github.com/netbox-community/netbox/issues/7780) - Preserve mutli-line values during CSV file import diff --git a/netbox/dcim/tables/template_code.py b/netbox/dcim/tables/template_code.py index 2f359e1b9..092fe3b95 100644 --- a/netbox/dcim/tables/template_code.py +++ b/netbox/dcim/tables/template_code.py @@ -40,17 +40,13 @@ DEVICEBAY_STATUS = """ INTERFACE_IPADDRESSES = """
- {% for ip in record.ip_addresses.all %} - - {{ ip }} - - {% endfor %} + {% for ip in record.ip_addresses.all %} + {% if ip.status != 'active' %} + {{ ip }} + {% else %} + {{ ip }} + {% endif %} + {% endfor %}
""" diff --git a/netbox/project-static/dist/netbox-dark.css b/netbox/project-static/dist/netbox-dark.css index b06cca0a1..bac0e589a 100644 --- a/netbox/project-static/dist/netbox-dark.css +++ b/netbox/project-static/dist/netbox-dark.css @@ -1 +1 @@ -html[data-netbox-color-mode=dark] :root{--bs-blue: #0d6efd;--bs-indigo: #6610f2;--bs-purple: #6f42c1;--bs-pink: #d63384;--bs-red: #dc3545;--bs-orange: #fd7e14;--bs-yellow: #ffc107;--bs-green: #198754;--bs-teal: #20c997;--bs-cyan: #0dcaf0;--bs-white: #fff;--bs-gray: #6c757d;--bs-gray-dark: #343a40;--bs-primary: #6ea8fe;--bs-secondary: #adb5bd;--bs-success: #75b798;--bs-info: #6edff6;--bs-warning: #ffda6a;--bs-danger: #ea868f;--bs-light: #dee2e6;--bs-dark: #adb5bd;--bs-red: #ea868f;--bs-yellow: #ffda6a;--bs-green: #75b798;--bs-blue: #6ea8fe;--bs-cyan: #6edff6;--bs-indigo: #a370f7;--bs-purple: #a98eda;--bs-pink: #e685b5;--bs-darker: #1b1f22;--bs-darkest: #171b1d;--bs-gray: #ced4da;--bs-gray-100: #f8f9fa;--bs-gray-200: #e9ecef;--bs-gray-300: #dee2e6;--bs-gray-400: #ced4da;--bs-gray-500: #adb5bd;--bs-gray-600: #6c757d;--bs-gray-700: #495057;--bs-gray-800: #343a40;--bs-gray-900: #212529;--bs-red-100: #f8d7da;--bs-red-200: #f1aeb5;--bs-red-300: #ea868f;--bs-red-400: #e35d6a;--bs-red-500: #dc3545;--bs-red-600: #b02a37;--bs-red-700: #842029;--bs-red-800: #58151c;--bs-red-900: #2c0b0e;--bs-yellow-100: #fff3cd;--bs-yellow-200: #ffe69c;--bs-yellow-300: #ffda6a;--bs-yellow-400: #ffcd39;--bs-yellow-500: #ffc107;--bs-yellow-600: #cc9a06;--bs-yellow-700: #997404;--bs-yellow-800: #664d03;--bs-yellow-900: #332701;--bs-green-100: #d1e7dd;--bs-green-200: #a3cfbb;--bs-green-300: #75b798;--bs-green-400: #479f76;--bs-green-500: #198754;--bs-green-600: #146c43;--bs-green-700: #0f5132;--bs-green-800: #0a3622;--bs-green-900: #051b11;--bs-blue-100: #cfe2ff;--bs-blue-200: #9ec5fe;--bs-blue-300: #6ea8fe;--bs-blue-400: #3d8bfd;--bs-blue-500: #0d6efd;--bs-blue-600: #0a58ca;--bs-blue-700: #084298;--bs-blue-800: #052c65;--bs-blue-900: #031633;--bs-cyan-100: #cff4fc;--bs-cyan-200: #9eeaf9;--bs-cyan-300: #6edff6;--bs-cyan-400: #3dd5f3;--bs-cyan-500: #0dcaf0;--bs-cyan-600: #0aa2c0;--bs-cyan-700: #087990;--bs-cyan-800: #055160;--bs-cyan-900: #032830;--bs-indigo-100: #e0cffc;--bs-indigo-200: #c29ffa;--bs-indigo-300: #a370f7;--bs-indigo-400: #8540f5;--bs-indigo-500: #6610f2;--bs-indigo-600: #520dc2;--bs-indigo-700: #3d0a91;--bs-indigo-800: #290661;--bs-indigo-900: #140330;--bs-purple-100: #e2d9f3;--bs-purple-200: #c5b3e6;--bs-purple-300: #a98eda;--bs-purple-400: #8c68cd;--bs-purple-500: #6f42c1;--bs-purple-600: #59359a;--bs-purple-700: #432874;--bs-purple-800: #2c1a4d;--bs-purple-900: #160d27;--bs-pink-100: #f7d6e6;--bs-pink-200: #efadce;--bs-pink-300: #e685b5;--bs-pink-400: #de5c9d;--bs-pink-500: #d63384;--bs-pink-600: #ab296a;--bs-pink-700: #801f4f;--bs-pink-800: #561435;--bs-pink-900: #2b0a1a;--bs-font-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, .15), rgba(255, 255, 255, 0))}html[data-netbox-color-mode=dark] *,html[data-netbox-color-mode=dark] *:before,html[data-netbox-color-mode=dark] *:after{box-sizing:border-box}@media (prefers-reduced-motion: no-preference){html[data-netbox-color-mode=dark] :root{scroll-behavior:smooth}}html[data-netbox-color-mode=dark] body{margin:0;font-family:var(--bs-font-sans-serif);font-size:1rem;font-weight:400;line-height:1.5;color:#fff;background-color:#1b1f22;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0)}html[data-netbox-color-mode=dark] hr{margin:1rem 0;color:inherit;background-color:currentColor;border:0;opacity:.25}html[data-netbox-color-mode=dark] hr:not([size]){height:1px}html[data-netbox-color-mode=dark] h6,html[data-netbox-color-mode=dark] .h6,html[data-netbox-color-mode=dark] h5,html[data-netbox-color-mode=dark] .h5,html[data-netbox-color-mode=dark] h4,html[data-netbox-color-mode=dark] .h4,html[data-netbox-color-mode=dark] h3,html[data-netbox-color-mode=dark] .h3,html[data-netbox-color-mode=dark] h2,html[data-netbox-color-mode=dark] .h2,html[data-netbox-color-mode=dark] h1,html[data-netbox-color-mode=dark] .h1{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2}html[data-netbox-color-mode=dark] h1,html[data-netbox-color-mode=dark] .h1{font-size:calc(1.375rem + 1.5vw)}@media (min-width: 1200px){html[data-netbox-color-mode=dark] h1,html[data-netbox-color-mode=dark] .h1{font-size:2.5rem}}html[data-netbox-color-mode=dark] h2,html[data-netbox-color-mode=dark] .h2{font-size:calc(1.325rem + .9vw)}@media (min-width: 1200px){html[data-netbox-color-mode=dark] h2,html[data-netbox-color-mode=dark] .h2{font-size:2rem}}html[data-netbox-color-mode=dark] h3,html[data-netbox-color-mode=dark] .h3{font-size:calc(1.3rem + .6vw)}@media (min-width: 1200px){html[data-netbox-color-mode=dark] h3,html[data-netbox-color-mode=dark] .h3{font-size:1.75rem}}html[data-netbox-color-mode=dark] h4,html[data-netbox-color-mode=dark] .h4{font-size:calc(1.275rem + .3vw)}@media (min-width: 1200px){html[data-netbox-color-mode=dark] h4,html[data-netbox-color-mode=dark] .h4{font-size:1.5rem}}html[data-netbox-color-mode=dark] h5,html[data-netbox-color-mode=dark] .h5{font-size:1.25rem}html[data-netbox-color-mode=dark] h6,html[data-netbox-color-mode=dark] .h6{font-size:1rem}html[data-netbox-color-mode=dark] p{margin-top:0;margin-bottom:1rem}html[data-netbox-color-mode=dark] abbr[title],html[data-netbox-color-mode=dark] abbr[data-bs-original-title]{text-decoration:underline dotted;cursor:help;text-decoration-skip-ink:none}html[data-netbox-color-mode=dark] address{margin-bottom:1rem;font-style:normal;line-height:inherit}html[data-netbox-color-mode=dark] ol,html[data-netbox-color-mode=dark] ul{padding-left:2rem}html[data-netbox-color-mode=dark] ol,html[data-netbox-color-mode=dark] ul,html[data-netbox-color-mode=dark] dl{margin-top:0;margin-bottom:1rem}html[data-netbox-color-mode=dark] ol ol,html[data-netbox-color-mode=dark] ul ul,html[data-netbox-color-mode=dark] ol ul,html[data-netbox-color-mode=dark] ul ol{margin-bottom:0}html[data-netbox-color-mode=dark] dt{font-weight:700}html[data-netbox-color-mode=dark] dd{margin-bottom:.5rem;margin-left:0}html[data-netbox-color-mode=dark] blockquote{margin:0 0 1rem}html[data-netbox-color-mode=dark] b,html[data-netbox-color-mode=dark] strong{font-weight:800}html[data-netbox-color-mode=dark] small,html[data-netbox-color-mode=dark] .small{font-size:.875em}html[data-netbox-color-mode=dark] mark,html[data-netbox-color-mode=dark] .mark{padding:.2em;background-color:#fcf8e3}html[data-netbox-color-mode=dark] sub,html[data-netbox-color-mode=dark] sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}html[data-netbox-color-mode=dark] sub{bottom:-.25em}html[data-netbox-color-mode=dark] sup{top:-.5em}html[data-netbox-color-mode=dark] a{color:#9ec5fe;text-decoration:underline}html[data-netbox-color-mode=dark] a:hover{color:#cfe2ff}html[data-netbox-color-mode=dark] a:not([href]):not([class]),html[data-netbox-color-mode=dark] a:not([href]):not([class]):hover{color:inherit;text-decoration:none}html[data-netbox-color-mode=dark] pre,html[data-netbox-color-mode=dark] code,html[data-netbox-color-mode=dark] kbd,html[data-netbox-color-mode=dark] samp{font-family:var(--bs-font-monospace);font-size:1em;direction:ltr;unicode-bidi:bidi-override}html[data-netbox-color-mode=dark] pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em}html[data-netbox-color-mode=dark] pre code{font-size:inherit;color:inherit;word-break:normal}html[data-netbox-color-mode=dark] code{font-size:.875em;color:#e9ecef;word-wrap:break-word}a>html[data-netbox-color-mode=dark] code{color:inherit}html[data-netbox-color-mode=dark] kbd{padding:.2rem .4rem;font-size:.875em;color:#fff;background-color:#dee2e6;border-radius:.375rem}html[data-netbox-color-mode=dark] kbd kbd{padding:0;font-size:1em;font-weight:700}html[data-netbox-color-mode=dark] figure{margin:0 0 1rem}html[data-netbox-color-mode=dark] img,html[data-netbox-color-mode=dark] svg{vertical-align:middle}html[data-netbox-color-mode=dark] table{caption-side:bottom;border-collapse:collapse}html[data-netbox-color-mode=dark] caption{padding-top:.5rem;padding-bottom:.5rem;color:#6c757d;text-align:left}html[data-netbox-color-mode=dark] th{text-align:inherit;text-align:-webkit-match-parent}html[data-netbox-color-mode=dark] thead,html[data-netbox-color-mode=dark] tbody,html[data-netbox-color-mode=dark] tfoot,html[data-netbox-color-mode=dark] tr,html[data-netbox-color-mode=dark] td,html[data-netbox-color-mode=dark] th{border-color:inherit;border-style:solid;border-width:0}html[data-netbox-color-mode=dark] label{display:inline-block}html[data-netbox-color-mode=dark] button{border-radius:0}html[data-netbox-color-mode=dark] button:focus:not(:focus-visible){outline:0}html[data-netbox-color-mode=dark] input,html[data-netbox-color-mode=dark] button,html[data-netbox-color-mode=dark] select,html[data-netbox-color-mode=dark] optgroup,html[data-netbox-color-mode=dark] textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}html[data-netbox-color-mode=dark] button,html[data-netbox-color-mode=dark] select{text-transform:none}html[data-netbox-color-mode=dark] [role=button]{cursor:pointer}html[data-netbox-color-mode=dark] select{word-wrap:normal}html[data-netbox-color-mode=dark] select:disabled{opacity:1}html[data-netbox-color-mode=dark] [list]::-webkit-calendar-picker-indicator{display:none}html[data-netbox-color-mode=dark] button,html[data-netbox-color-mode=dark] [type=button],html[data-netbox-color-mode=dark] [type=reset],html[data-netbox-color-mode=dark] [type=submit]{-webkit-appearance:button}html[data-netbox-color-mode=dark] button:not(:disabled),html[data-netbox-color-mode=dark] [type=button]:not(:disabled),html[data-netbox-color-mode=dark] [type=reset]:not(:disabled),html[data-netbox-color-mode=dark] [type=submit]:not(:disabled){cursor:pointer}html[data-netbox-color-mode=dark] ::-moz-focus-inner{padding:0;border-style:none}html[data-netbox-color-mode=dark] textarea{resize:vertical}html[data-netbox-color-mode=dark] fieldset{min-width:0;padding:0;margin:0;border:0}html[data-netbox-color-mode=dark] legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + .3vw);line-height:inherit}@media (min-width: 1200px){html[data-netbox-color-mode=dark] legend{font-size:1.5rem}}html[data-netbox-color-mode=dark] legend+*{clear:left}html[data-netbox-color-mode=dark] ::-webkit-datetime-edit-fields-wrapper,html[data-netbox-color-mode=dark] ::-webkit-datetime-edit-text,html[data-netbox-color-mode=dark] ::-webkit-datetime-edit-minute,html[data-netbox-color-mode=dark] ::-webkit-datetime-edit-hour-field,html[data-netbox-color-mode=dark] ::-webkit-datetime-edit-day-field,html[data-netbox-color-mode=dark] ::-webkit-datetime-edit-month-field,html[data-netbox-color-mode=dark] ::-webkit-datetime-edit-year-field{padding:0}html[data-netbox-color-mode=dark] ::-webkit-inner-spin-button{height:auto}html[data-netbox-color-mode=dark] [type=search]{outline-offset:-2px;-webkit-appearance:textfield}html[data-netbox-color-mode=dark] ::-webkit-search-decoration{-webkit-appearance:none}html[data-netbox-color-mode=dark] ::-webkit-color-swatch-wrapper{padding:0}html[data-netbox-color-mode=dark] ::file-selector-button{font:inherit}html[data-netbox-color-mode=dark] ::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}html[data-netbox-color-mode=dark] output{display:inline-block}html[data-netbox-color-mode=dark] iframe{border:0}html[data-netbox-color-mode=dark] summary{display:list-item;cursor:pointer}html[data-netbox-color-mode=dark] progress{vertical-align:baseline}html[data-netbox-color-mode=dark] [hidden]{display:none!important}html[data-netbox-color-mode=dark] .lead{font-size:1.25rem;font-weight:300}html[data-netbox-color-mode=dark] .display-1{font-size:calc(1.625rem + 4.5vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){html[data-netbox-color-mode=dark] .display-1{font-size:5rem}}html[data-netbox-color-mode=dark] .display-2{font-size:calc(1.575rem + 3.9vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){html[data-netbox-color-mode=dark] .display-2{font-size:4.5rem}}html[data-netbox-color-mode=dark] .display-3{font-size:calc(1.525rem + 3.3vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){html[data-netbox-color-mode=dark] .display-3{font-size:4rem}}html[data-netbox-color-mode=dark] .display-4{font-size:calc(1.475rem + 2.7vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){html[data-netbox-color-mode=dark] .display-4{font-size:3.5rem}}html[data-netbox-color-mode=dark] .display-5{font-size:calc(1.425rem + 2.1vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){html[data-netbox-color-mode=dark] .display-5{font-size:3rem}}html[data-netbox-color-mode=dark] .display-6{font-size:calc(1.375rem + 1.5vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){html[data-netbox-color-mode=dark] .display-6{font-size:2.5rem}}html[data-netbox-color-mode=dark] .list-unstyled{padding-left:0;list-style:none}html[data-netbox-color-mode=dark] .list-inline{padding-left:0;list-style:none}html[data-netbox-color-mode=dark] .list-inline-item{display:inline-block}html[data-netbox-color-mode=dark] .list-inline-item:not(:last-child){margin-right:.5rem}html[data-netbox-color-mode=dark] .initialism{font-size:.875em;text-transform:uppercase}html[data-netbox-color-mode=dark] .blockquote{margin-bottom:1rem;font-size:1.25rem}html[data-netbox-color-mode=dark] .blockquote>:last-child{margin-bottom:0}html[data-netbox-color-mode=dark] .blockquote-footer{margin-top:-1rem;margin-bottom:1rem;font-size:.875em;color:#6c757d}html[data-netbox-color-mode=dark] .blockquote-footer:before{content:"\2014\a0"}html[data-netbox-color-mode=dark] .img-fluid{max-width:100%;height:auto}html[data-netbox-color-mode=dark] .img-thumbnail{padding:.25rem;background-color:#1b1f22;border:1px solid #dee2e6;border-radius:.375rem;max-width:100%;height:auto}html[data-netbox-color-mode=dark] .figure{display:inline-block}html[data-netbox-color-mode=dark] .figure-img{margin-bottom:.5rem;line-height:1}html[data-netbox-color-mode=dark] .figure-caption{font-size:.875em;color:#6c757d}html[data-netbox-color-mode=dark] .container,html[data-netbox-color-mode=dark] .container-fluid,html[data-netbox-color-mode=dark] .container-xxl,html[data-netbox-color-mode=dark] .container-xl,html[data-netbox-color-mode=dark] .container-lg,html[data-netbox-color-mode=dark] .container-md,html[data-netbox-color-mode=dark] .container-sm{width:100%;padding-right:var(--bs-gutter-x, .75rem);padding-left:var(--bs-gutter-x, .75rem);margin-right:auto;margin-left:auto}@media (min-width: 576px){html[data-netbox-color-mode=dark] .container-sm,html[data-netbox-color-mode=dark] .container{max-width:540px}}@media (min-width: 768px){html[data-netbox-color-mode=dark] .container-md,html[data-netbox-color-mode=dark] .container-sm,html[data-netbox-color-mode=dark] .container{max-width:720px}}@media (min-width: 992px){html[data-netbox-color-mode=dark] .container-lg,html[data-netbox-color-mode=dark] .container-md,html[data-netbox-color-mode=dark] .container-sm,html[data-netbox-color-mode=dark] .container{max-width:960px}}@media (min-width: 1200px){html[data-netbox-color-mode=dark] .container-xl,html[data-netbox-color-mode=dark] .container-lg,html[data-netbox-color-mode=dark] .container-md,html[data-netbox-color-mode=dark] .container-sm,html[data-netbox-color-mode=dark] .container{max-width:1140px}}@media (min-width: 1400px){html[data-netbox-color-mode=dark] .container-xxl,html[data-netbox-color-mode=dark] .container-xl,html[data-netbox-color-mode=dark] .container-lg,html[data-netbox-color-mode=dark] .container-md,html[data-netbox-color-mode=dark] .container-sm,html[data-netbox-color-mode=dark] .container{max-width:1320px}}html[data-netbox-color-mode=dark] .row{--bs-gutter-x: 1.5rem;--bs-gutter-y: 0;display:flex;flex-wrap:wrap;margin-top:calc(var(--bs-gutter-y) * -1);margin-right:calc(var(--bs-gutter-x) * -.5);margin-left:calc(var(--bs-gutter-x) * -.5)}html[data-netbox-color-mode=dark] .row>*{flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-top:var(--bs-gutter-y)}html[data-netbox-color-mode=dark] .col{flex:1 0 0%}html[data-netbox-color-mode=dark] .row-cols-auto>*{flex:0 0 auto;width:auto}html[data-netbox-color-mode=dark] .row-cols-1>*{flex:0 0 auto;width:100%}html[data-netbox-color-mode=dark] .row-cols-2>*{flex:0 0 auto;width:50%}html[data-netbox-color-mode=dark] .row-cols-3>*{flex:0 0 auto;width:33.3333333333%}html[data-netbox-color-mode=dark] .row-cols-4>*{flex:0 0 auto;width:25%}html[data-netbox-color-mode=dark] .row-cols-5>*{flex:0 0 auto;width:20%}html[data-netbox-color-mode=dark] .row-cols-6>*{flex:0 0 auto;width:16.6666666667%}@media (min-width: 576px){html[data-netbox-color-mode=dark] .col-sm{flex:1 0 0%}html[data-netbox-color-mode=dark] .row-cols-sm-auto>*{flex:0 0 auto;width:auto}html[data-netbox-color-mode=dark] .row-cols-sm-1>*{flex:0 0 auto;width:100%}html[data-netbox-color-mode=dark] .row-cols-sm-2>*{flex:0 0 auto;width:50%}html[data-netbox-color-mode=dark] .row-cols-sm-3>*{flex:0 0 auto;width:33.3333333333%}html[data-netbox-color-mode=dark] .row-cols-sm-4>*{flex:0 0 auto;width:25%}html[data-netbox-color-mode=dark] .row-cols-sm-5>*{flex:0 0 auto;width:20%}html[data-netbox-color-mode=dark] .row-cols-sm-6>*{flex:0 0 auto;width:16.6666666667%}}@media (min-width: 768px){html[data-netbox-color-mode=dark] .col-md{flex:1 0 0%}html[data-netbox-color-mode=dark] .row-cols-md-auto>*{flex:0 0 auto;width:auto}html[data-netbox-color-mode=dark] .row-cols-md-1>*{flex:0 0 auto;width:100%}html[data-netbox-color-mode=dark] .row-cols-md-2>*{flex:0 0 auto;width:50%}html[data-netbox-color-mode=dark] .row-cols-md-3>*{flex:0 0 auto;width:33.3333333333%}html[data-netbox-color-mode=dark] .row-cols-md-4>*{flex:0 0 auto;width:25%}html[data-netbox-color-mode=dark] .row-cols-md-5>*{flex:0 0 auto;width:20%}html[data-netbox-color-mode=dark] .row-cols-md-6>*{flex:0 0 auto;width:16.6666666667%}}@media (min-width: 992px){html[data-netbox-color-mode=dark] .col-lg{flex:1 0 0%}html[data-netbox-color-mode=dark] .row-cols-lg-auto>*{flex:0 0 auto;width:auto}html[data-netbox-color-mode=dark] .row-cols-lg-1>*{flex:0 0 auto;width:100%}html[data-netbox-color-mode=dark] .row-cols-lg-2>*{flex:0 0 auto;width:50%}html[data-netbox-color-mode=dark] .row-cols-lg-3>*{flex:0 0 auto;width:33.3333333333%}html[data-netbox-color-mode=dark] .row-cols-lg-4>*{flex:0 0 auto;width:25%}html[data-netbox-color-mode=dark] .row-cols-lg-5>*{flex:0 0 auto;width:20%}html[data-netbox-color-mode=dark] .row-cols-lg-6>*{flex:0 0 auto;width:16.6666666667%}}@media (min-width: 1200px){html[data-netbox-color-mode=dark] .col-xl{flex:1 0 0%}html[data-netbox-color-mode=dark] .row-cols-xl-auto>*{flex:0 0 auto;width:auto}html[data-netbox-color-mode=dark] .row-cols-xl-1>*{flex:0 0 auto;width:100%}html[data-netbox-color-mode=dark] .row-cols-xl-2>*{flex:0 0 auto;width:50%}html[data-netbox-color-mode=dark] .row-cols-xl-3>*{flex:0 0 auto;width:33.3333333333%}html[data-netbox-color-mode=dark] .row-cols-xl-4>*{flex:0 0 auto;width:25%}html[data-netbox-color-mode=dark] .row-cols-xl-5>*{flex:0 0 auto;width:20%}html[data-netbox-color-mode=dark] .row-cols-xl-6>*{flex:0 0 auto;width:16.6666666667%}}@media (min-width: 1400px){html[data-netbox-color-mode=dark] .col-xxl{flex:1 0 0%}html[data-netbox-color-mode=dark] .row-cols-xxl-auto>*{flex:0 0 auto;width:auto}html[data-netbox-color-mode=dark] .row-cols-xxl-1>*{flex:0 0 auto;width:100%}html[data-netbox-color-mode=dark] .row-cols-xxl-2>*{flex:0 0 auto;width:50%}html[data-netbox-color-mode=dark] .row-cols-xxl-3>*{flex:0 0 auto;width:33.3333333333%}html[data-netbox-color-mode=dark] .row-cols-xxl-4>*{flex:0 0 auto;width:25%}html[data-netbox-color-mode=dark] .row-cols-xxl-5>*{flex:0 0 auto;width:20%}html[data-netbox-color-mode=dark] .row-cols-xxl-6>*{flex:0 0 auto;width:16.6666666667%}}html[data-netbox-color-mode=dark] .col-auto{flex:0 0 auto;width:auto}html[data-netbox-color-mode=dark] .col-1{flex:0 0 auto;width:8.33333333%}html[data-netbox-color-mode=dark] .col-2{flex:0 0 auto;width:16.66666667%}html[data-netbox-color-mode=dark] .col-3{flex:0 0 auto;width:25%}html[data-netbox-color-mode=dark] .col-4{flex:0 0 auto;width:33.33333333%}html[data-netbox-color-mode=dark] .col-5{flex:0 0 auto;width:41.66666667%}html[data-netbox-color-mode=dark] .col-6{flex:0 0 auto;width:50%}html[data-netbox-color-mode=dark] .col-7{flex:0 0 auto;width:58.33333333%}html[data-netbox-color-mode=dark] .col-8{flex:0 0 auto;width:66.66666667%}html[data-netbox-color-mode=dark] .col-9{flex:0 0 auto;width:75%}html[data-netbox-color-mode=dark] .col-10{flex:0 0 auto;width:83.33333333%}html[data-netbox-color-mode=dark] .col-11{flex:0 0 auto;width:91.66666667%}html[data-netbox-color-mode=dark] .col-12{flex:0 0 auto;width:100%}html[data-netbox-color-mode=dark] .offset-1{margin-left:8.33333333%}html[data-netbox-color-mode=dark] .offset-2{margin-left:16.66666667%}html[data-netbox-color-mode=dark] .offset-3{margin-left:25%}html[data-netbox-color-mode=dark] .offset-4{margin-left:33.33333333%}html[data-netbox-color-mode=dark] .offset-5{margin-left:41.66666667%}html[data-netbox-color-mode=dark] .offset-6{margin-left:50%}html[data-netbox-color-mode=dark] .offset-7{margin-left:58.33333333%}html[data-netbox-color-mode=dark] .offset-8{margin-left:66.66666667%}html[data-netbox-color-mode=dark] .offset-9{margin-left:75%}html[data-netbox-color-mode=dark] .offset-10{margin-left:83.33333333%}html[data-netbox-color-mode=dark] .offset-11{margin-left:91.66666667%}html[data-netbox-color-mode=dark] .g-0,html[data-netbox-color-mode=dark] .gx-0{--bs-gutter-x: 0}html[data-netbox-color-mode=dark] .g-0,html[data-netbox-color-mode=dark] .gy-0{--bs-gutter-y: 0}html[data-netbox-color-mode=dark] .g-1,html[data-netbox-color-mode=dark] .gx-1{--bs-gutter-x: .25rem}html[data-netbox-color-mode=dark] .g-1,html[data-netbox-color-mode=dark] .gy-1{--bs-gutter-y: .25rem}html[data-netbox-color-mode=dark] .g-2,html[data-netbox-color-mode=dark] .gx-2{--bs-gutter-x: .5rem}html[data-netbox-color-mode=dark] .g-2,html[data-netbox-color-mode=dark] .gy-2{--bs-gutter-y: .5rem}html[data-netbox-color-mode=dark] .g-3,html[data-netbox-color-mode=dark] .gx-3{--bs-gutter-x: 1rem}html[data-netbox-color-mode=dark] .g-3,html[data-netbox-color-mode=dark] .gy-3{--bs-gutter-y: 1rem}html[data-netbox-color-mode=dark] .g-4,html[data-netbox-color-mode=dark] .gx-4{--bs-gutter-x: 1.5rem}html[data-netbox-color-mode=dark] .g-4,html[data-netbox-color-mode=dark] .gy-4{--bs-gutter-y: 1.5rem}html[data-netbox-color-mode=dark] .g-5,html[data-netbox-color-mode=dark] .gx-5{--bs-gutter-x: 3rem}html[data-netbox-color-mode=dark] .g-5,html[data-netbox-color-mode=dark] .gy-5{--bs-gutter-y: 3rem}@media (min-width: 576px){html[data-netbox-color-mode=dark] .col-sm-auto{flex:0 0 auto;width:auto}html[data-netbox-color-mode=dark] .col-sm-1{flex:0 0 auto;width:8.33333333%}html[data-netbox-color-mode=dark] .col-sm-2{flex:0 0 auto;width:16.66666667%}html[data-netbox-color-mode=dark] .col-sm-3{flex:0 0 auto;width:25%}html[data-netbox-color-mode=dark] .col-sm-4{flex:0 0 auto;width:33.33333333%}html[data-netbox-color-mode=dark] .col-sm-5{flex:0 0 auto;width:41.66666667%}html[data-netbox-color-mode=dark] .col-sm-6{flex:0 0 auto;width:50%}html[data-netbox-color-mode=dark] .col-sm-7{flex:0 0 auto;width:58.33333333%}html[data-netbox-color-mode=dark] .col-sm-8{flex:0 0 auto;width:66.66666667%}html[data-netbox-color-mode=dark] .col-sm-9{flex:0 0 auto;width:75%}html[data-netbox-color-mode=dark] .col-sm-10{flex:0 0 auto;width:83.33333333%}html[data-netbox-color-mode=dark] .col-sm-11{flex:0 0 auto;width:91.66666667%}html[data-netbox-color-mode=dark] .col-sm-12{flex:0 0 auto;width:100%}html[data-netbox-color-mode=dark] .offset-sm-0{margin-left:0}html[data-netbox-color-mode=dark] .offset-sm-1{margin-left:8.33333333%}html[data-netbox-color-mode=dark] .offset-sm-2{margin-left:16.66666667%}html[data-netbox-color-mode=dark] .offset-sm-3{margin-left:25%}html[data-netbox-color-mode=dark] .offset-sm-4{margin-left:33.33333333%}html[data-netbox-color-mode=dark] .offset-sm-5{margin-left:41.66666667%}html[data-netbox-color-mode=dark] .offset-sm-6{margin-left:50%}html[data-netbox-color-mode=dark] .offset-sm-7{margin-left:58.33333333%}html[data-netbox-color-mode=dark] .offset-sm-8{margin-left:66.66666667%}html[data-netbox-color-mode=dark] .offset-sm-9{margin-left:75%}html[data-netbox-color-mode=dark] .offset-sm-10{margin-left:83.33333333%}html[data-netbox-color-mode=dark] .offset-sm-11{margin-left:91.66666667%}html[data-netbox-color-mode=dark] .g-sm-0,html[data-netbox-color-mode=dark] .gx-sm-0{--bs-gutter-x: 0}html[data-netbox-color-mode=dark] .g-sm-0,html[data-netbox-color-mode=dark] .gy-sm-0{--bs-gutter-y: 0}html[data-netbox-color-mode=dark] .g-sm-1,html[data-netbox-color-mode=dark] .gx-sm-1{--bs-gutter-x: .25rem}html[data-netbox-color-mode=dark] .g-sm-1,html[data-netbox-color-mode=dark] .gy-sm-1{--bs-gutter-y: .25rem}html[data-netbox-color-mode=dark] .g-sm-2,html[data-netbox-color-mode=dark] .gx-sm-2{--bs-gutter-x: .5rem}html[data-netbox-color-mode=dark] .g-sm-2,html[data-netbox-color-mode=dark] .gy-sm-2{--bs-gutter-y: .5rem}html[data-netbox-color-mode=dark] .g-sm-3,html[data-netbox-color-mode=dark] .gx-sm-3{--bs-gutter-x: 1rem}html[data-netbox-color-mode=dark] .g-sm-3,html[data-netbox-color-mode=dark] .gy-sm-3{--bs-gutter-y: 1rem}html[data-netbox-color-mode=dark] .g-sm-4,html[data-netbox-color-mode=dark] .gx-sm-4{--bs-gutter-x: 1.5rem}html[data-netbox-color-mode=dark] .g-sm-4,html[data-netbox-color-mode=dark] .gy-sm-4{--bs-gutter-y: 1.5rem}html[data-netbox-color-mode=dark] .g-sm-5,html[data-netbox-color-mode=dark] .gx-sm-5{--bs-gutter-x: 3rem}html[data-netbox-color-mode=dark] .g-sm-5,html[data-netbox-color-mode=dark] .gy-sm-5{--bs-gutter-y: 3rem}}@media (min-width: 768px){html[data-netbox-color-mode=dark] .col-md-auto{flex:0 0 auto;width:auto}html[data-netbox-color-mode=dark] .col-md-1{flex:0 0 auto;width:8.33333333%}html[data-netbox-color-mode=dark] .col-md-2{flex:0 0 auto;width:16.66666667%}html[data-netbox-color-mode=dark] .col-md-3{flex:0 0 auto;width:25%}html[data-netbox-color-mode=dark] .col-md-4{flex:0 0 auto;width:33.33333333%}html[data-netbox-color-mode=dark] .col-md-5{flex:0 0 auto;width:41.66666667%}html[data-netbox-color-mode=dark] .col-md-6{flex:0 0 auto;width:50%}html[data-netbox-color-mode=dark] .col-md-7{flex:0 0 auto;width:58.33333333%}html[data-netbox-color-mode=dark] .col-md-8{flex:0 0 auto;width:66.66666667%}html[data-netbox-color-mode=dark] .col-md-9{flex:0 0 auto;width:75%}html[data-netbox-color-mode=dark] .col-md-10{flex:0 0 auto;width:83.33333333%}html[data-netbox-color-mode=dark] .col-md-11{flex:0 0 auto;width:91.66666667%}html[data-netbox-color-mode=dark] .col-md-12{flex:0 0 auto;width:100%}html[data-netbox-color-mode=dark] .offset-md-0{margin-left:0}html[data-netbox-color-mode=dark] .offset-md-1{margin-left:8.33333333%}html[data-netbox-color-mode=dark] .offset-md-2{margin-left:16.66666667%}html[data-netbox-color-mode=dark] .offset-md-3{margin-left:25%}html[data-netbox-color-mode=dark] .offset-md-4{margin-left:33.33333333%}html[data-netbox-color-mode=dark] .offset-md-5{margin-left:41.66666667%}html[data-netbox-color-mode=dark] .offset-md-6{margin-left:50%}html[data-netbox-color-mode=dark] .offset-md-7{margin-left:58.33333333%}html[data-netbox-color-mode=dark] .offset-md-8{margin-left:66.66666667%}html[data-netbox-color-mode=dark] .offset-md-9{margin-left:75%}html[data-netbox-color-mode=dark] .offset-md-10{margin-left:83.33333333%}html[data-netbox-color-mode=dark] .offset-md-11{margin-left:91.66666667%}html[data-netbox-color-mode=dark] .g-md-0,html[data-netbox-color-mode=dark] .gx-md-0{--bs-gutter-x: 0}html[data-netbox-color-mode=dark] .g-md-0,html[data-netbox-color-mode=dark] .gy-md-0{--bs-gutter-y: 0}html[data-netbox-color-mode=dark] .g-md-1,html[data-netbox-color-mode=dark] .gx-md-1{--bs-gutter-x: .25rem}html[data-netbox-color-mode=dark] .g-md-1,html[data-netbox-color-mode=dark] .gy-md-1{--bs-gutter-y: .25rem}html[data-netbox-color-mode=dark] .g-md-2,html[data-netbox-color-mode=dark] .gx-md-2{--bs-gutter-x: .5rem}html[data-netbox-color-mode=dark] .g-md-2,html[data-netbox-color-mode=dark] .gy-md-2{--bs-gutter-y: .5rem}html[data-netbox-color-mode=dark] .g-md-3,html[data-netbox-color-mode=dark] .gx-md-3{--bs-gutter-x: 1rem}html[data-netbox-color-mode=dark] .g-md-3,html[data-netbox-color-mode=dark] .gy-md-3{--bs-gutter-y: 1rem}html[data-netbox-color-mode=dark] .g-md-4,html[data-netbox-color-mode=dark] .gx-md-4{--bs-gutter-x: 1.5rem}html[data-netbox-color-mode=dark] .g-md-4,html[data-netbox-color-mode=dark] .gy-md-4{--bs-gutter-y: 1.5rem}html[data-netbox-color-mode=dark] .g-md-5,html[data-netbox-color-mode=dark] .gx-md-5{--bs-gutter-x: 3rem}html[data-netbox-color-mode=dark] .g-md-5,html[data-netbox-color-mode=dark] .gy-md-5{--bs-gutter-y: 3rem}}@media (min-width: 992px){html[data-netbox-color-mode=dark] .col-lg-auto{flex:0 0 auto;width:auto}html[data-netbox-color-mode=dark] .col-lg-1{flex:0 0 auto;width:8.33333333%}html[data-netbox-color-mode=dark] .col-lg-2{flex:0 0 auto;width:16.66666667%}html[data-netbox-color-mode=dark] .col-lg-3{flex:0 0 auto;width:25%}html[data-netbox-color-mode=dark] .col-lg-4{flex:0 0 auto;width:33.33333333%}html[data-netbox-color-mode=dark] .col-lg-5{flex:0 0 auto;width:41.66666667%}html[data-netbox-color-mode=dark] .col-lg-6{flex:0 0 auto;width:50%}html[data-netbox-color-mode=dark] .col-lg-7{flex:0 0 auto;width:58.33333333%}html[data-netbox-color-mode=dark] .col-lg-8{flex:0 0 auto;width:66.66666667%}html[data-netbox-color-mode=dark] .col-lg-9{flex:0 0 auto;width:75%}html[data-netbox-color-mode=dark] .col-lg-10{flex:0 0 auto;width:83.33333333%}html[data-netbox-color-mode=dark] .col-lg-11{flex:0 0 auto;width:91.66666667%}html[data-netbox-color-mode=dark] .col-lg-12{flex:0 0 auto;width:100%}html[data-netbox-color-mode=dark] .offset-lg-0{margin-left:0}html[data-netbox-color-mode=dark] .offset-lg-1{margin-left:8.33333333%}html[data-netbox-color-mode=dark] .offset-lg-2{margin-left:16.66666667%}html[data-netbox-color-mode=dark] .offset-lg-3{margin-left:25%}html[data-netbox-color-mode=dark] .offset-lg-4{margin-left:33.33333333%}html[data-netbox-color-mode=dark] .offset-lg-5{margin-left:41.66666667%}html[data-netbox-color-mode=dark] .offset-lg-6{margin-left:50%}html[data-netbox-color-mode=dark] .offset-lg-7{margin-left:58.33333333%}html[data-netbox-color-mode=dark] .offset-lg-8{margin-left:66.66666667%}html[data-netbox-color-mode=dark] .offset-lg-9{margin-left:75%}html[data-netbox-color-mode=dark] .offset-lg-10{margin-left:83.33333333%}html[data-netbox-color-mode=dark] .offset-lg-11{margin-left:91.66666667%}html[data-netbox-color-mode=dark] .g-lg-0,html[data-netbox-color-mode=dark] .gx-lg-0{--bs-gutter-x: 0}html[data-netbox-color-mode=dark] .g-lg-0,html[data-netbox-color-mode=dark] .gy-lg-0{--bs-gutter-y: 0}html[data-netbox-color-mode=dark] .g-lg-1,html[data-netbox-color-mode=dark] .gx-lg-1{--bs-gutter-x: .25rem}html[data-netbox-color-mode=dark] .g-lg-1,html[data-netbox-color-mode=dark] .gy-lg-1{--bs-gutter-y: .25rem}html[data-netbox-color-mode=dark] .g-lg-2,html[data-netbox-color-mode=dark] .gx-lg-2{--bs-gutter-x: .5rem}html[data-netbox-color-mode=dark] .g-lg-2,html[data-netbox-color-mode=dark] .gy-lg-2{--bs-gutter-y: .5rem}html[data-netbox-color-mode=dark] .g-lg-3,html[data-netbox-color-mode=dark] .gx-lg-3{--bs-gutter-x: 1rem}html[data-netbox-color-mode=dark] .g-lg-3,html[data-netbox-color-mode=dark] .gy-lg-3{--bs-gutter-y: 1rem}html[data-netbox-color-mode=dark] .g-lg-4,html[data-netbox-color-mode=dark] .gx-lg-4{--bs-gutter-x: 1.5rem}html[data-netbox-color-mode=dark] .g-lg-4,html[data-netbox-color-mode=dark] .gy-lg-4{--bs-gutter-y: 1.5rem}html[data-netbox-color-mode=dark] .g-lg-5,html[data-netbox-color-mode=dark] .gx-lg-5{--bs-gutter-x: 3rem}html[data-netbox-color-mode=dark] .g-lg-5,html[data-netbox-color-mode=dark] .gy-lg-5{--bs-gutter-y: 3rem}}@media (min-width: 1200px){html[data-netbox-color-mode=dark] .col-xl-auto{flex:0 0 auto;width:auto}html[data-netbox-color-mode=dark] .col-xl-1{flex:0 0 auto;width:8.33333333%}html[data-netbox-color-mode=dark] .col-xl-2{flex:0 0 auto;width:16.66666667%}html[data-netbox-color-mode=dark] .col-xl-3{flex:0 0 auto;width:25%}html[data-netbox-color-mode=dark] .col-xl-4{flex:0 0 auto;width:33.33333333%}html[data-netbox-color-mode=dark] .col-xl-5{flex:0 0 auto;width:41.66666667%}html[data-netbox-color-mode=dark] .col-xl-6{flex:0 0 auto;width:50%}html[data-netbox-color-mode=dark] .col-xl-7{flex:0 0 auto;width:58.33333333%}html[data-netbox-color-mode=dark] .col-xl-8{flex:0 0 auto;width:66.66666667%}html[data-netbox-color-mode=dark] .col-xl-9{flex:0 0 auto;width:75%}html[data-netbox-color-mode=dark] .col-xl-10{flex:0 0 auto;width:83.33333333%}html[data-netbox-color-mode=dark] .col-xl-11{flex:0 0 auto;width:91.66666667%}html[data-netbox-color-mode=dark] .col-xl-12{flex:0 0 auto;width:100%}html[data-netbox-color-mode=dark] .offset-xl-0{margin-left:0}html[data-netbox-color-mode=dark] .offset-xl-1{margin-left:8.33333333%}html[data-netbox-color-mode=dark] .offset-xl-2{margin-left:16.66666667%}html[data-netbox-color-mode=dark] .offset-xl-3{margin-left:25%}html[data-netbox-color-mode=dark] .offset-xl-4{margin-left:33.33333333%}html[data-netbox-color-mode=dark] .offset-xl-5{margin-left:41.66666667%}html[data-netbox-color-mode=dark] .offset-xl-6{margin-left:50%}html[data-netbox-color-mode=dark] .offset-xl-7{margin-left:58.33333333%}html[data-netbox-color-mode=dark] .offset-xl-8{margin-left:66.66666667%}html[data-netbox-color-mode=dark] .offset-xl-9{margin-left:75%}html[data-netbox-color-mode=dark] .offset-xl-10{margin-left:83.33333333%}html[data-netbox-color-mode=dark] .offset-xl-11{margin-left:91.66666667%}html[data-netbox-color-mode=dark] .g-xl-0,html[data-netbox-color-mode=dark] .gx-xl-0{--bs-gutter-x: 0}html[data-netbox-color-mode=dark] .g-xl-0,html[data-netbox-color-mode=dark] .gy-xl-0{--bs-gutter-y: 0}html[data-netbox-color-mode=dark] .g-xl-1,html[data-netbox-color-mode=dark] .gx-xl-1{--bs-gutter-x: .25rem}html[data-netbox-color-mode=dark] .g-xl-1,html[data-netbox-color-mode=dark] .gy-xl-1{--bs-gutter-y: .25rem}html[data-netbox-color-mode=dark] .g-xl-2,html[data-netbox-color-mode=dark] .gx-xl-2{--bs-gutter-x: .5rem}html[data-netbox-color-mode=dark] .g-xl-2,html[data-netbox-color-mode=dark] .gy-xl-2{--bs-gutter-y: .5rem}html[data-netbox-color-mode=dark] .g-xl-3,html[data-netbox-color-mode=dark] .gx-xl-3{--bs-gutter-x: 1rem}html[data-netbox-color-mode=dark] .g-xl-3,html[data-netbox-color-mode=dark] .gy-xl-3{--bs-gutter-y: 1rem}html[data-netbox-color-mode=dark] .g-xl-4,html[data-netbox-color-mode=dark] .gx-xl-4{--bs-gutter-x: 1.5rem}html[data-netbox-color-mode=dark] .g-xl-4,html[data-netbox-color-mode=dark] .gy-xl-4{--bs-gutter-y: 1.5rem}html[data-netbox-color-mode=dark] .g-xl-5,html[data-netbox-color-mode=dark] .gx-xl-5{--bs-gutter-x: 3rem}html[data-netbox-color-mode=dark] .g-xl-5,html[data-netbox-color-mode=dark] .gy-xl-5{--bs-gutter-y: 3rem}}@media (min-width: 1400px){html[data-netbox-color-mode=dark] .col-xxl-auto{flex:0 0 auto;width:auto}html[data-netbox-color-mode=dark] .col-xxl-1{flex:0 0 auto;width:8.33333333%}html[data-netbox-color-mode=dark] .col-xxl-2{flex:0 0 auto;width:16.66666667%}html[data-netbox-color-mode=dark] .col-xxl-3{flex:0 0 auto;width:25%}html[data-netbox-color-mode=dark] .col-xxl-4{flex:0 0 auto;width:33.33333333%}html[data-netbox-color-mode=dark] .col-xxl-5{flex:0 0 auto;width:41.66666667%}html[data-netbox-color-mode=dark] .col-xxl-6{flex:0 0 auto;width:50%}html[data-netbox-color-mode=dark] .col-xxl-7{flex:0 0 auto;width:58.33333333%}html[data-netbox-color-mode=dark] .col-xxl-8{flex:0 0 auto;width:66.66666667%}html[data-netbox-color-mode=dark] .col-xxl-9{flex:0 0 auto;width:75%}html[data-netbox-color-mode=dark] .col-xxl-10{flex:0 0 auto;width:83.33333333%}html[data-netbox-color-mode=dark] .col-xxl-11{flex:0 0 auto;width:91.66666667%}html[data-netbox-color-mode=dark] .col-xxl-12{flex:0 0 auto;width:100%}html[data-netbox-color-mode=dark] .offset-xxl-0{margin-left:0}html[data-netbox-color-mode=dark] .offset-xxl-1{margin-left:8.33333333%}html[data-netbox-color-mode=dark] .offset-xxl-2{margin-left:16.66666667%}html[data-netbox-color-mode=dark] .offset-xxl-3{margin-left:25%}html[data-netbox-color-mode=dark] .offset-xxl-4{margin-left:33.33333333%}html[data-netbox-color-mode=dark] .offset-xxl-5{margin-left:41.66666667%}html[data-netbox-color-mode=dark] .offset-xxl-6{margin-left:50%}html[data-netbox-color-mode=dark] .offset-xxl-7{margin-left:58.33333333%}html[data-netbox-color-mode=dark] .offset-xxl-8{margin-left:66.66666667%}html[data-netbox-color-mode=dark] .offset-xxl-9{margin-left:75%}html[data-netbox-color-mode=dark] .offset-xxl-10{margin-left:83.33333333%}html[data-netbox-color-mode=dark] .offset-xxl-11{margin-left:91.66666667%}html[data-netbox-color-mode=dark] .g-xxl-0,html[data-netbox-color-mode=dark] .gx-xxl-0{--bs-gutter-x: 0}html[data-netbox-color-mode=dark] .g-xxl-0,html[data-netbox-color-mode=dark] .gy-xxl-0{--bs-gutter-y: 0}html[data-netbox-color-mode=dark] .g-xxl-1,html[data-netbox-color-mode=dark] .gx-xxl-1{--bs-gutter-x: .25rem}html[data-netbox-color-mode=dark] .g-xxl-1,html[data-netbox-color-mode=dark] .gy-xxl-1{--bs-gutter-y: .25rem}html[data-netbox-color-mode=dark] .g-xxl-2,html[data-netbox-color-mode=dark] .gx-xxl-2{--bs-gutter-x: .5rem}html[data-netbox-color-mode=dark] .g-xxl-2,html[data-netbox-color-mode=dark] .gy-xxl-2{--bs-gutter-y: .5rem}html[data-netbox-color-mode=dark] .g-xxl-3,html[data-netbox-color-mode=dark] .gx-xxl-3{--bs-gutter-x: 1rem}html[data-netbox-color-mode=dark] .g-xxl-3,html[data-netbox-color-mode=dark] .gy-xxl-3{--bs-gutter-y: 1rem}html[data-netbox-color-mode=dark] .g-xxl-4,html[data-netbox-color-mode=dark] .gx-xxl-4{--bs-gutter-x: 1.5rem}html[data-netbox-color-mode=dark] .g-xxl-4,html[data-netbox-color-mode=dark] .gy-xxl-4{--bs-gutter-y: 1.5rem}html[data-netbox-color-mode=dark] .g-xxl-5,html[data-netbox-color-mode=dark] .gx-xxl-5{--bs-gutter-x: 3rem}html[data-netbox-color-mode=dark] .g-xxl-5,html[data-netbox-color-mode=dark] .gy-xxl-5{--bs-gutter-y: 3rem}}html[data-netbox-color-mode=dark] .table{--bs-table-bg: transparent;--bs-table-accent-bg: transparent;--bs-table-striped-color: #f8f9fa;--bs-table-striped-bg: rgba(255, 255, 255, .05);--bs-table-active-color: #f8f9fa;--bs-table-active-bg: rgba(255, 255, 255, .1);--bs-table-hover-color: #f8f9fa;--bs-table-hover-bg: rgba(255, 255, 255, .075);width:100%;margin-bottom:1rem;color:#f8f9fa;vertical-align:top;border-color:#495057}html[data-netbox-color-mode=dark] .table>:not(caption)>*>*{padding:.5rem;background-color:var(--bs-table-bg);border-bottom-width:1px;box-shadow:inset 0 0 0 9999px var(--bs-table-accent-bg)}html[data-netbox-color-mode=dark] .table>tbody{vertical-align:inherit}html[data-netbox-color-mode=dark] .table>thead{vertical-align:bottom}html[data-netbox-color-mode=dark] .table>:not(:last-child)>:last-child>*{border-bottom-color:currentColor}html[data-netbox-color-mode=dark] .caption-top{caption-side:top}html[data-netbox-color-mode=dark] .table-sm>:not(caption)>*>*{padding:.25rem}html[data-netbox-color-mode=dark] .table-bordered>:not(caption)>*{border-width:1px 0}html[data-netbox-color-mode=dark] .table-bordered>:not(caption)>*>*{border-width:0 1px}html[data-netbox-color-mode=dark] .table-borderless>:not(caption)>*>*{border-bottom-width:0}html[data-netbox-color-mode=dark] .table-striped>tbody>tr:nth-of-type(odd){--bs-table-accent-bg: var(--bs-table-striped-bg);color:var(--bs-table-striped-color)}html[data-netbox-color-mode=dark] .table-active{--bs-table-accent-bg: var(--bs-table-active-bg);color:var(--bs-table-active-color)}html[data-netbox-color-mode=dark] .table-hover>tbody>tr:hover{--bs-table-accent-bg: var(--bs-table-hover-bg);color:var(--bs-table-hover-color)}html[data-netbox-color-mode=dark] .table-primary{--bs-table-bg: #cfe2ff;--bs-table-striped-bg: #c5d7f2;--bs-table-striped-color: #000;--bs-table-active-bg: #bacbe6;--bs-table-active-color: #000;--bs-table-hover-bg: #bfd1ec;--bs-table-hover-color: #000;color:#000;border-color:#bacbe6}html[data-netbox-color-mode=dark] .table-secondary{--bs-table-bg: #e2e3e5;--bs-table-striped-bg: #d7d8da;--bs-table-striped-color: #000;--bs-table-active-bg: #cbccce;--bs-table-active-color: #000;--bs-table-hover-bg: #d1d2d4;--bs-table-hover-color: #000;color:#000;border-color:#cbccce}html[data-netbox-color-mode=dark] .table-success{--bs-table-bg: #d1e7dd;--bs-table-striped-bg: #c7dbd2;--bs-table-striped-color: #000;--bs-table-active-bg: #bcd0c7;--bs-table-active-color: #000;--bs-table-hover-bg: #c1d6cc;--bs-table-hover-color: #000;color:#000;border-color:#bcd0c7}html[data-netbox-color-mode=dark] .table-info{--bs-table-bg: #cff4fc;--bs-table-striped-bg: #c5e8ef;--bs-table-striped-color: #000;--bs-table-active-bg: #badce3;--bs-table-active-color: #000;--bs-table-hover-bg: #bfe2e9;--bs-table-hover-color: #000;color:#000;border-color:#badce3}html[data-netbox-color-mode=dark] .table-warning{--bs-table-bg: #fff3cd;--bs-table-striped-bg: #f2e7c3;--bs-table-striped-color: #000;--bs-table-active-bg: #e6dbb9;--bs-table-active-color: #000;--bs-table-hover-bg: #ece1be;--bs-table-hover-color: #000;color:#000;border-color:#e6dbb9}html[data-netbox-color-mode=dark] .table-danger{--bs-table-bg: #f8d7da;--bs-table-striped-bg: #eccccf;--bs-table-striped-color: #000;--bs-table-active-bg: #dfc2c4;--bs-table-active-color: #000;--bs-table-hover-bg: #e5c7ca;--bs-table-hover-color: #000;color:#000;border-color:#dfc2c4}html[data-netbox-color-mode=dark] .table-light{--bs-table-bg: #f8f9fa;--bs-table-striped-bg: #ecedee;--bs-table-striped-color: #000;--bs-table-active-bg: #dfe0e1;--bs-table-active-color: #000;--bs-table-hover-bg: #e5e6e7;--bs-table-hover-color: #000;color:#000;border-color:#dfe0e1}html[data-netbox-color-mode=dark] .table-dark{--bs-table-bg: #212529;--bs-table-striped-bg: #2c3034;--bs-table-striped-color: #fff;--bs-table-active-bg: #373b3e;--bs-table-active-color: #fff;--bs-table-hover-bg: #323539;--bs-table-hover-color: #fff;color:#fff;border-color:#373b3e}html[data-netbox-color-mode=dark] .table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}@media (max-width: 575.98px){html[data-netbox-color-mode=dark] .table-responsive-sm{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width: 767.98px){html[data-netbox-color-mode=dark] .table-responsive-md{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width: 991.98px){html[data-netbox-color-mode=dark] .table-responsive-lg{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width: 1199.98px){html[data-netbox-color-mode=dark] .table-responsive-xl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width: 1399.98px){html[data-netbox-color-mode=dark] .table-responsive-xxl{overflow-x:auto;-webkit-overflow-scrolling:touch}}html[data-netbox-color-mode=dark] .form-label{margin-bottom:.5rem}html[data-netbox-color-mode=dark] .col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}html[data-netbox-color-mode=dark] .col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem}html[data-netbox-color-mode=dark] .col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem}html[data-netbox-color-mode=dark] .form-text{margin-top:.25rem;font-size:.875em;color:#ced4da}html[data-netbox-color-mode=dark] .form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#f8f9fa;background-color:#212529;background-clip:padding-box;border:1px solid #495057;appearance:none;border-radius:.375rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion: reduce){html[data-netbox-color-mode=dark] .form-control{transition:none}}html[data-netbox-color-mode=dark] .form-control[type=file]{overflow:hidden}html[data-netbox-color-mode=dark] .form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}html[data-netbox-color-mode=dark] .form-control:focus{color:#f8f9fa;background-color:#212529;border-color:#7db1fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}html[data-netbox-color-mode=dark] .form-control::-webkit-date-and-time-value{height:1.5em}html[data-netbox-color-mode=dark] .form-control::placeholder{color:#495057;opacity:1}html[data-netbox-color-mode=dark] .form-control:disabled,html[data-netbox-color-mode=dark] .form-control[readonly]{background-color:#495057;opacity:1}html[data-netbox-color-mode=dark] .form-control::file-selector-button{padding:.375rem .75rem;margin:-.375rem -.75rem;margin-inline-end:.75rem;color:#f8f9fa;background-color:#495057;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion: reduce){html[data-netbox-color-mode=dark] .form-control::file-selector-button{transition:none}}html[data-netbox-color-mode=dark] .form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:#454c53}html[data-netbox-color-mode=dark] .form-control::-webkit-file-upload-button{padding:.375rem .75rem;margin:-.375rem -.75rem;margin-inline-end:.75rem;color:#f8f9fa;background-color:#495057;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion: reduce){html[data-netbox-color-mode=dark] .form-control::-webkit-file-upload-button{transition:none}}html[data-netbox-color-mode=dark] .form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button{background-color:#454c53}html[data-netbox-color-mode=dark] .form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;line-height:1.5;color:#fff;background-color:transparent;border:solid transparent;border-width:1px 0}html[data-netbox-color-mode=dark] .form-control-plaintext.form-control-sm,html[data-netbox-color-mode=dark] .form-control-plaintext.form-control-lg{padding-right:0;padding-left:0}html[data-netbox-color-mode=dark] .form-control-sm{min-height:calc(1.5em + (.5rem + 2px));padding:.25rem .5rem;font-size:.875rem;border-radius:.375rem}html[data-netbox-color-mode=dark] .form-control-sm::file-selector-button{padding:.25rem .5rem;margin:-.25rem -.5rem;margin-inline-end:.5rem}html[data-netbox-color-mode=dark] .form-control-sm::-webkit-file-upload-button{padding:.25rem .5rem;margin:-.25rem -.5rem;margin-inline-end:.5rem}html[data-netbox-color-mode=dark] .form-control-lg{min-height:calc(1.5em + (1rem + 2px));padding:.5rem 1rem;font-size:1.25rem;border-radius:.75rem}html[data-netbox-color-mode=dark] .form-control-lg::file-selector-button{padding:.5rem 1rem;margin:-.5rem -1rem;margin-inline-end:1rem}html[data-netbox-color-mode=dark] .form-control-lg::-webkit-file-upload-button{padding:.5rem 1rem;margin:-.5rem -1rem;margin-inline-end:1rem}html[data-netbox-color-mode=dark] textarea.form-control{min-height:calc(1.5em + (.75rem + 2px))}html[data-netbox-color-mode=dark] textarea.form-control-sm{min-height:calc(1.5em + (.5rem + 2px))}html[data-netbox-color-mode=dark] textarea.form-control-lg{min-height:calc(1.5em + (1rem + 2px))}html[data-netbox-color-mode=dark] .form-control-color{max-width:3rem;height:auto;padding:.375rem}html[data-netbox-color-mode=dark] .form-control-color:not(:disabled):not([readonly]){cursor:pointer}html[data-netbox-color-mode=dark] .form-control-color::-moz-color-swatch{height:1.5em;border-radius:.375rem}html[data-netbox-color-mode=dark] .form-control-color::-webkit-color-swatch{height:1.5em;border-radius:.375rem}html[data-netbox-color-mode=dark] .form-select{display:block;width:100%;padding:.375rem 2.25rem .375rem .75rem;-moz-padding-start:calc(.75rem - 3px);font-size:1rem;font-weight:400;line-height:1.5;color:#f8f9fa;background-color:#212529;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23f8f9fa' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right .75rem center;background-size:16px 12px;border:1px solid #495057;border-radius:.375rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion: reduce){html[data-netbox-color-mode=dark] .form-select{transition:none}}html[data-netbox-color-mode=dark] .form-select:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}html[data-netbox-color-mode=dark] .form-select[multiple],html[data-netbox-color-mode=dark] .form-select[size]:not([size="1"]){padding-right:.75rem;background-image:none}html[data-netbox-color-mode=dark] .form-select:disabled{color:#adb5bd;background-color:#495057}html[data-netbox-color-mode=dark] .form-select:-moz-focusring{color:transparent;text-shadow:0 0 0 #f8f9fa}html[data-netbox-color-mode=dark] .form-select-sm{padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem}html[data-netbox-color-mode=dark] .form-select-lg{padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}html[data-netbox-color-mode=dark] .form-check{display:block;min-height:1.5rem;padding-left:1.5em;margin-bottom:.125rem}html[data-netbox-color-mode=dark] .form-check .form-check-input{float:left;margin-left:-1.5em}html[data-netbox-color-mode=dark] .form-check-input{width:1em;height:1em;margin-top:.25em;vertical-align:top;background-color:#212529;background-repeat:no-repeat;background-position:center;background-size:contain;border:1px solid rgba(255,255,255,.25);appearance:none;color-adjust:exact}html[data-netbox-color-mode=dark] .form-check-input[type=checkbox]{border-radius:.25em}html[data-netbox-color-mode=dark] .form-check-input[type=radio]{border-radius:50%}html[data-netbox-color-mode=dark] .form-check-input:active{filter:brightness(90%)}html[data-netbox-color-mode=dark] .form-check-input:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}html[data-netbox-color-mode=dark] .form-check-input:checked{background-color:#6ea8fe;border-color:#6ea8fe}html[data-netbox-color-mode=dark] .form-check-input:checked[type=checkbox]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10l3 3l6-6'/%3e%3c/svg%3e")}html[data-netbox-color-mode=dark] .form-check-input:checked[type=radio]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e")}html[data-netbox-color-mode=dark] .form-check-input[type=checkbox]:indeterminate{background-color:#6ea8fe;border-color:#6ea8fe;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e")}html[data-netbox-color-mode=dark] .form-check-input:disabled{pointer-events:none;filter:none;opacity:.5}html[data-netbox-color-mode=dark] .form-check-input[disabled]~.form-check-label,html[data-netbox-color-mode=dark] .form-check-input:disabled~.form-check-label{opacity:.5}html[data-netbox-color-mode=dark] .form-switch{padding-left:2.5em}html[data-netbox-color-mode=dark] .form-switch .form-check-input{width:2em;margin-left:-2.5em;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e");background-position:left center;border-radius:2em;transition:background-position .15s ease-in-out}@media (prefers-reduced-motion: reduce){html[data-netbox-color-mode=dark] .form-switch .form-check-input{transition:none}}html[data-netbox-color-mode=dark] .form-switch .form-check-input:focus{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2386b7fe'/%3e%3c/svg%3e")}html[data-netbox-color-mode=dark] .form-switch .form-check-input:checked{background-position:right center;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}html[data-netbox-color-mode=dark] .form-check-inline{display:inline-block;margin-right:1rem}html[data-netbox-color-mode=dark] .btn-check{position:absolute;clip:rect(0,0,0,0);pointer-events:none}html[data-netbox-color-mode=dark] .btn-check[disabled]+.btn,html[data-netbox-color-mode=dark] .btn-check:disabled+.btn{pointer-events:none;filter:none;opacity:.65}html[data-netbox-color-mode=dark] .form-range{width:100%;height:1.5rem;padding:0;background-color:transparent;appearance:none}html[data-netbox-color-mode=dark] .form-range:focus{outline:0}html[data-netbox-color-mode=dark] .form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #1b1f22,0 0 0 .25rem #0d6efd40}html[data-netbox-color-mode=dark] .form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #1b1f22,0 0 0 .25rem #0d6efd40}html[data-netbox-color-mode=dark] .form-range::-moz-focus-outer{border:0}html[data-netbox-color-mode=dark] .form-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#6ea8fe;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion: reduce){html[data-netbox-color-mode=dark] .form-range::-webkit-slider-thumb{transition:none}}html[data-netbox-color-mode=dark] .form-range::-webkit-slider-thumb:active{background-color:#d4e5ff}html[data-netbox-color-mode=dark] .form-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}html[data-netbox-color-mode=dark] .form-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#6ea8fe;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion: reduce){html[data-netbox-color-mode=dark] .form-range::-moz-range-thumb{transition:none}}html[data-netbox-color-mode=dark] .form-range::-moz-range-thumb:active{background-color:#d4e5ff}html[data-netbox-color-mode=dark] .form-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}html[data-netbox-color-mode=dark] .form-range:disabled{pointer-events:none}html[data-netbox-color-mode=dark] .form-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}html[data-netbox-color-mode=dark] .form-range:disabled::-moz-range-thumb{background-color:#adb5bd}html[data-netbox-color-mode=dark] .form-floating>.form-control,html[data-netbox-color-mode=dark] .form-floating>.form-select{height:calc(3.5rem + 2px);line-height:1.25}html[data-netbox-color-mode=dark] .form-floating>label{position:absolute;top:0;left:0;height:100%;padding:1rem .75rem;pointer-events:none;border:1px solid transparent;transform-origin:0 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out}@media (prefers-reduced-motion: reduce){html[data-netbox-color-mode=dark] .form-floating>label{transition:none}}html[data-netbox-color-mode=dark] .form-floating>.form-control{padding:1rem .75rem}html[data-netbox-color-mode=dark] .form-floating>.form-control::placeholder{color:transparent}html[data-netbox-color-mode=dark] .form-floating>.form-control:focus,html[data-netbox-color-mode=dark] .form-floating>.form-control:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}html[data-netbox-color-mode=dark] .form-floating>.form-control:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}html[data-netbox-color-mode=dark] .form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem}html[data-netbox-color-mode=dark] .form-floating>.form-control:focus~label,html[data-netbox-color-mode=dark] .form-floating>.form-control:not(:placeholder-shown)~label,html[data-netbox-color-mode=dark] .form-floating>.form-select~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translate(.15rem)}html[data-netbox-color-mode=dark] .form-floating>.form-control:-webkit-autofill~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translate(.15rem)}html[data-netbox-color-mode=dark] .input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}html[data-netbox-color-mode=dark] .input-group>.form-control,html[data-netbox-color-mode=dark] .input-group>.form-select{position:relative;flex:1 1 auto;width:1%;min-width:0}html[data-netbox-color-mode=dark] .input-group>.form-control:focus,html[data-netbox-color-mode=dark] .input-group>.form-select:focus{z-index:3}html[data-netbox-color-mode=dark] .input-group .btn{position:relative;z-index:2}html[data-netbox-color-mode=dark] .input-group .btn:focus{z-index:3}html[data-netbox-color-mode=dark] .input-group-text{display:flex;align-items:center;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#f8f9fa;text-align:center;white-space:nowrap;background-color:#495057;border:1px solid #495057;border-radius:.375rem}html[data-netbox-color-mode=dark] .input-group-lg>.form-control,html[data-netbox-color-mode=dark] .input-group-lg>.form-select,html[data-netbox-color-mode=dark] .input-group-lg>.input-group-text,html[data-netbox-color-mode=dark] .input-group-lg>.btn{padding:.5rem 1rem;font-size:1.25rem;border-radius:.75rem}html[data-netbox-color-mode=dark] .input-group-sm>.form-control,html[data-netbox-color-mode=dark] .input-group-sm>.form-select,html[data-netbox-color-mode=dark] .input-group-sm>.input-group-text,html[data-netbox-color-mode=dark] .input-group-sm>.btn{padding:.25rem .5rem;font-size:.875rem;border-radius:.375rem}html[data-netbox-color-mode=dark] .input-group-lg>.form-select,html[data-netbox-color-mode=dark] .input-group-sm>.form-select{padding-right:3rem}html[data-netbox-color-mode=dark] .input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu),html[data-netbox-color-mode=dark] .input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3){border-top-right-radius:0;border-bottom-right-radius:0}html[data-netbox-color-mode=dark] .input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu),html[data-netbox-color-mode=dark] .input-group.has-validation>.dropdown-toggle:nth-last-child(n+4){border-top-right-radius:0;border-bottom-right-radius:0}html[data-netbox-color-mode=dark] .input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-left:-1px;border-top-left-radius:0;border-bottom-left-radius:0}html[data-netbox-color-mode=dark] .valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#198754}html[data-netbox-color-mode=dark] .valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:#198754e6;border-radius:.375rem}.was-validated html[data-netbox-color-mode=dark]:valid~.valid-feedback,.was-validated html[data-netbox-color-mode=dark]:valid~.valid-tooltip,html[data-netbox-color-mode=dark].is-valid~.valid-feedback,html[data-netbox-color-mode=dark].is-valid~.valid-tooltip{display:block}.was-validated html[data-netbox-color-mode=dark] .form-control:valid,html[data-netbox-color-mode=dark] .form-control.is-valid{border-color:#198754;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.was-validated html[data-netbox-color-mode=dark] .form-control:valid:focus,html[data-netbox-color-mode=dark] .form-control.is-valid:focus{border-color:#198754;box-shadow:0 0 0 .25rem #19875440}.was-validated html[data-netbox-color-mode=dark] textarea.form-control:valid,html[data-netbox-color-mode=dark] textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.was-validated html[data-netbox-color-mode=dark] .form-select:valid,html[data-netbox-color-mode=dark] .form-select.is-valid{border-color:#198754}.was-validated html[data-netbox-color-mode=dark] .form-select:valid:not([multiple]):not([size]),.was-validated html[data-netbox-color-mode=dark] .form-select:valid:not([multiple])[size="1"],html[data-netbox-color-mode=dark] .form-select.is-valid:not([multiple]):not([size]),html[data-netbox-color-mode=dark] .form-select.is-valid:not([multiple])[size="1"]{padding-right:4.125rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23f8f9fa' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.was-validated html[data-netbox-color-mode=dark] .form-select:valid:focus,html[data-netbox-color-mode=dark] .form-select.is-valid:focus{border-color:#198754;box-shadow:0 0 0 .25rem #19875440}.was-validated html[data-netbox-color-mode=dark] .form-check-input:valid,html[data-netbox-color-mode=dark] .form-check-input.is-valid{border-color:#198754}.was-validated html[data-netbox-color-mode=dark] .form-check-input:valid:checked,html[data-netbox-color-mode=dark] .form-check-input.is-valid:checked{background-color:#198754}.was-validated html[data-netbox-color-mode=dark] .form-check-input:valid:focus,html[data-netbox-color-mode=dark] .form-check-input.is-valid:focus{box-shadow:0 0 0 .25rem #19875440}.was-validated html[data-netbox-color-mode=dark] .form-check-input:valid~.form-check-label,html[data-netbox-color-mode=dark] .form-check-input.is-valid~.form-check-label{color:#198754}html[data-netbox-color-mode=dark] .form-check-inline .form-check-input~.valid-feedback{margin-left:.5em}.was-validated html[data-netbox-color-mode=dark] .input-group .form-control:valid,html[data-netbox-color-mode=dark] .input-group .form-control.is-valid,.was-validated html[data-netbox-color-mode=dark] .input-group .form-select:valid,html[data-netbox-color-mode=dark] .input-group .form-select.is-valid{z-index:1}.was-validated html[data-netbox-color-mode=dark] .input-group .form-control:valid:focus,html[data-netbox-color-mode=dark] .input-group .form-control.is-valid:focus,.was-validated html[data-netbox-color-mode=dark] .input-group .form-select:valid:focus,html[data-netbox-color-mode=dark] .input-group .form-select.is-valid:focus{z-index:3}html[data-netbox-color-mode=dark] .invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#dc3545}html[data-netbox-color-mode=dark] .invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:#dc3545e6;border-radius:.375rem}.was-validated html[data-netbox-color-mode=dark]:invalid~.invalid-feedback,.was-validated html[data-netbox-color-mode=dark]:invalid~.invalid-tooltip,html[data-netbox-color-mode=dark].is-invalid~.invalid-feedback,html[data-netbox-color-mode=dark].is-invalid~.invalid-tooltip{display:block}.was-validated html[data-netbox-color-mode=dark] .form-control:invalid,html[data-netbox-color-mode=dark] .form-control.is-invalid{border-color:#dc3545;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.was-validated html[data-netbox-color-mode=dark] .form-control:invalid:focus,html[data-netbox-color-mode=dark] .form-control.is-invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .25rem #dc354540}.was-validated html[data-netbox-color-mode=dark] textarea.form-control:invalid,html[data-netbox-color-mode=dark] textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.was-validated html[data-netbox-color-mode=dark] .form-select:invalid,html[data-netbox-color-mode=dark] .form-select.is-invalid{border-color:#dc3545}.was-validated html[data-netbox-color-mode=dark] .form-select:invalid:not([multiple]):not([size]),.was-validated html[data-netbox-color-mode=dark] .form-select:invalid:not([multiple])[size="1"],html[data-netbox-color-mode=dark] .form-select.is-invalid:not([multiple]):not([size]),html[data-netbox-color-mode=dark] .form-select.is-invalid:not([multiple])[size="1"]{padding-right:4.125rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23f8f9fa' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.was-validated html[data-netbox-color-mode=dark] .form-select:invalid:focus,html[data-netbox-color-mode=dark] .form-select.is-invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .25rem #dc354540}.was-validated html[data-netbox-color-mode=dark] .form-check-input:invalid,html[data-netbox-color-mode=dark] .form-check-input.is-invalid{border-color:#dc3545}.was-validated html[data-netbox-color-mode=dark] .form-check-input:invalid:checked,html[data-netbox-color-mode=dark] .form-check-input.is-invalid:checked{background-color:#dc3545}.was-validated html[data-netbox-color-mode=dark] .form-check-input:invalid:focus,html[data-netbox-color-mode=dark] .form-check-input.is-invalid:focus{box-shadow:0 0 0 .25rem #dc354540}.was-validated html[data-netbox-color-mode=dark] .form-check-input:invalid~.form-check-label,html[data-netbox-color-mode=dark] .form-check-input.is-invalid~.form-check-label{color:#dc3545}html[data-netbox-color-mode=dark] .form-check-inline .form-check-input~.invalid-feedback{margin-left:.5em}.was-validated html[data-netbox-color-mode=dark] .input-group .form-control:invalid,html[data-netbox-color-mode=dark] .input-group .form-control.is-invalid,.was-validated html[data-netbox-color-mode=dark] .input-group .form-select:invalid,html[data-netbox-color-mode=dark] .input-group .form-select.is-invalid{z-index:2}.was-validated html[data-netbox-color-mode=dark] .input-group .form-control:invalid:focus,html[data-netbox-color-mode=dark] .input-group .form-control.is-invalid:focus,.was-validated html[data-netbox-color-mode=dark] .input-group .form-select:invalid:focus,html[data-netbox-color-mode=dark] .input-group .form-select.is-invalid:focus{z-index:3}html[data-netbox-color-mode=dark] .btn{display:inline-block;font-weight:400;line-height:1.5;color:#fff;text-align:center;text-decoration:none;vertical-align:middle;cursor:pointer;user-select:none;background-color:transparent;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;border-radius:.375rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion: reduce){html[data-netbox-color-mode=dark] .btn{transition:none}}html[data-netbox-color-mode=dark] .btn:hover{color:#fff}.btn-check:focus+html[data-netbox-color-mode=dark] .btn,html[data-netbox-color-mode=dark] .btn:focus{outline:0;box-shadow:0 0 0 .25rem #0d6efd40}html[data-netbox-color-mode=dark] .btn:disabled,html[data-netbox-color-mode=dark] .btn.disabled,fieldset:disabled html[data-netbox-color-mode=dark] .btn{pointer-events:none;opacity:.65}html[data-netbox-color-mode=dark] .btn-primary{color:#000;background-color:#6ea8fe;border-color:#6ea8fe}html[data-netbox-color-mode=dark] .btn-primary:hover{color:#000;background-color:#84b5fe;border-color:#7db1fe}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-primary,html[data-netbox-color-mode=dark] .btn-primary:focus{color:#000;background-color:#84b5fe;border-color:#7db1fe;box-shadow:0 0 0 .25rem #5e8fd880}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-primary,.btn-check:active+html[data-netbox-color-mode=dark] .btn-primary,html[data-netbox-color-mode=dark] .btn-primary:active,html[data-netbox-color-mode=dark] .btn-primary.active,.show>html[data-netbox-color-mode=dark] .btn-primary.dropdown-toggle{color:#000;background-color:#8bb9fe;border-color:#7db1fe}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-primary:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-primary:focus,html[data-netbox-color-mode=dark] .btn-primary:active:focus,html[data-netbox-color-mode=dark] .btn-primary.active:focus,.show>html[data-netbox-color-mode=dark] .btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #5e8fd880}html[data-netbox-color-mode=dark] .btn-primary:disabled,html[data-netbox-color-mode=dark] .btn-primary.disabled{color:#000;background-color:#6ea8fe;border-color:#6ea8fe}html[data-netbox-color-mode=dark] .btn-secondary{color:#000;background-color:#adb5bd;border-color:#adb5bd}html[data-netbox-color-mode=dark] .btn-secondary:hover{color:#000;background-color:#b9c0c7;border-color:#b5bcc4}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-secondary,html[data-netbox-color-mode=dark] .btn-secondary:focus{color:#000;background-color:#b9c0c7;border-color:#b5bcc4;box-shadow:0 0 0 .25rem #939aa180}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-secondary,.btn-check:active+html[data-netbox-color-mode=dark] .btn-secondary,html[data-netbox-color-mode=dark] .btn-secondary:active,html[data-netbox-color-mode=dark] .btn-secondary.active,.show>html[data-netbox-color-mode=dark] .btn-secondary.dropdown-toggle{color:#000;background-color:#bdc4ca;border-color:#b5bcc4}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-secondary:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-secondary:focus,html[data-netbox-color-mode=dark] .btn-secondary:active:focus,html[data-netbox-color-mode=dark] .btn-secondary.active:focus,.show>html[data-netbox-color-mode=dark] .btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #939aa180}html[data-netbox-color-mode=dark] .btn-secondary:disabled,html[data-netbox-color-mode=dark] .btn-secondary.disabled{color:#000;background-color:#adb5bd;border-color:#adb5bd}html[data-netbox-color-mode=dark] .btn-success{color:#000;background-color:#75b798;border-color:#75b798}html[data-netbox-color-mode=dark] .btn-success:hover{color:#000;background-color:#8ac2a7;border-color:#83bea2}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-success,html[data-netbox-color-mode=dark] .btn-success:focus{color:#000;background-color:#8ac2a7;border-color:#83bea2;box-shadow:0 0 0 .25rem #639c8180}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-success,.btn-check:active+html[data-netbox-color-mode=dark] .btn-success,html[data-netbox-color-mode=dark] .btn-success:active,html[data-netbox-color-mode=dark] .btn-success.active,.show>html[data-netbox-color-mode=dark] .btn-success.dropdown-toggle{color:#000;background-color:#91c5ad;border-color:#83bea2}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-success:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-success:focus,html[data-netbox-color-mode=dark] .btn-success:active:focus,html[data-netbox-color-mode=dark] .btn-success.active:focus,.show>html[data-netbox-color-mode=dark] .btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #639c8180}html[data-netbox-color-mode=dark] .btn-success:disabled,html[data-netbox-color-mode=dark] .btn-success.disabled{color:#000;background-color:#75b798;border-color:#75b798}html[data-netbox-color-mode=dark] .btn-info{color:#000;background-color:#6edff6;border-color:#6edff6}html[data-netbox-color-mode=dark] .btn-info:hover{color:#000;background-color:#84e4f7;border-color:#7de2f7}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-info,html[data-netbox-color-mode=dark] .btn-info:focus{color:#000;background-color:#84e4f7;border-color:#7de2f7;box-shadow:0 0 0 .25rem #5ebed180}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-info,.btn-check:active+html[data-netbox-color-mode=dark] .btn-info,html[data-netbox-color-mode=dark] .btn-info:active,html[data-netbox-color-mode=dark] .btn-info.active,.show>html[data-netbox-color-mode=dark] .btn-info.dropdown-toggle{color:#000;background-color:#8be5f8;border-color:#7de2f7}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-info:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-info:focus,html[data-netbox-color-mode=dark] .btn-info:active:focus,html[data-netbox-color-mode=dark] .btn-info.active:focus,.show>html[data-netbox-color-mode=dark] .btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #5ebed180}html[data-netbox-color-mode=dark] .btn-info:disabled,html[data-netbox-color-mode=dark] .btn-info.disabled{color:#000;background-color:#6edff6;border-color:#6edff6}html[data-netbox-color-mode=dark] .btn-warning{color:#000;background-color:#ffda6a;border-color:#ffda6a}html[data-netbox-color-mode=dark] .btn-warning:hover{color:#000;background-color:#ffe080;border-color:#ffde79}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-warning,html[data-netbox-color-mode=dark] .btn-warning:focus{color:#000;background-color:#ffe080;border-color:#ffde79;box-shadow:0 0 0 .25rem #d9b95a80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-warning,.btn-check:active+html[data-netbox-color-mode=dark] .btn-warning,html[data-netbox-color-mode=dark] .btn-warning:active,html[data-netbox-color-mode=dark] .btn-warning.active,.show>html[data-netbox-color-mode=dark] .btn-warning.dropdown-toggle{color:#000;background-color:#ffe188;border-color:#ffde79}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-warning:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-warning:focus,html[data-netbox-color-mode=dark] .btn-warning:active:focus,html[data-netbox-color-mode=dark] .btn-warning.active:focus,.show>html[data-netbox-color-mode=dark] .btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #d9b95a80}html[data-netbox-color-mode=dark] .btn-warning:disabled,html[data-netbox-color-mode=dark] .btn-warning.disabled{color:#000;background-color:#ffda6a;border-color:#ffda6a}html[data-netbox-color-mode=dark] .btn-danger{color:#000;background-color:#ea868f;border-color:#ea868f}html[data-netbox-color-mode=dark] .btn-danger:hover{color:#000;background-color:#ed98a0;border-color:#ec929a}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-danger,html[data-netbox-color-mode=dark] .btn-danger:focus{color:#000;background-color:#ed98a0;border-color:#ec929a;box-shadow:0 0 0 .25rem #c7727a80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-danger,.btn-check:active+html[data-netbox-color-mode=dark] .btn-danger,html[data-netbox-color-mode=dark] .btn-danger:active,html[data-netbox-color-mode=dark] .btn-danger.active,.show>html[data-netbox-color-mode=dark] .btn-danger.dropdown-toggle{color:#000;background-color:#ee9ea5;border-color:#ec929a}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-danger:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-danger:focus,html[data-netbox-color-mode=dark] .btn-danger:active:focus,html[data-netbox-color-mode=dark] .btn-danger.active:focus,.show>html[data-netbox-color-mode=dark] .btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #c7727a80}html[data-netbox-color-mode=dark] .btn-danger:disabled,html[data-netbox-color-mode=dark] .btn-danger.disabled{color:#000;background-color:#ea868f;border-color:#ea868f}html[data-netbox-color-mode=dark] .btn-light{color:#000;background-color:#dee2e6;border-color:#dee2e6}html[data-netbox-color-mode=dark] .btn-light:hover{color:#000;background-color:#e3e6ea;border-color:#e1e5e9}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-light,html[data-netbox-color-mode=dark] .btn-light:focus{color:#000;background-color:#e3e6ea;border-color:#e1e5e9;box-shadow:0 0 0 .25rem #bdc0c480}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-light,.btn-check:active+html[data-netbox-color-mode=dark] .btn-light,html[data-netbox-color-mode=dark] .btn-light:active,html[data-netbox-color-mode=dark] .btn-light.active,.show>html[data-netbox-color-mode=dark] .btn-light.dropdown-toggle{color:#000;background-color:#e5e8eb;border-color:#e1e5e9}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-light:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-light:focus,html[data-netbox-color-mode=dark] .btn-light:active:focus,html[data-netbox-color-mode=dark] .btn-light.active:focus,.show>html[data-netbox-color-mode=dark] .btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #bdc0c480}html[data-netbox-color-mode=dark] .btn-light:disabled,html[data-netbox-color-mode=dark] .btn-light.disabled{color:#000;background-color:#dee2e6;border-color:#dee2e6}html[data-netbox-color-mode=dark] .btn-dark{color:#000;background-color:#adb5bd;border-color:#adb5bd}html[data-netbox-color-mode=dark] .btn-dark:hover{color:#000;background-color:#b9c0c7;border-color:#b5bcc4}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-dark,html[data-netbox-color-mode=dark] .btn-dark:focus{color:#000;background-color:#b9c0c7;border-color:#b5bcc4;box-shadow:0 0 0 .25rem #939aa180}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-dark,.btn-check:active+html[data-netbox-color-mode=dark] .btn-dark,html[data-netbox-color-mode=dark] .btn-dark:active,html[data-netbox-color-mode=dark] .btn-dark.active,.show>html[data-netbox-color-mode=dark] .btn-dark.dropdown-toggle{color:#000;background-color:#bdc4ca;border-color:#b5bcc4}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-dark:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-dark:focus,html[data-netbox-color-mode=dark] .btn-dark:active:focus,html[data-netbox-color-mode=dark] .btn-dark.active:focus,.show>html[data-netbox-color-mode=dark] .btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #939aa180}html[data-netbox-color-mode=dark] .btn-dark:disabled,html[data-netbox-color-mode=dark] .btn-dark.disabled{color:#000;background-color:#adb5bd;border-color:#adb5bd}html[data-netbox-color-mode=dark] .btn-red{color:#000;background-color:#ea868f;border-color:#ea868f}html[data-netbox-color-mode=dark] .btn-red:hover{color:#000;background-color:#ed98a0;border-color:#ec929a}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-red,html[data-netbox-color-mode=dark] .btn-red:focus{color:#000;background-color:#ed98a0;border-color:#ec929a;box-shadow:0 0 0 .25rem #c7727a80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-red,.btn-check:active+html[data-netbox-color-mode=dark] .btn-red,html[data-netbox-color-mode=dark] .btn-red:active,html[data-netbox-color-mode=dark] .btn-red.active,.show>html[data-netbox-color-mode=dark] .btn-red.dropdown-toggle{color:#000;background-color:#ee9ea5;border-color:#ec929a}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-red:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-red:focus,html[data-netbox-color-mode=dark] .btn-red:active:focus,html[data-netbox-color-mode=dark] .btn-red.active:focus,.show>html[data-netbox-color-mode=dark] .btn-red.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #c7727a80}html[data-netbox-color-mode=dark] .btn-red:disabled,html[data-netbox-color-mode=dark] .btn-red.disabled{color:#000;background-color:#ea868f;border-color:#ea868f}html[data-netbox-color-mode=dark] .btn-yellow{color:#000;background-color:#ffda6a;border-color:#ffda6a}html[data-netbox-color-mode=dark] .btn-yellow:hover{color:#000;background-color:#ffe080;border-color:#ffde79}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-yellow,html[data-netbox-color-mode=dark] .btn-yellow:focus{color:#000;background-color:#ffe080;border-color:#ffde79;box-shadow:0 0 0 .25rem #d9b95a80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-yellow,.btn-check:active+html[data-netbox-color-mode=dark] .btn-yellow,html[data-netbox-color-mode=dark] .btn-yellow:active,html[data-netbox-color-mode=dark] .btn-yellow.active,.show>html[data-netbox-color-mode=dark] .btn-yellow.dropdown-toggle{color:#000;background-color:#ffe188;border-color:#ffde79}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-yellow:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-yellow:focus,html[data-netbox-color-mode=dark] .btn-yellow:active:focus,html[data-netbox-color-mode=dark] .btn-yellow.active:focus,.show>html[data-netbox-color-mode=dark] .btn-yellow.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #d9b95a80}html[data-netbox-color-mode=dark] .btn-yellow:disabled,html[data-netbox-color-mode=dark] .btn-yellow.disabled{color:#000;background-color:#ffda6a;border-color:#ffda6a}html[data-netbox-color-mode=dark] .btn-green{color:#000;background-color:#75b798;border-color:#75b798}html[data-netbox-color-mode=dark] .btn-green:hover{color:#000;background-color:#8ac2a7;border-color:#83bea2}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-green,html[data-netbox-color-mode=dark] .btn-green:focus{color:#000;background-color:#8ac2a7;border-color:#83bea2;box-shadow:0 0 0 .25rem #639c8180}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-green,.btn-check:active+html[data-netbox-color-mode=dark] .btn-green,html[data-netbox-color-mode=dark] .btn-green:active,html[data-netbox-color-mode=dark] .btn-green.active,.show>html[data-netbox-color-mode=dark] .btn-green.dropdown-toggle{color:#000;background-color:#91c5ad;border-color:#83bea2}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-green:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-green:focus,html[data-netbox-color-mode=dark] .btn-green:active:focus,html[data-netbox-color-mode=dark] .btn-green.active:focus,.show>html[data-netbox-color-mode=dark] .btn-green.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #639c8180}html[data-netbox-color-mode=dark] .btn-green:disabled,html[data-netbox-color-mode=dark] .btn-green.disabled{color:#000;background-color:#75b798;border-color:#75b798}html[data-netbox-color-mode=dark] .btn-blue{color:#000;background-color:#6ea8fe;border-color:#6ea8fe}html[data-netbox-color-mode=dark] .btn-blue:hover{color:#000;background-color:#84b5fe;border-color:#7db1fe}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-blue,html[data-netbox-color-mode=dark] .btn-blue:focus{color:#000;background-color:#84b5fe;border-color:#7db1fe;box-shadow:0 0 0 .25rem #5e8fd880}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-blue,.btn-check:active+html[data-netbox-color-mode=dark] .btn-blue,html[data-netbox-color-mode=dark] .btn-blue:active,html[data-netbox-color-mode=dark] .btn-blue.active,.show>html[data-netbox-color-mode=dark] .btn-blue.dropdown-toggle{color:#000;background-color:#8bb9fe;border-color:#7db1fe}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-blue:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-blue:focus,html[data-netbox-color-mode=dark] .btn-blue:active:focus,html[data-netbox-color-mode=dark] .btn-blue.active:focus,.show>html[data-netbox-color-mode=dark] .btn-blue.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #5e8fd880}html[data-netbox-color-mode=dark] .btn-blue:disabled,html[data-netbox-color-mode=dark] .btn-blue.disabled{color:#000;background-color:#6ea8fe;border-color:#6ea8fe}html[data-netbox-color-mode=dark] .btn-cyan{color:#000;background-color:#6edff6;border-color:#6edff6}html[data-netbox-color-mode=dark] .btn-cyan:hover{color:#000;background-color:#84e4f7;border-color:#7de2f7}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-cyan,html[data-netbox-color-mode=dark] .btn-cyan:focus{color:#000;background-color:#84e4f7;border-color:#7de2f7;box-shadow:0 0 0 .25rem #5ebed180}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-cyan,.btn-check:active+html[data-netbox-color-mode=dark] .btn-cyan,html[data-netbox-color-mode=dark] .btn-cyan:active,html[data-netbox-color-mode=dark] .btn-cyan.active,.show>html[data-netbox-color-mode=dark] .btn-cyan.dropdown-toggle{color:#000;background-color:#8be5f8;border-color:#7de2f7}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-cyan:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-cyan:focus,html[data-netbox-color-mode=dark] .btn-cyan:active:focus,html[data-netbox-color-mode=dark] .btn-cyan.active:focus,.show>html[data-netbox-color-mode=dark] .btn-cyan.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #5ebed180}html[data-netbox-color-mode=dark] .btn-cyan:disabled,html[data-netbox-color-mode=dark] .btn-cyan.disabled{color:#000;background-color:#6edff6;border-color:#6edff6}html[data-netbox-color-mode=dark] .btn-indigo{color:#000;background-color:#a370f7;border-color:#a370f7}html[data-netbox-color-mode=dark] .btn-indigo:hover{color:#000;background-color:#b185f8;border-color:#ac7ef8}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-indigo,html[data-netbox-color-mode=dark] .btn-indigo:focus{color:#000;background-color:#b185f8;border-color:#ac7ef8;box-shadow:0 0 0 .25rem #8b5fd280}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-indigo,.btn-check:active+html[data-netbox-color-mode=dark] .btn-indigo,html[data-netbox-color-mode=dark] .btn-indigo:active,html[data-netbox-color-mode=dark] .btn-indigo.active,.show>html[data-netbox-color-mode=dark] .btn-indigo.dropdown-toggle{color:#000;background-color:#b58df9;border-color:#ac7ef8}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-indigo:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-indigo:focus,html[data-netbox-color-mode=dark] .btn-indigo:active:focus,html[data-netbox-color-mode=dark] .btn-indigo.active:focus,.show>html[data-netbox-color-mode=dark] .btn-indigo.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #8b5fd280}html[data-netbox-color-mode=dark] .btn-indigo:disabled,html[data-netbox-color-mode=dark] .btn-indigo.disabled{color:#000;background-color:#a370f7;border-color:#a370f7}html[data-netbox-color-mode=dark] .btn-purple{color:#000;background-color:#a98eda;border-color:#a98eda}html[data-netbox-color-mode=dark] .btn-purple:hover{color:#000;background-color:#b69fe0;border-color:#b299de}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-purple,html[data-netbox-color-mode=dark] .btn-purple:focus{color:#000;background-color:#b69fe0;border-color:#b299de;box-shadow:0 0 0 .25rem #9079b980}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-purple,.btn-check:active+html[data-netbox-color-mode=dark] .btn-purple,html[data-netbox-color-mode=dark] .btn-purple:active,html[data-netbox-color-mode=dark] .btn-purple.active,.show>html[data-netbox-color-mode=dark] .btn-purple.dropdown-toggle{color:#000;background-color:#baa5e1;border-color:#b299de}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-purple:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-purple:focus,html[data-netbox-color-mode=dark] .btn-purple:active:focus,html[data-netbox-color-mode=dark] .btn-purple.active:focus,.show>html[data-netbox-color-mode=dark] .btn-purple.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #9079b980}html[data-netbox-color-mode=dark] .btn-purple:disabled,html[data-netbox-color-mode=dark] .btn-purple.disabled{color:#000;background-color:#a98eda;border-color:#a98eda}html[data-netbox-color-mode=dark] .btn-pink{color:#000;background-color:#e685b5;border-color:#e685b5}html[data-netbox-color-mode=dark] .btn-pink:hover{color:#000;background-color:#ea97c0;border-color:#e991bc}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-pink,html[data-netbox-color-mode=dark] .btn-pink:focus{color:#000;background-color:#ea97c0;border-color:#e991bc;box-shadow:0 0 0 .25rem #c4719a80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-pink,.btn-check:active+html[data-netbox-color-mode=dark] .btn-pink,html[data-netbox-color-mode=dark] .btn-pink:active,html[data-netbox-color-mode=dark] .btn-pink.active,.show>html[data-netbox-color-mode=dark] .btn-pink.dropdown-toggle{color:#000;background-color:#eb9dc4;border-color:#e991bc}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-pink:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-pink:focus,html[data-netbox-color-mode=dark] .btn-pink:active:focus,html[data-netbox-color-mode=dark] .btn-pink.active:focus,.show>html[data-netbox-color-mode=dark] .btn-pink.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #c4719a80}html[data-netbox-color-mode=dark] .btn-pink:disabled,html[data-netbox-color-mode=dark] .btn-pink.disabled{color:#000;background-color:#e685b5;border-color:#e685b5}html[data-netbox-color-mode=dark] .btn-darker{color:#fff;background-color:#1b1f22;border-color:#1b1f22}html[data-netbox-color-mode=dark] .btn-darker:hover{color:#fff;background-color:#171a1d;border-color:#16191b}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-darker,html[data-netbox-color-mode=dark] .btn-darker:focus{color:#fff;background-color:#171a1d;border-color:#16191b;box-shadow:0 0 0 .25rem #3d414380}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-darker,.btn-check:active+html[data-netbox-color-mode=dark] .btn-darker,html[data-netbox-color-mode=dark] .btn-darker:active,html[data-netbox-color-mode=dark] .btn-darker.active,.show>html[data-netbox-color-mode=dark] .btn-darker.dropdown-toggle{color:#fff;background-color:#16191b;border-color:#14171a}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-darker:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-darker:focus,html[data-netbox-color-mode=dark] .btn-darker:active:focus,html[data-netbox-color-mode=dark] .btn-darker.active:focus,.show>html[data-netbox-color-mode=dark] .btn-darker.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #3d414380}html[data-netbox-color-mode=dark] .btn-darker:disabled,html[data-netbox-color-mode=dark] .btn-darker.disabled{color:#fff;background-color:#1b1f22;border-color:#1b1f22}html[data-netbox-color-mode=dark] .btn-darkest{color:#fff;background-color:#171b1d;border-color:#171b1d}html[data-netbox-color-mode=dark] .btn-darkest:hover{color:#fff;background-color:#141719;border-color:#121617}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-darkest,html[data-netbox-color-mode=dark] .btn-darkest:focus{color:#fff;background-color:#141719;border-color:#121617;box-shadow:0 0 0 .25rem #3a3d3f80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-darkest,.btn-check:active+html[data-netbox-color-mode=dark] .btn-darkest,html[data-netbox-color-mode=dark] .btn-darkest:active,html[data-netbox-color-mode=dark] .btn-darkest.active,.show>html[data-netbox-color-mode=dark] .btn-darkest.dropdown-toggle{color:#fff;background-color:#121617;border-color:#111416}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-darkest:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-darkest:focus,html[data-netbox-color-mode=dark] .btn-darkest:active:focus,html[data-netbox-color-mode=dark] .btn-darkest.active:focus,.show>html[data-netbox-color-mode=dark] .btn-darkest.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #3a3d3f80}html[data-netbox-color-mode=dark] .btn-darkest:disabled,html[data-netbox-color-mode=dark] .btn-darkest.disabled{color:#fff;background-color:#171b1d;border-color:#171b1d}html[data-netbox-color-mode=dark] .btn-gray{color:#000;background-color:#ced4da;border-color:#ced4da}html[data-netbox-color-mode=dark] .btn-gray:hover{color:#000;background-color:#d5dae0;border-color:#d3d8de}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-gray,html[data-netbox-color-mode=dark] .btn-gray:focus{color:#000;background-color:#d5dae0;border-color:#d3d8de;box-shadow:0 0 0 .25rem #afb4b980}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-gray,.btn-check:active+html[data-netbox-color-mode=dark] .btn-gray,html[data-netbox-color-mode=dark] .btn-gray:active,html[data-netbox-color-mode=dark] .btn-gray.active,.show>html[data-netbox-color-mode=dark] .btn-gray.dropdown-toggle{color:#000;background-color:#d8dde1;border-color:#d3d8de}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-gray:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-gray:focus,html[data-netbox-color-mode=dark] .btn-gray:active:focus,html[data-netbox-color-mode=dark] .btn-gray.active:focus,.show>html[data-netbox-color-mode=dark] .btn-gray.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #afb4b980}html[data-netbox-color-mode=dark] .btn-gray:disabled,html[data-netbox-color-mode=dark] .btn-gray.disabled{color:#000;background-color:#ced4da;border-color:#ced4da}html[data-netbox-color-mode=dark] .btn-gray-100{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}html[data-netbox-color-mode=dark] .btn-gray-100:hover{color:#000;background-color:#f9fafb;border-color:#f9fafb}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-gray-100,html[data-netbox-color-mode=dark] .btn-gray-100:focus{color:#000;background-color:#f9fafb;border-color:#f9fafb;box-shadow:0 0 0 .25rem #d3d4d580}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-gray-100,.btn-check:active+html[data-netbox-color-mode=dark] .btn-gray-100,html[data-netbox-color-mode=dark] .btn-gray-100:active,html[data-netbox-color-mode=dark] .btn-gray-100.active,.show>html[data-netbox-color-mode=dark] .btn-gray-100.dropdown-toggle{color:#000;background-color:#f9fafb;border-color:#f9fafb}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-gray-100:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-gray-100:focus,html[data-netbox-color-mode=dark] .btn-gray-100:active:focus,html[data-netbox-color-mode=dark] .btn-gray-100.active:focus,.show>html[data-netbox-color-mode=dark] .btn-gray-100.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #d3d4d580}html[data-netbox-color-mode=dark] .btn-gray-100:disabled,html[data-netbox-color-mode=dark] .btn-gray-100.disabled{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}html[data-netbox-color-mode=dark] .btn-gray-200{color:#000;background-color:#e9ecef;border-color:#e9ecef}html[data-netbox-color-mode=dark] .btn-gray-200:hover{color:#000;background-color:#eceff1;border-color:#ebeef1}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-gray-200,html[data-netbox-color-mode=dark] .btn-gray-200:focus{color:#000;background-color:#eceff1;border-color:#ebeef1;box-shadow:0 0 0 .25rem #c6c9cb80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-gray-200,.btn-check:active+html[data-netbox-color-mode=dark] .btn-gray-200,html[data-netbox-color-mode=dark] .btn-gray-200:active,html[data-netbox-color-mode=dark] .btn-gray-200.active,.show>html[data-netbox-color-mode=dark] .btn-gray-200.dropdown-toggle{color:#000;background-color:#edf0f2;border-color:#ebeef1}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-gray-200:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-gray-200:focus,html[data-netbox-color-mode=dark] .btn-gray-200:active:focus,html[data-netbox-color-mode=dark] .btn-gray-200.active:focus,.show>html[data-netbox-color-mode=dark] .btn-gray-200.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #c6c9cb80}html[data-netbox-color-mode=dark] .btn-gray-200:disabled,html[data-netbox-color-mode=dark] .btn-gray-200.disabled{color:#000;background-color:#e9ecef;border-color:#e9ecef}html[data-netbox-color-mode=dark] .btn-gray-300{color:#000;background-color:#dee2e6;border-color:#dee2e6}html[data-netbox-color-mode=dark] .btn-gray-300:hover{color:#000;background-color:#e3e6ea;border-color:#e1e5e9}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-gray-300,html[data-netbox-color-mode=dark] .btn-gray-300:focus{color:#000;background-color:#e3e6ea;border-color:#e1e5e9;box-shadow:0 0 0 .25rem #bdc0c480}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-gray-300,.btn-check:active+html[data-netbox-color-mode=dark] .btn-gray-300,html[data-netbox-color-mode=dark] .btn-gray-300:active,html[data-netbox-color-mode=dark] .btn-gray-300.active,.show>html[data-netbox-color-mode=dark] .btn-gray-300.dropdown-toggle{color:#000;background-color:#e5e8eb;border-color:#e1e5e9}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-gray-300:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-gray-300:focus,html[data-netbox-color-mode=dark] .btn-gray-300:active:focus,html[data-netbox-color-mode=dark] .btn-gray-300.active:focus,.show>html[data-netbox-color-mode=dark] .btn-gray-300.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #bdc0c480}html[data-netbox-color-mode=dark] .btn-gray-300:disabled,html[data-netbox-color-mode=dark] .btn-gray-300.disabled{color:#000;background-color:#dee2e6;border-color:#dee2e6}html[data-netbox-color-mode=dark] .btn-gray-400{color:#000;background-color:#ced4da;border-color:#ced4da}html[data-netbox-color-mode=dark] .btn-gray-400:hover{color:#000;background-color:#d5dae0;border-color:#d3d8de}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-gray-400,html[data-netbox-color-mode=dark] .btn-gray-400:focus{color:#000;background-color:#d5dae0;border-color:#d3d8de;box-shadow:0 0 0 .25rem #afb4b980}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-gray-400,.btn-check:active+html[data-netbox-color-mode=dark] .btn-gray-400,html[data-netbox-color-mode=dark] .btn-gray-400:active,html[data-netbox-color-mode=dark] .btn-gray-400.active,.show>html[data-netbox-color-mode=dark] .btn-gray-400.dropdown-toggle{color:#000;background-color:#d8dde1;border-color:#d3d8de}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-gray-400:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-gray-400:focus,html[data-netbox-color-mode=dark] .btn-gray-400:active:focus,html[data-netbox-color-mode=dark] .btn-gray-400.active:focus,.show>html[data-netbox-color-mode=dark] .btn-gray-400.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #afb4b980}html[data-netbox-color-mode=dark] .btn-gray-400:disabled,html[data-netbox-color-mode=dark] .btn-gray-400.disabled{color:#000;background-color:#ced4da;border-color:#ced4da}html[data-netbox-color-mode=dark] .btn-gray-500{color:#000;background-color:#adb5bd;border-color:#adb5bd}html[data-netbox-color-mode=dark] .btn-gray-500:hover{color:#000;background-color:#b9c0c7;border-color:#b5bcc4}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-gray-500,html[data-netbox-color-mode=dark] .btn-gray-500:focus{color:#000;background-color:#b9c0c7;border-color:#b5bcc4;box-shadow:0 0 0 .25rem #939aa180}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-gray-500,.btn-check:active+html[data-netbox-color-mode=dark] .btn-gray-500,html[data-netbox-color-mode=dark] .btn-gray-500:active,html[data-netbox-color-mode=dark] .btn-gray-500.active,.show>html[data-netbox-color-mode=dark] .btn-gray-500.dropdown-toggle{color:#000;background-color:#bdc4ca;border-color:#b5bcc4}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-gray-500:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-gray-500:focus,html[data-netbox-color-mode=dark] .btn-gray-500:active:focus,html[data-netbox-color-mode=dark] .btn-gray-500.active:focus,.show>html[data-netbox-color-mode=dark] .btn-gray-500.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #939aa180}html[data-netbox-color-mode=dark] .btn-gray-500:disabled,html[data-netbox-color-mode=dark] .btn-gray-500.disabled{color:#000;background-color:#adb5bd;border-color:#adb5bd}html[data-netbox-color-mode=dark] .btn-gray-600{color:#fff;background-color:#6c757d;border-color:#6c757d}html[data-netbox-color-mode=dark] .btn-gray-600:hover{color:#fff;background-color:#5c636a;border-color:#565e64}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-gray-600,html[data-netbox-color-mode=dark] .btn-gray-600:focus{color:#fff;background-color:#5c636a;border-color:#565e64;box-shadow:0 0 0 .25rem #828a9180}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-gray-600,.btn-check:active+html[data-netbox-color-mode=dark] .btn-gray-600,html[data-netbox-color-mode=dark] .btn-gray-600:active,html[data-netbox-color-mode=dark] .btn-gray-600.active,.show>html[data-netbox-color-mode=dark] .btn-gray-600.dropdown-toggle{color:#fff;background-color:#565e64;border-color:#51585e}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-gray-600:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-gray-600:focus,html[data-netbox-color-mode=dark] .btn-gray-600:active:focus,html[data-netbox-color-mode=dark] .btn-gray-600.active:focus,.show>html[data-netbox-color-mode=dark] .btn-gray-600.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #828a9180}html[data-netbox-color-mode=dark] .btn-gray-600:disabled,html[data-netbox-color-mode=dark] .btn-gray-600.disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}html[data-netbox-color-mode=dark] .btn-gray-700{color:#fff;background-color:#495057;border-color:#495057}html[data-netbox-color-mode=dark] .btn-gray-700:hover{color:#fff;background-color:#3e444a;border-color:#3a4046}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-gray-700,html[data-netbox-color-mode=dark] .btn-gray-700:focus{color:#fff;background-color:#3e444a;border-color:#3a4046;box-shadow:0 0 0 .25rem #646a7080}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-gray-700,.btn-check:active+html[data-netbox-color-mode=dark] .btn-gray-700,html[data-netbox-color-mode=dark] .btn-gray-700:active,html[data-netbox-color-mode=dark] .btn-gray-700.active,.show>html[data-netbox-color-mode=dark] .btn-gray-700.dropdown-toggle{color:#fff;background-color:#3a4046;border-color:#373c41}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-gray-700:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-gray-700:focus,html[data-netbox-color-mode=dark] .btn-gray-700:active:focus,html[data-netbox-color-mode=dark] .btn-gray-700.active:focus,.show>html[data-netbox-color-mode=dark] .btn-gray-700.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #646a7080}html[data-netbox-color-mode=dark] .btn-gray-700:disabled,html[data-netbox-color-mode=dark] .btn-gray-700.disabled{color:#fff;background-color:#495057;border-color:#495057}html[data-netbox-color-mode=dark] .btn-gray-800{color:#fff;background-color:#343a40;border-color:#343a40}html[data-netbox-color-mode=dark] .btn-gray-800:hover{color:#fff;background-color:#2c3136;border-color:#2a2e33}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-gray-800,html[data-netbox-color-mode=dark] .btn-gray-800:focus{color:#fff;background-color:#2c3136;border-color:#2a2e33;box-shadow:0 0 0 .25rem #52585d80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-gray-800,.btn-check:active+html[data-netbox-color-mode=dark] .btn-gray-800,html[data-netbox-color-mode=dark] .btn-gray-800:active,html[data-netbox-color-mode=dark] .btn-gray-800.active,.show>html[data-netbox-color-mode=dark] .btn-gray-800.dropdown-toggle{color:#fff;background-color:#2a2e33;border-color:#272c30}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-gray-800:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-gray-800:focus,html[data-netbox-color-mode=dark] .btn-gray-800:active:focus,html[data-netbox-color-mode=dark] .btn-gray-800.active:focus,.show>html[data-netbox-color-mode=dark] .btn-gray-800.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #52585d80}html[data-netbox-color-mode=dark] .btn-gray-800:disabled,html[data-netbox-color-mode=dark] .btn-gray-800.disabled{color:#fff;background-color:#343a40;border-color:#343a40}html[data-netbox-color-mode=dark] .btn-gray-900{color:#fff;background-color:#212529;border-color:#212529}html[data-netbox-color-mode=dark] .btn-gray-900:hover{color:#fff;background-color:#1c1f23;border-color:#1a1e21}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-gray-900,html[data-netbox-color-mode=dark] .btn-gray-900:focus{color:#fff;background-color:#1c1f23;border-color:#1a1e21;box-shadow:0 0 0 .25rem #42464980}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-gray-900,.btn-check:active+html[data-netbox-color-mode=dark] .btn-gray-900,html[data-netbox-color-mode=dark] .btn-gray-900:active,html[data-netbox-color-mode=dark] .btn-gray-900.active,.show>html[data-netbox-color-mode=dark] .btn-gray-900.dropdown-toggle{color:#fff;background-color:#1a1e21;border-color:#191c1f}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-gray-900:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-gray-900:focus,html[data-netbox-color-mode=dark] .btn-gray-900:active:focus,html[data-netbox-color-mode=dark] .btn-gray-900.active:focus,.show>html[data-netbox-color-mode=dark] .btn-gray-900.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #42464980}html[data-netbox-color-mode=dark] .btn-gray-900:disabled,html[data-netbox-color-mode=dark] .btn-gray-900.disabled{color:#fff;background-color:#212529;border-color:#212529}html[data-netbox-color-mode=dark] .btn-red-100{color:#000;background-color:#f8d7da;border-color:#f8d7da}html[data-netbox-color-mode=dark] .btn-red-100:hover{color:#000;background-color:#f9dde0;border-color:#f9dbde}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-red-100,html[data-netbox-color-mode=dark] .btn-red-100:focus{color:#000;background-color:#f9dde0;border-color:#f9dbde;box-shadow:0 0 0 .25rem #d3b7b980}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-red-100,.btn-check:active+html[data-netbox-color-mode=dark] .btn-red-100,html[data-netbox-color-mode=dark] .btn-red-100:active,html[data-netbox-color-mode=dark] .btn-red-100.active,.show>html[data-netbox-color-mode=dark] .btn-red-100.dropdown-toggle{color:#000;background-color:#f9dfe1;border-color:#f9dbde}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-red-100:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-red-100:focus,html[data-netbox-color-mode=dark] .btn-red-100:active:focus,html[data-netbox-color-mode=dark] .btn-red-100.active:focus,.show>html[data-netbox-color-mode=dark] .btn-red-100.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #d3b7b980}html[data-netbox-color-mode=dark] .btn-red-100:disabled,html[data-netbox-color-mode=dark] .btn-red-100.disabled{color:#000;background-color:#f8d7da;border-color:#f8d7da}html[data-netbox-color-mode=dark] .btn-red-200{color:#000;background-color:#f1aeb5;border-color:#f1aeb5}html[data-netbox-color-mode=dark] .btn-red-200:hover{color:#000;background-color:#f3bac0;border-color:#f2b6bc}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-red-200,html[data-netbox-color-mode=dark] .btn-red-200:focus{color:#000;background-color:#f3bac0;border-color:#f2b6bc;box-shadow:0 0 0 .25rem #cd949a80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-red-200,.btn-check:active+html[data-netbox-color-mode=dark] .btn-red-200,html[data-netbox-color-mode=dark] .btn-red-200:active,html[data-netbox-color-mode=dark] .btn-red-200.active,.show>html[data-netbox-color-mode=dark] .btn-red-200.dropdown-toggle{color:#000;background-color:#f4bec4;border-color:#f2b6bc}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-red-200:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-red-200:focus,html[data-netbox-color-mode=dark] .btn-red-200:active:focus,html[data-netbox-color-mode=dark] .btn-red-200.active:focus,.show>html[data-netbox-color-mode=dark] .btn-red-200.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #cd949a80}html[data-netbox-color-mode=dark] .btn-red-200:disabled,html[data-netbox-color-mode=dark] .btn-red-200.disabled{color:#000;background-color:#f1aeb5;border-color:#f1aeb5}html[data-netbox-color-mode=dark] .btn-red-300{color:#000;background-color:#ea868f;border-color:#ea868f}html[data-netbox-color-mode=dark] .btn-red-300:hover{color:#000;background-color:#ed98a0;border-color:#ec929a}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-red-300,html[data-netbox-color-mode=dark] .btn-red-300:focus{color:#000;background-color:#ed98a0;border-color:#ec929a;box-shadow:0 0 0 .25rem #c7727a80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-red-300,.btn-check:active+html[data-netbox-color-mode=dark] .btn-red-300,html[data-netbox-color-mode=dark] .btn-red-300:active,html[data-netbox-color-mode=dark] .btn-red-300.active,.show>html[data-netbox-color-mode=dark] .btn-red-300.dropdown-toggle{color:#000;background-color:#ee9ea5;border-color:#ec929a}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-red-300:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-red-300:focus,html[data-netbox-color-mode=dark] .btn-red-300:active:focus,html[data-netbox-color-mode=dark] .btn-red-300.active:focus,.show>html[data-netbox-color-mode=dark] .btn-red-300.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #c7727a80}html[data-netbox-color-mode=dark] .btn-red-300:disabled,html[data-netbox-color-mode=dark] .btn-red-300.disabled{color:#000;background-color:#ea868f;border-color:#ea868f}html[data-netbox-color-mode=dark] .btn-red-400{color:#000;background-color:#e35d6a;border-color:#e35d6a}html[data-netbox-color-mode=dark] .btn-red-400:hover{color:#000;background-color:#e77580;border-color:#e66d79}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-red-400,html[data-netbox-color-mode=dark] .btn-red-400:focus{color:#000;background-color:#e77580;border-color:#e66d79;box-shadow:0 0 0 .25rem #c14f5a80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-red-400,.btn-check:active+html[data-netbox-color-mode=dark] .btn-red-400,html[data-netbox-color-mode=dark] .btn-red-400:active,html[data-netbox-color-mode=dark] .btn-red-400.active,.show>html[data-netbox-color-mode=dark] .btn-red-400.dropdown-toggle{color:#000;background-color:#e97d88;border-color:#e66d79}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-red-400:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-red-400:focus,html[data-netbox-color-mode=dark] .btn-red-400:active:focus,html[data-netbox-color-mode=dark] .btn-red-400.active:focus,.show>html[data-netbox-color-mode=dark] .btn-red-400.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #c14f5a80}html[data-netbox-color-mode=dark] .btn-red-400:disabled,html[data-netbox-color-mode=dark] .btn-red-400.disabled{color:#000;background-color:#e35d6a;border-color:#e35d6a}html[data-netbox-color-mode=dark] .btn-red-500{color:#fff;background-color:#dc3545;border-color:#dc3545}html[data-netbox-color-mode=dark] .btn-red-500:hover{color:#fff;background-color:#bb2d3b;border-color:#b02a37}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-red-500,html[data-netbox-color-mode=dark] .btn-red-500:focus{color:#fff;background-color:#bb2d3b;border-color:#b02a37;box-shadow:0 0 0 .25rem #e1536180}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-red-500,.btn-check:active+html[data-netbox-color-mode=dark] .btn-red-500,html[data-netbox-color-mode=dark] .btn-red-500:active,html[data-netbox-color-mode=dark] .btn-red-500.active,.show>html[data-netbox-color-mode=dark] .btn-red-500.dropdown-toggle{color:#fff;background-color:#b02a37;border-color:#a52834}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-red-500:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-red-500:focus,html[data-netbox-color-mode=dark] .btn-red-500:active:focus,html[data-netbox-color-mode=dark] .btn-red-500.active:focus,.show>html[data-netbox-color-mode=dark] .btn-red-500.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #e1536180}html[data-netbox-color-mode=dark] .btn-red-500:disabled,html[data-netbox-color-mode=dark] .btn-red-500.disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}html[data-netbox-color-mode=dark] .btn-red-600{color:#fff;background-color:#b02a37;border-color:#b02a37}html[data-netbox-color-mode=dark] .btn-red-600:hover{color:#fff;background-color:#96242f;border-color:#8d222c}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-red-600,html[data-netbox-color-mode=dark] .btn-red-600:focus{color:#fff;background-color:#96242f;border-color:#8d222c;box-shadow:0 0 0 .25rem #bc4a5580}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-red-600,.btn-check:active+html[data-netbox-color-mode=dark] .btn-red-600,html[data-netbox-color-mode=dark] .btn-red-600:active,html[data-netbox-color-mode=dark] .btn-red-600.active,.show>html[data-netbox-color-mode=dark] .btn-red-600.dropdown-toggle{color:#fff;background-color:#8d222c;border-color:#842029}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-red-600:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-red-600:focus,html[data-netbox-color-mode=dark] .btn-red-600:active:focus,html[data-netbox-color-mode=dark] .btn-red-600.active:focus,.show>html[data-netbox-color-mode=dark] .btn-red-600.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #bc4a5580}html[data-netbox-color-mode=dark] .btn-red-600:disabled,html[data-netbox-color-mode=dark] .btn-red-600.disabled{color:#fff;background-color:#b02a37;border-color:#b02a37}html[data-netbox-color-mode=dark] .btn-red-700{color:#fff;background-color:#842029;border-color:#842029}html[data-netbox-color-mode=dark] .btn-red-700:hover{color:#fff;background-color:#701b23;border-color:#6a1a21}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-red-700,html[data-netbox-color-mode=dark] .btn-red-700:focus{color:#fff;background-color:#701b23;border-color:#6a1a21;box-shadow:0 0 0 .25rem #96414980}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-red-700,.btn-check:active+html[data-netbox-color-mode=dark] .btn-red-700,html[data-netbox-color-mode=dark] .btn-red-700:active,html[data-netbox-color-mode=dark] .btn-red-700.active,.show>html[data-netbox-color-mode=dark] .btn-red-700.dropdown-toggle{color:#fff;background-color:#6a1a21;border-color:#63181f}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-red-700:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-red-700:focus,html[data-netbox-color-mode=dark] .btn-red-700:active:focus,html[data-netbox-color-mode=dark] .btn-red-700.active:focus,.show>html[data-netbox-color-mode=dark] .btn-red-700.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #96414980}html[data-netbox-color-mode=dark] .btn-red-700:disabled,html[data-netbox-color-mode=dark] .btn-red-700.disabled{color:#fff;background-color:#842029;border-color:#842029}html[data-netbox-color-mode=dark] .btn-red-800{color:#fff;background-color:#58151c;border-color:#58151c}html[data-netbox-color-mode=dark] .btn-red-800:hover{color:#fff;background-color:#4b1218;border-color:#461116}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-red-800,html[data-netbox-color-mode=dark] .btn-red-800:focus{color:#fff;background-color:#4b1218;border-color:#461116;box-shadow:0 0 0 .25rem #71383e80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-red-800,.btn-check:active+html[data-netbox-color-mode=dark] .btn-red-800,html[data-netbox-color-mode=dark] .btn-red-800:active,html[data-netbox-color-mode=dark] .btn-red-800.active,.show>html[data-netbox-color-mode=dark] .btn-red-800.dropdown-toggle{color:#fff;background-color:#461116;border-color:#421015}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-red-800:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-red-800:focus,html[data-netbox-color-mode=dark] .btn-red-800:active:focus,html[data-netbox-color-mode=dark] .btn-red-800.active:focus,.show>html[data-netbox-color-mode=dark] .btn-red-800.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #71383e80}html[data-netbox-color-mode=dark] .btn-red-800:disabled,html[data-netbox-color-mode=dark] .btn-red-800.disabled{color:#fff;background-color:#58151c;border-color:#58151c}html[data-netbox-color-mode=dark] .btn-red-900{color:#fff;background-color:#2c0b0e;border-color:#2c0b0e}html[data-netbox-color-mode=dark] .btn-red-900:hover{color:#fff;background-color:#25090c;border-color:#23090b}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-red-900,html[data-netbox-color-mode=dark] .btn-red-900:focus{color:#fff;background-color:#25090c;border-color:#23090b;box-shadow:0 0 0 .25rem #4c303280}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-red-900,.btn-check:active+html[data-netbox-color-mode=dark] .btn-red-900,html[data-netbox-color-mode=dark] .btn-red-900:active,html[data-netbox-color-mode=dark] .btn-red-900.active,.show>html[data-netbox-color-mode=dark] .btn-red-900.dropdown-toggle{color:#fff;background-color:#23090b;border-color:#21080b}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-red-900:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-red-900:focus,html[data-netbox-color-mode=dark] .btn-red-900:active:focus,html[data-netbox-color-mode=dark] .btn-red-900.active:focus,.show>html[data-netbox-color-mode=dark] .btn-red-900.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #4c303280}html[data-netbox-color-mode=dark] .btn-red-900:disabled,html[data-netbox-color-mode=dark] .btn-red-900.disabled{color:#fff;background-color:#2c0b0e;border-color:#2c0b0e}html[data-netbox-color-mode=dark] .btn-yellow-100{color:#000;background-color:#fff3cd;border-color:#fff3cd}html[data-netbox-color-mode=dark] .btn-yellow-100:hover{color:#000;background-color:#fff5d5;border-color:#fff4d2}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-yellow-100,html[data-netbox-color-mode=dark] .btn-yellow-100:focus{color:#000;background-color:#fff5d5;border-color:#fff4d2;box-shadow:0 0 0 .25rem #d9cfae80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-yellow-100,.btn-check:active+html[data-netbox-color-mode=dark] .btn-yellow-100,html[data-netbox-color-mode=dark] .btn-yellow-100:active,html[data-netbox-color-mode=dark] .btn-yellow-100.active,.show>html[data-netbox-color-mode=dark] .btn-yellow-100.dropdown-toggle{color:#000;background-color:#fff5d7;border-color:#fff4d2}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-yellow-100:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-yellow-100:focus,html[data-netbox-color-mode=dark] .btn-yellow-100:active:focus,html[data-netbox-color-mode=dark] .btn-yellow-100.active:focus,.show>html[data-netbox-color-mode=dark] .btn-yellow-100.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #d9cfae80}html[data-netbox-color-mode=dark] .btn-yellow-100:disabled,html[data-netbox-color-mode=dark] .btn-yellow-100.disabled{color:#000;background-color:#fff3cd;border-color:#fff3cd}html[data-netbox-color-mode=dark] .btn-yellow-200{color:#000;background-color:#ffe69c;border-color:#ffe69c}html[data-netbox-color-mode=dark] .btn-yellow-200:hover{color:#000;background-color:#ffeaab;border-color:#ffe9a6}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-yellow-200,html[data-netbox-color-mode=dark] .btn-yellow-200:focus{color:#000;background-color:#ffeaab;border-color:#ffe9a6;box-shadow:0 0 0 .25rem #d9c48580}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-yellow-200,.btn-check:active+html[data-netbox-color-mode=dark] .btn-yellow-200,html[data-netbox-color-mode=dark] .btn-yellow-200:active,html[data-netbox-color-mode=dark] .btn-yellow-200.active,.show>html[data-netbox-color-mode=dark] .btn-yellow-200.dropdown-toggle{color:#000;background-color:#ffebb0;border-color:#ffe9a6}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-yellow-200:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-yellow-200:focus,html[data-netbox-color-mode=dark] .btn-yellow-200:active:focus,html[data-netbox-color-mode=dark] .btn-yellow-200.active:focus,.show>html[data-netbox-color-mode=dark] .btn-yellow-200.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #d9c48580}html[data-netbox-color-mode=dark] .btn-yellow-200:disabled,html[data-netbox-color-mode=dark] .btn-yellow-200.disabled{color:#000;background-color:#ffe69c;border-color:#ffe69c}html[data-netbox-color-mode=dark] .btn-yellow-300{color:#000;background-color:#ffda6a;border-color:#ffda6a}html[data-netbox-color-mode=dark] .btn-yellow-300:hover{color:#000;background-color:#ffe080;border-color:#ffde79}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-yellow-300,html[data-netbox-color-mode=dark] .btn-yellow-300:focus{color:#000;background-color:#ffe080;border-color:#ffde79;box-shadow:0 0 0 .25rem #d9b95a80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-yellow-300,.btn-check:active+html[data-netbox-color-mode=dark] .btn-yellow-300,html[data-netbox-color-mode=dark] .btn-yellow-300:active,html[data-netbox-color-mode=dark] .btn-yellow-300.active,.show>html[data-netbox-color-mode=dark] .btn-yellow-300.dropdown-toggle{color:#000;background-color:#ffe188;border-color:#ffde79}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-yellow-300:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-yellow-300:focus,html[data-netbox-color-mode=dark] .btn-yellow-300:active:focus,html[data-netbox-color-mode=dark] .btn-yellow-300.active:focus,.show>html[data-netbox-color-mode=dark] .btn-yellow-300.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #d9b95a80}html[data-netbox-color-mode=dark] .btn-yellow-300:disabled,html[data-netbox-color-mode=dark] .btn-yellow-300.disabled{color:#000;background-color:#ffda6a;border-color:#ffda6a}html[data-netbox-color-mode=dark] .btn-yellow-400{color:#000;background-color:#ffcd39;border-color:#ffcd39}html[data-netbox-color-mode=dark] .btn-yellow-400:hover{color:#000;background-color:#ffd557;border-color:#ffd24d}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-yellow-400,html[data-netbox-color-mode=dark] .btn-yellow-400:focus{color:#000;background-color:#ffd557;border-color:#ffd24d;box-shadow:0 0 0 .25rem #d9ae3080}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-yellow-400,.btn-check:active+html[data-netbox-color-mode=dark] .btn-yellow-400,html[data-netbox-color-mode=dark] .btn-yellow-400:active,html[data-netbox-color-mode=dark] .btn-yellow-400.active,.show>html[data-netbox-color-mode=dark] .btn-yellow-400.dropdown-toggle{color:#000;background-color:#ffd761;border-color:#ffd24d}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-yellow-400:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-yellow-400:focus,html[data-netbox-color-mode=dark] .btn-yellow-400:active:focus,html[data-netbox-color-mode=dark] .btn-yellow-400.active:focus,.show>html[data-netbox-color-mode=dark] .btn-yellow-400.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #d9ae3080}html[data-netbox-color-mode=dark] .btn-yellow-400:disabled,html[data-netbox-color-mode=dark] .btn-yellow-400.disabled{color:#000;background-color:#ffcd39;border-color:#ffcd39}html[data-netbox-color-mode=dark] .btn-yellow-500{color:#000;background-color:#ffc107;border-color:#ffc107}html[data-netbox-color-mode=dark] .btn-yellow-500:hover{color:#000;background-color:#ffca2c;border-color:#ffc720}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-yellow-500,html[data-netbox-color-mode=dark] .btn-yellow-500:focus{color:#000;background-color:#ffca2c;border-color:#ffc720;box-shadow:0 0 0 .25rem #d9a40680}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-yellow-500,.btn-check:active+html[data-netbox-color-mode=dark] .btn-yellow-500,html[data-netbox-color-mode=dark] .btn-yellow-500:active,html[data-netbox-color-mode=dark] .btn-yellow-500.active,.show>html[data-netbox-color-mode=dark] .btn-yellow-500.dropdown-toggle{color:#000;background-color:#ffcd39;border-color:#ffc720}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-yellow-500:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-yellow-500:focus,html[data-netbox-color-mode=dark] .btn-yellow-500:active:focus,html[data-netbox-color-mode=dark] .btn-yellow-500.active:focus,.show>html[data-netbox-color-mode=dark] .btn-yellow-500.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #d9a40680}html[data-netbox-color-mode=dark] .btn-yellow-500:disabled,html[data-netbox-color-mode=dark] .btn-yellow-500.disabled{color:#000;background-color:#ffc107;border-color:#ffc107}html[data-netbox-color-mode=dark] .btn-yellow-600{color:#000;background-color:#cc9a06;border-color:#cc9a06}html[data-netbox-color-mode=dark] .btn-yellow-600:hover{color:#000;background-color:#d4a92b;border-color:#d1a41f}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-yellow-600,html[data-netbox-color-mode=dark] .btn-yellow-600:focus{color:#000;background-color:#d4a92b;border-color:#d1a41f;box-shadow:0 0 0 .25rem #ad830580}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-yellow-600,.btn-check:active+html[data-netbox-color-mode=dark] .btn-yellow-600,html[data-netbox-color-mode=dark] .btn-yellow-600:active,html[data-netbox-color-mode=dark] .btn-yellow-600.active,.show>html[data-netbox-color-mode=dark] .btn-yellow-600.dropdown-toggle{color:#000;background-color:#d6ae38;border-color:#d1a41f}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-yellow-600:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-yellow-600:focus,html[data-netbox-color-mode=dark] .btn-yellow-600:active:focus,html[data-netbox-color-mode=dark] .btn-yellow-600.active:focus,.show>html[data-netbox-color-mode=dark] .btn-yellow-600.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #ad830580}html[data-netbox-color-mode=dark] .btn-yellow-600:disabled,html[data-netbox-color-mode=dark] .btn-yellow-600.disabled{color:#000;background-color:#cc9a06;border-color:#cc9a06}html[data-netbox-color-mode=dark] .btn-yellow-700{color:#000;background-color:#997404;border-color:#997404}html[data-netbox-color-mode=dark] .btn-yellow-700:hover{color:#000;background-color:#a8892a;border-color:#a3821d}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-yellow-700,html[data-netbox-color-mode=dark] .btn-yellow-700:focus{color:#000;background-color:#a8892a;border-color:#a3821d;box-shadow:0 0 0 .25rem #82630380}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-yellow-700,.btn-check:active+html[data-netbox-color-mode=dark] .btn-yellow-700,html[data-netbox-color-mode=dark] .btn-yellow-700:active,html[data-netbox-color-mode=dark] .btn-yellow-700.active,.show>html[data-netbox-color-mode=dark] .btn-yellow-700.dropdown-toggle{color:#000;background-color:#ad9036;border-color:#a3821d}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-yellow-700:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-yellow-700:focus,html[data-netbox-color-mode=dark] .btn-yellow-700:active:focus,html[data-netbox-color-mode=dark] .btn-yellow-700.active:focus,.show>html[data-netbox-color-mode=dark] .btn-yellow-700.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #82630380}html[data-netbox-color-mode=dark] .btn-yellow-700:disabled,html[data-netbox-color-mode=dark] .btn-yellow-700.disabled{color:#000;background-color:#997404;border-color:#997404}html[data-netbox-color-mode=dark] .btn-yellow-800{color:#fff;background-color:#664d03;border-color:#664d03}html[data-netbox-color-mode=dark] .btn-yellow-800:hover{color:#fff;background-color:#574103;border-color:#523e02}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-yellow-800,html[data-netbox-color-mode=dark] .btn-yellow-800:focus{color:#fff;background-color:#574103;border-color:#523e02;box-shadow:0 0 0 .25rem #7d682980}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-yellow-800,.btn-check:active+html[data-netbox-color-mode=dark] .btn-yellow-800,html[data-netbox-color-mode=dark] .btn-yellow-800:active,html[data-netbox-color-mode=dark] .btn-yellow-800.active,.show>html[data-netbox-color-mode=dark] .btn-yellow-800.dropdown-toggle{color:#fff;background-color:#523e02;border-color:#4d3a02}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-yellow-800:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-yellow-800:focus,html[data-netbox-color-mode=dark] .btn-yellow-800:active:focus,html[data-netbox-color-mode=dark] .btn-yellow-800.active:focus,.show>html[data-netbox-color-mode=dark] .btn-yellow-800.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #7d682980}html[data-netbox-color-mode=dark] .btn-yellow-800:disabled,html[data-netbox-color-mode=dark] .btn-yellow-800.disabled{color:#fff;background-color:#664d03;border-color:#664d03}html[data-netbox-color-mode=dark] .btn-yellow-900{color:#fff;background-color:#332701;border-color:#332701}html[data-netbox-color-mode=dark] .btn-yellow-900:hover{color:#fff;background-color:#2b2101;border-color:#291f01}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-yellow-900,html[data-netbox-color-mode=dark] .btn-yellow-900:focus{color:#fff;background-color:#2b2101;border-color:#291f01;box-shadow:0 0 0 .25rem #52472780}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-yellow-900,.btn-check:active+html[data-netbox-color-mode=dark] .btn-yellow-900,html[data-netbox-color-mode=dark] .btn-yellow-900:active,html[data-netbox-color-mode=dark] .btn-yellow-900.active,.show>html[data-netbox-color-mode=dark] .btn-yellow-900.dropdown-toggle{color:#fff;background-color:#291f01;border-color:#261d01}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-yellow-900:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-yellow-900:focus,html[data-netbox-color-mode=dark] .btn-yellow-900:active:focus,html[data-netbox-color-mode=dark] .btn-yellow-900.active:focus,.show>html[data-netbox-color-mode=dark] .btn-yellow-900.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #52472780}html[data-netbox-color-mode=dark] .btn-yellow-900:disabled,html[data-netbox-color-mode=dark] .btn-yellow-900.disabled{color:#fff;background-color:#332701;border-color:#332701}html[data-netbox-color-mode=dark] .btn-green-100{color:#000;background-color:#d1e7dd;border-color:#d1e7dd}html[data-netbox-color-mode=dark] .btn-green-100:hover{color:#000;background-color:#d8ebe2;border-color:#d6e9e0}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-green-100,html[data-netbox-color-mode=dark] .btn-green-100:focus{color:#000;background-color:#d8ebe2;border-color:#d6e9e0;box-shadow:0 0 0 .25rem #b2c4bc80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-green-100,.btn-check:active+html[data-netbox-color-mode=dark] .btn-green-100,html[data-netbox-color-mode=dark] .btn-green-100:active,html[data-netbox-color-mode=dark] .btn-green-100.active,.show>html[data-netbox-color-mode=dark] .btn-green-100.dropdown-toggle{color:#000;background-color:#daece4;border-color:#d6e9e0}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-green-100:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-green-100:focus,html[data-netbox-color-mode=dark] .btn-green-100:active:focus,html[data-netbox-color-mode=dark] .btn-green-100.active:focus,.show>html[data-netbox-color-mode=dark] .btn-green-100.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #b2c4bc80}html[data-netbox-color-mode=dark] .btn-green-100:disabled,html[data-netbox-color-mode=dark] .btn-green-100.disabled{color:#000;background-color:#d1e7dd;border-color:#d1e7dd}html[data-netbox-color-mode=dark] .btn-green-200{color:#000;background-color:#a3cfbb;border-color:#a3cfbb}html[data-netbox-color-mode=dark] .btn-green-200:hover{color:#000;background-color:#b1d6c5;border-color:#acd4c2}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-green-200,html[data-netbox-color-mode=dark] .btn-green-200:focus{color:#000;background-color:#b1d6c5;border-color:#acd4c2;box-shadow:0 0 0 .25rem #8bb09f80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-green-200,.btn-check:active+html[data-netbox-color-mode=dark] .btn-green-200,html[data-netbox-color-mode=dark] .btn-green-200:active,html[data-netbox-color-mode=dark] .btn-green-200.active,.show>html[data-netbox-color-mode=dark] .btn-green-200.dropdown-toggle{color:#000;background-color:#b5d9c9;border-color:#acd4c2}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-green-200:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-green-200:focus,html[data-netbox-color-mode=dark] .btn-green-200:active:focus,html[data-netbox-color-mode=dark] .btn-green-200.active:focus,.show>html[data-netbox-color-mode=dark] .btn-green-200.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #8bb09f80}html[data-netbox-color-mode=dark] .btn-green-200:disabled,html[data-netbox-color-mode=dark] .btn-green-200.disabled{color:#000;background-color:#a3cfbb;border-color:#a3cfbb}html[data-netbox-color-mode=dark] .btn-green-300{color:#000;background-color:#75b798;border-color:#75b798}html[data-netbox-color-mode=dark] .btn-green-300:hover{color:#000;background-color:#8ac2a7;border-color:#83bea2}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-green-300,html[data-netbox-color-mode=dark] .btn-green-300:focus{color:#000;background-color:#8ac2a7;border-color:#83bea2;box-shadow:0 0 0 .25rem #639c8180}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-green-300,.btn-check:active+html[data-netbox-color-mode=dark] .btn-green-300,html[data-netbox-color-mode=dark] .btn-green-300:active,html[data-netbox-color-mode=dark] .btn-green-300.active,.show>html[data-netbox-color-mode=dark] .btn-green-300.dropdown-toggle{color:#000;background-color:#91c5ad;border-color:#83bea2}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-green-300:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-green-300:focus,html[data-netbox-color-mode=dark] .btn-green-300:active:focus,html[data-netbox-color-mode=dark] .btn-green-300.active:focus,.show>html[data-netbox-color-mode=dark] .btn-green-300.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #639c8180}html[data-netbox-color-mode=dark] .btn-green-300:disabled,html[data-netbox-color-mode=dark] .btn-green-300.disabled{color:#000;background-color:#75b798;border-color:#75b798}html[data-netbox-color-mode=dark] .btn-green-400{color:#000;background-color:#479f76;border-color:#479f76}html[data-netbox-color-mode=dark] .btn-green-400:hover{color:#000;background-color:#63ad8b;border-color:#59a984}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-green-400,html[data-netbox-color-mode=dark] .btn-green-400:focus{color:#000;background-color:#63ad8b;border-color:#59a984;box-shadow:0 0 0 .25rem #3c876480}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-green-400,.btn-check:active+html[data-netbox-color-mode=dark] .btn-green-400,html[data-netbox-color-mode=dark] .btn-green-400:active,html[data-netbox-color-mode=dark] .btn-green-400.active,.show>html[data-netbox-color-mode=dark] .btn-green-400.dropdown-toggle{color:#000;background-color:#6cb291;border-color:#59a984}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-green-400:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-green-400:focus,html[data-netbox-color-mode=dark] .btn-green-400:active:focus,html[data-netbox-color-mode=dark] .btn-green-400.active:focus,.show>html[data-netbox-color-mode=dark] .btn-green-400.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #3c876480}html[data-netbox-color-mode=dark] .btn-green-400:disabled,html[data-netbox-color-mode=dark] .btn-green-400.disabled{color:#000;background-color:#479f76;border-color:#479f76}html[data-netbox-color-mode=dark] .btn-green-500{color:#fff;background-color:#198754;border-color:#198754}html[data-netbox-color-mode=dark] .btn-green-500:hover{color:#fff;background-color:#157347;border-color:#146c43}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-green-500,html[data-netbox-color-mode=dark] .btn-green-500:focus{color:#fff;background-color:#157347;border-color:#146c43;box-shadow:0 0 0 .25rem #3c996e80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-green-500,.btn-check:active+html[data-netbox-color-mode=dark] .btn-green-500,html[data-netbox-color-mode=dark] .btn-green-500:active,html[data-netbox-color-mode=dark] .btn-green-500.active,.show>html[data-netbox-color-mode=dark] .btn-green-500.dropdown-toggle{color:#fff;background-color:#146c43;border-color:#13653f}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-green-500:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-green-500:focus,html[data-netbox-color-mode=dark] .btn-green-500:active:focus,html[data-netbox-color-mode=dark] .btn-green-500.active:focus,.show>html[data-netbox-color-mode=dark] .btn-green-500.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #3c996e80}html[data-netbox-color-mode=dark] .btn-green-500:disabled,html[data-netbox-color-mode=dark] .btn-green-500.disabled{color:#fff;background-color:#198754;border-color:#198754}html[data-netbox-color-mode=dark] .btn-green-600{color:#fff;background-color:#146c43;border-color:#146c43}html[data-netbox-color-mode=dark] .btn-green-600:hover{color:#fff;background-color:#115c39;border-color:#105636}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-green-600,html[data-netbox-color-mode=dark] .btn-green-600:focus{color:#fff;background-color:#115c39;border-color:#105636;box-shadow:0 0 0 .25rem #37825f80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-green-600,.btn-check:active+html[data-netbox-color-mode=dark] .btn-green-600,html[data-netbox-color-mode=dark] .btn-green-600:active,html[data-netbox-color-mode=dark] .btn-green-600.active,.show>html[data-netbox-color-mode=dark] .btn-green-600.dropdown-toggle{color:#fff;background-color:#105636;border-color:#0f5132}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-green-600:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-green-600:focus,html[data-netbox-color-mode=dark] .btn-green-600:active:focus,html[data-netbox-color-mode=dark] .btn-green-600.active:focus,.show>html[data-netbox-color-mode=dark] .btn-green-600.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #37825f80}html[data-netbox-color-mode=dark] .btn-green-600:disabled,html[data-netbox-color-mode=dark] .btn-green-600.disabled{color:#fff;background-color:#146c43;border-color:#146c43}html[data-netbox-color-mode=dark] .btn-green-700{color:#fff;background-color:#0f5132;border-color:#0f5132}html[data-netbox-color-mode=dark] .btn-green-700:hover{color:#fff;background-color:#0d452b;border-color:#0c4128}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-green-700,html[data-netbox-color-mode=dark] .btn-green-700:focus{color:#fff;background-color:#0d452b;border-color:#0c4128;box-shadow:0 0 0 .25rem #336b5180}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-green-700,.btn-check:active+html[data-netbox-color-mode=dark] .btn-green-700,html[data-netbox-color-mode=dark] .btn-green-700:active,html[data-netbox-color-mode=dark] .btn-green-700.active,.show>html[data-netbox-color-mode=dark] .btn-green-700.dropdown-toggle{color:#fff;background-color:#0c4128;border-color:#0b3d26}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-green-700:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-green-700:focus,html[data-netbox-color-mode=dark] .btn-green-700:active:focus,html[data-netbox-color-mode=dark] .btn-green-700.active:focus,.show>html[data-netbox-color-mode=dark] .btn-green-700.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #336b5180}html[data-netbox-color-mode=dark] .btn-green-700:disabled,html[data-netbox-color-mode=dark] .btn-green-700.disabled{color:#fff;background-color:#0f5132;border-color:#0f5132}html[data-netbox-color-mode=dark] .btn-green-800{color:#fff;background-color:#0a3622;border-color:#0a3622}html[data-netbox-color-mode=dark] .btn-green-800:hover{color:#fff;background-color:#092e1d;border-color:#082b1b}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-green-800,html[data-netbox-color-mode=dark] .btn-green-800:focus{color:#fff;background-color:#092e1d;border-color:#082b1b;box-shadow:0 0 0 .25rem #2f544380}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-green-800,.btn-check:active+html[data-netbox-color-mode=dark] .btn-green-800,html[data-netbox-color-mode=dark] .btn-green-800:active,html[data-netbox-color-mode=dark] .btn-green-800.active,.show>html[data-netbox-color-mode=dark] .btn-green-800.dropdown-toggle{color:#fff;background-color:#082b1b;border-color:#08291a}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-green-800:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-green-800:focus,html[data-netbox-color-mode=dark] .btn-green-800:active:focus,html[data-netbox-color-mode=dark] .btn-green-800.active:focus,.show>html[data-netbox-color-mode=dark] .btn-green-800.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #2f544380}html[data-netbox-color-mode=dark] .btn-green-800:disabled,html[data-netbox-color-mode=dark] .btn-green-800.disabled{color:#fff;background-color:#0a3622;border-color:#0a3622}html[data-netbox-color-mode=dark] .btn-green-900{color:#fff;background-color:#051b11;border-color:#051b11}html[data-netbox-color-mode=dark] .btn-green-900:hover{color:#fff;background-color:#04170e;border-color:#04160e}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-green-900,html[data-netbox-color-mode=dark] .btn-green-900:focus{color:#fff;background-color:#04170e;border-color:#04160e;box-shadow:0 0 0 .25rem #2b3d3580}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-green-900,.btn-check:active+html[data-netbox-color-mode=dark] .btn-green-900,html[data-netbox-color-mode=dark] .btn-green-900:active,html[data-netbox-color-mode=dark] .btn-green-900.active,.show>html[data-netbox-color-mode=dark] .btn-green-900.dropdown-toggle{color:#fff;background-color:#04160e;border-color:#04140d}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-green-900:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-green-900:focus,html[data-netbox-color-mode=dark] .btn-green-900:active:focus,html[data-netbox-color-mode=dark] .btn-green-900.active:focus,.show>html[data-netbox-color-mode=dark] .btn-green-900.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #2b3d3580}html[data-netbox-color-mode=dark] .btn-green-900:disabled,html[data-netbox-color-mode=dark] .btn-green-900.disabled{color:#fff;background-color:#051b11;border-color:#051b11}html[data-netbox-color-mode=dark] .btn-blue-100{color:#000;background-color:#cfe2ff;border-color:#cfe2ff}html[data-netbox-color-mode=dark] .btn-blue-100:hover{color:#000;background-color:#d6e6ff;border-color:#d4e5ff}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-blue-100,html[data-netbox-color-mode=dark] .btn-blue-100:focus{color:#000;background-color:#d6e6ff;border-color:#d4e5ff;box-shadow:0 0 0 .25rem #b0c0d980}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-blue-100,.btn-check:active+html[data-netbox-color-mode=dark] .btn-blue-100,html[data-netbox-color-mode=dark] .btn-blue-100:active,html[data-netbox-color-mode=dark] .btn-blue-100.active,.show>html[data-netbox-color-mode=dark] .btn-blue-100.dropdown-toggle{color:#000;background-color:#d9e8ff;border-color:#d4e5ff}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-blue-100:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-blue-100:focus,html[data-netbox-color-mode=dark] .btn-blue-100:active:focus,html[data-netbox-color-mode=dark] .btn-blue-100.active:focus,.show>html[data-netbox-color-mode=dark] .btn-blue-100.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #b0c0d980}html[data-netbox-color-mode=dark] .btn-blue-100:disabled,html[data-netbox-color-mode=dark] .btn-blue-100.disabled{color:#000;background-color:#cfe2ff;border-color:#cfe2ff}html[data-netbox-color-mode=dark] .btn-blue-200{color:#000;background-color:#9ec5fe;border-color:#9ec5fe}html[data-netbox-color-mode=dark] .btn-blue-200:hover{color:#000;background-color:#adcefe;border-color:#a8cbfe}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-blue-200,html[data-netbox-color-mode=dark] .btn-blue-200:focus{color:#000;background-color:#adcefe;border-color:#a8cbfe;box-shadow:0 0 0 .25rem #86a7d880}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-blue-200,.btn-check:active+html[data-netbox-color-mode=dark] .btn-blue-200,html[data-netbox-color-mode=dark] .btn-blue-200:active,html[data-netbox-color-mode=dark] .btn-blue-200.active,.show>html[data-netbox-color-mode=dark] .btn-blue-200.dropdown-toggle{color:#000;background-color:#b1d1fe;border-color:#a8cbfe}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-blue-200:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-blue-200:focus,html[data-netbox-color-mode=dark] .btn-blue-200:active:focus,html[data-netbox-color-mode=dark] .btn-blue-200.active:focus,.show>html[data-netbox-color-mode=dark] .btn-blue-200.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #86a7d880}html[data-netbox-color-mode=dark] .btn-blue-200:disabled,html[data-netbox-color-mode=dark] .btn-blue-200.disabled{color:#000;background-color:#9ec5fe;border-color:#9ec5fe}html[data-netbox-color-mode=dark] .btn-blue-300{color:#000;background-color:#6ea8fe;border-color:#6ea8fe}html[data-netbox-color-mode=dark] .btn-blue-300:hover{color:#000;background-color:#84b5fe;border-color:#7db1fe}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-blue-300,html[data-netbox-color-mode=dark] .btn-blue-300:focus{color:#000;background-color:#84b5fe;border-color:#7db1fe;box-shadow:0 0 0 .25rem #5e8fd880}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-blue-300,.btn-check:active+html[data-netbox-color-mode=dark] .btn-blue-300,html[data-netbox-color-mode=dark] .btn-blue-300:active,html[data-netbox-color-mode=dark] .btn-blue-300.active,.show>html[data-netbox-color-mode=dark] .btn-blue-300.dropdown-toggle{color:#000;background-color:#8bb9fe;border-color:#7db1fe}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-blue-300:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-blue-300:focus,html[data-netbox-color-mode=dark] .btn-blue-300:active:focus,html[data-netbox-color-mode=dark] .btn-blue-300.active:focus,.show>html[data-netbox-color-mode=dark] .btn-blue-300.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #5e8fd880}html[data-netbox-color-mode=dark] .btn-blue-300:disabled,html[data-netbox-color-mode=dark] .btn-blue-300.disabled{color:#000;background-color:#6ea8fe;border-color:#6ea8fe}html[data-netbox-color-mode=dark] .btn-blue-400{color:#000;background-color:#3d8bfd;border-color:#3d8bfd}html[data-netbox-color-mode=dark] .btn-blue-400:hover{color:#000;background-color:#5a9cfd;border-color:#5097fd}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-blue-400,html[data-netbox-color-mode=dark] .btn-blue-400:focus{color:#000;background-color:#5a9cfd;border-color:#5097fd;box-shadow:0 0 0 .25rem #3476d780}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-blue-400,.btn-check:active+html[data-netbox-color-mode=dark] .btn-blue-400,html[data-netbox-color-mode=dark] .btn-blue-400:active,html[data-netbox-color-mode=dark] .btn-blue-400.active,.show>html[data-netbox-color-mode=dark] .btn-blue-400.dropdown-toggle{color:#000;background-color:#64a2fd;border-color:#5097fd}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-blue-400:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-blue-400:focus,html[data-netbox-color-mode=dark] .btn-blue-400:active:focus,html[data-netbox-color-mode=dark] .btn-blue-400.active:focus,.show>html[data-netbox-color-mode=dark] .btn-blue-400.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #3476d780}html[data-netbox-color-mode=dark] .btn-blue-400:disabled,html[data-netbox-color-mode=dark] .btn-blue-400.disabled{color:#000;background-color:#3d8bfd;border-color:#3d8bfd}html[data-netbox-color-mode=dark] .btn-blue-500{color:#fff;background-color:#0d6efd;border-color:#0d6efd}html[data-netbox-color-mode=dark] .btn-blue-500:hover{color:#fff;background-color:#0b5ed7;border-color:#0a58ca}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-blue-500,html[data-netbox-color-mode=dark] .btn-blue-500:focus{color:#fff;background-color:#0b5ed7;border-color:#0a58ca;box-shadow:0 0 0 .25rem #3184fd80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-blue-500,.btn-check:active+html[data-netbox-color-mode=dark] .btn-blue-500,html[data-netbox-color-mode=dark] .btn-blue-500:active,html[data-netbox-color-mode=dark] .btn-blue-500.active,.show>html[data-netbox-color-mode=dark] .btn-blue-500.dropdown-toggle{color:#fff;background-color:#0a58ca;border-color:#0a53be}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-blue-500:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-blue-500:focus,html[data-netbox-color-mode=dark] .btn-blue-500:active:focus,html[data-netbox-color-mode=dark] .btn-blue-500.active:focus,.show>html[data-netbox-color-mode=dark] .btn-blue-500.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #3184fd80}html[data-netbox-color-mode=dark] .btn-blue-500:disabled,html[data-netbox-color-mode=dark] .btn-blue-500.disabled{color:#fff;background-color:#0d6efd;border-color:#0d6efd}html[data-netbox-color-mode=dark] .btn-blue-600{color:#fff;background-color:#0a58ca;border-color:#0a58ca}html[data-netbox-color-mode=dark] .btn-blue-600:hover{color:#fff;background-color:#094bac;border-color:#0846a2}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-blue-600,html[data-netbox-color-mode=dark] .btn-blue-600:focus{color:#fff;background-color:#094bac;border-color:#0846a2;box-shadow:0 0 0 .25rem #2f71d280}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-blue-600,.btn-check:active+html[data-netbox-color-mode=dark] .btn-blue-600,html[data-netbox-color-mode=dark] .btn-blue-600:active,html[data-netbox-color-mode=dark] .btn-blue-600.active,.show>html[data-netbox-color-mode=dark] .btn-blue-600.dropdown-toggle{color:#fff;background-color:#0846a2;border-color:#084298}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-blue-600:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-blue-600:focus,html[data-netbox-color-mode=dark] .btn-blue-600:active:focus,html[data-netbox-color-mode=dark] .btn-blue-600.active:focus,.show>html[data-netbox-color-mode=dark] .btn-blue-600.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #2f71d280}html[data-netbox-color-mode=dark] .btn-blue-600:disabled,html[data-netbox-color-mode=dark] .btn-blue-600.disabled{color:#fff;background-color:#0a58ca;border-color:#0a58ca}html[data-netbox-color-mode=dark] .btn-blue-700{color:#fff;background-color:#084298;border-color:#084298}html[data-netbox-color-mode=dark] .btn-blue-700:hover{color:#fff;background-color:#073881;border-color:#06357a}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-blue-700,html[data-netbox-color-mode=dark] .btn-blue-700:focus{color:#fff;background-color:#073881;border-color:#06357a;box-shadow:0 0 0 .25rem #2d5ea780}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-blue-700,.btn-check:active+html[data-netbox-color-mode=dark] .btn-blue-700,html[data-netbox-color-mode=dark] .btn-blue-700:active,html[data-netbox-color-mode=dark] .btn-blue-700.active,.show>html[data-netbox-color-mode=dark] .btn-blue-700.dropdown-toggle{color:#fff;background-color:#06357a;border-color:#063272}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-blue-700:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-blue-700:focus,html[data-netbox-color-mode=dark] .btn-blue-700:active:focus,html[data-netbox-color-mode=dark] .btn-blue-700.active:focus,.show>html[data-netbox-color-mode=dark] .btn-blue-700.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #2d5ea780}html[data-netbox-color-mode=dark] .btn-blue-700:disabled,html[data-netbox-color-mode=dark] .btn-blue-700.disabled{color:#fff;background-color:#084298;border-color:#084298}html[data-netbox-color-mode=dark] .btn-blue-800{color:#fff;background-color:#052c65;border-color:#052c65}html[data-netbox-color-mode=dark] .btn-blue-800:hover{color:#fff;background-color:#042556;border-color:#042351}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-blue-800,html[data-netbox-color-mode=dark] .btn-blue-800:focus{color:#fff;background-color:#042556;border-color:#042351;box-shadow:0 0 0 .25rem #2b4c7c80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-blue-800,.btn-check:active+html[data-netbox-color-mode=dark] .btn-blue-800,html[data-netbox-color-mode=dark] .btn-blue-800:active,html[data-netbox-color-mode=dark] .btn-blue-800.active,.show>html[data-netbox-color-mode=dark] .btn-blue-800.dropdown-toggle{color:#fff;background-color:#042351;border-color:#04214c}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-blue-800:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-blue-800:focus,html[data-netbox-color-mode=dark] .btn-blue-800:active:focus,html[data-netbox-color-mode=dark] .btn-blue-800.active:focus,.show>html[data-netbox-color-mode=dark] .btn-blue-800.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #2b4c7c80}html[data-netbox-color-mode=dark] .btn-blue-800:disabled,html[data-netbox-color-mode=dark] .btn-blue-800.disabled{color:#fff;background-color:#052c65;border-color:#052c65}html[data-netbox-color-mode=dark] .btn-blue-900{color:#fff;background-color:#031633;border-color:#031633}html[data-netbox-color-mode=dark] .btn-blue-900:hover{color:#fff;background-color:#03132b;border-color:#021229}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-blue-900,html[data-netbox-color-mode=dark] .btn-blue-900:focus{color:#fff;background-color:#03132b;border-color:#021229;box-shadow:0 0 0 .25rem #29395280}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-blue-900,.btn-check:active+html[data-netbox-color-mode=dark] .btn-blue-900,html[data-netbox-color-mode=dark] .btn-blue-900:active,html[data-netbox-color-mode=dark] .btn-blue-900.active,.show>html[data-netbox-color-mode=dark] .btn-blue-900.dropdown-toggle{color:#fff;background-color:#021229;border-color:#021126}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-blue-900:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-blue-900:focus,html[data-netbox-color-mode=dark] .btn-blue-900:active:focus,html[data-netbox-color-mode=dark] .btn-blue-900.active:focus,.show>html[data-netbox-color-mode=dark] .btn-blue-900.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #29395280}html[data-netbox-color-mode=dark] .btn-blue-900:disabled,html[data-netbox-color-mode=dark] .btn-blue-900.disabled{color:#fff;background-color:#031633;border-color:#031633}html[data-netbox-color-mode=dark] .btn-cyan-100{color:#000;background-color:#cff4fc;border-color:#cff4fc}html[data-netbox-color-mode=dark] .btn-cyan-100:hover{color:#000;background-color:#d6f6fc;border-color:#d4f5fc}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-cyan-100,html[data-netbox-color-mode=dark] .btn-cyan-100:focus{color:#000;background-color:#d6f6fc;border-color:#d4f5fc;box-shadow:0 0 0 .25rem #b0cfd680}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-cyan-100,.btn-check:active+html[data-netbox-color-mode=dark] .btn-cyan-100,html[data-netbox-color-mode=dark] .btn-cyan-100:active,html[data-netbox-color-mode=dark] .btn-cyan-100.active,.show>html[data-netbox-color-mode=dark] .btn-cyan-100.dropdown-toggle{color:#000;background-color:#d9f6fd;border-color:#d4f5fc}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-cyan-100:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-cyan-100:focus,html[data-netbox-color-mode=dark] .btn-cyan-100:active:focus,html[data-netbox-color-mode=dark] .btn-cyan-100.active:focus,.show>html[data-netbox-color-mode=dark] .btn-cyan-100.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #b0cfd680}html[data-netbox-color-mode=dark] .btn-cyan-100:disabled,html[data-netbox-color-mode=dark] .btn-cyan-100.disabled{color:#000;background-color:#cff4fc;border-color:#cff4fc}html[data-netbox-color-mode=dark] .btn-cyan-200{color:#000;background-color:#9eeaf9;border-color:#9eeaf9}html[data-netbox-color-mode=dark] .btn-cyan-200:hover{color:#000;background-color:#adedfa;border-color:#a8ecfa}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-cyan-200,html[data-netbox-color-mode=dark] .btn-cyan-200:focus{color:#000;background-color:#adedfa;border-color:#a8ecfa;box-shadow:0 0 0 .25rem #86c7d480}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-cyan-200,.btn-check:active+html[data-netbox-color-mode=dark] .btn-cyan-200,html[data-netbox-color-mode=dark] .btn-cyan-200:active,html[data-netbox-color-mode=dark] .btn-cyan-200.active,.show>html[data-netbox-color-mode=dark] .btn-cyan-200.dropdown-toggle{color:#000;background-color:#b1eefa;border-color:#a8ecfa}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-cyan-200:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-cyan-200:focus,html[data-netbox-color-mode=dark] .btn-cyan-200:active:focus,html[data-netbox-color-mode=dark] .btn-cyan-200.active:focus,.show>html[data-netbox-color-mode=dark] .btn-cyan-200.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #86c7d480}html[data-netbox-color-mode=dark] .btn-cyan-200:disabled,html[data-netbox-color-mode=dark] .btn-cyan-200.disabled{color:#000;background-color:#9eeaf9;border-color:#9eeaf9}html[data-netbox-color-mode=dark] .btn-cyan-300{color:#000;background-color:#6edff6;border-color:#6edff6}html[data-netbox-color-mode=dark] .btn-cyan-300:hover{color:#000;background-color:#84e4f7;border-color:#7de2f7}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-cyan-300,html[data-netbox-color-mode=dark] .btn-cyan-300:focus{color:#000;background-color:#84e4f7;border-color:#7de2f7;box-shadow:0 0 0 .25rem #5ebed180}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-cyan-300,.btn-check:active+html[data-netbox-color-mode=dark] .btn-cyan-300,html[data-netbox-color-mode=dark] .btn-cyan-300:active,html[data-netbox-color-mode=dark] .btn-cyan-300.active,.show>html[data-netbox-color-mode=dark] .btn-cyan-300.dropdown-toggle{color:#000;background-color:#8be5f8;border-color:#7de2f7}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-cyan-300:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-cyan-300:focus,html[data-netbox-color-mode=dark] .btn-cyan-300:active:focus,html[data-netbox-color-mode=dark] .btn-cyan-300.active:focus,.show>html[data-netbox-color-mode=dark] .btn-cyan-300.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #5ebed180}html[data-netbox-color-mode=dark] .btn-cyan-300:disabled,html[data-netbox-color-mode=dark] .btn-cyan-300.disabled{color:#000;background-color:#6edff6;border-color:#6edff6}html[data-netbox-color-mode=dark] .btn-cyan-400{color:#000;background-color:#3dd5f3;border-color:#3dd5f3}html[data-netbox-color-mode=dark] .btn-cyan-400:hover{color:#000;background-color:#5adbf5;border-color:#50d9f4}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-cyan-400,html[data-netbox-color-mode=dark] .btn-cyan-400:focus{color:#000;background-color:#5adbf5;border-color:#50d9f4;box-shadow:0 0 0 .25rem #34b5cf80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-cyan-400,.btn-check:active+html[data-netbox-color-mode=dark] .btn-cyan-400,html[data-netbox-color-mode=dark] .btn-cyan-400:active,html[data-netbox-color-mode=dark] .btn-cyan-400.active,.show>html[data-netbox-color-mode=dark] .btn-cyan-400.dropdown-toggle{color:#000;background-color:#64ddf5;border-color:#50d9f4}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-cyan-400:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-cyan-400:focus,html[data-netbox-color-mode=dark] .btn-cyan-400:active:focus,html[data-netbox-color-mode=dark] .btn-cyan-400.active:focus,.show>html[data-netbox-color-mode=dark] .btn-cyan-400.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #34b5cf80}html[data-netbox-color-mode=dark] .btn-cyan-400:disabled,html[data-netbox-color-mode=dark] .btn-cyan-400.disabled{color:#000;background-color:#3dd5f3;border-color:#3dd5f3}html[data-netbox-color-mode=dark] .btn-cyan-500{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}html[data-netbox-color-mode=dark] .btn-cyan-500:hover{color:#000;background-color:#31d2f2;border-color:#25cff2}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-cyan-500,html[data-netbox-color-mode=dark] .btn-cyan-500:focus{color:#000;background-color:#31d2f2;border-color:#25cff2;box-shadow:0 0 0 .25rem #0baccc80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-cyan-500,.btn-check:active+html[data-netbox-color-mode=dark] .btn-cyan-500,html[data-netbox-color-mode=dark] .btn-cyan-500:active,html[data-netbox-color-mode=dark] .btn-cyan-500.active,.show>html[data-netbox-color-mode=dark] .btn-cyan-500.dropdown-toggle{color:#000;background-color:#3dd5f3;border-color:#25cff2}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-cyan-500:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-cyan-500:focus,html[data-netbox-color-mode=dark] .btn-cyan-500:active:focus,html[data-netbox-color-mode=dark] .btn-cyan-500.active:focus,.show>html[data-netbox-color-mode=dark] .btn-cyan-500.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #0baccc80}html[data-netbox-color-mode=dark] .btn-cyan-500:disabled,html[data-netbox-color-mode=dark] .btn-cyan-500.disabled{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}html[data-netbox-color-mode=dark] .btn-cyan-600{color:#000;background-color:#0aa2c0;border-color:#0aa2c0}html[data-netbox-color-mode=dark] .btn-cyan-600:hover{color:#000;background-color:#2fb0c9;border-color:#23abc6}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-cyan-600,html[data-netbox-color-mode=dark] .btn-cyan-600:focus{color:#000;background-color:#2fb0c9;border-color:#23abc6;box-shadow:0 0 0 .25rem #098aa380}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-cyan-600,.btn-check:active+html[data-netbox-color-mode=dark] .btn-cyan-600,html[data-netbox-color-mode=dark] .btn-cyan-600:active,html[data-netbox-color-mode=dark] .btn-cyan-600.active,.show>html[data-netbox-color-mode=dark] .btn-cyan-600.dropdown-toggle{color:#000;background-color:#3bb5cd;border-color:#23abc6}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-cyan-600:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-cyan-600:focus,html[data-netbox-color-mode=dark] .btn-cyan-600:active:focus,html[data-netbox-color-mode=dark] .btn-cyan-600.active:focus,.show>html[data-netbox-color-mode=dark] .btn-cyan-600.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #098aa380}html[data-netbox-color-mode=dark] .btn-cyan-600:disabled,html[data-netbox-color-mode=dark] .btn-cyan-600.disabled{color:#000;background-color:#0aa2c0;border-color:#0aa2c0}html[data-netbox-color-mode=dark] .btn-cyan-700{color:#fff;background-color:#087990;border-color:#087990}html[data-netbox-color-mode=dark] .btn-cyan-700:hover{color:#fff;background-color:#07677a;border-color:#066173}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-cyan-700,html[data-netbox-color-mode=dark] .btn-cyan-700:focus{color:#fff;background-color:#07677a;border-color:#066173;box-shadow:0 0 0 .25rem #2d8da180}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-cyan-700,.btn-check:active+html[data-netbox-color-mode=dark] .btn-cyan-700,html[data-netbox-color-mode=dark] .btn-cyan-700:active,html[data-netbox-color-mode=dark] .btn-cyan-700.active,.show>html[data-netbox-color-mode=dark] .btn-cyan-700.dropdown-toggle{color:#fff;background-color:#066173;border-color:#065b6c}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-cyan-700:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-cyan-700:focus,html[data-netbox-color-mode=dark] .btn-cyan-700:active:focus,html[data-netbox-color-mode=dark] .btn-cyan-700.active:focus,.show>html[data-netbox-color-mode=dark] .btn-cyan-700.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #2d8da180}html[data-netbox-color-mode=dark] .btn-cyan-700:disabled,html[data-netbox-color-mode=dark] .btn-cyan-700.disabled{color:#fff;background-color:#087990;border-color:#087990}html[data-netbox-color-mode=dark] .btn-cyan-800{color:#fff;background-color:#055160;border-color:#055160}html[data-netbox-color-mode=dark] .btn-cyan-800:hover{color:#fff;background-color:#044552;border-color:#04414d}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-cyan-800,html[data-netbox-color-mode=dark] .btn-cyan-800:focus{color:#fff;background-color:#044552;border-color:#04414d;box-shadow:0 0 0 .25rem #2b6b7880}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-cyan-800,.btn-check:active+html[data-netbox-color-mode=dark] .btn-cyan-800,html[data-netbox-color-mode=dark] .btn-cyan-800:active,html[data-netbox-color-mode=dark] .btn-cyan-800.active,.show>html[data-netbox-color-mode=dark] .btn-cyan-800.dropdown-toggle{color:#fff;background-color:#04414d;border-color:#043d48}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-cyan-800:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-cyan-800:focus,html[data-netbox-color-mode=dark] .btn-cyan-800:active:focus,html[data-netbox-color-mode=dark] .btn-cyan-800.active:focus,.show>html[data-netbox-color-mode=dark] .btn-cyan-800.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #2b6b7880}html[data-netbox-color-mode=dark] .btn-cyan-800:disabled,html[data-netbox-color-mode=dark] .btn-cyan-800.disabled{color:#fff;background-color:#055160;border-color:#055160}html[data-netbox-color-mode=dark] .btn-cyan-900{color:#fff;background-color:#032830;border-color:#032830}html[data-netbox-color-mode=dark] .btn-cyan-900:hover{color:#fff;background-color:#032229;border-color:#022026}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-cyan-900,html[data-netbox-color-mode=dark] .btn-cyan-900:focus{color:#fff;background-color:#032229;border-color:#022026;box-shadow:0 0 0 .25rem #29484f80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-cyan-900,.btn-check:active+html[data-netbox-color-mode=dark] .btn-cyan-900,html[data-netbox-color-mode=dark] .btn-cyan-900:active,html[data-netbox-color-mode=dark] .btn-cyan-900.active,.show>html[data-netbox-color-mode=dark] .btn-cyan-900.dropdown-toggle{color:#fff;background-color:#022026;border-color:#021e24}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-cyan-900:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-cyan-900:focus,html[data-netbox-color-mode=dark] .btn-cyan-900:active:focus,html[data-netbox-color-mode=dark] .btn-cyan-900.active:focus,.show>html[data-netbox-color-mode=dark] .btn-cyan-900.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #29484f80}html[data-netbox-color-mode=dark] .btn-cyan-900:disabled,html[data-netbox-color-mode=dark] .btn-cyan-900.disabled{color:#fff;background-color:#032830;border-color:#032830}html[data-netbox-color-mode=dark] .btn-indigo-100{color:#000;background-color:#e0cffc;border-color:#e0cffc}html[data-netbox-color-mode=dark] .btn-indigo-100:hover{color:#000;background-color:#e5d6fc;border-color:#e3d4fc}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-indigo-100,html[data-netbox-color-mode=dark] .btn-indigo-100:focus{color:#000;background-color:#e5d6fc;border-color:#e3d4fc;box-shadow:0 0 0 .25rem #beb0d680}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-indigo-100,.btn-check:active+html[data-netbox-color-mode=dark] .btn-indigo-100,html[data-netbox-color-mode=dark] .btn-indigo-100:active,html[data-netbox-color-mode=dark] .btn-indigo-100.active,.show>html[data-netbox-color-mode=dark] .btn-indigo-100.dropdown-toggle{color:#000;background-color:#e6d9fd;border-color:#e3d4fc}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-indigo-100:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-indigo-100:focus,html[data-netbox-color-mode=dark] .btn-indigo-100:active:focus,html[data-netbox-color-mode=dark] .btn-indigo-100.active:focus,.show>html[data-netbox-color-mode=dark] .btn-indigo-100.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #beb0d680}html[data-netbox-color-mode=dark] .btn-indigo-100:disabled,html[data-netbox-color-mode=dark] .btn-indigo-100.disabled{color:#000;background-color:#e0cffc;border-color:#e0cffc}html[data-netbox-color-mode=dark] .btn-indigo-200{color:#000;background-color:#c29ffa;border-color:#c29ffa}html[data-netbox-color-mode=dark] .btn-indigo-200:hover{color:#000;background-color:#cbadfb;border-color:#c8a9fb}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-indigo-200,html[data-netbox-color-mode=dark] .btn-indigo-200:focus{color:#000;background-color:#cbadfb;border-color:#c8a9fb;box-shadow:0 0 0 .25rem #a587d580}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-indigo-200,.btn-check:active+html[data-netbox-color-mode=dark] .btn-indigo-200,html[data-netbox-color-mode=dark] .btn-indigo-200:active,html[data-netbox-color-mode=dark] .btn-indigo-200.active,.show>html[data-netbox-color-mode=dark] .btn-indigo-200.dropdown-toggle{color:#000;background-color:#ceb2fb;border-color:#c8a9fb}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-indigo-200:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-indigo-200:focus,html[data-netbox-color-mode=dark] .btn-indigo-200:active:focus,html[data-netbox-color-mode=dark] .btn-indigo-200.active:focus,.show>html[data-netbox-color-mode=dark] .btn-indigo-200.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #a587d580}html[data-netbox-color-mode=dark] .btn-indigo-200:disabled,html[data-netbox-color-mode=dark] .btn-indigo-200.disabled{color:#000;background-color:#c29ffa;border-color:#c29ffa}html[data-netbox-color-mode=dark] .btn-indigo-300{color:#000;background-color:#a370f7;border-color:#a370f7}html[data-netbox-color-mode=dark] .btn-indigo-300:hover{color:#000;background-color:#b185f8;border-color:#ac7ef8}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-indigo-300,html[data-netbox-color-mode=dark] .btn-indigo-300:focus{color:#000;background-color:#b185f8;border-color:#ac7ef8;box-shadow:0 0 0 .25rem #8b5fd280}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-indigo-300,.btn-check:active+html[data-netbox-color-mode=dark] .btn-indigo-300,html[data-netbox-color-mode=dark] .btn-indigo-300:active,html[data-netbox-color-mode=dark] .btn-indigo-300.active,.show>html[data-netbox-color-mode=dark] .btn-indigo-300.dropdown-toggle{color:#000;background-color:#b58df9;border-color:#ac7ef8}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-indigo-300:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-indigo-300:focus,html[data-netbox-color-mode=dark] .btn-indigo-300:active:focus,html[data-netbox-color-mode=dark] .btn-indigo-300.active:focus,.show>html[data-netbox-color-mode=dark] .btn-indigo-300.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #8b5fd280}html[data-netbox-color-mode=dark] .btn-indigo-300:disabled,html[data-netbox-color-mode=dark] .btn-indigo-300.disabled{color:#000;background-color:#a370f7;border-color:#a370f7}html[data-netbox-color-mode=dark] .btn-indigo-400{color:#fff;background-color:#8540f5;border-color:#8540f5}html[data-netbox-color-mode=dark] .btn-indigo-400:hover{color:#fff;background-color:#7136d0;border-color:#6a33c4}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-indigo-400,html[data-netbox-color-mode=dark] .btn-indigo-400:focus{color:#fff;background-color:#7136d0;border-color:#6a33c4;box-shadow:0 0 0 .25rem #975df780}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-indigo-400,.btn-check:active+html[data-netbox-color-mode=dark] .btn-indigo-400,html[data-netbox-color-mode=dark] .btn-indigo-400:active,html[data-netbox-color-mode=dark] .btn-indigo-400.active,.show>html[data-netbox-color-mode=dark] .btn-indigo-400.dropdown-toggle{color:#fff;background-color:#6a33c4;border-color:#6430b8}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-indigo-400:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-indigo-400:focus,html[data-netbox-color-mode=dark] .btn-indigo-400:active:focus,html[data-netbox-color-mode=dark] .btn-indigo-400.active:focus,.show>html[data-netbox-color-mode=dark] .btn-indigo-400.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #975df780}html[data-netbox-color-mode=dark] .btn-indigo-400:disabled,html[data-netbox-color-mode=dark] .btn-indigo-400.disabled{color:#fff;background-color:#8540f5;border-color:#8540f5}html[data-netbox-color-mode=dark] .btn-indigo-500{color:#fff;background-color:#6610f2;border-color:#6610f2}html[data-netbox-color-mode=dark] .btn-indigo-500:hover{color:#fff;background-color:#570ece;border-color:#520dc2}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-indigo-500,html[data-netbox-color-mode=dark] .btn-indigo-500:focus{color:#fff;background-color:#570ece;border-color:#520dc2;box-shadow:0 0 0 .25rem #7d34f480}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-indigo-500,.btn-check:active+html[data-netbox-color-mode=dark] .btn-indigo-500,html[data-netbox-color-mode=dark] .btn-indigo-500:active,html[data-netbox-color-mode=dark] .btn-indigo-500.active,.show>html[data-netbox-color-mode=dark] .btn-indigo-500.dropdown-toggle{color:#fff;background-color:#520dc2;border-color:#4d0cb6}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-indigo-500:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-indigo-500:focus,html[data-netbox-color-mode=dark] .btn-indigo-500:active:focus,html[data-netbox-color-mode=dark] .btn-indigo-500.active:focus,.show>html[data-netbox-color-mode=dark] .btn-indigo-500.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #7d34f480}html[data-netbox-color-mode=dark] .btn-indigo-500:disabled,html[data-netbox-color-mode=dark] .btn-indigo-500.disabled{color:#fff;background-color:#6610f2;border-color:#6610f2}html[data-netbox-color-mode=dark] .btn-indigo-600{color:#fff;background-color:#520dc2;border-color:#520dc2}html[data-netbox-color-mode=dark] .btn-indigo-600:hover{color:#fff;background-color:#460ba5;border-color:#420a9b}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-indigo-600,html[data-netbox-color-mode=dark] .btn-indigo-600:focus{color:#fff;background-color:#460ba5;border-color:#420a9b;box-shadow:0 0 0 .25rem #6c31cb80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-indigo-600,.btn-check:active+html[data-netbox-color-mode=dark] .btn-indigo-600,html[data-netbox-color-mode=dark] .btn-indigo-600:active,html[data-netbox-color-mode=dark] .btn-indigo-600.active,.show>html[data-netbox-color-mode=dark] .btn-indigo-600.dropdown-toggle{color:#fff;background-color:#420a9b;border-color:#3e0a92}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-indigo-600:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-indigo-600:focus,html[data-netbox-color-mode=dark] .btn-indigo-600:active:focus,html[data-netbox-color-mode=dark] .btn-indigo-600.active:focus,.show>html[data-netbox-color-mode=dark] .btn-indigo-600.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #6c31cb80}html[data-netbox-color-mode=dark] .btn-indigo-600:disabled,html[data-netbox-color-mode=dark] .btn-indigo-600.disabled{color:#fff;background-color:#520dc2;border-color:#520dc2}html[data-netbox-color-mode=dark] .btn-indigo-700{color:#fff;background-color:#3d0a91;border-color:#3d0a91}html[data-netbox-color-mode=dark] .btn-indigo-700:hover{color:#fff;background-color:#34097b;border-color:#310874}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-indigo-700,html[data-netbox-color-mode=dark] .btn-indigo-700:focus{color:#fff;background-color:#34097b;border-color:#310874;box-shadow:0 0 0 .25rem #5a2fa280}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-indigo-700,.btn-check:active+html[data-netbox-color-mode=dark] .btn-indigo-700,html[data-netbox-color-mode=dark] .btn-indigo-700:active,html[data-netbox-color-mode=dark] .btn-indigo-700.active,.show>html[data-netbox-color-mode=dark] .btn-indigo-700.dropdown-toggle{color:#fff;background-color:#310874;border-color:#2e086d}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-indigo-700:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-indigo-700:focus,html[data-netbox-color-mode=dark] .btn-indigo-700:active:focus,html[data-netbox-color-mode=dark] .btn-indigo-700.active:focus,.show>html[data-netbox-color-mode=dark] .btn-indigo-700.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #5a2fa280}html[data-netbox-color-mode=dark] .btn-indigo-700:disabled,html[data-netbox-color-mode=dark] .btn-indigo-700.disabled{color:#fff;background-color:#3d0a91;border-color:#3d0a91}html[data-netbox-color-mode=dark] .btn-indigo-800{color:#fff;background-color:#290661;border-color:#290661}html[data-netbox-color-mode=dark] .btn-indigo-800:hover{color:#fff;background-color:#230552;border-color:#21054e}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-indigo-800,html[data-netbox-color-mode=dark] .btn-indigo-800:focus{color:#fff;background-color:#230552;border-color:#21054e;box-shadow:0 0 0 .25rem #492b7980}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-indigo-800,.btn-check:active+html[data-netbox-color-mode=dark] .btn-indigo-800,html[data-netbox-color-mode=dark] .btn-indigo-800:active,html[data-netbox-color-mode=dark] .btn-indigo-800.active,.show>html[data-netbox-color-mode=dark] .btn-indigo-800.dropdown-toggle{color:#fff;background-color:#21054e;border-color:#1f0549}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-indigo-800:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-indigo-800:focus,html[data-netbox-color-mode=dark] .btn-indigo-800:active:focus,html[data-netbox-color-mode=dark] .btn-indigo-800.active:focus,.show>html[data-netbox-color-mode=dark] .btn-indigo-800.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #492b7980}html[data-netbox-color-mode=dark] .btn-indigo-800:disabled,html[data-netbox-color-mode=dark] .btn-indigo-800.disabled{color:#fff;background-color:#290661;border-color:#290661}html[data-netbox-color-mode=dark] .btn-indigo-900{color:#fff;background-color:#140330;border-color:#140330}html[data-netbox-color-mode=dark] .btn-indigo-900:hover{color:#fff;background-color:#110329;border-color:#100226}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-indigo-900,html[data-netbox-color-mode=dark] .btn-indigo-900:focus{color:#fff;background-color:#110329;border-color:#100226;box-shadow:0 0 0 .25rem #37294f80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-indigo-900,.btn-check:active+html[data-netbox-color-mode=dark] .btn-indigo-900,html[data-netbox-color-mode=dark] .btn-indigo-900:active,html[data-netbox-color-mode=dark] .btn-indigo-900.active,.show>html[data-netbox-color-mode=dark] .btn-indigo-900.dropdown-toggle{color:#fff;background-color:#100226;border-color:#0f0224}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-indigo-900:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-indigo-900:focus,html[data-netbox-color-mode=dark] .btn-indigo-900:active:focus,html[data-netbox-color-mode=dark] .btn-indigo-900.active:focus,.show>html[data-netbox-color-mode=dark] .btn-indigo-900.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #37294f80}html[data-netbox-color-mode=dark] .btn-indigo-900:disabled,html[data-netbox-color-mode=dark] .btn-indigo-900.disabled{color:#fff;background-color:#140330;border-color:#140330}html[data-netbox-color-mode=dark] .btn-purple-100{color:#000;background-color:#e2d9f3;border-color:#e2d9f3}html[data-netbox-color-mode=dark] .btn-purple-100:hover{color:#000;background-color:#e6dff5;border-color:#e5ddf4}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-purple-100,html[data-netbox-color-mode=dark] .btn-purple-100:focus{color:#000;background-color:#e6dff5;border-color:#e5ddf4;box-shadow:0 0 0 .25rem #c0b8cf80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-purple-100,.btn-check:active+html[data-netbox-color-mode=dark] .btn-purple-100,html[data-netbox-color-mode=dark] .btn-purple-100:active,html[data-netbox-color-mode=dark] .btn-purple-100.active,.show>html[data-netbox-color-mode=dark] .btn-purple-100.dropdown-toggle{color:#000;background-color:#e8e1f5;border-color:#e5ddf4}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-purple-100:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-purple-100:focus,html[data-netbox-color-mode=dark] .btn-purple-100:active:focus,html[data-netbox-color-mode=dark] .btn-purple-100.active:focus,.show>html[data-netbox-color-mode=dark] .btn-purple-100.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #c0b8cf80}html[data-netbox-color-mode=dark] .btn-purple-100:disabled,html[data-netbox-color-mode=dark] .btn-purple-100.disabled{color:#000;background-color:#e2d9f3;border-color:#e2d9f3}html[data-netbox-color-mode=dark] .btn-purple-200{color:#000;background-color:#c5b3e6;border-color:#c5b3e6}html[data-netbox-color-mode=dark] .btn-purple-200:hover{color:#000;background-color:#cebeea;border-color:#cbbbe9}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-purple-200,html[data-netbox-color-mode=dark] .btn-purple-200:focus{color:#000;background-color:#cebeea;border-color:#cbbbe9;box-shadow:0 0 0 .25rem #a798c480}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-purple-200,.btn-check:active+html[data-netbox-color-mode=dark] .btn-purple-200,html[data-netbox-color-mode=dark] .btn-purple-200:active,html[data-netbox-color-mode=dark] .btn-purple-200.active,.show>html[data-netbox-color-mode=dark] .btn-purple-200.dropdown-toggle{color:#000;background-color:#d1c2eb;border-color:#cbbbe9}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-purple-200:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-purple-200:focus,html[data-netbox-color-mode=dark] .btn-purple-200:active:focus,html[data-netbox-color-mode=dark] .btn-purple-200.active:focus,.show>html[data-netbox-color-mode=dark] .btn-purple-200.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #a798c480}html[data-netbox-color-mode=dark] .btn-purple-200:disabled,html[data-netbox-color-mode=dark] .btn-purple-200.disabled{color:#000;background-color:#c5b3e6;border-color:#c5b3e6}html[data-netbox-color-mode=dark] .btn-purple-300{color:#000;background-color:#a98eda;border-color:#a98eda}html[data-netbox-color-mode=dark] .btn-purple-300:hover{color:#000;background-color:#b69fe0;border-color:#b299de}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-purple-300,html[data-netbox-color-mode=dark] .btn-purple-300:focus{color:#000;background-color:#b69fe0;border-color:#b299de;box-shadow:0 0 0 .25rem #9079b980}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-purple-300,.btn-check:active+html[data-netbox-color-mode=dark] .btn-purple-300,html[data-netbox-color-mode=dark] .btn-purple-300:active,html[data-netbox-color-mode=dark] .btn-purple-300.active,.show>html[data-netbox-color-mode=dark] .btn-purple-300.dropdown-toggle{color:#000;background-color:#baa5e1;border-color:#b299de}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-purple-300:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-purple-300:focus,html[data-netbox-color-mode=dark] .btn-purple-300:active:focus,html[data-netbox-color-mode=dark] .btn-purple-300.active:focus,.show>html[data-netbox-color-mode=dark] .btn-purple-300.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #9079b980}html[data-netbox-color-mode=dark] .btn-purple-300:disabled,html[data-netbox-color-mode=dark] .btn-purple-300.disabled{color:#000;background-color:#a98eda;border-color:#a98eda}html[data-netbox-color-mode=dark] .btn-purple-400{color:#000;background-color:#8c68cd;border-color:#8c68cd}html[data-netbox-color-mode=dark] .btn-purple-400:hover{color:#000;background-color:#9d7fd5;border-color:#9877d2}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-purple-400,html[data-netbox-color-mode=dark] .btn-purple-400:focus{color:#000;background-color:#9d7fd5;border-color:#9877d2;box-shadow:0 0 0 .25rem #7758ae80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-purple-400,.btn-check:active+html[data-netbox-color-mode=dark] .btn-purple-400,html[data-netbox-color-mode=dark] .btn-purple-400:active,html[data-netbox-color-mode=dark] .btn-purple-400.active,.show>html[data-netbox-color-mode=dark] .btn-purple-400.dropdown-toggle{color:#000;background-color:#a386d7;border-color:#9877d2}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-purple-400:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-purple-400:focus,html[data-netbox-color-mode=dark] .btn-purple-400:active:focus,html[data-netbox-color-mode=dark] .btn-purple-400.active:focus,.show>html[data-netbox-color-mode=dark] .btn-purple-400.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #7758ae80}html[data-netbox-color-mode=dark] .btn-purple-400:disabled,html[data-netbox-color-mode=dark] .btn-purple-400.disabled{color:#000;background-color:#8c68cd;border-color:#8c68cd}html[data-netbox-color-mode=dark] .btn-purple-500{color:#fff;background-color:#6f42c1;border-color:#6f42c1}html[data-netbox-color-mode=dark] .btn-purple-500:hover{color:#fff;background-color:#5e38a4;border-color:#59359a}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-purple-500,html[data-netbox-color-mode=dark] .btn-purple-500:focus{color:#fff;background-color:#5e38a4;border-color:#59359a;box-shadow:0 0 0 .25rem #855eca80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-purple-500,.btn-check:active+html[data-netbox-color-mode=dark] .btn-purple-500,html[data-netbox-color-mode=dark] .btn-purple-500:active,html[data-netbox-color-mode=dark] .btn-purple-500.active,.show>html[data-netbox-color-mode=dark] .btn-purple-500.dropdown-toggle{color:#fff;background-color:#59359a;border-color:#533291}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-purple-500:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-purple-500:focus,html[data-netbox-color-mode=dark] .btn-purple-500:active:focus,html[data-netbox-color-mode=dark] .btn-purple-500.active:focus,.show>html[data-netbox-color-mode=dark] .btn-purple-500.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #855eca80}html[data-netbox-color-mode=dark] .btn-purple-500:disabled,html[data-netbox-color-mode=dark] .btn-purple-500.disabled{color:#fff;background-color:#6f42c1;border-color:#6f42c1}html[data-netbox-color-mode=dark] .btn-purple-600{color:#fff;background-color:#59359a;border-color:#59359a}html[data-netbox-color-mode=dark] .btn-purple-600:hover{color:#fff;background-color:#4c2d83;border-color:#472a7b}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-purple-600,html[data-netbox-color-mode=dark] .btn-purple-600:focus{color:#fff;background-color:#4c2d83;border-color:#472a7b;box-shadow:0 0 0 .25rem #7253a980}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-purple-600,.btn-check:active+html[data-netbox-color-mode=dark] .btn-purple-600,html[data-netbox-color-mode=dark] .btn-purple-600:active,html[data-netbox-color-mode=dark] .btn-purple-600.active,.show>html[data-netbox-color-mode=dark] .btn-purple-600.dropdown-toggle{color:#fff;background-color:#472a7b;border-color:#432874}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-purple-600:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-purple-600:focus,html[data-netbox-color-mode=dark] .btn-purple-600:active:focus,html[data-netbox-color-mode=dark] .btn-purple-600.active:focus,.show>html[data-netbox-color-mode=dark] .btn-purple-600.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #7253a980}html[data-netbox-color-mode=dark] .btn-purple-600:disabled,html[data-netbox-color-mode=dark] .btn-purple-600.disabled{color:#fff;background-color:#59359a;border-color:#59359a}html[data-netbox-color-mode=dark] .btn-purple-700{color:#fff;background-color:#432874;border-color:#432874}html[data-netbox-color-mode=dark] .btn-purple-700:hover{color:#fff;background-color:#392263;border-color:#36205d}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-purple-700,html[data-netbox-color-mode=dark] .btn-purple-700:focus{color:#fff;background-color:#392263;border-color:#36205d;box-shadow:0 0 0 .25rem #5f488980}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-purple-700,.btn-check:active+html[data-netbox-color-mode=dark] .btn-purple-700,html[data-netbox-color-mode=dark] .btn-purple-700:active,html[data-netbox-color-mode=dark] .btn-purple-700.active,.show>html[data-netbox-color-mode=dark] .btn-purple-700.dropdown-toggle{color:#fff;background-color:#36205d;border-color:#321e57}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-purple-700:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-purple-700:focus,html[data-netbox-color-mode=dark] .btn-purple-700:active:focus,html[data-netbox-color-mode=dark] .btn-purple-700.active:focus,.show>html[data-netbox-color-mode=dark] .btn-purple-700.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #5f488980}html[data-netbox-color-mode=dark] .btn-purple-700:disabled,html[data-netbox-color-mode=dark] .btn-purple-700.disabled{color:#fff;background-color:#432874;border-color:#432874}html[data-netbox-color-mode=dark] .btn-purple-800{color:#fff;background-color:#2c1a4d;border-color:#2c1a4d}html[data-netbox-color-mode=dark] .btn-purple-800:hover{color:#fff;background-color:#251641;border-color:#23153e}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-purple-800,html[data-netbox-color-mode=dark] .btn-purple-800:focus{color:#fff;background-color:#251641;border-color:#23153e;box-shadow:0 0 0 .25rem #4c3c6880}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-purple-800,.btn-check:active+html[data-netbox-color-mode=dark] .btn-purple-800,html[data-netbox-color-mode=dark] .btn-purple-800:active,html[data-netbox-color-mode=dark] .btn-purple-800.active,.show>html[data-netbox-color-mode=dark] .btn-purple-800.dropdown-toggle{color:#fff;background-color:#23153e;border-color:#21143a}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-purple-800:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-purple-800:focus,html[data-netbox-color-mode=dark] .btn-purple-800:active:focus,html[data-netbox-color-mode=dark] .btn-purple-800.active:focus,.show>html[data-netbox-color-mode=dark] .btn-purple-800.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #4c3c6880}html[data-netbox-color-mode=dark] .btn-purple-800:disabled,html[data-netbox-color-mode=dark] .btn-purple-800.disabled{color:#fff;background-color:#2c1a4d;border-color:#2c1a4d}html[data-netbox-color-mode=dark] .btn-purple-900{color:#fff;background-color:#160d27;border-color:#160d27}html[data-netbox-color-mode=dark] .btn-purple-900:hover{color:#fff;background-color:#130b21;border-color:#120a1f}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-purple-900,html[data-netbox-color-mode=dark] .btn-purple-900:focus{color:#fff;background-color:#130b21;border-color:#120a1f;box-shadow:0 0 0 .25rem #39314780}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-purple-900,.btn-check:active+html[data-netbox-color-mode=dark] .btn-purple-900,html[data-netbox-color-mode=dark] .btn-purple-900:active,html[data-netbox-color-mode=dark] .btn-purple-900.active,.show>html[data-netbox-color-mode=dark] .btn-purple-900.dropdown-toggle{color:#fff;background-color:#120a1f;border-color:#110a1d}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-purple-900:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-purple-900:focus,html[data-netbox-color-mode=dark] .btn-purple-900:active:focus,html[data-netbox-color-mode=dark] .btn-purple-900.active:focus,.show>html[data-netbox-color-mode=dark] .btn-purple-900.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #39314780}html[data-netbox-color-mode=dark] .btn-purple-900:disabled,html[data-netbox-color-mode=dark] .btn-purple-900.disabled{color:#fff;background-color:#160d27;border-color:#160d27}html[data-netbox-color-mode=dark] .btn-pink-100{color:#000;background-color:#f7d6e6;border-color:#f7d6e6}html[data-netbox-color-mode=dark] .btn-pink-100:hover{color:#000;background-color:#f8dcea;border-color:#f8dae9}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-pink-100,html[data-netbox-color-mode=dark] .btn-pink-100:focus{color:#000;background-color:#f8dcea;border-color:#f8dae9;box-shadow:0 0 0 .25rem #d2b6c480}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-pink-100,.btn-check:active+html[data-netbox-color-mode=dark] .btn-pink-100,html[data-netbox-color-mode=dark] .btn-pink-100:active,html[data-netbox-color-mode=dark] .btn-pink-100.active,.show>html[data-netbox-color-mode=dark] .btn-pink-100.dropdown-toggle{color:#000;background-color:#f9deeb;border-color:#f8dae9}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-pink-100:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-pink-100:focus,html[data-netbox-color-mode=dark] .btn-pink-100:active:focus,html[data-netbox-color-mode=dark] .btn-pink-100.active:focus,.show>html[data-netbox-color-mode=dark] .btn-pink-100.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #d2b6c480}html[data-netbox-color-mode=dark] .btn-pink-100:disabled,html[data-netbox-color-mode=dark] .btn-pink-100.disabled{color:#000;background-color:#f7d6e6;border-color:#f7d6e6}html[data-netbox-color-mode=dark] .btn-pink-200{color:#000;background-color:#efadce;border-color:#efadce}html[data-netbox-color-mode=dark] .btn-pink-200:hover{color:#000;background-color:#f1b9d5;border-color:#f1b5d3}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-pink-200,html[data-netbox-color-mode=dark] .btn-pink-200:focus{color:#000;background-color:#f1b9d5;border-color:#f1b5d3;box-shadow:0 0 0 .25rem #cb93af80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-pink-200,.btn-check:active+html[data-netbox-color-mode=dark] .btn-pink-200,html[data-netbox-color-mode=dark] .btn-pink-200:active,html[data-netbox-color-mode=dark] .btn-pink-200.active,.show>html[data-netbox-color-mode=dark] .btn-pink-200.dropdown-toggle{color:#000;background-color:#f2bdd8;border-color:#f1b5d3}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-pink-200:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-pink-200:focus,html[data-netbox-color-mode=dark] .btn-pink-200:active:focus,html[data-netbox-color-mode=dark] .btn-pink-200.active:focus,.show>html[data-netbox-color-mode=dark] .btn-pink-200.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #cb93af80}html[data-netbox-color-mode=dark] .btn-pink-200:disabled,html[data-netbox-color-mode=dark] .btn-pink-200.disabled{color:#000;background-color:#efadce;border-color:#efadce}html[data-netbox-color-mode=dark] .btn-pink-300{color:#000;background-color:#e685b5;border-color:#e685b5}html[data-netbox-color-mode=dark] .btn-pink-300:hover{color:#000;background-color:#ea97c0;border-color:#e991bc}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-pink-300,html[data-netbox-color-mode=dark] .btn-pink-300:focus{color:#000;background-color:#ea97c0;border-color:#e991bc;box-shadow:0 0 0 .25rem #c4719a80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-pink-300,.btn-check:active+html[data-netbox-color-mode=dark] .btn-pink-300,html[data-netbox-color-mode=dark] .btn-pink-300:active,html[data-netbox-color-mode=dark] .btn-pink-300.active,.show>html[data-netbox-color-mode=dark] .btn-pink-300.dropdown-toggle{color:#000;background-color:#eb9dc4;border-color:#e991bc}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-pink-300:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-pink-300:focus,html[data-netbox-color-mode=dark] .btn-pink-300:active:focus,html[data-netbox-color-mode=dark] .btn-pink-300.active:focus,.show>html[data-netbox-color-mode=dark] .btn-pink-300.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #c4719a80}html[data-netbox-color-mode=dark] .btn-pink-300:disabled,html[data-netbox-color-mode=dark] .btn-pink-300.disabled{color:#000;background-color:#e685b5;border-color:#e685b5}html[data-netbox-color-mode=dark] .btn-pink-400{color:#000;background-color:#de5c9d;border-color:#de5c9d}html[data-netbox-color-mode=dark] .btn-pink-400:hover{color:#000;background-color:#e374ac;border-color:#e16ca7}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-pink-400,html[data-netbox-color-mode=dark] .btn-pink-400:focus{color:#000;background-color:#e374ac;border-color:#e16ca7;box-shadow:0 0 0 .25rem #bd4e8580}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-pink-400,.btn-check:active+html[data-netbox-color-mode=dark] .btn-pink-400,html[data-netbox-color-mode=dark] .btn-pink-400:active,html[data-netbox-color-mode=dark] .btn-pink-400.active,.show>html[data-netbox-color-mode=dark] .btn-pink-400.dropdown-toggle{color:#000;background-color:#e57db1;border-color:#e16ca7}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-pink-400:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-pink-400:focus,html[data-netbox-color-mode=dark] .btn-pink-400:active:focus,html[data-netbox-color-mode=dark] .btn-pink-400.active:focus,.show>html[data-netbox-color-mode=dark] .btn-pink-400.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #bd4e8580}html[data-netbox-color-mode=dark] .btn-pink-400:disabled,html[data-netbox-color-mode=dark] .btn-pink-400.disabled{color:#000;background-color:#de5c9d;border-color:#de5c9d}html[data-netbox-color-mode=dark] .btn-pink-500{color:#fff;background-color:#d63384;border-color:#d63384}html[data-netbox-color-mode=dark] .btn-pink-500:hover{color:#fff;background-color:#b62b70;border-color:#ab296a}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-pink-500,html[data-netbox-color-mode=dark] .btn-pink-500:focus{color:#fff;background-color:#b62b70;border-color:#ab296a;box-shadow:0 0 0 .25rem #dc529680}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-pink-500,.btn-check:active+html[data-netbox-color-mode=dark] .btn-pink-500,html[data-netbox-color-mode=dark] .btn-pink-500:active,html[data-netbox-color-mode=dark] .btn-pink-500.active,.show>html[data-netbox-color-mode=dark] .btn-pink-500.dropdown-toggle{color:#fff;background-color:#ab296a;border-color:#a12663}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-pink-500:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-pink-500:focus,html[data-netbox-color-mode=dark] .btn-pink-500:active:focus,html[data-netbox-color-mode=dark] .btn-pink-500.active:focus,.show>html[data-netbox-color-mode=dark] .btn-pink-500.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #dc529680}html[data-netbox-color-mode=dark] .btn-pink-500:disabled,html[data-netbox-color-mode=dark] .btn-pink-500.disabled{color:#fff;background-color:#d63384;border-color:#d63384}html[data-netbox-color-mode=dark] .btn-pink-600{color:#fff;background-color:#ab296a;border-color:#ab296a}html[data-netbox-color-mode=dark] .btn-pink-600:hover{color:#fff;background-color:#91235a;border-color:#892155}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-pink-600,html[data-netbox-color-mode=dark] .btn-pink-600:focus{color:#fff;background-color:#91235a;border-color:#892155;box-shadow:0 0 0 .25rem #b8498080}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-pink-600,.btn-check:active+html[data-netbox-color-mode=dark] .btn-pink-600,html[data-netbox-color-mode=dark] .btn-pink-600:active,html[data-netbox-color-mode=dark] .btn-pink-600.active,.show>html[data-netbox-color-mode=dark] .btn-pink-600.dropdown-toggle{color:#fff;background-color:#892155;border-color:#801f50}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-pink-600:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-pink-600:focus,html[data-netbox-color-mode=dark] .btn-pink-600:active:focus,html[data-netbox-color-mode=dark] .btn-pink-600.active:focus,.show>html[data-netbox-color-mode=dark] .btn-pink-600.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #b8498080}html[data-netbox-color-mode=dark] .btn-pink-600:disabled,html[data-netbox-color-mode=dark] .btn-pink-600.disabled{color:#fff;background-color:#ab296a;border-color:#ab296a}html[data-netbox-color-mode=dark] .btn-pink-700{color:#fff;background-color:#801f4f;border-color:#801f4f}html[data-netbox-color-mode=dark] .btn-pink-700:hover{color:#fff;background-color:#6d1a43;border-color:#66193f}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-pink-700,html[data-netbox-color-mode=dark] .btn-pink-700:focus{color:#fff;background-color:#6d1a43;border-color:#66193f;box-shadow:0 0 0 .25rem #93416980}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-pink-700,.btn-check:active+html[data-netbox-color-mode=dark] .btn-pink-700,html[data-netbox-color-mode=dark] .btn-pink-700:active,html[data-netbox-color-mode=dark] .btn-pink-700.active,.show>html[data-netbox-color-mode=dark] .btn-pink-700.dropdown-toggle{color:#fff;background-color:#66193f;border-color:#60173b}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-pink-700:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-pink-700:focus,html[data-netbox-color-mode=dark] .btn-pink-700:active:focus,html[data-netbox-color-mode=dark] .btn-pink-700.active:focus,.show>html[data-netbox-color-mode=dark] .btn-pink-700.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #93416980}html[data-netbox-color-mode=dark] .btn-pink-700:disabled,html[data-netbox-color-mode=dark] .btn-pink-700.disabled{color:#fff;background-color:#801f4f;border-color:#801f4f}html[data-netbox-color-mode=dark] .btn-pink-800{color:#fff;background-color:#561435;border-color:#561435}html[data-netbox-color-mode=dark] .btn-pink-800:hover{color:#fff;background-color:#49112d;border-color:#45102a}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-pink-800,html[data-netbox-color-mode=dark] .btn-pink-800:focus{color:#fff;background-color:#49112d;border-color:#45102a;box-shadow:0 0 0 .25rem #6f375380}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-pink-800,.btn-check:active+html[data-netbox-color-mode=dark] .btn-pink-800,html[data-netbox-color-mode=dark] .btn-pink-800:active,html[data-netbox-color-mode=dark] .btn-pink-800.active,.show>html[data-netbox-color-mode=dark] .btn-pink-800.dropdown-toggle{color:#fff;background-color:#45102a;border-color:#410f28}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-pink-800:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-pink-800:focus,html[data-netbox-color-mode=dark] .btn-pink-800:active:focus,html[data-netbox-color-mode=dark] .btn-pink-800.active:focus,.show>html[data-netbox-color-mode=dark] .btn-pink-800.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #6f375380}html[data-netbox-color-mode=dark] .btn-pink-800:disabled,html[data-netbox-color-mode=dark] .btn-pink-800.disabled{color:#fff;background-color:#561435;border-color:#561435}html[data-netbox-color-mode=dark] .btn-pink-900{color:#fff;background-color:#2b0a1a;border-color:#2b0a1a}html[data-netbox-color-mode=dark] .btn-pink-900:hover{color:#fff;background-color:#250916;border-color:#220815}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-pink-900,html[data-netbox-color-mode=dark] .btn-pink-900:focus{color:#fff;background-color:#250916;border-color:#220815;box-shadow:0 0 0 .25rem #4b2f3c80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-pink-900,.btn-check:active+html[data-netbox-color-mode=dark] .btn-pink-900,html[data-netbox-color-mode=dark] .btn-pink-900:active,html[data-netbox-color-mode=dark] .btn-pink-900.active,.show>html[data-netbox-color-mode=dark] .btn-pink-900.dropdown-toggle{color:#fff;background-color:#220815;border-color:#200814}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-pink-900:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-pink-900:focus,html[data-netbox-color-mode=dark] .btn-pink-900:active:focus,html[data-netbox-color-mode=dark] .btn-pink-900.active:focus,.show>html[data-netbox-color-mode=dark] .btn-pink-900.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #4b2f3c80}html[data-netbox-color-mode=dark] .btn-pink-900:disabled,html[data-netbox-color-mode=dark] .btn-pink-900.disabled{color:#fff;background-color:#2b0a1a;border-color:#2b0a1a}html[data-netbox-color-mode=dark] .btn-outline-primary{color:#6ea8fe;border-color:#6ea8fe}html[data-netbox-color-mode=dark] .btn-outline-primary:hover{color:#000;background-color:#6ea8fe;border-color:#6ea8fe}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-primary,html[data-netbox-color-mode=dark] .btn-outline-primary:focus{box-shadow:0 0 0 .25rem #6ea8fe80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-primary,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-primary,html[data-netbox-color-mode=dark] .btn-outline-primary:active,html[data-netbox-color-mode=dark] .btn-outline-primary.active,html[data-netbox-color-mode=dark] .btn-outline-primary.dropdown-toggle.show{color:#000;background-color:#6ea8fe;border-color:#6ea8fe}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-primary:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-primary:focus,html[data-netbox-color-mode=dark] .btn-outline-primary:active:focus,html[data-netbox-color-mode=dark] .btn-outline-primary.active:focus,html[data-netbox-color-mode=dark] .btn-outline-primary.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #6ea8fe80}html[data-netbox-color-mode=dark] .btn-outline-primary:disabled,html[data-netbox-color-mode=dark] .btn-outline-primary.disabled{color:#6ea8fe;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-secondary{color:#adb5bd;border-color:#adb5bd}html[data-netbox-color-mode=dark] .btn-outline-secondary:hover{color:#000;background-color:#adb5bd;border-color:#adb5bd}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-secondary,html[data-netbox-color-mode=dark] .btn-outline-secondary:focus{box-shadow:0 0 0 .25rem #adb5bd80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-secondary,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-secondary,html[data-netbox-color-mode=dark] .btn-outline-secondary:active,html[data-netbox-color-mode=dark] .btn-outline-secondary.active,html[data-netbox-color-mode=dark] .btn-outline-secondary.dropdown-toggle.show{color:#000;background-color:#adb5bd;border-color:#adb5bd}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-secondary:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-secondary:focus,html[data-netbox-color-mode=dark] .btn-outline-secondary:active:focus,html[data-netbox-color-mode=dark] .btn-outline-secondary.active:focus,html[data-netbox-color-mode=dark] .btn-outline-secondary.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #adb5bd80}html[data-netbox-color-mode=dark] .btn-outline-secondary:disabled,html[data-netbox-color-mode=dark] .btn-outline-secondary.disabled{color:#adb5bd;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-success{color:#75b798;border-color:#75b798}html[data-netbox-color-mode=dark] .btn-outline-success:hover{color:#000;background-color:#75b798;border-color:#75b798}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-success,html[data-netbox-color-mode=dark] .btn-outline-success:focus{box-shadow:0 0 0 .25rem #75b79880}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-success,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-success,html[data-netbox-color-mode=dark] .btn-outline-success:active,html[data-netbox-color-mode=dark] .btn-outline-success.active,html[data-netbox-color-mode=dark] .btn-outline-success.dropdown-toggle.show{color:#000;background-color:#75b798;border-color:#75b798}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-success:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-success:focus,html[data-netbox-color-mode=dark] .btn-outline-success:active:focus,html[data-netbox-color-mode=dark] .btn-outline-success.active:focus,html[data-netbox-color-mode=dark] .btn-outline-success.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #75b79880}html[data-netbox-color-mode=dark] .btn-outline-success:disabled,html[data-netbox-color-mode=dark] .btn-outline-success.disabled{color:#75b798;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-info{color:#6edff6;border-color:#6edff6}html[data-netbox-color-mode=dark] .btn-outline-info:hover{color:#000;background-color:#6edff6;border-color:#6edff6}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-info,html[data-netbox-color-mode=dark] .btn-outline-info:focus{box-shadow:0 0 0 .25rem #6edff680}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-info,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-info,html[data-netbox-color-mode=dark] .btn-outline-info:active,html[data-netbox-color-mode=dark] .btn-outline-info.active,html[data-netbox-color-mode=dark] .btn-outline-info.dropdown-toggle.show{color:#000;background-color:#6edff6;border-color:#6edff6}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-info:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-info:focus,html[data-netbox-color-mode=dark] .btn-outline-info:active:focus,html[data-netbox-color-mode=dark] .btn-outline-info.active:focus,html[data-netbox-color-mode=dark] .btn-outline-info.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #6edff680}html[data-netbox-color-mode=dark] .btn-outline-info:disabled,html[data-netbox-color-mode=dark] .btn-outline-info.disabled{color:#6edff6;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-warning{color:#ffda6a;border-color:#ffda6a}html[data-netbox-color-mode=dark] .btn-outline-warning:hover{color:#000;background-color:#ffda6a;border-color:#ffda6a}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-warning,html[data-netbox-color-mode=dark] .btn-outline-warning:focus{box-shadow:0 0 0 .25rem #ffda6a80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-warning,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-warning,html[data-netbox-color-mode=dark] .btn-outline-warning:active,html[data-netbox-color-mode=dark] .btn-outline-warning.active,html[data-netbox-color-mode=dark] .btn-outline-warning.dropdown-toggle.show{color:#000;background-color:#ffda6a;border-color:#ffda6a}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-warning:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-warning:focus,html[data-netbox-color-mode=dark] .btn-outline-warning:active:focus,html[data-netbox-color-mode=dark] .btn-outline-warning.active:focus,html[data-netbox-color-mode=dark] .btn-outline-warning.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #ffda6a80}html[data-netbox-color-mode=dark] .btn-outline-warning:disabled,html[data-netbox-color-mode=dark] .btn-outline-warning.disabled{color:#ffda6a;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-danger{color:#ea868f;border-color:#ea868f}html[data-netbox-color-mode=dark] .btn-outline-danger:hover{color:#000;background-color:#ea868f;border-color:#ea868f}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-danger,html[data-netbox-color-mode=dark] .btn-outline-danger:focus{box-shadow:0 0 0 .25rem #ea868f80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-danger,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-danger,html[data-netbox-color-mode=dark] .btn-outline-danger:active,html[data-netbox-color-mode=dark] .btn-outline-danger.active,html[data-netbox-color-mode=dark] .btn-outline-danger.dropdown-toggle.show{color:#000;background-color:#ea868f;border-color:#ea868f}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-danger:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-danger:focus,html[data-netbox-color-mode=dark] .btn-outline-danger:active:focus,html[data-netbox-color-mode=dark] .btn-outline-danger.active:focus,html[data-netbox-color-mode=dark] .btn-outline-danger.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #ea868f80}html[data-netbox-color-mode=dark] .btn-outline-danger:disabled,html[data-netbox-color-mode=dark] .btn-outline-danger.disabled{color:#ea868f;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-light{color:#dee2e6;border-color:#dee2e6}html[data-netbox-color-mode=dark] .btn-outline-light:hover{color:#000;background-color:#dee2e6;border-color:#dee2e6}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-light,html[data-netbox-color-mode=dark] .btn-outline-light:focus{box-shadow:0 0 0 .25rem #dee2e680}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-light,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-light,html[data-netbox-color-mode=dark] .btn-outline-light:active,html[data-netbox-color-mode=dark] .btn-outline-light.active,html[data-netbox-color-mode=dark] .btn-outline-light.dropdown-toggle.show{color:#000;background-color:#dee2e6;border-color:#dee2e6}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-light:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-light:focus,html[data-netbox-color-mode=dark] .btn-outline-light:active:focus,html[data-netbox-color-mode=dark] .btn-outline-light.active:focus,html[data-netbox-color-mode=dark] .btn-outline-light.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #dee2e680}html[data-netbox-color-mode=dark] .btn-outline-light:disabled,html[data-netbox-color-mode=dark] .btn-outline-light.disabled{color:#dee2e6;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-dark{color:#adb5bd;border-color:#adb5bd}html[data-netbox-color-mode=dark] .btn-outline-dark:hover{color:#000;background-color:#adb5bd;border-color:#adb5bd}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-dark,html[data-netbox-color-mode=dark] .btn-outline-dark:focus{box-shadow:0 0 0 .25rem #adb5bd80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-dark,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-dark,html[data-netbox-color-mode=dark] .btn-outline-dark:active,html[data-netbox-color-mode=dark] .btn-outline-dark.active,html[data-netbox-color-mode=dark] .btn-outline-dark.dropdown-toggle.show{color:#000;background-color:#adb5bd;border-color:#adb5bd}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-dark:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-dark:focus,html[data-netbox-color-mode=dark] .btn-outline-dark:active:focus,html[data-netbox-color-mode=dark] .btn-outline-dark.active:focus,html[data-netbox-color-mode=dark] .btn-outline-dark.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #adb5bd80}html[data-netbox-color-mode=dark] .btn-outline-dark:disabled,html[data-netbox-color-mode=dark] .btn-outline-dark.disabled{color:#adb5bd;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-red{color:#ea868f;border-color:#ea868f}html[data-netbox-color-mode=dark] .btn-outline-red:hover{color:#000;background-color:#ea868f;border-color:#ea868f}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-red,html[data-netbox-color-mode=dark] .btn-outline-red:focus{box-shadow:0 0 0 .25rem #ea868f80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-red,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-red,html[data-netbox-color-mode=dark] .btn-outline-red:active,html[data-netbox-color-mode=dark] .btn-outline-red.active,html[data-netbox-color-mode=dark] .btn-outline-red.dropdown-toggle.show{color:#000;background-color:#ea868f;border-color:#ea868f}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-red:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-red:focus,html[data-netbox-color-mode=dark] .btn-outline-red:active:focus,html[data-netbox-color-mode=dark] .btn-outline-red.active:focus,html[data-netbox-color-mode=dark] .btn-outline-red.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #ea868f80}html[data-netbox-color-mode=dark] .btn-outline-red:disabled,html[data-netbox-color-mode=dark] .btn-outline-red.disabled{color:#ea868f;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-yellow{color:#ffda6a;border-color:#ffda6a}html[data-netbox-color-mode=dark] .btn-outline-yellow:hover{color:#000;background-color:#ffda6a;border-color:#ffda6a}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-yellow,html[data-netbox-color-mode=dark] .btn-outline-yellow:focus{box-shadow:0 0 0 .25rem #ffda6a80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-yellow,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-yellow,html[data-netbox-color-mode=dark] .btn-outline-yellow:active,html[data-netbox-color-mode=dark] .btn-outline-yellow.active,html[data-netbox-color-mode=dark] .btn-outline-yellow.dropdown-toggle.show{color:#000;background-color:#ffda6a;border-color:#ffda6a}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-yellow:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-yellow:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow:active:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow.active:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #ffda6a80}html[data-netbox-color-mode=dark] .btn-outline-yellow:disabled,html[data-netbox-color-mode=dark] .btn-outline-yellow.disabled{color:#ffda6a;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-green{color:#75b798;border-color:#75b798}html[data-netbox-color-mode=dark] .btn-outline-green:hover{color:#000;background-color:#75b798;border-color:#75b798}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-green,html[data-netbox-color-mode=dark] .btn-outline-green:focus{box-shadow:0 0 0 .25rem #75b79880}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-green,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-green,html[data-netbox-color-mode=dark] .btn-outline-green:active,html[data-netbox-color-mode=dark] .btn-outline-green.active,html[data-netbox-color-mode=dark] .btn-outline-green.dropdown-toggle.show{color:#000;background-color:#75b798;border-color:#75b798}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-green:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-green:focus,html[data-netbox-color-mode=dark] .btn-outline-green:active:focus,html[data-netbox-color-mode=dark] .btn-outline-green.active:focus,html[data-netbox-color-mode=dark] .btn-outline-green.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #75b79880}html[data-netbox-color-mode=dark] .btn-outline-green:disabled,html[data-netbox-color-mode=dark] .btn-outline-green.disabled{color:#75b798;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-blue{color:#6ea8fe;border-color:#6ea8fe}html[data-netbox-color-mode=dark] .btn-outline-blue:hover{color:#000;background-color:#6ea8fe;border-color:#6ea8fe}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-blue,html[data-netbox-color-mode=dark] .btn-outline-blue:focus{box-shadow:0 0 0 .25rem #6ea8fe80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-blue,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-blue,html[data-netbox-color-mode=dark] .btn-outline-blue:active,html[data-netbox-color-mode=dark] .btn-outline-blue.active,html[data-netbox-color-mode=dark] .btn-outline-blue.dropdown-toggle.show{color:#000;background-color:#6ea8fe;border-color:#6ea8fe}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-blue:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-blue:focus,html[data-netbox-color-mode=dark] .btn-outline-blue:active:focus,html[data-netbox-color-mode=dark] .btn-outline-blue.active:focus,html[data-netbox-color-mode=dark] .btn-outline-blue.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #6ea8fe80}html[data-netbox-color-mode=dark] .btn-outline-blue:disabled,html[data-netbox-color-mode=dark] .btn-outline-blue.disabled{color:#6ea8fe;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-cyan{color:#6edff6;border-color:#6edff6}html[data-netbox-color-mode=dark] .btn-outline-cyan:hover{color:#000;background-color:#6edff6;border-color:#6edff6}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-cyan,html[data-netbox-color-mode=dark] .btn-outline-cyan:focus{box-shadow:0 0 0 .25rem #6edff680}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-cyan,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-cyan,html[data-netbox-color-mode=dark] .btn-outline-cyan:active,html[data-netbox-color-mode=dark] .btn-outline-cyan.active,html[data-netbox-color-mode=dark] .btn-outline-cyan.dropdown-toggle.show{color:#000;background-color:#6edff6;border-color:#6edff6}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-cyan:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-cyan:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan:active:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan.active:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #6edff680}html[data-netbox-color-mode=dark] .btn-outline-cyan:disabled,html[data-netbox-color-mode=dark] .btn-outline-cyan.disabled{color:#6edff6;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-indigo{color:#a370f7;border-color:#a370f7}html[data-netbox-color-mode=dark] .btn-outline-indigo:hover{color:#000;background-color:#a370f7;border-color:#a370f7}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-indigo,html[data-netbox-color-mode=dark] .btn-outline-indigo:focus{box-shadow:0 0 0 .25rem #a370f780}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-indigo,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-indigo,html[data-netbox-color-mode=dark] .btn-outline-indigo:active,html[data-netbox-color-mode=dark] .btn-outline-indigo.active,html[data-netbox-color-mode=dark] .btn-outline-indigo.dropdown-toggle.show{color:#000;background-color:#a370f7;border-color:#a370f7}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-indigo:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-indigo:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo:active:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo.active:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #a370f780}html[data-netbox-color-mode=dark] .btn-outline-indigo:disabled,html[data-netbox-color-mode=dark] .btn-outline-indigo.disabled{color:#a370f7;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-purple{color:#a98eda;border-color:#a98eda}html[data-netbox-color-mode=dark] .btn-outline-purple:hover{color:#000;background-color:#a98eda;border-color:#a98eda}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-purple,html[data-netbox-color-mode=dark] .btn-outline-purple:focus{box-shadow:0 0 0 .25rem #a98eda80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-purple,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-purple,html[data-netbox-color-mode=dark] .btn-outline-purple:active,html[data-netbox-color-mode=dark] .btn-outline-purple.active,html[data-netbox-color-mode=dark] .btn-outline-purple.dropdown-toggle.show{color:#000;background-color:#a98eda;border-color:#a98eda}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-purple:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-purple:focus,html[data-netbox-color-mode=dark] .btn-outline-purple:active:focus,html[data-netbox-color-mode=dark] .btn-outline-purple.active:focus,html[data-netbox-color-mode=dark] .btn-outline-purple.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #a98eda80}html[data-netbox-color-mode=dark] .btn-outline-purple:disabled,html[data-netbox-color-mode=dark] .btn-outline-purple.disabled{color:#a98eda;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-pink{color:#e685b5;border-color:#e685b5}html[data-netbox-color-mode=dark] .btn-outline-pink:hover{color:#000;background-color:#e685b5;border-color:#e685b5}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-pink,html[data-netbox-color-mode=dark] .btn-outline-pink:focus{box-shadow:0 0 0 .25rem #e685b580}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-pink,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-pink,html[data-netbox-color-mode=dark] .btn-outline-pink:active,html[data-netbox-color-mode=dark] .btn-outline-pink.active,html[data-netbox-color-mode=dark] .btn-outline-pink.dropdown-toggle.show{color:#000;background-color:#e685b5;border-color:#e685b5}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-pink:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-pink:focus,html[data-netbox-color-mode=dark] .btn-outline-pink:active:focus,html[data-netbox-color-mode=dark] .btn-outline-pink.active:focus,html[data-netbox-color-mode=dark] .btn-outline-pink.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #e685b580}html[data-netbox-color-mode=dark] .btn-outline-pink:disabled,html[data-netbox-color-mode=dark] .btn-outline-pink.disabled{color:#e685b5;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-darker{color:#1b1f22;border-color:#1b1f22}html[data-netbox-color-mode=dark] .btn-outline-darker:hover{color:#fff;background-color:#1b1f22;border-color:#1b1f22}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-darker,html[data-netbox-color-mode=dark] .btn-outline-darker:focus{box-shadow:0 0 0 .25rem #1b1f2280}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-darker,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-darker,html[data-netbox-color-mode=dark] .btn-outline-darker:active,html[data-netbox-color-mode=dark] .btn-outline-darker.active,html[data-netbox-color-mode=dark] .btn-outline-darker.dropdown-toggle.show{color:#fff;background-color:#1b1f22;border-color:#1b1f22}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-darker:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-darker:focus,html[data-netbox-color-mode=dark] .btn-outline-darker:active:focus,html[data-netbox-color-mode=dark] .btn-outline-darker.active:focus,html[data-netbox-color-mode=dark] .btn-outline-darker.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #1b1f2280}html[data-netbox-color-mode=dark] .btn-outline-darker:disabled,html[data-netbox-color-mode=dark] .btn-outline-darker.disabled{color:#1b1f22;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-darkest{color:#171b1d;border-color:#171b1d}html[data-netbox-color-mode=dark] .btn-outline-darkest:hover{color:#fff;background-color:#171b1d;border-color:#171b1d}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-darkest,html[data-netbox-color-mode=dark] .btn-outline-darkest:focus{box-shadow:0 0 0 .25rem #171b1d80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-darkest,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-darkest,html[data-netbox-color-mode=dark] .btn-outline-darkest:active,html[data-netbox-color-mode=dark] .btn-outline-darkest.active,html[data-netbox-color-mode=dark] .btn-outline-darkest.dropdown-toggle.show{color:#fff;background-color:#171b1d;border-color:#171b1d}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-darkest:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-darkest:focus,html[data-netbox-color-mode=dark] .btn-outline-darkest:active:focus,html[data-netbox-color-mode=dark] .btn-outline-darkest.active:focus,html[data-netbox-color-mode=dark] .btn-outline-darkest.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #171b1d80}html[data-netbox-color-mode=dark] .btn-outline-darkest:disabled,html[data-netbox-color-mode=dark] .btn-outline-darkest.disabled{color:#171b1d;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-gray{color:#ced4da;border-color:#ced4da}html[data-netbox-color-mode=dark] .btn-outline-gray:hover{color:#000;background-color:#ced4da;border-color:#ced4da}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-gray,html[data-netbox-color-mode=dark] .btn-outline-gray:focus{box-shadow:0 0 0 .25rem #ced4da80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-gray,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-gray,html[data-netbox-color-mode=dark] .btn-outline-gray:active,html[data-netbox-color-mode=dark] .btn-outline-gray.active,html[data-netbox-color-mode=dark] .btn-outline-gray.dropdown-toggle.show{color:#000;background-color:#ced4da;border-color:#ced4da}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-gray:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-gray:focus,html[data-netbox-color-mode=dark] .btn-outline-gray:active:focus,html[data-netbox-color-mode=dark] .btn-outline-gray.active:focus,html[data-netbox-color-mode=dark] .btn-outline-gray.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #ced4da80}html[data-netbox-color-mode=dark] .btn-outline-gray:disabled,html[data-netbox-color-mode=dark] .btn-outline-gray.disabled{color:#ced4da;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-gray-100{color:#f8f9fa;border-color:#f8f9fa}html[data-netbox-color-mode=dark] .btn-outline-gray-100:hover{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-gray-100,html[data-netbox-color-mode=dark] .btn-outline-gray-100:focus{box-shadow:0 0 0 .25rem #f8f9fa80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-gray-100,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-gray-100,html[data-netbox-color-mode=dark] .btn-outline-gray-100:active,html[data-netbox-color-mode=dark] .btn-outline-gray-100.active,html[data-netbox-color-mode=dark] .btn-outline-gray-100.dropdown-toggle.show{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-gray-100:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-gray-100:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-100:active:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-100.active:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-100.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #f8f9fa80}html[data-netbox-color-mode=dark] .btn-outline-gray-100:disabled,html[data-netbox-color-mode=dark] .btn-outline-gray-100.disabled{color:#f8f9fa;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-gray-200{color:#e9ecef;border-color:#e9ecef}html[data-netbox-color-mode=dark] .btn-outline-gray-200:hover{color:#000;background-color:#e9ecef;border-color:#e9ecef}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-gray-200,html[data-netbox-color-mode=dark] .btn-outline-gray-200:focus{box-shadow:0 0 0 .25rem #e9ecef80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-gray-200,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-gray-200,html[data-netbox-color-mode=dark] .btn-outline-gray-200:active,html[data-netbox-color-mode=dark] .btn-outline-gray-200.active,html[data-netbox-color-mode=dark] .btn-outline-gray-200.dropdown-toggle.show{color:#000;background-color:#e9ecef;border-color:#e9ecef}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-gray-200:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-gray-200:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-200:active:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-200.active:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-200.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #e9ecef80}html[data-netbox-color-mode=dark] .btn-outline-gray-200:disabled,html[data-netbox-color-mode=dark] .btn-outline-gray-200.disabled{color:#e9ecef;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-gray-300{color:#dee2e6;border-color:#dee2e6}html[data-netbox-color-mode=dark] .btn-outline-gray-300:hover{color:#000;background-color:#dee2e6;border-color:#dee2e6}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-gray-300,html[data-netbox-color-mode=dark] .btn-outline-gray-300:focus{box-shadow:0 0 0 .25rem #dee2e680}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-gray-300,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-gray-300,html[data-netbox-color-mode=dark] .btn-outline-gray-300:active,html[data-netbox-color-mode=dark] .btn-outline-gray-300.active,html[data-netbox-color-mode=dark] .btn-outline-gray-300.dropdown-toggle.show{color:#000;background-color:#dee2e6;border-color:#dee2e6}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-gray-300:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-gray-300:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-300:active:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-300.active:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-300.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #dee2e680}html[data-netbox-color-mode=dark] .btn-outline-gray-300:disabled,html[data-netbox-color-mode=dark] .btn-outline-gray-300.disabled{color:#dee2e6;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-gray-400{color:#ced4da;border-color:#ced4da}html[data-netbox-color-mode=dark] .btn-outline-gray-400:hover{color:#000;background-color:#ced4da;border-color:#ced4da}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-gray-400,html[data-netbox-color-mode=dark] .btn-outline-gray-400:focus{box-shadow:0 0 0 .25rem #ced4da80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-gray-400,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-gray-400,html[data-netbox-color-mode=dark] .btn-outline-gray-400:active,html[data-netbox-color-mode=dark] .btn-outline-gray-400.active,html[data-netbox-color-mode=dark] .btn-outline-gray-400.dropdown-toggle.show{color:#000;background-color:#ced4da;border-color:#ced4da}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-gray-400:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-gray-400:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-400:active:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-400.active:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-400.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #ced4da80}html[data-netbox-color-mode=dark] .btn-outline-gray-400:disabled,html[data-netbox-color-mode=dark] .btn-outline-gray-400.disabled{color:#ced4da;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-gray-500{color:#adb5bd;border-color:#adb5bd}html[data-netbox-color-mode=dark] .btn-outline-gray-500:hover{color:#000;background-color:#adb5bd;border-color:#adb5bd}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-gray-500,html[data-netbox-color-mode=dark] .btn-outline-gray-500:focus{box-shadow:0 0 0 .25rem #adb5bd80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-gray-500,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-gray-500,html[data-netbox-color-mode=dark] .btn-outline-gray-500:active,html[data-netbox-color-mode=dark] .btn-outline-gray-500.active,html[data-netbox-color-mode=dark] .btn-outline-gray-500.dropdown-toggle.show{color:#000;background-color:#adb5bd;border-color:#adb5bd}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-gray-500:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-gray-500:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-500:active:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-500.active:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-500.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #adb5bd80}html[data-netbox-color-mode=dark] .btn-outline-gray-500:disabled,html[data-netbox-color-mode=dark] .btn-outline-gray-500.disabled{color:#adb5bd;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-gray-600{color:#6c757d;border-color:#6c757d}html[data-netbox-color-mode=dark] .btn-outline-gray-600:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-gray-600,html[data-netbox-color-mode=dark] .btn-outline-gray-600:focus{box-shadow:0 0 0 .25rem #6c757d80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-gray-600,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-gray-600,html[data-netbox-color-mode=dark] .btn-outline-gray-600:active,html[data-netbox-color-mode=dark] .btn-outline-gray-600.active,html[data-netbox-color-mode=dark] .btn-outline-gray-600.dropdown-toggle.show{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-gray-600:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-gray-600:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-600:active:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-600.active:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-600.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #6c757d80}html[data-netbox-color-mode=dark] .btn-outline-gray-600:disabled,html[data-netbox-color-mode=dark] .btn-outline-gray-600.disabled{color:#6c757d;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-gray-700{color:#495057;border-color:#495057}html[data-netbox-color-mode=dark] .btn-outline-gray-700:hover{color:#fff;background-color:#495057;border-color:#495057}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-gray-700,html[data-netbox-color-mode=dark] .btn-outline-gray-700:focus{box-shadow:0 0 0 .25rem #49505780}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-gray-700,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-gray-700,html[data-netbox-color-mode=dark] .btn-outline-gray-700:active,html[data-netbox-color-mode=dark] .btn-outline-gray-700.active,html[data-netbox-color-mode=dark] .btn-outline-gray-700.dropdown-toggle.show{color:#fff;background-color:#495057;border-color:#495057}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-gray-700:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-gray-700:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-700:active:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-700.active:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-700.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #49505780}html[data-netbox-color-mode=dark] .btn-outline-gray-700:disabled,html[data-netbox-color-mode=dark] .btn-outline-gray-700.disabled{color:#495057;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-gray-800{color:#343a40;border-color:#343a40}html[data-netbox-color-mode=dark] .btn-outline-gray-800:hover{color:#fff;background-color:#343a40;border-color:#343a40}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-gray-800,html[data-netbox-color-mode=dark] .btn-outline-gray-800:focus{box-shadow:0 0 0 .25rem #343a4080}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-gray-800,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-gray-800,html[data-netbox-color-mode=dark] .btn-outline-gray-800:active,html[data-netbox-color-mode=dark] .btn-outline-gray-800.active,html[data-netbox-color-mode=dark] .btn-outline-gray-800.dropdown-toggle.show{color:#fff;background-color:#343a40;border-color:#343a40}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-gray-800:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-gray-800:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-800:active:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-800.active:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-800.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #343a4080}html[data-netbox-color-mode=dark] .btn-outline-gray-800:disabled,html[data-netbox-color-mode=dark] .btn-outline-gray-800.disabled{color:#343a40;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-gray-900{color:#212529;border-color:#212529}html[data-netbox-color-mode=dark] .btn-outline-gray-900:hover{color:#fff;background-color:#212529;border-color:#212529}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-gray-900,html[data-netbox-color-mode=dark] .btn-outline-gray-900:focus{box-shadow:0 0 0 .25rem #21252980}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-gray-900,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-gray-900,html[data-netbox-color-mode=dark] .btn-outline-gray-900:active,html[data-netbox-color-mode=dark] .btn-outline-gray-900.active,html[data-netbox-color-mode=dark] .btn-outline-gray-900.dropdown-toggle.show{color:#fff;background-color:#212529;border-color:#212529}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-gray-900:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-gray-900:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-900:active:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-900.active:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-900.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #21252980}html[data-netbox-color-mode=dark] .btn-outline-gray-900:disabled,html[data-netbox-color-mode=dark] .btn-outline-gray-900.disabled{color:#212529;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-red-100{color:#f8d7da;border-color:#f8d7da}html[data-netbox-color-mode=dark] .btn-outline-red-100:hover{color:#000;background-color:#f8d7da;border-color:#f8d7da}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-red-100,html[data-netbox-color-mode=dark] .btn-outline-red-100:focus{box-shadow:0 0 0 .25rem #f8d7da80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-red-100,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-red-100,html[data-netbox-color-mode=dark] .btn-outline-red-100:active,html[data-netbox-color-mode=dark] .btn-outline-red-100.active,html[data-netbox-color-mode=dark] .btn-outline-red-100.dropdown-toggle.show{color:#000;background-color:#f8d7da;border-color:#f8d7da}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-red-100:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-red-100:focus,html[data-netbox-color-mode=dark] .btn-outline-red-100:active:focus,html[data-netbox-color-mode=dark] .btn-outline-red-100.active:focus,html[data-netbox-color-mode=dark] .btn-outline-red-100.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #f8d7da80}html[data-netbox-color-mode=dark] .btn-outline-red-100:disabled,html[data-netbox-color-mode=dark] .btn-outline-red-100.disabled{color:#f8d7da;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-red-200{color:#f1aeb5;border-color:#f1aeb5}html[data-netbox-color-mode=dark] .btn-outline-red-200:hover{color:#000;background-color:#f1aeb5;border-color:#f1aeb5}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-red-200,html[data-netbox-color-mode=dark] .btn-outline-red-200:focus{box-shadow:0 0 0 .25rem #f1aeb580}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-red-200,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-red-200,html[data-netbox-color-mode=dark] .btn-outline-red-200:active,html[data-netbox-color-mode=dark] .btn-outline-red-200.active,html[data-netbox-color-mode=dark] .btn-outline-red-200.dropdown-toggle.show{color:#000;background-color:#f1aeb5;border-color:#f1aeb5}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-red-200:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-red-200:focus,html[data-netbox-color-mode=dark] .btn-outline-red-200:active:focus,html[data-netbox-color-mode=dark] .btn-outline-red-200.active:focus,html[data-netbox-color-mode=dark] .btn-outline-red-200.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #f1aeb580}html[data-netbox-color-mode=dark] .btn-outline-red-200:disabled,html[data-netbox-color-mode=dark] .btn-outline-red-200.disabled{color:#f1aeb5;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-red-300{color:#ea868f;border-color:#ea868f}html[data-netbox-color-mode=dark] .btn-outline-red-300:hover{color:#000;background-color:#ea868f;border-color:#ea868f}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-red-300,html[data-netbox-color-mode=dark] .btn-outline-red-300:focus{box-shadow:0 0 0 .25rem #ea868f80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-red-300,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-red-300,html[data-netbox-color-mode=dark] .btn-outline-red-300:active,html[data-netbox-color-mode=dark] .btn-outline-red-300.active,html[data-netbox-color-mode=dark] .btn-outline-red-300.dropdown-toggle.show{color:#000;background-color:#ea868f;border-color:#ea868f}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-red-300:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-red-300:focus,html[data-netbox-color-mode=dark] .btn-outline-red-300:active:focus,html[data-netbox-color-mode=dark] .btn-outline-red-300.active:focus,html[data-netbox-color-mode=dark] .btn-outline-red-300.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #ea868f80}html[data-netbox-color-mode=dark] .btn-outline-red-300:disabled,html[data-netbox-color-mode=dark] .btn-outline-red-300.disabled{color:#ea868f;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-red-400{color:#e35d6a;border-color:#e35d6a}html[data-netbox-color-mode=dark] .btn-outline-red-400:hover{color:#000;background-color:#e35d6a;border-color:#e35d6a}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-red-400,html[data-netbox-color-mode=dark] .btn-outline-red-400:focus{box-shadow:0 0 0 .25rem #e35d6a80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-red-400,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-red-400,html[data-netbox-color-mode=dark] .btn-outline-red-400:active,html[data-netbox-color-mode=dark] .btn-outline-red-400.active,html[data-netbox-color-mode=dark] .btn-outline-red-400.dropdown-toggle.show{color:#000;background-color:#e35d6a;border-color:#e35d6a}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-red-400:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-red-400:focus,html[data-netbox-color-mode=dark] .btn-outline-red-400:active:focus,html[data-netbox-color-mode=dark] .btn-outline-red-400.active:focus,html[data-netbox-color-mode=dark] .btn-outline-red-400.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #e35d6a80}html[data-netbox-color-mode=dark] .btn-outline-red-400:disabled,html[data-netbox-color-mode=dark] .btn-outline-red-400.disabled{color:#e35d6a;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-red-500{color:#dc3545;border-color:#dc3545}html[data-netbox-color-mode=dark] .btn-outline-red-500:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-red-500,html[data-netbox-color-mode=dark] .btn-outline-red-500:focus{box-shadow:0 0 0 .25rem #dc354580}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-red-500,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-red-500,html[data-netbox-color-mode=dark] .btn-outline-red-500:active,html[data-netbox-color-mode=dark] .btn-outline-red-500.active,html[data-netbox-color-mode=dark] .btn-outline-red-500.dropdown-toggle.show{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-red-500:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-red-500:focus,html[data-netbox-color-mode=dark] .btn-outline-red-500:active:focus,html[data-netbox-color-mode=dark] .btn-outline-red-500.active:focus,html[data-netbox-color-mode=dark] .btn-outline-red-500.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #dc354580}html[data-netbox-color-mode=dark] .btn-outline-red-500:disabled,html[data-netbox-color-mode=dark] .btn-outline-red-500.disabled{color:#dc3545;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-red-600{color:#b02a37;border-color:#b02a37}html[data-netbox-color-mode=dark] .btn-outline-red-600:hover{color:#fff;background-color:#b02a37;border-color:#b02a37}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-red-600,html[data-netbox-color-mode=dark] .btn-outline-red-600:focus{box-shadow:0 0 0 .25rem #b02a3780}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-red-600,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-red-600,html[data-netbox-color-mode=dark] .btn-outline-red-600:active,html[data-netbox-color-mode=dark] .btn-outline-red-600.active,html[data-netbox-color-mode=dark] .btn-outline-red-600.dropdown-toggle.show{color:#fff;background-color:#b02a37;border-color:#b02a37}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-red-600:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-red-600:focus,html[data-netbox-color-mode=dark] .btn-outline-red-600:active:focus,html[data-netbox-color-mode=dark] .btn-outline-red-600.active:focus,html[data-netbox-color-mode=dark] .btn-outline-red-600.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #b02a3780}html[data-netbox-color-mode=dark] .btn-outline-red-600:disabled,html[data-netbox-color-mode=dark] .btn-outline-red-600.disabled{color:#b02a37;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-red-700{color:#842029;border-color:#842029}html[data-netbox-color-mode=dark] .btn-outline-red-700:hover{color:#fff;background-color:#842029;border-color:#842029}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-red-700,html[data-netbox-color-mode=dark] .btn-outline-red-700:focus{box-shadow:0 0 0 .25rem #84202980}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-red-700,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-red-700,html[data-netbox-color-mode=dark] .btn-outline-red-700:active,html[data-netbox-color-mode=dark] .btn-outline-red-700.active,html[data-netbox-color-mode=dark] .btn-outline-red-700.dropdown-toggle.show{color:#fff;background-color:#842029;border-color:#842029}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-red-700:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-red-700:focus,html[data-netbox-color-mode=dark] .btn-outline-red-700:active:focus,html[data-netbox-color-mode=dark] .btn-outline-red-700.active:focus,html[data-netbox-color-mode=dark] .btn-outline-red-700.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #84202980}html[data-netbox-color-mode=dark] .btn-outline-red-700:disabled,html[data-netbox-color-mode=dark] .btn-outline-red-700.disabled{color:#842029;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-red-800{color:#58151c;border-color:#58151c}html[data-netbox-color-mode=dark] .btn-outline-red-800:hover{color:#fff;background-color:#58151c;border-color:#58151c}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-red-800,html[data-netbox-color-mode=dark] .btn-outline-red-800:focus{box-shadow:0 0 0 .25rem #58151c80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-red-800,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-red-800,html[data-netbox-color-mode=dark] .btn-outline-red-800:active,html[data-netbox-color-mode=dark] .btn-outline-red-800.active,html[data-netbox-color-mode=dark] .btn-outline-red-800.dropdown-toggle.show{color:#fff;background-color:#58151c;border-color:#58151c}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-red-800:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-red-800:focus,html[data-netbox-color-mode=dark] .btn-outline-red-800:active:focus,html[data-netbox-color-mode=dark] .btn-outline-red-800.active:focus,html[data-netbox-color-mode=dark] .btn-outline-red-800.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #58151c80}html[data-netbox-color-mode=dark] .btn-outline-red-800:disabled,html[data-netbox-color-mode=dark] .btn-outline-red-800.disabled{color:#58151c;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-red-900{color:#2c0b0e;border-color:#2c0b0e}html[data-netbox-color-mode=dark] .btn-outline-red-900:hover{color:#fff;background-color:#2c0b0e;border-color:#2c0b0e}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-red-900,html[data-netbox-color-mode=dark] .btn-outline-red-900:focus{box-shadow:0 0 0 .25rem #2c0b0e80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-red-900,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-red-900,html[data-netbox-color-mode=dark] .btn-outline-red-900:active,html[data-netbox-color-mode=dark] .btn-outline-red-900.active,html[data-netbox-color-mode=dark] .btn-outline-red-900.dropdown-toggle.show{color:#fff;background-color:#2c0b0e;border-color:#2c0b0e}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-red-900:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-red-900:focus,html[data-netbox-color-mode=dark] .btn-outline-red-900:active:focus,html[data-netbox-color-mode=dark] .btn-outline-red-900.active:focus,html[data-netbox-color-mode=dark] .btn-outline-red-900.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #2c0b0e80}html[data-netbox-color-mode=dark] .btn-outline-red-900:disabled,html[data-netbox-color-mode=dark] .btn-outline-red-900.disabled{color:#2c0b0e;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-yellow-100{color:#fff3cd;border-color:#fff3cd}html[data-netbox-color-mode=dark] .btn-outline-yellow-100:hover{color:#000;background-color:#fff3cd;border-color:#fff3cd}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-yellow-100,html[data-netbox-color-mode=dark] .btn-outline-yellow-100:focus{box-shadow:0 0 0 .25rem #fff3cd80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-yellow-100,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-yellow-100,html[data-netbox-color-mode=dark] .btn-outline-yellow-100:active,html[data-netbox-color-mode=dark] .btn-outline-yellow-100.active,html[data-netbox-color-mode=dark] .btn-outline-yellow-100.dropdown-toggle.show{color:#000;background-color:#fff3cd;border-color:#fff3cd}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-yellow-100:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-yellow-100:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-100:active:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-100.active:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-100.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #fff3cd80}html[data-netbox-color-mode=dark] .btn-outline-yellow-100:disabled,html[data-netbox-color-mode=dark] .btn-outline-yellow-100.disabled{color:#fff3cd;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-yellow-200{color:#ffe69c;border-color:#ffe69c}html[data-netbox-color-mode=dark] .btn-outline-yellow-200:hover{color:#000;background-color:#ffe69c;border-color:#ffe69c}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-yellow-200,html[data-netbox-color-mode=dark] .btn-outline-yellow-200:focus{box-shadow:0 0 0 .25rem #ffe69c80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-yellow-200,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-yellow-200,html[data-netbox-color-mode=dark] .btn-outline-yellow-200:active,html[data-netbox-color-mode=dark] .btn-outline-yellow-200.active,html[data-netbox-color-mode=dark] .btn-outline-yellow-200.dropdown-toggle.show{color:#000;background-color:#ffe69c;border-color:#ffe69c}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-yellow-200:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-yellow-200:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-200:active:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-200.active:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-200.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #ffe69c80}html[data-netbox-color-mode=dark] .btn-outline-yellow-200:disabled,html[data-netbox-color-mode=dark] .btn-outline-yellow-200.disabled{color:#ffe69c;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-yellow-300{color:#ffda6a;border-color:#ffda6a}html[data-netbox-color-mode=dark] .btn-outline-yellow-300:hover{color:#000;background-color:#ffda6a;border-color:#ffda6a}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-yellow-300,html[data-netbox-color-mode=dark] .btn-outline-yellow-300:focus{box-shadow:0 0 0 .25rem #ffda6a80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-yellow-300,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-yellow-300,html[data-netbox-color-mode=dark] .btn-outline-yellow-300:active,html[data-netbox-color-mode=dark] .btn-outline-yellow-300.active,html[data-netbox-color-mode=dark] .btn-outline-yellow-300.dropdown-toggle.show{color:#000;background-color:#ffda6a;border-color:#ffda6a}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-yellow-300:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-yellow-300:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-300:active:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-300.active:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-300.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #ffda6a80}html[data-netbox-color-mode=dark] .btn-outline-yellow-300:disabled,html[data-netbox-color-mode=dark] .btn-outline-yellow-300.disabled{color:#ffda6a;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-yellow-400{color:#ffcd39;border-color:#ffcd39}html[data-netbox-color-mode=dark] .btn-outline-yellow-400:hover{color:#000;background-color:#ffcd39;border-color:#ffcd39}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-yellow-400,html[data-netbox-color-mode=dark] .btn-outline-yellow-400:focus{box-shadow:0 0 0 .25rem #ffcd3980}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-yellow-400,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-yellow-400,html[data-netbox-color-mode=dark] .btn-outline-yellow-400:active,html[data-netbox-color-mode=dark] .btn-outline-yellow-400.active,html[data-netbox-color-mode=dark] .btn-outline-yellow-400.dropdown-toggle.show{color:#000;background-color:#ffcd39;border-color:#ffcd39}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-yellow-400:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-yellow-400:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-400:active:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-400.active:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-400.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #ffcd3980}html[data-netbox-color-mode=dark] .btn-outline-yellow-400:disabled,html[data-netbox-color-mode=dark] .btn-outline-yellow-400.disabled{color:#ffcd39;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-yellow-500{color:#ffc107;border-color:#ffc107}html[data-netbox-color-mode=dark] .btn-outline-yellow-500:hover{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-yellow-500,html[data-netbox-color-mode=dark] .btn-outline-yellow-500:focus{box-shadow:0 0 0 .25rem #ffc10780}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-yellow-500,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-yellow-500,html[data-netbox-color-mode=dark] .btn-outline-yellow-500:active,html[data-netbox-color-mode=dark] .btn-outline-yellow-500.active,html[data-netbox-color-mode=dark] .btn-outline-yellow-500.dropdown-toggle.show{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-yellow-500:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-yellow-500:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-500:active:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-500.active:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-500.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #ffc10780}html[data-netbox-color-mode=dark] .btn-outline-yellow-500:disabled,html[data-netbox-color-mode=dark] .btn-outline-yellow-500.disabled{color:#ffc107;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-yellow-600{color:#cc9a06;border-color:#cc9a06}html[data-netbox-color-mode=dark] .btn-outline-yellow-600:hover{color:#000;background-color:#cc9a06;border-color:#cc9a06}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-yellow-600,html[data-netbox-color-mode=dark] .btn-outline-yellow-600:focus{box-shadow:0 0 0 .25rem #cc9a0680}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-yellow-600,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-yellow-600,html[data-netbox-color-mode=dark] .btn-outline-yellow-600:active,html[data-netbox-color-mode=dark] .btn-outline-yellow-600.active,html[data-netbox-color-mode=dark] .btn-outline-yellow-600.dropdown-toggle.show{color:#000;background-color:#cc9a06;border-color:#cc9a06}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-yellow-600:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-yellow-600:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-600:active:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-600.active:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-600.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #cc9a0680}html[data-netbox-color-mode=dark] .btn-outline-yellow-600:disabled,html[data-netbox-color-mode=dark] .btn-outline-yellow-600.disabled{color:#cc9a06;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-yellow-700{color:#997404;border-color:#997404}html[data-netbox-color-mode=dark] .btn-outline-yellow-700:hover{color:#000;background-color:#997404;border-color:#997404}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-yellow-700,html[data-netbox-color-mode=dark] .btn-outline-yellow-700:focus{box-shadow:0 0 0 .25rem #99740480}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-yellow-700,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-yellow-700,html[data-netbox-color-mode=dark] .btn-outline-yellow-700:active,html[data-netbox-color-mode=dark] .btn-outline-yellow-700.active,html[data-netbox-color-mode=dark] .btn-outline-yellow-700.dropdown-toggle.show{color:#000;background-color:#997404;border-color:#997404}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-yellow-700:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-yellow-700:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-700:active:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-700.active:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-700.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #99740480}html[data-netbox-color-mode=dark] .btn-outline-yellow-700:disabled,html[data-netbox-color-mode=dark] .btn-outline-yellow-700.disabled{color:#997404;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-yellow-800{color:#664d03;border-color:#664d03}html[data-netbox-color-mode=dark] .btn-outline-yellow-800:hover{color:#fff;background-color:#664d03;border-color:#664d03}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-yellow-800,html[data-netbox-color-mode=dark] .btn-outline-yellow-800:focus{box-shadow:0 0 0 .25rem #664d0380}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-yellow-800,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-yellow-800,html[data-netbox-color-mode=dark] .btn-outline-yellow-800:active,html[data-netbox-color-mode=dark] .btn-outline-yellow-800.active,html[data-netbox-color-mode=dark] .btn-outline-yellow-800.dropdown-toggle.show{color:#fff;background-color:#664d03;border-color:#664d03}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-yellow-800:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-yellow-800:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-800:active:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-800.active:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-800.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #664d0380}html[data-netbox-color-mode=dark] .btn-outline-yellow-800:disabled,html[data-netbox-color-mode=dark] .btn-outline-yellow-800.disabled{color:#664d03;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-yellow-900{color:#332701;border-color:#332701}html[data-netbox-color-mode=dark] .btn-outline-yellow-900:hover{color:#fff;background-color:#332701;border-color:#332701}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-yellow-900,html[data-netbox-color-mode=dark] .btn-outline-yellow-900:focus{box-shadow:0 0 0 .25rem #33270180}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-yellow-900,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-yellow-900,html[data-netbox-color-mode=dark] .btn-outline-yellow-900:active,html[data-netbox-color-mode=dark] .btn-outline-yellow-900.active,html[data-netbox-color-mode=dark] .btn-outline-yellow-900.dropdown-toggle.show{color:#fff;background-color:#332701;border-color:#332701}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-yellow-900:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-yellow-900:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-900:active:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-900.active:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-900.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #33270180}html[data-netbox-color-mode=dark] .btn-outline-yellow-900:disabled,html[data-netbox-color-mode=dark] .btn-outline-yellow-900.disabled{color:#332701;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-green-100{color:#d1e7dd;border-color:#d1e7dd}html[data-netbox-color-mode=dark] .btn-outline-green-100:hover{color:#000;background-color:#d1e7dd;border-color:#d1e7dd}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-green-100,html[data-netbox-color-mode=dark] .btn-outline-green-100:focus{box-shadow:0 0 0 .25rem #d1e7dd80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-green-100,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-green-100,html[data-netbox-color-mode=dark] .btn-outline-green-100:active,html[data-netbox-color-mode=dark] .btn-outline-green-100.active,html[data-netbox-color-mode=dark] .btn-outline-green-100.dropdown-toggle.show{color:#000;background-color:#d1e7dd;border-color:#d1e7dd}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-green-100:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-green-100:focus,html[data-netbox-color-mode=dark] .btn-outline-green-100:active:focus,html[data-netbox-color-mode=dark] .btn-outline-green-100.active:focus,html[data-netbox-color-mode=dark] .btn-outline-green-100.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #d1e7dd80}html[data-netbox-color-mode=dark] .btn-outline-green-100:disabled,html[data-netbox-color-mode=dark] .btn-outline-green-100.disabled{color:#d1e7dd;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-green-200{color:#a3cfbb;border-color:#a3cfbb}html[data-netbox-color-mode=dark] .btn-outline-green-200:hover{color:#000;background-color:#a3cfbb;border-color:#a3cfbb}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-green-200,html[data-netbox-color-mode=dark] .btn-outline-green-200:focus{box-shadow:0 0 0 .25rem #a3cfbb80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-green-200,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-green-200,html[data-netbox-color-mode=dark] .btn-outline-green-200:active,html[data-netbox-color-mode=dark] .btn-outline-green-200.active,html[data-netbox-color-mode=dark] .btn-outline-green-200.dropdown-toggle.show{color:#000;background-color:#a3cfbb;border-color:#a3cfbb}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-green-200:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-green-200:focus,html[data-netbox-color-mode=dark] .btn-outline-green-200:active:focus,html[data-netbox-color-mode=dark] .btn-outline-green-200.active:focus,html[data-netbox-color-mode=dark] .btn-outline-green-200.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #a3cfbb80}html[data-netbox-color-mode=dark] .btn-outline-green-200:disabled,html[data-netbox-color-mode=dark] .btn-outline-green-200.disabled{color:#a3cfbb;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-green-300{color:#75b798;border-color:#75b798}html[data-netbox-color-mode=dark] .btn-outline-green-300:hover{color:#000;background-color:#75b798;border-color:#75b798}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-green-300,html[data-netbox-color-mode=dark] .btn-outline-green-300:focus{box-shadow:0 0 0 .25rem #75b79880}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-green-300,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-green-300,html[data-netbox-color-mode=dark] .btn-outline-green-300:active,html[data-netbox-color-mode=dark] .btn-outline-green-300.active,html[data-netbox-color-mode=dark] .btn-outline-green-300.dropdown-toggle.show{color:#000;background-color:#75b798;border-color:#75b798}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-green-300:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-green-300:focus,html[data-netbox-color-mode=dark] .btn-outline-green-300:active:focus,html[data-netbox-color-mode=dark] .btn-outline-green-300.active:focus,html[data-netbox-color-mode=dark] .btn-outline-green-300.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #75b79880}html[data-netbox-color-mode=dark] .btn-outline-green-300:disabled,html[data-netbox-color-mode=dark] .btn-outline-green-300.disabled{color:#75b798;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-green-400{color:#479f76;border-color:#479f76}html[data-netbox-color-mode=dark] .btn-outline-green-400:hover{color:#000;background-color:#479f76;border-color:#479f76}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-green-400,html[data-netbox-color-mode=dark] .btn-outline-green-400:focus{box-shadow:0 0 0 .25rem #479f7680}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-green-400,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-green-400,html[data-netbox-color-mode=dark] .btn-outline-green-400:active,html[data-netbox-color-mode=dark] .btn-outline-green-400.active,html[data-netbox-color-mode=dark] .btn-outline-green-400.dropdown-toggle.show{color:#000;background-color:#479f76;border-color:#479f76}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-green-400:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-green-400:focus,html[data-netbox-color-mode=dark] .btn-outline-green-400:active:focus,html[data-netbox-color-mode=dark] .btn-outline-green-400.active:focus,html[data-netbox-color-mode=dark] .btn-outline-green-400.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #479f7680}html[data-netbox-color-mode=dark] .btn-outline-green-400:disabled,html[data-netbox-color-mode=dark] .btn-outline-green-400.disabled{color:#479f76;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-green-500{color:#198754;border-color:#198754}html[data-netbox-color-mode=dark] .btn-outline-green-500:hover{color:#fff;background-color:#198754;border-color:#198754}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-green-500,html[data-netbox-color-mode=dark] .btn-outline-green-500:focus{box-shadow:0 0 0 .25rem #19875480}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-green-500,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-green-500,html[data-netbox-color-mode=dark] .btn-outline-green-500:active,html[data-netbox-color-mode=dark] .btn-outline-green-500.active,html[data-netbox-color-mode=dark] .btn-outline-green-500.dropdown-toggle.show{color:#fff;background-color:#198754;border-color:#198754}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-green-500:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-green-500:focus,html[data-netbox-color-mode=dark] .btn-outline-green-500:active:focus,html[data-netbox-color-mode=dark] .btn-outline-green-500.active:focus,html[data-netbox-color-mode=dark] .btn-outline-green-500.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #19875480}html[data-netbox-color-mode=dark] .btn-outline-green-500:disabled,html[data-netbox-color-mode=dark] .btn-outline-green-500.disabled{color:#198754;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-green-600{color:#146c43;border-color:#146c43}html[data-netbox-color-mode=dark] .btn-outline-green-600:hover{color:#fff;background-color:#146c43;border-color:#146c43}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-green-600,html[data-netbox-color-mode=dark] .btn-outline-green-600:focus{box-shadow:0 0 0 .25rem #146c4380}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-green-600,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-green-600,html[data-netbox-color-mode=dark] .btn-outline-green-600:active,html[data-netbox-color-mode=dark] .btn-outline-green-600.active,html[data-netbox-color-mode=dark] .btn-outline-green-600.dropdown-toggle.show{color:#fff;background-color:#146c43;border-color:#146c43}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-green-600:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-green-600:focus,html[data-netbox-color-mode=dark] .btn-outline-green-600:active:focus,html[data-netbox-color-mode=dark] .btn-outline-green-600.active:focus,html[data-netbox-color-mode=dark] .btn-outline-green-600.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #146c4380}html[data-netbox-color-mode=dark] .btn-outline-green-600:disabled,html[data-netbox-color-mode=dark] .btn-outline-green-600.disabled{color:#146c43;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-green-700{color:#0f5132;border-color:#0f5132}html[data-netbox-color-mode=dark] .btn-outline-green-700:hover{color:#fff;background-color:#0f5132;border-color:#0f5132}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-green-700,html[data-netbox-color-mode=dark] .btn-outline-green-700:focus{box-shadow:0 0 0 .25rem #0f513280}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-green-700,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-green-700,html[data-netbox-color-mode=dark] .btn-outline-green-700:active,html[data-netbox-color-mode=dark] .btn-outline-green-700.active,html[data-netbox-color-mode=dark] .btn-outline-green-700.dropdown-toggle.show{color:#fff;background-color:#0f5132;border-color:#0f5132}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-green-700:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-green-700:focus,html[data-netbox-color-mode=dark] .btn-outline-green-700:active:focus,html[data-netbox-color-mode=dark] .btn-outline-green-700.active:focus,html[data-netbox-color-mode=dark] .btn-outline-green-700.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #0f513280}html[data-netbox-color-mode=dark] .btn-outline-green-700:disabled,html[data-netbox-color-mode=dark] .btn-outline-green-700.disabled{color:#0f5132;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-green-800{color:#0a3622;border-color:#0a3622}html[data-netbox-color-mode=dark] .btn-outline-green-800:hover{color:#fff;background-color:#0a3622;border-color:#0a3622}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-green-800,html[data-netbox-color-mode=dark] .btn-outline-green-800:focus{box-shadow:0 0 0 .25rem #0a362280}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-green-800,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-green-800,html[data-netbox-color-mode=dark] .btn-outline-green-800:active,html[data-netbox-color-mode=dark] .btn-outline-green-800.active,html[data-netbox-color-mode=dark] .btn-outline-green-800.dropdown-toggle.show{color:#fff;background-color:#0a3622;border-color:#0a3622}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-green-800:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-green-800:focus,html[data-netbox-color-mode=dark] .btn-outline-green-800:active:focus,html[data-netbox-color-mode=dark] .btn-outline-green-800.active:focus,html[data-netbox-color-mode=dark] .btn-outline-green-800.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #0a362280}html[data-netbox-color-mode=dark] .btn-outline-green-800:disabled,html[data-netbox-color-mode=dark] .btn-outline-green-800.disabled{color:#0a3622;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-green-900{color:#051b11;border-color:#051b11}html[data-netbox-color-mode=dark] .btn-outline-green-900:hover{color:#fff;background-color:#051b11;border-color:#051b11}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-green-900,html[data-netbox-color-mode=dark] .btn-outline-green-900:focus{box-shadow:0 0 0 .25rem #051b1180}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-green-900,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-green-900,html[data-netbox-color-mode=dark] .btn-outline-green-900:active,html[data-netbox-color-mode=dark] .btn-outline-green-900.active,html[data-netbox-color-mode=dark] .btn-outline-green-900.dropdown-toggle.show{color:#fff;background-color:#051b11;border-color:#051b11}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-green-900:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-green-900:focus,html[data-netbox-color-mode=dark] .btn-outline-green-900:active:focus,html[data-netbox-color-mode=dark] .btn-outline-green-900.active:focus,html[data-netbox-color-mode=dark] .btn-outline-green-900.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #051b1180}html[data-netbox-color-mode=dark] .btn-outline-green-900:disabled,html[data-netbox-color-mode=dark] .btn-outline-green-900.disabled{color:#051b11;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-blue-100{color:#cfe2ff;border-color:#cfe2ff}html[data-netbox-color-mode=dark] .btn-outline-blue-100:hover{color:#000;background-color:#cfe2ff;border-color:#cfe2ff}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-blue-100,html[data-netbox-color-mode=dark] .btn-outline-blue-100:focus{box-shadow:0 0 0 .25rem #cfe2ff80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-blue-100,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-blue-100,html[data-netbox-color-mode=dark] .btn-outline-blue-100:active,html[data-netbox-color-mode=dark] .btn-outline-blue-100.active,html[data-netbox-color-mode=dark] .btn-outline-blue-100.dropdown-toggle.show{color:#000;background-color:#cfe2ff;border-color:#cfe2ff}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-blue-100:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-blue-100:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-100:active:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-100.active:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-100.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #cfe2ff80}html[data-netbox-color-mode=dark] .btn-outline-blue-100:disabled,html[data-netbox-color-mode=dark] .btn-outline-blue-100.disabled{color:#cfe2ff;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-blue-200{color:#9ec5fe;border-color:#9ec5fe}html[data-netbox-color-mode=dark] .btn-outline-blue-200:hover{color:#000;background-color:#9ec5fe;border-color:#9ec5fe}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-blue-200,html[data-netbox-color-mode=dark] .btn-outline-blue-200:focus{box-shadow:0 0 0 .25rem #9ec5fe80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-blue-200,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-blue-200,html[data-netbox-color-mode=dark] .btn-outline-blue-200:active,html[data-netbox-color-mode=dark] .btn-outline-blue-200.active,html[data-netbox-color-mode=dark] .btn-outline-blue-200.dropdown-toggle.show{color:#000;background-color:#9ec5fe;border-color:#9ec5fe}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-blue-200:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-blue-200:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-200:active:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-200.active:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-200.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #9ec5fe80}html[data-netbox-color-mode=dark] .btn-outline-blue-200:disabled,html[data-netbox-color-mode=dark] .btn-outline-blue-200.disabled{color:#9ec5fe;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-blue-300{color:#6ea8fe;border-color:#6ea8fe}html[data-netbox-color-mode=dark] .btn-outline-blue-300:hover{color:#000;background-color:#6ea8fe;border-color:#6ea8fe}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-blue-300,html[data-netbox-color-mode=dark] .btn-outline-blue-300:focus{box-shadow:0 0 0 .25rem #6ea8fe80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-blue-300,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-blue-300,html[data-netbox-color-mode=dark] .btn-outline-blue-300:active,html[data-netbox-color-mode=dark] .btn-outline-blue-300.active,html[data-netbox-color-mode=dark] .btn-outline-blue-300.dropdown-toggle.show{color:#000;background-color:#6ea8fe;border-color:#6ea8fe}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-blue-300:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-blue-300:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-300:active:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-300.active:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-300.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #6ea8fe80}html[data-netbox-color-mode=dark] .btn-outline-blue-300:disabled,html[data-netbox-color-mode=dark] .btn-outline-blue-300.disabled{color:#6ea8fe;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-blue-400{color:#3d8bfd;border-color:#3d8bfd}html[data-netbox-color-mode=dark] .btn-outline-blue-400:hover{color:#000;background-color:#3d8bfd;border-color:#3d8bfd}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-blue-400,html[data-netbox-color-mode=dark] .btn-outline-blue-400:focus{box-shadow:0 0 0 .25rem #3d8bfd80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-blue-400,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-blue-400,html[data-netbox-color-mode=dark] .btn-outline-blue-400:active,html[data-netbox-color-mode=dark] .btn-outline-blue-400.active,html[data-netbox-color-mode=dark] .btn-outline-blue-400.dropdown-toggle.show{color:#000;background-color:#3d8bfd;border-color:#3d8bfd}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-blue-400:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-blue-400:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-400:active:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-400.active:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-400.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #3d8bfd80}html[data-netbox-color-mode=dark] .btn-outline-blue-400:disabled,html[data-netbox-color-mode=dark] .btn-outline-blue-400.disabled{color:#3d8bfd;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-blue-500{color:#0d6efd;border-color:#0d6efd}html[data-netbox-color-mode=dark] .btn-outline-blue-500:hover{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-blue-500,html[data-netbox-color-mode=dark] .btn-outline-blue-500:focus{box-shadow:0 0 0 .25rem #0d6efd80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-blue-500,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-blue-500,html[data-netbox-color-mode=dark] .btn-outline-blue-500:active,html[data-netbox-color-mode=dark] .btn-outline-blue-500.active,html[data-netbox-color-mode=dark] .btn-outline-blue-500.dropdown-toggle.show{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-blue-500:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-blue-500:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-500:active:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-500.active:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-500.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #0d6efd80}html[data-netbox-color-mode=dark] .btn-outline-blue-500:disabled,html[data-netbox-color-mode=dark] .btn-outline-blue-500.disabled{color:#0d6efd;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-blue-600{color:#0a58ca;border-color:#0a58ca}html[data-netbox-color-mode=dark] .btn-outline-blue-600:hover{color:#fff;background-color:#0a58ca;border-color:#0a58ca}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-blue-600,html[data-netbox-color-mode=dark] .btn-outline-blue-600:focus{box-shadow:0 0 0 .25rem #0a58ca80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-blue-600,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-blue-600,html[data-netbox-color-mode=dark] .btn-outline-blue-600:active,html[data-netbox-color-mode=dark] .btn-outline-blue-600.active,html[data-netbox-color-mode=dark] .btn-outline-blue-600.dropdown-toggle.show{color:#fff;background-color:#0a58ca;border-color:#0a58ca}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-blue-600:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-blue-600:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-600:active:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-600.active:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-600.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #0a58ca80}html[data-netbox-color-mode=dark] .btn-outline-blue-600:disabled,html[data-netbox-color-mode=dark] .btn-outline-blue-600.disabled{color:#0a58ca;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-blue-700{color:#084298;border-color:#084298}html[data-netbox-color-mode=dark] .btn-outline-blue-700:hover{color:#fff;background-color:#084298;border-color:#084298}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-blue-700,html[data-netbox-color-mode=dark] .btn-outline-blue-700:focus{box-shadow:0 0 0 .25rem #08429880}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-blue-700,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-blue-700,html[data-netbox-color-mode=dark] .btn-outline-blue-700:active,html[data-netbox-color-mode=dark] .btn-outline-blue-700.active,html[data-netbox-color-mode=dark] .btn-outline-blue-700.dropdown-toggle.show{color:#fff;background-color:#084298;border-color:#084298}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-blue-700:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-blue-700:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-700:active:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-700.active:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-700.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #08429880}html[data-netbox-color-mode=dark] .btn-outline-blue-700:disabled,html[data-netbox-color-mode=dark] .btn-outline-blue-700.disabled{color:#084298;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-blue-800{color:#052c65;border-color:#052c65}html[data-netbox-color-mode=dark] .btn-outline-blue-800:hover{color:#fff;background-color:#052c65;border-color:#052c65}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-blue-800,html[data-netbox-color-mode=dark] .btn-outline-blue-800:focus{box-shadow:0 0 0 .25rem #052c6580}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-blue-800,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-blue-800,html[data-netbox-color-mode=dark] .btn-outline-blue-800:active,html[data-netbox-color-mode=dark] .btn-outline-blue-800.active,html[data-netbox-color-mode=dark] .btn-outline-blue-800.dropdown-toggle.show{color:#fff;background-color:#052c65;border-color:#052c65}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-blue-800:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-blue-800:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-800:active:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-800.active:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-800.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #052c6580}html[data-netbox-color-mode=dark] .btn-outline-blue-800:disabled,html[data-netbox-color-mode=dark] .btn-outline-blue-800.disabled{color:#052c65;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-blue-900{color:#031633;border-color:#031633}html[data-netbox-color-mode=dark] .btn-outline-blue-900:hover{color:#fff;background-color:#031633;border-color:#031633}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-blue-900,html[data-netbox-color-mode=dark] .btn-outline-blue-900:focus{box-shadow:0 0 0 .25rem #03163380}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-blue-900,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-blue-900,html[data-netbox-color-mode=dark] .btn-outline-blue-900:active,html[data-netbox-color-mode=dark] .btn-outline-blue-900.active,html[data-netbox-color-mode=dark] .btn-outline-blue-900.dropdown-toggle.show{color:#fff;background-color:#031633;border-color:#031633}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-blue-900:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-blue-900:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-900:active:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-900.active:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-900.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #03163380}html[data-netbox-color-mode=dark] .btn-outline-blue-900:disabled,html[data-netbox-color-mode=dark] .btn-outline-blue-900.disabled{color:#031633;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-cyan-100{color:#cff4fc;border-color:#cff4fc}html[data-netbox-color-mode=dark] .btn-outline-cyan-100:hover{color:#000;background-color:#cff4fc;border-color:#cff4fc}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-cyan-100,html[data-netbox-color-mode=dark] .btn-outline-cyan-100:focus{box-shadow:0 0 0 .25rem #cff4fc80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-cyan-100,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-cyan-100,html[data-netbox-color-mode=dark] .btn-outline-cyan-100:active,html[data-netbox-color-mode=dark] .btn-outline-cyan-100.active,html[data-netbox-color-mode=dark] .btn-outline-cyan-100.dropdown-toggle.show{color:#000;background-color:#cff4fc;border-color:#cff4fc}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-cyan-100:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-cyan-100:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-100:active:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-100.active:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-100.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #cff4fc80}html[data-netbox-color-mode=dark] .btn-outline-cyan-100:disabled,html[data-netbox-color-mode=dark] .btn-outline-cyan-100.disabled{color:#cff4fc;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-cyan-200{color:#9eeaf9;border-color:#9eeaf9}html[data-netbox-color-mode=dark] .btn-outline-cyan-200:hover{color:#000;background-color:#9eeaf9;border-color:#9eeaf9}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-cyan-200,html[data-netbox-color-mode=dark] .btn-outline-cyan-200:focus{box-shadow:0 0 0 .25rem #9eeaf980}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-cyan-200,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-cyan-200,html[data-netbox-color-mode=dark] .btn-outline-cyan-200:active,html[data-netbox-color-mode=dark] .btn-outline-cyan-200.active,html[data-netbox-color-mode=dark] .btn-outline-cyan-200.dropdown-toggle.show{color:#000;background-color:#9eeaf9;border-color:#9eeaf9}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-cyan-200:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-cyan-200:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-200:active:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-200.active:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-200.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #9eeaf980}html[data-netbox-color-mode=dark] .btn-outline-cyan-200:disabled,html[data-netbox-color-mode=dark] .btn-outline-cyan-200.disabled{color:#9eeaf9;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-cyan-300{color:#6edff6;border-color:#6edff6}html[data-netbox-color-mode=dark] .btn-outline-cyan-300:hover{color:#000;background-color:#6edff6;border-color:#6edff6}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-cyan-300,html[data-netbox-color-mode=dark] .btn-outline-cyan-300:focus{box-shadow:0 0 0 .25rem #6edff680}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-cyan-300,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-cyan-300,html[data-netbox-color-mode=dark] .btn-outline-cyan-300:active,html[data-netbox-color-mode=dark] .btn-outline-cyan-300.active,html[data-netbox-color-mode=dark] .btn-outline-cyan-300.dropdown-toggle.show{color:#000;background-color:#6edff6;border-color:#6edff6}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-cyan-300:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-cyan-300:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-300:active:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-300.active:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-300.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #6edff680}html[data-netbox-color-mode=dark] .btn-outline-cyan-300:disabled,html[data-netbox-color-mode=dark] .btn-outline-cyan-300.disabled{color:#6edff6;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-cyan-400{color:#3dd5f3;border-color:#3dd5f3}html[data-netbox-color-mode=dark] .btn-outline-cyan-400:hover{color:#000;background-color:#3dd5f3;border-color:#3dd5f3}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-cyan-400,html[data-netbox-color-mode=dark] .btn-outline-cyan-400:focus{box-shadow:0 0 0 .25rem #3dd5f380}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-cyan-400,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-cyan-400,html[data-netbox-color-mode=dark] .btn-outline-cyan-400:active,html[data-netbox-color-mode=dark] .btn-outline-cyan-400.active,html[data-netbox-color-mode=dark] .btn-outline-cyan-400.dropdown-toggle.show{color:#000;background-color:#3dd5f3;border-color:#3dd5f3}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-cyan-400:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-cyan-400:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-400:active:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-400.active:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-400.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #3dd5f380}html[data-netbox-color-mode=dark] .btn-outline-cyan-400:disabled,html[data-netbox-color-mode=dark] .btn-outline-cyan-400.disabled{color:#3dd5f3;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-cyan-500{color:#0dcaf0;border-color:#0dcaf0}html[data-netbox-color-mode=dark] .btn-outline-cyan-500:hover{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-cyan-500,html[data-netbox-color-mode=dark] .btn-outline-cyan-500:focus{box-shadow:0 0 0 .25rem #0dcaf080}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-cyan-500,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-cyan-500,html[data-netbox-color-mode=dark] .btn-outline-cyan-500:active,html[data-netbox-color-mode=dark] .btn-outline-cyan-500.active,html[data-netbox-color-mode=dark] .btn-outline-cyan-500.dropdown-toggle.show{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-cyan-500:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-cyan-500:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-500:active:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-500.active:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-500.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #0dcaf080}html[data-netbox-color-mode=dark] .btn-outline-cyan-500:disabled,html[data-netbox-color-mode=dark] .btn-outline-cyan-500.disabled{color:#0dcaf0;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-cyan-600{color:#0aa2c0;border-color:#0aa2c0}html[data-netbox-color-mode=dark] .btn-outline-cyan-600:hover{color:#000;background-color:#0aa2c0;border-color:#0aa2c0}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-cyan-600,html[data-netbox-color-mode=dark] .btn-outline-cyan-600:focus{box-shadow:0 0 0 .25rem #0aa2c080}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-cyan-600,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-cyan-600,html[data-netbox-color-mode=dark] .btn-outline-cyan-600:active,html[data-netbox-color-mode=dark] .btn-outline-cyan-600.active,html[data-netbox-color-mode=dark] .btn-outline-cyan-600.dropdown-toggle.show{color:#000;background-color:#0aa2c0;border-color:#0aa2c0}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-cyan-600:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-cyan-600:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-600:active:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-600.active:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-600.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #0aa2c080}html[data-netbox-color-mode=dark] .btn-outline-cyan-600:disabled,html[data-netbox-color-mode=dark] .btn-outline-cyan-600.disabled{color:#0aa2c0;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-cyan-700{color:#087990;border-color:#087990}html[data-netbox-color-mode=dark] .btn-outline-cyan-700:hover{color:#fff;background-color:#087990;border-color:#087990}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-cyan-700,html[data-netbox-color-mode=dark] .btn-outline-cyan-700:focus{box-shadow:0 0 0 .25rem #08799080}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-cyan-700,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-cyan-700,html[data-netbox-color-mode=dark] .btn-outline-cyan-700:active,html[data-netbox-color-mode=dark] .btn-outline-cyan-700.active,html[data-netbox-color-mode=dark] .btn-outline-cyan-700.dropdown-toggle.show{color:#fff;background-color:#087990;border-color:#087990}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-cyan-700:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-cyan-700:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-700:active:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-700.active:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-700.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #08799080}html[data-netbox-color-mode=dark] .btn-outline-cyan-700:disabled,html[data-netbox-color-mode=dark] .btn-outline-cyan-700.disabled{color:#087990;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-cyan-800{color:#055160;border-color:#055160}html[data-netbox-color-mode=dark] .btn-outline-cyan-800:hover{color:#fff;background-color:#055160;border-color:#055160}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-cyan-800,html[data-netbox-color-mode=dark] .btn-outline-cyan-800:focus{box-shadow:0 0 0 .25rem #05516080}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-cyan-800,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-cyan-800,html[data-netbox-color-mode=dark] .btn-outline-cyan-800:active,html[data-netbox-color-mode=dark] .btn-outline-cyan-800.active,html[data-netbox-color-mode=dark] .btn-outline-cyan-800.dropdown-toggle.show{color:#fff;background-color:#055160;border-color:#055160}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-cyan-800:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-cyan-800:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-800:active:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-800.active:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-800.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #05516080}html[data-netbox-color-mode=dark] .btn-outline-cyan-800:disabled,html[data-netbox-color-mode=dark] .btn-outline-cyan-800.disabled{color:#055160;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-cyan-900{color:#032830;border-color:#032830}html[data-netbox-color-mode=dark] .btn-outline-cyan-900:hover{color:#fff;background-color:#032830;border-color:#032830}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-cyan-900,html[data-netbox-color-mode=dark] .btn-outline-cyan-900:focus{box-shadow:0 0 0 .25rem #03283080}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-cyan-900,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-cyan-900,html[data-netbox-color-mode=dark] .btn-outline-cyan-900:active,html[data-netbox-color-mode=dark] .btn-outline-cyan-900.active,html[data-netbox-color-mode=dark] .btn-outline-cyan-900.dropdown-toggle.show{color:#fff;background-color:#032830;border-color:#032830}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-cyan-900:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-cyan-900:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-900:active:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-900.active:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-900.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #03283080}html[data-netbox-color-mode=dark] .btn-outline-cyan-900:disabled,html[data-netbox-color-mode=dark] .btn-outline-cyan-900.disabled{color:#032830;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-indigo-100{color:#e0cffc;border-color:#e0cffc}html[data-netbox-color-mode=dark] .btn-outline-indigo-100:hover{color:#000;background-color:#e0cffc;border-color:#e0cffc}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-indigo-100,html[data-netbox-color-mode=dark] .btn-outline-indigo-100:focus{box-shadow:0 0 0 .25rem #e0cffc80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-indigo-100,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-indigo-100,html[data-netbox-color-mode=dark] .btn-outline-indigo-100:active,html[data-netbox-color-mode=dark] .btn-outline-indigo-100.active,html[data-netbox-color-mode=dark] .btn-outline-indigo-100.dropdown-toggle.show{color:#000;background-color:#e0cffc;border-color:#e0cffc}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-indigo-100:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-indigo-100:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-100:active:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-100.active:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-100.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #e0cffc80}html[data-netbox-color-mode=dark] .btn-outline-indigo-100:disabled,html[data-netbox-color-mode=dark] .btn-outline-indigo-100.disabled{color:#e0cffc;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-indigo-200{color:#c29ffa;border-color:#c29ffa}html[data-netbox-color-mode=dark] .btn-outline-indigo-200:hover{color:#000;background-color:#c29ffa;border-color:#c29ffa}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-indigo-200,html[data-netbox-color-mode=dark] .btn-outline-indigo-200:focus{box-shadow:0 0 0 .25rem #c29ffa80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-indigo-200,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-indigo-200,html[data-netbox-color-mode=dark] .btn-outline-indigo-200:active,html[data-netbox-color-mode=dark] .btn-outline-indigo-200.active,html[data-netbox-color-mode=dark] .btn-outline-indigo-200.dropdown-toggle.show{color:#000;background-color:#c29ffa;border-color:#c29ffa}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-indigo-200:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-indigo-200:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-200:active:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-200.active:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-200.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #c29ffa80}html[data-netbox-color-mode=dark] .btn-outline-indigo-200:disabled,html[data-netbox-color-mode=dark] .btn-outline-indigo-200.disabled{color:#c29ffa;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-indigo-300{color:#a370f7;border-color:#a370f7}html[data-netbox-color-mode=dark] .btn-outline-indigo-300:hover{color:#000;background-color:#a370f7;border-color:#a370f7}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-indigo-300,html[data-netbox-color-mode=dark] .btn-outline-indigo-300:focus{box-shadow:0 0 0 .25rem #a370f780}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-indigo-300,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-indigo-300,html[data-netbox-color-mode=dark] .btn-outline-indigo-300:active,html[data-netbox-color-mode=dark] .btn-outline-indigo-300.active,html[data-netbox-color-mode=dark] .btn-outline-indigo-300.dropdown-toggle.show{color:#000;background-color:#a370f7;border-color:#a370f7}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-indigo-300:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-indigo-300:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-300:active:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-300.active:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-300.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #a370f780}html[data-netbox-color-mode=dark] .btn-outline-indigo-300:disabled,html[data-netbox-color-mode=dark] .btn-outline-indigo-300.disabled{color:#a370f7;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-indigo-400{color:#8540f5;border-color:#8540f5}html[data-netbox-color-mode=dark] .btn-outline-indigo-400:hover{color:#fff;background-color:#8540f5;border-color:#8540f5}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-indigo-400,html[data-netbox-color-mode=dark] .btn-outline-indigo-400:focus{box-shadow:0 0 0 .25rem #8540f580}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-indigo-400,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-indigo-400,html[data-netbox-color-mode=dark] .btn-outline-indigo-400:active,html[data-netbox-color-mode=dark] .btn-outline-indigo-400.active,html[data-netbox-color-mode=dark] .btn-outline-indigo-400.dropdown-toggle.show{color:#fff;background-color:#8540f5;border-color:#8540f5}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-indigo-400:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-indigo-400:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-400:active:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-400.active:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-400.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #8540f580}html[data-netbox-color-mode=dark] .btn-outline-indigo-400:disabled,html[data-netbox-color-mode=dark] .btn-outline-indigo-400.disabled{color:#8540f5;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-indigo-500{color:#6610f2;border-color:#6610f2}html[data-netbox-color-mode=dark] .btn-outline-indigo-500:hover{color:#fff;background-color:#6610f2;border-color:#6610f2}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-indigo-500,html[data-netbox-color-mode=dark] .btn-outline-indigo-500:focus{box-shadow:0 0 0 .25rem #6610f280}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-indigo-500,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-indigo-500,html[data-netbox-color-mode=dark] .btn-outline-indigo-500:active,html[data-netbox-color-mode=dark] .btn-outline-indigo-500.active,html[data-netbox-color-mode=dark] .btn-outline-indigo-500.dropdown-toggle.show{color:#fff;background-color:#6610f2;border-color:#6610f2}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-indigo-500:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-indigo-500:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-500:active:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-500.active:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-500.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #6610f280}html[data-netbox-color-mode=dark] .btn-outline-indigo-500:disabled,html[data-netbox-color-mode=dark] .btn-outline-indigo-500.disabled{color:#6610f2;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-indigo-600{color:#520dc2;border-color:#520dc2}html[data-netbox-color-mode=dark] .btn-outline-indigo-600:hover{color:#fff;background-color:#520dc2;border-color:#520dc2}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-indigo-600,html[data-netbox-color-mode=dark] .btn-outline-indigo-600:focus{box-shadow:0 0 0 .25rem #520dc280}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-indigo-600,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-indigo-600,html[data-netbox-color-mode=dark] .btn-outline-indigo-600:active,html[data-netbox-color-mode=dark] .btn-outline-indigo-600.active,html[data-netbox-color-mode=dark] .btn-outline-indigo-600.dropdown-toggle.show{color:#fff;background-color:#520dc2;border-color:#520dc2}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-indigo-600:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-indigo-600:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-600:active:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-600.active:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-600.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #520dc280}html[data-netbox-color-mode=dark] .btn-outline-indigo-600:disabled,html[data-netbox-color-mode=dark] .btn-outline-indigo-600.disabled{color:#520dc2;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-indigo-700{color:#3d0a91;border-color:#3d0a91}html[data-netbox-color-mode=dark] .btn-outline-indigo-700:hover{color:#fff;background-color:#3d0a91;border-color:#3d0a91}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-indigo-700,html[data-netbox-color-mode=dark] .btn-outline-indigo-700:focus{box-shadow:0 0 0 .25rem #3d0a9180}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-indigo-700,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-indigo-700,html[data-netbox-color-mode=dark] .btn-outline-indigo-700:active,html[data-netbox-color-mode=dark] .btn-outline-indigo-700.active,html[data-netbox-color-mode=dark] .btn-outline-indigo-700.dropdown-toggle.show{color:#fff;background-color:#3d0a91;border-color:#3d0a91}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-indigo-700:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-indigo-700:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-700:active:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-700.active:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-700.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #3d0a9180}html[data-netbox-color-mode=dark] .btn-outline-indigo-700:disabled,html[data-netbox-color-mode=dark] .btn-outline-indigo-700.disabled{color:#3d0a91;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-indigo-800{color:#290661;border-color:#290661}html[data-netbox-color-mode=dark] .btn-outline-indigo-800:hover{color:#fff;background-color:#290661;border-color:#290661}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-indigo-800,html[data-netbox-color-mode=dark] .btn-outline-indigo-800:focus{box-shadow:0 0 0 .25rem #29066180}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-indigo-800,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-indigo-800,html[data-netbox-color-mode=dark] .btn-outline-indigo-800:active,html[data-netbox-color-mode=dark] .btn-outline-indigo-800.active,html[data-netbox-color-mode=dark] .btn-outline-indigo-800.dropdown-toggle.show{color:#fff;background-color:#290661;border-color:#290661}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-indigo-800:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-indigo-800:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-800:active:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-800.active:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-800.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #29066180}html[data-netbox-color-mode=dark] .btn-outline-indigo-800:disabled,html[data-netbox-color-mode=dark] .btn-outline-indigo-800.disabled{color:#290661;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-indigo-900{color:#140330;border-color:#140330}html[data-netbox-color-mode=dark] .btn-outline-indigo-900:hover{color:#fff;background-color:#140330;border-color:#140330}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-indigo-900,html[data-netbox-color-mode=dark] .btn-outline-indigo-900:focus{box-shadow:0 0 0 .25rem #14033080}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-indigo-900,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-indigo-900,html[data-netbox-color-mode=dark] .btn-outline-indigo-900:active,html[data-netbox-color-mode=dark] .btn-outline-indigo-900.active,html[data-netbox-color-mode=dark] .btn-outline-indigo-900.dropdown-toggle.show{color:#fff;background-color:#140330;border-color:#140330}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-indigo-900:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-indigo-900:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-900:active:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-900.active:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-900.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #14033080}html[data-netbox-color-mode=dark] .btn-outline-indigo-900:disabled,html[data-netbox-color-mode=dark] .btn-outline-indigo-900.disabled{color:#140330;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-purple-100{color:#e2d9f3;border-color:#e2d9f3}html[data-netbox-color-mode=dark] .btn-outline-purple-100:hover{color:#000;background-color:#e2d9f3;border-color:#e2d9f3}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-purple-100,html[data-netbox-color-mode=dark] .btn-outline-purple-100:focus{box-shadow:0 0 0 .25rem #e2d9f380}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-purple-100,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-purple-100,html[data-netbox-color-mode=dark] .btn-outline-purple-100:active,html[data-netbox-color-mode=dark] .btn-outline-purple-100.active,html[data-netbox-color-mode=dark] .btn-outline-purple-100.dropdown-toggle.show{color:#000;background-color:#e2d9f3;border-color:#e2d9f3}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-purple-100:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-purple-100:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-100:active:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-100.active:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-100.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #e2d9f380}html[data-netbox-color-mode=dark] .btn-outline-purple-100:disabled,html[data-netbox-color-mode=dark] .btn-outline-purple-100.disabled{color:#e2d9f3;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-purple-200{color:#c5b3e6;border-color:#c5b3e6}html[data-netbox-color-mode=dark] .btn-outline-purple-200:hover{color:#000;background-color:#c5b3e6;border-color:#c5b3e6}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-purple-200,html[data-netbox-color-mode=dark] .btn-outline-purple-200:focus{box-shadow:0 0 0 .25rem #c5b3e680}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-purple-200,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-purple-200,html[data-netbox-color-mode=dark] .btn-outline-purple-200:active,html[data-netbox-color-mode=dark] .btn-outline-purple-200.active,html[data-netbox-color-mode=dark] .btn-outline-purple-200.dropdown-toggle.show{color:#000;background-color:#c5b3e6;border-color:#c5b3e6}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-purple-200:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-purple-200:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-200:active:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-200.active:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-200.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #c5b3e680}html[data-netbox-color-mode=dark] .btn-outline-purple-200:disabled,html[data-netbox-color-mode=dark] .btn-outline-purple-200.disabled{color:#c5b3e6;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-purple-300{color:#a98eda;border-color:#a98eda}html[data-netbox-color-mode=dark] .btn-outline-purple-300:hover{color:#000;background-color:#a98eda;border-color:#a98eda}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-purple-300,html[data-netbox-color-mode=dark] .btn-outline-purple-300:focus{box-shadow:0 0 0 .25rem #a98eda80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-purple-300,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-purple-300,html[data-netbox-color-mode=dark] .btn-outline-purple-300:active,html[data-netbox-color-mode=dark] .btn-outline-purple-300.active,html[data-netbox-color-mode=dark] .btn-outline-purple-300.dropdown-toggle.show{color:#000;background-color:#a98eda;border-color:#a98eda}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-purple-300:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-purple-300:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-300:active:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-300.active:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-300.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #a98eda80}html[data-netbox-color-mode=dark] .btn-outline-purple-300:disabled,html[data-netbox-color-mode=dark] .btn-outline-purple-300.disabled{color:#a98eda;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-purple-400{color:#8c68cd;border-color:#8c68cd}html[data-netbox-color-mode=dark] .btn-outline-purple-400:hover{color:#000;background-color:#8c68cd;border-color:#8c68cd}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-purple-400,html[data-netbox-color-mode=dark] .btn-outline-purple-400:focus{box-shadow:0 0 0 .25rem #8c68cd80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-purple-400,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-purple-400,html[data-netbox-color-mode=dark] .btn-outline-purple-400:active,html[data-netbox-color-mode=dark] .btn-outline-purple-400.active,html[data-netbox-color-mode=dark] .btn-outline-purple-400.dropdown-toggle.show{color:#000;background-color:#8c68cd;border-color:#8c68cd}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-purple-400:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-purple-400:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-400:active:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-400.active:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-400.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #8c68cd80}html[data-netbox-color-mode=dark] .btn-outline-purple-400:disabled,html[data-netbox-color-mode=dark] .btn-outline-purple-400.disabled{color:#8c68cd;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-purple-500{color:#6f42c1;border-color:#6f42c1}html[data-netbox-color-mode=dark] .btn-outline-purple-500:hover{color:#fff;background-color:#6f42c1;border-color:#6f42c1}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-purple-500,html[data-netbox-color-mode=dark] .btn-outline-purple-500:focus{box-shadow:0 0 0 .25rem #6f42c180}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-purple-500,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-purple-500,html[data-netbox-color-mode=dark] .btn-outline-purple-500:active,html[data-netbox-color-mode=dark] .btn-outline-purple-500.active,html[data-netbox-color-mode=dark] .btn-outline-purple-500.dropdown-toggle.show{color:#fff;background-color:#6f42c1;border-color:#6f42c1}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-purple-500:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-purple-500:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-500:active:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-500.active:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-500.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #6f42c180}html[data-netbox-color-mode=dark] .btn-outline-purple-500:disabled,html[data-netbox-color-mode=dark] .btn-outline-purple-500.disabled{color:#6f42c1;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-purple-600{color:#59359a;border-color:#59359a}html[data-netbox-color-mode=dark] .btn-outline-purple-600:hover{color:#fff;background-color:#59359a;border-color:#59359a}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-purple-600,html[data-netbox-color-mode=dark] .btn-outline-purple-600:focus{box-shadow:0 0 0 .25rem #59359a80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-purple-600,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-purple-600,html[data-netbox-color-mode=dark] .btn-outline-purple-600:active,html[data-netbox-color-mode=dark] .btn-outline-purple-600.active,html[data-netbox-color-mode=dark] .btn-outline-purple-600.dropdown-toggle.show{color:#fff;background-color:#59359a;border-color:#59359a}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-purple-600:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-purple-600:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-600:active:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-600.active:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-600.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #59359a80}html[data-netbox-color-mode=dark] .btn-outline-purple-600:disabled,html[data-netbox-color-mode=dark] .btn-outline-purple-600.disabled{color:#59359a;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-purple-700{color:#432874;border-color:#432874}html[data-netbox-color-mode=dark] .btn-outline-purple-700:hover{color:#fff;background-color:#432874;border-color:#432874}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-purple-700,html[data-netbox-color-mode=dark] .btn-outline-purple-700:focus{box-shadow:0 0 0 .25rem #43287480}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-purple-700,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-purple-700,html[data-netbox-color-mode=dark] .btn-outline-purple-700:active,html[data-netbox-color-mode=dark] .btn-outline-purple-700.active,html[data-netbox-color-mode=dark] .btn-outline-purple-700.dropdown-toggle.show{color:#fff;background-color:#432874;border-color:#432874}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-purple-700:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-purple-700:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-700:active:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-700.active:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-700.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #43287480}html[data-netbox-color-mode=dark] .btn-outline-purple-700:disabled,html[data-netbox-color-mode=dark] .btn-outline-purple-700.disabled{color:#432874;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-purple-800{color:#2c1a4d;border-color:#2c1a4d}html[data-netbox-color-mode=dark] .btn-outline-purple-800:hover{color:#fff;background-color:#2c1a4d;border-color:#2c1a4d}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-purple-800,html[data-netbox-color-mode=dark] .btn-outline-purple-800:focus{box-shadow:0 0 0 .25rem #2c1a4d80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-purple-800,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-purple-800,html[data-netbox-color-mode=dark] .btn-outline-purple-800:active,html[data-netbox-color-mode=dark] .btn-outline-purple-800.active,html[data-netbox-color-mode=dark] .btn-outline-purple-800.dropdown-toggle.show{color:#fff;background-color:#2c1a4d;border-color:#2c1a4d}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-purple-800:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-purple-800:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-800:active:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-800.active:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-800.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #2c1a4d80}html[data-netbox-color-mode=dark] .btn-outline-purple-800:disabled,html[data-netbox-color-mode=dark] .btn-outline-purple-800.disabled{color:#2c1a4d;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-purple-900{color:#160d27;border-color:#160d27}html[data-netbox-color-mode=dark] .btn-outline-purple-900:hover{color:#fff;background-color:#160d27;border-color:#160d27}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-purple-900,html[data-netbox-color-mode=dark] .btn-outline-purple-900:focus{box-shadow:0 0 0 .25rem #160d2780}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-purple-900,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-purple-900,html[data-netbox-color-mode=dark] .btn-outline-purple-900:active,html[data-netbox-color-mode=dark] .btn-outline-purple-900.active,html[data-netbox-color-mode=dark] .btn-outline-purple-900.dropdown-toggle.show{color:#fff;background-color:#160d27;border-color:#160d27}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-purple-900:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-purple-900:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-900:active:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-900.active:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-900.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #160d2780}html[data-netbox-color-mode=dark] .btn-outline-purple-900:disabled,html[data-netbox-color-mode=dark] .btn-outline-purple-900.disabled{color:#160d27;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-pink-100{color:#f7d6e6;border-color:#f7d6e6}html[data-netbox-color-mode=dark] .btn-outline-pink-100:hover{color:#000;background-color:#f7d6e6;border-color:#f7d6e6}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-pink-100,html[data-netbox-color-mode=dark] .btn-outline-pink-100:focus{box-shadow:0 0 0 .25rem #f7d6e680}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-pink-100,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-pink-100,html[data-netbox-color-mode=dark] .btn-outline-pink-100:active,html[data-netbox-color-mode=dark] .btn-outline-pink-100.active,html[data-netbox-color-mode=dark] .btn-outline-pink-100.dropdown-toggle.show{color:#000;background-color:#f7d6e6;border-color:#f7d6e6}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-pink-100:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-pink-100:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-100:active:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-100.active:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-100.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #f7d6e680}html[data-netbox-color-mode=dark] .btn-outline-pink-100:disabled,html[data-netbox-color-mode=dark] .btn-outline-pink-100.disabled{color:#f7d6e6;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-pink-200{color:#efadce;border-color:#efadce}html[data-netbox-color-mode=dark] .btn-outline-pink-200:hover{color:#000;background-color:#efadce;border-color:#efadce}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-pink-200,html[data-netbox-color-mode=dark] .btn-outline-pink-200:focus{box-shadow:0 0 0 .25rem #efadce80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-pink-200,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-pink-200,html[data-netbox-color-mode=dark] .btn-outline-pink-200:active,html[data-netbox-color-mode=dark] .btn-outline-pink-200.active,html[data-netbox-color-mode=dark] .btn-outline-pink-200.dropdown-toggle.show{color:#000;background-color:#efadce;border-color:#efadce}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-pink-200:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-pink-200:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-200:active:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-200.active:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-200.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #efadce80}html[data-netbox-color-mode=dark] .btn-outline-pink-200:disabled,html[data-netbox-color-mode=dark] .btn-outline-pink-200.disabled{color:#efadce;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-pink-300{color:#e685b5;border-color:#e685b5}html[data-netbox-color-mode=dark] .btn-outline-pink-300:hover{color:#000;background-color:#e685b5;border-color:#e685b5}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-pink-300,html[data-netbox-color-mode=dark] .btn-outline-pink-300:focus{box-shadow:0 0 0 .25rem #e685b580}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-pink-300,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-pink-300,html[data-netbox-color-mode=dark] .btn-outline-pink-300:active,html[data-netbox-color-mode=dark] .btn-outline-pink-300.active,html[data-netbox-color-mode=dark] .btn-outline-pink-300.dropdown-toggle.show{color:#000;background-color:#e685b5;border-color:#e685b5}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-pink-300:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-pink-300:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-300:active:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-300.active:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-300.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #e685b580}html[data-netbox-color-mode=dark] .btn-outline-pink-300:disabled,html[data-netbox-color-mode=dark] .btn-outline-pink-300.disabled{color:#e685b5;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-pink-400{color:#de5c9d;border-color:#de5c9d}html[data-netbox-color-mode=dark] .btn-outline-pink-400:hover{color:#000;background-color:#de5c9d;border-color:#de5c9d}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-pink-400,html[data-netbox-color-mode=dark] .btn-outline-pink-400:focus{box-shadow:0 0 0 .25rem #de5c9d80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-pink-400,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-pink-400,html[data-netbox-color-mode=dark] .btn-outline-pink-400:active,html[data-netbox-color-mode=dark] .btn-outline-pink-400.active,html[data-netbox-color-mode=dark] .btn-outline-pink-400.dropdown-toggle.show{color:#000;background-color:#de5c9d;border-color:#de5c9d}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-pink-400:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-pink-400:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-400:active:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-400.active:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-400.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #de5c9d80}html[data-netbox-color-mode=dark] .btn-outline-pink-400:disabled,html[data-netbox-color-mode=dark] .btn-outline-pink-400.disabled{color:#de5c9d;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-pink-500{color:#d63384;border-color:#d63384}html[data-netbox-color-mode=dark] .btn-outline-pink-500:hover{color:#fff;background-color:#d63384;border-color:#d63384}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-pink-500,html[data-netbox-color-mode=dark] .btn-outline-pink-500:focus{box-shadow:0 0 0 .25rem #d6338480}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-pink-500,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-pink-500,html[data-netbox-color-mode=dark] .btn-outline-pink-500:active,html[data-netbox-color-mode=dark] .btn-outline-pink-500.active,html[data-netbox-color-mode=dark] .btn-outline-pink-500.dropdown-toggle.show{color:#fff;background-color:#d63384;border-color:#d63384}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-pink-500:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-pink-500:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-500:active:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-500.active:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-500.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #d6338480}html[data-netbox-color-mode=dark] .btn-outline-pink-500:disabled,html[data-netbox-color-mode=dark] .btn-outline-pink-500.disabled{color:#d63384;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-pink-600{color:#ab296a;border-color:#ab296a}html[data-netbox-color-mode=dark] .btn-outline-pink-600:hover{color:#fff;background-color:#ab296a;border-color:#ab296a}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-pink-600,html[data-netbox-color-mode=dark] .btn-outline-pink-600:focus{box-shadow:0 0 0 .25rem #ab296a80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-pink-600,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-pink-600,html[data-netbox-color-mode=dark] .btn-outline-pink-600:active,html[data-netbox-color-mode=dark] .btn-outline-pink-600.active,html[data-netbox-color-mode=dark] .btn-outline-pink-600.dropdown-toggle.show{color:#fff;background-color:#ab296a;border-color:#ab296a}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-pink-600:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-pink-600:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-600:active:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-600.active:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-600.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #ab296a80}html[data-netbox-color-mode=dark] .btn-outline-pink-600:disabled,html[data-netbox-color-mode=dark] .btn-outline-pink-600.disabled{color:#ab296a;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-pink-700{color:#801f4f;border-color:#801f4f}html[data-netbox-color-mode=dark] .btn-outline-pink-700:hover{color:#fff;background-color:#801f4f;border-color:#801f4f}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-pink-700,html[data-netbox-color-mode=dark] .btn-outline-pink-700:focus{box-shadow:0 0 0 .25rem #801f4f80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-pink-700,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-pink-700,html[data-netbox-color-mode=dark] .btn-outline-pink-700:active,html[data-netbox-color-mode=dark] .btn-outline-pink-700.active,html[data-netbox-color-mode=dark] .btn-outline-pink-700.dropdown-toggle.show{color:#fff;background-color:#801f4f;border-color:#801f4f}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-pink-700:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-pink-700:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-700:active:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-700.active:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-700.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #801f4f80}html[data-netbox-color-mode=dark] .btn-outline-pink-700:disabled,html[data-netbox-color-mode=dark] .btn-outline-pink-700.disabled{color:#801f4f;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-pink-800{color:#561435;border-color:#561435}html[data-netbox-color-mode=dark] .btn-outline-pink-800:hover{color:#fff;background-color:#561435;border-color:#561435}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-pink-800,html[data-netbox-color-mode=dark] .btn-outline-pink-800:focus{box-shadow:0 0 0 .25rem #56143580}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-pink-800,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-pink-800,html[data-netbox-color-mode=dark] .btn-outline-pink-800:active,html[data-netbox-color-mode=dark] .btn-outline-pink-800.active,html[data-netbox-color-mode=dark] .btn-outline-pink-800.dropdown-toggle.show{color:#fff;background-color:#561435;border-color:#561435}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-pink-800:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-pink-800:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-800:active:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-800.active:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-800.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #56143580}html[data-netbox-color-mode=dark] .btn-outline-pink-800:disabled,html[data-netbox-color-mode=dark] .btn-outline-pink-800.disabled{color:#561435;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-pink-900{color:#2b0a1a;border-color:#2b0a1a}html[data-netbox-color-mode=dark] .btn-outline-pink-900:hover{color:#fff;background-color:#2b0a1a;border-color:#2b0a1a}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-pink-900,html[data-netbox-color-mode=dark] .btn-outline-pink-900:focus{box-shadow:0 0 0 .25rem #2b0a1a80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-pink-900,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-pink-900,html[data-netbox-color-mode=dark] .btn-outline-pink-900:active,html[data-netbox-color-mode=dark] .btn-outline-pink-900.active,html[data-netbox-color-mode=dark] .btn-outline-pink-900.dropdown-toggle.show{color:#fff;background-color:#2b0a1a;border-color:#2b0a1a}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-pink-900:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-pink-900:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-900:active:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-900.active:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-900.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #2b0a1a80}html[data-netbox-color-mode=dark] .btn-outline-pink-900:disabled,html[data-netbox-color-mode=dark] .btn-outline-pink-900.disabled{color:#2b0a1a;background-color:transparent}html[data-netbox-color-mode=dark] .btn-link{font-weight:400;color:#0d6efd;text-decoration:underline}html[data-netbox-color-mode=dark] .btn-link:hover{color:#0a58ca}html[data-netbox-color-mode=dark] .btn-link:disabled,html[data-netbox-color-mode=dark] .btn-link.disabled{color:#dee2e6}html[data-netbox-color-mode=dark] .btn-lg,html[data-netbox-color-mode=dark] .btn-group-lg>.btn{padding:.5rem 1rem;font-size:1.25rem;border-radius:.75rem}html[data-netbox-color-mode=dark] .btn-sm,html[data-netbox-color-mode=dark] .btn-group-sm>.btn{padding:.25rem .5rem;font-size:.875rem;border-radius:.375rem}html[data-netbox-color-mode=dark] .fade{transition:opacity .15s linear}@media (prefers-reduced-motion: reduce){html[data-netbox-color-mode=dark] .fade{transition:none}}html[data-netbox-color-mode=dark] .fade:not(.show){opacity:0}html[data-netbox-color-mode=dark] .collapse:not(.show){display:none}html[data-netbox-color-mode=dark] .collapsing{height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion: reduce){html[data-netbox-color-mode=dark] .collapsing{transition:none}}html[data-netbox-color-mode=dark] .dropup,html[data-netbox-color-mode=dark] .dropend,html[data-netbox-color-mode=dark] .dropdown,html[data-netbox-color-mode=dark] .dropstart{position:relative}html[data-netbox-color-mode=dark] .dropdown-toggle{white-space:nowrap}html[data-netbox-color-mode=dark] .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}html[data-netbox-color-mode=dark] .dropdown-toggle:empty:after{margin-left:0}html[data-netbox-color-mode=dark] .dropdown-menu{position:absolute;z-index:1000;display:none;min-width:10rem;padding:.5rem 0;margin:0;font-size:1rem;color:#fff;text-align:left;list-style:none;background-color:#212529;background-clip:padding-box;border:1px solid rgba(255,255,255,.15);border-radius:.375rem}html[data-netbox-color-mode=dark] .dropdown-menu[data-bs-popper]{top:100%;left:0;margin-top:.125rem}html[data-netbox-color-mode=dark] .dropdown-menu-start{--bs-position: start}html[data-netbox-color-mode=dark] .dropdown-menu-start[data-bs-popper]{right:auto;left:0}html[data-netbox-color-mode=dark] .dropdown-menu-end{--bs-position: end}html[data-netbox-color-mode=dark] .dropdown-menu-end[data-bs-popper]{right:0;left:auto}@media (min-width: 576px){html[data-netbox-color-mode=dark] .dropdown-menu-sm-start{--bs-position: start}html[data-netbox-color-mode=dark] .dropdown-menu-sm-start[data-bs-popper]{right:auto;left:0}html[data-netbox-color-mode=dark] .dropdown-menu-sm-end{--bs-position: end}html[data-netbox-color-mode=dark] .dropdown-menu-sm-end[data-bs-popper]{right:0;left:auto}}@media (min-width: 768px){html[data-netbox-color-mode=dark] .dropdown-menu-md-start{--bs-position: start}html[data-netbox-color-mode=dark] .dropdown-menu-md-start[data-bs-popper]{right:auto;left:0}html[data-netbox-color-mode=dark] .dropdown-menu-md-end{--bs-position: end}html[data-netbox-color-mode=dark] .dropdown-menu-md-end[data-bs-popper]{right:0;left:auto}}@media (min-width: 992px){html[data-netbox-color-mode=dark] .dropdown-menu-lg-start{--bs-position: start}html[data-netbox-color-mode=dark] .dropdown-menu-lg-start[data-bs-popper]{right:auto;left:0}html[data-netbox-color-mode=dark] .dropdown-menu-lg-end{--bs-position: end}html[data-netbox-color-mode=dark] .dropdown-menu-lg-end[data-bs-popper]{right:0;left:auto}}@media (min-width: 1200px){html[data-netbox-color-mode=dark] .dropdown-menu-xl-start{--bs-position: start}html[data-netbox-color-mode=dark] .dropdown-menu-xl-start[data-bs-popper]{right:auto;left:0}html[data-netbox-color-mode=dark] .dropdown-menu-xl-end{--bs-position: end}html[data-netbox-color-mode=dark] .dropdown-menu-xl-end[data-bs-popper]{right:0;left:auto}}@media (min-width: 1400px){html[data-netbox-color-mode=dark] .dropdown-menu-xxl-start{--bs-position: start}html[data-netbox-color-mode=dark] .dropdown-menu-xxl-start[data-bs-popper]{right:auto;left:0}html[data-netbox-color-mode=dark] .dropdown-menu-xxl-end{--bs-position: end}html[data-netbox-color-mode=dark] .dropdown-menu-xxl-end[data-bs-popper]{right:0;left:auto}}html[data-netbox-color-mode=dark] .dropup .dropdown-menu[data-bs-popper]{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}html[data-netbox-color-mode=dark] .dropup .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}html[data-netbox-color-mode=dark] .dropup .dropdown-toggle:empty:after{margin-left:0}html[data-netbox-color-mode=dark] .dropend .dropdown-menu[data-bs-popper]{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}html[data-netbox-color-mode=dark] .dropend .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}html[data-netbox-color-mode=dark] .dropend .dropdown-toggle:empty:after{margin-left:0}html[data-netbox-color-mode=dark] .dropend .dropdown-toggle:after{vertical-align:0}html[data-netbox-color-mode=dark] .dropstart .dropdown-menu[data-bs-popper]{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}html[data-netbox-color-mode=dark] .dropstart .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}html[data-netbox-color-mode=dark] .dropstart .dropdown-toggle:after{display:none}html[data-netbox-color-mode=dark] .dropstart .dropdown-toggle:before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}html[data-netbox-color-mode=dark] .dropstart .dropdown-toggle:empty:after{margin-left:0}html[data-netbox-color-mode=dark] .dropstart .dropdown-toggle:before{vertical-align:0}html[data-netbox-color-mode=dark] .dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid rgba(0,0,0,.15)}html[data-netbox-color-mode=dark] .dropdown-item{display:block;width:100%;padding:.25rem 1rem;clear:both;font-weight:400;color:#f8f9fa;text-align:inherit;text-decoration:none;white-space:nowrap;background-color:transparent;border:0}html[data-netbox-color-mode=dark] .dropdown-item:hover,html[data-netbox-color-mode=dark] .dropdown-item:focus{color:#fff;background-color:#6c757d}html[data-netbox-color-mode=dark] .dropdown-item.active,html[data-netbox-color-mode=dark] .dropdown-item:active{color:#fff;text-decoration:none;background-color:#0d6efd}html[data-netbox-color-mode=dark] .dropdown-item.disabled,html[data-netbox-color-mode=dark] .dropdown-item:disabled{color:#343a40;pointer-events:none;background-color:transparent}html[data-netbox-color-mode=dark] .dropdown-menu.show{display:block}html[data-netbox-color-mode=dark] .dropdown-header{display:block;padding:.5rem 1rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}html[data-netbox-color-mode=dark] .dropdown-item-text{display:block;padding:.25rem 1rem;color:#f8f9fa}html[data-netbox-color-mode=dark] .dropdown-menu-dark{color:#dee2e6;background-color:#343a40;border-color:#00000026}html[data-netbox-color-mode=dark] .dropdown-menu-dark .dropdown-item{color:#dee2e6}html[data-netbox-color-mode=dark] .dropdown-menu-dark .dropdown-item:hover,html[data-netbox-color-mode=dark] .dropdown-menu-dark .dropdown-item:focus{color:#fff;background-color:#ffffff26}html[data-netbox-color-mode=dark] .dropdown-menu-dark .dropdown-item.active,html[data-netbox-color-mode=dark] .dropdown-menu-dark .dropdown-item:active{color:#fff;background-color:#0d6efd}html[data-netbox-color-mode=dark] .dropdown-menu-dark .dropdown-item.disabled,html[data-netbox-color-mode=dark] .dropdown-menu-dark .dropdown-item:disabled{color:#adb5bd}html[data-netbox-color-mode=dark] .dropdown-menu-dark .dropdown-divider{border-color:#00000026}html[data-netbox-color-mode=dark] .dropdown-menu-dark .dropdown-item-text{color:#dee2e6}html[data-netbox-color-mode=dark] .dropdown-menu-dark .dropdown-header{color:#adb5bd}html[data-netbox-color-mode=dark] .btn-group,html[data-netbox-color-mode=dark] .btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}html[data-netbox-color-mode=dark] .btn-group>.btn,html[data-netbox-color-mode=dark] .btn-group-vertical>.btn{position:relative;flex:1 1 auto}html[data-netbox-color-mode=dark] .btn-group>.btn-check:checked+.btn,html[data-netbox-color-mode=dark] .btn-group>.btn-check:focus+.btn,html[data-netbox-color-mode=dark] .btn-group>.btn:hover,html[data-netbox-color-mode=dark] .btn-group>.btn:focus,html[data-netbox-color-mode=dark] .btn-group>.btn:active,html[data-netbox-color-mode=dark] .btn-group>.btn.active,html[data-netbox-color-mode=dark] .btn-group-vertical>.btn-check:checked+.btn,html[data-netbox-color-mode=dark] .btn-group-vertical>.btn-check:focus+.btn,html[data-netbox-color-mode=dark] .btn-group-vertical>.btn:hover,html[data-netbox-color-mode=dark] .btn-group-vertical>.btn:focus,html[data-netbox-color-mode=dark] .btn-group-vertical>.btn:active,html[data-netbox-color-mode=dark] .btn-group-vertical>.btn.active{z-index:1}html[data-netbox-color-mode=dark] .btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}html[data-netbox-color-mode=dark] .btn-toolbar .input-group{width:auto}html[data-netbox-color-mode=dark] .btn-group>.btn:not(:first-child),html[data-netbox-color-mode=dark] .btn-group>.btn-group:not(:first-child){margin-left:-1px}html[data-netbox-color-mode=dark] .btn-group>.btn:not(:last-child):not(.dropdown-toggle),html[data-netbox-color-mode=dark] .btn-group>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}html[data-netbox-color-mode=dark] .btn-group>.btn:nth-child(n+3),html[data-netbox-color-mode=dark] .btn-group>:not(.btn-check)+.btn,html[data-netbox-color-mode=dark] .btn-group>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}html[data-netbox-color-mode=dark] .dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}html[data-netbox-color-mode=dark] .dropdown-toggle-split:after,.dropup html[data-netbox-color-mode=dark] .dropdown-toggle-split:after,.dropend html[data-netbox-color-mode=dark] .dropdown-toggle-split:after{margin-left:0}.dropstart html[data-netbox-color-mode=dark] .dropdown-toggle-split:before{margin-right:0}html[data-netbox-color-mode=dark] .btn-sm+.dropdown-toggle-split,html[data-netbox-color-mode=dark] .btn-group-sm>.btn+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}html[data-netbox-color-mode=dark] .btn-lg+.dropdown-toggle-split,html[data-netbox-color-mode=dark] .btn-group-lg>.btn+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}html[data-netbox-color-mode=dark] .btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}html[data-netbox-color-mode=dark] .btn-group-vertical>.btn,html[data-netbox-color-mode=dark] .btn-group-vertical>.btn-group{width:100%}html[data-netbox-color-mode=dark] .btn-group-vertical>.btn:not(:first-child),html[data-netbox-color-mode=dark] .btn-group-vertical>.btn-group:not(:first-child){margin-top:-1px}html[data-netbox-color-mode=dark] .btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle),html[data-netbox-color-mode=dark] .btn-group-vertical>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-bottom-left-radius:0}html[data-netbox-color-mode=dark] .btn-group-vertical>.btn~.btn,html[data-netbox-color-mode=dark] .btn-group-vertical>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-top-right-radius:0}html[data-netbox-color-mode=dark] .nav{display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}html[data-netbox-color-mode=dark] .nav-link{display:block;padding:.5rem 1rem;color:#fff;text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media (prefers-reduced-motion: reduce){html[data-netbox-color-mode=dark] .nav-link{transition:none}}html[data-netbox-color-mode=dark] .nav-link.disabled{color:#343a40;pointer-events:none;cursor:default}html[data-netbox-color-mode=dark] .nav-tabs{border-bottom:1px solid #495057}html[data-netbox-color-mode=dark] .nav-tabs .nav-link{margin-bottom:-1px;background:none;border:1px solid transparent;border-top-left-radius:.375rem;border-top-right-radius:.375rem}html[data-netbox-color-mode=dark] .nav-tabs .nav-link:hover,html[data-netbox-color-mode=dark] .nav-tabs .nav-link:focus{border-color:rgba(52,58,64,.5) rgba(52,58,64,.5) #495057;isolation:isolate}html[data-netbox-color-mode=dark] .nav-tabs .nav-link.disabled{color:#343a40;background-color:transparent;border-color:transparent}html[data-netbox-color-mode=dark] .nav-tabs .nav-link.active,html[data-netbox-color-mode=dark] .nav-tabs .nav-item.show .nav-link{color:#f8f9fa;background-color:#1b1f22;border-color:#343a40 #343a40 #1b1f22}html[data-netbox-color-mode=dark] .nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}html[data-netbox-color-mode=dark] .nav-pills .nav-link{background:none;border:0;border-radius:.375rem}html[data-netbox-color-mode=dark] .nav-pills .nav-link.active,html[data-netbox-color-mode=dark] .nav-pills .show>.nav-link{color:#000;background-color:#6ea8fe}html[data-netbox-color-mode=dark] .nav-fill>.nav-link,html[data-netbox-color-mode=dark] .nav-fill .nav-item{flex:1 1 auto;text-align:center}html[data-netbox-color-mode=dark] .nav-justified>.nav-link,html[data-netbox-color-mode=dark] .nav-justified .nav-item{flex-basis:0;flex-grow:1;text-align:center}html[data-netbox-color-mode=dark] .nav-fill .nav-item .nav-link,html[data-netbox-color-mode=dark] .nav-justified .nav-item .nav-link{width:100%}html[data-netbox-color-mode=dark] .tab-content>.tab-pane{display:none}html[data-netbox-color-mode=dark] .tab-content>.active{display:block}html[data-netbox-color-mode=dark] .navbar{position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding-top:.5rem;padding-bottom:.5rem}html[data-netbox-color-mode=dark] .navbar>.container,html[data-netbox-color-mode=dark] .navbar>.container-fluid,html[data-netbox-color-mode=dark] .navbar>.container-sm,html[data-netbox-color-mode=dark] .navbar>.container-md,html[data-netbox-color-mode=dark] .navbar>.container-lg,html[data-netbox-color-mode=dark] .navbar>.container-xl,html[data-netbox-color-mode=dark] .navbar>.container-xxl{display:flex;flex-wrap:inherit;align-items:center;justify-content:space-between}html[data-netbox-color-mode=dark] .navbar-brand{padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;text-decoration:none;white-space:nowrap}html[data-netbox-color-mode=dark] .navbar-nav{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}html[data-netbox-color-mode=dark] .navbar-nav .nav-link{padding-right:0;padding-left:0}html[data-netbox-color-mode=dark] .navbar-nav .dropdown-menu{position:static}html[data-netbox-color-mode=dark] .navbar-text{padding-top:.5rem;padding-bottom:.5rem}html[data-netbox-color-mode=dark] .navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}html[data-netbox-color-mode=dark] .navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.375rem;transition:box-shadow .15s ease-in-out}@media (prefers-reduced-motion: reduce){html[data-netbox-color-mode=dark] .navbar-toggler{transition:none}}html[data-netbox-color-mode=dark] .navbar-toggler:hover{text-decoration:none}html[data-netbox-color-mode=dark] .navbar-toggler:focus{text-decoration:none;outline:0;box-shadow:0 0 0 .25rem}html[data-netbox-color-mode=dark] .navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;background-repeat:no-repeat;background-position:center;background-size:100%}html[data-netbox-color-mode=dark] .navbar-nav-scroll{max-height:var(--bs-scroll-height, 75vh);overflow-y:auto}@media (min-width: 576px){html[data-netbox-color-mode=dark] .navbar-expand-sm{flex-wrap:nowrap;justify-content:flex-start}html[data-netbox-color-mode=dark] .navbar-expand-sm .navbar-nav{flex-direction:row}html[data-netbox-color-mode=dark] .navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}html[data-netbox-color-mode=dark] .navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}html[data-netbox-color-mode=dark] .navbar-expand-sm .navbar-nav-scroll{overflow:visible}html[data-netbox-color-mode=dark] .navbar-expand-sm .navbar-collapse{display:flex!important;flex-basis:auto}html[data-netbox-color-mode=dark] .navbar-expand-sm .navbar-toggler{display:none}}@media (min-width: 768px){html[data-netbox-color-mode=dark] .navbar-expand-md{flex-wrap:nowrap;justify-content:flex-start}html[data-netbox-color-mode=dark] .navbar-expand-md .navbar-nav{flex-direction:row}html[data-netbox-color-mode=dark] .navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}html[data-netbox-color-mode=dark] .navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}html[data-netbox-color-mode=dark] .navbar-expand-md .navbar-nav-scroll{overflow:visible}html[data-netbox-color-mode=dark] .navbar-expand-md .navbar-collapse{display:flex!important;flex-basis:auto}html[data-netbox-color-mode=dark] .navbar-expand-md .navbar-toggler{display:none}}@media (min-width: 992px){html[data-netbox-color-mode=dark] .navbar-expand-lg{flex-wrap:nowrap;justify-content:flex-start}html[data-netbox-color-mode=dark] .navbar-expand-lg .navbar-nav{flex-direction:row}html[data-netbox-color-mode=dark] .navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}html[data-netbox-color-mode=dark] .navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}html[data-netbox-color-mode=dark] .navbar-expand-lg .navbar-nav-scroll{overflow:visible}html[data-netbox-color-mode=dark] .navbar-expand-lg .navbar-collapse{display:flex!important;flex-basis:auto}html[data-netbox-color-mode=dark] .navbar-expand-lg .navbar-toggler{display:none}}@media (min-width: 1200px){html[data-netbox-color-mode=dark] .navbar-expand-xl{flex-wrap:nowrap;justify-content:flex-start}html[data-netbox-color-mode=dark] .navbar-expand-xl .navbar-nav{flex-direction:row}html[data-netbox-color-mode=dark] .navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}html[data-netbox-color-mode=dark] .navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}html[data-netbox-color-mode=dark] .navbar-expand-xl .navbar-nav-scroll{overflow:visible}html[data-netbox-color-mode=dark] .navbar-expand-xl .navbar-collapse{display:flex!important;flex-basis:auto}html[data-netbox-color-mode=dark] .navbar-expand-xl .navbar-toggler{display:none}}@media (min-width: 1400px){html[data-netbox-color-mode=dark] .navbar-expand-xxl{flex-wrap:nowrap;justify-content:flex-start}html[data-netbox-color-mode=dark] .navbar-expand-xxl .navbar-nav{flex-direction:row}html[data-netbox-color-mode=dark] .navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}html[data-netbox-color-mode=dark] .navbar-expand-xxl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}html[data-netbox-color-mode=dark] .navbar-expand-xxl .navbar-nav-scroll{overflow:visible}html[data-netbox-color-mode=dark] .navbar-expand-xxl .navbar-collapse{display:flex!important;flex-basis:auto}html[data-netbox-color-mode=dark] .navbar-expand-xxl .navbar-toggler{display:none}}html[data-netbox-color-mode=dark] .navbar-expand{flex-wrap:nowrap;justify-content:flex-start}html[data-netbox-color-mode=dark] .navbar-expand .navbar-nav{flex-direction:row}html[data-netbox-color-mode=dark] .navbar-expand .navbar-nav .dropdown-menu{position:absolute}html[data-netbox-color-mode=dark] .navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}html[data-netbox-color-mode=dark] .navbar-expand .navbar-nav-scroll{overflow:visible}html[data-netbox-color-mode=dark] .navbar-expand .navbar-collapse{display:flex!important;flex-basis:auto}html[data-netbox-color-mode=dark] .navbar-expand .navbar-toggler{display:none}html[data-netbox-color-mode=dark] .navbar-light .navbar-brand{color:#000000e6}html[data-netbox-color-mode=dark] .navbar-light .navbar-brand:hover,html[data-netbox-color-mode=dark] .navbar-light .navbar-brand:focus{color:#000000e6}html[data-netbox-color-mode=dark] .navbar-light .navbar-nav .nav-link{color:#adb5bd}html[data-netbox-color-mode=dark] .navbar-light .navbar-nav .nav-link:hover,html[data-netbox-color-mode=dark] .navbar-light .navbar-nav .nav-link:focus{color:#000000b3}html[data-netbox-color-mode=dark] .navbar-light .navbar-nav .nav-link.disabled{color:#0000004d}html[data-netbox-color-mode=dark] .navbar-light .navbar-nav .show>.nav-link,html[data-netbox-color-mode=dark] .navbar-light .navbar-nav .nav-link.active{color:#000000e6}html[data-netbox-color-mode=dark] .navbar-light .navbar-toggler{color:#adb5bd;border-color:#495057}html[data-netbox-color-mode=dark] .navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='%23adb5bd' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}html[data-netbox-color-mode=dark] .navbar-light .navbar-text{color:#adb5bd}html[data-netbox-color-mode=dark] .navbar-light .navbar-text a,html[data-netbox-color-mode=dark] .navbar-light .navbar-text a:hover,html[data-netbox-color-mode=dark] .navbar-light .navbar-text a:focus{color:#000000e6}html[data-netbox-color-mode=dark] .navbar-dark .navbar-brand{color:#fff}html[data-netbox-color-mode=dark] .navbar-dark .navbar-brand:hover,html[data-netbox-color-mode=dark] .navbar-dark .navbar-brand:focus{color:#fff}html[data-netbox-color-mode=dark] .navbar-dark .navbar-nav .nav-link{color:#ffffff8c}html[data-netbox-color-mode=dark] .navbar-dark .navbar-nav .nav-link:hover,html[data-netbox-color-mode=dark] .navbar-dark .navbar-nav .nav-link:focus{color:#ffffffbf}html[data-netbox-color-mode=dark] .navbar-dark .navbar-nav .nav-link.disabled{color:#ffffff40}html[data-netbox-color-mode=dark] .navbar-dark .navbar-nav .show>.nav-link,html[data-netbox-color-mode=dark] .navbar-dark .navbar-nav .nav-link.active{color:#fff}html[data-netbox-color-mode=dark] .navbar-dark .navbar-toggler{color:#ffffff8c;border-color:#ffffff1a}html[data-netbox-color-mode=dark] .navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}html[data-netbox-color-mode=dark] .navbar-dark .navbar-text{color:#ffffff8c}html[data-netbox-color-mode=dark] .navbar-dark .navbar-text a,html[data-netbox-color-mode=dark] .navbar-dark .navbar-text a:hover,html[data-netbox-color-mode=dark] .navbar-dark .navbar-text a:focus{color:#fff}html[data-netbox-color-mode=dark] .card{position:relative;display:flex;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#212529;background-clip:border-box;border:1px solid rgba(255,255,255,.125);border-radius:.375rem}html[data-netbox-color-mode=dark] .card>hr{margin-right:0;margin-left:0}html[data-netbox-color-mode=dark] .card>.list-group{border-top:inherit;border-bottom:inherit}html[data-netbox-color-mode=dark] .card>.list-group:first-child{border-top-width:0;border-top-left-radius:calc(.375rem - 1px);border-top-right-radius:calc(.375rem - 1px)}html[data-netbox-color-mode=dark] .card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:calc(.375rem - 1px);border-bottom-left-radius:calc(.375rem - 1px)}html[data-netbox-color-mode=dark] .card>.card-header+.list-group,html[data-netbox-color-mode=dark] .card>.list-group+.card-footer{border-top:0}html[data-netbox-color-mode=dark] .card-body{flex:1 1 auto;padding:1rem}html[data-netbox-color-mode=dark] .card-title{margin-bottom:.5rem}html[data-netbox-color-mode=dark] .card-subtitle{margin-top:-.25rem;margin-bottom:0}html[data-netbox-color-mode=dark] .card-text:last-child{margin-bottom:0}html[data-netbox-color-mode=dark] .card-link:hover{text-decoration:none}html[data-netbox-color-mode=dark] .card-link+.card-link{margin-left:1rem}html[data-netbox-color-mode=dark] .card-header{padding:.5rem 1rem;margin-bottom:0;background-color:"unset";border-bottom:1px solid rgba(255,255,255,.125)}html[data-netbox-color-mode=dark] .card-header:first-child{border-radius:calc(.375rem - 1px) calc(.375rem - 1px) 0 0}html[data-netbox-color-mode=dark] .card-footer{padding:.5rem 1rem;background-color:"unset";border-top:1px solid rgba(255,255,255,.125)}html[data-netbox-color-mode=dark] .card-footer:last-child{border-radius:0 0 calc(.375rem - 1px) calc(.375rem - 1px)}html[data-netbox-color-mode=dark] .card-header-tabs{margin-right:-.5rem;margin-bottom:-.5rem;margin-left:-.5rem;border-bottom:0}html[data-netbox-color-mode=dark] .card-header-tabs .nav-link.active{background-color:#212529;border-bottom-color:#212529}html[data-netbox-color-mode=dark] .card-header-pills{margin-right:-.5rem;margin-left:-.5rem}html[data-netbox-color-mode=dark] .card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1rem;border-radius:calc(.375rem - 1px)}html[data-netbox-color-mode=dark] .card-img,html[data-netbox-color-mode=dark] .card-img-top,html[data-netbox-color-mode=dark] .card-img-bottom{width:100%}html[data-netbox-color-mode=dark] .card-img,html[data-netbox-color-mode=dark] .card-img-top{border-top-left-radius:calc(.375rem - 1px);border-top-right-radius:calc(.375rem - 1px)}html[data-netbox-color-mode=dark] .card-img,html[data-netbox-color-mode=dark] .card-img-bottom{border-bottom-right-radius:calc(.375rem - 1px);border-bottom-left-radius:calc(.375rem - 1px)}html[data-netbox-color-mode=dark] .card-group>.card{margin-bottom:.75rem}@media (min-width: 576px){html[data-netbox-color-mode=dark] .card-group{display:flex;flex-flow:row wrap}html[data-netbox-color-mode=dark] .card-group>.card{flex:1 0 0%;margin-bottom:0}html[data-netbox-color-mode=dark] .card-group>.card+.card{margin-left:0;border-left:0}html[data-netbox-color-mode=dark] .card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}html[data-netbox-color-mode=dark] .card-group>.card:not(:last-child) .card-img-top,html[data-netbox-color-mode=dark] .card-group>.card:not(:last-child) .card-header{border-top-right-radius:0}html[data-netbox-color-mode=dark] .card-group>.card:not(:last-child) .card-img-bottom,html[data-netbox-color-mode=dark] .card-group>.card:not(:last-child) .card-footer{border-bottom-right-radius:0}html[data-netbox-color-mode=dark] .card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}html[data-netbox-color-mode=dark] .card-group>.card:not(:first-child) .card-img-top,html[data-netbox-color-mode=dark] .card-group>.card:not(:first-child) .card-header{border-top-left-radius:0}html[data-netbox-color-mode=dark] .card-group>.card:not(:first-child) .card-img-bottom,html[data-netbox-color-mode=dark] .card-group>.card:not(:first-child) .card-footer{border-bottom-left-radius:0}}html[data-netbox-color-mode=dark] .accordion-button{position:relative;display:flex;align-items:center;width:100%;padding:1rem 1.25rem;font-size:1rem;color:#fff;text-align:left;background-color:transparent;border:0;border-radius:0;overflow-anchor:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,border-radius .15s ease}@media (prefers-reduced-motion: reduce){html[data-netbox-color-mode=dark] .accordion-button{transition:none}}html[data-netbox-color-mode=dark] .accordion-button:not(.collapsed){color:#000;background-color:#6397e5;box-shadow:inset 0 -1px #495057}html[data-netbox-color-mode=dark] .accordion-button:not(.collapsed):after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");transform:rotate(-180deg)}html[data-netbox-color-mode=dark] .accordion-button:after{flex-shrink:0;width:1.25rem;height:1.25rem;margin-left:auto;content:"";background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-size:1.25rem;transition:transform .2s ease-in-out}@media (prefers-reduced-motion: reduce){html[data-netbox-color-mode=dark] .accordion-button:after{transition:none}}html[data-netbox-color-mode=dark] .accordion-button:hover{z-index:2}html[data-netbox-color-mode=dark] .accordion-button:focus{z-index:3;border-color:#7db1fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}html[data-netbox-color-mode=dark] .accordion-header{margin-bottom:0}html[data-netbox-color-mode=dark] .accordion-item{background-color:transparent;border:1px solid #495057}html[data-netbox-color-mode=dark] .accordion-item:first-of-type{border-top-left-radius:.375rem;border-top-right-radius:.375rem}html[data-netbox-color-mode=dark] .accordion-item:first-of-type .accordion-button{border-top-left-radius:calc(.375rem - 1px);border-top-right-radius:calc(.375rem - 1px)}html[data-netbox-color-mode=dark] .accordion-item:not(:first-of-type){border-top:0}html[data-netbox-color-mode=dark] .accordion-item:last-of-type{border-bottom-right-radius:.375rem;border-bottom-left-radius:.375rem}html[data-netbox-color-mode=dark] .accordion-item:last-of-type .accordion-button.collapsed{border-bottom-right-radius:calc(.375rem - 1px);border-bottom-left-radius:calc(.375rem - 1px)}html[data-netbox-color-mode=dark] .accordion-item:last-of-type .accordion-collapse{border-bottom-right-radius:.375rem;border-bottom-left-radius:.375rem}html[data-netbox-color-mode=dark] .accordion-body{padding:1rem 1.25rem}html[data-netbox-color-mode=dark] .accordion-flush .accordion-collapse{border-width:0}html[data-netbox-color-mode=dark] .accordion-flush .accordion-item{border-right:0;border-left:0;border-radius:0}html[data-netbox-color-mode=dark] .accordion-flush .accordion-item:first-child{border-top:0}html[data-netbox-color-mode=dark] .accordion-flush .accordion-item:last-child{border-bottom:0}html[data-netbox-color-mode=dark] .accordion-flush .accordion-item .accordion-button{border-radius:0}html[data-netbox-color-mode=dark] .breadcrumb{display:flex;flex-wrap:wrap;padding:0;margin-bottom:1rem;list-style:none}html[data-netbox-color-mode=dark] .breadcrumb-item+.breadcrumb-item{padding-left:.5rem}html[data-netbox-color-mode=dark] .breadcrumb-item+.breadcrumb-item:before{float:left;padding-right:.5rem;color:#f8f9fa;content:var(--bs-breadcrumb-divider, url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8'%3E%3Cpath d='M2.5 0L1 1.5 3.5 4 1 6.5 2.5 8l4-4-4-4z' fill='%23f8f9fa'/%3E%3C/svg%3E"))}html[data-netbox-color-mode=dark] .breadcrumb-item.active{color:#fff}html[data-netbox-color-mode=dark] .pagination{display:flex;padding-left:0;list-style:none}html[data-netbox-color-mode=dark] .page-link{position:relative;display:block;color:#9ec5fe;text-decoration:none;background-color:#343a40;border:1px solid #6c757d;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion: reduce){html[data-netbox-color-mode=dark] .page-link{transition:none}}html[data-netbox-color-mode=dark] .page-link:hover{z-index:2;color:#cfe2ff;background-color:#ced4da;border-color:#adb5bd}html[data-netbox-color-mode=dark] .page-link:focus{z-index:3;color:#cfe2ff;background-color:#ced4da;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}html[data-netbox-color-mode=dark] .page-item:not(:first-child) .page-link{margin-left:-1px}html[data-netbox-color-mode=dark] .page-item.active .page-link{z-index:3;color:#000;background-color:#6ea8fe;border-color:#6ea8fe}html[data-netbox-color-mode=dark] .page-item.disabled .page-link{color:#6c757d;pointer-events:none;background-color:#343a40;border-color:#6c757d}html[data-netbox-color-mode=dark] .page-link{padding:.375rem .75rem}html[data-netbox-color-mode=dark] .page-item:first-child .page-link{border-top-left-radius:.375rem;border-bottom-left-radius:.375rem}html[data-netbox-color-mode=dark] .page-item:last-child .page-link{border-top-right-radius:.375rem;border-bottom-right-radius:.375rem}html[data-netbox-color-mode=dark] .pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem}html[data-netbox-color-mode=dark] .pagination-lg .page-item:first-child .page-link{border-top-left-radius:.75rem;border-bottom-left-radius:.75rem}html[data-netbox-color-mode=dark] .pagination-lg .page-item:last-child .page-link{border-top-right-radius:.75rem;border-bottom-right-radius:.75rem}html[data-netbox-color-mode=dark] .pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem}html[data-netbox-color-mode=dark] .pagination-sm .page-item:first-child .page-link{border-top-left-radius:.375rem;border-bottom-left-radius:.375rem}html[data-netbox-color-mode=dark] .pagination-sm .page-item:last-child .page-link{border-top-right-radius:.375rem;border-bottom-right-radius:.375rem}html[data-netbox-color-mode=dark] .badge{display:inline-block;padding:.35em .65em;font-size:.75em;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.375rem}html[data-netbox-color-mode=dark] .badge:empty{display:none}html[data-netbox-color-mode=dark] .btn .badge{position:relative;top:-1px}html[data-netbox-color-mode=dark] .alert{position:relative;padding:1rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.375rem}html[data-netbox-color-mode=dark] .alert-heading{color:inherit}html[data-netbox-color-mode=dark] .alert-link{font-weight:700}html[data-netbox-color-mode=dark] .alert-dismissible{padding-right:3rem}html[data-netbox-color-mode=dark] .alert-dismissible .btn-close{position:absolute;top:0;right:0;z-index:2;padding:1.25rem 1rem}html[data-netbox-color-mode=dark] .alert-primary{color:#162233;background-color:#75acfe;border-color:#8bb9fe}html[data-netbox-color-mode=dark] .alert-primary .alert-link{color:#121b29}html[data-netbox-color-mode=dark] .alert-secondary{color:#232426;background-color:#b1b9c0;border-color:#bdc4ca}html[data-netbox-color-mode=dark] .alert-secondary .alert-link{color:#1c1d1e}html[data-netbox-color-mode=dark] .alert-success{color:#17251e;background-color:#7cbb9d;border-color:#91c5ad}html[data-netbox-color-mode=dark] .alert-success .alert-link{color:#121e18}html[data-netbox-color-mode=dark] .alert-info{color:#162d31;background-color:#75e1f6;border-color:#8be5f8}html[data-netbox-color-mode=dark] .alert-info .alert-link{color:#122427}html[data-netbox-color-mode=dark] .alert-warning{color:#332c15;background-color:#ffdc71;border-color:#ffe188}html[data-netbox-color-mode=dark] .alert-warning .alert-link{color:#292311}html[data-netbox-color-mode=dark] .alert-danger{color:#2f1b1d;background-color:#eb8c95;border-color:#ee9ea5}html[data-netbox-color-mode=dark] .alert-danger .alert-link{color:#261617}html[data-netbox-color-mode=dark] .alert-light{color:#2c2d2e;background-color:#e0e3e7;border-color:#e5e8eb}html[data-netbox-color-mode=dark] .alert-light .alert-link{color:#232425}html[data-netbox-color-mode=dark] .alert-dark{color:#232426;background-color:#b1b9c0;border-color:#bdc4ca}html[data-netbox-color-mode=dark] .alert-dark .alert-link{color:#1c1d1e}html[data-netbox-color-mode=dark] .alert-red{color:#2f1b1d;background-color:#eb8c95;border-color:#ee9ea5}html[data-netbox-color-mode=dark] .alert-red .alert-link{color:#261617}html[data-netbox-color-mode=dark] .alert-yellow{color:#332c15;background-color:#ffdc71;border-color:#ffe188}html[data-netbox-color-mode=dark] .alert-yellow .alert-link{color:#292311}html[data-netbox-color-mode=dark] .alert-green{color:#17251e;background-color:#7cbb9d;border-color:#91c5ad}html[data-netbox-color-mode=dark] .alert-green .alert-link{color:#121e18}html[data-netbox-color-mode=dark] .alert-blue{color:#162233;background-color:#75acfe;border-color:#8bb9fe}html[data-netbox-color-mode=dark] .alert-blue .alert-link{color:#121b29}html[data-netbox-color-mode=dark] .alert-cyan{color:#162d31;background-color:#75e1f6;border-color:#8be5f8}html[data-netbox-color-mode=dark] .alert-cyan .alert-link{color:#122427}html[data-netbox-color-mode=dark] .alert-indigo{color:#211631;background-color:#a877f7;border-color:#b58df9}html[data-netbox-color-mode=dark] .alert-indigo .alert-link{color:#1a1227}html[data-netbox-color-mode=dark] .alert-purple{color:#221c2c;background-color:#ad94dc;border-color:#baa5e1}html[data-netbox-color-mode=dark] .alert-purple .alert-link{color:#1b1623}html[data-netbox-color-mode=dark] .alert-pink{color:#2e1b24;background-color:#e78bb9;border-color:#eb9dc4}html[data-netbox-color-mode=dark] .alert-pink .alert-link{color:#25161d}html[data-netbox-color-mode=dark] .alert-darker{color:#d1d2d3;background-color:#262a2d;border-color:#494c4e}html[data-netbox-color-mode=dark] .alert-darker .alert-link{color:#a7a8a9}html[data-netbox-color-mode=dark] .alert-darkest{color:#d1d1d2;background-color:#232628;border-color:#45494a}html[data-netbox-color-mode=dark] .alert-darkest .alert-link{color:#a7a7a8}html[data-netbox-color-mode=dark] .alert-gray{color:#292a2c;background-color:#d0d6dc;border-color:#d8dde1}html[data-netbox-color-mode=dark] .alert-gray .alert-link{color:#212223}html[data-netbox-color-mode=dark] .alert-gray-100{color:#323232;background-color:#f8f9fa;border-color:#f9fafb}html[data-netbox-color-mode=dark] .alert-gray-100 .alert-link{color:#282828}html[data-netbox-color-mode=dark] .alert-gray-200{color:#2f2f30;background-color:#eaedf0;border-color:#edf0f2}html[data-netbox-color-mode=dark] .alert-gray-200 .alert-link{color:#262626}html[data-netbox-color-mode=dark] .alert-gray-300{color:#2c2d2e;background-color:#e0e3e7;border-color:#e5e8eb}html[data-netbox-color-mode=dark] .alert-gray-300 .alert-link{color:#232425}html[data-netbox-color-mode=dark] .alert-gray-400{color:#292a2c;background-color:#d0d6dc;border-color:#d8dde1}html[data-netbox-color-mode=dark] .alert-gray-400 .alert-link{color:#212223}html[data-netbox-color-mode=dark] .alert-gray-500{color:#232426;background-color:#b1b9c0;border-color:#bdc4ca}html[data-netbox-color-mode=dark] .alert-gray-500 .alert-link{color:#1c1d1e}html[data-netbox-color-mode=dark] .alert-gray-600{color:#161719;background-color:#737c84;border-color:#899197}html[data-netbox-color-mode=dark] .alert-gray-600 .alert-link{color:#121214}html[data-netbox-color-mode=dark] .alert-gray-700{color:#dbdcdd;background-color:#52595f;border-color:#6d7379}html[data-netbox-color-mode=dark] .alert-gray-700 .alert-link{color:#afb0b1}html[data-netbox-color-mode=dark] .alert-gray-800{color:#d6d8d9;background-color:#3e444a;border-color:#5d6166}html[data-netbox-color-mode=dark] .alert-gray-800 .alert-link{color:#abadae}html[data-netbox-color-mode=dark] .alert-gray-900{color:#d3d3d4;background-color:#2c3034;border-color:#4d5154}html[data-netbox-color-mode=dark] .alert-gray-900 .alert-link{color:#a9a9aa}html[data-netbox-color-mode=dark] .alert-red-100{color:#322b2c;background-color:#f8d9dc;border-color:#f9dfe1}html[data-netbox-color-mode=dark] .alert-red-100 .alert-link{color:#282223}html[data-netbox-color-mode=dark] .alert-red-200{color:#302324;background-color:#f2b2b9;border-color:#f4bec4}html[data-netbox-color-mode=dark] .alert-red-200 .alert-link{color:#261c1d}html[data-netbox-color-mode=dark] .alert-red-300{color:#2f1b1d;background-color:#eb8c95;border-color:#ee9ea5}html[data-netbox-color-mode=dark] .alert-red-300 .alert-link{color:#261617}html[data-netbox-color-mode=dark] .alert-red-400{color:#2d1315;background-color:#e46571;border-color:#e97d88}html[data-netbox-color-mode=dark] .alert-red-400 .alert-link{color:#240f11}html[data-netbox-color-mode=dark] .alert-red-500{color:#2c0b0e;background-color:#de3f4e;border-color:#e35d6a}html[data-netbox-color-mode=dark] .alert-red-500 .alert-link{color:#23090b}html[data-netbox-color-mode=dark] .alert-red-600{color:#efd4d7;background-color:#b43541;border-color:#c0555f}html[data-netbox-color-mode=dark] .alert-red-600 .alert-link{color:#bfaaac}html[data-netbox-color-mode=dark] .alert-red-700{color:#e6d2d4;background-color:#8a2b34;border-color:#9d4d54}html[data-netbox-color-mode=dark] .alert-red-700 .alert-link{color:#b8a8aa}html[data-netbox-color-mode=dark] .alert-red-800{color:#ded0d2;background-color:#602127;border-color:#794449}html[data-netbox-color-mode=dark] .alert-red-800 .alert-link{color:#b2a6a8}html[data-netbox-color-mode=dark] .alert-red-900{color:#d5cecf;background-color:#37171a;border-color:#563c3e}html[data-netbox-color-mode=dark] .alert-red-900 .alert-link{color:#aaa5a6}html[data-netbox-color-mode=dark] .alert-yellow-100{color:#333129;background-color:#fff4d0;border-color:#fff5d7}html[data-netbox-color-mode=dark] .alert-yellow-100 .alert-link{color:#292721}html[data-netbox-color-mode=dark] .alert-yellow-200{color:#332e1f;background-color:#ffe7a1;border-color:#ffebb0}html[data-netbox-color-mode=dark] .alert-yellow-200 .alert-link{color:#292519}html[data-netbox-color-mode=dark] .alert-yellow-300{color:#332c15;background-color:#ffdc71;border-color:#ffe188}html[data-netbox-color-mode=dark] .alert-yellow-300 .alert-link{color:#292311}html[data-netbox-color-mode=dark] .alert-yellow-400{color:#33290b;background-color:#ffd043;border-color:#ffd761}html[data-netbox-color-mode=dark] .alert-yellow-400 .alert-link{color:#292109}html[data-netbox-color-mode=dark] .alert-yellow-500{color:#332701;background-color:#ffc413;border-color:#ffcd39}html[data-netbox-color-mode=dark] .alert-yellow-500 .alert-link{color:#291f01}html[data-netbox-color-mode=dark] .alert-yellow-600{color:#291f01;background-color:#cf9f12;border-color:#d6ae38}html[data-netbox-color-mode=dark] .alert-yellow-600 .alert-link{color:#211901}html[data-netbox-color-mode=dark] .alert-yellow-700{color:#1f1701;background-color:#9e7b11;border-color:#ad9036}html[data-netbox-color-mode=dark] .alert-yellow-700 .alert-link{color:#191201}html[data-netbox-color-mode=dark] .alert-yellow-800{color:#e0dbcd;background-color:#6e5610;border-color:#857135}html[data-netbox-color-mode=dark] .alert-yellow-800 .alert-link{color:#b3afa4}html[data-netbox-color-mode=dark] .alert-yellow-900{color:#d6d4cc;background-color:#3d320e;border-color:#5c5234}html[data-netbox-color-mode=dark] .alert-yellow-900 .alert-link{color:#abaaa3}html[data-netbox-color-mode=dark] .alert-green-100{color:#2a2e2c;background-color:#d3e8df;border-color:#daece4}html[data-netbox-color-mode=dark] .alert-green-100 .alert-link{color:#222523}html[data-netbox-color-mode=dark] .alert-green-200{color:#212925;background-color:#a8d1be;border-color:#b5d9c9}html[data-netbox-color-mode=dark] .alert-green-200 .alert-link{color:#1a211e}html[data-netbox-color-mode=dark] .alert-green-300{color:#17251e;background-color:#7cbb9d;border-color:#91c5ad}html[data-netbox-color-mode=dark] .alert-green-300 .alert-link{color:#121e18}html[data-netbox-color-mode=dark] .alert-green-400{color:#0e2018;background-color:#50a47d;border-color:#6cb291}html[data-netbox-color-mode=dark] .alert-green-400 .alert-link{color:#0b1a13}html[data-netbox-color-mode=dark] .alert-green-500{color:#051b11;background-color:#258d5d;border-color:#479f76}html[data-netbox-color-mode=dark] .alert-green-500 .alert-link{color:#04160e}html[data-netbox-color-mode=dark] .alert-green-600{color:#d0e2d9;background-color:#20734c;border-color:#438969}html[data-netbox-color-mode=dark] .alert-green-600 .alert-link{color:#a6b5ae}html[data-netbox-color-mode=dark] .alert-green-700{color:#cfdcd6;background-color:#1b5a3c;border-color:#3f745b}html[data-netbox-color-mode=dark] .alert-green-700 .alert-link{color:#a6b0ab}html[data-netbox-color-mode=dark] .alert-green-800{color:#ced7d3;background-color:#16402d;border-color:#3b5e4e}html[data-netbox-color-mode=dark] .alert-green-800 .alert-link{color:#a5aca9}html[data-netbox-color-mode=dark] .alert-green-900{color:#cdd1cf;background-color:#12261d;border-color:#374941}html[data-netbox-color-mode=dark] .alert-green-900 .alert-link{color:#a4a7a6}html[data-netbox-color-mode=dark] .alert-blue-100{color:#292d33;background-color:#d1e3ff;border-color:#d9e8ff}html[data-netbox-color-mode=dark] .alert-blue-100 .alert-link{color:#212429}html[data-netbox-color-mode=dark] .alert-blue-200{color:#202733;background-color:#a3c8fe;border-color:#b1d1fe}html[data-netbox-color-mode=dark] .alert-blue-200 .alert-link{color:#1a1f29}html[data-netbox-color-mode=dark] .alert-blue-300{color:#162233;background-color:#75acfe;border-color:#8bb9fe}html[data-netbox-color-mode=dark] .alert-blue-300 .alert-link{color:#121b29}html[data-netbox-color-mode=dark] .alert-blue-400{color:#0c1c33;background-color:#4791fd;border-color:#64a2fd}html[data-netbox-color-mode=dark] .alert-blue-400 .alert-link{color:#0a1629}html[data-netbox-color-mode=dark] .alert-blue-500{color:#031633;background-color:#1975fd;border-color:#3d8bfd}html[data-netbox-color-mode=dark] .alert-blue-500 .alert-link{color:#021229}html[data-netbox-color-mode=dark] .alert-blue-600{color:#cedef4;background-color:#1660cd;border-color:#3b79d5}html[data-netbox-color-mode=dark] .alert-blue-600 .alert-link{color:#a5b2c3}html[data-netbox-color-mode=dark] .alert-blue-700{color:#ced9ea;background-color:#144b9d;border-color:#3968ad}html[data-netbox-color-mode=dark] .alert-blue-700 .alert-link{color:#a5aebb}html[data-netbox-color-mode=dark] .alert-blue-800{color:#cdd5e0;background-color:#12376d;border-color:#375684}html[data-netbox-color-mode=dark] .alert-blue-800 .alert-link{color:#a4aab3}html[data-netbox-color-mode=dark] .alert-blue-900{color:#cdd0d6;background-color:#10223d;border-color:#35455c}html[data-netbox-color-mode=dark] .alert-blue-900 .alert-link{color:#a4a6ab}html[data-netbox-color-mode=dark] .alert-cyan-100{color:#293132;background-color:#d1f5fc;border-color:#d9f6fd}html[data-netbox-color-mode=dark] .alert-cyan-100 .alert-link{color:#212728}html[data-netbox-color-mode=dark] .alert-cyan-200{color:#202f32;background-color:#a3ebf9;border-color:#b1eefa}html[data-netbox-color-mode=dark] .alert-cyan-200 .alert-link{color:#1a2628}html[data-netbox-color-mode=dark] .alert-cyan-300{color:#162d31;background-color:#75e1f6;border-color:#8be5f8}html[data-netbox-color-mode=dark] .alert-cyan-300 .alert-link{color:#122427}html[data-netbox-color-mode=dark] .alert-cyan-400{color:#0c2b31;background-color:#47d7f4;border-color:#64ddf5}html[data-netbox-color-mode=dark] .alert-cyan-400 .alert-link{color:#0a2227}html[data-netbox-color-mode=dark] .alert-cyan-500{color:#032830;background-color:#19cdf1;border-color:#3dd5f3}html[data-netbox-color-mode=dark] .alert-cyan-500 .alert-link{color:#022026}html[data-netbox-color-mode=dark] .alert-cyan-600{color:#022026;background-color:#16a7c3;border-color:#3bb5cd}html[data-netbox-color-mode=dark] .alert-cyan-600 .alert-link{color:#021a1e}html[data-netbox-color-mode=dark] .alert-cyan-700{color:#cee4e9;background-color:#148096;border-color:#3994a6}html[data-netbox-color-mode=dark] .alert-cyan-700 .alert-link{color:#a5b6ba}html[data-netbox-color-mode=dark] .alert-cyan-800{color:#cddcdf;background-color:#125a68;border-color:#377480}html[data-netbox-color-mode=dark] .alert-cyan-800 .alert-link{color:#a4b0b2}html[data-netbox-color-mode=dark] .alert-cyan-900{color:#cdd4d6;background-color:#10333a;border-color:#355359}html[data-netbox-color-mode=dark] .alert-cyan-900 .alert-link{color:#a4aaab}html[data-netbox-color-mode=dark] .alert-indigo-100{color:#2d2932;background-color:#e2d1fc;border-color:#e6d9fd}html[data-netbox-color-mode=dark] .alert-indigo-100 .alert-link{color:#242128}html[data-netbox-color-mode=dark] .alert-indigo-200{color:#272032;background-color:#c5a4fa;border-color:#ceb2fb}html[data-netbox-color-mode=dark] .alert-indigo-200 .alert-link{color:#1f1a28}html[data-netbox-color-mode=dark] .alert-indigo-300{color:#211631;background-color:#a877f7;border-color:#b58df9}html[data-netbox-color-mode=dark] .alert-indigo-300 .alert-link{color:#1a1227}html[data-netbox-color-mode=dark] .alert-indigo-400{color:#e7d9fd;background-color:#8b4af6;border-color:#9d66f7}html[data-netbox-color-mode=dark] .alert-indigo-400 .alert-link{color:#b9aeca}html[data-netbox-color-mode=dark] .alert-indigo-500{color:#e0cffc;background-color:#6e1cf3;border-color:#8540f5}html[data-netbox-color-mode=dark] .alert-indigo-500 .alert-link{color:#b3a6ca}html[data-netbox-color-mode=dark] .alert-indigo-600{color:#dccff3;background-color:#5b19c5;border-color:#753dce}html[data-netbox-color-mode=dark] .alert-indigo-600 .alert-link{color:#b0a6c2}html[data-netbox-color-mode=dark] .alert-indigo-700{color:#d8cee9;background-color:#471697;border-color:#643ba7}html[data-netbox-color-mode=dark] .alert-indigo-700 .alert-link{color:#ada5ba}html[data-netbox-color-mode=dark] .alert-indigo-800{color:#d4cddf;background-color:#341269;border-color:#543881}html[data-netbox-color-mode=dark] .alert-indigo-800 .alert-link{color:#aaa4b2}html[data-netbox-color-mode=dark] .alert-indigo-900{color:#d0cdd6;background-color:#20103a;border-color:#433559}html[data-netbox-color-mode=dark] .alert-indigo-900 .alert-link{color:#a6a4ab}html[data-netbox-color-mode=dark] .alert-purple-100{color:#2d2b31;background-color:#e3dbf4;border-color:#e8e1f5}html[data-netbox-color-mode=dark] .alert-purple-100 .alert-link{color:#242227}html[data-netbox-color-mode=dark] .alert-purple-200{color:#27242e;background-color:#c8b7e7;border-color:#d1c2eb}html[data-netbox-color-mode=dark] .alert-purple-200 .alert-link{color:#1f1d25}html[data-netbox-color-mode=dark] .alert-purple-300{color:#221c2c;background-color:#ad94dc;border-color:#baa5e1}html[data-netbox-color-mode=dark] .alert-purple-300 .alert-link{color:#1b1623}html[data-netbox-color-mode=dark] .alert-purple-400{color:#1c1529;background-color:#9270d0;border-color:#a386d7}html[data-netbox-color-mode=dark] .alert-purple-400 .alert-link{color:#161121}html[data-netbox-color-mode=dark] .alert-purple-500{color:#e2d9f3;background-color:#764bc4;border-color:#8c68cd}html[data-netbox-color-mode=dark] .alert-purple-500 .alert-link{color:#b5aec2}html[data-netbox-color-mode=dark] .alert-purple-600{color:#ded7eb;background-color:#613f9f;border-color:#7a5dae}html[data-netbox-color-mode=dark] .alert-purple-600 .alert-link{color:#b2acbc}html[data-netbox-color-mode=dark] .alert-purple-700{color:#d9d4e3;background-color:#4c337b;border-color:#695390}html[data-netbox-color-mode=dark] .alert-purple-700 .alert-link{color:#aeaab6}html[data-netbox-color-mode=dark] .alert-purple-800{color:#d5d1db;background-color:#372556;border-color:#564871}html[data-netbox-color-mode=dark] .alert-purple-800 .alert-link{color:#aaa7af}html[data-netbox-color-mode=dark] .alert-purple-900{color:#d0cfd4;background-color:#221932;border-color:#453d52}html[data-netbox-color-mode=dark] .alert-purple-900 .alert-link{color:#a6a6aa}html[data-netbox-color-mode=dark] .alert-pink-100{color:#312b2e;background-color:#f7d8e7;border-color:#f9deeb}html[data-netbox-color-mode=dark] .alert-pink-100 .alert-link{color:#272225}html[data-netbox-color-mode=dark] .alert-pink-200{color:#302329;background-color:#f0b1d0;border-color:#f2bdd8}html[data-netbox-color-mode=dark] .alert-pink-200 .alert-link{color:#261c21}html[data-netbox-color-mode=dark] .alert-pink-300{color:#2e1b24;background-color:#e78bb9;border-color:#eb9dc4}html[data-netbox-color-mode=dark] .alert-pink-300 .alert-link{color:#25161d}html[data-netbox-color-mode=dark] .alert-pink-400{color:#2c121f;background-color:#e064a2;border-color:#e57db1}html[data-netbox-color-mode=dark] .alert-pink-400 .alert-link{color:#230e19}html[data-netbox-color-mode=dark] .alert-pink-500{color:#2b0a1a;background-color:#d83d8a;border-color:#de5c9d}html[data-netbox-color-mode=dark] .alert-pink-500 .alert-link{color:#220815}html[data-netbox-color-mode=dark] .alert-pink-600{color:#eed4e1;background-color:#af3471;border-color:#bc5488}html[data-netbox-color-mode=dark] .alert-pink-600 .alert-link{color:#beaab4}html[data-netbox-color-mode=dark] .alert-pink-700{color:#e6d2dc;background-color:#862a58;border-color:#994c72}html[data-netbox-color-mode=dark] .alert-pink-700 .alert-link{color:#b8a8b0}html[data-netbox-color-mode=dark] .alert-pink-800{color:#ddd0d7;background-color:#5e203f;border-color:#78435d}html[data-netbox-color-mode=dark] .alert-pink-800 .alert-link{color:#b1a6ac}html[data-netbox-color-mode=dark] .alert-pink-900{color:#d5ced1;background-color:#361625;border-color:#553b48}html[data-netbox-color-mode=dark] .alert-pink-900 .alert-link{color:#aaa5a7}@keyframes progress-bar-stripes{0%{background-position-x:1rem}}html[data-netbox-color-mode=dark] .progress{display:flex;height:1rem;overflow:hidden;font-size:.75rem;background-color:#6c757d;border-radius:.375rem}html[data-netbox-color-mode=dark] .progress-bar{display:flex;flex-direction:column;justify-content:center;overflow:hidden;color:#fff;text-align:center;white-space:nowrap;background-color:#6ea8fe;transition:width .6s ease}@media (prefers-reduced-motion: reduce){html[data-netbox-color-mode=dark] .progress-bar{transition:none}}html[data-netbox-color-mode=dark] .progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:1rem 1rem}html[data-netbox-color-mode=dark] .progress-bar-animated{animation:1s linear infinite progress-bar-stripes}@media (prefers-reduced-motion: reduce){html[data-netbox-color-mode=dark] .progress-bar-animated{animation:none}}html[data-netbox-color-mode=dark] .list-group{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:.375rem}html[data-netbox-color-mode=dark] .list-group-numbered{list-style-type:none;counter-reset:section}html[data-netbox-color-mode=dark] .list-group-numbered>li:before{content:counters(section,".") ". ";counter-increment:section}html[data-netbox-color-mode=dark] .list-group-item-action{width:100%;color:#dee2e6;text-align:inherit}html[data-netbox-color-mode=dark] .list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-action:focus{z-index:1;color:#fff;text-decoration:none;background-color:#f8f9fa26}html[data-netbox-color-mode=dark] .list-group-item-action:active{color:#fff;background-color:#dee2e620}html[data-netbox-color-mode=dark] .list-group-item{position:relative;display:block;padding:.5rem 1rem;color:#fff;text-decoration:none;background-color:#212529;border:1px solid rgba(255,255,255,.125)}html[data-netbox-color-mode=dark] .list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}html[data-netbox-color-mode=dark] .list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}html[data-netbox-color-mode=dark] .list-group-item.disabled,html[data-netbox-color-mode=dark] .list-group-item:disabled{color:#6c757d;pointer-events:none;background-color:#212529}html[data-netbox-color-mode=dark] .list-group-item.active{z-index:2;color:#000;background-color:#6ea8fe;border-color:#6ea8fe}html[data-netbox-color-mode=dark] .list-group-item+html[data-netbox-color-mode=dark] .list-group-item{border-top-width:0}html[data-netbox-color-mode=dark] .list-group-item+html[data-netbox-color-mode=dark] .list-group-item.active{margin-top:-1px;border-top-width:1px}html[data-netbox-color-mode=dark] .list-group-horizontal{flex-direction:row}html[data-netbox-color-mode=dark] .list-group-horizontal>.list-group-item:first-child{border-bottom-left-radius:.375rem;border-top-right-radius:0}html[data-netbox-color-mode=dark] .list-group-horizontal>.list-group-item:last-child{border-top-right-radius:.375rem;border-bottom-left-radius:0}html[data-netbox-color-mode=dark] .list-group-horizontal>.list-group-item.active{margin-top:0}html[data-netbox-color-mode=dark] .list-group-horizontal>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}html[data-netbox-color-mode=dark] .list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}@media (min-width: 576px){html[data-netbox-color-mode=dark] .list-group-horizontal-sm{flex-direction:row}html[data-netbox-color-mode=dark] .list-group-horizontal-sm>.list-group-item:first-child{border-bottom-left-radius:.375rem;border-top-right-radius:0}html[data-netbox-color-mode=dark] .list-group-horizontal-sm>.list-group-item:last-child{border-top-right-radius:.375rem;border-bottom-left-radius:0}html[data-netbox-color-mode=dark] .list-group-horizontal-sm>.list-group-item.active{margin-top:0}html[data-netbox-color-mode=dark] .list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}html[data-netbox-color-mode=dark] .list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width: 768px){html[data-netbox-color-mode=dark] .list-group-horizontal-md{flex-direction:row}html[data-netbox-color-mode=dark] .list-group-horizontal-md>.list-group-item:first-child{border-bottom-left-radius:.375rem;border-top-right-radius:0}html[data-netbox-color-mode=dark] .list-group-horizontal-md>.list-group-item:last-child{border-top-right-radius:.375rem;border-bottom-left-radius:0}html[data-netbox-color-mode=dark] .list-group-horizontal-md>.list-group-item.active{margin-top:0}html[data-netbox-color-mode=dark] .list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}html[data-netbox-color-mode=dark] .list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width: 992px){html[data-netbox-color-mode=dark] .list-group-horizontal-lg{flex-direction:row}html[data-netbox-color-mode=dark] .list-group-horizontal-lg>.list-group-item:first-child{border-bottom-left-radius:.375rem;border-top-right-radius:0}html[data-netbox-color-mode=dark] .list-group-horizontal-lg>.list-group-item:last-child{border-top-right-radius:.375rem;border-bottom-left-radius:0}html[data-netbox-color-mode=dark] .list-group-horizontal-lg>.list-group-item.active{margin-top:0}html[data-netbox-color-mode=dark] .list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}html[data-netbox-color-mode=dark] .list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width: 1200px){html[data-netbox-color-mode=dark] .list-group-horizontal-xl{flex-direction:row}html[data-netbox-color-mode=dark] .list-group-horizontal-xl>.list-group-item:first-child{border-bottom-left-radius:.375rem;border-top-right-radius:0}html[data-netbox-color-mode=dark] .list-group-horizontal-xl>.list-group-item:last-child{border-top-right-radius:.375rem;border-bottom-left-radius:0}html[data-netbox-color-mode=dark] .list-group-horizontal-xl>.list-group-item.active{margin-top:0}html[data-netbox-color-mode=dark] .list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}html[data-netbox-color-mode=dark] .list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width: 1400px){html[data-netbox-color-mode=dark] .list-group-horizontal-xxl{flex-direction:row}html[data-netbox-color-mode=dark] .list-group-horizontal-xxl>.list-group-item:first-child{border-bottom-left-radius:.375rem;border-top-right-radius:0}html[data-netbox-color-mode=dark] .list-group-horizontal-xxl>.list-group-item:last-child{border-top-right-radius:.375rem;border-bottom-left-radius:0}html[data-netbox-color-mode=dark] .list-group-horizontal-xxl>.list-group-item.active{margin-top:0}html[data-netbox-color-mode=dark] .list-group-horizontal-xxl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}html[data-netbox-color-mode=dark] .list-group-horizontal-xxl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}html[data-netbox-color-mode=dark] .list-group-flush{border-radius:0}html[data-netbox-color-mode=dark] .list-group-flush>.list-group-item{border-width:0 0 1px}html[data-netbox-color-mode=dark] .list-group-flush>.list-group-item:last-child{border-bottom-width:0}html[data-netbox-color-mode=dark] .list-group-item-primary{color:#426598;background-color:#e2eeff}html[data-netbox-color-mode=dark] .list-group-item-primary.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-primary.list-group-item-action:focus{color:#426598;background-color:#cbd6e6}html[data-netbox-color-mode=dark] .list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#426598;border-color:#426598}html[data-netbox-color-mode=dark] .list-group-item-secondary{color:#686d71;background-color:#eff0f2}html[data-netbox-color-mode=dark] .list-group-item-secondary.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-secondary.list-group-item-action:focus{color:#686d71;background-color:#d7d8da}html[data-netbox-color-mode=dark] .list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#686d71;border-color:#686d71}html[data-netbox-color-mode=dark] .list-group-item-success{color:#466e5b;background-color:#e3f1ea}html[data-netbox-color-mode=dark] .list-group-item-success.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-success.list-group-item-action:focus{color:#466e5b;background-color:#ccd9d3}html[data-netbox-color-mode=dark] .list-group-item-success.list-group-item-action.active{color:#fff;background-color:#466e5b;border-color:#466e5b}html[data-netbox-color-mode=dark] .list-group-item-info{color:#2c5962;background-color:#e2f9fd}html[data-netbox-color-mode=dark] .list-group-item-info.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-info.list-group-item-action:focus{color:#2c5962;background-color:#cbe0e4}html[data-netbox-color-mode=dark] .list-group-item-info.list-group-item-action.active{color:#fff;background-color:#2c5962;border-color:#2c5962}html[data-netbox-color-mode=dark] .list-group-item-warning{color:#66572a;background-color:#fff8e1}html[data-netbox-color-mode=dark] .list-group-item-warning.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-warning.list-group-item-action:focus{color:#66572a;background-color:#e6dfcb}html[data-netbox-color-mode=dark] .list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#66572a;border-color:#66572a}html[data-netbox-color-mode=dark] .list-group-item-danger{color:#8c5056;background-color:#fbe7e9}html[data-netbox-color-mode=dark] .list-group-item-danger.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-danger.list-group-item-action:focus{color:#8c5056;background-color:#e2d0d2}html[data-netbox-color-mode=dark] .list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#8c5056;border-color:#8c5056}html[data-netbox-color-mode=dark] .list-group-item-light{color:#595a5c;background-color:#f8f9fa}html[data-netbox-color-mode=dark] .list-group-item-light.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-light.list-group-item-action:focus{color:#595a5c;background-color:#dfe0e1}html[data-netbox-color-mode=dark] .list-group-item-light.list-group-item-action.active{color:#fff;background-color:#595a5c;border-color:#595a5c}html[data-netbox-color-mode=dark] .list-group-item-dark{color:#686d71;background-color:#eff0f2}html[data-netbox-color-mode=dark] .list-group-item-dark.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-dark.list-group-item-action:focus{color:#686d71;background-color:#d7d8da}html[data-netbox-color-mode=dark] .list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#686d71;border-color:#686d71}html[data-netbox-color-mode=dark] .list-group-item-red{color:#8c5056;background-color:#fbe7e9}html[data-netbox-color-mode=dark] .list-group-item-red.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-red.list-group-item-action:focus{color:#8c5056;background-color:#e2d0d2}html[data-netbox-color-mode=dark] .list-group-item-red.list-group-item-action.active{color:#fff;background-color:#8c5056;border-color:#8c5056}html[data-netbox-color-mode=dark] .list-group-item-yellow{color:#66572a;background-color:#fff8e1}html[data-netbox-color-mode=dark] .list-group-item-yellow.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-yellow.list-group-item-action:focus{color:#66572a;background-color:#e6dfcb}html[data-netbox-color-mode=dark] .list-group-item-yellow.list-group-item-action.active{color:#fff;background-color:#66572a;border-color:#66572a}html[data-netbox-color-mode=dark] .list-group-item-green{color:#466e5b;background-color:#e3f1ea}html[data-netbox-color-mode=dark] .list-group-item-green.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-green.list-group-item-action:focus{color:#466e5b;background-color:#ccd9d3}html[data-netbox-color-mode=dark] .list-group-item-green.list-group-item-action.active{color:#fff;background-color:#466e5b;border-color:#466e5b}html[data-netbox-color-mode=dark] .list-group-item-blue{color:#426598;background-color:#e2eeff}html[data-netbox-color-mode=dark] .list-group-item-blue.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-blue.list-group-item-action:focus{color:#426598;background-color:#cbd6e6}html[data-netbox-color-mode=dark] .list-group-item-blue.list-group-item-action.active{color:#fff;background-color:#426598;border-color:#426598}html[data-netbox-color-mode=dark] .list-group-item-cyan{color:#2c5962;background-color:#e2f9fd}html[data-netbox-color-mode=dark] .list-group-item-cyan.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-cyan.list-group-item-action:focus{color:#2c5962;background-color:#cbe0e4}html[data-netbox-color-mode=dark] .list-group-item-cyan.list-group-item-action.active{color:#fff;background-color:#2c5962;border-color:#2c5962}html[data-netbox-color-mode=dark] .list-group-item-indigo{color:#624394;background-color:#ede2fd}html[data-netbox-color-mode=dark] .list-group-item-indigo.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-indigo.list-group-item-action:focus{color:#624394;background-color:#d5cbe4}html[data-netbox-color-mode=dark] .list-group-item-indigo.list-group-item-action.active{color:#fff;background-color:#624394;border-color:#624394}html[data-netbox-color-mode=dark] .list-group-item-purple{color:#655583;background-color:#eee8f8}html[data-netbox-color-mode=dark] .list-group-item-purple.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-purple.list-group-item-action:focus{color:#655583;background-color:#d6d1df}html[data-netbox-color-mode=dark] .list-group-item-purple.list-group-item-action.active{color:#fff;background-color:#655583;border-color:#655583}html[data-netbox-color-mode=dark] .list-group-item-pink{color:#8a506d;background-color:#fae7f0}html[data-netbox-color-mode=dark] .list-group-item-pink.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-pink.list-group-item-action:focus{color:#8a506d;background-color:#e1d0d8}html[data-netbox-color-mode=dark] .list-group-item-pink.list-group-item-action.active{color:#fff;background-color:#8a506d;border-color:#8a506d}html[data-netbox-color-mode=dark] .list-group-item-darker{color:#101314;background-color:#d1d2d3}html[data-netbox-color-mode=dark] .list-group-item-darker.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-darker.list-group-item-action:focus{color:#101314;background-color:#bcbdbe}html[data-netbox-color-mode=dark] .list-group-item-darker.list-group-item-action.active{color:#fff;background-color:#101314;border-color:#101314}html[data-netbox-color-mode=dark] .list-group-item-darkest{color:#0e1011;background-color:#d1d1d2}html[data-netbox-color-mode=dark] .list-group-item-darkest.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-darkest.list-group-item-action:focus{color:#0e1011;background-color:#bcbcbd}html[data-netbox-color-mode=dark] .list-group-item-darkest.list-group-item-action.active{color:#fff;background-color:#0e1011;border-color:#0e1011}html[data-netbox-color-mode=dark] .list-group-item-gray{color:#525557;background-color:#f5f6f8}html[data-netbox-color-mode=dark] .list-group-item-gray.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-gray.list-group-item-action:focus{color:#525557;background-color:#dddddf}html[data-netbox-color-mode=dark] .list-group-item-gray.list-group-item-action.active{color:#fff;background-color:#525557;border-color:#525557}html[data-netbox-color-mode=dark] .list-group-item-gray-100{color:#636464;background-color:#fefefe}html[data-netbox-color-mode=dark] .list-group-item-gray-100.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-gray-100.list-group-item-action:focus{color:#636464;background-color:#e5e5e5}html[data-netbox-color-mode=dark] .list-group-item-gray-100.list-group-item-action.active{color:#fff;background-color:#636464;border-color:#636464}html[data-netbox-color-mode=dark] .list-group-item-gray-200{color:#5d5e60;background-color:#fbfbfc}html[data-netbox-color-mode=dark] .list-group-item-gray-200.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-gray-200.list-group-item-action:focus{color:#5d5e60;background-color:#e2e2e3}html[data-netbox-color-mode=dark] .list-group-item-gray-200.list-group-item-action.active{color:#fff;background-color:#5d5e60;border-color:#5d5e60}html[data-netbox-color-mode=dark] .list-group-item-gray-300{color:#595a5c;background-color:#f8f9fa}html[data-netbox-color-mode=dark] .list-group-item-gray-300.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-gray-300.list-group-item-action:focus{color:#595a5c;background-color:#dfe0e1}html[data-netbox-color-mode=dark] .list-group-item-gray-300.list-group-item-action.active{color:#fff;background-color:#595a5c;border-color:#595a5c}html[data-netbox-color-mode=dark] .list-group-item-gray-400{color:#525557;background-color:#f5f6f8}html[data-netbox-color-mode=dark] .list-group-item-gray-400.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-gray-400.list-group-item-action:focus{color:#525557;background-color:#dddddf}html[data-netbox-color-mode=dark] .list-group-item-gray-400.list-group-item-action.active{color:#fff;background-color:#525557;border-color:#525557}html[data-netbox-color-mode=dark] .list-group-item-gray-500{color:#686d71;background-color:#eff0f2}html[data-netbox-color-mode=dark] .list-group-item-gray-500.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-gray-500.list-group-item-action:focus{color:#686d71;background-color:#d7d8da}html[data-netbox-color-mode=dark] .list-group-item-gray-500.list-group-item-action.active{color:#fff;background-color:#686d71;border-color:#686d71}html[data-netbox-color-mode=dark] .list-group-item-gray-600{color:#41464b;background-color:#e2e3e5}html[data-netbox-color-mode=dark] .list-group-item-gray-600.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-gray-600.list-group-item-action:focus{color:#41464b;background-color:#cbccce}html[data-netbox-color-mode=dark] .list-group-item-gray-600.list-group-item-action.active{color:#fff;background-color:#41464b;border-color:#41464b}html[data-netbox-color-mode=dark] .list-group-item-gray-700{color:#2c3034;background-color:#dbdcdd}html[data-netbox-color-mode=dark] .list-group-item-gray-700.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-gray-700.list-group-item-action:focus{color:#2c3034;background-color:#c5c6c7}html[data-netbox-color-mode=dark] .list-group-item-gray-700.list-group-item-action.active{color:#fff;background-color:#2c3034;border-color:#2c3034}html[data-netbox-color-mode=dark] .list-group-item-gray-800{color:#1f2326;background-color:#d6d8d9}html[data-netbox-color-mode=dark] .list-group-item-gray-800.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-gray-800.list-group-item-action:focus{color:#1f2326;background-color:#c1c2c3}html[data-netbox-color-mode=dark] .list-group-item-gray-800.list-group-item-action.active{color:#fff;background-color:#1f2326;border-color:#1f2326}html[data-netbox-color-mode=dark] .list-group-item-gray-900{color:#141619;background-color:#d3d3d4}html[data-netbox-color-mode=dark] .list-group-item-gray-900.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-gray-900.list-group-item-action:focus{color:#141619;background-color:#bebebf}html[data-netbox-color-mode=dark] .list-group-item-gray-900.list-group-item-action.active{color:#fff;background-color:#141619;border-color:#141619}html[data-netbox-color-mode=dark] .list-group-item-red-100{color:#635657;background-color:#fef7f8}html[data-netbox-color-mode=dark] .list-group-item-red-100.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-red-100.list-group-item-action:focus{color:#635657;background-color:#e5dedf}html[data-netbox-color-mode=dark] .list-group-item-red-100.list-group-item-action.active{color:#fff;background-color:#635657;border-color:#635657}html[data-netbox-color-mode=dark] .list-group-item-red-200{color:#604648;background-color:#fceff0}html[data-netbox-color-mode=dark] .list-group-item-red-200.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-red-200.list-group-item-action:focus{color:#604648;background-color:#e3d7d8}html[data-netbox-color-mode=dark] .list-group-item-red-200.list-group-item-action.active{color:#fff;background-color:#604648;border-color:#604648}html[data-netbox-color-mode=dark] .list-group-item-red-300{color:#8c5056;background-color:#fbe7e9}html[data-netbox-color-mode=dark] .list-group-item-red-300.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-red-300.list-group-item-action:focus{color:#8c5056;background-color:#e2d0d2}html[data-netbox-color-mode=dark] .list-group-item-red-300.list-group-item-action.active{color:#fff;background-color:#8c5056;border-color:#8c5056}html[data-netbox-color-mode=dark] .list-group-item-red-400{color:#883840;background-color:#f9dfe1}html[data-netbox-color-mode=dark] .list-group-item-red-400.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-red-400.list-group-item-action:focus{color:#883840;background-color:#e0c9cb}html[data-netbox-color-mode=dark] .list-group-item-red-400.list-group-item-action.active{color:#fff;background-color:#883840;border-color:#883840}html[data-netbox-color-mode=dark] .list-group-item-red-500{color:#842029;background-color:#f8d7da}html[data-netbox-color-mode=dark] .list-group-item-red-500.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-red-500.list-group-item-action:focus{color:#842029;background-color:#dfc2c4}html[data-netbox-color-mode=dark] .list-group-item-red-500.list-group-item-action.active{color:#fff;background-color:#842029;border-color:#842029}html[data-netbox-color-mode=dark] .list-group-item-red-600{color:#6a1921;background-color:#efd4d7}html[data-netbox-color-mode=dark] .list-group-item-red-600.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-red-600.list-group-item-action:focus{color:#6a1921;background-color:#d7bfc2}html[data-netbox-color-mode=dark] .list-group-item-red-600.list-group-item-action.active{color:#fff;background-color:#6a1921;border-color:#6a1921}html[data-netbox-color-mode=dark] .list-group-item-red-700{color:#4f1319;background-color:#e6d2d4}html[data-netbox-color-mode=dark] .list-group-item-red-700.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-red-700.list-group-item-action:focus{color:#4f1319;background-color:#cfbdbf}html[data-netbox-color-mode=dark] .list-group-item-red-700.list-group-item-action.active{color:#fff;background-color:#4f1319;border-color:#4f1319}html[data-netbox-color-mode=dark] .list-group-item-red-800{color:#350d11;background-color:#ded0d2}html[data-netbox-color-mode=dark] .list-group-item-red-800.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-red-800.list-group-item-action:focus{color:#350d11;background-color:#c8bbbd}html[data-netbox-color-mode=dark] .list-group-item-red-800.list-group-item-action.active{color:#fff;background-color:#350d11;border-color:#350d11}html[data-netbox-color-mode=dark] .list-group-item-red-900{color:#1a0708;background-color:#d5cecf}html[data-netbox-color-mode=dark] .list-group-item-red-900.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-red-900.list-group-item-action:focus{color:#1a0708;background-color:#c0b9ba}html[data-netbox-color-mode=dark] .list-group-item-red-900.list-group-item-action.active{color:#fff;background-color:#1a0708;border-color:#1a0708}html[data-netbox-color-mode=dark] .list-group-item-yellow-100{color:#666152;background-color:#fffdf5}html[data-netbox-color-mode=dark] .list-group-item-yellow-100.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-yellow-100.list-group-item-action:focus{color:#666152;background-color:#e6e4dd}html[data-netbox-color-mode=dark] .list-group-item-yellow-100.list-group-item-action.active{color:#fff;background-color:#666152;border-color:#666152}html[data-netbox-color-mode=dark] .list-group-item-yellow-200{color:#665c3e;background-color:#fffaeb}html[data-netbox-color-mode=dark] .list-group-item-yellow-200.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-yellow-200.list-group-item-action:focus{color:#665c3e;background-color:#e6e1d4}html[data-netbox-color-mode=dark] .list-group-item-yellow-200.list-group-item-action.active{color:#fff;background-color:#665c3e;border-color:#665c3e}html[data-netbox-color-mode=dark] .list-group-item-yellow-300{color:#66572a;background-color:#fff8e1}html[data-netbox-color-mode=dark] .list-group-item-yellow-300.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-yellow-300.list-group-item-action:focus{color:#66572a;background-color:#e6dfcb}html[data-netbox-color-mode=dark] .list-group-item-yellow-300.list-group-item-action.active{color:#fff;background-color:#66572a;border-color:#66572a}html[data-netbox-color-mode=dark] .list-group-item-yellow-400{color:#665217;background-color:#fff5d7}html[data-netbox-color-mode=dark] .list-group-item-yellow-400.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-yellow-400.list-group-item-action:focus{color:#665217;background-color:#e6ddc2}html[data-netbox-color-mode=dark] .list-group-item-yellow-400.list-group-item-action.active{color:#fff;background-color:#665217;border-color:#665217}html[data-netbox-color-mode=dark] .list-group-item-yellow-500{color:#664d03;background-color:#fff3cd}html[data-netbox-color-mode=dark] .list-group-item-yellow-500.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-yellow-500.list-group-item-action:focus{color:#664d03;background-color:#e6dbb9}html[data-netbox-color-mode=dark] .list-group-item-yellow-500.list-group-item-action.active{color:#fff;background-color:#664d03;border-color:#664d03}html[data-netbox-color-mode=dark] .list-group-item-yellow-600{color:#7a5c04;background-color:#f5ebcd}html[data-netbox-color-mode=dark] .list-group-item-yellow-600.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-yellow-600.list-group-item-action:focus{color:#7a5c04;background-color:#ddd4b9}html[data-netbox-color-mode=dark] .list-group-item-yellow-600.list-group-item-action.active{color:#fff;background-color:#7a5c04;border-color:#7a5c04}html[data-netbox-color-mode=dark] .list-group-item-yellow-700{color:#5c4602;background-color:#ebe3cd}html[data-netbox-color-mode=dark] .list-group-item-yellow-700.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-yellow-700.list-group-item-action:focus{color:#5c4602;background-color:#d4ccb9}html[data-netbox-color-mode=dark] .list-group-item-yellow-700.list-group-item-action.active{color:#fff;background-color:#5c4602;border-color:#5c4602}html[data-netbox-color-mode=dark] .list-group-item-yellow-800{color:#3d2e02;background-color:#e0dbcd}html[data-netbox-color-mode=dark] .list-group-item-yellow-800.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-yellow-800.list-group-item-action:focus{color:#3d2e02;background-color:#cac5b9}html[data-netbox-color-mode=dark] .list-group-item-yellow-800.list-group-item-action.active{color:#fff;background-color:#3d2e02;border-color:#3d2e02}html[data-netbox-color-mode=dark] .list-group-item-yellow-900{color:#1f1701;background-color:#d6d4cc}html[data-netbox-color-mode=dark] .list-group-item-yellow-900.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-yellow-900.list-group-item-action:focus{color:#1f1701;background-color:#c1bfb8}html[data-netbox-color-mode=dark] .list-group-item-yellow-900.list-group-item-action.active{color:#fff;background-color:#1f1701;border-color:#1f1701}html[data-netbox-color-mode=dark] .list-group-item-green-100{color:#545c58;background-color:#f6faf8}html[data-netbox-color-mode=dark] .list-group-item-green-100.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-green-100.list-group-item-action:focus{color:#545c58;background-color:#dde1df}html[data-netbox-color-mode=dark] .list-group-item-green-100.list-group-item-action.active{color:#fff;background-color:#545c58;border-color:#545c58}html[data-netbox-color-mode=dark] .list-group-item-green-200{color:#41534b;background-color:#edf5f1}html[data-netbox-color-mode=dark] .list-group-item-green-200.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-green-200.list-group-item-action:focus{color:#41534b;background-color:#d5ddd9}html[data-netbox-color-mode=dark] .list-group-item-green-200.list-group-item-action.active{color:#fff;background-color:#41534b;border-color:#41534b}html[data-netbox-color-mode=dark] .list-group-item-green-300{color:#466e5b;background-color:#e3f1ea}html[data-netbox-color-mode=dark] .list-group-item-green-300.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-green-300.list-group-item-action:focus{color:#466e5b;background-color:#ccd9d3}html[data-netbox-color-mode=dark] .list-group-item-green-300.list-group-item-action.active{color:#fff;background-color:#466e5b;border-color:#466e5b}html[data-netbox-color-mode=dark] .list-group-item-green-400{color:#2b5f47;background-color:#daece4}html[data-netbox-color-mode=dark] .list-group-item-green-400.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-green-400.list-group-item-action:focus{color:#2b5f47;background-color:#c4d4cd}html[data-netbox-color-mode=dark] .list-group-item-green-400.list-group-item-action.active{color:#fff;background-color:#2b5f47;border-color:#2b5f47}html[data-netbox-color-mode=dark] .list-group-item-green-500{color:#0f5132;background-color:#d1e7dd}html[data-netbox-color-mode=dark] .list-group-item-green-500.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-green-500.list-group-item-action:focus{color:#0f5132;background-color:#bcd0c7}html[data-netbox-color-mode=dark] .list-group-item-green-500.list-group-item-action.active{color:#fff;background-color:#0f5132;border-color:#0f5132}html[data-netbox-color-mode=dark] .list-group-item-green-600{color:#0c4128;background-color:#d0e2d9}html[data-netbox-color-mode=dark] .list-group-item-green-600.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-green-600.list-group-item-action:focus{color:#0c4128;background-color:#bbcbc3}html[data-netbox-color-mode=dark] .list-group-item-green-600.list-group-item-action.active{color:#fff;background-color:#0c4128;border-color:#0c4128}html[data-netbox-color-mode=dark] .list-group-item-green-700{color:#09311e;background-color:#cfdcd6}html[data-netbox-color-mode=dark] .list-group-item-green-700.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-green-700.list-group-item-action:focus{color:#09311e;background-color:#bac6c1}html[data-netbox-color-mode=dark] .list-group-item-green-700.list-group-item-action.active{color:#fff;background-color:#09311e;border-color:#09311e}html[data-netbox-color-mode=dark] .list-group-item-green-800{color:#062014;background-color:#ced7d3}html[data-netbox-color-mode=dark] .list-group-item-green-800.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-green-800.list-group-item-action:focus{color:#062014;background-color:#b9c2be}html[data-netbox-color-mode=dark] .list-group-item-green-800.list-group-item-action.active{color:#fff;background-color:#062014;border-color:#062014}html[data-netbox-color-mode=dark] .list-group-item-green-900{color:#03100a;background-color:#cdd1cf}html[data-netbox-color-mode=dark] .list-group-item-green-900.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-green-900.list-group-item-action:focus{color:#03100a;background-color:#b9bcba}html[data-netbox-color-mode=dark] .list-group-item-green-900.list-group-item-action.active{color:#fff;background-color:#03100a;border-color:#03100a}html[data-netbox-color-mode=dark] .list-group-item-blue-100{color:#535a66;background-color:#f5f9ff}html[data-netbox-color-mode=dark] .list-group-item-blue-100.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-blue-100.list-group-item-action:focus{color:#535a66;background-color:#dde0e6}html[data-netbox-color-mode=dark] .list-group-item-blue-100.list-group-item-action.active{color:#fff;background-color:#535a66;border-color:#535a66}html[data-netbox-color-mode=dark] .list-group-item-blue-200{color:#3f4f66;background-color:#ecf3ff}html[data-netbox-color-mode=dark] .list-group-item-blue-200.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-blue-200.list-group-item-action:focus{color:#3f4f66;background-color:#d4dbe6}html[data-netbox-color-mode=dark] .list-group-item-blue-200.list-group-item-action.active{color:#fff;background-color:#3f4f66;border-color:#3f4f66}html[data-netbox-color-mode=dark] .list-group-item-blue-300{color:#426598;background-color:#e2eeff}html[data-netbox-color-mode=dark] .list-group-item-blue-300.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-blue-300.list-group-item-action:focus{color:#426598;background-color:#cbd6e6}html[data-netbox-color-mode=dark] .list-group-item-blue-300.list-group-item-action.active{color:#fff;background-color:#426598;border-color:#426598}html[data-netbox-color-mode=dark] .list-group-item-blue-400{color:#255398;background-color:#d8e8ff}html[data-netbox-color-mode=dark] .list-group-item-blue-400.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-blue-400.list-group-item-action:focus{color:#255398;background-color:#c2d1e6}html[data-netbox-color-mode=dark] .list-group-item-blue-400.list-group-item-action.active{color:#fff;background-color:#255398;border-color:#255398}html[data-netbox-color-mode=dark] .list-group-item-blue-500{color:#084298;background-color:#cfe2ff}html[data-netbox-color-mode=dark] .list-group-item-blue-500.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-blue-500.list-group-item-action:focus{color:#084298;background-color:#bacbe6}html[data-netbox-color-mode=dark] .list-group-item-blue-500.list-group-item-action.active{color:#fff;background-color:#084298;border-color:#084298}html[data-netbox-color-mode=dark] .list-group-item-blue-600{color:#063579;background-color:#cedef4}html[data-netbox-color-mode=dark] .list-group-item-blue-600.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-blue-600.list-group-item-action:focus{color:#063579;background-color:#b9c8dc}html[data-netbox-color-mode=dark] .list-group-item-blue-600.list-group-item-action.active{color:#fff;background-color:#063579;border-color:#063579}html[data-netbox-color-mode=dark] .list-group-item-blue-700{color:#05285b;background-color:#ced9ea}html[data-netbox-color-mode=dark] .list-group-item-blue-700.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-blue-700.list-group-item-action:focus{color:#05285b;background-color:#b9c3d3}html[data-netbox-color-mode=dark] .list-group-item-blue-700.list-group-item-action.active{color:#fff;background-color:#05285b;border-color:#05285b}html[data-netbox-color-mode=dark] .list-group-item-blue-800{color:#031a3d;background-color:#cdd5e0}html[data-netbox-color-mode=dark] .list-group-item-blue-800.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-blue-800.list-group-item-action:focus{color:#031a3d;background-color:#b9c0ca}html[data-netbox-color-mode=dark] .list-group-item-blue-800.list-group-item-action.active{color:#fff;background-color:#031a3d;border-color:#031a3d}html[data-netbox-color-mode=dark] .list-group-item-blue-900{color:#020d1f;background-color:#cdd0d6}html[data-netbox-color-mode=dark] .list-group-item-blue-900.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-blue-900.list-group-item-action:focus{color:#020d1f;background-color:#b9bbc1}html[data-netbox-color-mode=dark] .list-group-item-blue-900.list-group-item-action.active{color:#fff;background-color:#020d1f;border-color:#020d1f}html[data-netbox-color-mode=dark] .list-group-item-cyan-100{color:#536265;background-color:#f5fdfe}html[data-netbox-color-mode=dark] .list-group-item-cyan-100.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-cyan-100.list-group-item-action:focus{color:#536265;background-color:#dde4e5}html[data-netbox-color-mode=dark] .list-group-item-cyan-100.list-group-item-action.active{color:#fff;background-color:#536265;border-color:#536265}html[data-netbox-color-mode=dark] .list-group-item-cyan-200{color:#3f5e64;background-color:#ecfbfe}html[data-netbox-color-mode=dark] .list-group-item-cyan-200.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-cyan-200.list-group-item-action:focus{color:#3f5e64;background-color:#d4e2e5}html[data-netbox-color-mode=dark] .list-group-item-cyan-200.list-group-item-action.active{color:#fff;background-color:#3f5e64;border-color:#3f5e64}html[data-netbox-color-mode=dark] .list-group-item-cyan-300{color:#2c5962;background-color:#e2f9fd}html[data-netbox-color-mode=dark] .list-group-item-cyan-300.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-cyan-300.list-group-item-action:focus{color:#2c5962;background-color:#cbe0e4}html[data-netbox-color-mode=dark] .list-group-item-cyan-300.list-group-item-action.active{color:#fff;background-color:#2c5962;border-color:#2c5962}html[data-netbox-color-mode=dark] .list-group-item-cyan-400{color:#185561;background-color:#d8f7fd}html[data-netbox-color-mode=dark] .list-group-item-cyan-400.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-cyan-400.list-group-item-action:focus{color:#185561;background-color:#c2dee4}html[data-netbox-color-mode=dark] .list-group-item-cyan-400.list-group-item-action.active{color:#fff;background-color:#185561;border-color:#185561}html[data-netbox-color-mode=dark] .list-group-item-cyan-500{color:#055160;background-color:#cff4fc}html[data-netbox-color-mode=dark] .list-group-item-cyan-500.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-cyan-500.list-group-item-action:focus{color:#055160;background-color:#badce3}html[data-netbox-color-mode=dark] .list-group-item-cyan-500.list-group-item-action.active{color:#fff;background-color:#055160;border-color:#055160}html[data-netbox-color-mode=dark] .list-group-item-cyan-600{color:#066173;background-color:#ceecf2}html[data-netbox-color-mode=dark] .list-group-item-cyan-600.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-cyan-600.list-group-item-action:focus{color:#066173;background-color:#b9d4da}html[data-netbox-color-mode=dark] .list-group-item-cyan-600.list-group-item-action.active{color:#fff;background-color:#066173;border-color:#066173}html[data-netbox-color-mode=dark] .list-group-item-cyan-700{color:#054956;background-color:#cee4e9}html[data-netbox-color-mode=dark] .list-group-item-cyan-700.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-cyan-700.list-group-item-action:focus{color:#054956;background-color:#b9cdd2}html[data-netbox-color-mode=dark] .list-group-item-cyan-700.list-group-item-action.active{color:#fff;background-color:#054956;border-color:#054956}html[data-netbox-color-mode=dark] .list-group-item-cyan-800{color:#03313a;background-color:#cddcdf}html[data-netbox-color-mode=dark] .list-group-item-cyan-800.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-cyan-800.list-group-item-action:focus{color:#03313a;background-color:#b9c6c9}html[data-netbox-color-mode=dark] .list-group-item-cyan-800.list-group-item-action.active{color:#fff;background-color:#03313a;border-color:#03313a}html[data-netbox-color-mode=dark] .list-group-item-cyan-900{color:#02181d;background-color:#cdd4d6}html[data-netbox-color-mode=dark] .list-group-item-cyan-900.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-cyan-900.list-group-item-action:focus{color:#02181d;background-color:#b9bfc1}html[data-netbox-color-mode=dark] .list-group-item-cyan-900.list-group-item-action.active{color:#fff;background-color:#02181d;border-color:#02181d}html[data-netbox-color-mode=dark] .list-group-item-indigo-100{color:#5a5365;background-color:#f9f5fe}html[data-netbox-color-mode=dark] .list-group-item-indigo-100.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-indigo-100.list-group-item-action:focus{color:#5a5365;background-color:#e0dde5}html[data-netbox-color-mode=dark] .list-group-item-indigo-100.list-group-item-action.active{color:#fff;background-color:#5a5365;border-color:#5a5365}html[data-netbox-color-mode=dark] .list-group-item-indigo-200{color:#745f96;background-color:#f3ecfe}html[data-netbox-color-mode=dark] .list-group-item-indigo-200.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-indigo-200.list-group-item-action:focus{color:#745f96;background-color:#dbd4e5}html[data-netbox-color-mode=dark] .list-group-item-indigo-200.list-group-item-action.active{color:#fff;background-color:#745f96;border-color:#745f96}html[data-netbox-color-mode=dark] .list-group-item-indigo-300{color:#624394;background-color:#ede2fd}html[data-netbox-color-mode=dark] .list-group-item-indigo-300.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-indigo-300.list-group-item-action:focus{color:#624394;background-color:#d5cbe4}html[data-netbox-color-mode=dark] .list-group-item-indigo-300.list-group-item-action.active{color:#fff;background-color:#624394;border-color:#624394}html[data-netbox-color-mode=dark] .list-group-item-indigo-400{color:#502693;background-color:#e7d9fd}html[data-netbox-color-mode=dark] .list-group-item-indigo-400.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-indigo-400.list-group-item-action:focus{color:#502693;background-color:#d0c3e4}html[data-netbox-color-mode=dark] .list-group-item-indigo-400.list-group-item-action.active{color:#fff;background-color:#502693;border-color:#502693}html[data-netbox-color-mode=dark] .list-group-item-indigo-500{color:#3d0a91;background-color:#e0cffc}html[data-netbox-color-mode=dark] .list-group-item-indigo-500.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-indigo-500.list-group-item-action:focus{color:#3d0a91;background-color:#cabae3}html[data-netbox-color-mode=dark] .list-group-item-indigo-500.list-group-item-action.active{color:#fff;background-color:#3d0a91;border-color:#3d0a91}html[data-netbox-color-mode=dark] .list-group-item-indigo-600{color:#310874;background-color:#dccff3}html[data-netbox-color-mode=dark] .list-group-item-indigo-600.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-indigo-600.list-group-item-action:focus{color:#310874;background-color:#c6badb}html[data-netbox-color-mode=dark] .list-group-item-indigo-600.list-group-item-action.active{color:#fff;background-color:#310874;border-color:#310874}html[data-netbox-color-mode=dark] .list-group-item-indigo-700{color:#250657;background-color:#d8cee9}html[data-netbox-color-mode=dark] .list-group-item-indigo-700.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-indigo-700.list-group-item-action:focus{color:#250657;background-color:#c2b9d2}html[data-netbox-color-mode=dark] .list-group-item-indigo-700.list-group-item-action.active{color:#fff;background-color:#250657;border-color:#250657}html[data-netbox-color-mode=dark] .list-group-item-indigo-800{color:#19043a;background-color:#d4cddf}html[data-netbox-color-mode=dark] .list-group-item-indigo-800.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-indigo-800.list-group-item-action:focus{color:#19043a;background-color:#bfb9c9}html[data-netbox-color-mode=dark] .list-group-item-indigo-800.list-group-item-action.active{color:#fff;background-color:#19043a;border-color:#19043a}html[data-netbox-color-mode=dark] .list-group-item-indigo-900{color:#0c021d;background-color:#d0cdd6}html[data-netbox-color-mode=dark] .list-group-item-indigo-900.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-indigo-900.list-group-item-action:focus{color:#0c021d;background-color:#bbb9c1}html[data-netbox-color-mode=dark] .list-group-item-indigo-900.list-group-item-action.active{color:#fff;background-color:#0c021d;border-color:#0c021d}html[data-netbox-color-mode=dark] .list-group-item-purple-100{color:#5a5761;background-color:#f9f7fd}html[data-netbox-color-mode=dark] .list-group-item-purple-100.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-purple-100.list-group-item-action:focus{color:#5a5761;background-color:#e0dee4}html[data-netbox-color-mode=dark] .list-group-item-purple-100.list-group-item-action.active{color:#fff;background-color:#5a5761;border-color:#5a5761}html[data-netbox-color-mode=dark] .list-group-item-purple-200{color:#4f485c;background-color:#f3f0fa}html[data-netbox-color-mode=dark] .list-group-item-purple-200.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-purple-200.list-group-item-action:focus{color:#4f485c;background-color:#dbd8e1}html[data-netbox-color-mode=dark] .list-group-item-purple-200.list-group-item-action.active{color:#fff;background-color:#4f485c;border-color:#4f485c}html[data-netbox-color-mode=dark] .list-group-item-purple-300{color:#655583;background-color:#eee8f8}html[data-netbox-color-mode=dark] .list-group-item-purple-300.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-purple-300.list-group-item-action:focus{color:#655583;background-color:#d6d1df}html[data-netbox-color-mode=dark] .list-group-item-purple-300.list-group-item-action.active{color:#fff;background-color:#655583;border-color:#655583}html[data-netbox-color-mode=dark] .list-group-item-purple-400{color:#543e7b;background-color:#e8e1f5}html[data-netbox-color-mode=dark] .list-group-item-purple-400.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-purple-400.list-group-item-action:focus{color:#543e7b;background-color:#d1cbdd}html[data-netbox-color-mode=dark] .list-group-item-purple-400.list-group-item-action.active{color:#fff;background-color:#543e7b;border-color:#543e7b}html[data-netbox-color-mode=dark] .list-group-item-purple-500{color:#432874;background-color:#e2d9f3}html[data-netbox-color-mode=dark] .list-group-item-purple-500.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-purple-500.list-group-item-action:focus{color:#432874;background-color:#cbc3db}html[data-netbox-color-mode=dark] .list-group-item-purple-500.list-group-item-action.active{color:#fff;background-color:#432874;border-color:#432874}html[data-netbox-color-mode=dark] .list-group-item-purple-600{color:#35205c;background-color:#ded7eb}html[data-netbox-color-mode=dark] .list-group-item-purple-600.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-purple-600.list-group-item-action:focus{color:#35205c;background-color:#c8c2d4}html[data-netbox-color-mode=dark] .list-group-item-purple-600.list-group-item-action.active{color:#fff;background-color:#35205c;border-color:#35205c}html[data-netbox-color-mode=dark] .list-group-item-purple-700{color:#281846;background-color:#d9d4e3}html[data-netbox-color-mode=dark] .list-group-item-purple-700.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-purple-700.list-group-item-action:focus{color:#281846;background-color:#c3bfcc}html[data-netbox-color-mode=dark] .list-group-item-purple-700.list-group-item-action.active{color:#fff;background-color:#281846;border-color:#281846}html[data-netbox-color-mode=dark] .list-group-item-purple-800{color:#1a102e;background-color:#d5d1db}html[data-netbox-color-mode=dark] .list-group-item-purple-800.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-purple-800.list-group-item-action:focus{color:#1a102e;background-color:#c0bcc5}html[data-netbox-color-mode=dark] .list-group-item-purple-800.list-group-item-action.active{color:#fff;background-color:#1a102e;border-color:#1a102e}html[data-netbox-color-mode=dark] .list-group-item-purple-900{color:#0d0817;background-color:#d0cfd4}html[data-netbox-color-mode=dark] .list-group-item-purple-900.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-purple-900.list-group-item-action:focus{color:#0d0817;background-color:#bbbabf}html[data-netbox-color-mode=dark] .list-group-item-purple-900.list-group-item-action.active{color:#fff;background-color:#0d0817;border-color:#0d0817}html[data-netbox-color-mode=dark] .list-group-item-pink-100{color:#63565c;background-color:#fdf7fa}html[data-netbox-color-mode=dark] .list-group-item-pink-100.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-pink-100.list-group-item-action:focus{color:#63565c;background-color:#e4dee1}html[data-netbox-color-mode=dark] .list-group-item-pink-100.list-group-item-action.active{color:#fff;background-color:#63565c;border-color:#63565c}html[data-netbox-color-mode=dark] .list-group-item-pink-200{color:#604552;background-color:#fceff5}html[data-netbox-color-mode=dark] .list-group-item-pink-200.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-pink-200.list-group-item-action:focus{color:#604552;background-color:#e3d7dd}html[data-netbox-color-mode=dark] .list-group-item-pink-200.list-group-item-action.active{color:#fff;background-color:#604552;border-color:#604552}html[data-netbox-color-mode=dark] .list-group-item-pink-300{color:#8a506d;background-color:#fae7f0}html[data-netbox-color-mode=dark] .list-group-item-pink-300.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-pink-300.list-group-item-action:focus{color:#8a506d;background-color:#e1d0d8}html[data-netbox-color-mode=dark] .list-group-item-pink-300.list-group-item-action.active{color:#fff;background-color:#8a506d;border-color:#8a506d}html[data-netbox-color-mode=dark] .list-group-item-pink-400{color:#85375e;background-color:#f8deeb}html[data-netbox-color-mode=dark] .list-group-item-pink-400.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-pink-400.list-group-item-action:focus{color:#85375e;background-color:#dfc8d4}html[data-netbox-color-mode=dark] .list-group-item-pink-400.list-group-item-action.active{color:#fff;background-color:#85375e;border-color:#85375e}html[data-netbox-color-mode=dark] .list-group-item-pink-500{color:#801f4f;background-color:#f7d6e6}html[data-netbox-color-mode=dark] .list-group-item-pink-500.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-pink-500.list-group-item-action:focus{color:#801f4f;background-color:#dec1cf}html[data-netbox-color-mode=dark] .list-group-item-pink-500.list-group-item-action.active{color:#fff;background-color:#801f4f;border-color:#801f4f}html[data-netbox-color-mode=dark] .list-group-item-pink-600{color:#671940;background-color:#eed4e1}html[data-netbox-color-mode=dark] .list-group-item-pink-600.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-pink-600.list-group-item-action:focus{color:#671940;background-color:#d6bfcb}html[data-netbox-color-mode=dark] .list-group-item-pink-600.list-group-item-action.active{color:#fff;background-color:#671940;border-color:#671940}html[data-netbox-color-mode=dark] .list-group-item-pink-700{color:#4d132f;background-color:#e6d2dc}html[data-netbox-color-mode=dark] .list-group-item-pink-700.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-pink-700.list-group-item-action:focus{color:#4d132f;background-color:#cfbdc6}html[data-netbox-color-mode=dark] .list-group-item-pink-700.list-group-item-action.active{color:#fff;background-color:#4d132f;border-color:#4d132f}html[data-netbox-color-mode=dark] .list-group-item-pink-800{color:#340c20;background-color:#ddd0d7}html[data-netbox-color-mode=dark] .list-group-item-pink-800.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-pink-800.list-group-item-action:focus{color:#340c20;background-color:#c7bbc2}html[data-netbox-color-mode=dark] .list-group-item-pink-800.list-group-item-action.active{color:#fff;background-color:#340c20;border-color:#340c20}html[data-netbox-color-mode=dark] .list-group-item-pink-900{color:#1a0610;background-color:#d5ced1}html[data-netbox-color-mode=dark] .list-group-item-pink-900.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-pink-900.list-group-item-action:focus{color:#1a0610;background-color:#c0b9bc}html[data-netbox-color-mode=dark] .list-group-item-pink-900.list-group-item-action.active{color:#fff;background-color:#1a0610;border-color:#1a0610}html[data-netbox-color-mode=dark] .btn-close{box-sizing:content-box;width:1em;height:1em;padding:.25em;color:#fff;background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat;border:0;border-radius:.375rem;opacity:.5}html[data-netbox-color-mode=dark] .btn-close:hover{color:#fff;text-decoration:none;opacity:.75}html[data-netbox-color-mode=dark] .btn-close:focus{outline:0;box-shadow:0 0 0 .25rem #0d6efd40;opacity:1}html[data-netbox-color-mode=dark] .btn-close:disabled,html[data-netbox-color-mode=dark] .btn-close.disabled{pointer-events:none;user-select:none;opacity:.25}html[data-netbox-color-mode=dark] .btn-close-white{filter:invert(1) grayscale(100%) brightness(200%)}html[data-netbox-color-mode=dark] .toast{width:350px;max-width:100%;font-size:.875rem;pointer-events:auto;background-color:#ffffffd9;background-clip:padding-box;border:1px solid rgba(0,0,0,.1);box-shadow:0 .5rem 1rem #00000026;border-radius:.375rem}html[data-netbox-color-mode=dark] .toast:not(.showing):not(.show){opacity:0}html[data-netbox-color-mode=dark] .toast.hide{display:none}html[data-netbox-color-mode=dark] .toast-container{width:max-content;max-width:100%;pointer-events:none}html[data-netbox-color-mode=dark] .toast-container>:not(:last-child){margin-bottom:.75rem}html[data-netbox-color-mode=dark] .toast-header{display:flex;align-items:center;padding:.5rem .75rem;color:#6c757d;background-color:#ffffffd9;background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,.05);border-top-left-radius:calc(.375rem - 1px);border-top-right-radius:calc(.375rem - 1px)}html[data-netbox-color-mode=dark] .toast-header .btn-close{margin-right:-.375rem;margin-left:.75rem}html[data-netbox-color-mode=dark] .toast-body{padding:.75rem;word-wrap:break-word}html[data-netbox-color-mode=dark] .modal{position:fixed;top:0;left:0;z-index:1060;display:none;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;outline:0}html[data-netbox-color-mode=dark] .modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade html[data-netbox-color-mode=dark] .modal-dialog{transition:transform .3s ease-out;transform:translateY(-50px)}@media (prefers-reduced-motion: reduce){.modal.fade html[data-netbox-color-mode=dark] .modal-dialog{transition:none}}.modal.show html[data-netbox-color-mode=dark] .modal-dialog{transform:none}.modal.modal-static html[data-netbox-color-mode=dark] .modal-dialog{transform:scale(1.02)}html[data-netbox-color-mode=dark] .modal-dialog-scrollable{height:calc(100% - 1rem)}html[data-netbox-color-mode=dark] .modal-dialog-scrollable .modal-content{max-height:100%;overflow:hidden}html[data-netbox-color-mode=dark] .modal-dialog-scrollable .modal-body{overflow-y:auto}html[data-netbox-color-mode=dark] .modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - 1rem)}html[data-netbox-color-mode=dark] .modal-content{position:relative;display:flex;flex-direction:column;width:100%;pointer-events:auto;background-color:#343a40;background-clip:padding-box;border:1px solid rgba(255,255,255,.2);border-radius:.75rem;outline:0}html[data-netbox-color-mode=dark] .modal-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}html[data-netbox-color-mode=dark] .modal-backdrop.fade{opacity:0}html[data-netbox-color-mode=dark] .modal-backdrop.show{opacity:.5}html[data-netbox-color-mode=dark] .modal-header{display:flex;flex-shrink:0;align-items:center;justify-content:space-between;padding:1rem;border-bottom:1px solid #495057;border-top-left-radius:calc(.75rem - 1px);border-top-right-radius:calc(.75rem - 1px)}html[data-netbox-color-mode=dark] .modal-header .btn-close{padding:.5rem;margin:-.5rem -.5rem -.5rem auto}html[data-netbox-color-mode=dark] .modal-title{margin-bottom:0;line-height:1.5}html[data-netbox-color-mode=dark] .modal-body{position:relative;flex:1 1 auto;padding:1rem}html[data-netbox-color-mode=dark] .modal-footer{display:flex;flex-wrap:wrap;flex-shrink:0;align-items:center;justify-content:flex-end;padding:.75rem;border-top:1px solid #495057;border-bottom-right-radius:calc(.75rem - 1px);border-bottom-left-radius:calc(.75rem - 1px)}html[data-netbox-color-mode=dark] .modal-footer>*{margin:.25rem}@media (min-width: 576px){html[data-netbox-color-mode=dark] .modal-dialog{max-width:500px;margin:1.75rem auto}html[data-netbox-color-mode=dark] .modal-dialog-scrollable{height:calc(100% - 3.5rem)}html[data-netbox-color-mode=dark] .modal-dialog-centered{min-height:calc(100% - 3.5rem)}html[data-netbox-color-mode=dark] .modal-sm{max-width:300px}}@media (min-width: 992px){html[data-netbox-color-mode=dark] .modal-lg,html[data-netbox-color-mode=dark] .modal-xl{max-width:800px}}@media (min-width: 1200px){html[data-netbox-color-mode=dark] .modal-xl{max-width:1140px}}html[data-netbox-color-mode=dark] .modal-fullscreen{width:100vw;max-width:none;height:100%;margin:0}html[data-netbox-color-mode=dark] .modal-fullscreen .modal-content{height:100%;border:0;border-radius:0}html[data-netbox-color-mode=dark] .modal-fullscreen .modal-header{border-radius:0}html[data-netbox-color-mode=dark] .modal-fullscreen .modal-body{overflow-y:auto}html[data-netbox-color-mode=dark] .modal-fullscreen .modal-footer{border-radius:0}@media (max-width: 575.98px){html[data-netbox-color-mode=dark] .modal-fullscreen-sm-down{width:100vw;max-width:none;height:100%;margin:0}html[data-netbox-color-mode=dark] .modal-fullscreen-sm-down .modal-content{height:100%;border:0;border-radius:0}html[data-netbox-color-mode=dark] .modal-fullscreen-sm-down .modal-header{border-radius:0}html[data-netbox-color-mode=dark] .modal-fullscreen-sm-down .modal-body{overflow-y:auto}html[data-netbox-color-mode=dark] .modal-fullscreen-sm-down .modal-footer{border-radius:0}}@media (max-width: 767.98px){html[data-netbox-color-mode=dark] .modal-fullscreen-md-down{width:100vw;max-width:none;height:100%;margin:0}html[data-netbox-color-mode=dark] .modal-fullscreen-md-down .modal-content{height:100%;border:0;border-radius:0}html[data-netbox-color-mode=dark] .modal-fullscreen-md-down .modal-header{border-radius:0}html[data-netbox-color-mode=dark] .modal-fullscreen-md-down .modal-body{overflow-y:auto}html[data-netbox-color-mode=dark] .modal-fullscreen-md-down .modal-footer{border-radius:0}}@media (max-width: 991.98px){html[data-netbox-color-mode=dark] .modal-fullscreen-lg-down{width:100vw;max-width:none;height:100%;margin:0}html[data-netbox-color-mode=dark] .modal-fullscreen-lg-down .modal-content{height:100%;border:0;border-radius:0}html[data-netbox-color-mode=dark] .modal-fullscreen-lg-down .modal-header{border-radius:0}html[data-netbox-color-mode=dark] .modal-fullscreen-lg-down .modal-body{overflow-y:auto}html[data-netbox-color-mode=dark] .modal-fullscreen-lg-down .modal-footer{border-radius:0}}@media (max-width: 1199.98px){html[data-netbox-color-mode=dark] .modal-fullscreen-xl-down{width:100vw;max-width:none;height:100%;margin:0}html[data-netbox-color-mode=dark] .modal-fullscreen-xl-down .modal-content{height:100%;border:0;border-radius:0}html[data-netbox-color-mode=dark] .modal-fullscreen-xl-down .modal-header{border-radius:0}html[data-netbox-color-mode=dark] .modal-fullscreen-xl-down .modal-body{overflow-y:auto}html[data-netbox-color-mode=dark] .modal-fullscreen-xl-down .modal-footer{border-radius:0}}@media (max-width: 1399.98px){html[data-netbox-color-mode=dark] .modal-fullscreen-xxl-down{width:100vw;max-width:none;height:100%;margin:0}html[data-netbox-color-mode=dark] .modal-fullscreen-xxl-down .modal-content{height:100%;border:0;border-radius:0}html[data-netbox-color-mode=dark] .modal-fullscreen-xxl-down .modal-header{border-radius:0}html[data-netbox-color-mode=dark] .modal-fullscreen-xxl-down .modal-body{overflow-y:auto}html[data-netbox-color-mode=dark] .modal-fullscreen-xxl-down .modal-footer{border-radius:0}}html[data-netbox-color-mode=dark] .tooltip{position:absolute;z-index:1080;display:block;margin:0;font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}html[data-netbox-color-mode=dark] .tooltip.show{opacity:.9}html[data-netbox-color-mode=dark] .tooltip .tooltip-arrow{position:absolute;display:block;width:.8rem;height:.4rem}html[data-netbox-color-mode=dark] .tooltip .tooltip-arrow:before{position:absolute;content:"";border-color:transparent;border-style:solid}html[data-netbox-color-mode=dark] .bs-tooltip-top,html[data-netbox-color-mode=dark] .bs-tooltip-auto[data-popper-placement^=top]{padding:.4rem 0}html[data-netbox-color-mode=dark] .bs-tooltip-top .tooltip-arrow,html[data-netbox-color-mode=dark] .bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow{bottom:0}html[data-netbox-color-mode=dark] .bs-tooltip-top .tooltip-arrow:before,html[data-netbox-color-mode=dark] .bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow:before{top:-1px;border-width:.4rem .4rem 0;border-top-color:#495057}html[data-netbox-color-mode=dark] .bs-tooltip-end,html[data-netbox-color-mode=dark] .bs-tooltip-auto[data-popper-placement^=right]{padding:0 .4rem}html[data-netbox-color-mode=dark] .bs-tooltip-end .tooltip-arrow,html[data-netbox-color-mode=dark] .bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow{left:0;width:.4rem;height:.8rem}html[data-netbox-color-mode=dark] .bs-tooltip-end .tooltip-arrow:before,html[data-netbox-color-mode=dark] .bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow:before{right:-1px;border-width:.4rem .4rem .4rem 0;border-right-color:#495057}html[data-netbox-color-mode=dark] .bs-tooltip-bottom,html[data-netbox-color-mode=dark] .bs-tooltip-auto[data-popper-placement^=bottom]{padding:.4rem 0}html[data-netbox-color-mode=dark] .bs-tooltip-bottom .tooltip-arrow,html[data-netbox-color-mode=dark] .bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow{top:0}html[data-netbox-color-mode=dark] .bs-tooltip-bottom .tooltip-arrow:before,html[data-netbox-color-mode=dark] .bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow:before{bottom:-1px;border-width:0 .4rem .4rem;border-bottom-color:#495057}html[data-netbox-color-mode=dark] .bs-tooltip-start,html[data-netbox-color-mode=dark] .bs-tooltip-auto[data-popper-placement^=left]{padding:0 .4rem}html[data-netbox-color-mode=dark] .bs-tooltip-start .tooltip-arrow,html[data-netbox-color-mode=dark] .bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow{right:0;width:.4rem;height:.8rem}html[data-netbox-color-mode=dark] .bs-tooltip-start .tooltip-arrow:before,html[data-netbox-color-mode=dark] .bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow:before{left:-1px;border-width:.4rem 0 .4rem .4rem;border-left-color:#495057}html[data-netbox-color-mode=dark] .tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#495057;border-radius:.375rem}html[data-netbox-color-mode=dark] .popover{position:absolute;top:0;left:0;z-index:1070;display:block;max-width:276px;font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#495057;background-clip:padding-box;border:1px solid rgba(255,255,255,.2);border-radius:.75rem}html[data-netbox-color-mode=dark] .popover .popover-arrow{position:absolute;display:block;width:1rem;height:.5rem}html[data-netbox-color-mode=dark] .popover .popover-arrow:before,html[data-netbox-color-mode=dark] .popover .popover-arrow:after{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}html[data-netbox-color-mode=dark] .bs-popover-top>.popover-arrow,html[data-netbox-color-mode=dark] .bs-popover-auto[data-popper-placement^=top]>.popover-arrow{bottom:calc(-.5rem - 1px)}html[data-netbox-color-mode=dark] .bs-popover-top>.popover-arrow:before,html[data-netbox-color-mode=dark] .bs-popover-auto[data-popper-placement^=top]>.popover-arrow:before{bottom:0;border-width:.5rem .5rem 0;border-top-color:#ffffff40}html[data-netbox-color-mode=dark] .bs-popover-top>.popover-arrow:after,html[data-netbox-color-mode=dark] .bs-popover-auto[data-popper-placement^=top]>.popover-arrow:after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#495057}html[data-netbox-color-mode=dark] .bs-popover-end>.popover-arrow,html[data-netbox-color-mode=dark] .bs-popover-auto[data-popper-placement^=right]>.popover-arrow{left:calc(-.5rem - 1px);width:.5rem;height:1rem}html[data-netbox-color-mode=dark] .bs-popover-end>.popover-arrow:before,html[data-netbox-color-mode=dark] .bs-popover-auto[data-popper-placement^=right]>.popover-arrow:before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:#ffffff40}html[data-netbox-color-mode=dark] .bs-popover-end>.popover-arrow:after,html[data-netbox-color-mode=dark] .bs-popover-auto[data-popper-placement^=right]>.popover-arrow:after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#495057}html[data-netbox-color-mode=dark] .bs-popover-bottom>.popover-arrow,html[data-netbox-color-mode=dark] .bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow{top:calc(-.5rem - 1px)}html[data-netbox-color-mode=dark] .bs-popover-bottom>.popover-arrow:before,html[data-netbox-color-mode=dark] .bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow:before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:#ffffff40}html[data-netbox-color-mode=dark] .bs-popover-bottom>.popover-arrow:after,html[data-netbox-color-mode=dark] .bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow:after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#495057}html[data-netbox-color-mode=dark] .bs-popover-bottom .popover-header:before,html[data-netbox-color-mode=dark] .bs-popover-auto[data-popper-placement^=bottom] .popover-header:before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #454b52}html[data-netbox-color-mode=dark] .bs-popover-start>.popover-arrow,html[data-netbox-color-mode=dark] .bs-popover-auto[data-popper-placement^=left]>.popover-arrow{right:calc(-.5rem - 1px);width:.5rem;height:1rem}html[data-netbox-color-mode=dark] .bs-popover-start>.popover-arrow:before,html[data-netbox-color-mode=dark] .bs-popover-auto[data-popper-placement^=left]>.popover-arrow:before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:#ffffff40}html[data-netbox-color-mode=dark] .bs-popover-start>.popover-arrow:after,html[data-netbox-color-mode=dark] .bs-popover-auto[data-popper-placement^=left]>.popover-arrow:after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#495057}html[data-netbox-color-mode=dark] .popover-header{padding:.5rem 1rem;margin-bottom:0;font-size:1rem;background-color:#454b52;border-bottom:1px solid rgba(255,255,255,.2);border-top-left-radius:calc(.75rem - 1px);border-top-right-radius:calc(.75rem - 1px)}html[data-netbox-color-mode=dark] .popover-header:empty{display:none}html[data-netbox-color-mode=dark] .popover-body{padding:1rem;color:#fff}html[data-netbox-color-mode=dark] .carousel{position:relative}html[data-netbox-color-mode=dark] .carousel.pointer-event{touch-action:pan-y}html[data-netbox-color-mode=dark] .carousel-inner{position:relative;width:100%;overflow:hidden}html[data-netbox-color-mode=dark] .carousel-inner:after{display:block;clear:both;content:""}html[data-netbox-color-mode=dark] .carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;backface-visibility:hidden;transition:transform .6s ease-in-out}@media (prefers-reduced-motion: reduce){html[data-netbox-color-mode=dark] .carousel-item{transition:none}}html[data-netbox-color-mode=dark] .carousel-item.active,html[data-netbox-color-mode=dark] .carousel-item-next,html[data-netbox-color-mode=dark] .carousel-item-prev{display:block}html[data-netbox-color-mode=dark] .carousel-item-next:not(.carousel-item-start),html[data-netbox-color-mode=dark] .active.carousel-item-end{transform:translate(100%)}html[data-netbox-color-mode=dark] .carousel-item-prev:not(.carousel-item-end),html[data-netbox-color-mode=dark] .active.carousel-item-start{transform:translate(-100%)}html[data-netbox-color-mode=dark] .carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}html[data-netbox-color-mode=dark] .carousel-fade .carousel-item.active,html[data-netbox-color-mode=dark] .carousel-fade .carousel-item-next.carousel-item-start,html[data-netbox-color-mode=dark] .carousel-fade .carousel-item-prev.carousel-item-end{z-index:1;opacity:1}html[data-netbox-color-mode=dark] .carousel-fade .active.carousel-item-start,html[data-netbox-color-mode=dark] .carousel-fade .active.carousel-item-end{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion: reduce){html[data-netbox-color-mode=dark] .carousel-fade .active.carousel-item-start,html[data-netbox-color-mode=dark] .carousel-fade .active.carousel-item-end{transition:none}}html[data-netbox-color-mode=dark] .carousel-control-prev,html[data-netbox-color-mode=dark] .carousel-control-next{position:absolute;top:0;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:none;border:0;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion: reduce){html[data-netbox-color-mode=dark] .carousel-control-prev,html[data-netbox-color-mode=dark] .carousel-control-next{transition:none}}html[data-netbox-color-mode=dark] .carousel-control-prev:hover,html[data-netbox-color-mode=dark] .carousel-control-prev:focus,html[data-netbox-color-mode=dark] .carousel-control-next:hover,html[data-netbox-color-mode=dark] .carousel-control-next:focus{color:#fff;text-decoration:none;outline:0;opacity:.9}html[data-netbox-color-mode=dark] .carousel-control-prev{left:0}html[data-netbox-color-mode=dark] .carousel-control-next{right:0}html[data-netbox-color-mode=dark] .carousel-control-prev-icon,html[data-netbox-color-mode=dark] .carousel-control-next-icon{display:inline-block;width:2rem;height:2rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}html[data-netbox-color-mode=dark] .carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e")}html[data-netbox-color-mode=dark] .carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}html[data-netbox-color-mode=dark] .carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:2;display:flex;justify-content:center;padding:0;margin-right:15%;margin-bottom:1rem;margin-left:15%;list-style:none}html[data-netbox-color-mode=dark] .carousel-indicators [data-bs-target]{box-sizing:content-box;flex:0 1 auto;width:30px;height:3px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border:0;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion: reduce){html[data-netbox-color-mode=dark] .carousel-indicators [data-bs-target]{transition:none}}html[data-netbox-color-mode=dark] .carousel-indicators .active{opacity:1}html[data-netbox-color-mode=dark] .carousel-caption{position:absolute;right:15%;bottom:1.25rem;left:15%;padding-top:1.25rem;padding-bottom:1.25rem;color:#fff;text-align:center}html[data-netbox-color-mode=dark] .carousel-dark .carousel-control-prev-icon,html[data-netbox-color-mode=dark] .carousel-dark .carousel-control-next-icon{filter:invert(1) grayscale(100)}html[data-netbox-color-mode=dark] .carousel-dark .carousel-indicators [data-bs-target]{background-color:#000}html[data-netbox-color-mode=dark] .carousel-dark .carousel-caption{color:#000}@keyframes spinner-border{to{transform:rotate(360deg)}}html[data-netbox-color-mode=dark] .spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:-.125em;border:.25em solid currentColor;border-right-color:transparent;border-radius:50%;animation:.75s linear infinite spinner-border}html[data-netbox-color-mode=dark] .spinner-border-sm{width:1rem;height:1rem;border-width:.2em}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}html[data-netbox-color-mode=dark] .spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:-.125em;background-color:currentColor;border-radius:50%;opacity:0;animation:.75s linear infinite spinner-grow}html[data-netbox-color-mode=dark] .spinner-grow-sm{width:1rem;height:1rem}@media (prefers-reduced-motion: reduce){html[data-netbox-color-mode=dark] .spinner-border,html[data-netbox-color-mode=dark] .spinner-grow{animation-duration:1.5s}}html[data-netbox-color-mode=dark] .clearfix:after{display:block;clear:both;content:""}html[data-netbox-color-mode=dark] .link-primary{color:#6ea8fe}html[data-netbox-color-mode=dark] .link-primary:hover,html[data-netbox-color-mode=dark] .link-primary:focus{color:#8bb9fe}html[data-netbox-color-mode=dark] .link-secondary{color:#adb5bd}html[data-netbox-color-mode=dark] .link-secondary:hover,html[data-netbox-color-mode=dark] .link-secondary:focus{color:#bdc4ca}html[data-netbox-color-mode=dark] .link-success{color:#75b798}html[data-netbox-color-mode=dark] .link-success:hover,html[data-netbox-color-mode=dark] .link-success:focus{color:#91c5ad}html[data-netbox-color-mode=dark] .link-info{color:#6edff6}html[data-netbox-color-mode=dark] .link-info:hover,html[data-netbox-color-mode=dark] .link-info:focus{color:#8be5f8}html[data-netbox-color-mode=dark] .link-warning{color:#ffda6a}html[data-netbox-color-mode=dark] .link-warning:hover,html[data-netbox-color-mode=dark] .link-warning:focus{color:#ffe188}html[data-netbox-color-mode=dark] .link-danger{color:#ea868f}html[data-netbox-color-mode=dark] .link-danger:hover,html[data-netbox-color-mode=dark] .link-danger:focus{color:#ee9ea5}html[data-netbox-color-mode=dark] .link-light{color:#dee2e6}html[data-netbox-color-mode=dark] .link-light:hover,html[data-netbox-color-mode=dark] .link-light:focus{color:#e5e8eb}html[data-netbox-color-mode=dark] .link-dark{color:#adb5bd}html[data-netbox-color-mode=dark] .link-dark:hover,html[data-netbox-color-mode=dark] .link-dark:focus{color:#bdc4ca}html[data-netbox-color-mode=dark] .link-red{color:#ea868f}html[data-netbox-color-mode=dark] .link-red:hover,html[data-netbox-color-mode=dark] .link-red:focus{color:#ee9ea5}html[data-netbox-color-mode=dark] .link-yellow{color:#ffda6a}html[data-netbox-color-mode=dark] .link-yellow:hover,html[data-netbox-color-mode=dark] .link-yellow:focus{color:#ffe188}html[data-netbox-color-mode=dark] .link-green{color:#75b798}html[data-netbox-color-mode=dark] .link-green:hover,html[data-netbox-color-mode=dark] .link-green:focus{color:#91c5ad}html[data-netbox-color-mode=dark] .link-blue{color:#6ea8fe}html[data-netbox-color-mode=dark] .link-blue:hover,html[data-netbox-color-mode=dark] .link-blue:focus{color:#8bb9fe}html[data-netbox-color-mode=dark] .link-cyan{color:#6edff6}html[data-netbox-color-mode=dark] .link-cyan:hover,html[data-netbox-color-mode=dark] .link-cyan:focus{color:#8be5f8}html[data-netbox-color-mode=dark] .link-indigo{color:#a370f7}html[data-netbox-color-mode=dark] .link-indigo:hover,html[data-netbox-color-mode=dark] .link-indigo:focus{color:#b58df9}html[data-netbox-color-mode=dark] .link-purple{color:#a98eda}html[data-netbox-color-mode=dark] .link-purple:hover,html[data-netbox-color-mode=dark] .link-purple:focus{color:#baa5e1}html[data-netbox-color-mode=dark] .link-pink{color:#e685b5}html[data-netbox-color-mode=dark] .link-pink:hover,html[data-netbox-color-mode=dark] .link-pink:focus{color:#eb9dc4}html[data-netbox-color-mode=dark] .link-darker{color:#1b1f22}html[data-netbox-color-mode=dark] .link-darker:hover,html[data-netbox-color-mode=dark] .link-darker:focus{color:#16191b}html[data-netbox-color-mode=dark] .link-darkest{color:#171b1d}html[data-netbox-color-mode=dark] .link-darkest:hover,html[data-netbox-color-mode=dark] .link-darkest:focus{color:#121617}html[data-netbox-color-mode=dark] .link-gray{color:#ced4da}html[data-netbox-color-mode=dark] .link-gray:hover,html[data-netbox-color-mode=dark] .link-gray:focus{color:#d8dde1}html[data-netbox-color-mode=dark] .link-gray-100{color:#f8f9fa}html[data-netbox-color-mode=dark] .link-gray-100:hover,html[data-netbox-color-mode=dark] .link-gray-100:focus{color:#f9fafb}html[data-netbox-color-mode=dark] .link-gray-200{color:#e9ecef}html[data-netbox-color-mode=dark] .link-gray-200:hover,html[data-netbox-color-mode=dark] .link-gray-200:focus{color:#edf0f2}html[data-netbox-color-mode=dark] .link-gray-300{color:#dee2e6}html[data-netbox-color-mode=dark] .link-gray-300:hover,html[data-netbox-color-mode=dark] .link-gray-300:focus{color:#e5e8eb}html[data-netbox-color-mode=dark] .link-gray-400{color:#ced4da}html[data-netbox-color-mode=dark] .link-gray-400:hover,html[data-netbox-color-mode=dark] .link-gray-400:focus{color:#d8dde1}html[data-netbox-color-mode=dark] .link-gray-500{color:#adb5bd}html[data-netbox-color-mode=dark] .link-gray-500:hover,html[data-netbox-color-mode=dark] .link-gray-500:focus{color:#bdc4ca}html[data-netbox-color-mode=dark] .link-gray-600{color:#6c757d}html[data-netbox-color-mode=dark] .link-gray-600:hover,html[data-netbox-color-mode=dark] .link-gray-600:focus{color:#565e64}html[data-netbox-color-mode=dark] .link-gray-700{color:#495057}html[data-netbox-color-mode=dark] .link-gray-700:hover,html[data-netbox-color-mode=dark] .link-gray-700:focus{color:#3a4046}html[data-netbox-color-mode=dark] .link-gray-800{color:#343a40}html[data-netbox-color-mode=dark] .link-gray-800:hover,html[data-netbox-color-mode=dark] .link-gray-800:focus{color:#2a2e33}html[data-netbox-color-mode=dark] .link-gray-900{color:#212529}html[data-netbox-color-mode=dark] .link-gray-900:hover,html[data-netbox-color-mode=dark] .link-gray-900:focus{color:#1a1e21}html[data-netbox-color-mode=dark] .link-red-100{color:#f8d7da}html[data-netbox-color-mode=dark] .link-red-100:hover,html[data-netbox-color-mode=dark] .link-red-100:focus{color:#f9dfe1}html[data-netbox-color-mode=dark] .link-red-200{color:#f1aeb5}html[data-netbox-color-mode=dark] .link-red-200:hover,html[data-netbox-color-mode=dark] .link-red-200:focus{color:#f4bec4}html[data-netbox-color-mode=dark] .link-red-300{color:#ea868f}html[data-netbox-color-mode=dark] .link-red-300:hover,html[data-netbox-color-mode=dark] .link-red-300:focus{color:#ee9ea5}html[data-netbox-color-mode=dark] .link-red-400{color:#e35d6a}html[data-netbox-color-mode=dark] .link-red-400:hover,html[data-netbox-color-mode=dark] .link-red-400:focus{color:#e97d88}html[data-netbox-color-mode=dark] .link-red-500{color:#dc3545}html[data-netbox-color-mode=dark] .link-red-500:hover,html[data-netbox-color-mode=dark] .link-red-500:focus{color:#b02a37}html[data-netbox-color-mode=dark] .link-red-600{color:#b02a37}html[data-netbox-color-mode=dark] .link-red-600:hover,html[data-netbox-color-mode=dark] .link-red-600:focus{color:#8d222c}html[data-netbox-color-mode=dark] .link-red-700{color:#842029}html[data-netbox-color-mode=dark] .link-red-700:hover,html[data-netbox-color-mode=dark] .link-red-700:focus{color:#6a1a21}html[data-netbox-color-mode=dark] .link-red-800{color:#58151c}html[data-netbox-color-mode=dark] .link-red-800:hover,html[data-netbox-color-mode=dark] .link-red-800:focus{color:#461116}html[data-netbox-color-mode=dark] .link-red-900{color:#2c0b0e}html[data-netbox-color-mode=dark] .link-red-900:hover,html[data-netbox-color-mode=dark] .link-red-900:focus{color:#23090b}html[data-netbox-color-mode=dark] .link-yellow-100{color:#fff3cd}html[data-netbox-color-mode=dark] .link-yellow-100:hover,html[data-netbox-color-mode=dark] .link-yellow-100:focus{color:#fff5d7}html[data-netbox-color-mode=dark] .link-yellow-200{color:#ffe69c}html[data-netbox-color-mode=dark] .link-yellow-200:hover,html[data-netbox-color-mode=dark] .link-yellow-200:focus{color:#ffebb0}html[data-netbox-color-mode=dark] .link-yellow-300{color:#ffda6a}html[data-netbox-color-mode=dark] .link-yellow-300:hover,html[data-netbox-color-mode=dark] .link-yellow-300:focus{color:#ffe188}html[data-netbox-color-mode=dark] .link-yellow-400{color:#ffcd39}html[data-netbox-color-mode=dark] .link-yellow-400:hover,html[data-netbox-color-mode=dark] .link-yellow-400:focus{color:#ffd761}html[data-netbox-color-mode=dark] .link-yellow-500{color:#ffc107}html[data-netbox-color-mode=dark] .link-yellow-500:hover,html[data-netbox-color-mode=dark] .link-yellow-500:focus{color:#ffcd39}html[data-netbox-color-mode=dark] .link-yellow-600{color:#cc9a06}html[data-netbox-color-mode=dark] .link-yellow-600:hover,html[data-netbox-color-mode=dark] .link-yellow-600:focus{color:#d6ae38}html[data-netbox-color-mode=dark] .link-yellow-700{color:#997404}html[data-netbox-color-mode=dark] .link-yellow-700:hover,html[data-netbox-color-mode=dark] .link-yellow-700:focus{color:#ad9036}html[data-netbox-color-mode=dark] .link-yellow-800{color:#664d03}html[data-netbox-color-mode=dark] .link-yellow-800:hover,html[data-netbox-color-mode=dark] .link-yellow-800:focus{color:#523e02}html[data-netbox-color-mode=dark] .link-yellow-900{color:#332701}html[data-netbox-color-mode=dark] .link-yellow-900:hover,html[data-netbox-color-mode=dark] .link-yellow-900:focus{color:#291f01}html[data-netbox-color-mode=dark] .link-green-100{color:#d1e7dd}html[data-netbox-color-mode=dark] .link-green-100:hover,html[data-netbox-color-mode=dark] .link-green-100:focus{color:#daece4}html[data-netbox-color-mode=dark] .link-green-200{color:#a3cfbb}html[data-netbox-color-mode=dark] .link-green-200:hover,html[data-netbox-color-mode=dark] .link-green-200:focus{color:#b5d9c9}html[data-netbox-color-mode=dark] .link-green-300{color:#75b798}html[data-netbox-color-mode=dark] .link-green-300:hover,html[data-netbox-color-mode=dark] .link-green-300:focus{color:#91c5ad}html[data-netbox-color-mode=dark] .link-green-400{color:#479f76}html[data-netbox-color-mode=dark] .link-green-400:hover,html[data-netbox-color-mode=dark] .link-green-400:focus{color:#6cb291}html[data-netbox-color-mode=dark] .link-green-500{color:#198754}html[data-netbox-color-mode=dark] .link-green-500:hover,html[data-netbox-color-mode=dark] .link-green-500:focus{color:#146c43}html[data-netbox-color-mode=dark] .link-green-600{color:#146c43}html[data-netbox-color-mode=dark] .link-green-600:hover,html[data-netbox-color-mode=dark] .link-green-600:focus{color:#105636}html[data-netbox-color-mode=dark] .link-green-700{color:#0f5132}html[data-netbox-color-mode=dark] .link-green-700:hover,html[data-netbox-color-mode=dark] .link-green-700:focus{color:#0c4128}html[data-netbox-color-mode=dark] .link-green-800{color:#0a3622}html[data-netbox-color-mode=dark] .link-green-800:hover,html[data-netbox-color-mode=dark] .link-green-800:focus{color:#082b1b}html[data-netbox-color-mode=dark] .link-green-900{color:#051b11}html[data-netbox-color-mode=dark] .link-green-900:hover,html[data-netbox-color-mode=dark] .link-green-900:focus{color:#04160e}html[data-netbox-color-mode=dark] .link-blue-100{color:#cfe2ff}html[data-netbox-color-mode=dark] .link-blue-100:hover,html[data-netbox-color-mode=dark] .link-blue-100:focus{color:#d9e8ff}html[data-netbox-color-mode=dark] .link-blue-200{color:#9ec5fe}html[data-netbox-color-mode=dark] .link-blue-200:hover,html[data-netbox-color-mode=dark] .link-blue-200:focus{color:#b1d1fe}html[data-netbox-color-mode=dark] .link-blue-300{color:#6ea8fe}html[data-netbox-color-mode=dark] .link-blue-300:hover,html[data-netbox-color-mode=dark] .link-blue-300:focus{color:#8bb9fe}html[data-netbox-color-mode=dark] .link-blue-400{color:#3d8bfd}html[data-netbox-color-mode=dark] .link-blue-400:hover,html[data-netbox-color-mode=dark] .link-blue-400:focus{color:#64a2fd}html[data-netbox-color-mode=dark] .link-blue-500{color:#0d6efd}html[data-netbox-color-mode=dark] .link-blue-500:hover,html[data-netbox-color-mode=dark] .link-blue-500:focus{color:#0a58ca}html[data-netbox-color-mode=dark] .link-blue-600{color:#0a58ca}html[data-netbox-color-mode=dark] .link-blue-600:hover,html[data-netbox-color-mode=dark] .link-blue-600:focus{color:#0846a2}html[data-netbox-color-mode=dark] .link-blue-700{color:#084298}html[data-netbox-color-mode=dark] .link-blue-700:hover,html[data-netbox-color-mode=dark] .link-blue-700:focus{color:#06357a}html[data-netbox-color-mode=dark] .link-blue-800{color:#052c65}html[data-netbox-color-mode=dark] .link-blue-800:hover,html[data-netbox-color-mode=dark] .link-blue-800:focus{color:#042351}html[data-netbox-color-mode=dark] .link-blue-900{color:#031633}html[data-netbox-color-mode=dark] .link-blue-900:hover,html[data-netbox-color-mode=dark] .link-blue-900:focus{color:#021229}html[data-netbox-color-mode=dark] .link-cyan-100{color:#cff4fc}html[data-netbox-color-mode=dark] .link-cyan-100:hover,html[data-netbox-color-mode=dark] .link-cyan-100:focus{color:#d9f6fd}html[data-netbox-color-mode=dark] .link-cyan-200{color:#9eeaf9}html[data-netbox-color-mode=dark] .link-cyan-200:hover,html[data-netbox-color-mode=dark] .link-cyan-200:focus{color:#b1eefa}html[data-netbox-color-mode=dark] .link-cyan-300{color:#6edff6}html[data-netbox-color-mode=dark] .link-cyan-300:hover,html[data-netbox-color-mode=dark] .link-cyan-300:focus{color:#8be5f8}html[data-netbox-color-mode=dark] .link-cyan-400{color:#3dd5f3}html[data-netbox-color-mode=dark] .link-cyan-400:hover,html[data-netbox-color-mode=dark] .link-cyan-400:focus{color:#64ddf5}html[data-netbox-color-mode=dark] .link-cyan-500{color:#0dcaf0}html[data-netbox-color-mode=dark] .link-cyan-500:hover,html[data-netbox-color-mode=dark] .link-cyan-500:focus{color:#3dd5f3}html[data-netbox-color-mode=dark] .link-cyan-600{color:#0aa2c0}html[data-netbox-color-mode=dark] .link-cyan-600:hover,html[data-netbox-color-mode=dark] .link-cyan-600:focus{color:#3bb5cd}html[data-netbox-color-mode=dark] .link-cyan-700{color:#087990}html[data-netbox-color-mode=dark] .link-cyan-700:hover,html[data-netbox-color-mode=dark] .link-cyan-700:focus{color:#066173}html[data-netbox-color-mode=dark] .link-cyan-800{color:#055160}html[data-netbox-color-mode=dark] .link-cyan-800:hover,html[data-netbox-color-mode=dark] .link-cyan-800:focus{color:#04414d}html[data-netbox-color-mode=dark] .link-cyan-900{color:#032830}html[data-netbox-color-mode=dark] .link-cyan-900:hover,html[data-netbox-color-mode=dark] .link-cyan-900:focus{color:#022026}html[data-netbox-color-mode=dark] .link-indigo-100{color:#e0cffc}html[data-netbox-color-mode=dark] .link-indigo-100:hover,html[data-netbox-color-mode=dark] .link-indigo-100:focus{color:#e6d9fd}html[data-netbox-color-mode=dark] .link-indigo-200{color:#c29ffa}html[data-netbox-color-mode=dark] .link-indigo-200:hover,html[data-netbox-color-mode=dark] .link-indigo-200:focus{color:#ceb2fb}html[data-netbox-color-mode=dark] .link-indigo-300{color:#a370f7}html[data-netbox-color-mode=dark] .link-indigo-300:hover,html[data-netbox-color-mode=dark] .link-indigo-300:focus{color:#b58df9}html[data-netbox-color-mode=dark] .link-indigo-400{color:#8540f5}html[data-netbox-color-mode=dark] .link-indigo-400:hover,html[data-netbox-color-mode=dark] .link-indigo-400:focus{color:#6a33c4}html[data-netbox-color-mode=dark] .link-indigo-500{color:#6610f2}html[data-netbox-color-mode=dark] .link-indigo-500:hover,html[data-netbox-color-mode=dark] .link-indigo-500:focus{color:#520dc2}html[data-netbox-color-mode=dark] .link-indigo-600{color:#520dc2}html[data-netbox-color-mode=dark] .link-indigo-600:hover,html[data-netbox-color-mode=dark] .link-indigo-600:focus{color:#420a9b}html[data-netbox-color-mode=dark] .link-indigo-700{color:#3d0a91}html[data-netbox-color-mode=dark] .link-indigo-700:hover,html[data-netbox-color-mode=dark] .link-indigo-700:focus{color:#310874}html[data-netbox-color-mode=dark] .link-indigo-800{color:#290661}html[data-netbox-color-mode=dark] .link-indigo-800:hover,html[data-netbox-color-mode=dark] .link-indigo-800:focus{color:#21054e}html[data-netbox-color-mode=dark] .link-indigo-900{color:#140330}html[data-netbox-color-mode=dark] .link-indigo-900:hover,html[data-netbox-color-mode=dark] .link-indigo-900:focus{color:#100226}html[data-netbox-color-mode=dark] .link-purple-100{color:#e2d9f3}html[data-netbox-color-mode=dark] .link-purple-100:hover,html[data-netbox-color-mode=dark] .link-purple-100:focus{color:#e8e1f5}html[data-netbox-color-mode=dark] .link-purple-200{color:#c5b3e6}html[data-netbox-color-mode=dark] .link-purple-200:hover,html[data-netbox-color-mode=dark] .link-purple-200:focus{color:#d1c2eb}html[data-netbox-color-mode=dark] .link-purple-300{color:#a98eda}html[data-netbox-color-mode=dark] .link-purple-300:hover,html[data-netbox-color-mode=dark] .link-purple-300:focus{color:#baa5e1}html[data-netbox-color-mode=dark] .link-purple-400{color:#8c68cd}html[data-netbox-color-mode=dark] .link-purple-400:hover,html[data-netbox-color-mode=dark] .link-purple-400:focus{color:#a386d7}html[data-netbox-color-mode=dark] .link-purple-500{color:#6f42c1}html[data-netbox-color-mode=dark] .link-purple-500:hover,html[data-netbox-color-mode=dark] .link-purple-500:focus{color:#59359a}html[data-netbox-color-mode=dark] .link-purple-600{color:#59359a}html[data-netbox-color-mode=dark] .link-purple-600:hover,html[data-netbox-color-mode=dark] .link-purple-600:focus{color:#472a7b}html[data-netbox-color-mode=dark] .link-purple-700{color:#432874}html[data-netbox-color-mode=dark] .link-purple-700:hover,html[data-netbox-color-mode=dark] .link-purple-700:focus{color:#36205d}html[data-netbox-color-mode=dark] .link-purple-800{color:#2c1a4d}html[data-netbox-color-mode=dark] .link-purple-800:hover,html[data-netbox-color-mode=dark] .link-purple-800:focus{color:#23153e}html[data-netbox-color-mode=dark] .link-purple-900{color:#160d27}html[data-netbox-color-mode=dark] .link-purple-900:hover,html[data-netbox-color-mode=dark] .link-purple-900:focus{color:#120a1f}html[data-netbox-color-mode=dark] .link-pink-100{color:#f7d6e6}html[data-netbox-color-mode=dark] .link-pink-100:hover,html[data-netbox-color-mode=dark] .link-pink-100:focus{color:#f9deeb}html[data-netbox-color-mode=dark] .link-pink-200{color:#efadce}html[data-netbox-color-mode=dark] .link-pink-200:hover,html[data-netbox-color-mode=dark] .link-pink-200:focus{color:#f2bdd8}html[data-netbox-color-mode=dark] .link-pink-300{color:#e685b5}html[data-netbox-color-mode=dark] .link-pink-300:hover,html[data-netbox-color-mode=dark] .link-pink-300:focus{color:#eb9dc4}html[data-netbox-color-mode=dark] .link-pink-400{color:#de5c9d}html[data-netbox-color-mode=dark] .link-pink-400:hover,html[data-netbox-color-mode=dark] .link-pink-400:focus{color:#e57db1}html[data-netbox-color-mode=dark] .link-pink-500{color:#d63384}html[data-netbox-color-mode=dark] .link-pink-500:hover,html[data-netbox-color-mode=dark] .link-pink-500:focus{color:#ab296a}html[data-netbox-color-mode=dark] .link-pink-600{color:#ab296a}html[data-netbox-color-mode=dark] .link-pink-600:hover,html[data-netbox-color-mode=dark] .link-pink-600:focus{color:#892155}html[data-netbox-color-mode=dark] .link-pink-700{color:#801f4f}html[data-netbox-color-mode=dark] .link-pink-700:hover,html[data-netbox-color-mode=dark] .link-pink-700:focus{color:#66193f}html[data-netbox-color-mode=dark] .link-pink-800{color:#561435}html[data-netbox-color-mode=dark] .link-pink-800:hover,html[data-netbox-color-mode=dark] .link-pink-800:focus{color:#45102a}html[data-netbox-color-mode=dark] .link-pink-900{color:#2b0a1a}html[data-netbox-color-mode=dark] .link-pink-900:hover,html[data-netbox-color-mode=dark] .link-pink-900:focus{color:#220815}html[data-netbox-color-mode=dark] .ratio{position:relative;width:100%}html[data-netbox-color-mode=dark] .ratio:before{display:block;padding-top:var(--bs-aspect-ratio);content:""}html[data-netbox-color-mode=dark] .ratio>*{position:absolute;top:0;left:0;width:100%;height:100%}html[data-netbox-color-mode=dark] .ratio-1x1{--bs-aspect-ratio: 100%}html[data-netbox-color-mode=dark] .ratio-4x3{--bs-aspect-ratio: calc(3 / 4 * 100%)}html[data-netbox-color-mode=dark] .ratio-16x9{--bs-aspect-ratio: calc(9 / 16 * 100%)}html[data-netbox-color-mode=dark] .ratio-21x9{--bs-aspect-ratio: calc(9 / 21 * 100%)}html[data-netbox-color-mode=dark] .fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}html[data-netbox-color-mode=dark] .fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}html[data-netbox-color-mode=dark] .sticky-top{position:sticky;top:0;z-index:1020}@media (min-width: 576px){html[data-netbox-color-mode=dark] .sticky-sm-top{position:sticky;top:0;z-index:1020}}@media (min-width: 768px){html[data-netbox-color-mode=dark] .sticky-md-top{position:sticky;top:0;z-index:1020}}@media (min-width: 992px){html[data-netbox-color-mode=dark] .sticky-lg-top{position:sticky;top:0;z-index:1020}}@media (min-width: 1200px){html[data-netbox-color-mode=dark] .sticky-xl-top{position:sticky;top:0;z-index:1020}}@media (min-width: 1400px){html[data-netbox-color-mode=dark] .sticky-xxl-top{position:sticky;top:0;z-index:1020}}html[data-netbox-color-mode=dark] .visually-hidden,html[data-netbox-color-mode=dark] .visually-hidden-focusable:not(:focus):not(:focus-within){position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}html[data-netbox-color-mode=dark] .stretched-link:after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;content:""}html[data-netbox-color-mode=dark] .text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}html[data-netbox-color-mode=dark] .align-baseline{vertical-align:baseline!important}html[data-netbox-color-mode=dark] .align-top{vertical-align:top!important}html[data-netbox-color-mode=dark] .align-middle{vertical-align:middle!important}html[data-netbox-color-mode=dark] .align-bottom{vertical-align:bottom!important}html[data-netbox-color-mode=dark] .align-text-bottom{vertical-align:text-bottom!important}html[data-netbox-color-mode=dark] .align-text-top{vertical-align:text-top!important}html[data-netbox-color-mode=dark] .float-start{float:left!important}html[data-netbox-color-mode=dark] .float-end{float:right!important}html[data-netbox-color-mode=dark] .float-none{float:none!important}html[data-netbox-color-mode=dark] .overflow-auto{overflow:auto!important}html[data-netbox-color-mode=dark] .overflow-hidden{overflow:hidden!important}html[data-netbox-color-mode=dark] .overflow-visible{overflow:visible!important}html[data-netbox-color-mode=dark] .overflow-scroll{overflow:scroll!important}html[data-netbox-color-mode=dark] .d-inline{display:inline!important}html[data-netbox-color-mode=dark] .d-inline-block{display:inline-block!important}html[data-netbox-color-mode=dark] .d-block{display:block!important}html[data-netbox-color-mode=dark] .d-grid{display:grid!important}html[data-netbox-color-mode=dark] .d-table{display:table!important}html[data-netbox-color-mode=dark] .d-table-row{display:table-row!important}html[data-netbox-color-mode=dark] .d-table-cell{display:table-cell!important}html[data-netbox-color-mode=dark] .d-flex{display:flex!important}html[data-netbox-color-mode=dark] .d-inline-flex{display:inline-flex!important}html[data-netbox-color-mode=dark] .d-none{display:none!important}html[data-netbox-color-mode=dark] .shadow{box-shadow:0 .5rem 1rem #00000026!important}html[data-netbox-color-mode=dark] .shadow-sm{box-shadow:0 .125rem .25rem #00000013!important}html[data-netbox-color-mode=dark] .shadow-lg{box-shadow:0 1rem 3rem #0000002d!important}html[data-netbox-color-mode=dark] .shadow-none{box-shadow:none!important}html[data-netbox-color-mode=dark] .position-static{position:static!important}html[data-netbox-color-mode=dark] .position-relative{position:relative!important}html[data-netbox-color-mode=dark] .position-absolute{position:absolute!important}html[data-netbox-color-mode=dark] .position-fixed{position:fixed!important}html[data-netbox-color-mode=dark] .position-sticky{position:sticky!important}html[data-netbox-color-mode=dark] .top-0{top:0!important}html[data-netbox-color-mode=dark] .top-50{top:50%!important}html[data-netbox-color-mode=dark] .top-100{top:100%!important}html[data-netbox-color-mode=dark] .bottom-0{bottom:0!important}html[data-netbox-color-mode=dark] .bottom-50{bottom:50%!important}html[data-netbox-color-mode=dark] .bottom-100{bottom:100%!important}html[data-netbox-color-mode=dark] .start-0{left:0!important}html[data-netbox-color-mode=dark] .start-50{left:50%!important}html[data-netbox-color-mode=dark] .start-100{left:100%!important}html[data-netbox-color-mode=dark] .end-0{right:0!important}html[data-netbox-color-mode=dark] .end-50{right:50%!important}html[data-netbox-color-mode=dark] .end-100{right:100%!important}html[data-netbox-color-mode=dark] .translate-middle{transform:translate(-50%,-50%)!important}html[data-netbox-color-mode=dark] .translate-middle-x{transform:translate(-50%)!important}html[data-netbox-color-mode=dark] .translate-middle-y{transform:translateY(-50%)!important}html[data-netbox-color-mode=dark] .border{border:1px solid #495057!important}html[data-netbox-color-mode=dark] .border-0{border:0!important}html[data-netbox-color-mode=dark] .border-top{border-top:1px solid #495057!important}html[data-netbox-color-mode=dark] .border-top-0{border-top:0!important}html[data-netbox-color-mode=dark] .border-end{border-right:1px solid #495057!important}html[data-netbox-color-mode=dark] .border-end-0{border-right:0!important}html[data-netbox-color-mode=dark] .border-bottom{border-bottom:1px solid #495057!important}html[data-netbox-color-mode=dark] .border-bottom-0{border-bottom:0!important}html[data-netbox-color-mode=dark] .border-start{border-left:1px solid #495057!important}html[data-netbox-color-mode=dark] .border-start-0{border-left:0!important}html[data-netbox-color-mode=dark] .border-primary{border-color:#6ea8fe!important}html[data-netbox-color-mode=dark] .border-secondary{border-color:#adb5bd!important}html[data-netbox-color-mode=dark] .border-success{border-color:#75b798!important}html[data-netbox-color-mode=dark] .border-info{border-color:#6edff6!important}html[data-netbox-color-mode=dark] .border-warning{border-color:#ffda6a!important}html[data-netbox-color-mode=dark] .border-danger{border-color:#ea868f!important}html[data-netbox-color-mode=dark] .border-light{border-color:#dee2e6!important}html[data-netbox-color-mode=dark] .border-dark{border-color:#adb5bd!important}html[data-netbox-color-mode=dark] .border-red{border-color:#ea868f!important}html[data-netbox-color-mode=dark] .border-yellow{border-color:#ffda6a!important}html[data-netbox-color-mode=dark] .border-green{border-color:#75b798!important}html[data-netbox-color-mode=dark] .border-blue{border-color:#6ea8fe!important}html[data-netbox-color-mode=dark] .border-cyan{border-color:#6edff6!important}html[data-netbox-color-mode=dark] .border-indigo{border-color:#a370f7!important}html[data-netbox-color-mode=dark] .border-purple{border-color:#a98eda!important}html[data-netbox-color-mode=dark] .border-pink{border-color:#e685b5!important}html[data-netbox-color-mode=dark] .border-darker{border-color:#1b1f22!important}html[data-netbox-color-mode=dark] .border-darkest{border-color:#171b1d!important}html[data-netbox-color-mode=dark] .border-gray{border-color:#ced4da!important}html[data-netbox-color-mode=dark] .border-gray-100{border-color:#f8f9fa!important}html[data-netbox-color-mode=dark] .border-gray-200{border-color:#e9ecef!important}html[data-netbox-color-mode=dark] .border-gray-300{border-color:#dee2e6!important}html[data-netbox-color-mode=dark] .border-gray-400{border-color:#ced4da!important}html[data-netbox-color-mode=dark] .border-gray-500{border-color:#adb5bd!important}html[data-netbox-color-mode=dark] .border-gray-600{border-color:#6c757d!important}html[data-netbox-color-mode=dark] .border-gray-700{border-color:#495057!important}html[data-netbox-color-mode=dark] .border-gray-800{border-color:#343a40!important}html[data-netbox-color-mode=dark] .border-gray-900{border-color:#212529!important}html[data-netbox-color-mode=dark] .border-red-100{border-color:#f8d7da!important}html[data-netbox-color-mode=dark] .border-red-200{border-color:#f1aeb5!important}html[data-netbox-color-mode=dark] .border-red-300{border-color:#ea868f!important}html[data-netbox-color-mode=dark] .border-red-400{border-color:#e35d6a!important}html[data-netbox-color-mode=dark] .border-red-500{border-color:#dc3545!important}html[data-netbox-color-mode=dark] .border-red-600{border-color:#b02a37!important}html[data-netbox-color-mode=dark] .border-red-700{border-color:#842029!important}html[data-netbox-color-mode=dark] .border-red-800{border-color:#58151c!important}html[data-netbox-color-mode=dark] .border-red-900{border-color:#2c0b0e!important}html[data-netbox-color-mode=dark] .border-yellow-100{border-color:#fff3cd!important}html[data-netbox-color-mode=dark] .border-yellow-200{border-color:#ffe69c!important}html[data-netbox-color-mode=dark] .border-yellow-300{border-color:#ffda6a!important}html[data-netbox-color-mode=dark] .border-yellow-400{border-color:#ffcd39!important}html[data-netbox-color-mode=dark] .border-yellow-500{border-color:#ffc107!important}html[data-netbox-color-mode=dark] .border-yellow-600{border-color:#cc9a06!important}html[data-netbox-color-mode=dark] .border-yellow-700{border-color:#997404!important}html[data-netbox-color-mode=dark] .border-yellow-800{border-color:#664d03!important}html[data-netbox-color-mode=dark] .border-yellow-900{border-color:#332701!important}html[data-netbox-color-mode=dark] .border-green-100{border-color:#d1e7dd!important}html[data-netbox-color-mode=dark] .border-green-200{border-color:#a3cfbb!important}html[data-netbox-color-mode=dark] .border-green-300{border-color:#75b798!important}html[data-netbox-color-mode=dark] .border-green-400{border-color:#479f76!important}html[data-netbox-color-mode=dark] .border-green-500{border-color:#198754!important}html[data-netbox-color-mode=dark] .border-green-600{border-color:#146c43!important}html[data-netbox-color-mode=dark] .border-green-700{border-color:#0f5132!important}html[data-netbox-color-mode=dark] .border-green-800{border-color:#0a3622!important}html[data-netbox-color-mode=dark] .border-green-900{border-color:#051b11!important}html[data-netbox-color-mode=dark] .border-blue-100{border-color:#cfe2ff!important}html[data-netbox-color-mode=dark] .border-blue-200{border-color:#9ec5fe!important}html[data-netbox-color-mode=dark] .border-blue-300{border-color:#6ea8fe!important}html[data-netbox-color-mode=dark] .border-blue-400{border-color:#3d8bfd!important}html[data-netbox-color-mode=dark] .border-blue-500{border-color:#0d6efd!important}html[data-netbox-color-mode=dark] .border-blue-600{border-color:#0a58ca!important}html[data-netbox-color-mode=dark] .border-blue-700{border-color:#084298!important}html[data-netbox-color-mode=dark] .border-blue-800{border-color:#052c65!important}html[data-netbox-color-mode=dark] .border-blue-900{border-color:#031633!important}html[data-netbox-color-mode=dark] .border-cyan-100{border-color:#cff4fc!important}html[data-netbox-color-mode=dark] .border-cyan-200{border-color:#9eeaf9!important}html[data-netbox-color-mode=dark] .border-cyan-300{border-color:#6edff6!important}html[data-netbox-color-mode=dark] .border-cyan-400{border-color:#3dd5f3!important}html[data-netbox-color-mode=dark] .border-cyan-500{border-color:#0dcaf0!important}html[data-netbox-color-mode=dark] .border-cyan-600{border-color:#0aa2c0!important}html[data-netbox-color-mode=dark] .border-cyan-700{border-color:#087990!important}html[data-netbox-color-mode=dark] .border-cyan-800{border-color:#055160!important}html[data-netbox-color-mode=dark] .border-cyan-900{border-color:#032830!important}html[data-netbox-color-mode=dark] .border-indigo-100{border-color:#e0cffc!important}html[data-netbox-color-mode=dark] .border-indigo-200{border-color:#c29ffa!important}html[data-netbox-color-mode=dark] .border-indigo-300{border-color:#a370f7!important}html[data-netbox-color-mode=dark] .border-indigo-400{border-color:#8540f5!important}html[data-netbox-color-mode=dark] .border-indigo-500{border-color:#6610f2!important}html[data-netbox-color-mode=dark] .border-indigo-600{border-color:#520dc2!important}html[data-netbox-color-mode=dark] .border-indigo-700{border-color:#3d0a91!important}html[data-netbox-color-mode=dark] .border-indigo-800{border-color:#290661!important}html[data-netbox-color-mode=dark] .border-indigo-900{border-color:#140330!important}html[data-netbox-color-mode=dark] .border-purple-100{border-color:#e2d9f3!important}html[data-netbox-color-mode=dark] .border-purple-200{border-color:#c5b3e6!important}html[data-netbox-color-mode=dark] .border-purple-300{border-color:#a98eda!important}html[data-netbox-color-mode=dark] .border-purple-400{border-color:#8c68cd!important}html[data-netbox-color-mode=dark] .border-purple-500{border-color:#6f42c1!important}html[data-netbox-color-mode=dark] .border-purple-600{border-color:#59359a!important}html[data-netbox-color-mode=dark] .border-purple-700{border-color:#432874!important}html[data-netbox-color-mode=dark] .border-purple-800{border-color:#2c1a4d!important}html[data-netbox-color-mode=dark] .border-purple-900{border-color:#160d27!important}html[data-netbox-color-mode=dark] .border-pink-100{border-color:#f7d6e6!important}html[data-netbox-color-mode=dark] .border-pink-200{border-color:#efadce!important}html[data-netbox-color-mode=dark] .border-pink-300{border-color:#e685b5!important}html[data-netbox-color-mode=dark] .border-pink-400{border-color:#de5c9d!important}html[data-netbox-color-mode=dark] .border-pink-500{border-color:#d63384!important}html[data-netbox-color-mode=dark] .border-pink-600{border-color:#ab296a!important}html[data-netbox-color-mode=dark] .border-pink-700{border-color:#801f4f!important}html[data-netbox-color-mode=dark] .border-pink-800{border-color:#561435!important}html[data-netbox-color-mode=dark] .border-pink-900{border-color:#2b0a1a!important}html[data-netbox-color-mode=dark] .border-white{border-color:#fff!important}html[data-netbox-color-mode=dark] .border-1{border-width:1px!important}html[data-netbox-color-mode=dark] .border-2{border-width:2px!important}html[data-netbox-color-mode=dark] .border-3{border-width:3px!important}html[data-netbox-color-mode=dark] .border-4{border-width:4px!important}html[data-netbox-color-mode=dark] .border-5{border-width:5px!important}html[data-netbox-color-mode=dark] .w-25{width:25%!important}html[data-netbox-color-mode=dark] .w-50{width:50%!important}html[data-netbox-color-mode=dark] .w-75{width:75%!important}html[data-netbox-color-mode=dark] .w-100{width:100%!important}html[data-netbox-color-mode=dark] .w-auto{width:auto!important}html[data-netbox-color-mode=dark] .mw-100{max-width:100%!important}html[data-netbox-color-mode=dark] .vw-100{width:100vw!important}html[data-netbox-color-mode=dark] .min-vw-100{min-width:100vw!important}html[data-netbox-color-mode=dark] .h-25{height:25%!important}html[data-netbox-color-mode=dark] .h-50{height:50%!important}html[data-netbox-color-mode=dark] .h-75{height:75%!important}html[data-netbox-color-mode=dark] .h-100{height:100%!important}html[data-netbox-color-mode=dark] .h-auto{height:auto!important}html[data-netbox-color-mode=dark] .mh-100{max-height:100%!important}html[data-netbox-color-mode=dark] .vh-100{height:100vh!important}html[data-netbox-color-mode=dark] .min-vh-100{min-height:100vh!important}html[data-netbox-color-mode=dark] .flex-fill{flex:1 1 auto!important}html[data-netbox-color-mode=dark] .flex-row{flex-direction:row!important}html[data-netbox-color-mode=dark] .flex-column{flex-direction:column!important}html[data-netbox-color-mode=dark] .flex-row-reverse{flex-direction:row-reverse!important}html[data-netbox-color-mode=dark] .flex-column-reverse{flex-direction:column-reverse!important}html[data-netbox-color-mode=dark] .flex-grow-0{flex-grow:0!important}html[data-netbox-color-mode=dark] .flex-grow-1{flex-grow:1!important}html[data-netbox-color-mode=dark] .flex-shrink-0{flex-shrink:0!important}html[data-netbox-color-mode=dark] .flex-shrink-1{flex-shrink:1!important}html[data-netbox-color-mode=dark] .flex-wrap{flex-wrap:wrap!important}html[data-netbox-color-mode=dark] .flex-nowrap{flex-wrap:nowrap!important}html[data-netbox-color-mode=dark] .flex-wrap-reverse{flex-wrap:wrap-reverse!important}html[data-netbox-color-mode=dark] .gap-0{gap:0!important}html[data-netbox-color-mode=dark] .gap-1{gap:.25rem!important}html[data-netbox-color-mode=dark] .gap-2{gap:.5rem!important}html[data-netbox-color-mode=dark] .gap-3{gap:1rem!important}html[data-netbox-color-mode=dark] .gap-4{gap:1.5rem!important}html[data-netbox-color-mode=dark] .gap-5{gap:3rem!important}html[data-netbox-color-mode=dark] .justify-content-start{justify-content:flex-start!important}html[data-netbox-color-mode=dark] .justify-content-end{justify-content:flex-end!important}html[data-netbox-color-mode=dark] .justify-content-center{justify-content:center!important}html[data-netbox-color-mode=dark] .justify-content-between{justify-content:space-between!important}html[data-netbox-color-mode=dark] .justify-content-around{justify-content:space-around!important}html[data-netbox-color-mode=dark] .justify-content-evenly{justify-content:space-evenly!important}html[data-netbox-color-mode=dark] .align-items-start{align-items:flex-start!important}html[data-netbox-color-mode=dark] .align-items-end{align-items:flex-end!important}html[data-netbox-color-mode=dark] .align-items-center{align-items:center!important}html[data-netbox-color-mode=dark] .align-items-baseline{align-items:baseline!important}html[data-netbox-color-mode=dark] .align-items-stretch{align-items:stretch!important}html[data-netbox-color-mode=dark] .align-content-start{align-content:flex-start!important}html[data-netbox-color-mode=dark] .align-content-end{align-content:flex-end!important}html[data-netbox-color-mode=dark] .align-content-center{align-content:center!important}html[data-netbox-color-mode=dark] .align-content-between{align-content:space-between!important}html[data-netbox-color-mode=dark] .align-content-around{align-content:space-around!important}html[data-netbox-color-mode=dark] .align-content-stretch{align-content:stretch!important}html[data-netbox-color-mode=dark] .align-self-auto{align-self:auto!important}html[data-netbox-color-mode=dark] .align-self-start{align-self:flex-start!important}html[data-netbox-color-mode=dark] .align-self-end{align-self:flex-end!important}html[data-netbox-color-mode=dark] .align-self-center{align-self:center!important}html[data-netbox-color-mode=dark] .align-self-baseline{align-self:baseline!important}html[data-netbox-color-mode=dark] .align-self-stretch{align-self:stretch!important}html[data-netbox-color-mode=dark] .order-first{order:-1!important}html[data-netbox-color-mode=dark] .order-0{order:0!important}html[data-netbox-color-mode=dark] .order-1{order:1!important}html[data-netbox-color-mode=dark] .order-2{order:2!important}html[data-netbox-color-mode=dark] .order-3{order:3!important}html[data-netbox-color-mode=dark] .order-4{order:4!important}html[data-netbox-color-mode=dark] .order-5{order:5!important}html[data-netbox-color-mode=dark] .order-last{order:6!important}html[data-netbox-color-mode=dark] .m-0{margin:0!important}html[data-netbox-color-mode=dark] .m-1{margin:.25rem!important}html[data-netbox-color-mode=dark] .m-2{margin:.5rem!important}html[data-netbox-color-mode=dark] .m-3{margin:1rem!important}html[data-netbox-color-mode=dark] .m-4{margin:1.5rem!important}html[data-netbox-color-mode=dark] .m-5{margin:3rem!important}html[data-netbox-color-mode=dark] .m-auto{margin:auto!important}html[data-netbox-color-mode=dark] .mx-0{margin-right:0!important;margin-left:0!important}html[data-netbox-color-mode=dark] .mx-1{margin-right:.25rem!important;margin-left:.25rem!important}html[data-netbox-color-mode=dark] .mx-2{margin-right:.5rem!important;margin-left:.5rem!important}html[data-netbox-color-mode=dark] .mx-3{margin-right:1rem!important;margin-left:1rem!important}html[data-netbox-color-mode=dark] .mx-4{margin-right:1.5rem!important;margin-left:1.5rem!important}html[data-netbox-color-mode=dark] .mx-5{margin-right:3rem!important;margin-left:3rem!important}html[data-netbox-color-mode=dark] .mx-auto{margin-right:auto!important;margin-left:auto!important}html[data-netbox-color-mode=dark] .my-0{margin-top:0!important;margin-bottom:0!important}html[data-netbox-color-mode=dark] .my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}html[data-netbox-color-mode=dark] .my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}html[data-netbox-color-mode=dark] .my-3{margin-top:1rem!important;margin-bottom:1rem!important}html[data-netbox-color-mode=dark] .my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}html[data-netbox-color-mode=dark] .my-5{margin-top:3rem!important;margin-bottom:3rem!important}html[data-netbox-color-mode=dark] .my-auto{margin-top:auto!important;margin-bottom:auto!important}html[data-netbox-color-mode=dark] .mt-0{margin-top:0!important}html[data-netbox-color-mode=dark] .mt-1{margin-top:.25rem!important}html[data-netbox-color-mode=dark] .mt-2{margin-top:.5rem!important}html[data-netbox-color-mode=dark] .mt-3{margin-top:1rem!important}html[data-netbox-color-mode=dark] .mt-4{margin-top:1.5rem!important}html[data-netbox-color-mode=dark] .mt-5{margin-top:3rem!important}html[data-netbox-color-mode=dark] .mt-auto{margin-top:auto!important}html[data-netbox-color-mode=dark] .me-0{margin-right:0!important}html[data-netbox-color-mode=dark] .me-1{margin-right:.25rem!important}html[data-netbox-color-mode=dark] .me-2{margin-right:.5rem!important}html[data-netbox-color-mode=dark] .me-3{margin-right:1rem!important}html[data-netbox-color-mode=dark] .me-4{margin-right:1.5rem!important}html[data-netbox-color-mode=dark] .me-5{margin-right:3rem!important}html[data-netbox-color-mode=dark] .me-auto{margin-right:auto!important}html[data-netbox-color-mode=dark] .mb-0{margin-bottom:0!important}html[data-netbox-color-mode=dark] .mb-1{margin-bottom:.25rem!important}html[data-netbox-color-mode=dark] .mb-2{margin-bottom:.5rem!important}html[data-netbox-color-mode=dark] .mb-3{margin-bottom:1rem!important}html[data-netbox-color-mode=dark] .mb-4{margin-bottom:1.5rem!important}html[data-netbox-color-mode=dark] .mb-5{margin-bottom:3rem!important}html[data-netbox-color-mode=dark] .mb-auto{margin-bottom:auto!important}html[data-netbox-color-mode=dark] .ms-0{margin-left:0!important}html[data-netbox-color-mode=dark] .ms-1{margin-left:.25rem!important}html[data-netbox-color-mode=dark] .ms-2{margin-left:.5rem!important}html[data-netbox-color-mode=dark] .ms-3{margin-left:1rem!important}html[data-netbox-color-mode=dark] .ms-4{margin-left:1.5rem!important}html[data-netbox-color-mode=dark] .ms-5{margin-left:3rem!important}html[data-netbox-color-mode=dark] .ms-auto{margin-left:auto!important}html[data-netbox-color-mode=dark] .p-0{padding:0!important}html[data-netbox-color-mode=dark] .p-1{padding:.25rem!important}html[data-netbox-color-mode=dark] .p-2{padding:.5rem!important}html[data-netbox-color-mode=dark] .p-3{padding:1rem!important}html[data-netbox-color-mode=dark] .p-4{padding:1.5rem!important}html[data-netbox-color-mode=dark] .p-5{padding:3rem!important}html[data-netbox-color-mode=dark] .px-0{padding-right:0!important;padding-left:0!important}html[data-netbox-color-mode=dark] .px-1{padding-right:.25rem!important;padding-left:.25rem!important}html[data-netbox-color-mode=dark] .px-2{padding-right:.5rem!important;padding-left:.5rem!important}html[data-netbox-color-mode=dark] .px-3{padding-right:1rem!important;padding-left:1rem!important}html[data-netbox-color-mode=dark] .px-4{padding-right:1.5rem!important;padding-left:1.5rem!important}html[data-netbox-color-mode=dark] .px-5{padding-right:3rem!important;padding-left:3rem!important}html[data-netbox-color-mode=dark] .py-0{padding-top:0!important;padding-bottom:0!important}html[data-netbox-color-mode=dark] .py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}html[data-netbox-color-mode=dark] .py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}html[data-netbox-color-mode=dark] .py-3{padding-top:1rem!important;padding-bottom:1rem!important}html[data-netbox-color-mode=dark] .py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}html[data-netbox-color-mode=dark] .py-5{padding-top:3rem!important;padding-bottom:3rem!important}html[data-netbox-color-mode=dark] .pt-0{padding-top:0!important}html[data-netbox-color-mode=dark] .pt-1{padding-top:.25rem!important}html[data-netbox-color-mode=dark] .pt-2{padding-top:.5rem!important}html[data-netbox-color-mode=dark] .pt-3{padding-top:1rem!important}html[data-netbox-color-mode=dark] .pt-4{padding-top:1.5rem!important}html[data-netbox-color-mode=dark] .pt-5{padding-top:3rem!important}html[data-netbox-color-mode=dark] .pe-0{padding-right:0!important}html[data-netbox-color-mode=dark] .pe-1{padding-right:.25rem!important}html[data-netbox-color-mode=dark] .pe-2{padding-right:.5rem!important}html[data-netbox-color-mode=dark] .pe-3{padding-right:1rem!important}html[data-netbox-color-mode=dark] .pe-4{padding-right:1.5rem!important}html[data-netbox-color-mode=dark] .pe-5{padding-right:3rem!important}html[data-netbox-color-mode=dark] .pb-0{padding-bottom:0!important}html[data-netbox-color-mode=dark] .pb-1{padding-bottom:.25rem!important}html[data-netbox-color-mode=dark] .pb-2{padding-bottom:.5rem!important}html[data-netbox-color-mode=dark] .pb-3{padding-bottom:1rem!important}html[data-netbox-color-mode=dark] .pb-4{padding-bottom:1.5rem!important}html[data-netbox-color-mode=dark] .pb-5{padding-bottom:3rem!important}html[data-netbox-color-mode=dark] .ps-0{padding-left:0!important}html[data-netbox-color-mode=dark] .ps-1{padding-left:.25rem!important}html[data-netbox-color-mode=dark] .ps-2{padding-left:.5rem!important}html[data-netbox-color-mode=dark] .ps-3{padding-left:1rem!important}html[data-netbox-color-mode=dark] .ps-4{padding-left:1.5rem!important}html[data-netbox-color-mode=dark] .ps-5{padding-left:3rem!important}html[data-netbox-color-mode=dark] .font-monospace{font-family:var(--bs-font-monospace)!important}html[data-netbox-color-mode=dark] .fs-1{font-size:calc(1.375rem + 1.5vw)!important}html[data-netbox-color-mode=dark] .fs-2{font-size:calc(1.325rem + .9vw)!important}html[data-netbox-color-mode=dark] .fs-3{font-size:calc(1.3rem + .6vw)!important}html[data-netbox-color-mode=dark] .fs-4{font-size:calc(1.275rem + .3vw)!important}html[data-netbox-color-mode=dark] .fs-5{font-size:1.25rem!important}html[data-netbox-color-mode=dark] .fs-6{font-size:1rem!important}html[data-netbox-color-mode=dark] .fst-italic{font-style:italic!important}html[data-netbox-color-mode=dark] .fst-normal{font-style:normal!important}html[data-netbox-color-mode=dark] .fw-light{font-weight:300!important}html[data-netbox-color-mode=dark] .fw-lighter{font-weight:200!important}html[data-netbox-color-mode=dark] .fw-normal{font-weight:400!important}html[data-netbox-color-mode=dark] .fw-bold{font-weight:700!important}html[data-netbox-color-mode=dark] .fw-bolder{font-weight:800!important}html[data-netbox-color-mode=dark] .lh-1{line-height:1!important}html[data-netbox-color-mode=dark] .lh-sm{line-height:1.25!important}html[data-netbox-color-mode=dark] .lh-base{line-height:1.5!important}html[data-netbox-color-mode=dark] .lh-lg{line-height:1.75!important}html[data-netbox-color-mode=dark] .text-start{text-align:left!important}html[data-netbox-color-mode=dark] .text-end{text-align:right!important}html[data-netbox-color-mode=dark] .text-center{text-align:center!important}html[data-netbox-color-mode=dark] .text-decoration-none{text-decoration:none!important}html[data-netbox-color-mode=dark] .text-decoration-underline{text-decoration:underline!important}html[data-netbox-color-mode=dark] .text-decoration-line-through{text-decoration:line-through!important}html[data-netbox-color-mode=dark] .text-lowercase{text-transform:lowercase!important}html[data-netbox-color-mode=dark] .text-uppercase{text-transform:uppercase!important}html[data-netbox-color-mode=dark] .text-capitalize{text-transform:capitalize!important}html[data-netbox-color-mode=dark] .text-wrap{white-space:normal!important}html[data-netbox-color-mode=dark] .text-nowrap{white-space:nowrap!important}html[data-netbox-color-mode=dark] .text-break{word-wrap:break-word!important;word-break:break-word!important}html[data-netbox-color-mode=dark] .text-primary{color:#6ea8fe!important}html[data-netbox-color-mode=dark] .text-secondary{color:#adb5bd!important}html[data-netbox-color-mode=dark] .text-success{color:#75b798!important}html[data-netbox-color-mode=dark] .text-info{color:#6edff6!important}html[data-netbox-color-mode=dark] .text-warning{color:#ffda6a!important}html[data-netbox-color-mode=dark] .text-danger{color:#ea868f!important}html[data-netbox-color-mode=dark] .text-light{color:#dee2e6!important}html[data-netbox-color-mode=dark] .text-dark{color:#adb5bd!important}html[data-netbox-color-mode=dark] .text-red{color:#ea868f!important}html[data-netbox-color-mode=dark] .text-yellow{color:#ffda6a!important}html[data-netbox-color-mode=dark] .text-green{color:#75b798!important}html[data-netbox-color-mode=dark] .text-blue{color:#6ea8fe!important}html[data-netbox-color-mode=dark] .text-cyan{color:#6edff6!important}html[data-netbox-color-mode=dark] .text-indigo{color:#a370f7!important}html[data-netbox-color-mode=dark] .text-purple{color:#a98eda!important}html[data-netbox-color-mode=dark] .text-pink{color:#e685b5!important}html[data-netbox-color-mode=dark] .text-darker{color:#1b1f22!important}html[data-netbox-color-mode=dark] .text-darkest{color:#171b1d!important}html[data-netbox-color-mode=dark] .text-gray{color:#ced4da!important}html[data-netbox-color-mode=dark] .text-gray-100{color:#f8f9fa!important}html[data-netbox-color-mode=dark] .text-gray-200{color:#e9ecef!important}html[data-netbox-color-mode=dark] .text-gray-300{color:#dee2e6!important}html[data-netbox-color-mode=dark] .text-gray-400{color:#ced4da!important}html[data-netbox-color-mode=dark] .text-gray-500{color:#adb5bd!important}html[data-netbox-color-mode=dark] .text-gray-600{color:#6c757d!important}html[data-netbox-color-mode=dark] .text-gray-700{color:#495057!important}html[data-netbox-color-mode=dark] .text-gray-800{color:#343a40!important}html[data-netbox-color-mode=dark] .text-gray-900{color:#212529!important}html[data-netbox-color-mode=dark] .text-red-100{color:#f8d7da!important}html[data-netbox-color-mode=dark] .text-red-200{color:#f1aeb5!important}html[data-netbox-color-mode=dark] .text-red-300{color:#ea868f!important}html[data-netbox-color-mode=dark] .text-red-400{color:#e35d6a!important}html[data-netbox-color-mode=dark] .text-red-500{color:#dc3545!important}html[data-netbox-color-mode=dark] .text-red-600{color:#b02a37!important}html[data-netbox-color-mode=dark] .text-red-700{color:#842029!important}html[data-netbox-color-mode=dark] .text-red-800{color:#58151c!important}html[data-netbox-color-mode=dark] .text-red-900{color:#2c0b0e!important}html[data-netbox-color-mode=dark] .text-yellow-100{color:#fff3cd!important}html[data-netbox-color-mode=dark] .text-yellow-200{color:#ffe69c!important}html[data-netbox-color-mode=dark] .text-yellow-300{color:#ffda6a!important}html[data-netbox-color-mode=dark] .text-yellow-400{color:#ffcd39!important}html[data-netbox-color-mode=dark] .text-yellow-500{color:#ffc107!important}html[data-netbox-color-mode=dark] .text-yellow-600{color:#cc9a06!important}html[data-netbox-color-mode=dark] .text-yellow-700{color:#997404!important}html[data-netbox-color-mode=dark] .text-yellow-800{color:#664d03!important}html[data-netbox-color-mode=dark] .text-yellow-900{color:#332701!important}html[data-netbox-color-mode=dark] .text-green-100{color:#d1e7dd!important}html[data-netbox-color-mode=dark] .text-green-200{color:#a3cfbb!important}html[data-netbox-color-mode=dark] .text-green-300{color:#75b798!important}html[data-netbox-color-mode=dark] .text-green-400{color:#479f76!important}html[data-netbox-color-mode=dark] .text-green-500{color:#198754!important}html[data-netbox-color-mode=dark] .text-green-600{color:#146c43!important}html[data-netbox-color-mode=dark] .text-green-700{color:#0f5132!important}html[data-netbox-color-mode=dark] .text-green-800{color:#0a3622!important}html[data-netbox-color-mode=dark] .text-green-900{color:#051b11!important}html[data-netbox-color-mode=dark] .text-blue-100{color:#cfe2ff!important}html[data-netbox-color-mode=dark] .text-blue-200{color:#9ec5fe!important}html[data-netbox-color-mode=dark] .text-blue-300{color:#6ea8fe!important}html[data-netbox-color-mode=dark] .text-blue-400{color:#3d8bfd!important}html[data-netbox-color-mode=dark] .text-blue-500{color:#0d6efd!important}html[data-netbox-color-mode=dark] .text-blue-600{color:#0a58ca!important}html[data-netbox-color-mode=dark] .text-blue-700{color:#084298!important}html[data-netbox-color-mode=dark] .text-blue-800{color:#052c65!important}html[data-netbox-color-mode=dark] .text-blue-900{color:#031633!important}html[data-netbox-color-mode=dark] .text-cyan-100{color:#cff4fc!important}html[data-netbox-color-mode=dark] .text-cyan-200{color:#9eeaf9!important}html[data-netbox-color-mode=dark] .text-cyan-300{color:#6edff6!important}html[data-netbox-color-mode=dark] .text-cyan-400{color:#3dd5f3!important}html[data-netbox-color-mode=dark] .text-cyan-500{color:#0dcaf0!important}html[data-netbox-color-mode=dark] .text-cyan-600{color:#0aa2c0!important}html[data-netbox-color-mode=dark] .text-cyan-700{color:#087990!important}html[data-netbox-color-mode=dark] .text-cyan-800{color:#055160!important}html[data-netbox-color-mode=dark] .text-cyan-900{color:#032830!important}html[data-netbox-color-mode=dark] .text-indigo-100{color:#e0cffc!important}html[data-netbox-color-mode=dark] .text-indigo-200{color:#c29ffa!important}html[data-netbox-color-mode=dark] .text-indigo-300{color:#a370f7!important}html[data-netbox-color-mode=dark] .text-indigo-400{color:#8540f5!important}html[data-netbox-color-mode=dark] .text-indigo-500{color:#6610f2!important}html[data-netbox-color-mode=dark] .text-indigo-600{color:#520dc2!important}html[data-netbox-color-mode=dark] .text-indigo-700{color:#3d0a91!important}html[data-netbox-color-mode=dark] .text-indigo-800{color:#290661!important}html[data-netbox-color-mode=dark] .text-indigo-900{color:#140330!important}html[data-netbox-color-mode=dark] .text-purple-100{color:#e2d9f3!important}html[data-netbox-color-mode=dark] .text-purple-200{color:#c5b3e6!important}html[data-netbox-color-mode=dark] .text-purple-300{color:#a98eda!important}html[data-netbox-color-mode=dark] .text-purple-400{color:#8c68cd!important}html[data-netbox-color-mode=dark] .text-purple-500{color:#6f42c1!important}html[data-netbox-color-mode=dark] .text-purple-600{color:#59359a!important}html[data-netbox-color-mode=dark] .text-purple-700{color:#432874!important}html[data-netbox-color-mode=dark] .text-purple-800{color:#2c1a4d!important}html[data-netbox-color-mode=dark] .text-purple-900{color:#160d27!important}html[data-netbox-color-mode=dark] .text-pink-100{color:#f7d6e6!important}html[data-netbox-color-mode=dark] .text-pink-200{color:#efadce!important}html[data-netbox-color-mode=dark] .text-pink-300{color:#e685b5!important}html[data-netbox-color-mode=dark] .text-pink-400{color:#de5c9d!important}html[data-netbox-color-mode=dark] .text-pink-500{color:#d63384!important}html[data-netbox-color-mode=dark] .text-pink-600{color:#ab296a!important}html[data-netbox-color-mode=dark] .text-pink-700{color:#801f4f!important}html[data-netbox-color-mode=dark] .text-pink-800{color:#561435!important}html[data-netbox-color-mode=dark] .text-pink-900{color:#2b0a1a!important}html[data-netbox-color-mode=dark] .text-white{color:#fff!important}html[data-netbox-color-mode=dark] .text-body{color:#fff!important}html[data-netbox-color-mode=dark] .text-muted{color:#ced4da!important}html[data-netbox-color-mode=dark] .text-black-50{color:#00000080!important}html[data-netbox-color-mode=dark] .text-white-50{color:#ffffff80!important}html[data-netbox-color-mode=dark] .text-reset{color:inherit!important}html[data-netbox-color-mode=dark] .bg-primary{background-color:#6ea8fe!important}html[data-netbox-color-mode=dark] .bg-secondary{background-color:#adb5bd!important}html[data-netbox-color-mode=dark] .bg-success{background-color:#75b798!important}html[data-netbox-color-mode=dark] .bg-info{background-color:#6edff6!important}html[data-netbox-color-mode=dark] .bg-warning{background-color:#ffda6a!important}html[data-netbox-color-mode=dark] .bg-danger{background-color:#ea868f!important}html[data-netbox-color-mode=dark] .bg-light{background-color:#dee2e6!important}html[data-netbox-color-mode=dark] .bg-dark{background-color:#adb5bd!important}html[data-netbox-color-mode=dark] .bg-red{background-color:#ea868f!important}html[data-netbox-color-mode=dark] .bg-yellow{background-color:#ffda6a!important}html[data-netbox-color-mode=dark] .bg-green{background-color:#75b798!important}html[data-netbox-color-mode=dark] .bg-blue{background-color:#6ea8fe!important}html[data-netbox-color-mode=dark] .bg-cyan{background-color:#6edff6!important}html[data-netbox-color-mode=dark] .bg-indigo{background-color:#a370f7!important}html[data-netbox-color-mode=dark] .bg-purple{background-color:#a98eda!important}html[data-netbox-color-mode=dark] .bg-pink{background-color:#e685b5!important}html[data-netbox-color-mode=dark] .bg-darker{background-color:#1b1f22!important}html[data-netbox-color-mode=dark] .bg-darkest{background-color:#171b1d!important}html[data-netbox-color-mode=dark] .bg-gray{background-color:#ced4da!important}html[data-netbox-color-mode=dark] .bg-gray-100{background-color:#f8f9fa!important}html[data-netbox-color-mode=dark] .bg-gray-200{background-color:#e9ecef!important}html[data-netbox-color-mode=dark] .bg-gray-300{background-color:#dee2e6!important}html[data-netbox-color-mode=dark] .bg-gray-400{background-color:#ced4da!important}html[data-netbox-color-mode=dark] .bg-gray-500{background-color:#adb5bd!important}html[data-netbox-color-mode=dark] .bg-gray-600{background-color:#6c757d!important}html[data-netbox-color-mode=dark] .bg-gray-700{background-color:#495057!important}html[data-netbox-color-mode=dark] .bg-gray-800{background-color:#343a40!important}html[data-netbox-color-mode=dark] .bg-gray-900{background-color:#212529!important}html[data-netbox-color-mode=dark] .bg-red-100{background-color:#f8d7da!important}html[data-netbox-color-mode=dark] .bg-red-200{background-color:#f1aeb5!important}html[data-netbox-color-mode=dark] .bg-red-300{background-color:#ea868f!important}html[data-netbox-color-mode=dark] .bg-red-400{background-color:#e35d6a!important}html[data-netbox-color-mode=dark] .bg-red-500{background-color:#dc3545!important}html[data-netbox-color-mode=dark] .bg-red-600{background-color:#b02a37!important}html[data-netbox-color-mode=dark] .bg-red-700{background-color:#842029!important}html[data-netbox-color-mode=dark] .bg-red-800{background-color:#58151c!important}html[data-netbox-color-mode=dark] .bg-red-900{background-color:#2c0b0e!important}html[data-netbox-color-mode=dark] .bg-yellow-100{background-color:#fff3cd!important}html[data-netbox-color-mode=dark] .bg-yellow-200{background-color:#ffe69c!important}html[data-netbox-color-mode=dark] .bg-yellow-300{background-color:#ffda6a!important}html[data-netbox-color-mode=dark] .bg-yellow-400{background-color:#ffcd39!important}html[data-netbox-color-mode=dark] .bg-yellow-500{background-color:#ffc107!important}html[data-netbox-color-mode=dark] .bg-yellow-600{background-color:#cc9a06!important}html[data-netbox-color-mode=dark] .bg-yellow-700{background-color:#997404!important}html[data-netbox-color-mode=dark] .bg-yellow-800{background-color:#664d03!important}html[data-netbox-color-mode=dark] .bg-yellow-900{background-color:#332701!important}html[data-netbox-color-mode=dark] .bg-green-100{background-color:#d1e7dd!important}html[data-netbox-color-mode=dark] .bg-green-200{background-color:#a3cfbb!important}html[data-netbox-color-mode=dark] .bg-green-300{background-color:#75b798!important}html[data-netbox-color-mode=dark] .bg-green-400{background-color:#479f76!important}html[data-netbox-color-mode=dark] .bg-green-500{background-color:#198754!important}html[data-netbox-color-mode=dark] .bg-green-600{background-color:#146c43!important}html[data-netbox-color-mode=dark] .bg-green-700{background-color:#0f5132!important}html[data-netbox-color-mode=dark] .bg-green-800{background-color:#0a3622!important}html[data-netbox-color-mode=dark] .bg-green-900{background-color:#051b11!important}html[data-netbox-color-mode=dark] .bg-blue-100{background-color:#cfe2ff!important}html[data-netbox-color-mode=dark] .bg-blue-200{background-color:#9ec5fe!important}html[data-netbox-color-mode=dark] .bg-blue-300{background-color:#6ea8fe!important}html[data-netbox-color-mode=dark] .bg-blue-400{background-color:#3d8bfd!important}html[data-netbox-color-mode=dark] .bg-blue-500{background-color:#0d6efd!important}html[data-netbox-color-mode=dark] .bg-blue-600{background-color:#0a58ca!important}html[data-netbox-color-mode=dark] .bg-blue-700{background-color:#084298!important}html[data-netbox-color-mode=dark] .bg-blue-800{background-color:#052c65!important}html[data-netbox-color-mode=dark] .bg-blue-900{background-color:#031633!important}html[data-netbox-color-mode=dark] .bg-cyan-100{background-color:#cff4fc!important}html[data-netbox-color-mode=dark] .bg-cyan-200{background-color:#9eeaf9!important}html[data-netbox-color-mode=dark] .bg-cyan-300{background-color:#6edff6!important}html[data-netbox-color-mode=dark] .bg-cyan-400{background-color:#3dd5f3!important}html[data-netbox-color-mode=dark] .bg-cyan-500{background-color:#0dcaf0!important}html[data-netbox-color-mode=dark] .bg-cyan-600{background-color:#0aa2c0!important}html[data-netbox-color-mode=dark] .bg-cyan-700{background-color:#087990!important}html[data-netbox-color-mode=dark] .bg-cyan-800{background-color:#055160!important}html[data-netbox-color-mode=dark] .bg-cyan-900{background-color:#032830!important}html[data-netbox-color-mode=dark] .bg-indigo-100{background-color:#e0cffc!important}html[data-netbox-color-mode=dark] .bg-indigo-200{background-color:#c29ffa!important}html[data-netbox-color-mode=dark] .bg-indigo-300{background-color:#a370f7!important}html[data-netbox-color-mode=dark] .bg-indigo-400{background-color:#8540f5!important}html[data-netbox-color-mode=dark] .bg-indigo-500{background-color:#6610f2!important}html[data-netbox-color-mode=dark] .bg-indigo-600{background-color:#520dc2!important}html[data-netbox-color-mode=dark] .bg-indigo-700{background-color:#3d0a91!important}html[data-netbox-color-mode=dark] .bg-indigo-800{background-color:#290661!important}html[data-netbox-color-mode=dark] .bg-indigo-900{background-color:#140330!important}html[data-netbox-color-mode=dark] .bg-purple-100{background-color:#e2d9f3!important}html[data-netbox-color-mode=dark] .bg-purple-200{background-color:#c5b3e6!important}html[data-netbox-color-mode=dark] .bg-purple-300{background-color:#a98eda!important}html[data-netbox-color-mode=dark] .bg-purple-400{background-color:#8c68cd!important}html[data-netbox-color-mode=dark] .bg-purple-500{background-color:#6f42c1!important}html[data-netbox-color-mode=dark] .bg-purple-600{background-color:#59359a!important}html[data-netbox-color-mode=dark] .bg-purple-700{background-color:#432874!important}html[data-netbox-color-mode=dark] .bg-purple-800{background-color:#2c1a4d!important}html[data-netbox-color-mode=dark] .bg-purple-900{background-color:#160d27!important}html[data-netbox-color-mode=dark] .bg-pink-100{background-color:#f7d6e6!important}html[data-netbox-color-mode=dark] .bg-pink-200{background-color:#efadce!important}html[data-netbox-color-mode=dark] .bg-pink-300{background-color:#e685b5!important}html[data-netbox-color-mode=dark] .bg-pink-400{background-color:#de5c9d!important}html[data-netbox-color-mode=dark] .bg-pink-500{background-color:#d63384!important}html[data-netbox-color-mode=dark] .bg-pink-600{background-color:#ab296a!important}html[data-netbox-color-mode=dark] .bg-pink-700{background-color:#801f4f!important}html[data-netbox-color-mode=dark] .bg-pink-800{background-color:#561435!important}html[data-netbox-color-mode=dark] .bg-pink-900{background-color:#2b0a1a!important}html[data-netbox-color-mode=dark] .bg-body{background-color:#1b1f22!important}html[data-netbox-color-mode=dark] .bg-white{background-color:#fff!important}html[data-netbox-color-mode=dark] .bg-transparent{background-color:transparent!important}html[data-netbox-color-mode=dark] .bg-gradient{background-image:var(--bs-gradient)!important}html[data-netbox-color-mode=dark] .user-select-all{user-select:all!important}html[data-netbox-color-mode=dark] .user-select-auto{user-select:auto!important}html[data-netbox-color-mode=dark] .user-select-none{user-select:none!important}html[data-netbox-color-mode=dark] .pe-none{pointer-events:none!important}html[data-netbox-color-mode=dark] .pe-auto{pointer-events:auto!important}html[data-netbox-color-mode=dark] .rounded{border-radius:.375rem!important}html[data-netbox-color-mode=dark] .rounded-0{border-radius:0!important}html[data-netbox-color-mode=dark] .rounded-1{border-radius:.375rem!important}html[data-netbox-color-mode=dark] .rounded-2{border-radius:.375rem!important}html[data-netbox-color-mode=dark] .rounded-3{border-radius:.75rem!important}html[data-netbox-color-mode=dark] .rounded-circle{border-radius:50%!important}html[data-netbox-color-mode=dark] .rounded-pill{border-radius:50rem!important}html[data-netbox-color-mode=dark] .rounded-top{border-top-left-radius:.375rem!important;border-top-right-radius:.375rem!important}html[data-netbox-color-mode=dark] .rounded-end{border-top-right-radius:.375rem!important;border-bottom-right-radius:.375rem!important}html[data-netbox-color-mode=dark] .rounded-bottom{border-bottom-right-radius:.375rem!important;border-bottom-left-radius:.375rem!important}html[data-netbox-color-mode=dark] .rounded-start{border-bottom-left-radius:.375rem!important;border-top-left-radius:.375rem!important}html[data-netbox-color-mode=dark] .visible{visibility:visible!important}html[data-netbox-color-mode=dark] .invisible{visibility:hidden!important}@media (min-width: 576px){html[data-netbox-color-mode=dark] .float-sm-start{float:left!important}html[data-netbox-color-mode=dark] .float-sm-end{float:right!important}html[data-netbox-color-mode=dark] .float-sm-none{float:none!important}html[data-netbox-color-mode=dark] .d-sm-inline{display:inline!important}html[data-netbox-color-mode=dark] .d-sm-inline-block{display:inline-block!important}html[data-netbox-color-mode=dark] .d-sm-block{display:block!important}html[data-netbox-color-mode=dark] .d-sm-grid{display:grid!important}html[data-netbox-color-mode=dark] .d-sm-table{display:table!important}html[data-netbox-color-mode=dark] .d-sm-table-row{display:table-row!important}html[data-netbox-color-mode=dark] .d-sm-table-cell{display:table-cell!important}html[data-netbox-color-mode=dark] .d-sm-flex{display:flex!important}html[data-netbox-color-mode=dark] .d-sm-inline-flex{display:inline-flex!important}html[data-netbox-color-mode=dark] .d-sm-none{display:none!important}html[data-netbox-color-mode=dark] .flex-sm-fill{flex:1 1 auto!important}html[data-netbox-color-mode=dark] .flex-sm-row{flex-direction:row!important}html[data-netbox-color-mode=dark] .flex-sm-column{flex-direction:column!important}html[data-netbox-color-mode=dark] .flex-sm-row-reverse{flex-direction:row-reverse!important}html[data-netbox-color-mode=dark] .flex-sm-column-reverse{flex-direction:column-reverse!important}html[data-netbox-color-mode=dark] .flex-sm-grow-0{flex-grow:0!important}html[data-netbox-color-mode=dark] .flex-sm-grow-1{flex-grow:1!important}html[data-netbox-color-mode=dark] .flex-sm-shrink-0{flex-shrink:0!important}html[data-netbox-color-mode=dark] .flex-sm-shrink-1{flex-shrink:1!important}html[data-netbox-color-mode=dark] .flex-sm-wrap{flex-wrap:wrap!important}html[data-netbox-color-mode=dark] .flex-sm-nowrap{flex-wrap:nowrap!important}html[data-netbox-color-mode=dark] .flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}html[data-netbox-color-mode=dark] .gap-sm-0{gap:0!important}html[data-netbox-color-mode=dark] .gap-sm-1{gap:.25rem!important}html[data-netbox-color-mode=dark] .gap-sm-2{gap:.5rem!important}html[data-netbox-color-mode=dark] .gap-sm-3{gap:1rem!important}html[data-netbox-color-mode=dark] .gap-sm-4{gap:1.5rem!important}html[data-netbox-color-mode=dark] .gap-sm-5{gap:3rem!important}html[data-netbox-color-mode=dark] .justify-content-sm-start{justify-content:flex-start!important}html[data-netbox-color-mode=dark] .justify-content-sm-end{justify-content:flex-end!important}html[data-netbox-color-mode=dark] .justify-content-sm-center{justify-content:center!important}html[data-netbox-color-mode=dark] .justify-content-sm-between{justify-content:space-between!important}html[data-netbox-color-mode=dark] .justify-content-sm-around{justify-content:space-around!important}html[data-netbox-color-mode=dark] .justify-content-sm-evenly{justify-content:space-evenly!important}html[data-netbox-color-mode=dark] .align-items-sm-start{align-items:flex-start!important}html[data-netbox-color-mode=dark] .align-items-sm-end{align-items:flex-end!important}html[data-netbox-color-mode=dark] .align-items-sm-center{align-items:center!important}html[data-netbox-color-mode=dark] .align-items-sm-baseline{align-items:baseline!important}html[data-netbox-color-mode=dark] .align-items-sm-stretch{align-items:stretch!important}html[data-netbox-color-mode=dark] .align-content-sm-start{align-content:flex-start!important}html[data-netbox-color-mode=dark] .align-content-sm-end{align-content:flex-end!important}html[data-netbox-color-mode=dark] .align-content-sm-center{align-content:center!important}html[data-netbox-color-mode=dark] .align-content-sm-between{align-content:space-between!important}html[data-netbox-color-mode=dark] .align-content-sm-around{align-content:space-around!important}html[data-netbox-color-mode=dark] .align-content-sm-stretch{align-content:stretch!important}html[data-netbox-color-mode=dark] .align-self-sm-auto{align-self:auto!important}html[data-netbox-color-mode=dark] .align-self-sm-start{align-self:flex-start!important}html[data-netbox-color-mode=dark] .align-self-sm-end{align-self:flex-end!important}html[data-netbox-color-mode=dark] .align-self-sm-center{align-self:center!important}html[data-netbox-color-mode=dark] .align-self-sm-baseline{align-self:baseline!important}html[data-netbox-color-mode=dark] .align-self-sm-stretch{align-self:stretch!important}html[data-netbox-color-mode=dark] .order-sm-first{order:-1!important}html[data-netbox-color-mode=dark] .order-sm-0{order:0!important}html[data-netbox-color-mode=dark] .order-sm-1{order:1!important}html[data-netbox-color-mode=dark] .order-sm-2{order:2!important}html[data-netbox-color-mode=dark] .order-sm-3{order:3!important}html[data-netbox-color-mode=dark] .order-sm-4{order:4!important}html[data-netbox-color-mode=dark] .order-sm-5{order:5!important}html[data-netbox-color-mode=dark] .order-sm-last{order:6!important}html[data-netbox-color-mode=dark] .m-sm-0{margin:0!important}html[data-netbox-color-mode=dark] .m-sm-1{margin:.25rem!important}html[data-netbox-color-mode=dark] .m-sm-2{margin:.5rem!important}html[data-netbox-color-mode=dark] .m-sm-3{margin:1rem!important}html[data-netbox-color-mode=dark] .m-sm-4{margin:1.5rem!important}html[data-netbox-color-mode=dark] .m-sm-5{margin:3rem!important}html[data-netbox-color-mode=dark] .m-sm-auto{margin:auto!important}html[data-netbox-color-mode=dark] .mx-sm-0{margin-right:0!important;margin-left:0!important}html[data-netbox-color-mode=dark] .mx-sm-1{margin-right:.25rem!important;margin-left:.25rem!important}html[data-netbox-color-mode=dark] .mx-sm-2{margin-right:.5rem!important;margin-left:.5rem!important}html[data-netbox-color-mode=dark] .mx-sm-3{margin-right:1rem!important;margin-left:1rem!important}html[data-netbox-color-mode=dark] .mx-sm-4{margin-right:1.5rem!important;margin-left:1.5rem!important}html[data-netbox-color-mode=dark] .mx-sm-5{margin-right:3rem!important;margin-left:3rem!important}html[data-netbox-color-mode=dark] .mx-sm-auto{margin-right:auto!important;margin-left:auto!important}html[data-netbox-color-mode=dark] .my-sm-0{margin-top:0!important;margin-bottom:0!important}html[data-netbox-color-mode=dark] .my-sm-1{margin-top:.25rem!important;margin-bottom:.25rem!important}html[data-netbox-color-mode=dark] .my-sm-2{margin-top:.5rem!important;margin-bottom:.5rem!important}html[data-netbox-color-mode=dark] .my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important}html[data-netbox-color-mode=dark] .my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}html[data-netbox-color-mode=dark] .my-sm-5{margin-top:3rem!important;margin-bottom:3rem!important}html[data-netbox-color-mode=dark] .my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}html[data-netbox-color-mode=dark] .mt-sm-0{margin-top:0!important}html[data-netbox-color-mode=dark] .mt-sm-1{margin-top:.25rem!important}html[data-netbox-color-mode=dark] .mt-sm-2{margin-top:.5rem!important}html[data-netbox-color-mode=dark] .mt-sm-3{margin-top:1rem!important}html[data-netbox-color-mode=dark] .mt-sm-4{margin-top:1.5rem!important}html[data-netbox-color-mode=dark] .mt-sm-5{margin-top:3rem!important}html[data-netbox-color-mode=dark] .mt-sm-auto{margin-top:auto!important}html[data-netbox-color-mode=dark] .me-sm-0{margin-right:0!important}html[data-netbox-color-mode=dark] .me-sm-1{margin-right:.25rem!important}html[data-netbox-color-mode=dark] .me-sm-2{margin-right:.5rem!important}html[data-netbox-color-mode=dark] .me-sm-3{margin-right:1rem!important}html[data-netbox-color-mode=dark] .me-sm-4{margin-right:1.5rem!important}html[data-netbox-color-mode=dark] .me-sm-5{margin-right:3rem!important}html[data-netbox-color-mode=dark] .me-sm-auto{margin-right:auto!important}html[data-netbox-color-mode=dark] .mb-sm-0{margin-bottom:0!important}html[data-netbox-color-mode=dark] .mb-sm-1{margin-bottom:.25rem!important}html[data-netbox-color-mode=dark] .mb-sm-2{margin-bottom:.5rem!important}html[data-netbox-color-mode=dark] .mb-sm-3{margin-bottom:1rem!important}html[data-netbox-color-mode=dark] .mb-sm-4{margin-bottom:1.5rem!important}html[data-netbox-color-mode=dark] .mb-sm-5{margin-bottom:3rem!important}html[data-netbox-color-mode=dark] .mb-sm-auto{margin-bottom:auto!important}html[data-netbox-color-mode=dark] .ms-sm-0{margin-left:0!important}html[data-netbox-color-mode=dark] .ms-sm-1{margin-left:.25rem!important}html[data-netbox-color-mode=dark] .ms-sm-2{margin-left:.5rem!important}html[data-netbox-color-mode=dark] .ms-sm-3{margin-left:1rem!important}html[data-netbox-color-mode=dark] .ms-sm-4{margin-left:1.5rem!important}html[data-netbox-color-mode=dark] .ms-sm-5{margin-left:3rem!important}html[data-netbox-color-mode=dark] .ms-sm-auto{margin-left:auto!important}html[data-netbox-color-mode=dark] .p-sm-0{padding:0!important}html[data-netbox-color-mode=dark] .p-sm-1{padding:.25rem!important}html[data-netbox-color-mode=dark] .p-sm-2{padding:.5rem!important}html[data-netbox-color-mode=dark] .p-sm-3{padding:1rem!important}html[data-netbox-color-mode=dark] .p-sm-4{padding:1.5rem!important}html[data-netbox-color-mode=dark] .p-sm-5{padding:3rem!important}html[data-netbox-color-mode=dark] .px-sm-0{padding-right:0!important;padding-left:0!important}html[data-netbox-color-mode=dark] .px-sm-1{padding-right:.25rem!important;padding-left:.25rem!important}html[data-netbox-color-mode=dark] .px-sm-2{padding-right:.5rem!important;padding-left:.5rem!important}html[data-netbox-color-mode=dark] .px-sm-3{padding-right:1rem!important;padding-left:1rem!important}html[data-netbox-color-mode=dark] .px-sm-4{padding-right:1.5rem!important;padding-left:1.5rem!important}html[data-netbox-color-mode=dark] .px-sm-5{padding-right:3rem!important;padding-left:3rem!important}html[data-netbox-color-mode=dark] .py-sm-0{padding-top:0!important;padding-bottom:0!important}html[data-netbox-color-mode=dark] .py-sm-1{padding-top:.25rem!important;padding-bottom:.25rem!important}html[data-netbox-color-mode=dark] .py-sm-2{padding-top:.5rem!important;padding-bottom:.5rem!important}html[data-netbox-color-mode=dark] .py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important}html[data-netbox-color-mode=dark] .py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}html[data-netbox-color-mode=dark] .py-sm-5{padding-top:3rem!important;padding-bottom:3rem!important}html[data-netbox-color-mode=dark] .pt-sm-0{padding-top:0!important}html[data-netbox-color-mode=dark] .pt-sm-1{padding-top:.25rem!important}html[data-netbox-color-mode=dark] .pt-sm-2{padding-top:.5rem!important}html[data-netbox-color-mode=dark] .pt-sm-3{padding-top:1rem!important}html[data-netbox-color-mode=dark] .pt-sm-4{padding-top:1.5rem!important}html[data-netbox-color-mode=dark] .pt-sm-5{padding-top:3rem!important}html[data-netbox-color-mode=dark] .pe-sm-0{padding-right:0!important}html[data-netbox-color-mode=dark] .pe-sm-1{padding-right:.25rem!important}html[data-netbox-color-mode=dark] .pe-sm-2{padding-right:.5rem!important}html[data-netbox-color-mode=dark] .pe-sm-3{padding-right:1rem!important}html[data-netbox-color-mode=dark] .pe-sm-4{padding-right:1.5rem!important}html[data-netbox-color-mode=dark] .pe-sm-5{padding-right:3rem!important}html[data-netbox-color-mode=dark] .pb-sm-0{padding-bottom:0!important}html[data-netbox-color-mode=dark] .pb-sm-1{padding-bottom:.25rem!important}html[data-netbox-color-mode=dark] .pb-sm-2{padding-bottom:.5rem!important}html[data-netbox-color-mode=dark] .pb-sm-3{padding-bottom:1rem!important}html[data-netbox-color-mode=dark] .pb-sm-4{padding-bottom:1.5rem!important}html[data-netbox-color-mode=dark] .pb-sm-5{padding-bottom:3rem!important}html[data-netbox-color-mode=dark] .ps-sm-0{padding-left:0!important}html[data-netbox-color-mode=dark] .ps-sm-1{padding-left:.25rem!important}html[data-netbox-color-mode=dark] .ps-sm-2{padding-left:.5rem!important}html[data-netbox-color-mode=dark] .ps-sm-3{padding-left:1rem!important}html[data-netbox-color-mode=dark] .ps-sm-4{padding-left:1.5rem!important}html[data-netbox-color-mode=dark] .ps-sm-5{padding-left:3rem!important}html[data-netbox-color-mode=dark] .text-sm-start{text-align:left!important}html[data-netbox-color-mode=dark] .text-sm-end{text-align:right!important}html[data-netbox-color-mode=dark] .text-sm-center{text-align:center!important}}@media (min-width: 768px){html[data-netbox-color-mode=dark] .float-md-start{float:left!important}html[data-netbox-color-mode=dark] .float-md-end{float:right!important}html[data-netbox-color-mode=dark] .float-md-none{float:none!important}html[data-netbox-color-mode=dark] .d-md-inline{display:inline!important}html[data-netbox-color-mode=dark] .d-md-inline-block{display:inline-block!important}html[data-netbox-color-mode=dark] .d-md-block{display:block!important}html[data-netbox-color-mode=dark] .d-md-grid{display:grid!important}html[data-netbox-color-mode=dark] .d-md-table{display:table!important}html[data-netbox-color-mode=dark] .d-md-table-row{display:table-row!important}html[data-netbox-color-mode=dark] .d-md-table-cell{display:table-cell!important}html[data-netbox-color-mode=dark] .d-md-flex{display:flex!important}html[data-netbox-color-mode=dark] .d-md-inline-flex{display:inline-flex!important}html[data-netbox-color-mode=dark] .d-md-none{display:none!important}html[data-netbox-color-mode=dark] .flex-md-fill{flex:1 1 auto!important}html[data-netbox-color-mode=dark] .flex-md-row{flex-direction:row!important}html[data-netbox-color-mode=dark] .flex-md-column{flex-direction:column!important}html[data-netbox-color-mode=dark] .flex-md-row-reverse{flex-direction:row-reverse!important}html[data-netbox-color-mode=dark] .flex-md-column-reverse{flex-direction:column-reverse!important}html[data-netbox-color-mode=dark] .flex-md-grow-0{flex-grow:0!important}html[data-netbox-color-mode=dark] .flex-md-grow-1{flex-grow:1!important}html[data-netbox-color-mode=dark] .flex-md-shrink-0{flex-shrink:0!important}html[data-netbox-color-mode=dark] .flex-md-shrink-1{flex-shrink:1!important}html[data-netbox-color-mode=dark] .flex-md-wrap{flex-wrap:wrap!important}html[data-netbox-color-mode=dark] .flex-md-nowrap{flex-wrap:nowrap!important}html[data-netbox-color-mode=dark] .flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}html[data-netbox-color-mode=dark] .gap-md-0{gap:0!important}html[data-netbox-color-mode=dark] .gap-md-1{gap:.25rem!important}html[data-netbox-color-mode=dark] .gap-md-2{gap:.5rem!important}html[data-netbox-color-mode=dark] .gap-md-3{gap:1rem!important}html[data-netbox-color-mode=dark] .gap-md-4{gap:1.5rem!important}html[data-netbox-color-mode=dark] .gap-md-5{gap:3rem!important}html[data-netbox-color-mode=dark] .justify-content-md-start{justify-content:flex-start!important}html[data-netbox-color-mode=dark] .justify-content-md-end{justify-content:flex-end!important}html[data-netbox-color-mode=dark] .justify-content-md-center{justify-content:center!important}html[data-netbox-color-mode=dark] .justify-content-md-between{justify-content:space-between!important}html[data-netbox-color-mode=dark] .justify-content-md-around{justify-content:space-around!important}html[data-netbox-color-mode=dark] .justify-content-md-evenly{justify-content:space-evenly!important}html[data-netbox-color-mode=dark] .align-items-md-start{align-items:flex-start!important}html[data-netbox-color-mode=dark] .align-items-md-end{align-items:flex-end!important}html[data-netbox-color-mode=dark] .align-items-md-center{align-items:center!important}html[data-netbox-color-mode=dark] .align-items-md-baseline{align-items:baseline!important}html[data-netbox-color-mode=dark] .align-items-md-stretch{align-items:stretch!important}html[data-netbox-color-mode=dark] .align-content-md-start{align-content:flex-start!important}html[data-netbox-color-mode=dark] .align-content-md-end{align-content:flex-end!important}html[data-netbox-color-mode=dark] .align-content-md-center{align-content:center!important}html[data-netbox-color-mode=dark] .align-content-md-between{align-content:space-between!important}html[data-netbox-color-mode=dark] .align-content-md-around{align-content:space-around!important}html[data-netbox-color-mode=dark] .align-content-md-stretch{align-content:stretch!important}html[data-netbox-color-mode=dark] .align-self-md-auto{align-self:auto!important}html[data-netbox-color-mode=dark] .align-self-md-start{align-self:flex-start!important}html[data-netbox-color-mode=dark] .align-self-md-end{align-self:flex-end!important}html[data-netbox-color-mode=dark] .align-self-md-center{align-self:center!important}html[data-netbox-color-mode=dark] .align-self-md-baseline{align-self:baseline!important}html[data-netbox-color-mode=dark] .align-self-md-stretch{align-self:stretch!important}html[data-netbox-color-mode=dark] .order-md-first{order:-1!important}html[data-netbox-color-mode=dark] .order-md-0{order:0!important}html[data-netbox-color-mode=dark] .order-md-1{order:1!important}html[data-netbox-color-mode=dark] .order-md-2{order:2!important}html[data-netbox-color-mode=dark] .order-md-3{order:3!important}html[data-netbox-color-mode=dark] .order-md-4{order:4!important}html[data-netbox-color-mode=dark] .order-md-5{order:5!important}html[data-netbox-color-mode=dark] .order-md-last{order:6!important}html[data-netbox-color-mode=dark] .m-md-0{margin:0!important}html[data-netbox-color-mode=dark] .m-md-1{margin:.25rem!important}html[data-netbox-color-mode=dark] .m-md-2{margin:.5rem!important}html[data-netbox-color-mode=dark] .m-md-3{margin:1rem!important}html[data-netbox-color-mode=dark] .m-md-4{margin:1.5rem!important}html[data-netbox-color-mode=dark] .m-md-5{margin:3rem!important}html[data-netbox-color-mode=dark] .m-md-auto{margin:auto!important}html[data-netbox-color-mode=dark] .mx-md-0{margin-right:0!important;margin-left:0!important}html[data-netbox-color-mode=dark] .mx-md-1{margin-right:.25rem!important;margin-left:.25rem!important}html[data-netbox-color-mode=dark] .mx-md-2{margin-right:.5rem!important;margin-left:.5rem!important}html[data-netbox-color-mode=dark] .mx-md-3{margin-right:1rem!important;margin-left:1rem!important}html[data-netbox-color-mode=dark] .mx-md-4{margin-right:1.5rem!important;margin-left:1.5rem!important}html[data-netbox-color-mode=dark] .mx-md-5{margin-right:3rem!important;margin-left:3rem!important}html[data-netbox-color-mode=dark] .mx-md-auto{margin-right:auto!important;margin-left:auto!important}html[data-netbox-color-mode=dark] .my-md-0{margin-top:0!important;margin-bottom:0!important}html[data-netbox-color-mode=dark] .my-md-1{margin-top:.25rem!important;margin-bottom:.25rem!important}html[data-netbox-color-mode=dark] .my-md-2{margin-top:.5rem!important;margin-bottom:.5rem!important}html[data-netbox-color-mode=dark] .my-md-3{margin-top:1rem!important;margin-bottom:1rem!important}html[data-netbox-color-mode=dark] .my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}html[data-netbox-color-mode=dark] .my-md-5{margin-top:3rem!important;margin-bottom:3rem!important}html[data-netbox-color-mode=dark] .my-md-auto{margin-top:auto!important;margin-bottom:auto!important}html[data-netbox-color-mode=dark] .mt-md-0{margin-top:0!important}html[data-netbox-color-mode=dark] .mt-md-1{margin-top:.25rem!important}html[data-netbox-color-mode=dark] .mt-md-2{margin-top:.5rem!important}html[data-netbox-color-mode=dark] .mt-md-3{margin-top:1rem!important}html[data-netbox-color-mode=dark] .mt-md-4{margin-top:1.5rem!important}html[data-netbox-color-mode=dark] .mt-md-5{margin-top:3rem!important}html[data-netbox-color-mode=dark] .mt-md-auto{margin-top:auto!important}html[data-netbox-color-mode=dark] .me-md-0{margin-right:0!important}html[data-netbox-color-mode=dark] .me-md-1{margin-right:.25rem!important}html[data-netbox-color-mode=dark] .me-md-2{margin-right:.5rem!important}html[data-netbox-color-mode=dark] .me-md-3{margin-right:1rem!important}html[data-netbox-color-mode=dark] .me-md-4{margin-right:1.5rem!important}html[data-netbox-color-mode=dark] .me-md-5{margin-right:3rem!important}html[data-netbox-color-mode=dark] .me-md-auto{margin-right:auto!important}html[data-netbox-color-mode=dark] .mb-md-0{margin-bottom:0!important}html[data-netbox-color-mode=dark] .mb-md-1{margin-bottom:.25rem!important}html[data-netbox-color-mode=dark] .mb-md-2{margin-bottom:.5rem!important}html[data-netbox-color-mode=dark] .mb-md-3{margin-bottom:1rem!important}html[data-netbox-color-mode=dark] .mb-md-4{margin-bottom:1.5rem!important}html[data-netbox-color-mode=dark] .mb-md-5{margin-bottom:3rem!important}html[data-netbox-color-mode=dark] .mb-md-auto{margin-bottom:auto!important}html[data-netbox-color-mode=dark] .ms-md-0{margin-left:0!important}html[data-netbox-color-mode=dark] .ms-md-1{margin-left:.25rem!important}html[data-netbox-color-mode=dark] .ms-md-2{margin-left:.5rem!important}html[data-netbox-color-mode=dark] .ms-md-3{margin-left:1rem!important}html[data-netbox-color-mode=dark] .ms-md-4{margin-left:1.5rem!important}html[data-netbox-color-mode=dark] .ms-md-5{margin-left:3rem!important}html[data-netbox-color-mode=dark] .ms-md-auto{margin-left:auto!important}html[data-netbox-color-mode=dark] .p-md-0{padding:0!important}html[data-netbox-color-mode=dark] .p-md-1{padding:.25rem!important}html[data-netbox-color-mode=dark] .p-md-2{padding:.5rem!important}html[data-netbox-color-mode=dark] .p-md-3{padding:1rem!important}html[data-netbox-color-mode=dark] .p-md-4{padding:1.5rem!important}html[data-netbox-color-mode=dark] .p-md-5{padding:3rem!important}html[data-netbox-color-mode=dark] .px-md-0{padding-right:0!important;padding-left:0!important}html[data-netbox-color-mode=dark] .px-md-1{padding-right:.25rem!important;padding-left:.25rem!important}html[data-netbox-color-mode=dark] .px-md-2{padding-right:.5rem!important;padding-left:.5rem!important}html[data-netbox-color-mode=dark] .px-md-3{padding-right:1rem!important;padding-left:1rem!important}html[data-netbox-color-mode=dark] .px-md-4{padding-right:1.5rem!important;padding-left:1.5rem!important}html[data-netbox-color-mode=dark] .px-md-5{padding-right:3rem!important;padding-left:3rem!important}html[data-netbox-color-mode=dark] .py-md-0{padding-top:0!important;padding-bottom:0!important}html[data-netbox-color-mode=dark] .py-md-1{padding-top:.25rem!important;padding-bottom:.25rem!important}html[data-netbox-color-mode=dark] .py-md-2{padding-top:.5rem!important;padding-bottom:.5rem!important}html[data-netbox-color-mode=dark] .py-md-3{padding-top:1rem!important;padding-bottom:1rem!important}html[data-netbox-color-mode=dark] .py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}html[data-netbox-color-mode=dark] .py-md-5{padding-top:3rem!important;padding-bottom:3rem!important}html[data-netbox-color-mode=dark] .pt-md-0{padding-top:0!important}html[data-netbox-color-mode=dark] .pt-md-1{padding-top:.25rem!important}html[data-netbox-color-mode=dark] .pt-md-2{padding-top:.5rem!important}html[data-netbox-color-mode=dark] .pt-md-3{padding-top:1rem!important}html[data-netbox-color-mode=dark] .pt-md-4{padding-top:1.5rem!important}html[data-netbox-color-mode=dark] .pt-md-5{padding-top:3rem!important}html[data-netbox-color-mode=dark] .pe-md-0{padding-right:0!important}html[data-netbox-color-mode=dark] .pe-md-1{padding-right:.25rem!important}html[data-netbox-color-mode=dark] .pe-md-2{padding-right:.5rem!important}html[data-netbox-color-mode=dark] .pe-md-3{padding-right:1rem!important}html[data-netbox-color-mode=dark] .pe-md-4{padding-right:1.5rem!important}html[data-netbox-color-mode=dark] .pe-md-5{padding-right:3rem!important}html[data-netbox-color-mode=dark] .pb-md-0{padding-bottom:0!important}html[data-netbox-color-mode=dark] .pb-md-1{padding-bottom:.25rem!important}html[data-netbox-color-mode=dark] .pb-md-2{padding-bottom:.5rem!important}html[data-netbox-color-mode=dark] .pb-md-3{padding-bottom:1rem!important}html[data-netbox-color-mode=dark] .pb-md-4{padding-bottom:1.5rem!important}html[data-netbox-color-mode=dark] .pb-md-5{padding-bottom:3rem!important}html[data-netbox-color-mode=dark] .ps-md-0{padding-left:0!important}html[data-netbox-color-mode=dark] .ps-md-1{padding-left:.25rem!important}html[data-netbox-color-mode=dark] .ps-md-2{padding-left:.5rem!important}html[data-netbox-color-mode=dark] .ps-md-3{padding-left:1rem!important}html[data-netbox-color-mode=dark] .ps-md-4{padding-left:1.5rem!important}html[data-netbox-color-mode=dark] .ps-md-5{padding-left:3rem!important}html[data-netbox-color-mode=dark] .text-md-start{text-align:left!important}html[data-netbox-color-mode=dark] .text-md-end{text-align:right!important}html[data-netbox-color-mode=dark] .text-md-center{text-align:center!important}}@media (min-width: 992px){html[data-netbox-color-mode=dark] .float-lg-start{float:left!important}html[data-netbox-color-mode=dark] .float-lg-end{float:right!important}html[data-netbox-color-mode=dark] .float-lg-none{float:none!important}html[data-netbox-color-mode=dark] .d-lg-inline{display:inline!important}html[data-netbox-color-mode=dark] .d-lg-inline-block{display:inline-block!important}html[data-netbox-color-mode=dark] .d-lg-block{display:block!important}html[data-netbox-color-mode=dark] .d-lg-grid{display:grid!important}html[data-netbox-color-mode=dark] .d-lg-table{display:table!important}html[data-netbox-color-mode=dark] .d-lg-table-row{display:table-row!important}html[data-netbox-color-mode=dark] .d-lg-table-cell{display:table-cell!important}html[data-netbox-color-mode=dark] .d-lg-flex{display:flex!important}html[data-netbox-color-mode=dark] .d-lg-inline-flex{display:inline-flex!important}html[data-netbox-color-mode=dark] .d-lg-none{display:none!important}html[data-netbox-color-mode=dark] .flex-lg-fill{flex:1 1 auto!important}html[data-netbox-color-mode=dark] .flex-lg-row{flex-direction:row!important}html[data-netbox-color-mode=dark] .flex-lg-column{flex-direction:column!important}html[data-netbox-color-mode=dark] .flex-lg-row-reverse{flex-direction:row-reverse!important}html[data-netbox-color-mode=dark] .flex-lg-column-reverse{flex-direction:column-reverse!important}html[data-netbox-color-mode=dark] .flex-lg-grow-0{flex-grow:0!important}html[data-netbox-color-mode=dark] .flex-lg-grow-1{flex-grow:1!important}html[data-netbox-color-mode=dark] .flex-lg-shrink-0{flex-shrink:0!important}html[data-netbox-color-mode=dark] .flex-lg-shrink-1{flex-shrink:1!important}html[data-netbox-color-mode=dark] .flex-lg-wrap{flex-wrap:wrap!important}html[data-netbox-color-mode=dark] .flex-lg-nowrap{flex-wrap:nowrap!important}html[data-netbox-color-mode=dark] .flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}html[data-netbox-color-mode=dark] .gap-lg-0{gap:0!important}html[data-netbox-color-mode=dark] .gap-lg-1{gap:.25rem!important}html[data-netbox-color-mode=dark] .gap-lg-2{gap:.5rem!important}html[data-netbox-color-mode=dark] .gap-lg-3{gap:1rem!important}html[data-netbox-color-mode=dark] .gap-lg-4{gap:1.5rem!important}html[data-netbox-color-mode=dark] .gap-lg-5{gap:3rem!important}html[data-netbox-color-mode=dark] .justify-content-lg-start{justify-content:flex-start!important}html[data-netbox-color-mode=dark] .justify-content-lg-end{justify-content:flex-end!important}html[data-netbox-color-mode=dark] .justify-content-lg-center{justify-content:center!important}html[data-netbox-color-mode=dark] .justify-content-lg-between{justify-content:space-between!important}html[data-netbox-color-mode=dark] .justify-content-lg-around{justify-content:space-around!important}html[data-netbox-color-mode=dark] .justify-content-lg-evenly{justify-content:space-evenly!important}html[data-netbox-color-mode=dark] .align-items-lg-start{align-items:flex-start!important}html[data-netbox-color-mode=dark] .align-items-lg-end{align-items:flex-end!important}html[data-netbox-color-mode=dark] .align-items-lg-center{align-items:center!important}html[data-netbox-color-mode=dark] .align-items-lg-baseline{align-items:baseline!important}html[data-netbox-color-mode=dark] .align-items-lg-stretch{align-items:stretch!important}html[data-netbox-color-mode=dark] .align-content-lg-start{align-content:flex-start!important}html[data-netbox-color-mode=dark] .align-content-lg-end{align-content:flex-end!important}html[data-netbox-color-mode=dark] .align-content-lg-center{align-content:center!important}html[data-netbox-color-mode=dark] .align-content-lg-between{align-content:space-between!important}html[data-netbox-color-mode=dark] .align-content-lg-around{align-content:space-around!important}html[data-netbox-color-mode=dark] .align-content-lg-stretch{align-content:stretch!important}html[data-netbox-color-mode=dark] .align-self-lg-auto{align-self:auto!important}html[data-netbox-color-mode=dark] .align-self-lg-start{align-self:flex-start!important}html[data-netbox-color-mode=dark] .align-self-lg-end{align-self:flex-end!important}html[data-netbox-color-mode=dark] .align-self-lg-center{align-self:center!important}html[data-netbox-color-mode=dark] .align-self-lg-baseline{align-self:baseline!important}html[data-netbox-color-mode=dark] .align-self-lg-stretch{align-self:stretch!important}html[data-netbox-color-mode=dark] .order-lg-first{order:-1!important}html[data-netbox-color-mode=dark] .order-lg-0{order:0!important}html[data-netbox-color-mode=dark] .order-lg-1{order:1!important}html[data-netbox-color-mode=dark] .order-lg-2{order:2!important}html[data-netbox-color-mode=dark] .order-lg-3{order:3!important}html[data-netbox-color-mode=dark] .order-lg-4{order:4!important}html[data-netbox-color-mode=dark] .order-lg-5{order:5!important}html[data-netbox-color-mode=dark] .order-lg-last{order:6!important}html[data-netbox-color-mode=dark] .m-lg-0{margin:0!important}html[data-netbox-color-mode=dark] .m-lg-1{margin:.25rem!important}html[data-netbox-color-mode=dark] .m-lg-2{margin:.5rem!important}html[data-netbox-color-mode=dark] .m-lg-3{margin:1rem!important}html[data-netbox-color-mode=dark] .m-lg-4{margin:1.5rem!important}html[data-netbox-color-mode=dark] .m-lg-5{margin:3rem!important}html[data-netbox-color-mode=dark] .m-lg-auto{margin:auto!important}html[data-netbox-color-mode=dark] .mx-lg-0{margin-right:0!important;margin-left:0!important}html[data-netbox-color-mode=dark] .mx-lg-1{margin-right:.25rem!important;margin-left:.25rem!important}html[data-netbox-color-mode=dark] .mx-lg-2{margin-right:.5rem!important;margin-left:.5rem!important}html[data-netbox-color-mode=dark] .mx-lg-3{margin-right:1rem!important;margin-left:1rem!important}html[data-netbox-color-mode=dark] .mx-lg-4{margin-right:1.5rem!important;margin-left:1.5rem!important}html[data-netbox-color-mode=dark] .mx-lg-5{margin-right:3rem!important;margin-left:3rem!important}html[data-netbox-color-mode=dark] .mx-lg-auto{margin-right:auto!important;margin-left:auto!important}html[data-netbox-color-mode=dark] .my-lg-0{margin-top:0!important;margin-bottom:0!important}html[data-netbox-color-mode=dark] .my-lg-1{margin-top:.25rem!important;margin-bottom:.25rem!important}html[data-netbox-color-mode=dark] .my-lg-2{margin-top:.5rem!important;margin-bottom:.5rem!important}html[data-netbox-color-mode=dark] .my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important}html[data-netbox-color-mode=dark] .my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}html[data-netbox-color-mode=dark] .my-lg-5{margin-top:3rem!important;margin-bottom:3rem!important}html[data-netbox-color-mode=dark] .my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}html[data-netbox-color-mode=dark] .mt-lg-0{margin-top:0!important}html[data-netbox-color-mode=dark] .mt-lg-1{margin-top:.25rem!important}html[data-netbox-color-mode=dark] .mt-lg-2{margin-top:.5rem!important}html[data-netbox-color-mode=dark] .mt-lg-3{margin-top:1rem!important}html[data-netbox-color-mode=dark] .mt-lg-4{margin-top:1.5rem!important}html[data-netbox-color-mode=dark] .mt-lg-5{margin-top:3rem!important}html[data-netbox-color-mode=dark] .mt-lg-auto{margin-top:auto!important}html[data-netbox-color-mode=dark] .me-lg-0{margin-right:0!important}html[data-netbox-color-mode=dark] .me-lg-1{margin-right:.25rem!important}html[data-netbox-color-mode=dark] .me-lg-2{margin-right:.5rem!important}html[data-netbox-color-mode=dark] .me-lg-3{margin-right:1rem!important}html[data-netbox-color-mode=dark] .me-lg-4{margin-right:1.5rem!important}html[data-netbox-color-mode=dark] .me-lg-5{margin-right:3rem!important}html[data-netbox-color-mode=dark] .me-lg-auto{margin-right:auto!important}html[data-netbox-color-mode=dark] .mb-lg-0{margin-bottom:0!important}html[data-netbox-color-mode=dark] .mb-lg-1{margin-bottom:.25rem!important}html[data-netbox-color-mode=dark] .mb-lg-2{margin-bottom:.5rem!important}html[data-netbox-color-mode=dark] .mb-lg-3{margin-bottom:1rem!important}html[data-netbox-color-mode=dark] .mb-lg-4{margin-bottom:1.5rem!important}html[data-netbox-color-mode=dark] .mb-lg-5{margin-bottom:3rem!important}html[data-netbox-color-mode=dark] .mb-lg-auto{margin-bottom:auto!important}html[data-netbox-color-mode=dark] .ms-lg-0{margin-left:0!important}html[data-netbox-color-mode=dark] .ms-lg-1{margin-left:.25rem!important}html[data-netbox-color-mode=dark] .ms-lg-2{margin-left:.5rem!important}html[data-netbox-color-mode=dark] .ms-lg-3{margin-left:1rem!important}html[data-netbox-color-mode=dark] .ms-lg-4{margin-left:1.5rem!important}html[data-netbox-color-mode=dark] .ms-lg-5{margin-left:3rem!important}html[data-netbox-color-mode=dark] .ms-lg-auto{margin-left:auto!important}html[data-netbox-color-mode=dark] .p-lg-0{padding:0!important}html[data-netbox-color-mode=dark] .p-lg-1{padding:.25rem!important}html[data-netbox-color-mode=dark] .p-lg-2{padding:.5rem!important}html[data-netbox-color-mode=dark] .p-lg-3{padding:1rem!important}html[data-netbox-color-mode=dark] .p-lg-4{padding:1.5rem!important}html[data-netbox-color-mode=dark] .p-lg-5{padding:3rem!important}html[data-netbox-color-mode=dark] .px-lg-0{padding-right:0!important;padding-left:0!important}html[data-netbox-color-mode=dark] .px-lg-1{padding-right:.25rem!important;padding-left:.25rem!important}html[data-netbox-color-mode=dark] .px-lg-2{padding-right:.5rem!important;padding-left:.5rem!important}html[data-netbox-color-mode=dark] .px-lg-3{padding-right:1rem!important;padding-left:1rem!important}html[data-netbox-color-mode=dark] .px-lg-4{padding-right:1.5rem!important;padding-left:1.5rem!important}html[data-netbox-color-mode=dark] .px-lg-5{padding-right:3rem!important;padding-left:3rem!important}html[data-netbox-color-mode=dark] .py-lg-0{padding-top:0!important;padding-bottom:0!important}html[data-netbox-color-mode=dark] .py-lg-1{padding-top:.25rem!important;padding-bottom:.25rem!important}html[data-netbox-color-mode=dark] .py-lg-2{padding-top:.5rem!important;padding-bottom:.5rem!important}html[data-netbox-color-mode=dark] .py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important}html[data-netbox-color-mode=dark] .py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}html[data-netbox-color-mode=dark] .py-lg-5{padding-top:3rem!important;padding-bottom:3rem!important}html[data-netbox-color-mode=dark] .pt-lg-0{padding-top:0!important}html[data-netbox-color-mode=dark] .pt-lg-1{padding-top:.25rem!important}html[data-netbox-color-mode=dark] .pt-lg-2{padding-top:.5rem!important}html[data-netbox-color-mode=dark] .pt-lg-3{padding-top:1rem!important}html[data-netbox-color-mode=dark] .pt-lg-4{padding-top:1.5rem!important}html[data-netbox-color-mode=dark] .pt-lg-5{padding-top:3rem!important}html[data-netbox-color-mode=dark] .pe-lg-0{padding-right:0!important}html[data-netbox-color-mode=dark] .pe-lg-1{padding-right:.25rem!important}html[data-netbox-color-mode=dark] .pe-lg-2{padding-right:.5rem!important}html[data-netbox-color-mode=dark] .pe-lg-3{padding-right:1rem!important}html[data-netbox-color-mode=dark] .pe-lg-4{padding-right:1.5rem!important}html[data-netbox-color-mode=dark] .pe-lg-5{padding-right:3rem!important}html[data-netbox-color-mode=dark] .pb-lg-0{padding-bottom:0!important}html[data-netbox-color-mode=dark] .pb-lg-1{padding-bottom:.25rem!important}html[data-netbox-color-mode=dark] .pb-lg-2{padding-bottom:.5rem!important}html[data-netbox-color-mode=dark] .pb-lg-3{padding-bottom:1rem!important}html[data-netbox-color-mode=dark] .pb-lg-4{padding-bottom:1.5rem!important}html[data-netbox-color-mode=dark] .pb-lg-5{padding-bottom:3rem!important}html[data-netbox-color-mode=dark] .ps-lg-0{padding-left:0!important}html[data-netbox-color-mode=dark] .ps-lg-1{padding-left:.25rem!important}html[data-netbox-color-mode=dark] .ps-lg-2{padding-left:.5rem!important}html[data-netbox-color-mode=dark] .ps-lg-3{padding-left:1rem!important}html[data-netbox-color-mode=dark] .ps-lg-4{padding-left:1.5rem!important}html[data-netbox-color-mode=dark] .ps-lg-5{padding-left:3rem!important}html[data-netbox-color-mode=dark] .text-lg-start{text-align:left!important}html[data-netbox-color-mode=dark] .text-lg-end{text-align:right!important}html[data-netbox-color-mode=dark] .text-lg-center{text-align:center!important}}@media (min-width: 1200px){html[data-netbox-color-mode=dark] .float-xl-start{float:left!important}html[data-netbox-color-mode=dark] .float-xl-end{float:right!important}html[data-netbox-color-mode=dark] .float-xl-none{float:none!important}html[data-netbox-color-mode=dark] .d-xl-inline{display:inline!important}html[data-netbox-color-mode=dark] .d-xl-inline-block{display:inline-block!important}html[data-netbox-color-mode=dark] .d-xl-block{display:block!important}html[data-netbox-color-mode=dark] .d-xl-grid{display:grid!important}html[data-netbox-color-mode=dark] .d-xl-table{display:table!important}html[data-netbox-color-mode=dark] .d-xl-table-row{display:table-row!important}html[data-netbox-color-mode=dark] .d-xl-table-cell{display:table-cell!important}html[data-netbox-color-mode=dark] .d-xl-flex{display:flex!important}html[data-netbox-color-mode=dark] .d-xl-inline-flex{display:inline-flex!important}html[data-netbox-color-mode=dark] .d-xl-none{display:none!important}html[data-netbox-color-mode=dark] .flex-xl-fill{flex:1 1 auto!important}html[data-netbox-color-mode=dark] .flex-xl-row{flex-direction:row!important}html[data-netbox-color-mode=dark] .flex-xl-column{flex-direction:column!important}html[data-netbox-color-mode=dark] .flex-xl-row-reverse{flex-direction:row-reverse!important}html[data-netbox-color-mode=dark] .flex-xl-column-reverse{flex-direction:column-reverse!important}html[data-netbox-color-mode=dark] .flex-xl-grow-0{flex-grow:0!important}html[data-netbox-color-mode=dark] .flex-xl-grow-1{flex-grow:1!important}html[data-netbox-color-mode=dark] .flex-xl-shrink-0{flex-shrink:0!important}html[data-netbox-color-mode=dark] .flex-xl-shrink-1{flex-shrink:1!important}html[data-netbox-color-mode=dark] .flex-xl-wrap{flex-wrap:wrap!important}html[data-netbox-color-mode=dark] .flex-xl-nowrap{flex-wrap:nowrap!important}html[data-netbox-color-mode=dark] .flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}html[data-netbox-color-mode=dark] .gap-xl-0{gap:0!important}html[data-netbox-color-mode=dark] .gap-xl-1{gap:.25rem!important}html[data-netbox-color-mode=dark] .gap-xl-2{gap:.5rem!important}html[data-netbox-color-mode=dark] .gap-xl-3{gap:1rem!important}html[data-netbox-color-mode=dark] .gap-xl-4{gap:1.5rem!important}html[data-netbox-color-mode=dark] .gap-xl-5{gap:3rem!important}html[data-netbox-color-mode=dark] .justify-content-xl-start{justify-content:flex-start!important}html[data-netbox-color-mode=dark] .justify-content-xl-end{justify-content:flex-end!important}html[data-netbox-color-mode=dark] .justify-content-xl-center{justify-content:center!important}html[data-netbox-color-mode=dark] .justify-content-xl-between{justify-content:space-between!important}html[data-netbox-color-mode=dark] .justify-content-xl-around{justify-content:space-around!important}html[data-netbox-color-mode=dark] .justify-content-xl-evenly{justify-content:space-evenly!important}html[data-netbox-color-mode=dark] .align-items-xl-start{align-items:flex-start!important}html[data-netbox-color-mode=dark] .align-items-xl-end{align-items:flex-end!important}html[data-netbox-color-mode=dark] .align-items-xl-center{align-items:center!important}html[data-netbox-color-mode=dark] .align-items-xl-baseline{align-items:baseline!important}html[data-netbox-color-mode=dark] .align-items-xl-stretch{align-items:stretch!important}html[data-netbox-color-mode=dark] .align-content-xl-start{align-content:flex-start!important}html[data-netbox-color-mode=dark] .align-content-xl-end{align-content:flex-end!important}html[data-netbox-color-mode=dark] .align-content-xl-center{align-content:center!important}html[data-netbox-color-mode=dark] .align-content-xl-between{align-content:space-between!important}html[data-netbox-color-mode=dark] .align-content-xl-around{align-content:space-around!important}html[data-netbox-color-mode=dark] .align-content-xl-stretch{align-content:stretch!important}html[data-netbox-color-mode=dark] .align-self-xl-auto{align-self:auto!important}html[data-netbox-color-mode=dark] .align-self-xl-start{align-self:flex-start!important}html[data-netbox-color-mode=dark] .align-self-xl-end{align-self:flex-end!important}html[data-netbox-color-mode=dark] .align-self-xl-center{align-self:center!important}html[data-netbox-color-mode=dark] .align-self-xl-baseline{align-self:baseline!important}html[data-netbox-color-mode=dark] .align-self-xl-stretch{align-self:stretch!important}html[data-netbox-color-mode=dark] .order-xl-first{order:-1!important}html[data-netbox-color-mode=dark] .order-xl-0{order:0!important}html[data-netbox-color-mode=dark] .order-xl-1{order:1!important}html[data-netbox-color-mode=dark] .order-xl-2{order:2!important}html[data-netbox-color-mode=dark] .order-xl-3{order:3!important}html[data-netbox-color-mode=dark] .order-xl-4{order:4!important}html[data-netbox-color-mode=dark] .order-xl-5{order:5!important}html[data-netbox-color-mode=dark] .order-xl-last{order:6!important}html[data-netbox-color-mode=dark] .m-xl-0{margin:0!important}html[data-netbox-color-mode=dark] .m-xl-1{margin:.25rem!important}html[data-netbox-color-mode=dark] .m-xl-2{margin:.5rem!important}html[data-netbox-color-mode=dark] .m-xl-3{margin:1rem!important}html[data-netbox-color-mode=dark] .m-xl-4{margin:1.5rem!important}html[data-netbox-color-mode=dark] .m-xl-5{margin:3rem!important}html[data-netbox-color-mode=dark] .m-xl-auto{margin:auto!important}html[data-netbox-color-mode=dark] .mx-xl-0{margin-right:0!important;margin-left:0!important}html[data-netbox-color-mode=dark] .mx-xl-1{margin-right:.25rem!important;margin-left:.25rem!important}html[data-netbox-color-mode=dark] .mx-xl-2{margin-right:.5rem!important;margin-left:.5rem!important}html[data-netbox-color-mode=dark] .mx-xl-3{margin-right:1rem!important;margin-left:1rem!important}html[data-netbox-color-mode=dark] .mx-xl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}html[data-netbox-color-mode=dark] .mx-xl-5{margin-right:3rem!important;margin-left:3rem!important}html[data-netbox-color-mode=dark] .mx-xl-auto{margin-right:auto!important;margin-left:auto!important}html[data-netbox-color-mode=dark] .my-xl-0{margin-top:0!important;margin-bottom:0!important}html[data-netbox-color-mode=dark] .my-xl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}html[data-netbox-color-mode=dark] .my-xl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}html[data-netbox-color-mode=dark] .my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important}html[data-netbox-color-mode=dark] .my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}html[data-netbox-color-mode=dark] .my-xl-5{margin-top:3rem!important;margin-bottom:3rem!important}html[data-netbox-color-mode=dark] .my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}html[data-netbox-color-mode=dark] .mt-xl-0{margin-top:0!important}html[data-netbox-color-mode=dark] .mt-xl-1{margin-top:.25rem!important}html[data-netbox-color-mode=dark] .mt-xl-2{margin-top:.5rem!important}html[data-netbox-color-mode=dark] .mt-xl-3{margin-top:1rem!important}html[data-netbox-color-mode=dark] .mt-xl-4{margin-top:1.5rem!important}html[data-netbox-color-mode=dark] .mt-xl-5{margin-top:3rem!important}html[data-netbox-color-mode=dark] .mt-xl-auto{margin-top:auto!important}html[data-netbox-color-mode=dark] .me-xl-0{margin-right:0!important}html[data-netbox-color-mode=dark] .me-xl-1{margin-right:.25rem!important}html[data-netbox-color-mode=dark] .me-xl-2{margin-right:.5rem!important}html[data-netbox-color-mode=dark] .me-xl-3{margin-right:1rem!important}html[data-netbox-color-mode=dark] .me-xl-4{margin-right:1.5rem!important}html[data-netbox-color-mode=dark] .me-xl-5{margin-right:3rem!important}html[data-netbox-color-mode=dark] .me-xl-auto{margin-right:auto!important}html[data-netbox-color-mode=dark] .mb-xl-0{margin-bottom:0!important}html[data-netbox-color-mode=dark] .mb-xl-1{margin-bottom:.25rem!important}html[data-netbox-color-mode=dark] .mb-xl-2{margin-bottom:.5rem!important}html[data-netbox-color-mode=dark] .mb-xl-3{margin-bottom:1rem!important}html[data-netbox-color-mode=dark] .mb-xl-4{margin-bottom:1.5rem!important}html[data-netbox-color-mode=dark] .mb-xl-5{margin-bottom:3rem!important}html[data-netbox-color-mode=dark] .mb-xl-auto{margin-bottom:auto!important}html[data-netbox-color-mode=dark] .ms-xl-0{margin-left:0!important}html[data-netbox-color-mode=dark] .ms-xl-1{margin-left:.25rem!important}html[data-netbox-color-mode=dark] .ms-xl-2{margin-left:.5rem!important}html[data-netbox-color-mode=dark] .ms-xl-3{margin-left:1rem!important}html[data-netbox-color-mode=dark] .ms-xl-4{margin-left:1.5rem!important}html[data-netbox-color-mode=dark] .ms-xl-5{margin-left:3rem!important}html[data-netbox-color-mode=dark] .ms-xl-auto{margin-left:auto!important}html[data-netbox-color-mode=dark] .p-xl-0{padding:0!important}html[data-netbox-color-mode=dark] .p-xl-1{padding:.25rem!important}html[data-netbox-color-mode=dark] .p-xl-2{padding:.5rem!important}html[data-netbox-color-mode=dark] .p-xl-3{padding:1rem!important}html[data-netbox-color-mode=dark] .p-xl-4{padding:1.5rem!important}html[data-netbox-color-mode=dark] .p-xl-5{padding:3rem!important}html[data-netbox-color-mode=dark] .px-xl-0{padding-right:0!important;padding-left:0!important}html[data-netbox-color-mode=dark] .px-xl-1{padding-right:.25rem!important;padding-left:.25rem!important}html[data-netbox-color-mode=dark] .px-xl-2{padding-right:.5rem!important;padding-left:.5rem!important}html[data-netbox-color-mode=dark] .px-xl-3{padding-right:1rem!important;padding-left:1rem!important}html[data-netbox-color-mode=dark] .px-xl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}html[data-netbox-color-mode=dark] .px-xl-5{padding-right:3rem!important;padding-left:3rem!important}html[data-netbox-color-mode=dark] .py-xl-0{padding-top:0!important;padding-bottom:0!important}html[data-netbox-color-mode=dark] .py-xl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}html[data-netbox-color-mode=dark] .py-xl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}html[data-netbox-color-mode=dark] .py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important}html[data-netbox-color-mode=dark] .py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}html[data-netbox-color-mode=dark] .py-xl-5{padding-top:3rem!important;padding-bottom:3rem!important}html[data-netbox-color-mode=dark] .pt-xl-0{padding-top:0!important}html[data-netbox-color-mode=dark] .pt-xl-1{padding-top:.25rem!important}html[data-netbox-color-mode=dark] .pt-xl-2{padding-top:.5rem!important}html[data-netbox-color-mode=dark] .pt-xl-3{padding-top:1rem!important}html[data-netbox-color-mode=dark] .pt-xl-4{padding-top:1.5rem!important}html[data-netbox-color-mode=dark] .pt-xl-5{padding-top:3rem!important}html[data-netbox-color-mode=dark] .pe-xl-0{padding-right:0!important}html[data-netbox-color-mode=dark] .pe-xl-1{padding-right:.25rem!important}html[data-netbox-color-mode=dark] .pe-xl-2{padding-right:.5rem!important}html[data-netbox-color-mode=dark] .pe-xl-3{padding-right:1rem!important}html[data-netbox-color-mode=dark] .pe-xl-4{padding-right:1.5rem!important}html[data-netbox-color-mode=dark] .pe-xl-5{padding-right:3rem!important}html[data-netbox-color-mode=dark] .pb-xl-0{padding-bottom:0!important}html[data-netbox-color-mode=dark] .pb-xl-1{padding-bottom:.25rem!important}html[data-netbox-color-mode=dark] .pb-xl-2{padding-bottom:.5rem!important}html[data-netbox-color-mode=dark] .pb-xl-3{padding-bottom:1rem!important}html[data-netbox-color-mode=dark] .pb-xl-4{padding-bottom:1.5rem!important}html[data-netbox-color-mode=dark] .pb-xl-5{padding-bottom:3rem!important}html[data-netbox-color-mode=dark] .ps-xl-0{padding-left:0!important}html[data-netbox-color-mode=dark] .ps-xl-1{padding-left:.25rem!important}html[data-netbox-color-mode=dark] .ps-xl-2{padding-left:.5rem!important}html[data-netbox-color-mode=dark] .ps-xl-3{padding-left:1rem!important}html[data-netbox-color-mode=dark] .ps-xl-4{padding-left:1.5rem!important}html[data-netbox-color-mode=dark] .ps-xl-5{padding-left:3rem!important}html[data-netbox-color-mode=dark] .text-xl-start{text-align:left!important}html[data-netbox-color-mode=dark] .text-xl-end{text-align:right!important}html[data-netbox-color-mode=dark] .text-xl-center{text-align:center!important}}@media (min-width: 1400px){html[data-netbox-color-mode=dark] .float-xxl-start{float:left!important}html[data-netbox-color-mode=dark] .float-xxl-end{float:right!important}html[data-netbox-color-mode=dark] .float-xxl-none{float:none!important}html[data-netbox-color-mode=dark] .d-xxl-inline{display:inline!important}html[data-netbox-color-mode=dark] .d-xxl-inline-block{display:inline-block!important}html[data-netbox-color-mode=dark] .d-xxl-block{display:block!important}html[data-netbox-color-mode=dark] .d-xxl-grid{display:grid!important}html[data-netbox-color-mode=dark] .d-xxl-table{display:table!important}html[data-netbox-color-mode=dark] .d-xxl-table-row{display:table-row!important}html[data-netbox-color-mode=dark] .d-xxl-table-cell{display:table-cell!important}html[data-netbox-color-mode=dark] .d-xxl-flex{display:flex!important}html[data-netbox-color-mode=dark] .d-xxl-inline-flex{display:inline-flex!important}html[data-netbox-color-mode=dark] .d-xxl-none{display:none!important}html[data-netbox-color-mode=dark] .flex-xxl-fill{flex:1 1 auto!important}html[data-netbox-color-mode=dark] .flex-xxl-row{flex-direction:row!important}html[data-netbox-color-mode=dark] .flex-xxl-column{flex-direction:column!important}html[data-netbox-color-mode=dark] .flex-xxl-row-reverse{flex-direction:row-reverse!important}html[data-netbox-color-mode=dark] .flex-xxl-column-reverse{flex-direction:column-reverse!important}html[data-netbox-color-mode=dark] .flex-xxl-grow-0{flex-grow:0!important}html[data-netbox-color-mode=dark] .flex-xxl-grow-1{flex-grow:1!important}html[data-netbox-color-mode=dark] .flex-xxl-shrink-0{flex-shrink:0!important}html[data-netbox-color-mode=dark] .flex-xxl-shrink-1{flex-shrink:1!important}html[data-netbox-color-mode=dark] .flex-xxl-wrap{flex-wrap:wrap!important}html[data-netbox-color-mode=dark] .flex-xxl-nowrap{flex-wrap:nowrap!important}html[data-netbox-color-mode=dark] .flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}html[data-netbox-color-mode=dark] .gap-xxl-0{gap:0!important}html[data-netbox-color-mode=dark] .gap-xxl-1{gap:.25rem!important}html[data-netbox-color-mode=dark] .gap-xxl-2{gap:.5rem!important}html[data-netbox-color-mode=dark] .gap-xxl-3{gap:1rem!important}html[data-netbox-color-mode=dark] .gap-xxl-4{gap:1.5rem!important}html[data-netbox-color-mode=dark] .gap-xxl-5{gap:3rem!important}html[data-netbox-color-mode=dark] .justify-content-xxl-start{justify-content:flex-start!important}html[data-netbox-color-mode=dark] .justify-content-xxl-end{justify-content:flex-end!important}html[data-netbox-color-mode=dark] .justify-content-xxl-center{justify-content:center!important}html[data-netbox-color-mode=dark] .justify-content-xxl-between{justify-content:space-between!important}html[data-netbox-color-mode=dark] .justify-content-xxl-around{justify-content:space-around!important}html[data-netbox-color-mode=dark] .justify-content-xxl-evenly{justify-content:space-evenly!important}html[data-netbox-color-mode=dark] .align-items-xxl-start{align-items:flex-start!important}html[data-netbox-color-mode=dark] .align-items-xxl-end{align-items:flex-end!important}html[data-netbox-color-mode=dark] .align-items-xxl-center{align-items:center!important}html[data-netbox-color-mode=dark] .align-items-xxl-baseline{align-items:baseline!important}html[data-netbox-color-mode=dark] .align-items-xxl-stretch{align-items:stretch!important}html[data-netbox-color-mode=dark] .align-content-xxl-start{align-content:flex-start!important}html[data-netbox-color-mode=dark] .align-content-xxl-end{align-content:flex-end!important}html[data-netbox-color-mode=dark] .align-content-xxl-center{align-content:center!important}html[data-netbox-color-mode=dark] .align-content-xxl-between{align-content:space-between!important}html[data-netbox-color-mode=dark] .align-content-xxl-around{align-content:space-around!important}html[data-netbox-color-mode=dark] .align-content-xxl-stretch{align-content:stretch!important}html[data-netbox-color-mode=dark] .align-self-xxl-auto{align-self:auto!important}html[data-netbox-color-mode=dark] .align-self-xxl-start{align-self:flex-start!important}html[data-netbox-color-mode=dark] .align-self-xxl-end{align-self:flex-end!important}html[data-netbox-color-mode=dark] .align-self-xxl-center{align-self:center!important}html[data-netbox-color-mode=dark] .align-self-xxl-baseline{align-self:baseline!important}html[data-netbox-color-mode=dark] .align-self-xxl-stretch{align-self:stretch!important}html[data-netbox-color-mode=dark] .order-xxl-first{order:-1!important}html[data-netbox-color-mode=dark] .order-xxl-0{order:0!important}html[data-netbox-color-mode=dark] .order-xxl-1{order:1!important}html[data-netbox-color-mode=dark] .order-xxl-2{order:2!important}html[data-netbox-color-mode=dark] .order-xxl-3{order:3!important}html[data-netbox-color-mode=dark] .order-xxl-4{order:4!important}html[data-netbox-color-mode=dark] .order-xxl-5{order:5!important}html[data-netbox-color-mode=dark] .order-xxl-last{order:6!important}html[data-netbox-color-mode=dark] .m-xxl-0{margin:0!important}html[data-netbox-color-mode=dark] .m-xxl-1{margin:.25rem!important}html[data-netbox-color-mode=dark] .m-xxl-2{margin:.5rem!important}html[data-netbox-color-mode=dark] .m-xxl-3{margin:1rem!important}html[data-netbox-color-mode=dark] .m-xxl-4{margin:1.5rem!important}html[data-netbox-color-mode=dark] .m-xxl-5{margin:3rem!important}html[data-netbox-color-mode=dark] .m-xxl-auto{margin:auto!important}html[data-netbox-color-mode=dark] .mx-xxl-0{margin-right:0!important;margin-left:0!important}html[data-netbox-color-mode=dark] .mx-xxl-1{margin-right:.25rem!important;margin-left:.25rem!important}html[data-netbox-color-mode=dark] .mx-xxl-2{margin-right:.5rem!important;margin-left:.5rem!important}html[data-netbox-color-mode=dark] .mx-xxl-3{margin-right:1rem!important;margin-left:1rem!important}html[data-netbox-color-mode=dark] .mx-xxl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}html[data-netbox-color-mode=dark] .mx-xxl-5{margin-right:3rem!important;margin-left:3rem!important}html[data-netbox-color-mode=dark] .mx-xxl-auto{margin-right:auto!important;margin-left:auto!important}html[data-netbox-color-mode=dark] .my-xxl-0{margin-top:0!important;margin-bottom:0!important}html[data-netbox-color-mode=dark] .my-xxl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}html[data-netbox-color-mode=dark] .my-xxl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}html[data-netbox-color-mode=dark] .my-xxl-3{margin-top:1rem!important;margin-bottom:1rem!important}html[data-netbox-color-mode=dark] .my-xxl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}html[data-netbox-color-mode=dark] .my-xxl-5{margin-top:3rem!important;margin-bottom:3rem!important}html[data-netbox-color-mode=dark] .my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important}html[data-netbox-color-mode=dark] .mt-xxl-0{margin-top:0!important}html[data-netbox-color-mode=dark] .mt-xxl-1{margin-top:.25rem!important}html[data-netbox-color-mode=dark] .mt-xxl-2{margin-top:.5rem!important}html[data-netbox-color-mode=dark] .mt-xxl-3{margin-top:1rem!important}html[data-netbox-color-mode=dark] .mt-xxl-4{margin-top:1.5rem!important}html[data-netbox-color-mode=dark] .mt-xxl-5{margin-top:3rem!important}html[data-netbox-color-mode=dark] .mt-xxl-auto{margin-top:auto!important}html[data-netbox-color-mode=dark] .me-xxl-0{margin-right:0!important}html[data-netbox-color-mode=dark] .me-xxl-1{margin-right:.25rem!important}html[data-netbox-color-mode=dark] .me-xxl-2{margin-right:.5rem!important}html[data-netbox-color-mode=dark] .me-xxl-3{margin-right:1rem!important}html[data-netbox-color-mode=dark] .me-xxl-4{margin-right:1.5rem!important}html[data-netbox-color-mode=dark] .me-xxl-5{margin-right:3rem!important}html[data-netbox-color-mode=dark] .me-xxl-auto{margin-right:auto!important}html[data-netbox-color-mode=dark] .mb-xxl-0{margin-bottom:0!important}html[data-netbox-color-mode=dark] .mb-xxl-1{margin-bottom:.25rem!important}html[data-netbox-color-mode=dark] .mb-xxl-2{margin-bottom:.5rem!important}html[data-netbox-color-mode=dark] .mb-xxl-3{margin-bottom:1rem!important}html[data-netbox-color-mode=dark] .mb-xxl-4{margin-bottom:1.5rem!important}html[data-netbox-color-mode=dark] .mb-xxl-5{margin-bottom:3rem!important}html[data-netbox-color-mode=dark] .mb-xxl-auto{margin-bottom:auto!important}html[data-netbox-color-mode=dark] .ms-xxl-0{margin-left:0!important}html[data-netbox-color-mode=dark] .ms-xxl-1{margin-left:.25rem!important}html[data-netbox-color-mode=dark] .ms-xxl-2{margin-left:.5rem!important}html[data-netbox-color-mode=dark] .ms-xxl-3{margin-left:1rem!important}html[data-netbox-color-mode=dark] .ms-xxl-4{margin-left:1.5rem!important}html[data-netbox-color-mode=dark] .ms-xxl-5{margin-left:3rem!important}html[data-netbox-color-mode=dark] .ms-xxl-auto{margin-left:auto!important}html[data-netbox-color-mode=dark] .p-xxl-0{padding:0!important}html[data-netbox-color-mode=dark] .p-xxl-1{padding:.25rem!important}html[data-netbox-color-mode=dark] .p-xxl-2{padding:.5rem!important}html[data-netbox-color-mode=dark] .p-xxl-3{padding:1rem!important}html[data-netbox-color-mode=dark] .p-xxl-4{padding:1.5rem!important}html[data-netbox-color-mode=dark] .p-xxl-5{padding:3rem!important}html[data-netbox-color-mode=dark] .px-xxl-0{padding-right:0!important;padding-left:0!important}html[data-netbox-color-mode=dark] .px-xxl-1{padding-right:.25rem!important;padding-left:.25rem!important}html[data-netbox-color-mode=dark] .px-xxl-2{padding-right:.5rem!important;padding-left:.5rem!important}html[data-netbox-color-mode=dark] .px-xxl-3{padding-right:1rem!important;padding-left:1rem!important}html[data-netbox-color-mode=dark] .px-xxl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}html[data-netbox-color-mode=dark] .px-xxl-5{padding-right:3rem!important;padding-left:3rem!important}html[data-netbox-color-mode=dark] .py-xxl-0{padding-top:0!important;padding-bottom:0!important}html[data-netbox-color-mode=dark] .py-xxl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}html[data-netbox-color-mode=dark] .py-xxl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}html[data-netbox-color-mode=dark] .py-xxl-3{padding-top:1rem!important;padding-bottom:1rem!important}html[data-netbox-color-mode=dark] .py-xxl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}html[data-netbox-color-mode=dark] .py-xxl-5{padding-top:3rem!important;padding-bottom:3rem!important}html[data-netbox-color-mode=dark] .pt-xxl-0{padding-top:0!important}html[data-netbox-color-mode=dark] .pt-xxl-1{padding-top:.25rem!important}html[data-netbox-color-mode=dark] .pt-xxl-2{padding-top:.5rem!important}html[data-netbox-color-mode=dark] .pt-xxl-3{padding-top:1rem!important}html[data-netbox-color-mode=dark] .pt-xxl-4{padding-top:1.5rem!important}html[data-netbox-color-mode=dark] .pt-xxl-5{padding-top:3rem!important}html[data-netbox-color-mode=dark] .pe-xxl-0{padding-right:0!important}html[data-netbox-color-mode=dark] .pe-xxl-1{padding-right:.25rem!important}html[data-netbox-color-mode=dark] .pe-xxl-2{padding-right:.5rem!important}html[data-netbox-color-mode=dark] .pe-xxl-3{padding-right:1rem!important}html[data-netbox-color-mode=dark] .pe-xxl-4{padding-right:1.5rem!important}html[data-netbox-color-mode=dark] .pe-xxl-5{padding-right:3rem!important}html[data-netbox-color-mode=dark] .pb-xxl-0{padding-bottom:0!important}html[data-netbox-color-mode=dark] .pb-xxl-1{padding-bottom:.25rem!important}html[data-netbox-color-mode=dark] .pb-xxl-2{padding-bottom:.5rem!important}html[data-netbox-color-mode=dark] .pb-xxl-3{padding-bottom:1rem!important}html[data-netbox-color-mode=dark] .pb-xxl-4{padding-bottom:1.5rem!important}html[data-netbox-color-mode=dark] .pb-xxl-5{padding-bottom:3rem!important}html[data-netbox-color-mode=dark] .ps-xxl-0{padding-left:0!important}html[data-netbox-color-mode=dark] .ps-xxl-1{padding-left:.25rem!important}html[data-netbox-color-mode=dark] .ps-xxl-2{padding-left:.5rem!important}html[data-netbox-color-mode=dark] .ps-xxl-3{padding-left:1rem!important}html[data-netbox-color-mode=dark] .ps-xxl-4{padding-left:1.5rem!important}html[data-netbox-color-mode=dark] .ps-xxl-5{padding-left:3rem!important}html[data-netbox-color-mode=dark] .text-xxl-start{text-align:left!important}html[data-netbox-color-mode=dark] .text-xxl-end{text-align:right!important}html[data-netbox-color-mode=dark] .text-xxl-center{text-align:center!important}}@media (min-width: 1200px){html[data-netbox-color-mode=dark] .fs-1{font-size:2.5rem!important}html[data-netbox-color-mode=dark] .fs-2{font-size:2rem!important}html[data-netbox-color-mode=dark] .fs-3{font-size:1.75rem!important}html[data-netbox-color-mode=dark] .fs-4{font-size:1.5rem!important}}@media print{html[data-netbox-color-mode=dark] .d-print-inline{display:inline!important}html[data-netbox-color-mode=dark] .d-print-inline-block{display:inline-block!important}html[data-netbox-color-mode=dark] .d-print-block{display:block!important}html[data-netbox-color-mode=dark] .d-print-grid{display:grid!important}html[data-netbox-color-mode=dark] .d-print-table{display:table!important}html[data-netbox-color-mode=dark] .d-print-table-row{display:table-row!important}html[data-netbox-color-mode=dark] .d-print-table-cell{display:table-cell!important}html[data-netbox-color-mode=dark] .d-print-flex{display:flex!important}html[data-netbox-color-mode=dark] .d-print-inline-flex{display:inline-flex!important}html[data-netbox-color-mode=dark] .d-print-none{display:none!important}}html[data-netbox-color-mode=dark] :root{--nbx-select-content-bg: #212529;--nbx-select-option-selected-bg: #dee2e6;--nbx-select-option-hover-bg: #0d6efd;--nbx-select-option-hover-color: #fff;--nbx-select-placeholder-color: #adb5bd;--nbx-select-value-color: #fff}html[data-netbox-color-mode=dark] :root[data-netbox-color-mode=dark]{--nbx-select-content-bg: #212529;--nbx-select-option-selected-bg: #adb5bd;--nbx-select-option-hover-bg: #9ec5fe;--nbx-select-option-hover-color: #000;--nbx-select-placeholder-color: #495057;--nbx-select-value-color: #000}html[data-netbox-color-mode=dark] .ss-main{position:relative;display:inline-block;user-select:none;color:#f8f9fa;width:100%}html[data-netbox-color-mode=dark] .ss-main .ss-single-selected{display:flex;cursor:pointer;width:100%;height:calc(1.5em + (.75rem + 2px));padding:.75rem;border:1px solid #495057;border-radius:.375rem;background-color:#fff;outline:0;box-sizing:border-box;transition:background-color .2s}html[data-netbox-color-mode=dark] .ss-main .ss-single-selected.ss-disabled{background-color:#495057;cursor:not-allowed}html[data-netbox-color-mode=dark] .ss-main .ss-single-selected.ss-open-above{border-top-left-radius:0;border-top-right-radius:0}html[data-netbox-color-mode=dark] .ss-main .ss-single-selected.ss-open-below{border-bottom-left-radius:0;border-bottom-right-radius:0}html[data-netbox-color-mode=dark] .ss-main .ss-single-selected .placeholder{display:flex;flex:1 1 100%;align-items:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:left;width:calc(100% - 30px);line-height:1em;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}html[data-netbox-color-mode=dark] .ss-main .ss-single-selected .placeholder *{display:flex;align-items:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:auto}html[data-netbox-color-mode=dark] .ss-main .ss-single-selected .placeholder .ss-disabled{color:#adb5bd}html[data-netbox-color-mode=dark] .ss-main .ss-single-selected .ss-deselect{display:flex;align-items:center;justify-content:flex-end;flex:0 1 auto;margin:0 .75rem;font-weight:bold}html[data-netbox-color-mode=dark] .ss-main .ss-single-selected .ss-deselect.ss-hide{display:none}html[data-netbox-color-mode=dark] .ss-main .ss-single-selected .ss-arrow{display:flex;align-items:center;justify-content:flex-end;flex:0 1 auto;margin:0 .75rem}html[data-netbox-color-mode=dark] .ss-main .ss-single-selected .ss-arrow span{border:solid #f8f9fa;border-width:0 2px 2px 0;display:inline-block;padding:3px;transition:transform .2s,margin .2s}html[data-netbox-color-mode=dark] .ss-main .ss-single-selected .ss-arrow span.arrow-up{transform:rotate(-135deg);margin:3px 0 0}html[data-netbox-color-mode=dark] .ss-main .ss-single-selected .ss-arrow span.arrow-down{transform:rotate(45deg);margin:-3px 0 0}html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected{display:flex;flex-direction:row;cursor:pointer;min-height:calc(1.5em + (.75rem + 2px));width:100%;padding:0 0 0 3px;border:1px solid #495057;border-radius:.375rem;background-color:#fff;outline:0;box-sizing:border-box;transition:background-color .2s}html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected.ss-disabled{background-color:#495057;cursor:not-allowed}html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected.ss-disabled .ss-values .ss-disabled{color:#f8f9fa}html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected.ss-disabled .ss-values .ss-value .ss-value-delete{cursor:not-allowed}html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected.ss-open-above{border-top-left-radius:0;border-top-right-radius:0}html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected.ss-open-below{border-bottom-left-radius:0;border-bottom-right-radius:0}html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-values{display:flex;flex-wrap:wrap;justify-content:flex-start;flex:1 1 100%;width:calc(100% - 30px)}html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-values .ss-disabled{display:flex;padding:4px 5px;margin:2px 0;line-height:1em;align-items:center;width:100%;color:#adb5bd;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@keyframes scaleIn{0%{transform:scale(0);opacity:0}to{transform:scale(1);opacity:1}}@keyframes scaleOut{0%{transform:scale(1);opacity:1}to{transform:scale(0);opacity:0}}html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-values .ss-value{display:flex;user-select:none;align-items:center;font-size:12px;padding:3px 5px;margin:3px 5px 3px 0;color:#fff;background-color:#6ea8fe;border-radius:.375rem;animation-name:scaleIn;animation-duration:.2s;animation-timing-function:ease-out;animation-fill-mode:both}html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-values .ss-value.ss-out{animation-name:scaleOut;animation-duration:.2s;animation-timing-function:ease-out}html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-values .ss-value .ss-value-delete{margin:0 0 0 5px;cursor:pointer}html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-add{display:flex;flex:0 1 3px;margin:9px 12px 0 5px}html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-add .ss-plus{display:flex;justify-content:center;align-items:center;background:#f8f9fa;position:relative;height:10px;width:2px;transition:transform .2s}html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-add .ss-plus:after{background:#f8f9fa;content:"";position:absolute;height:2px;width:10px;left:-4px;top:4px}html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-add .ss-plus.ss-cross{transform:rotate(45deg)}html[data-netbox-color-mode=dark] .ss-content{position:absolute;width:100%;margin:-1px 0 0;box-sizing:border-box;border:solid 1px #495057;z-index:1010;background-color:#fff;transform-origin:center top;transition:transform .2s,opacity .2s;opacity:0;transform:scaleY(0)}html[data-netbox-color-mode=dark] .ss-content.ss-open{display:block;opacity:1;transform:scaleY(1)}html[data-netbox-color-mode=dark] .ss-content .ss-search{display:flex;flex-direction:row;padding:.75rem}html[data-netbox-color-mode=dark] .ss-content .ss-search.ss-hide{height:0px;opacity:0;padding:0;margin:0}html[data-netbox-color-mode=dark] .ss-content .ss-search.ss-hide input{height:0px;opacity:0;padding:0;margin:0}html[data-netbox-color-mode=dark] .ss-content .ss-search input{display:inline-flex;font-size:inherit;line-height:inherit;flex:1 1 auto;width:100%;min-width:0px;height:30px;padding:.75rem;margin:0;border:1px solid #495057;border-radius:.375rem;background-color:#fff;outline:0;text-align:left;box-sizing:border-box;-webkit-box-sizing:border-box;-webkit-appearance:textfield}html[data-netbox-color-mode=dark] .ss-content .ss-search input::placeholder{color:#495057;vertical-align:middle}html[data-netbox-color-mode=dark] .ss-content .ss-search input:focus{box-shadow:0 0 5px #6ea8fe}html[data-netbox-color-mode=dark] .ss-content .ss-search .ss-addable{display:inline-flex;justify-content:center;align-items:center;cursor:pointer;font-size:22px;font-weight:bold;flex:0 0 30px;height:30px;margin:0 0 0 8px;border:1px solid #495057;border-radius:.375rem;box-sizing:border-box}html[data-netbox-color-mode=dark] .ss-content .ss-addable{padding-top:0}html[data-netbox-color-mode=dark] .ss-content .ss-list{max-height:200px;overflow-x:hidden;overflow-y:auto;text-align:left}html[data-netbox-color-mode=dark] .ss-content .ss-list .ss-optgroup .ss-optgroup-label{padding:6px 10px;font-weight:bold}html[data-netbox-color-mode=dark] .ss-content .ss-list .ss-optgroup .ss-option{padding:6px 6px 6px 25px}html[data-netbox-color-mode=dark] .ss-content .ss-list .ss-optgroup-label-selectable{cursor:pointer}html[data-netbox-color-mode=dark] .ss-content .ss-list .ss-optgroup-label-selectable:hover{color:#fff;background-color:#6ea8fe}html[data-netbox-color-mode=dark] .ss-content .ss-list .ss-option{padding:6px 10px;cursor:pointer;user-select:none}html[data-netbox-color-mode=dark] .ss-content .ss-list .ss-option *{display:inline-block}html[data-netbox-color-mode=dark] .ss-content .ss-list .ss-option:hover,html[data-netbox-color-mode=dark] .ss-content .ss-list .ss-option.ss-highlighted{color:#fff;background-color:#6ea8fe}html[data-netbox-color-mode=dark] .ss-content .ss-list .ss-option.ss-disabled{cursor:not-allowed;color:#adb5bd;background-color:#fff}html[data-netbox-color-mode=dark] .ss-content .ss-list .ss-option:not(.ss-disabled).ss-option-selected{color:#f8f9fa;background-color:#6ea8fe1a}html[data-netbox-color-mode=dark] .ss-content .ss-list .ss-option.ss-hide{display:none}html[data-netbox-color-mode=dark] .ss-content .ss-list .ss-option .ss-search-highlight{background-color:#ffc107}html[data-netbox-color-mode=dark] .ss-main{color:#f8f9fa}html[data-netbox-color-mode=dark] .ss-main.is-invalid .ss-single-selected,html[data-netbox-color-mode=dark] .ss-main.is-invalid .ss-multi-selected{border-color:#dc3545}html[data-netbox-color-mode=dark] .ss-main.is-valid .ss-single-selected,html[data-netbox-color-mode=dark] .ss-main.is-valid .ss-multi-selected{border-color:#198754}html[data-netbox-color-mode=dark] .ss-main .ss-single-selected,html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected{padding:.375rem .75rem;background-color:#212529;border:1px solid #495057}html[data-netbox-color-mode=dark] .ss-main .ss-single-selected[disabled],html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected[disabled]{color:#adb5bd;background-color:#495057}html[data-netbox-color-mode=dark] .ss-main div.ss-multi-selected .ss-values .ss-disabled,html[data-netbox-color-mode=dark] .ss-main div.ss-single-selected span.placeholder .ss-disabled{color:var(--nbx-select-placeholder-color)}html[data-netbox-color-mode=dark] .ss-main .ss-single-selected span.ss-arrow span.arrow-down,html[data-netbox-color-mode=dark] .ss-main .ss-single-selected span.ss-arrow span.arrow-up{border-color:currentColor;color:#ced4da}html[data-netbox-color-mode=dark] .ss-main .ss-single-selected .placeholder .depth{display:none}html[data-netbox-color-mode=dark] .ss-main .ss-single-selected span.placeholder>*,html[data-netbox-color-mode=dark] .ss-main .ss-single-selected span.placeholder{line-height:1.5}html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected{align-items:center;padding-right:.75rem;padding-left:.75rem}html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-values .ss-disabled{padding:4px 0}html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-values .ss-value{color:var(--nbx-select-value-color);border-radius:.375rem}html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-values .ss-value .depth{display:none}html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-add{margin:0 .75rem}html[data-netbox-color-mode=dark] .ss-main .ss-content{background-color:var(--nbx-select-content-bg);border-bottom-right-radius:.375rem;border-bottom-left-radius:.375rem}html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-list .ss-option.ss-option-selected{color:#fff;background-color:var(--nbx-select-option-selected-bg)}html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-list .ss-option:hover{color:var(--nbx-select-option-hover-color);background-color:var(--nbx-select-option-hover-bg)}html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-list .ss-option:last-child{border-bottom-right-radius:.375rem;border-bottom-left-radius:.375rem}html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-list .ss-option.ss-disabled{background-color:unset}html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-list .ss-option.ss-disabled:hover{color:#adb5bd}html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-list .ss-option .depth{opacity:.3}html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-list::-webkit-scrollbar{right:0;width:4px}html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-list::-webkit-scrollbar:hover{opacity:.8}html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-list::-webkit-scrollbar-track{background:transparent}html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-list::-webkit-scrollbar-thumb{right:0;width:2px;background-color:var(--nbx-sidebar-scroll)}html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-search{padding-right:.5rem}html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-search button{margin-left:.75rem}html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-search input[type=search]{color:#f8f9fa;background-color:#212529;border:1px solid #495057}html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-search input[type=search]:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}html[data-netbox-color-mode=dark] .flatpickr-calendar{color:#fff;background:#343a40;border-radius:.375rem;box-shadow:1px 0 #495057,-1px 0 #495057,0 1px #495057,0 -1px #495057,0 3px 13px #00000014}html[data-netbox-color-mode=dark] .flatpickr-calendar.arrowTop:before,html[data-netbox-color-mode=dark] .flatpickr-calendar.arrowTop:after{border-bottom-color:#343a40}html[data-netbox-color-mode=dark] .flatpickr-calendar span.flatpickr-weekday{color:#dee2e6}html[data-netbox-color-mode=dark] .flatpickr-calendar .numInputWrapper span.arrowUp:after{border-bottom-color:#f8f9fa}html[data-netbox-color-mode=dark] .flatpickr-calendar .numInputWrapper span.arrowDown:after{border-top-color:#f8f9fa}html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-months .flatpickr-month{color:#fff;fill:#fff}html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-months .flatpickr-next-month,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-months .flatpickr-prev-month{color:#fff;fill:#fff}html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-months .flatpickr-next-month:hover svg,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-months .flatpickr-prev-month:hover svg{fill:#ea868f}html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-months .flatpickr-current-month select{background:#343a40}html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day{color:#fff}html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.selected,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.startRange,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.endRange,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.selected.inRange,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.startRange.inRange,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.endRange.inRange,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.selected:focus,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.startRange:focus,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.endRange:focus,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.selected:hover,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.startRange:hover,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.endRange:hover,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.selected.prevMonthDay,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.startRange.prevMonthDay,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.endRange.prevMonthDay,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.selected.nextMonthDay,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.startRange.nextMonthDay,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.endRange.nextMonthDay{color:#000;background:#6ea8fe;border-color:#6ea8fe}html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day:hover{color:#000;background:#adb5bd;border-color:#adb5bd}html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.flatpickr-disabled,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.flatpickr-disabled:hover,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.prevMonthDay,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.nextMonthDay,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.notAllowed,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.notAllowed.prevMonthDay,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.notAllowed.nextMonthDay{color:#adb5bd}html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.flatpickr-disabled:hover,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.flatpickr-disabled:hover:hover,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.prevMonthDay:hover,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.nextMonthDay:hover,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.notAllowed:hover,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.notAllowed.prevMonthDay:hover,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.notAllowed.nextMonthDay:hover{color:#000;background:#adb5bd;border-color:#adb5bd}html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-time input{color:#f8f9fa;background:#343a40}html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-time input:hover,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-time input:active{background:#343a40}html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-time .flatpickr-time-separator{color:#adb5bd}html[data-netbox-color-mode=dark] .flatpickr-calendar.showTimeInput.hasTime .flatpickr-time{border-top:1px solid #495057}html[data-netbox-color-mode=dark] .sidenav{position:fixed;top:0;bottom:0;left:0;z-index:1050;display:block;width:100%;max-width:3rem;padding-top:0;padding-right:0;padding-left:0;background-color:var(--nbx-sidebar-bg);border-right:1px solid #495057;transition:all .1s ease-in-out}@media (max-width: 991.98px){html[data-netbox-color-mode=dark] .sidenav{transform:translate(-3rem)}html[data-netbox-color-mode=dark] .sidenav+.content-container[class]{margin-left:0}html[data-netbox-color-mode=dark] .sidenav .profile-button-container[class]{display:block}}html[data-netbox-color-mode=dark] .sidenav .profile-button-container{display:none;padding:.5rem 1rem}html[data-netbox-color-mode=dark] .sidenav+.content-container{margin-left:3rem;transition:all .1s ease-in-out}html[data-netbox-color-mode=dark] .sidenav .sidenav-brand{margin-right:0;transition:opacity .1s ease-in-out}html[data-netbox-color-mode=dark] .sidenav .sidenav-brand-icon{transition:opacity .1s ease-in-out}html[data-netbox-color-mode=dark] .sidenav .sidenav-inner{padding-right:1.5rem;padding-left:1.5rem}@media (min-width: 768px){html[data-netbox-color-mode=dark] .sidenav .sidenav-inner{padding-right:0;padding-left:0}}html[data-netbox-color-mode=dark] .sidenav .sidenav-brand-img,html[data-netbox-color-mode=dark] .sidenav .sidenav-brand>img{max-width:100%;max-height:calc(16rem - 1rem)}html[data-netbox-color-mode=dark] .sidenav .navbar-heading{padding-top:.5rem;padding-bottom:.5rem;font-size:.75rem;text-transform:uppercase;letter-spacing:.04em}html[data-netbox-color-mode=dark] .sidenav .sidenav-header{position:relative;display:flex;align-items:center;justify-content:space-between;height:78px;padding:1rem;transition:all .1s ease-in-out}html[data-netbox-color-mode=dark] .sidenav .sidenav-toggle{position:absolute;display:inline-block;opacity:0;transition:opacity 10ms ease-in-out;transition-delay:.1s}html[data-netbox-color-mode=dark] .sidenav .sidenav-collapse{display:flex;flex:1;flex-direction:column;align-items:stretch;padding-right:1.5rem;padding-left:1.5rem;margin-right:-1.5rem;margin-left:-1.5rem}html[data-netbox-color-mode=dark] .sidenav .sidenav-collapse>*{min-width:100%}@media (min-width: 768px){html[data-netbox-color-mode=dark] .sidenav .sidenav-collapse{margin-right:0;margin-left:0}}html[data-netbox-color-mode=dark] .sidenav .nav-group-header{padding:.25rem 1rem;margin-top:.5rem;margin-bottom:0}html[data-netbox-color-mode=dark] .sidenav .nav .nav-item{display:flex;align-items:center;justify-content:space-between;width:100%}html[data-netbox-color-mode=dark] .sidenav .nav .nav-item.no-buttons{padding-right:5rem}html[data-netbox-color-mode=dark] .sidenav .collapse .nav .nav-item .nav-link{width:100%;padding:.25rem .25rem .25rem 1rem;margin-top:0;margin-bottom:0;border-top-right-radius:.375rem;border-bottom-right-radius:.375rem}html[data-netbox-color-mode=dark] .sidenav .collapse .nav .nav-item .nav-link .sidenav-mini-icon{width:1rem;text-align:center;transition:all .1s ease-in-out}html[data-netbox-color-mode=dark] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle]{width:unset;height:100%;padding-left:.5rem;font-weight:700;color:var(--nbx-sidenav-parent-color)}html[data-netbox-color-mode=dark] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle].active{color:#000;background:#6397e5}html[data-netbox-color-mode=dark] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle]:after{display:inline-block;margin-left:auto;font-family:"Material Design Icons";font-style:normal;font-weight:700;font-variant:normal;color:#ced4da;text-rendering:auto;-webkit-font-smoothing:antialiased;content:"\f0142";transition:all .1s ease-in-out}html[data-netbox-color-mode=dark] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle][aria-expanded=true].active:after{color:#000}html[data-netbox-color-mode=dark] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle][aria-expanded=true]:after{color:#6ea8fe;transform:rotate(90deg)}html[data-netbox-color-mode=dark] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle] .nav-link-text{padding-left:.25rem;transition:all .1s ease-in-out}html[data-netbox-color-mode=dark] .sidenav .navbar-nav{flex-direction:column;margin-right:-1.5rem;margin-left:-1.5rem}html[data-netbox-color-mode=dark] .sidenav .navbar-nav .nav-item{margin-top:2px}html[data-netbox-color-mode=dark] .sidenav .navbar-nav .nav-item.disabled{cursor:not-allowed;opacity:.8}html[data-netbox-color-mode=dark] .sidenav .navbar-nav .nav-item .nav-link{position:relative;display:flex;align-items:center;width:100%;padding:.5rem 1rem;font-size:.875rem;color:var(--nbx-sidenav-link-color);white-space:nowrap;transition:all .1s ease-in-out}html[data-netbox-color-mode=dark] .sidenav .navbar-nav .nav-item .nav-link.active{background-color:var(--nbx-sidebar-link-active-bg)}html[data-netbox-color-mode=dark] .sidenav .navbar-nav .nav-item .nav-link:hover:not(.active){color:var(--nbx-body-color);background-color:var(--nbx-sidebar-link-hover-bg)}html[data-netbox-color-mode=dark] .sidenav .navbar-nav .nav-item .nav-link>i{min-width:2rem;font-size:calc(45px / 2);text-align:center}html[data-netbox-color-mode=dark] .sidenav .navbar-nav .nav-group-label{display:block;font-size:.75rem;font-weight:700;color:var(--nbx-sidenav-group-color);text-transform:uppercase;white-space:nowrap}html[data-netbox-color-mode=dark] body[data-sidenav-pinned] .sidenav .sidenav-toggle-icon{color:var(--nbx-sidenav-pin-color);transform:rotate(90deg)}@media (min-width: 1200px){html[data-netbox-color-mode=dark] body[data-sidenav-pinned] .sidenav+.content-container{margin-left:16rem}}html[data-netbox-color-mode=dark] .g-sidenav-show:not(.g-sidenav-pinned) .sidenav .sidenav-toggle-icon{transform:rotate(0)}html[data-netbox-color-mode=dark] body[data-sidenav-show] .sidenav,html[data-netbox-color-mode=dark] body[data-sidenav-pinned] .sidenav{max-width:16rem}html[data-netbox-color-mode=dark] body[data-sidenav-show] .sidenav .sidenav-brand,html[data-netbox-color-mode=dark] body[data-sidenav-show] .sidenav .navbar-heading,html[data-netbox-color-mode=dark] body[data-sidenav-pinned] .sidenav .sidenav-brand,html[data-netbox-color-mode=dark] body[data-sidenav-pinned] .sidenav .navbar-heading{display:block}html[data-netbox-color-mode=dark] body[data-sidenav-show] .sidenav .sidenav-brand,html[data-netbox-color-mode=dark] body[data-sidenav-pinned] .sidenav .sidenav-brand{opacity:1;transform:translate(0)}html[data-netbox-color-mode=dark] body[data-sidenav-show] .sidenav .sidenav-brand-icon,html[data-netbox-color-mode=dark] body[data-sidenav-pinned] .sidenav .sidenav-brand-icon{position:absolute;opacity:0}@media (max-width: 991.98px){html[data-netbox-color-mode=dark] body[data-sidenav-show] .sidenav,html[data-netbox-color-mode=dark] body[data-sidenav-pinned] .sidenav{transform:translate(0)}}html[data-netbox-color-mode=dark] body[data-sidenav-hide] .sidenav .sidenav-header,html[data-netbox-color-mode=dark] body[data-sidenav-hidden] .sidenav .sidenav-header{padding:.5rem}html[data-netbox-color-mode=dark] body[data-sidenav-hide] .sidenav .sidenav-brand,html[data-netbox-color-mode=dark] body[data-sidenav-hidden] .sidenav .sidenav-brand{position:absolute;opacity:0}html[data-netbox-color-mode=dark] body[data-sidenav-hide] .sidenav .sidenav-brand-icon,html[data-netbox-color-mode=dark] body[data-sidenav-hidden] .sidenav .sidenav-brand-icon{opacity:1}html[data-netbox-color-mode=dark] body[data-sidenav-hide] .sidenav .sidenav-toggle,html[data-netbox-color-mode=dark] body[data-sidenav-hidden] .sidenav .sidenav-toggle{opacity:0;position:absolute;transition:unset;transition-delay:0ms}html[data-netbox-color-mode=dark] body[data-sidenav-hide] .sidenav .navbar-nav>.nav-item>.nav-link:after,html[data-netbox-color-mode=dark] body[data-sidenav-hidden] .sidenav .navbar-nav>.nav-item>.nav-link:after{content:""}html[data-netbox-color-mode=dark] body[data-sidenav-hide] .sidenav .nav-item .collapse,html[data-netbox-color-mode=dark] body[data-sidenav-hidden] .sidenav .nav-item .collapse{display:none}html[data-netbox-color-mode=dark] body[data-sidenav-hide] .sidenav .nav-link-text,html[data-netbox-color-mode=dark] body[data-sidenav-hidden] .sidenav .nav-link-text{opacity:0}html[data-netbox-color-mode=dark] body[data-sidenav-hide] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle].active,html[data-netbox-color-mode=dark] body[data-sidenav-hidden] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle].active{margin-right:0;margin-left:0;border-radius:unset}html[data-netbox-color-mode=dark] body[data-sidenav-show] .sidenav .sidenav-brand{display:block}html[data-netbox-color-mode=dark] body[data-sidenav-show] .sidenav .nav-item .collapse{height:auto;transition:all .1s ease-in-out}html[data-netbox-color-mode=dark] body[data-sidenav-show] .sidenav .nav-item .nav-link .nav-link-text{opacity:1}html[data-netbox-color-mode=dark] body[data-sidenav-show] .sidenav .nav-item .sidenav-mini-icon{opacity:0}@media (min-width: 992px){html[data-netbox-color-mode=dark] body[data-sidenav-show] .sidenav .sidenav-toggle{position:relative;opacity:1}}html[data-netbox-color-mode=dark] .simplebar-track.simplebar-vertical{right:0;width:6px;background-color:transparent}html[data-netbox-color-mode=dark] .simplebar-track.simplebar-vertical .simplebar-scrollbar{transition:none}html[data-netbox-color-mode=dark] .simplebar-track.simplebar-vertical .simplebar-scrollbar:before{right:0;width:3px;background:var(--nbx-sidebar-scroll);border-radius:.375rem}html[data-netbox-color-mode=dark] .simplebar-track.simplebar-vertical.simplebar-hover .simplebar-scrollbar:before{width:5px}html[data-netbox-color-mode=dark] body{color:var(--nbx-body-color);background-color:var(--nbx-body-bg);font-size:.875rem}html[data-netbox-color-mode=dark] pre{padding:1rem;white-space:pre;background-color:var(--nbx-pre-bg);border:1px solid var(--nbx-pre-border-color);border-radius:.375rem}html[data-netbox-color-mode=dark] small,html[data-netbox-color-mode=dark] .small{font-size:smaller!important}html[data-netbox-color-mode=dark] a[type=button]{-webkit-appearance:unset!important}html[data-netbox-color-mode=dark] *[data-href]{cursor:pointer}html[data-netbox-color-mode=dark] .form-control:not([type=file]){font-size:inherit}html[data-netbox-color-mode=dark] .badge{font-size:.75rem}html[data-netbox-color-mode=dark] .text-xs{font-size:.75rem!important;line-height:1.25!important}html[data-netbox-color-mode=dark] .border-input{border:1px solid #495057!important}html[data-netbox-color-mode=dark] .ws-nowrap{white-space:nowrap!important}html[data-netbox-color-mode=dark] table tr .vertical-align,html[data-netbox-color-mode=dark] table td .vertical-align{vertical-align:middle}@media print{html[data-netbox-color-mode=dark] .noprint{display:none!important;visibility:hidden!important}}html[data-netbox-color-mode=dark] .printonly{display:none!important;visibility:hidden!important}@media print{html[data-netbox-color-mode=dark] .printonly{display:block!important;visibility:visible!important}}html[data-netbox-color-mode=dark] :root{--nbx-sidebar-bg: #e9ecef;--nbx-sidebar-scroll: #adb5bd;--nbx-sidebar-link-hover-bg: rgba(108, 117, 125, .15);--nbx-sidebar-link-active-bg: #cfe2ff;--nbx-sidebar-title-color: #ced4da;--nbx-sidebar-shadow: inset 0px -25px 20px -25px rgba(0, 0, 0, .25);--nbx-breadcrumb-bg: #dee2e6;--nbx-body-bg: #fff;--nbx-body-color: #343a40;--nbx-pre-bg: #f8f9fa;--nbx-pre-border-color: #6c757d;--nbx-change-added: rgba(25, 135, 84, .4);--nbx-change-removed: rgba(220, 53, 69, .4);--nbx-cable-node-bg: #f8f9fa;--nbx-cable-node-border-color: #e9ecef;--nbx-cable-termination-bg: #e9ecef;--nbx-cable-termination-border-color: #dee2e6;--nbx-search-filter-border-left-color: #dee2e6;--nbx-color-mode-toggle-color: #6ea8fe;--nbx-sidenav-link-color: #343a40;--nbx-sidenav-pin-color: #fd7e14;--nbx-sidenav-parent-color: #343a40;--nbx-sidenav-group-color: #343a40}html[data-netbox-color-mode=dark] :root[data-netbox-color-mode=dark]{--nbx-sidebar-bg: #212529;--nbx-sidebar-scroll: #495057;--nbx-sidebar-link-active-bg: rgba(110, 168, 254, .25);--nbx-sidebar-link-hover-bg: rgba(173, 181, 189, .15);--nbx-sidebar-title-color: #6c757d;--nbx-sidebar-shadow: inset 0px -25px 20px -25px rgba(255, 255, 255, .05);--nbx-breadcrumb-bg: #343a40;--nbx-body-bg: #1b1f22;--nbx-body-color: #f8f9fa;--nbx-pre-bg: #495057;--nbx-pre-border-color: #6c757d;--nbx-change-added: rgba(117, 183, 152, .4);--nbx-change-removed: rgba(234, 134, 143, .4);--nbx-cable-node-bg: #495057;--nbx-cable-node-border-color: #6c757d;--nbx-cable-termination-bg: #343a40;--nbx-cable-termination-border-color: #495057;--nbx-search-filter-border-left-color: #6c757d;--nbx-color-mode-toggle-color: #ffda6a;--nbx-sidenav-link-color: #e9ecef;--nbx-sidenav-pin-color: #ffc107;--nbx-sidenav-parent-color: #e9ecef;--nbx-sidenav-group-color: #6c757d}html[data-netbox-color-mode=dark] .bg-primary button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23162233'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-primary{color:#6ea8fe}html[data-netbox-color-mode=dark] .btn.btn-ghost-primary:hover{background-color:#6ea8fe1f}html[data-netbox-color-mode=dark] .alert.alert-primary a:not(.btn),html[data-netbox-color-mode=dark] .table-primary a:not(.btn){font-weight:700;color:#162233}html[data-netbox-color-mode=dark] .alert.alert-primary .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-primary .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-primary a:not(.btn){font-weight:700;color:#162233}html[data-netbox-color-mode=dark] .badge.bg-primary,html[data-netbox-color-mode=dark] .toast.bg-primary,html[data-netbox-color-mode=dark] .toast-header.bg-primary,html[data-netbox-color-mode=dark] .progress-bar.bg-primary{color:#000}html[data-netbox-color-mode=dark] .bg-secondary button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23232426'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-secondary{color:#adb5bd}html[data-netbox-color-mode=dark] .btn.btn-ghost-secondary:hover{background-color:#adb5bd1f}html[data-netbox-color-mode=dark] .alert.alert-secondary a:not(.btn),html[data-netbox-color-mode=dark] .table-secondary a:not(.btn){font-weight:700;color:#232426}html[data-netbox-color-mode=dark] .alert.alert-secondary .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-secondary .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-secondary a:not(.btn){font-weight:700;color:#232426}html[data-netbox-color-mode=dark] .badge.bg-secondary,html[data-netbox-color-mode=dark] .toast.bg-secondary,html[data-netbox-color-mode=dark] .toast-header.bg-secondary,html[data-netbox-color-mode=dark] .progress-bar.bg-secondary{color:#000}html[data-netbox-color-mode=dark] .bg-success button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%2317251e'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-success{color:#75b798}html[data-netbox-color-mode=dark] .btn.btn-ghost-success:hover{background-color:#75b7981f}html[data-netbox-color-mode=dark] .alert.alert-success a:not(.btn),html[data-netbox-color-mode=dark] .table-success a:not(.btn){font-weight:700;color:#17251e}html[data-netbox-color-mode=dark] .alert.alert-success .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-success .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-success a:not(.btn){font-weight:700;color:#17251e}html[data-netbox-color-mode=dark] .badge.bg-success,html[data-netbox-color-mode=dark] .toast.bg-success,html[data-netbox-color-mode=dark] .toast-header.bg-success,html[data-netbox-color-mode=dark] .progress-bar.bg-success{color:#000}html[data-netbox-color-mode=dark] .bg-info button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23162d31'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-info{color:#6edff6}html[data-netbox-color-mode=dark] .btn.btn-ghost-info:hover{background-color:#6edff61f}html[data-netbox-color-mode=dark] .alert.alert-info a:not(.btn),html[data-netbox-color-mode=dark] .table-info a:not(.btn){font-weight:700;color:#162d31}html[data-netbox-color-mode=dark] .alert.alert-info .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-info .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-info a:not(.btn){font-weight:700;color:#162d31}html[data-netbox-color-mode=dark] .badge.bg-info,html[data-netbox-color-mode=dark] .toast.bg-info,html[data-netbox-color-mode=dark] .toast-header.bg-info,html[data-netbox-color-mode=dark] .progress-bar.bg-info{color:#000}html[data-netbox-color-mode=dark] .bg-warning button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23332c15'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-warning{color:#ffda6a}html[data-netbox-color-mode=dark] .btn.btn-ghost-warning:hover{background-color:#ffda6a1f}html[data-netbox-color-mode=dark] .alert.alert-warning a:not(.btn),html[data-netbox-color-mode=dark] .table-warning a:not(.btn){font-weight:700;color:#332c15}html[data-netbox-color-mode=dark] .alert.alert-warning .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-warning .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-warning a:not(.btn){font-weight:700;color:#332c15}html[data-netbox-color-mode=dark] .badge.bg-warning,html[data-netbox-color-mode=dark] .toast.bg-warning,html[data-netbox-color-mode=dark] .toast-header.bg-warning,html[data-netbox-color-mode=dark] .progress-bar.bg-warning{color:#000}html[data-netbox-color-mode=dark] .bg-danger button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%232f1b1d'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-danger{color:#ea868f}html[data-netbox-color-mode=dark] .btn.btn-ghost-danger:hover{background-color:#ea868f1f}html[data-netbox-color-mode=dark] .alert.alert-danger a:not(.btn),html[data-netbox-color-mode=dark] .table-danger a:not(.btn){font-weight:700;color:#2f1b1d}html[data-netbox-color-mode=dark] .alert.alert-danger .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-danger .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-danger a:not(.btn){font-weight:700;color:#2f1b1d}html[data-netbox-color-mode=dark] .badge.bg-danger,html[data-netbox-color-mode=dark] .toast.bg-danger,html[data-netbox-color-mode=dark] .toast-header.bg-danger,html[data-netbox-color-mode=dark] .progress-bar.bg-danger{color:#000}html[data-netbox-color-mode=dark] .bg-light button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%232c2d2e'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-light{color:#dee2e6}html[data-netbox-color-mode=dark] .btn.btn-ghost-light:hover{background-color:#dee2e61f}html[data-netbox-color-mode=dark] .alert.alert-light a:not(.btn),html[data-netbox-color-mode=dark] .table-light a:not(.btn){font-weight:700;color:#2c2d2e}html[data-netbox-color-mode=dark] .alert.alert-light .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-light .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-light a:not(.btn){font-weight:700;color:#2c2d2e}html[data-netbox-color-mode=dark] .badge.bg-light,html[data-netbox-color-mode=dark] .toast.bg-light,html[data-netbox-color-mode=dark] .toast-header.bg-light,html[data-netbox-color-mode=dark] .progress-bar.bg-light{color:#000}html[data-netbox-color-mode=dark] .bg-dark button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23232426'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-dark{color:#adb5bd}html[data-netbox-color-mode=dark] .btn.btn-ghost-dark:hover{background-color:#adb5bd1f}html[data-netbox-color-mode=dark] .alert.alert-dark a:not(.btn),html[data-netbox-color-mode=dark] .table-dark a:not(.btn){font-weight:700;color:#232426}html[data-netbox-color-mode=dark] .alert.alert-dark .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-dark .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-dark a:not(.btn){font-weight:700;color:#232426}html[data-netbox-color-mode=dark] .badge.bg-dark,html[data-netbox-color-mode=dark] .toast.bg-dark,html[data-netbox-color-mode=dark] .toast-header.bg-dark,html[data-netbox-color-mode=dark] .progress-bar.bg-dark{color:#000}html[data-netbox-color-mode=dark] .bg-red button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%232f1b1d'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-red{color:#ea868f}html[data-netbox-color-mode=dark] .btn.btn-ghost-red:hover{background-color:#ea868f1f}html[data-netbox-color-mode=dark] .alert.alert-red a:not(.btn),html[data-netbox-color-mode=dark] .table-red a:not(.btn){font-weight:700;color:#2f1b1d}html[data-netbox-color-mode=dark] .alert.alert-red .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-red .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-red a:not(.btn){font-weight:700;color:#2f1b1d}html[data-netbox-color-mode=dark] .badge.bg-red,html[data-netbox-color-mode=dark] .toast.bg-red,html[data-netbox-color-mode=dark] .toast-header.bg-red,html[data-netbox-color-mode=dark] .progress-bar.bg-red{color:#000}html[data-netbox-color-mode=dark] .bg-yellow button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23332c15'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-yellow{color:#ffda6a}html[data-netbox-color-mode=dark] .btn.btn-ghost-yellow:hover{background-color:#ffda6a1f}html[data-netbox-color-mode=dark] .alert.alert-yellow a:not(.btn),html[data-netbox-color-mode=dark] .table-yellow a:not(.btn){font-weight:700;color:#332c15}html[data-netbox-color-mode=dark] .alert.alert-yellow .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-yellow .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-yellow a:not(.btn){font-weight:700;color:#332c15}html[data-netbox-color-mode=dark] .badge.bg-yellow,html[data-netbox-color-mode=dark] .toast.bg-yellow,html[data-netbox-color-mode=dark] .toast-header.bg-yellow,html[data-netbox-color-mode=dark] .progress-bar.bg-yellow{color:#000}html[data-netbox-color-mode=dark] .bg-green button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%2317251e'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-green{color:#75b798}html[data-netbox-color-mode=dark] .btn.btn-ghost-green:hover{background-color:#75b7981f}html[data-netbox-color-mode=dark] .alert.alert-green a:not(.btn),html[data-netbox-color-mode=dark] .table-green a:not(.btn){font-weight:700;color:#17251e}html[data-netbox-color-mode=dark] .alert.alert-green .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-green .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-green a:not(.btn){font-weight:700;color:#17251e}html[data-netbox-color-mode=dark] .badge.bg-green,html[data-netbox-color-mode=dark] .toast.bg-green,html[data-netbox-color-mode=dark] .toast-header.bg-green,html[data-netbox-color-mode=dark] .progress-bar.bg-green{color:#000}html[data-netbox-color-mode=dark] .bg-blue button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23162233'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-blue{color:#6ea8fe}html[data-netbox-color-mode=dark] .btn.btn-ghost-blue:hover{background-color:#6ea8fe1f}html[data-netbox-color-mode=dark] .alert.alert-blue a:not(.btn),html[data-netbox-color-mode=dark] .table-blue a:not(.btn){font-weight:700;color:#162233}html[data-netbox-color-mode=dark] .alert.alert-blue .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-blue .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-blue a:not(.btn){font-weight:700;color:#162233}html[data-netbox-color-mode=dark] .badge.bg-blue,html[data-netbox-color-mode=dark] .toast.bg-blue,html[data-netbox-color-mode=dark] .toast-header.bg-blue,html[data-netbox-color-mode=dark] .progress-bar.bg-blue{color:#000}html[data-netbox-color-mode=dark] .bg-cyan button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23162d31'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-cyan{color:#6edff6}html[data-netbox-color-mode=dark] .btn.btn-ghost-cyan:hover{background-color:#6edff61f}html[data-netbox-color-mode=dark] .alert.alert-cyan a:not(.btn),html[data-netbox-color-mode=dark] .table-cyan a:not(.btn){font-weight:700;color:#162d31}html[data-netbox-color-mode=dark] .alert.alert-cyan .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-cyan .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-cyan a:not(.btn){font-weight:700;color:#162d31}html[data-netbox-color-mode=dark] .badge.bg-cyan,html[data-netbox-color-mode=dark] .toast.bg-cyan,html[data-netbox-color-mode=dark] .toast-header.bg-cyan,html[data-netbox-color-mode=dark] .progress-bar.bg-cyan{color:#000}html[data-netbox-color-mode=dark] .bg-indigo button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23211631'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-indigo{color:#a370f7}html[data-netbox-color-mode=dark] .btn.btn-ghost-indigo:hover{background-color:#a370f71f}html[data-netbox-color-mode=dark] .alert.alert-indigo a:not(.btn),html[data-netbox-color-mode=dark] .table-indigo a:not(.btn){font-weight:700;color:#211631}html[data-netbox-color-mode=dark] .alert.alert-indigo .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-indigo .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-indigo a:not(.btn){font-weight:700;color:#211631}html[data-netbox-color-mode=dark] .badge.bg-indigo,html[data-netbox-color-mode=dark] .toast.bg-indigo,html[data-netbox-color-mode=dark] .toast-header.bg-indigo,html[data-netbox-color-mode=dark] .progress-bar.bg-indigo{color:#000}html[data-netbox-color-mode=dark] .bg-purple button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23221c2c'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-purple{color:#a98eda}html[data-netbox-color-mode=dark] .btn.btn-ghost-purple:hover{background-color:#a98eda1f}html[data-netbox-color-mode=dark] .alert.alert-purple a:not(.btn),html[data-netbox-color-mode=dark] .table-purple a:not(.btn){font-weight:700;color:#221c2c}html[data-netbox-color-mode=dark] .alert.alert-purple .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-purple .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-purple a:not(.btn){font-weight:700;color:#221c2c}html[data-netbox-color-mode=dark] .badge.bg-purple,html[data-netbox-color-mode=dark] .toast.bg-purple,html[data-netbox-color-mode=dark] .toast-header.bg-purple,html[data-netbox-color-mode=dark] .progress-bar.bg-purple{color:#000}html[data-netbox-color-mode=dark] .bg-pink button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%232e1b24'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-pink{color:#e685b5}html[data-netbox-color-mode=dark] .btn.btn-ghost-pink:hover{background-color:#e685b51f}html[data-netbox-color-mode=dark] .alert.alert-pink a:not(.btn),html[data-netbox-color-mode=dark] .table-pink a:not(.btn){font-weight:700;color:#2e1b24}html[data-netbox-color-mode=dark] .alert.alert-pink .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-pink .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-pink a:not(.btn){font-weight:700;color:#2e1b24}html[data-netbox-color-mode=dark] .badge.bg-pink,html[data-netbox-color-mode=dark] .toast.bg-pink,html[data-netbox-color-mode=dark] .toast-header.bg-pink,html[data-netbox-color-mode=dark] .progress-bar.bg-pink{color:#000}html[data-netbox-color-mode=dark] .bg-darker button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23d1d2d3'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-darker{color:#1b1f22}html[data-netbox-color-mode=dark] .btn.btn-ghost-darker:hover{background-color:#1b1f221f}html[data-netbox-color-mode=dark] .alert.alert-darker a:not(.btn),html[data-netbox-color-mode=dark] .table-darker a:not(.btn){font-weight:700;color:#d1d2d3}html[data-netbox-color-mode=dark] .alert.alert-darker .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-darker .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-darker a:not(.btn){font-weight:700;color:#d1d2d3}html[data-netbox-color-mode=dark] .badge.bg-darker,html[data-netbox-color-mode=dark] .toast.bg-darker,html[data-netbox-color-mode=dark] .toast-header.bg-darker,html[data-netbox-color-mode=dark] .progress-bar.bg-darker{color:#fff}html[data-netbox-color-mode=dark] .bg-darkest button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23d1d1d2'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-darkest{color:#171b1d}html[data-netbox-color-mode=dark] .btn.btn-ghost-darkest:hover{background-color:#171b1d1f}html[data-netbox-color-mode=dark] .alert.alert-darkest a:not(.btn),html[data-netbox-color-mode=dark] .table-darkest a:not(.btn){font-weight:700;color:#d1d1d2}html[data-netbox-color-mode=dark] .alert.alert-darkest .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-darkest .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-darkest a:not(.btn){font-weight:700;color:#d1d1d2}html[data-netbox-color-mode=dark] .badge.bg-darkest,html[data-netbox-color-mode=dark] .toast.bg-darkest,html[data-netbox-color-mode=dark] .toast-header.bg-darkest,html[data-netbox-color-mode=dark] .progress-bar.bg-darkest{color:#fff}html[data-netbox-color-mode=dark] .bg-gray button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23292a2c'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-gray{color:#ced4da}html[data-netbox-color-mode=dark] .btn.btn-ghost-gray:hover{background-color:#ced4da1f}html[data-netbox-color-mode=dark] .alert.alert-gray a:not(.btn),html[data-netbox-color-mode=dark] .table-gray a:not(.btn){font-weight:700;color:#292a2c}html[data-netbox-color-mode=dark] .alert.alert-gray .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-gray .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-gray a:not(.btn){font-weight:700;color:#292a2c}html[data-netbox-color-mode=dark] .badge.bg-gray,html[data-netbox-color-mode=dark] .toast.bg-gray,html[data-netbox-color-mode=dark] .toast-header.bg-gray,html[data-netbox-color-mode=dark] .progress-bar.bg-gray{color:#000}html[data-netbox-color-mode=dark] .bg-gray-100 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23323232'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-gray-100{color:#f8f9fa}html[data-netbox-color-mode=dark] .btn.btn-ghost-gray-100:hover{background-color:#f8f9fa1f}html[data-netbox-color-mode=dark] .alert.alert-gray-100 a:not(.btn),html[data-netbox-color-mode=dark] .table-gray-100 a:not(.btn){font-weight:700;color:#323232}html[data-netbox-color-mode=dark] .alert.alert-gray-100 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-gray-100 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-gray-100 a:not(.btn){font-weight:700;color:#323232}html[data-netbox-color-mode=dark] .badge.bg-gray-100,html[data-netbox-color-mode=dark] .toast.bg-gray-100,html[data-netbox-color-mode=dark] .toast-header.bg-gray-100,html[data-netbox-color-mode=dark] .progress-bar.bg-gray-100{color:#000}html[data-netbox-color-mode=dark] .bg-gray-200 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%232f2f30'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-gray-200{color:#e9ecef}html[data-netbox-color-mode=dark] .btn.btn-ghost-gray-200:hover{background-color:#e9ecef1f}html[data-netbox-color-mode=dark] .alert.alert-gray-200 a:not(.btn),html[data-netbox-color-mode=dark] .table-gray-200 a:not(.btn){font-weight:700;color:#2f2f30}html[data-netbox-color-mode=dark] .alert.alert-gray-200 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-gray-200 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-gray-200 a:not(.btn){font-weight:700;color:#2f2f30}html[data-netbox-color-mode=dark] .badge.bg-gray-200,html[data-netbox-color-mode=dark] .toast.bg-gray-200,html[data-netbox-color-mode=dark] .toast-header.bg-gray-200,html[data-netbox-color-mode=dark] .progress-bar.bg-gray-200{color:#000}html[data-netbox-color-mode=dark] .bg-gray-300 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%232c2d2e'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-gray-300{color:#dee2e6}html[data-netbox-color-mode=dark] .btn.btn-ghost-gray-300:hover{background-color:#dee2e61f}html[data-netbox-color-mode=dark] .alert.alert-gray-300 a:not(.btn),html[data-netbox-color-mode=dark] .table-gray-300 a:not(.btn){font-weight:700;color:#2c2d2e}html[data-netbox-color-mode=dark] .alert.alert-gray-300 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-gray-300 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-gray-300 a:not(.btn){font-weight:700;color:#2c2d2e}html[data-netbox-color-mode=dark] .badge.bg-gray-300,html[data-netbox-color-mode=dark] .toast.bg-gray-300,html[data-netbox-color-mode=dark] .toast-header.bg-gray-300,html[data-netbox-color-mode=dark] .progress-bar.bg-gray-300{color:#000}html[data-netbox-color-mode=dark] .bg-gray-400 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23292a2c'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-gray-400{color:#ced4da}html[data-netbox-color-mode=dark] .btn.btn-ghost-gray-400:hover{background-color:#ced4da1f}html[data-netbox-color-mode=dark] .alert.alert-gray-400 a:not(.btn),html[data-netbox-color-mode=dark] .table-gray-400 a:not(.btn){font-weight:700;color:#292a2c}html[data-netbox-color-mode=dark] .alert.alert-gray-400 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-gray-400 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-gray-400 a:not(.btn){font-weight:700;color:#292a2c}html[data-netbox-color-mode=dark] .badge.bg-gray-400,html[data-netbox-color-mode=dark] .toast.bg-gray-400,html[data-netbox-color-mode=dark] .toast-header.bg-gray-400,html[data-netbox-color-mode=dark] .progress-bar.bg-gray-400{color:#000}html[data-netbox-color-mode=dark] .bg-gray-500 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23232426'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-gray-500{color:#adb5bd}html[data-netbox-color-mode=dark] .btn.btn-ghost-gray-500:hover{background-color:#adb5bd1f}html[data-netbox-color-mode=dark] .alert.alert-gray-500 a:not(.btn),html[data-netbox-color-mode=dark] .table-gray-500 a:not(.btn){font-weight:700;color:#232426}html[data-netbox-color-mode=dark] .alert.alert-gray-500 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-gray-500 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-gray-500 a:not(.btn){font-weight:700;color:#232426}html[data-netbox-color-mode=dark] .badge.bg-gray-500,html[data-netbox-color-mode=dark] .toast.bg-gray-500,html[data-netbox-color-mode=dark] .toast-header.bg-gray-500,html[data-netbox-color-mode=dark] .progress-bar.bg-gray-500{color:#000}html[data-netbox-color-mode=dark] .bg-gray-600 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23161719'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-gray-600{color:#6c757d}html[data-netbox-color-mode=dark] .btn.btn-ghost-gray-600:hover{background-color:#6c757d1f}html[data-netbox-color-mode=dark] .alert.alert-gray-600 a:not(.btn),html[data-netbox-color-mode=dark] .table-gray-600 a:not(.btn){font-weight:700;color:#161719}html[data-netbox-color-mode=dark] .alert.alert-gray-600 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-gray-600 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-gray-600 a:not(.btn){font-weight:700;color:#e2e3e5}html[data-netbox-color-mode=dark] .badge.bg-gray-600,html[data-netbox-color-mode=dark] .toast.bg-gray-600,html[data-netbox-color-mode=dark] .toast-header.bg-gray-600,html[data-netbox-color-mode=dark] .progress-bar.bg-gray-600{color:#fff}html[data-netbox-color-mode=dark] .bg-gray-700 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23dbdcdd'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-gray-700{color:#495057}html[data-netbox-color-mode=dark] .btn.btn-ghost-gray-700:hover{background-color:#4950571f}html[data-netbox-color-mode=dark] .alert.alert-gray-700 a:not(.btn),html[data-netbox-color-mode=dark] .table-gray-700 a:not(.btn){font-weight:700;color:#dbdcdd}html[data-netbox-color-mode=dark] .alert.alert-gray-700 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-gray-700 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-gray-700 a:not(.btn){font-weight:700;color:#dbdcdd}html[data-netbox-color-mode=dark] .badge.bg-gray-700,html[data-netbox-color-mode=dark] .toast.bg-gray-700,html[data-netbox-color-mode=dark] .toast-header.bg-gray-700,html[data-netbox-color-mode=dark] .progress-bar.bg-gray-700{color:#fff}html[data-netbox-color-mode=dark] .bg-gray-800 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23d6d8d9'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-gray-800{color:#343a40}html[data-netbox-color-mode=dark] .btn.btn-ghost-gray-800:hover{background-color:#343a401f}html[data-netbox-color-mode=dark] .alert.alert-gray-800 a:not(.btn),html[data-netbox-color-mode=dark] .table-gray-800 a:not(.btn){font-weight:700;color:#d6d8d9}html[data-netbox-color-mode=dark] .alert.alert-gray-800 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-gray-800 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-gray-800 a:not(.btn){font-weight:700;color:#d6d8d9}html[data-netbox-color-mode=dark] .badge.bg-gray-800,html[data-netbox-color-mode=dark] .toast.bg-gray-800,html[data-netbox-color-mode=dark] .toast-header.bg-gray-800,html[data-netbox-color-mode=dark] .progress-bar.bg-gray-800{color:#fff}html[data-netbox-color-mode=dark] .bg-gray-900 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23d3d3d4'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-gray-900{color:#212529}html[data-netbox-color-mode=dark] .btn.btn-ghost-gray-900:hover{background-color:#2125291f}html[data-netbox-color-mode=dark] .alert.alert-gray-900 a:not(.btn),html[data-netbox-color-mode=dark] .table-gray-900 a:not(.btn){font-weight:700;color:#d3d3d4}html[data-netbox-color-mode=dark] .alert.alert-gray-900 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-gray-900 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-gray-900 a:not(.btn){font-weight:700;color:#d3d3d4}html[data-netbox-color-mode=dark] .badge.bg-gray-900,html[data-netbox-color-mode=dark] .toast.bg-gray-900,html[data-netbox-color-mode=dark] .toast-header.bg-gray-900,html[data-netbox-color-mode=dark] .progress-bar.bg-gray-900{color:#fff}html[data-netbox-color-mode=dark] .bg-red-100 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23322b2c'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-red-100{color:#f8d7da}html[data-netbox-color-mode=dark] .btn.btn-ghost-red-100:hover{background-color:#f8d7da1f}html[data-netbox-color-mode=dark] .alert.alert-red-100 a:not(.btn),html[data-netbox-color-mode=dark] .table-red-100 a:not(.btn){font-weight:700;color:#322b2c}html[data-netbox-color-mode=dark] .alert.alert-red-100 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-red-100 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-red-100 a:not(.btn){font-weight:700;color:#322b2c}html[data-netbox-color-mode=dark] .badge.bg-red-100,html[data-netbox-color-mode=dark] .toast.bg-red-100,html[data-netbox-color-mode=dark] .toast-header.bg-red-100,html[data-netbox-color-mode=dark] .progress-bar.bg-red-100{color:#000}html[data-netbox-color-mode=dark] .bg-red-200 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23302324'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-red-200{color:#f1aeb5}html[data-netbox-color-mode=dark] .btn.btn-ghost-red-200:hover{background-color:#f1aeb51f}html[data-netbox-color-mode=dark] .alert.alert-red-200 a:not(.btn),html[data-netbox-color-mode=dark] .table-red-200 a:not(.btn){font-weight:700;color:#302324}html[data-netbox-color-mode=dark] .alert.alert-red-200 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-red-200 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-red-200 a:not(.btn){font-weight:700;color:#302324}html[data-netbox-color-mode=dark] .badge.bg-red-200,html[data-netbox-color-mode=dark] .toast.bg-red-200,html[data-netbox-color-mode=dark] .toast-header.bg-red-200,html[data-netbox-color-mode=dark] .progress-bar.bg-red-200{color:#000}html[data-netbox-color-mode=dark] .bg-red-300 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%232f1b1d'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-red-300{color:#ea868f}html[data-netbox-color-mode=dark] .btn.btn-ghost-red-300:hover{background-color:#ea868f1f}html[data-netbox-color-mode=dark] .alert.alert-red-300 a:not(.btn),html[data-netbox-color-mode=dark] .table-red-300 a:not(.btn){font-weight:700;color:#2f1b1d}html[data-netbox-color-mode=dark] .alert.alert-red-300 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-red-300 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-red-300 a:not(.btn){font-weight:700;color:#2f1b1d}html[data-netbox-color-mode=dark] .badge.bg-red-300,html[data-netbox-color-mode=dark] .toast.bg-red-300,html[data-netbox-color-mode=dark] .toast-header.bg-red-300,html[data-netbox-color-mode=dark] .progress-bar.bg-red-300{color:#000}html[data-netbox-color-mode=dark] .bg-red-400 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%232d1315'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-red-400{color:#e35d6a}html[data-netbox-color-mode=dark] .btn.btn-ghost-red-400:hover{background-color:#e35d6a1f}html[data-netbox-color-mode=dark] .alert.alert-red-400 a:not(.btn),html[data-netbox-color-mode=dark] .table-red-400 a:not(.btn){font-weight:700;color:#2d1315}html[data-netbox-color-mode=dark] .alert.alert-red-400 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-red-400 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-red-400 a:not(.btn){font-weight:700;color:#2d1315}html[data-netbox-color-mode=dark] .badge.bg-red-400,html[data-netbox-color-mode=dark] .toast.bg-red-400,html[data-netbox-color-mode=dark] .toast-header.bg-red-400,html[data-netbox-color-mode=dark] .progress-bar.bg-red-400{color:#000}html[data-netbox-color-mode=dark] .bg-red-500 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%232c0b0e'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-red-500{color:#dc3545}html[data-netbox-color-mode=dark] .btn.btn-ghost-red-500:hover{background-color:#dc35451f}html[data-netbox-color-mode=dark] .alert.alert-red-500 a:not(.btn),html[data-netbox-color-mode=dark] .table-red-500 a:not(.btn){font-weight:700;color:#2c0b0e}html[data-netbox-color-mode=dark] .alert.alert-red-500 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-red-500 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-red-500 a:not(.btn){font-weight:700;color:#f8d7da}html[data-netbox-color-mode=dark] .badge.bg-red-500,html[data-netbox-color-mode=dark] .toast.bg-red-500,html[data-netbox-color-mode=dark] .toast-header.bg-red-500,html[data-netbox-color-mode=dark] .progress-bar.bg-red-500{color:#fff}html[data-netbox-color-mode=dark] .bg-red-600 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23efd4d7'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-red-600{color:#b02a37}html[data-netbox-color-mode=dark] .btn.btn-ghost-red-600:hover{background-color:#b02a371f}html[data-netbox-color-mode=dark] .alert.alert-red-600 a:not(.btn),html[data-netbox-color-mode=dark] .table-red-600 a:not(.btn){font-weight:700;color:#efd4d7}html[data-netbox-color-mode=dark] .alert.alert-red-600 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-red-600 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-red-600 a:not(.btn){font-weight:700;color:#efd4d7}html[data-netbox-color-mode=dark] .badge.bg-red-600,html[data-netbox-color-mode=dark] .toast.bg-red-600,html[data-netbox-color-mode=dark] .toast-header.bg-red-600,html[data-netbox-color-mode=dark] .progress-bar.bg-red-600{color:#fff}html[data-netbox-color-mode=dark] .bg-red-700 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23e6d2d4'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-red-700{color:#842029}html[data-netbox-color-mode=dark] .btn.btn-ghost-red-700:hover{background-color:#8420291f}html[data-netbox-color-mode=dark] .alert.alert-red-700 a:not(.btn),html[data-netbox-color-mode=dark] .table-red-700 a:not(.btn){font-weight:700;color:#e6d2d4}html[data-netbox-color-mode=dark] .alert.alert-red-700 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-red-700 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-red-700 a:not(.btn){font-weight:700;color:#e6d2d4}html[data-netbox-color-mode=dark] .badge.bg-red-700,html[data-netbox-color-mode=dark] .toast.bg-red-700,html[data-netbox-color-mode=dark] .toast-header.bg-red-700,html[data-netbox-color-mode=dark] .progress-bar.bg-red-700{color:#fff}html[data-netbox-color-mode=dark] .bg-red-800 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23ded0d2'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-red-800{color:#58151c}html[data-netbox-color-mode=dark] .btn.btn-ghost-red-800:hover{background-color:#58151c1f}html[data-netbox-color-mode=dark] .alert.alert-red-800 a:not(.btn),html[data-netbox-color-mode=dark] .table-red-800 a:not(.btn){font-weight:700;color:#ded0d2}html[data-netbox-color-mode=dark] .alert.alert-red-800 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-red-800 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-red-800 a:not(.btn){font-weight:700;color:#ded0d2}html[data-netbox-color-mode=dark] .badge.bg-red-800,html[data-netbox-color-mode=dark] .toast.bg-red-800,html[data-netbox-color-mode=dark] .toast-header.bg-red-800,html[data-netbox-color-mode=dark] .progress-bar.bg-red-800{color:#fff}html[data-netbox-color-mode=dark] .bg-red-900 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23d5cecf'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-red-900{color:#2c0b0e}html[data-netbox-color-mode=dark] .btn.btn-ghost-red-900:hover{background-color:#2c0b0e1f}html[data-netbox-color-mode=dark] .alert.alert-red-900 a:not(.btn),html[data-netbox-color-mode=dark] .table-red-900 a:not(.btn){font-weight:700;color:#d5cecf}html[data-netbox-color-mode=dark] .alert.alert-red-900 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-red-900 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-red-900 a:not(.btn){font-weight:700;color:#d5cecf}html[data-netbox-color-mode=dark] .badge.bg-red-900,html[data-netbox-color-mode=dark] .toast.bg-red-900,html[data-netbox-color-mode=dark] .toast-header.bg-red-900,html[data-netbox-color-mode=dark] .progress-bar.bg-red-900{color:#fff}html[data-netbox-color-mode=dark] .bg-yellow-100 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23333129'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-yellow-100{color:#fff3cd}html[data-netbox-color-mode=dark] .btn.btn-ghost-yellow-100:hover{background-color:#fff3cd1f}html[data-netbox-color-mode=dark] .alert.alert-yellow-100 a:not(.btn),html[data-netbox-color-mode=dark] .table-yellow-100 a:not(.btn){font-weight:700;color:#333129}html[data-netbox-color-mode=dark] .alert.alert-yellow-100 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-yellow-100 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-yellow-100 a:not(.btn){font-weight:700;color:#333129}html[data-netbox-color-mode=dark] .badge.bg-yellow-100,html[data-netbox-color-mode=dark] .toast.bg-yellow-100,html[data-netbox-color-mode=dark] .toast-header.bg-yellow-100,html[data-netbox-color-mode=dark] .progress-bar.bg-yellow-100{color:#000}html[data-netbox-color-mode=dark] .bg-yellow-200 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23332e1f'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-yellow-200{color:#ffe69c}html[data-netbox-color-mode=dark] .btn.btn-ghost-yellow-200:hover{background-color:#ffe69c1f}html[data-netbox-color-mode=dark] .alert.alert-yellow-200 a:not(.btn),html[data-netbox-color-mode=dark] .table-yellow-200 a:not(.btn){font-weight:700;color:#332e1f}html[data-netbox-color-mode=dark] .alert.alert-yellow-200 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-yellow-200 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-yellow-200 a:not(.btn){font-weight:700;color:#332e1f}html[data-netbox-color-mode=dark] .badge.bg-yellow-200,html[data-netbox-color-mode=dark] .toast.bg-yellow-200,html[data-netbox-color-mode=dark] .toast-header.bg-yellow-200,html[data-netbox-color-mode=dark] .progress-bar.bg-yellow-200{color:#000}html[data-netbox-color-mode=dark] .bg-yellow-300 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23332c15'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-yellow-300{color:#ffda6a}html[data-netbox-color-mode=dark] .btn.btn-ghost-yellow-300:hover{background-color:#ffda6a1f}html[data-netbox-color-mode=dark] .alert.alert-yellow-300 a:not(.btn),html[data-netbox-color-mode=dark] .table-yellow-300 a:not(.btn){font-weight:700;color:#332c15}html[data-netbox-color-mode=dark] .alert.alert-yellow-300 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-yellow-300 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-yellow-300 a:not(.btn){font-weight:700;color:#332c15}html[data-netbox-color-mode=dark] .badge.bg-yellow-300,html[data-netbox-color-mode=dark] .toast.bg-yellow-300,html[data-netbox-color-mode=dark] .toast-header.bg-yellow-300,html[data-netbox-color-mode=dark] .progress-bar.bg-yellow-300{color:#000}html[data-netbox-color-mode=dark] .bg-yellow-400 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%2333290b'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-yellow-400{color:#ffcd39}html[data-netbox-color-mode=dark] .btn.btn-ghost-yellow-400:hover{background-color:#ffcd391f}html[data-netbox-color-mode=dark] .alert.alert-yellow-400 a:not(.btn),html[data-netbox-color-mode=dark] .table-yellow-400 a:not(.btn){font-weight:700;color:#33290b}html[data-netbox-color-mode=dark] .alert.alert-yellow-400 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-yellow-400 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-yellow-400 a:not(.btn){font-weight:700;color:#33290b}html[data-netbox-color-mode=dark] .badge.bg-yellow-400,html[data-netbox-color-mode=dark] .toast.bg-yellow-400,html[data-netbox-color-mode=dark] .toast-header.bg-yellow-400,html[data-netbox-color-mode=dark] .progress-bar.bg-yellow-400{color:#000}html[data-netbox-color-mode=dark] .bg-yellow-500 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23332701'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-yellow-500{color:#ffc107}html[data-netbox-color-mode=dark] .btn.btn-ghost-yellow-500:hover{background-color:#ffc1071f}html[data-netbox-color-mode=dark] .alert.alert-yellow-500 a:not(.btn),html[data-netbox-color-mode=dark] .table-yellow-500 a:not(.btn){font-weight:700;color:#332701}html[data-netbox-color-mode=dark] .alert.alert-yellow-500 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-yellow-500 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-yellow-500 a:not(.btn){font-weight:700;color:#332701}html[data-netbox-color-mode=dark] .badge.bg-yellow-500,html[data-netbox-color-mode=dark] .toast.bg-yellow-500,html[data-netbox-color-mode=dark] .toast-header.bg-yellow-500,html[data-netbox-color-mode=dark] .progress-bar.bg-yellow-500{color:#000}html[data-netbox-color-mode=dark] .bg-yellow-600 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23291f01'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-yellow-600{color:#cc9a06}html[data-netbox-color-mode=dark] .btn.btn-ghost-yellow-600:hover{background-color:#cc9a061f}html[data-netbox-color-mode=dark] .alert.alert-yellow-600 a:not(.btn),html[data-netbox-color-mode=dark] .table-yellow-600 a:not(.btn){font-weight:700;color:#291f01}html[data-netbox-color-mode=dark] .alert.alert-yellow-600 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-yellow-600 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-yellow-600 a:not(.btn){font-weight:700;color:#291f01}html[data-netbox-color-mode=dark] .badge.bg-yellow-600,html[data-netbox-color-mode=dark] .toast.bg-yellow-600,html[data-netbox-color-mode=dark] .toast-header.bg-yellow-600,html[data-netbox-color-mode=dark] .progress-bar.bg-yellow-600{color:#000}html[data-netbox-color-mode=dark] .bg-yellow-700 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%231f1701'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-yellow-700{color:#997404}html[data-netbox-color-mode=dark] .btn.btn-ghost-yellow-700:hover{background-color:#9974041f}html[data-netbox-color-mode=dark] .alert.alert-yellow-700 a:not(.btn),html[data-netbox-color-mode=dark] .table-yellow-700 a:not(.btn){font-weight:700;color:#1f1701}html[data-netbox-color-mode=dark] .alert.alert-yellow-700 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-yellow-700 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-yellow-700 a:not(.btn){font-weight:700;color:#1f1701}html[data-netbox-color-mode=dark] .badge.bg-yellow-700,html[data-netbox-color-mode=dark] .toast.bg-yellow-700,html[data-netbox-color-mode=dark] .toast-header.bg-yellow-700,html[data-netbox-color-mode=dark] .progress-bar.bg-yellow-700{color:#000}html[data-netbox-color-mode=dark] .bg-yellow-800 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23e0dbcd'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-yellow-800{color:#664d03}html[data-netbox-color-mode=dark] .btn.btn-ghost-yellow-800:hover{background-color:#664d031f}html[data-netbox-color-mode=dark] .alert.alert-yellow-800 a:not(.btn),html[data-netbox-color-mode=dark] .table-yellow-800 a:not(.btn){font-weight:700;color:#e0dbcd}html[data-netbox-color-mode=dark] .alert.alert-yellow-800 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-yellow-800 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-yellow-800 a:not(.btn){font-weight:700;color:#e0dbcd}html[data-netbox-color-mode=dark] .badge.bg-yellow-800,html[data-netbox-color-mode=dark] .toast.bg-yellow-800,html[data-netbox-color-mode=dark] .toast-header.bg-yellow-800,html[data-netbox-color-mode=dark] .progress-bar.bg-yellow-800{color:#fff}html[data-netbox-color-mode=dark] .bg-yellow-900 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23d6d4cc'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-yellow-900{color:#332701}html[data-netbox-color-mode=dark] .btn.btn-ghost-yellow-900:hover{background-color:#3327011f}html[data-netbox-color-mode=dark] .alert.alert-yellow-900 a:not(.btn),html[data-netbox-color-mode=dark] .table-yellow-900 a:not(.btn){font-weight:700;color:#d6d4cc}html[data-netbox-color-mode=dark] .alert.alert-yellow-900 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-yellow-900 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-yellow-900 a:not(.btn){font-weight:700;color:#d6d4cc}html[data-netbox-color-mode=dark] .badge.bg-yellow-900,html[data-netbox-color-mode=dark] .toast.bg-yellow-900,html[data-netbox-color-mode=dark] .toast-header.bg-yellow-900,html[data-netbox-color-mode=dark] .progress-bar.bg-yellow-900{color:#fff}html[data-netbox-color-mode=dark] .bg-green-100 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%232a2e2c'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-green-100{color:#d1e7dd}html[data-netbox-color-mode=dark] .btn.btn-ghost-green-100:hover{background-color:#d1e7dd1f}html[data-netbox-color-mode=dark] .alert.alert-green-100 a:not(.btn),html[data-netbox-color-mode=dark] .table-green-100 a:not(.btn){font-weight:700;color:#2a2e2c}html[data-netbox-color-mode=dark] .alert.alert-green-100 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-green-100 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-green-100 a:not(.btn){font-weight:700;color:#2a2e2c}html[data-netbox-color-mode=dark] .badge.bg-green-100,html[data-netbox-color-mode=dark] .toast.bg-green-100,html[data-netbox-color-mode=dark] .toast-header.bg-green-100,html[data-netbox-color-mode=dark] .progress-bar.bg-green-100{color:#000}html[data-netbox-color-mode=dark] .bg-green-200 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23212925'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-green-200{color:#a3cfbb}html[data-netbox-color-mode=dark] .btn.btn-ghost-green-200:hover{background-color:#a3cfbb1f}html[data-netbox-color-mode=dark] .alert.alert-green-200 a:not(.btn),html[data-netbox-color-mode=dark] .table-green-200 a:not(.btn){font-weight:700;color:#212925}html[data-netbox-color-mode=dark] .alert.alert-green-200 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-green-200 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-green-200 a:not(.btn){font-weight:700;color:#212925}html[data-netbox-color-mode=dark] .badge.bg-green-200,html[data-netbox-color-mode=dark] .toast.bg-green-200,html[data-netbox-color-mode=dark] .toast-header.bg-green-200,html[data-netbox-color-mode=dark] .progress-bar.bg-green-200{color:#000}html[data-netbox-color-mode=dark] .bg-green-300 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%2317251e'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-green-300{color:#75b798}html[data-netbox-color-mode=dark] .btn.btn-ghost-green-300:hover{background-color:#75b7981f}html[data-netbox-color-mode=dark] .alert.alert-green-300 a:not(.btn),html[data-netbox-color-mode=dark] .table-green-300 a:not(.btn){font-weight:700;color:#17251e}html[data-netbox-color-mode=dark] .alert.alert-green-300 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-green-300 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-green-300 a:not(.btn){font-weight:700;color:#17251e}html[data-netbox-color-mode=dark] .badge.bg-green-300,html[data-netbox-color-mode=dark] .toast.bg-green-300,html[data-netbox-color-mode=dark] .toast-header.bg-green-300,html[data-netbox-color-mode=dark] .progress-bar.bg-green-300{color:#000}html[data-netbox-color-mode=dark] .bg-green-400 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230e2018'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-green-400{color:#479f76}html[data-netbox-color-mode=dark] .btn.btn-ghost-green-400:hover{background-color:#479f761f}html[data-netbox-color-mode=dark] .alert.alert-green-400 a:not(.btn),html[data-netbox-color-mode=dark] .table-green-400 a:not(.btn){font-weight:700;color:#0e2018}html[data-netbox-color-mode=dark] .alert.alert-green-400 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-green-400 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-green-400 a:not(.btn){font-weight:700;color:#0e2018}html[data-netbox-color-mode=dark] .badge.bg-green-400,html[data-netbox-color-mode=dark] .toast.bg-green-400,html[data-netbox-color-mode=dark] .toast-header.bg-green-400,html[data-netbox-color-mode=dark] .progress-bar.bg-green-400{color:#000}html[data-netbox-color-mode=dark] .bg-green-500 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23051b11'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-green-500{color:#198754}html[data-netbox-color-mode=dark] .btn.btn-ghost-green-500:hover{background-color:#1987541f}html[data-netbox-color-mode=dark] .alert.alert-green-500 a:not(.btn),html[data-netbox-color-mode=dark] .table-green-500 a:not(.btn){font-weight:700;color:#051b11}html[data-netbox-color-mode=dark] .alert.alert-green-500 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-green-500 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-green-500 a:not(.btn){font-weight:700;color:#d1e7dd}html[data-netbox-color-mode=dark] .badge.bg-green-500,html[data-netbox-color-mode=dark] .toast.bg-green-500,html[data-netbox-color-mode=dark] .toast-header.bg-green-500,html[data-netbox-color-mode=dark] .progress-bar.bg-green-500{color:#fff}html[data-netbox-color-mode=dark] .bg-green-600 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23d0e2d9'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-green-600{color:#146c43}html[data-netbox-color-mode=dark] .btn.btn-ghost-green-600:hover{background-color:#146c431f}html[data-netbox-color-mode=dark] .alert.alert-green-600 a:not(.btn),html[data-netbox-color-mode=dark] .table-green-600 a:not(.btn){font-weight:700;color:#d0e2d9}html[data-netbox-color-mode=dark] .alert.alert-green-600 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-green-600 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-green-600 a:not(.btn){font-weight:700;color:#d0e2d9}html[data-netbox-color-mode=dark] .badge.bg-green-600,html[data-netbox-color-mode=dark] .toast.bg-green-600,html[data-netbox-color-mode=dark] .toast-header.bg-green-600,html[data-netbox-color-mode=dark] .progress-bar.bg-green-600{color:#fff}html[data-netbox-color-mode=dark] .bg-green-700 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23cfdcd6'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-green-700{color:#0f5132}html[data-netbox-color-mode=dark] .btn.btn-ghost-green-700:hover{background-color:#0f51321f}html[data-netbox-color-mode=dark] .alert.alert-green-700 a:not(.btn),html[data-netbox-color-mode=dark] .table-green-700 a:not(.btn){font-weight:700;color:#cfdcd6}html[data-netbox-color-mode=dark] .alert.alert-green-700 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-green-700 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-green-700 a:not(.btn){font-weight:700;color:#cfdcd6}html[data-netbox-color-mode=dark] .badge.bg-green-700,html[data-netbox-color-mode=dark] .toast.bg-green-700,html[data-netbox-color-mode=dark] .toast-header.bg-green-700,html[data-netbox-color-mode=dark] .progress-bar.bg-green-700{color:#fff}html[data-netbox-color-mode=dark] .bg-green-800 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23ced7d3'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-green-800{color:#0a3622}html[data-netbox-color-mode=dark] .btn.btn-ghost-green-800:hover{background-color:#0a36221f}html[data-netbox-color-mode=dark] .alert.alert-green-800 a:not(.btn),html[data-netbox-color-mode=dark] .table-green-800 a:not(.btn){font-weight:700;color:#ced7d3}html[data-netbox-color-mode=dark] .alert.alert-green-800 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-green-800 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-green-800 a:not(.btn){font-weight:700;color:#ced7d3}html[data-netbox-color-mode=dark] .badge.bg-green-800,html[data-netbox-color-mode=dark] .toast.bg-green-800,html[data-netbox-color-mode=dark] .toast-header.bg-green-800,html[data-netbox-color-mode=dark] .progress-bar.bg-green-800{color:#fff}html[data-netbox-color-mode=dark] .bg-green-900 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23cdd1cf'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-green-900{color:#051b11}html[data-netbox-color-mode=dark] .btn.btn-ghost-green-900:hover{background-color:#051b111f}html[data-netbox-color-mode=dark] .alert.alert-green-900 a:not(.btn),html[data-netbox-color-mode=dark] .table-green-900 a:not(.btn){font-weight:700;color:#cdd1cf}html[data-netbox-color-mode=dark] .alert.alert-green-900 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-green-900 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-green-900 a:not(.btn){font-weight:700;color:#cdd1cf}html[data-netbox-color-mode=dark] .badge.bg-green-900,html[data-netbox-color-mode=dark] .toast.bg-green-900,html[data-netbox-color-mode=dark] .toast-header.bg-green-900,html[data-netbox-color-mode=dark] .progress-bar.bg-green-900{color:#fff}html[data-netbox-color-mode=dark] .bg-blue-100 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23292d33'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-blue-100{color:#cfe2ff}html[data-netbox-color-mode=dark] .btn.btn-ghost-blue-100:hover{background-color:#cfe2ff1f}html[data-netbox-color-mode=dark] .alert.alert-blue-100 a:not(.btn),html[data-netbox-color-mode=dark] .table-blue-100 a:not(.btn){font-weight:700;color:#292d33}html[data-netbox-color-mode=dark] .alert.alert-blue-100 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-blue-100 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-blue-100 a:not(.btn){font-weight:700;color:#292d33}html[data-netbox-color-mode=dark] .badge.bg-blue-100,html[data-netbox-color-mode=dark] .toast.bg-blue-100,html[data-netbox-color-mode=dark] .toast-header.bg-blue-100,html[data-netbox-color-mode=dark] .progress-bar.bg-blue-100{color:#000}html[data-netbox-color-mode=dark] .bg-blue-200 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23202733'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-blue-200{color:#9ec5fe}html[data-netbox-color-mode=dark] .btn.btn-ghost-blue-200:hover{background-color:#9ec5fe1f}html[data-netbox-color-mode=dark] .alert.alert-blue-200 a:not(.btn),html[data-netbox-color-mode=dark] .table-blue-200 a:not(.btn){font-weight:700;color:#202733}html[data-netbox-color-mode=dark] .alert.alert-blue-200 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-blue-200 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-blue-200 a:not(.btn){font-weight:700;color:#202733}html[data-netbox-color-mode=dark] .badge.bg-blue-200,html[data-netbox-color-mode=dark] .toast.bg-blue-200,html[data-netbox-color-mode=dark] .toast-header.bg-blue-200,html[data-netbox-color-mode=dark] .progress-bar.bg-blue-200{color:#000}html[data-netbox-color-mode=dark] .bg-blue-300 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23162233'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-blue-300{color:#6ea8fe}html[data-netbox-color-mode=dark] .btn.btn-ghost-blue-300:hover{background-color:#6ea8fe1f}html[data-netbox-color-mode=dark] .alert.alert-blue-300 a:not(.btn),html[data-netbox-color-mode=dark] .table-blue-300 a:not(.btn){font-weight:700;color:#162233}html[data-netbox-color-mode=dark] .alert.alert-blue-300 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-blue-300 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-blue-300 a:not(.btn){font-weight:700;color:#162233}html[data-netbox-color-mode=dark] .badge.bg-blue-300,html[data-netbox-color-mode=dark] .toast.bg-blue-300,html[data-netbox-color-mode=dark] .toast-header.bg-blue-300,html[data-netbox-color-mode=dark] .progress-bar.bg-blue-300{color:#000}html[data-netbox-color-mode=dark] .bg-blue-400 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230c1c33'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-blue-400{color:#3d8bfd}html[data-netbox-color-mode=dark] .btn.btn-ghost-blue-400:hover{background-color:#3d8bfd1f}html[data-netbox-color-mode=dark] .alert.alert-blue-400 a:not(.btn),html[data-netbox-color-mode=dark] .table-blue-400 a:not(.btn){font-weight:700;color:#0c1c33}html[data-netbox-color-mode=dark] .alert.alert-blue-400 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-blue-400 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-blue-400 a:not(.btn){font-weight:700;color:#0c1c33}html[data-netbox-color-mode=dark] .badge.bg-blue-400,html[data-netbox-color-mode=dark] .toast.bg-blue-400,html[data-netbox-color-mode=dark] .toast-header.bg-blue-400,html[data-netbox-color-mode=dark] .progress-bar.bg-blue-400{color:#000}html[data-netbox-color-mode=dark] .bg-blue-500 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23031633'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-blue-500{color:#0d6efd}html[data-netbox-color-mode=dark] .btn.btn-ghost-blue-500:hover{background-color:#0d6efd1f}html[data-netbox-color-mode=dark] .alert.alert-blue-500 a:not(.btn),html[data-netbox-color-mode=dark] .table-blue-500 a:not(.btn){font-weight:700;color:#031633}html[data-netbox-color-mode=dark] .alert.alert-blue-500 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-blue-500 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-blue-500 a:not(.btn){font-weight:700;color:#cfe2ff}html[data-netbox-color-mode=dark] .badge.bg-blue-500,html[data-netbox-color-mode=dark] .toast.bg-blue-500,html[data-netbox-color-mode=dark] .toast-header.bg-blue-500,html[data-netbox-color-mode=dark] .progress-bar.bg-blue-500{color:#fff}html[data-netbox-color-mode=dark] .bg-blue-600 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23cedef4'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-blue-600{color:#0a58ca}html[data-netbox-color-mode=dark] .btn.btn-ghost-blue-600:hover{background-color:#0a58ca1f}html[data-netbox-color-mode=dark] .alert.alert-blue-600 a:not(.btn),html[data-netbox-color-mode=dark] .table-blue-600 a:not(.btn){font-weight:700;color:#cedef4}html[data-netbox-color-mode=dark] .alert.alert-blue-600 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-blue-600 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-blue-600 a:not(.btn){font-weight:700;color:#cedef4}html[data-netbox-color-mode=dark] .badge.bg-blue-600,html[data-netbox-color-mode=dark] .toast.bg-blue-600,html[data-netbox-color-mode=dark] .toast-header.bg-blue-600,html[data-netbox-color-mode=dark] .progress-bar.bg-blue-600{color:#fff}html[data-netbox-color-mode=dark] .bg-blue-700 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23ced9ea'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-blue-700{color:#084298}html[data-netbox-color-mode=dark] .btn.btn-ghost-blue-700:hover{background-color:#0842981f}html[data-netbox-color-mode=dark] .alert.alert-blue-700 a:not(.btn),html[data-netbox-color-mode=dark] .table-blue-700 a:not(.btn){font-weight:700;color:#ced9ea}html[data-netbox-color-mode=dark] .alert.alert-blue-700 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-blue-700 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-blue-700 a:not(.btn){font-weight:700;color:#ced9ea}html[data-netbox-color-mode=dark] .badge.bg-blue-700,html[data-netbox-color-mode=dark] .toast.bg-blue-700,html[data-netbox-color-mode=dark] .toast-header.bg-blue-700,html[data-netbox-color-mode=dark] .progress-bar.bg-blue-700{color:#fff}html[data-netbox-color-mode=dark] .bg-blue-800 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23cdd5e0'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-blue-800{color:#052c65}html[data-netbox-color-mode=dark] .btn.btn-ghost-blue-800:hover{background-color:#052c651f}html[data-netbox-color-mode=dark] .alert.alert-blue-800 a:not(.btn),html[data-netbox-color-mode=dark] .table-blue-800 a:not(.btn){font-weight:700;color:#cdd5e0}html[data-netbox-color-mode=dark] .alert.alert-blue-800 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-blue-800 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-blue-800 a:not(.btn){font-weight:700;color:#cdd5e0}html[data-netbox-color-mode=dark] .badge.bg-blue-800,html[data-netbox-color-mode=dark] .toast.bg-blue-800,html[data-netbox-color-mode=dark] .toast-header.bg-blue-800,html[data-netbox-color-mode=dark] .progress-bar.bg-blue-800{color:#fff}html[data-netbox-color-mode=dark] .bg-blue-900 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23cdd0d6'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-blue-900{color:#031633}html[data-netbox-color-mode=dark] .btn.btn-ghost-blue-900:hover{background-color:#0316331f}html[data-netbox-color-mode=dark] .alert.alert-blue-900 a:not(.btn),html[data-netbox-color-mode=dark] .table-blue-900 a:not(.btn){font-weight:700;color:#cdd0d6}html[data-netbox-color-mode=dark] .alert.alert-blue-900 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-blue-900 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-blue-900 a:not(.btn){font-weight:700;color:#cdd0d6}html[data-netbox-color-mode=dark] .badge.bg-blue-900,html[data-netbox-color-mode=dark] .toast.bg-blue-900,html[data-netbox-color-mode=dark] .toast-header.bg-blue-900,html[data-netbox-color-mode=dark] .progress-bar.bg-blue-900{color:#fff}html[data-netbox-color-mode=dark] .bg-cyan-100 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23293132'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-cyan-100{color:#cff4fc}html[data-netbox-color-mode=dark] .btn.btn-ghost-cyan-100:hover{background-color:#cff4fc1f}html[data-netbox-color-mode=dark] .alert.alert-cyan-100 a:not(.btn),html[data-netbox-color-mode=dark] .table-cyan-100 a:not(.btn){font-weight:700;color:#293132}html[data-netbox-color-mode=dark] .alert.alert-cyan-100 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-cyan-100 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-cyan-100 a:not(.btn){font-weight:700;color:#293132}html[data-netbox-color-mode=dark] .badge.bg-cyan-100,html[data-netbox-color-mode=dark] .toast.bg-cyan-100,html[data-netbox-color-mode=dark] .toast-header.bg-cyan-100,html[data-netbox-color-mode=dark] .progress-bar.bg-cyan-100{color:#000}html[data-netbox-color-mode=dark] .bg-cyan-200 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23202f32'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-cyan-200{color:#9eeaf9}html[data-netbox-color-mode=dark] .btn.btn-ghost-cyan-200:hover{background-color:#9eeaf91f}html[data-netbox-color-mode=dark] .alert.alert-cyan-200 a:not(.btn),html[data-netbox-color-mode=dark] .table-cyan-200 a:not(.btn){font-weight:700;color:#202f32}html[data-netbox-color-mode=dark] .alert.alert-cyan-200 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-cyan-200 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-cyan-200 a:not(.btn){font-weight:700;color:#202f32}html[data-netbox-color-mode=dark] .badge.bg-cyan-200,html[data-netbox-color-mode=dark] .toast.bg-cyan-200,html[data-netbox-color-mode=dark] .toast-header.bg-cyan-200,html[data-netbox-color-mode=dark] .progress-bar.bg-cyan-200{color:#000}html[data-netbox-color-mode=dark] .bg-cyan-300 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23162d31'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-cyan-300{color:#6edff6}html[data-netbox-color-mode=dark] .btn.btn-ghost-cyan-300:hover{background-color:#6edff61f}html[data-netbox-color-mode=dark] .alert.alert-cyan-300 a:not(.btn),html[data-netbox-color-mode=dark] .table-cyan-300 a:not(.btn){font-weight:700;color:#162d31}html[data-netbox-color-mode=dark] .alert.alert-cyan-300 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-cyan-300 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-cyan-300 a:not(.btn){font-weight:700;color:#162d31}html[data-netbox-color-mode=dark] .badge.bg-cyan-300,html[data-netbox-color-mode=dark] .toast.bg-cyan-300,html[data-netbox-color-mode=dark] .toast-header.bg-cyan-300,html[data-netbox-color-mode=dark] .progress-bar.bg-cyan-300{color:#000}html[data-netbox-color-mode=dark] .bg-cyan-400 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230c2b31'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-cyan-400{color:#3dd5f3}html[data-netbox-color-mode=dark] .btn.btn-ghost-cyan-400:hover{background-color:#3dd5f31f}html[data-netbox-color-mode=dark] .alert.alert-cyan-400 a:not(.btn),html[data-netbox-color-mode=dark] .table-cyan-400 a:not(.btn){font-weight:700;color:#0c2b31}html[data-netbox-color-mode=dark] .alert.alert-cyan-400 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-cyan-400 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-cyan-400 a:not(.btn){font-weight:700;color:#0c2b31}html[data-netbox-color-mode=dark] .badge.bg-cyan-400,html[data-netbox-color-mode=dark] .toast.bg-cyan-400,html[data-netbox-color-mode=dark] .toast-header.bg-cyan-400,html[data-netbox-color-mode=dark] .progress-bar.bg-cyan-400{color:#000}html[data-netbox-color-mode=dark] .bg-cyan-500 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23032830'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-cyan-500{color:#0dcaf0}html[data-netbox-color-mode=dark] .btn.btn-ghost-cyan-500:hover{background-color:#0dcaf01f}html[data-netbox-color-mode=dark] .alert.alert-cyan-500 a:not(.btn),html[data-netbox-color-mode=dark] .table-cyan-500 a:not(.btn){font-weight:700;color:#032830}html[data-netbox-color-mode=dark] .alert.alert-cyan-500 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-cyan-500 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-cyan-500 a:not(.btn){font-weight:700;color:#032830}html[data-netbox-color-mode=dark] .badge.bg-cyan-500,html[data-netbox-color-mode=dark] .toast.bg-cyan-500,html[data-netbox-color-mode=dark] .toast-header.bg-cyan-500,html[data-netbox-color-mode=dark] .progress-bar.bg-cyan-500{color:#000}html[data-netbox-color-mode=dark] .bg-cyan-600 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23022026'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-cyan-600{color:#0aa2c0}html[data-netbox-color-mode=dark] .btn.btn-ghost-cyan-600:hover{background-color:#0aa2c01f}html[data-netbox-color-mode=dark] .alert.alert-cyan-600 a:not(.btn),html[data-netbox-color-mode=dark] .table-cyan-600 a:not(.btn){font-weight:700;color:#022026}html[data-netbox-color-mode=dark] .alert.alert-cyan-600 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-cyan-600 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-cyan-600 a:not(.btn){font-weight:700;color:#022026}html[data-netbox-color-mode=dark] .badge.bg-cyan-600,html[data-netbox-color-mode=dark] .toast.bg-cyan-600,html[data-netbox-color-mode=dark] .toast-header.bg-cyan-600,html[data-netbox-color-mode=dark] .progress-bar.bg-cyan-600{color:#000}html[data-netbox-color-mode=dark] .bg-cyan-700 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23cee4e9'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-cyan-700{color:#087990}html[data-netbox-color-mode=dark] .btn.btn-ghost-cyan-700:hover{background-color:#0879901f}html[data-netbox-color-mode=dark] .alert.alert-cyan-700 a:not(.btn),html[data-netbox-color-mode=dark] .table-cyan-700 a:not(.btn){font-weight:700;color:#cee4e9}html[data-netbox-color-mode=dark] .alert.alert-cyan-700 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-cyan-700 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-cyan-700 a:not(.btn){font-weight:700;color:#cee4e9}html[data-netbox-color-mode=dark] .badge.bg-cyan-700,html[data-netbox-color-mode=dark] .toast.bg-cyan-700,html[data-netbox-color-mode=dark] .toast-header.bg-cyan-700,html[data-netbox-color-mode=dark] .progress-bar.bg-cyan-700{color:#fff}html[data-netbox-color-mode=dark] .bg-cyan-800 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23cddcdf'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-cyan-800{color:#055160}html[data-netbox-color-mode=dark] .btn.btn-ghost-cyan-800:hover{background-color:#0551601f}html[data-netbox-color-mode=dark] .alert.alert-cyan-800 a:not(.btn),html[data-netbox-color-mode=dark] .table-cyan-800 a:not(.btn){font-weight:700;color:#cddcdf}html[data-netbox-color-mode=dark] .alert.alert-cyan-800 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-cyan-800 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-cyan-800 a:not(.btn){font-weight:700;color:#cddcdf}html[data-netbox-color-mode=dark] .badge.bg-cyan-800,html[data-netbox-color-mode=dark] .toast.bg-cyan-800,html[data-netbox-color-mode=dark] .toast-header.bg-cyan-800,html[data-netbox-color-mode=dark] .progress-bar.bg-cyan-800{color:#fff}html[data-netbox-color-mode=dark] .bg-cyan-900 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23cdd4d6'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-cyan-900{color:#032830}html[data-netbox-color-mode=dark] .btn.btn-ghost-cyan-900:hover{background-color:#0328301f}html[data-netbox-color-mode=dark] .alert.alert-cyan-900 a:not(.btn),html[data-netbox-color-mode=dark] .table-cyan-900 a:not(.btn){font-weight:700;color:#cdd4d6}html[data-netbox-color-mode=dark] .alert.alert-cyan-900 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-cyan-900 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-cyan-900 a:not(.btn){font-weight:700;color:#cdd4d6}html[data-netbox-color-mode=dark] .badge.bg-cyan-900,html[data-netbox-color-mode=dark] .toast.bg-cyan-900,html[data-netbox-color-mode=dark] .toast-header.bg-cyan-900,html[data-netbox-color-mode=dark] .progress-bar.bg-cyan-900{color:#fff}html[data-netbox-color-mode=dark] .bg-indigo-100 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%232d2932'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-indigo-100{color:#e0cffc}html[data-netbox-color-mode=dark] .btn.btn-ghost-indigo-100:hover{background-color:#e0cffc1f}html[data-netbox-color-mode=dark] .alert.alert-indigo-100 a:not(.btn),html[data-netbox-color-mode=dark] .table-indigo-100 a:not(.btn){font-weight:700;color:#2d2932}html[data-netbox-color-mode=dark] .alert.alert-indigo-100 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-indigo-100 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-indigo-100 a:not(.btn){font-weight:700;color:#2d2932}html[data-netbox-color-mode=dark] .badge.bg-indigo-100,html[data-netbox-color-mode=dark] .toast.bg-indigo-100,html[data-netbox-color-mode=dark] .toast-header.bg-indigo-100,html[data-netbox-color-mode=dark] .progress-bar.bg-indigo-100{color:#000}html[data-netbox-color-mode=dark] .bg-indigo-200 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23272032'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-indigo-200{color:#c29ffa}html[data-netbox-color-mode=dark] .btn.btn-ghost-indigo-200:hover{background-color:#c29ffa1f}html[data-netbox-color-mode=dark] .alert.alert-indigo-200 a:not(.btn),html[data-netbox-color-mode=dark] .table-indigo-200 a:not(.btn){font-weight:700;color:#272032}html[data-netbox-color-mode=dark] .alert.alert-indigo-200 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-indigo-200 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-indigo-200 a:not(.btn){font-weight:700;color:#272032}html[data-netbox-color-mode=dark] .badge.bg-indigo-200,html[data-netbox-color-mode=dark] .toast.bg-indigo-200,html[data-netbox-color-mode=dark] .toast-header.bg-indigo-200,html[data-netbox-color-mode=dark] .progress-bar.bg-indigo-200{color:#000}html[data-netbox-color-mode=dark] .bg-indigo-300 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23211631'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-indigo-300{color:#a370f7}html[data-netbox-color-mode=dark] .btn.btn-ghost-indigo-300:hover{background-color:#a370f71f}html[data-netbox-color-mode=dark] .alert.alert-indigo-300 a:not(.btn),html[data-netbox-color-mode=dark] .table-indigo-300 a:not(.btn){font-weight:700;color:#211631}html[data-netbox-color-mode=dark] .alert.alert-indigo-300 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-indigo-300 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-indigo-300 a:not(.btn){font-weight:700;color:#211631}html[data-netbox-color-mode=dark] .badge.bg-indigo-300,html[data-netbox-color-mode=dark] .toast.bg-indigo-300,html[data-netbox-color-mode=dark] .toast-header.bg-indigo-300,html[data-netbox-color-mode=dark] .progress-bar.bg-indigo-300{color:#000}html[data-netbox-color-mode=dark] .bg-indigo-400 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23e7d9fd'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-indigo-400{color:#8540f5}html[data-netbox-color-mode=dark] .btn.btn-ghost-indigo-400:hover{background-color:#8540f51f}html[data-netbox-color-mode=dark] .alert.alert-indigo-400 a:not(.btn),html[data-netbox-color-mode=dark] .table-indigo-400 a:not(.btn){font-weight:700;color:#e7d9fd}html[data-netbox-color-mode=dark] .alert.alert-indigo-400 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-indigo-400 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-indigo-400 a:not(.btn){font-weight:700;color:#e7d9fd}html[data-netbox-color-mode=dark] .badge.bg-indigo-400,html[data-netbox-color-mode=dark] .toast.bg-indigo-400,html[data-netbox-color-mode=dark] .toast-header.bg-indigo-400,html[data-netbox-color-mode=dark] .progress-bar.bg-indigo-400{color:#fff}html[data-netbox-color-mode=dark] .bg-indigo-500 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23e0cffc'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-indigo-500{color:#6610f2}html[data-netbox-color-mode=dark] .btn.btn-ghost-indigo-500:hover{background-color:#6610f21f}html[data-netbox-color-mode=dark] .alert.alert-indigo-500 a:not(.btn),html[data-netbox-color-mode=dark] .table-indigo-500 a:not(.btn){font-weight:700;color:#e0cffc}html[data-netbox-color-mode=dark] .alert.alert-indigo-500 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-indigo-500 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-indigo-500 a:not(.btn){font-weight:700;color:#e0cffc}html[data-netbox-color-mode=dark] .badge.bg-indigo-500,html[data-netbox-color-mode=dark] .toast.bg-indigo-500,html[data-netbox-color-mode=dark] .toast-header.bg-indigo-500,html[data-netbox-color-mode=dark] .progress-bar.bg-indigo-500{color:#fff}html[data-netbox-color-mode=dark] .bg-indigo-600 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23dccff3'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-indigo-600{color:#520dc2}html[data-netbox-color-mode=dark] .btn.btn-ghost-indigo-600:hover{background-color:#520dc21f}html[data-netbox-color-mode=dark] .alert.alert-indigo-600 a:not(.btn),html[data-netbox-color-mode=dark] .table-indigo-600 a:not(.btn){font-weight:700;color:#dccff3}html[data-netbox-color-mode=dark] .alert.alert-indigo-600 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-indigo-600 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-indigo-600 a:not(.btn){font-weight:700;color:#dccff3}html[data-netbox-color-mode=dark] .badge.bg-indigo-600,html[data-netbox-color-mode=dark] .toast.bg-indigo-600,html[data-netbox-color-mode=dark] .toast-header.bg-indigo-600,html[data-netbox-color-mode=dark] .progress-bar.bg-indigo-600{color:#fff}html[data-netbox-color-mode=dark] .bg-indigo-700 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23d8cee9'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-indigo-700{color:#3d0a91}html[data-netbox-color-mode=dark] .btn.btn-ghost-indigo-700:hover{background-color:#3d0a911f}html[data-netbox-color-mode=dark] .alert.alert-indigo-700 a:not(.btn),html[data-netbox-color-mode=dark] .table-indigo-700 a:not(.btn){font-weight:700;color:#d8cee9}html[data-netbox-color-mode=dark] .alert.alert-indigo-700 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-indigo-700 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-indigo-700 a:not(.btn){font-weight:700;color:#d8cee9}html[data-netbox-color-mode=dark] .badge.bg-indigo-700,html[data-netbox-color-mode=dark] .toast.bg-indigo-700,html[data-netbox-color-mode=dark] .toast-header.bg-indigo-700,html[data-netbox-color-mode=dark] .progress-bar.bg-indigo-700{color:#fff}html[data-netbox-color-mode=dark] .bg-indigo-800 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23d4cddf'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-indigo-800{color:#290661}html[data-netbox-color-mode=dark] .btn.btn-ghost-indigo-800:hover{background-color:#2906611f}html[data-netbox-color-mode=dark] .alert.alert-indigo-800 a:not(.btn),html[data-netbox-color-mode=dark] .table-indigo-800 a:not(.btn){font-weight:700;color:#d4cddf}html[data-netbox-color-mode=dark] .alert.alert-indigo-800 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-indigo-800 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-indigo-800 a:not(.btn){font-weight:700;color:#d4cddf}html[data-netbox-color-mode=dark] .badge.bg-indigo-800,html[data-netbox-color-mode=dark] .toast.bg-indigo-800,html[data-netbox-color-mode=dark] .toast-header.bg-indigo-800,html[data-netbox-color-mode=dark] .progress-bar.bg-indigo-800{color:#fff}html[data-netbox-color-mode=dark] .bg-indigo-900 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23d0cdd6'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-indigo-900{color:#140330}html[data-netbox-color-mode=dark] .btn.btn-ghost-indigo-900:hover{background-color:#1403301f}html[data-netbox-color-mode=dark] .alert.alert-indigo-900 a:not(.btn),html[data-netbox-color-mode=dark] .table-indigo-900 a:not(.btn){font-weight:700;color:#d0cdd6}html[data-netbox-color-mode=dark] .alert.alert-indigo-900 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-indigo-900 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-indigo-900 a:not(.btn){font-weight:700;color:#d0cdd6}html[data-netbox-color-mode=dark] .badge.bg-indigo-900,html[data-netbox-color-mode=dark] .toast.bg-indigo-900,html[data-netbox-color-mode=dark] .toast-header.bg-indigo-900,html[data-netbox-color-mode=dark] .progress-bar.bg-indigo-900{color:#fff}html[data-netbox-color-mode=dark] .bg-purple-100 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%232d2b31'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-purple-100{color:#e2d9f3}html[data-netbox-color-mode=dark] .btn.btn-ghost-purple-100:hover{background-color:#e2d9f31f}html[data-netbox-color-mode=dark] .alert.alert-purple-100 a:not(.btn),html[data-netbox-color-mode=dark] .table-purple-100 a:not(.btn){font-weight:700;color:#2d2b31}html[data-netbox-color-mode=dark] .alert.alert-purple-100 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-purple-100 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-purple-100 a:not(.btn){font-weight:700;color:#2d2b31}html[data-netbox-color-mode=dark] .badge.bg-purple-100,html[data-netbox-color-mode=dark] .toast.bg-purple-100,html[data-netbox-color-mode=dark] .toast-header.bg-purple-100,html[data-netbox-color-mode=dark] .progress-bar.bg-purple-100{color:#000}html[data-netbox-color-mode=dark] .bg-purple-200 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%2327242e'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-purple-200{color:#c5b3e6}html[data-netbox-color-mode=dark] .btn.btn-ghost-purple-200:hover{background-color:#c5b3e61f}html[data-netbox-color-mode=dark] .alert.alert-purple-200 a:not(.btn),html[data-netbox-color-mode=dark] .table-purple-200 a:not(.btn){font-weight:700;color:#27242e}html[data-netbox-color-mode=dark] .alert.alert-purple-200 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-purple-200 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-purple-200 a:not(.btn){font-weight:700;color:#27242e}html[data-netbox-color-mode=dark] .badge.bg-purple-200,html[data-netbox-color-mode=dark] .toast.bg-purple-200,html[data-netbox-color-mode=dark] .toast-header.bg-purple-200,html[data-netbox-color-mode=dark] .progress-bar.bg-purple-200{color:#000}html[data-netbox-color-mode=dark] .bg-purple-300 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23221c2c'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-purple-300{color:#a98eda}html[data-netbox-color-mode=dark] .btn.btn-ghost-purple-300:hover{background-color:#a98eda1f}html[data-netbox-color-mode=dark] .alert.alert-purple-300 a:not(.btn),html[data-netbox-color-mode=dark] .table-purple-300 a:not(.btn){font-weight:700;color:#221c2c}html[data-netbox-color-mode=dark] .alert.alert-purple-300 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-purple-300 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-purple-300 a:not(.btn){font-weight:700;color:#221c2c}html[data-netbox-color-mode=dark] .badge.bg-purple-300,html[data-netbox-color-mode=dark] .toast.bg-purple-300,html[data-netbox-color-mode=dark] .toast-header.bg-purple-300,html[data-netbox-color-mode=dark] .progress-bar.bg-purple-300{color:#000}html[data-netbox-color-mode=dark] .bg-purple-400 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%231c1529'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-purple-400{color:#8c68cd}html[data-netbox-color-mode=dark] .btn.btn-ghost-purple-400:hover{background-color:#8c68cd1f}html[data-netbox-color-mode=dark] .alert.alert-purple-400 a:not(.btn),html[data-netbox-color-mode=dark] .table-purple-400 a:not(.btn){font-weight:700;color:#1c1529}html[data-netbox-color-mode=dark] .alert.alert-purple-400 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-purple-400 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-purple-400 a:not(.btn){font-weight:700;color:#1c1529}html[data-netbox-color-mode=dark] .badge.bg-purple-400,html[data-netbox-color-mode=dark] .toast.bg-purple-400,html[data-netbox-color-mode=dark] .toast-header.bg-purple-400,html[data-netbox-color-mode=dark] .progress-bar.bg-purple-400{color:#000}html[data-netbox-color-mode=dark] .bg-purple-500 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23e2d9f3'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-purple-500{color:#6f42c1}html[data-netbox-color-mode=dark] .btn.btn-ghost-purple-500:hover{background-color:#6f42c11f}html[data-netbox-color-mode=dark] .alert.alert-purple-500 a:not(.btn),html[data-netbox-color-mode=dark] .table-purple-500 a:not(.btn){font-weight:700;color:#e2d9f3}html[data-netbox-color-mode=dark] .alert.alert-purple-500 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-purple-500 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-purple-500 a:not(.btn){font-weight:700;color:#e2d9f3}html[data-netbox-color-mode=dark] .badge.bg-purple-500,html[data-netbox-color-mode=dark] .toast.bg-purple-500,html[data-netbox-color-mode=dark] .toast-header.bg-purple-500,html[data-netbox-color-mode=dark] .progress-bar.bg-purple-500{color:#fff}html[data-netbox-color-mode=dark] .bg-purple-600 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23ded7eb'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-purple-600{color:#59359a}html[data-netbox-color-mode=dark] .btn.btn-ghost-purple-600:hover{background-color:#59359a1f}html[data-netbox-color-mode=dark] .alert.alert-purple-600 a:not(.btn),html[data-netbox-color-mode=dark] .table-purple-600 a:not(.btn){font-weight:700;color:#ded7eb}html[data-netbox-color-mode=dark] .alert.alert-purple-600 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-purple-600 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-purple-600 a:not(.btn){font-weight:700;color:#ded7eb}html[data-netbox-color-mode=dark] .badge.bg-purple-600,html[data-netbox-color-mode=dark] .toast.bg-purple-600,html[data-netbox-color-mode=dark] .toast-header.bg-purple-600,html[data-netbox-color-mode=dark] .progress-bar.bg-purple-600{color:#fff}html[data-netbox-color-mode=dark] .bg-purple-700 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23d9d4e3'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-purple-700{color:#432874}html[data-netbox-color-mode=dark] .btn.btn-ghost-purple-700:hover{background-color:#4328741f}html[data-netbox-color-mode=dark] .alert.alert-purple-700 a:not(.btn),html[data-netbox-color-mode=dark] .table-purple-700 a:not(.btn){font-weight:700;color:#d9d4e3}html[data-netbox-color-mode=dark] .alert.alert-purple-700 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-purple-700 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-purple-700 a:not(.btn){font-weight:700;color:#d9d4e3}html[data-netbox-color-mode=dark] .badge.bg-purple-700,html[data-netbox-color-mode=dark] .toast.bg-purple-700,html[data-netbox-color-mode=dark] .toast-header.bg-purple-700,html[data-netbox-color-mode=dark] .progress-bar.bg-purple-700{color:#fff}html[data-netbox-color-mode=dark] .bg-purple-800 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23d5d1db'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-purple-800{color:#2c1a4d}html[data-netbox-color-mode=dark] .btn.btn-ghost-purple-800:hover{background-color:#2c1a4d1f}html[data-netbox-color-mode=dark] .alert.alert-purple-800 a:not(.btn),html[data-netbox-color-mode=dark] .table-purple-800 a:not(.btn){font-weight:700;color:#d5d1db}html[data-netbox-color-mode=dark] .alert.alert-purple-800 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-purple-800 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-purple-800 a:not(.btn){font-weight:700;color:#d5d1db}html[data-netbox-color-mode=dark] .badge.bg-purple-800,html[data-netbox-color-mode=dark] .toast.bg-purple-800,html[data-netbox-color-mode=dark] .toast-header.bg-purple-800,html[data-netbox-color-mode=dark] .progress-bar.bg-purple-800{color:#fff}html[data-netbox-color-mode=dark] .bg-purple-900 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23d0cfd4'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-purple-900{color:#160d27}html[data-netbox-color-mode=dark] .btn.btn-ghost-purple-900:hover{background-color:#160d271f}html[data-netbox-color-mode=dark] .alert.alert-purple-900 a:not(.btn),html[data-netbox-color-mode=dark] .table-purple-900 a:not(.btn){font-weight:700;color:#d0cfd4}html[data-netbox-color-mode=dark] .alert.alert-purple-900 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-purple-900 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-purple-900 a:not(.btn){font-weight:700;color:#d0cfd4}html[data-netbox-color-mode=dark] .badge.bg-purple-900,html[data-netbox-color-mode=dark] .toast.bg-purple-900,html[data-netbox-color-mode=dark] .toast-header.bg-purple-900,html[data-netbox-color-mode=dark] .progress-bar.bg-purple-900{color:#fff}html[data-netbox-color-mode=dark] .bg-pink-100 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23312b2e'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-pink-100{color:#f7d6e6}html[data-netbox-color-mode=dark] .btn.btn-ghost-pink-100:hover{background-color:#f7d6e61f}html[data-netbox-color-mode=dark] .alert.alert-pink-100 a:not(.btn),html[data-netbox-color-mode=dark] .table-pink-100 a:not(.btn){font-weight:700;color:#312b2e}html[data-netbox-color-mode=dark] .alert.alert-pink-100 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-pink-100 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-pink-100 a:not(.btn){font-weight:700;color:#312b2e}html[data-netbox-color-mode=dark] .badge.bg-pink-100,html[data-netbox-color-mode=dark] .toast.bg-pink-100,html[data-netbox-color-mode=dark] .toast-header.bg-pink-100,html[data-netbox-color-mode=dark] .progress-bar.bg-pink-100{color:#000}html[data-netbox-color-mode=dark] .bg-pink-200 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23302329'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-pink-200{color:#efadce}html[data-netbox-color-mode=dark] .btn.btn-ghost-pink-200:hover{background-color:#efadce1f}html[data-netbox-color-mode=dark] .alert.alert-pink-200 a:not(.btn),html[data-netbox-color-mode=dark] .table-pink-200 a:not(.btn){font-weight:700;color:#302329}html[data-netbox-color-mode=dark] .alert.alert-pink-200 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-pink-200 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-pink-200 a:not(.btn){font-weight:700;color:#302329}html[data-netbox-color-mode=dark] .badge.bg-pink-200,html[data-netbox-color-mode=dark] .toast.bg-pink-200,html[data-netbox-color-mode=dark] .toast-header.bg-pink-200,html[data-netbox-color-mode=dark] .progress-bar.bg-pink-200{color:#000}html[data-netbox-color-mode=dark] .bg-pink-300 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%232e1b24'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-pink-300{color:#e685b5}html[data-netbox-color-mode=dark] .btn.btn-ghost-pink-300:hover{background-color:#e685b51f}html[data-netbox-color-mode=dark] .alert.alert-pink-300 a:not(.btn),html[data-netbox-color-mode=dark] .table-pink-300 a:not(.btn){font-weight:700;color:#2e1b24}html[data-netbox-color-mode=dark] .alert.alert-pink-300 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-pink-300 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-pink-300 a:not(.btn){font-weight:700;color:#2e1b24}html[data-netbox-color-mode=dark] .badge.bg-pink-300,html[data-netbox-color-mode=dark] .toast.bg-pink-300,html[data-netbox-color-mode=dark] .toast-header.bg-pink-300,html[data-netbox-color-mode=dark] .progress-bar.bg-pink-300{color:#000}html[data-netbox-color-mode=dark] .bg-pink-400 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%232c121f'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-pink-400{color:#de5c9d}html[data-netbox-color-mode=dark] .btn.btn-ghost-pink-400:hover{background-color:#de5c9d1f}html[data-netbox-color-mode=dark] .alert.alert-pink-400 a:not(.btn),html[data-netbox-color-mode=dark] .table-pink-400 a:not(.btn){font-weight:700;color:#2c121f}html[data-netbox-color-mode=dark] .alert.alert-pink-400 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-pink-400 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-pink-400 a:not(.btn){font-weight:700;color:#2c121f}html[data-netbox-color-mode=dark] .badge.bg-pink-400,html[data-netbox-color-mode=dark] .toast.bg-pink-400,html[data-netbox-color-mode=dark] .toast-header.bg-pink-400,html[data-netbox-color-mode=dark] .progress-bar.bg-pink-400{color:#000}html[data-netbox-color-mode=dark] .bg-pink-500 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%232b0a1a'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-pink-500{color:#d63384}html[data-netbox-color-mode=dark] .btn.btn-ghost-pink-500:hover{background-color:#d633841f}html[data-netbox-color-mode=dark] .alert.alert-pink-500 a:not(.btn),html[data-netbox-color-mode=dark] .table-pink-500 a:not(.btn){font-weight:700;color:#2b0a1a}html[data-netbox-color-mode=dark] .alert.alert-pink-500 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-pink-500 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-pink-500 a:not(.btn){font-weight:700;color:#f7d6e6}html[data-netbox-color-mode=dark] .badge.bg-pink-500,html[data-netbox-color-mode=dark] .toast.bg-pink-500,html[data-netbox-color-mode=dark] .toast-header.bg-pink-500,html[data-netbox-color-mode=dark] .progress-bar.bg-pink-500{color:#fff}html[data-netbox-color-mode=dark] .bg-pink-600 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23eed4e1'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-pink-600{color:#ab296a}html[data-netbox-color-mode=dark] .btn.btn-ghost-pink-600:hover{background-color:#ab296a1f}html[data-netbox-color-mode=dark] .alert.alert-pink-600 a:not(.btn),html[data-netbox-color-mode=dark] .table-pink-600 a:not(.btn){font-weight:700;color:#eed4e1}html[data-netbox-color-mode=dark] .alert.alert-pink-600 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-pink-600 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-pink-600 a:not(.btn){font-weight:700;color:#eed4e1}html[data-netbox-color-mode=dark] .badge.bg-pink-600,html[data-netbox-color-mode=dark] .toast.bg-pink-600,html[data-netbox-color-mode=dark] .toast-header.bg-pink-600,html[data-netbox-color-mode=dark] .progress-bar.bg-pink-600{color:#fff}html[data-netbox-color-mode=dark] .bg-pink-700 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23e6d2dc'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-pink-700{color:#801f4f}html[data-netbox-color-mode=dark] .btn.btn-ghost-pink-700:hover{background-color:#801f4f1f}html[data-netbox-color-mode=dark] .alert.alert-pink-700 a:not(.btn),html[data-netbox-color-mode=dark] .table-pink-700 a:not(.btn){font-weight:700;color:#e6d2dc}html[data-netbox-color-mode=dark] .alert.alert-pink-700 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-pink-700 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-pink-700 a:not(.btn){font-weight:700;color:#e6d2dc}html[data-netbox-color-mode=dark] .badge.bg-pink-700,html[data-netbox-color-mode=dark] .toast.bg-pink-700,html[data-netbox-color-mode=dark] .toast-header.bg-pink-700,html[data-netbox-color-mode=dark] .progress-bar.bg-pink-700{color:#fff}html[data-netbox-color-mode=dark] .bg-pink-800 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23ddd0d7'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-pink-800{color:#561435}html[data-netbox-color-mode=dark] .btn.btn-ghost-pink-800:hover{background-color:#5614351f}html[data-netbox-color-mode=dark] .alert.alert-pink-800 a:not(.btn),html[data-netbox-color-mode=dark] .table-pink-800 a:not(.btn){font-weight:700;color:#ddd0d7}html[data-netbox-color-mode=dark] .alert.alert-pink-800 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-pink-800 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-pink-800 a:not(.btn){font-weight:700;color:#ddd0d7}html[data-netbox-color-mode=dark] .badge.bg-pink-800,html[data-netbox-color-mode=dark] .toast.bg-pink-800,html[data-netbox-color-mode=dark] .toast-header.bg-pink-800,html[data-netbox-color-mode=dark] .progress-bar.bg-pink-800{color:#fff}html[data-netbox-color-mode=dark] .bg-pink-900 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23d5ced1'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-pink-900{color:#2b0a1a}html[data-netbox-color-mode=dark] .btn.btn-ghost-pink-900:hover{background-color:#2b0a1a1f}html[data-netbox-color-mode=dark] .alert.alert-pink-900 a:not(.btn),html[data-netbox-color-mode=dark] .table-pink-900 a:not(.btn){font-weight:700;color:#d5ced1}html[data-netbox-color-mode=dark] .alert.alert-pink-900 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-pink-900 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-pink-900 a:not(.btn){font-weight:700;color:#d5ced1}html[data-netbox-color-mode=dark] .badge.bg-pink-900,html[data-netbox-color-mode=dark] .toast.bg-pink-900,html[data-netbox-color-mode=dark] .toast-header.bg-pink-900,html[data-netbox-color-mode=dark] .progress-bar.bg-pink-900{color:#fff}html[data-netbox-color-mode=dark] table td>.progress{min-width:6rem}html[data-netbox-color-mode=dark] .small .form-control{font-size:.875rem}html[data-netbox-color-mode=dark] :not(.card-body)>.col:not(:last-child):not(:only-child){margin-bottom:1rem}html[data-netbox-color-mode=dark] .nav-mobile{display:none;flex-direction:column;align-items:center;justify-content:space-between;width:100%}@media (max-width: 991.98px){html[data-netbox-color-mode=dark] .nav-mobile{display:flex}}html[data-netbox-color-mode=dark] .nav-mobile .nav-mobile-top{display:flex;align-items:center;justify-content:space-between;width:100%}html[data-netbox-color-mode=dark] .card>.table.table-flush{margin-bottom:0;overflow:hidden;border-bottom-right-radius:.375rem;border-bottom-left-radius:.375rem}html[data-netbox-color-mode=dark] .card>.table.table-flush thead th[scope=col]{padding-top:1rem;padding-bottom:1rem;text-transform:uppercase;vertical-align:middle;background-color:#495057;border-top:1px solid rgba(255,255,255,.125);border-bottom-color:#ffffff20}html[data-netbox-color-mode=dark] .card>.table.table-flush th,html[data-netbox-color-mode=dark] .card>.table.table-flush td{padding-right:1.5rem!important;padding-left:1.5rem!important;border-right:0;border-left:0}html[data-netbox-color-mode=dark] .card>.table.table-flush tr[class]{border-color:#ffffff20!important}html[data-netbox-color-mode=dark] .card>.table.table-flush tr[class]:last-of-type{border-bottom-color:transparent!important;border-bottom-right-radius:.375rem;border-bottom-left-radius:.375rem}html[data-netbox-color-mode=dark] .header-alert-container{display:flex;align-items:center;justify-content:center;padding:0 1rem}html[data-netbox-color-mode=dark] .header-alert-container .alert{width:100%}@media (min-width: 768px){html[data-netbox-color-mode=dark] .header-alert-container .alert{max-width:75%}}@media (min-width: 992px){html[data-netbox-color-mode=dark] .header-alert-container .alert{max-width:50%}}html[data-netbox-color-mode=dark] span.profile-button .dropdown-menu{right:0;left:auto;display:block!important;margin-top:.5rem;box-shadow:0 .5rem 1rem #00000026;transition:opacity .2s ease-in-out}html[data-netbox-color-mode=dark] span.profile-button .dropdown-menu:not(.show){pointer-events:none;opacity:0}html[data-netbox-color-mode=dark] span.profile-button .dropdown-menu.show{pointer-events:auto;opacity:1}html[data-netbox-color-mode=dark] div#advanced-search-content div.card div.card-body div.col:not(:last-child){margin-right:1rem}html[data-netbox-color-mode=dark] table td a{text-decoration:none}html[data-netbox-color-mode=dark] table td a:hover{text-decoration:underline}html[data-netbox-color-mode=dark] table td .dropdown{position:static}html[data-netbox-color-mode=dark] table th a,html[data-netbox-color-mode=dark] table th a:hover{color:#fff;text-decoration:none}html[data-netbox-color-mode=dark] table td,html[data-netbox-color-mode=dark] table th{font-size:.875rem;line-height:1.25;vertical-align:middle}html[data-netbox-color-mode=dark] table td.min-width,html[data-netbox-color-mode=dark] table th.min-width{width:1%}html[data-netbox-color-mode=dark] table td .form-check-input,html[data-netbox-color-mode=dark] table th .form-check-input{margin-top:.125em;font-size:1rem}html[data-netbox-color-mode=dark] table td .btn-sm,html[data-netbox-color-mode=dark] table td .btn-group-sm>.btn,html[data-netbox-color-mode=dark] table th .btn-sm,html[data-netbox-color-mode=dark] table th .btn-group-sm>.btn{line-height:1}html[data-netbox-color-mode=dark] table td p,html[data-netbox-color-mode=dark] table th p{margin-bottom:0}html[data-netbox-color-mode=dark] table.table>:not(caption)>*>*{padding-right:.25rem!important;padding-left:.25rem!important}html[data-netbox-color-mode=dark] table.object-list th{font-size:.75rem;line-height:1;vertical-align:bottom}html[data-netbox-color-mode=dark] table.attr-table th{font-weight:normal;width:25%}html[data-netbox-color-mode=dark] div.title-container{display:flex;flex-direction:column;flex-wrap:wrap;justify-content:space-between}@media (min-width: 992px){html[data-netbox-color-mode=dark] div.title-container{flex-direction:row}}html[data-netbox-color-mode=dark] div.title-container #content-title{display:flex;flex:1 0;flex-direction:column;padding-bottom:.5rem}html[data-netbox-color-mode=dark] .controls{margin-bottom:.5rem}@media print{html[data-netbox-color-mode=dark] .controls{display:none!important}}html[data-netbox-color-mode=dark] .controls .control-group{display:flex;flex-wrap:wrap;justify-content:flex-start}@media (min-width: 992px){html[data-netbox-color-mode=dark] .controls .control-group{justify-content:flex-end}}html[data-netbox-color-mode=dark] .controls .control-group>*{margin:.25rem}html[data-netbox-color-mode=dark] .controls .control-group>*:first-child{margin-left:0}html[data-netbox-color-mode=dark] .controls .control-group>*:last-child{margin-right:0}html[data-netbox-color-mode=dark] .object-subtitle{display:block;font-size:.875rem;color:#ced4da}@media (min-width: 768px){html[data-netbox-color-mode=dark] .object-subtitle{display:inline-block}}html[data-netbox-color-mode=dark] .object-subtitle>span{display:block}html[data-netbox-color-mode=dark] .object-subtitle>span.separator{display:none}@media (min-width: 768px){html[data-netbox-color-mode=dark] .object-subtitle>span,html[data-netbox-color-mode=dark] .object-subtitle>span.separator{display:inline-block}}html[data-netbox-color-mode=dark] nav.search{z-index:999;justify-content:center;background-color:var(--nbx-body-bg)}html[data-netbox-color-mode=dark] nav.search .search-container{display:flex;width:100%}@media (max-width: 991.98px){html[data-netbox-color-mode=dark] nav.search .search-container{display:none}}html[data-netbox-color-mode=dark] nav.search .input-group .search-obj-selected{border-color:#495057}html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle{color:#fff;border-color:#495057;margin-left:0;font-weight:400;line-height:1.5;color:#f8f9fa;background-color:#495057;border:1px solid #495057;border-radius:.375rem;border-left:1px solid var(--nbx-search-filter-border-left-color)}html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle:hover{color:#fff;background-color:#3e444a;border-color:#3a4046}.btn-check:focus+html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle,html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle:focus{color:#fff;background-color:#3e444a;border-color:#3a4046;box-shadow:0 0 0 .25rem #646a7080}.btn-check:checked+html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle,.btn-check:active+html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle,html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle:active,html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle.active,.show>html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle.dropdown-toggle{color:#fff;background-color:#3a4046;border-color:#373c41}.btn-check:checked+html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle:focus,.btn-check:active+html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle:focus,html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle:active:focus,html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle.active:focus,.show>html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #646a7080}html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle:disabled,html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle.disabled{color:#fff;background-color:#495057;border-color:#495057}html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle:focus{box-shadow:unset!important}html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle:after{display:none}html[data-netbox-color-mode=dark] nav.search .input-group .search-obj-selector{max-height:70vh;overflow-y:auto}html[data-netbox-color-mode=dark] nav.search .input-group .search-obj-selector .dropdown-item,html[data-netbox-color-mode=dark] nav.search .input-group .search-obj-selector .dropdown-header{font-size:.875rem}html[data-netbox-color-mode=dark] nav.search .input-group .search-obj-selector .dropdown-header{text-transform:uppercase}html[data-netbox-color-mode=dark] main.layout{display:flex;flex-wrap:nowrap;height:100vh;height:-webkit-fill-available;max-height:100vh;overflow-x:auto;overflow-y:hidden}@media print{html[data-netbox-color-mode=dark] main.layout{position:static!important;display:block!important;height:100%;overflow-x:visible!important;overflow-y:visible!important}}html[data-netbox-color-mode=dark] main.login-container{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;max-width:100vw;height:calc(100vh - 4rem);padding-top:40px;padding-bottom:40px}html[data-netbox-color-mode=dark] main.login-container+footer.footer button.color-mode-toggle{color:var(--nbx-color-mode-toggle-color)}html[data-netbox-color-mode=dark] .footer{padding:0}html[data-netbox-color-mode=dark] .footer .nav-link{padding:.5rem}@media (max-width: 767.98px){html[data-netbox-color-mode=dark] .footer{margin-bottom:8rem}}html[data-netbox-color-mode=dark] footer.login-footer{height:4rem;margin-top:auto}html[data-netbox-color-mode=dark] footer.login-footer .container-fluid,html[data-netbox-color-mode=dark] footer.login-footer .container-sm,html[data-netbox-color-mode=dark] footer.login-footer .container-md,html[data-netbox-color-mode=dark] footer.login-footer .container-lg,html[data-netbox-color-mode=dark] footer.login-footer .container-xl,html[data-netbox-color-mode=dark] footer.login-footer .container-xxl{display:flex;justify-content:flex-end;padding:.75rem 1.5rem}html[data-netbox-color-mode=dark] h1.accordion-item-title,html[data-netbox-color-mode=dark] .accordion-item-title.h1,html[data-netbox-color-mode=dark] h2.accordion-item-title,html[data-netbox-color-mode=dark] .accordion-item-title.h2,html[data-netbox-color-mode=dark] h3.accordion-item-title,html[data-netbox-color-mode=dark] .accordion-item-title.h3,html[data-netbox-color-mode=dark] h4.accordion-item-title,html[data-netbox-color-mode=dark] .accordion-item-title.h4,html[data-netbox-color-mode=dark] h5.accordion-item-title,html[data-netbox-color-mode=dark] .accordion-item-title.h5,html[data-netbox-color-mode=dark] h6.accordion-item-title,html[data-netbox-color-mode=dark] .accordion-item-title.h6{padding:.25rem .5rem;font-size:.875rem;font-weight:700;color:var(--nbx-sidebar-title-color);text-transform:uppercase}html[data-netbox-color-mode=dark] .form-login{width:100%;max-width:330px;padding:15px}html[data-netbox-color-mode=dark] .form-login input:focus{z-index:1}html[data-netbox-color-mode=dark] .form-login input[type=text]{margin-bottom:-1px;border-bottom-right-radius:0;border-bottom-left-radius:0}html[data-netbox-color-mode=dark] .form-login input[type=password]{margin-bottom:10px;border-top-left-radius:0;border-top-right-radius:0}html[data-netbox-color-mode=dark] .form-login .form-control{position:relative;box-sizing:border-box;height:auto;padding:10px;font-size:16px}html[data-netbox-color-mode=dark] .navbar-brand{padding-top:.75rem;padding-bottom:.75rem;font-size:1rem}html[data-netbox-color-mode=dark] nav.nav.nav-pills .nav-item.nav-link{padding:.25rem .5rem;font-size:.875rem;border-radius:.375rem}html[data-netbox-color-mode=dark] nav.nav.nav-pills .nav-item.nav-link:hover{color:#000;background-color:#6397e5}html[data-netbox-color-mode=dark] div.content-container{position:relative;display:flex;flex-direction:column;width:calc(100% - 3rem);min-height:100vh;overflow-x:hidden;overflow-y:auto}html[data-netbox-color-mode=dark] div.content-container:focus,html[data-netbox-color-mode=dark] div.content-container:focus-visible{outline:0}html[data-netbox-color-mode=dark] div.content-container div.content{flex:1}@media (max-width: 991.98px){html[data-netbox-color-mode=dark] div.content-container{width:100%}}@media print{html[data-netbox-color-mode=dark] div.content-container{width:100%!important;margin-left:0!important}}@media (max-width: 768px){html[data-netbox-color-mode=dark] .sidebar.collapse.show~.content-container>.content{position:fixed;top:0;left:0;overflow-y:hidden}}html[data-netbox-color-mode=dark] .tooltip{pointer-events:none}html[data-netbox-color-mode=dark] span.color-label{display:block;width:5rem;height:1rem;padding:.35em .65em;border:1px solid #303030;border-radius:.375rem;box-shadow:0 .125rem .25rem #00000013}html[data-netbox-color-mode=dark] .btn{white-space:nowrap}html[data-netbox-color-mode=dark] .card{box-shadow:0 .125rem .25rem #00000013}html[data-netbox-color-mode=dark] .card .card-header{padding:1rem;color:var(--nbx-body-color);border-bottom:none}html[data-netbox-color-mode=dark] .card .card-header+.card-body{padding-top:0}html[data-netbox-color-mode=dark] .card .card-body.small .form-control,html[data-netbox-color-mode=dark] .card .card-body.small .form-select{font-size:.875rem}html[data-netbox-color-mode=dark] .card .card-divider{width:100%;height:1px;margin:1rem 0;border-top:1px solid rgba(255,255,255,.125);opacity:.25}@media print{html[data-netbox-color-mode=dark] .card{box-shadow:unset!important}}html[data-netbox-color-mode=dark] .form-floating{position:relative}html[data-netbox-color-mode=dark] .form-floating>.input-group>.form-control,html[data-netbox-color-mode=dark] .form-floating>.input-group>.form-select{height:calc(3.5rem + 2px);padding:1rem .75rem}html[data-netbox-color-mode=dark] .form-floating>.input-group>label{position:absolute;top:0;left:0;height:100%;padding:1rem .75rem;pointer-events:none;border:1px solid transparent;transform-origin:0 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out}@media (prefers-reduced-motion: reduce){html[data-netbox-color-mode=dark] .form-floating>.input-group>label{transition:none}}html[data-netbox-color-mode=dark] .form-floating>.input-group>.form-control::placeholder{color:transparent}html[data-netbox-color-mode=dark] .form-floating>.input-group>.form-control:focus,html[data-netbox-color-mode=dark] .form-floating>.input-group>.form-control:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}html[data-netbox-color-mode=dark] .form-floating>.input-group>.form-control:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}html[data-netbox-color-mode=dark] .form-floating>.input-group>.form-select,html[data-netbox-color-mode=dark] .form-floating>.choices>.choices__inner,html[data-netbox-color-mode=dark] .form-floating>.ss-main span.placeholder,html[data-netbox-color-mode=dark] .form-floating>.ss-main div.ss-values{padding-top:1.625rem;padding-bottom:.625rem}html[data-netbox-color-mode=dark] .form-floating>.input-group>.form-control:focus~label,html[data-netbox-color-mode=dark] .form-floating>.input-group>.form-control:not(:placeholder-shown)~label,html[data-netbox-color-mode=dark] .form-floating>.input-group>.form-select~label,html[data-netbox-color-mode=dark] .form-floating>.choices~label,html[data-netbox-color-mode=dark] .form-floating>.ss-main~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translate(.15rem);z-index:4}html[data-netbox-color-mode=dark] .form-floating>.input-group>.form-control:-webkit-autofill~label{z-index:4;opacity:.65;transform:scale(.85) translateY(-.5rem) translate(.15rem)}html[data-netbox-color-mode=dark] .form-object-edit{margin:0 auto;max-width:800px}html[data-netbox-color-mode=dark] textarea.form-control[rows="10"]{height:18rem}html[data-netbox-color-mode=dark] textarea#id_local_context_data,html[data-netbox-color-mode=dark] textarea.markdown,html[data-netbox-color-mode=dark] textarea#id_public_key,html[data-netbox-color-mode=dark] textarea.form-control[name=csv],html[data-netbox-color-mode=dark] textarea.form-control[name=data]{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}html[data-netbox-color-mode=dark] .card:not(:only-of-type){margin-bottom:1rem}html[data-netbox-color-mode=dark] .stat-btn{min-width:3rem}html[data-netbox-color-mode=dark] nav.breadcrumb-container{width:fit-content;padding:.35em .65em;font-size:.875rem}html[data-netbox-color-mode=dark] nav.breadcrumb-container ol.breadcrumb{margin-bottom:0}html[data-netbox-color-mode=dark] nav.breadcrumb-container ol.breadcrumb li.breadcrumb-item>a{text-decoration:none}html[data-netbox-color-mode=dark] nav.breadcrumb-container ol.breadcrumb li.breadcrumb-item>a:hover{text-decoration:underline}html[data-netbox-color-mode=dark] div.paginator>form>div.input-group{width:fit-content}html[data-netbox-color-mode=dark] label.required{font-weight:700}html[data-netbox-color-mode=dark] label.required:after{position:absolute;display:inline-block;margin:0 0 0 2px;font-family:"Material Design Icons";font-size:8px;font-style:normal;font-weight:600;text-decoration:none;content:"\f06c4"}html[data-netbox-color-mode=dark] div.bulk-buttons{display:flex;justify-content:space-between;margin:.5rem 0}html[data-netbox-color-mode=dark] div.bulk-buttons>div.bulk-button-group{display:flex;flex-wrap:wrap;align-items:flex-start}html[data-netbox-color-mode=dark] div.bulk-buttons>div.bulk-button-group:first-of-type:not(:last-of-type)>*:first-child{margin-left:0}html[data-netbox-color-mode=dark] div.bulk-buttons>div.bulk-button-group:last-of-type:not(:first-of-type)>*:last-child{margin-right:0}html[data-netbox-color-mode=dark] div.bulk-buttons>div.bulk-button-group>*{margin:.25rem}html[data-netbox-color-mode=dark] table tbody tr.primary{background-color:#6ea8fe26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.secondary{background-color:#adb5bd26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.success{background-color:#75b79826;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.info{background-color:#6edff626;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.warning{background-color:#ffda6a26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.danger{background-color:#ea868f26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.light{background-color:#dee2e626;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.dark{background-color:#adb5bd26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.red{background-color:#ea868f26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.yellow{background-color:#ffda6a26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.green{background-color:#75b79826;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.blue{background-color:#6ea8fe26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.cyan{background-color:#6edff626;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.indigo{background-color:#a370f726;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.purple{background-color:#a98eda26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.pink{background-color:#e685b526;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.darker{background-color:#1b1f2226;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.darkest{background-color:#171b1d26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.gray{background-color:#ced4da26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.gray-100{background-color:#f8f9fa26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.gray-200{background-color:#e9ecef26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.gray-300{background-color:#dee2e626;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.gray-400{background-color:#ced4da26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.gray-500{background-color:#adb5bd26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.gray-600{background-color:#6c757d26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.gray-700{background-color:#49505726;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.gray-800{background-color:#343a4026;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.gray-900{background-color:#21252926;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.red-100{background-color:#f8d7da26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.red-200{background-color:#f1aeb526;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.red-300{background-color:#ea868f26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.red-400{background-color:#e35d6a26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.red-500{background-color:#dc354526;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.red-600{background-color:#b02a3726;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.red-700{background-color:#84202926;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.red-800{background-color:#58151c26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.red-900{background-color:#2c0b0e26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.yellow-100{background-color:#fff3cd26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.yellow-200{background-color:#ffe69c26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.yellow-300{background-color:#ffda6a26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.yellow-400{background-color:#ffcd3926;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.yellow-500{background-color:#ffc10726;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.yellow-600{background-color:#cc9a0626;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.yellow-700{background-color:#99740426;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.yellow-800{background-color:#664d0326;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.yellow-900{background-color:#33270126;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.green-100{background-color:#d1e7dd26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.green-200{background-color:#a3cfbb26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.green-300{background-color:#75b79826;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.green-400{background-color:#479f7626;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.green-500{background-color:#19875426;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.green-600{background-color:#146c4326;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.green-700{background-color:#0f513226;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.green-800{background-color:#0a362226;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.green-900{background-color:#051b1126;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.blue-100{background-color:#cfe2ff26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.blue-200{background-color:#9ec5fe26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.blue-300{background-color:#6ea8fe26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.blue-400{background-color:#3d8bfd26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.blue-500{background-color:#0d6efd26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.blue-600{background-color:#0a58ca26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.blue-700{background-color:#08429826;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.blue-800{background-color:#052c6526;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.blue-900{background-color:#03163326;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.cyan-100{background-color:#cff4fc26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.cyan-200{background-color:#9eeaf926;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.cyan-300{background-color:#6edff626;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.cyan-400{background-color:#3dd5f326;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.cyan-500{background-color:#0dcaf026;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.cyan-600{background-color:#0aa2c026;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.cyan-700{background-color:#08799026;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.cyan-800{background-color:#05516026;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.cyan-900{background-color:#03283026;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.indigo-100{background-color:#e0cffc26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.indigo-200{background-color:#c29ffa26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.indigo-300{background-color:#a370f726;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.indigo-400{background-color:#8540f526;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.indigo-500{background-color:#6610f226;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.indigo-600{background-color:#520dc226;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.indigo-700{background-color:#3d0a9126;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.indigo-800{background-color:#29066126;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.indigo-900{background-color:#14033026;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.purple-100{background-color:#e2d9f326;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.purple-200{background-color:#c5b3e626;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.purple-300{background-color:#a98eda26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.purple-400{background-color:#8c68cd26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.purple-500{background-color:#6f42c126;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.purple-600{background-color:#59359a26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.purple-700{background-color:#43287426;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.purple-800{background-color:#2c1a4d26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.purple-900{background-color:#160d2726;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.pink-100{background-color:#f7d6e626;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.pink-200{background-color:#efadce26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.pink-300{background-color:#e685b526;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.pink-400{background-color:#de5c9d26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.pink-500{background-color:#d6338426;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.pink-600{background-color:#ab296a26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.pink-700{background-color:#801f4f26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.pink-800{background-color:#56143526;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.pink-900{background-color:#2b0a1a26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table .table-badge-group .table-badge{display:block;width:min-content;font-size:.875rem;font-weight:400}html[data-netbox-color-mode=dark] table .table-badge-group .table-badge:not(.badge){padding:0 .65em}html[data-netbox-color-mode=dark] table .table-badge-group .table-badge.badge:not(:last-of-type):not(:only-child){margin-bottom:.5rem}html[data-netbox-color-mode=dark] pre.change-data{padding-right:0;padding-left:0}html[data-netbox-color-mode=dark] pre.change-data>span{display:block;padding-right:1rem;padding-left:1rem}html[data-netbox-color-mode=dark] pre.change-data>span.added{background-color:var(--nbx-change-added)}html[data-netbox-color-mode=dark] pre.change-data>span.removed{background-color:var(--nbx-change-removed)}html[data-netbox-color-mode=dark] pre.change-diff{border-color:transparent}html[data-netbox-color-mode=dark] pre.change-diff.change-removed{background-color:var(--nbx-change-removed)}html[data-netbox-color-mode=dark] pre.change-diff.change-added{background-color:var(--nbx-change-added)}html[data-netbox-color-mode=dark] div.card-overlay{position:absolute;display:flex;align-items:center;justify-content:center;width:100%;height:100%;background-color:#ffffffbf;border-radius:.375rem}html[data-netbox-color-mode=dark] div.card-overlay>div.spinner-border{width:6rem;height:6rem;color:#adb5bd}html[data-netbox-color-mode=dark] .table-controls{display:flex}@media (min-width: 768px){html[data-netbox-color-mode=dark] .table-controls{margin-top:0!important;margin-bottom:0!important}}html[data-netbox-color-mode=dark] .table-controls .table-configure{justify-content:flex-start}@media (min-width: 768px){html[data-netbox-color-mode=dark] .table-controls .table-configure{justify-content:flex-end}}html[data-netbox-color-mode=dark] .table-controls .form-switch.form-check-inline{flex:1 0 auto;font-size:.875rem}html[data-netbox-color-mode=dark] .paginator{display:flex;flex-direction:column;align-items:flex-end;padding:1rem 0}html[data-netbox-color-mode=dark] .nav-tabs .nav-link:hover{border-bottom-color:transparent}html[data-netbox-color-mode=dark] .nav-tabs .nav-link.active{background-color:#171b1d;border-bottom-color:#171b1d;transform:translateY(1px)}html[data-netbox-color-mode=dark] .tab-content{display:flex;flex-direction:column;padding:1rem;background-color:#171b1d;border-bottom:1px solid #495057}@media print{html[data-netbox-color-mode=dark] .tab-content{background-color:var(--nbx-body-bg)!important;border-bottom:none!important}}@media print{html[data-netbox-color-mode=dark] .masonry{position:static!important;display:block!important;height:unset!important}}@media print{html[data-netbox-color-mode=dark] .masonry .masonry-item{position:static!important;top:unset!important;left:unset!important;display:block!important}}html[data-netbox-color-mode=dark] .record-depth{display:inline;font-size:1rem;user-select:none;opacity:.33}html[data-netbox-color-mode=dark] .record-depth span:only-of-type,html[data-netbox-color-mode=dark] .record-depth span:last-of-type{margin-right:.25rem}html[data-netbox-color-mode=dark] .popover.image-preview-popover{max-width:unset}html[data-netbox-color-mode=dark] #django-messages{position:fixed;right:1rem;bottom:0;margin:1rem}html[data-netbox-color-mode=dark] html[data-netbox-url-name=home] .content-container,html[data-netbox-color-mode=dark] html[data-netbox-url-name=home] .search{background-color:#f8f9fa!important}html[data-netbox-color-mode=dark] html[data-netbox-url-name=home][data-netbox-color-mode=dark] .content-container,html[data-netbox-color-mode=dark] html[data-netbox-url-name=home][data-netbox-color-mode=dark] .search{background-color:#171b1d!important}html[data-netbox-color-mode=dark] html[data-netbox-url-name=login] #django-messages{display:none} +html[data-netbox-color-mode=dark] :root{--bs-blue: #0d6efd;--bs-indigo: #6610f2;--bs-purple: #6f42c1;--bs-pink: #d63384;--bs-red: #dc3545;--bs-orange: #fd7e14;--bs-yellow: #ffc107;--bs-green: #198754;--bs-teal: #20c997;--bs-cyan: #0dcaf0;--bs-white: #fff;--bs-gray: #6c757d;--bs-gray-dark: #343a40;--bs-primary: #6ea8fe;--bs-secondary: #adb5bd;--bs-success: #75b798;--bs-info: #6edff6;--bs-warning: #ffda6a;--bs-danger: #ea868f;--bs-light: #dee2e6;--bs-dark: #adb5bd;--bs-red: #ea868f;--bs-yellow: #ffda6a;--bs-green: #75b798;--bs-blue: #6ea8fe;--bs-cyan: #6edff6;--bs-indigo: #a370f7;--bs-purple: #a98eda;--bs-pink: #e685b5;--bs-darker: #1b1f22;--bs-darkest: #171b1d;--bs-gray: #ced4da;--bs-gray-100: #f8f9fa;--bs-gray-200: #e9ecef;--bs-gray-300: #dee2e6;--bs-gray-400: #ced4da;--bs-gray-500: #adb5bd;--bs-gray-600: #6c757d;--bs-gray-700: #495057;--bs-gray-800: #343a40;--bs-gray-900: #212529;--bs-red-100: #f8d7da;--bs-red-200: #f1aeb5;--bs-red-300: #ea868f;--bs-red-400: #e35d6a;--bs-red-500: #dc3545;--bs-red-600: #b02a37;--bs-red-700: #842029;--bs-red-800: #58151c;--bs-red-900: #2c0b0e;--bs-yellow-100: #fff3cd;--bs-yellow-200: #ffe69c;--bs-yellow-300: #ffda6a;--bs-yellow-400: #ffcd39;--bs-yellow-500: #ffc107;--bs-yellow-600: #cc9a06;--bs-yellow-700: #997404;--bs-yellow-800: #664d03;--bs-yellow-900: #332701;--bs-green-100: #d1e7dd;--bs-green-200: #a3cfbb;--bs-green-300: #75b798;--bs-green-400: #479f76;--bs-green-500: #198754;--bs-green-600: #146c43;--bs-green-700: #0f5132;--bs-green-800: #0a3622;--bs-green-900: #051b11;--bs-blue-100: #cfe2ff;--bs-blue-200: #9ec5fe;--bs-blue-300: #6ea8fe;--bs-blue-400: #3d8bfd;--bs-blue-500: #0d6efd;--bs-blue-600: #0a58ca;--bs-blue-700: #084298;--bs-blue-800: #052c65;--bs-blue-900: #031633;--bs-cyan-100: #cff4fc;--bs-cyan-200: #9eeaf9;--bs-cyan-300: #6edff6;--bs-cyan-400: #3dd5f3;--bs-cyan-500: #0dcaf0;--bs-cyan-600: #0aa2c0;--bs-cyan-700: #087990;--bs-cyan-800: #055160;--bs-cyan-900: #032830;--bs-indigo-100: #e0cffc;--bs-indigo-200: #c29ffa;--bs-indigo-300: #a370f7;--bs-indigo-400: #8540f5;--bs-indigo-500: #6610f2;--bs-indigo-600: #520dc2;--bs-indigo-700: #3d0a91;--bs-indigo-800: #290661;--bs-indigo-900: #140330;--bs-purple-100: #e2d9f3;--bs-purple-200: #c5b3e6;--bs-purple-300: #a98eda;--bs-purple-400: #8c68cd;--bs-purple-500: #6f42c1;--bs-purple-600: #59359a;--bs-purple-700: #432874;--bs-purple-800: #2c1a4d;--bs-purple-900: #160d27;--bs-pink-100: #f7d6e6;--bs-pink-200: #efadce;--bs-pink-300: #e685b5;--bs-pink-400: #de5c9d;--bs-pink-500: #d63384;--bs-pink-600: #ab296a;--bs-pink-700: #801f4f;--bs-pink-800: #561435;--bs-pink-900: #2b0a1a;--bs-font-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, .15), rgba(255, 255, 255, 0))}html[data-netbox-color-mode=dark] *,html[data-netbox-color-mode=dark] *:before,html[data-netbox-color-mode=dark] *:after{box-sizing:border-box}@media (prefers-reduced-motion: no-preference){html[data-netbox-color-mode=dark] :root{scroll-behavior:smooth}}html[data-netbox-color-mode=dark] body{margin:0;font-family:var(--bs-font-sans-serif);font-size:1rem;font-weight:400;line-height:1.5;color:#fff;background-color:#1b1f22;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0)}html[data-netbox-color-mode=dark] hr{margin:1rem 0;color:inherit;background-color:currentColor;border:0;opacity:.25}html[data-netbox-color-mode=dark] hr:not([size]){height:1px}html[data-netbox-color-mode=dark] h6,html[data-netbox-color-mode=dark] .h6,html[data-netbox-color-mode=dark] h5,html[data-netbox-color-mode=dark] .h5,html[data-netbox-color-mode=dark] h4,html[data-netbox-color-mode=dark] .h4,html[data-netbox-color-mode=dark] h3,html[data-netbox-color-mode=dark] .h3,html[data-netbox-color-mode=dark] h2,html[data-netbox-color-mode=dark] .h2,html[data-netbox-color-mode=dark] h1,html[data-netbox-color-mode=dark] .h1{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2}html[data-netbox-color-mode=dark] h1,html[data-netbox-color-mode=dark] .h1{font-size:calc(1.375rem + 1.5vw)}@media (min-width: 1200px){html[data-netbox-color-mode=dark] h1,html[data-netbox-color-mode=dark] .h1{font-size:2.5rem}}html[data-netbox-color-mode=dark] h2,html[data-netbox-color-mode=dark] .h2{font-size:calc(1.325rem + .9vw)}@media (min-width: 1200px){html[data-netbox-color-mode=dark] h2,html[data-netbox-color-mode=dark] .h2{font-size:2rem}}html[data-netbox-color-mode=dark] h3,html[data-netbox-color-mode=dark] .h3{font-size:calc(1.3rem + .6vw)}@media (min-width: 1200px){html[data-netbox-color-mode=dark] h3,html[data-netbox-color-mode=dark] .h3{font-size:1.75rem}}html[data-netbox-color-mode=dark] h4,html[data-netbox-color-mode=dark] .h4{font-size:calc(1.275rem + .3vw)}@media (min-width: 1200px){html[data-netbox-color-mode=dark] h4,html[data-netbox-color-mode=dark] .h4{font-size:1.5rem}}html[data-netbox-color-mode=dark] h5,html[data-netbox-color-mode=dark] .h5{font-size:1.25rem}html[data-netbox-color-mode=dark] h6,html[data-netbox-color-mode=dark] .h6{font-size:1rem}html[data-netbox-color-mode=dark] p{margin-top:0;margin-bottom:1rem}html[data-netbox-color-mode=dark] abbr[title],html[data-netbox-color-mode=dark] abbr[data-bs-original-title]{text-decoration:underline dotted;cursor:help;text-decoration-skip-ink:none}html[data-netbox-color-mode=dark] address{margin-bottom:1rem;font-style:normal;line-height:inherit}html[data-netbox-color-mode=dark] ol,html[data-netbox-color-mode=dark] ul{padding-left:2rem}html[data-netbox-color-mode=dark] ol,html[data-netbox-color-mode=dark] ul,html[data-netbox-color-mode=dark] dl{margin-top:0;margin-bottom:1rem}html[data-netbox-color-mode=dark] ol ol,html[data-netbox-color-mode=dark] ul ul,html[data-netbox-color-mode=dark] ol ul,html[data-netbox-color-mode=dark] ul ol{margin-bottom:0}html[data-netbox-color-mode=dark] dt{font-weight:700}html[data-netbox-color-mode=dark] dd{margin-bottom:.5rem;margin-left:0}html[data-netbox-color-mode=dark] blockquote{margin:0 0 1rem}html[data-netbox-color-mode=dark] b,html[data-netbox-color-mode=dark] strong{font-weight:800}html[data-netbox-color-mode=dark] small,html[data-netbox-color-mode=dark] .small{font-size:.875em}html[data-netbox-color-mode=dark] mark,html[data-netbox-color-mode=dark] .mark{padding:.2em;background-color:#fcf8e3}html[data-netbox-color-mode=dark] sub,html[data-netbox-color-mode=dark] sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}html[data-netbox-color-mode=dark] sub{bottom:-.25em}html[data-netbox-color-mode=dark] sup{top:-.5em}html[data-netbox-color-mode=dark] a{color:#9ec5fe;text-decoration:underline}html[data-netbox-color-mode=dark] a:hover{color:#cfe2ff}html[data-netbox-color-mode=dark] a:not([href]):not([class]),html[data-netbox-color-mode=dark] a:not([href]):not([class]):hover{color:inherit;text-decoration:none}html[data-netbox-color-mode=dark] pre,html[data-netbox-color-mode=dark] code,html[data-netbox-color-mode=dark] kbd,html[data-netbox-color-mode=dark] samp{font-family:var(--bs-font-monospace);font-size:1em;direction:ltr;unicode-bidi:bidi-override}html[data-netbox-color-mode=dark] pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em}html[data-netbox-color-mode=dark] pre code{font-size:inherit;color:inherit;word-break:normal}html[data-netbox-color-mode=dark] code{font-size:.875em;color:#e9ecef;word-wrap:break-word}a>html[data-netbox-color-mode=dark] code{color:inherit}html[data-netbox-color-mode=dark] kbd{padding:.2rem .4rem;font-size:.875em;color:#fff;background-color:#dee2e6;border-radius:.375rem}html[data-netbox-color-mode=dark] kbd kbd{padding:0;font-size:1em;font-weight:700}html[data-netbox-color-mode=dark] figure{margin:0 0 1rem}html[data-netbox-color-mode=dark] img,html[data-netbox-color-mode=dark] svg{vertical-align:middle}html[data-netbox-color-mode=dark] table{caption-side:bottom;border-collapse:collapse}html[data-netbox-color-mode=dark] caption{padding-top:.5rem;padding-bottom:.5rem;color:#6c757d;text-align:left}html[data-netbox-color-mode=dark] th{text-align:inherit;text-align:-webkit-match-parent}html[data-netbox-color-mode=dark] thead,html[data-netbox-color-mode=dark] tbody,html[data-netbox-color-mode=dark] tfoot,html[data-netbox-color-mode=dark] tr,html[data-netbox-color-mode=dark] td,html[data-netbox-color-mode=dark] th{border-color:inherit;border-style:solid;border-width:0}html[data-netbox-color-mode=dark] label{display:inline-block}html[data-netbox-color-mode=dark] button{border-radius:0}html[data-netbox-color-mode=dark] button:focus:not(:focus-visible){outline:0}html[data-netbox-color-mode=dark] input,html[data-netbox-color-mode=dark] button,html[data-netbox-color-mode=dark] select,html[data-netbox-color-mode=dark] optgroup,html[data-netbox-color-mode=dark] textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}html[data-netbox-color-mode=dark] button,html[data-netbox-color-mode=dark] select{text-transform:none}html[data-netbox-color-mode=dark] [role=button]{cursor:pointer}html[data-netbox-color-mode=dark] select{word-wrap:normal}html[data-netbox-color-mode=dark] select:disabled{opacity:1}html[data-netbox-color-mode=dark] [list]::-webkit-calendar-picker-indicator{display:none}html[data-netbox-color-mode=dark] button,html[data-netbox-color-mode=dark] [type=button],html[data-netbox-color-mode=dark] [type=reset],html[data-netbox-color-mode=dark] [type=submit]{-webkit-appearance:button}html[data-netbox-color-mode=dark] button:not(:disabled),html[data-netbox-color-mode=dark] [type=button]:not(:disabled),html[data-netbox-color-mode=dark] [type=reset]:not(:disabled),html[data-netbox-color-mode=dark] [type=submit]:not(:disabled){cursor:pointer}html[data-netbox-color-mode=dark] ::-moz-focus-inner{padding:0;border-style:none}html[data-netbox-color-mode=dark] textarea{resize:vertical}html[data-netbox-color-mode=dark] fieldset{min-width:0;padding:0;margin:0;border:0}html[data-netbox-color-mode=dark] legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + .3vw);line-height:inherit}@media (min-width: 1200px){html[data-netbox-color-mode=dark] legend{font-size:1.5rem}}html[data-netbox-color-mode=dark] legend+*{clear:left}html[data-netbox-color-mode=dark] ::-webkit-datetime-edit-fields-wrapper,html[data-netbox-color-mode=dark] ::-webkit-datetime-edit-text,html[data-netbox-color-mode=dark] ::-webkit-datetime-edit-minute,html[data-netbox-color-mode=dark] ::-webkit-datetime-edit-hour-field,html[data-netbox-color-mode=dark] ::-webkit-datetime-edit-day-field,html[data-netbox-color-mode=dark] ::-webkit-datetime-edit-month-field,html[data-netbox-color-mode=dark] ::-webkit-datetime-edit-year-field{padding:0}html[data-netbox-color-mode=dark] ::-webkit-inner-spin-button{height:auto}html[data-netbox-color-mode=dark] [type=search]{outline-offset:-2px;-webkit-appearance:textfield}html[data-netbox-color-mode=dark] ::-webkit-search-decoration{-webkit-appearance:none}html[data-netbox-color-mode=dark] ::-webkit-color-swatch-wrapper{padding:0}html[data-netbox-color-mode=dark] ::file-selector-button{font:inherit}html[data-netbox-color-mode=dark] ::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}html[data-netbox-color-mode=dark] output{display:inline-block}html[data-netbox-color-mode=dark] iframe{border:0}html[data-netbox-color-mode=dark] summary{display:list-item;cursor:pointer}html[data-netbox-color-mode=dark] progress{vertical-align:baseline}html[data-netbox-color-mode=dark] [hidden]{display:none!important}html[data-netbox-color-mode=dark] .lead{font-size:1.25rem;font-weight:300}html[data-netbox-color-mode=dark] .display-1{font-size:calc(1.625rem + 4.5vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){html[data-netbox-color-mode=dark] .display-1{font-size:5rem}}html[data-netbox-color-mode=dark] .display-2{font-size:calc(1.575rem + 3.9vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){html[data-netbox-color-mode=dark] .display-2{font-size:4.5rem}}html[data-netbox-color-mode=dark] .display-3{font-size:calc(1.525rem + 3.3vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){html[data-netbox-color-mode=dark] .display-3{font-size:4rem}}html[data-netbox-color-mode=dark] .display-4{font-size:calc(1.475rem + 2.7vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){html[data-netbox-color-mode=dark] .display-4{font-size:3.5rem}}html[data-netbox-color-mode=dark] .display-5{font-size:calc(1.425rem + 2.1vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){html[data-netbox-color-mode=dark] .display-5{font-size:3rem}}html[data-netbox-color-mode=dark] .display-6{font-size:calc(1.375rem + 1.5vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){html[data-netbox-color-mode=dark] .display-6{font-size:2.5rem}}html[data-netbox-color-mode=dark] .list-unstyled{padding-left:0;list-style:none}html[data-netbox-color-mode=dark] .list-inline{padding-left:0;list-style:none}html[data-netbox-color-mode=dark] .list-inline-item{display:inline-block}html[data-netbox-color-mode=dark] .list-inline-item:not(:last-child){margin-right:.5rem}html[data-netbox-color-mode=dark] .initialism{font-size:.875em;text-transform:uppercase}html[data-netbox-color-mode=dark] .blockquote{margin-bottom:1rem;font-size:1.25rem}html[data-netbox-color-mode=dark] .blockquote>:last-child{margin-bottom:0}html[data-netbox-color-mode=dark] .blockquote-footer{margin-top:-1rem;margin-bottom:1rem;font-size:.875em;color:#6c757d}html[data-netbox-color-mode=dark] .blockquote-footer:before{content:"\2014\a0"}html[data-netbox-color-mode=dark] .img-fluid{max-width:100%;height:auto}html[data-netbox-color-mode=dark] .img-thumbnail{padding:.25rem;background-color:#1b1f22;border:1px solid #dee2e6;border-radius:.375rem;max-width:100%;height:auto}html[data-netbox-color-mode=dark] .figure{display:inline-block}html[data-netbox-color-mode=dark] .figure-img{margin-bottom:.5rem;line-height:1}html[data-netbox-color-mode=dark] .figure-caption{font-size:.875em;color:#6c757d}html[data-netbox-color-mode=dark] .container,html[data-netbox-color-mode=dark] .container-fluid,html[data-netbox-color-mode=dark] .container-xxl,html[data-netbox-color-mode=dark] .container-xl,html[data-netbox-color-mode=dark] .container-lg,html[data-netbox-color-mode=dark] .container-md,html[data-netbox-color-mode=dark] .container-sm{width:100%;padding-right:var(--bs-gutter-x, .75rem);padding-left:var(--bs-gutter-x, .75rem);margin-right:auto;margin-left:auto}@media (min-width: 576px){html[data-netbox-color-mode=dark] .container-sm,html[data-netbox-color-mode=dark] .container{max-width:540px}}@media (min-width: 768px){html[data-netbox-color-mode=dark] .container-md,html[data-netbox-color-mode=dark] .container-sm,html[data-netbox-color-mode=dark] .container{max-width:720px}}@media (min-width: 992px){html[data-netbox-color-mode=dark] .container-lg,html[data-netbox-color-mode=dark] .container-md,html[data-netbox-color-mode=dark] .container-sm,html[data-netbox-color-mode=dark] .container{max-width:960px}}@media (min-width: 1200px){html[data-netbox-color-mode=dark] .container-xl,html[data-netbox-color-mode=dark] .container-lg,html[data-netbox-color-mode=dark] .container-md,html[data-netbox-color-mode=dark] .container-sm,html[data-netbox-color-mode=dark] .container{max-width:1140px}}@media (min-width: 1400px){html[data-netbox-color-mode=dark] .container-xxl,html[data-netbox-color-mode=dark] .container-xl,html[data-netbox-color-mode=dark] .container-lg,html[data-netbox-color-mode=dark] .container-md,html[data-netbox-color-mode=dark] .container-sm,html[data-netbox-color-mode=dark] .container{max-width:1320px}}html[data-netbox-color-mode=dark] .row{--bs-gutter-x: 1.5rem;--bs-gutter-y: 0;display:flex;flex-wrap:wrap;margin-top:calc(var(--bs-gutter-y) * -1);margin-right:calc(var(--bs-gutter-x) * -.5);margin-left:calc(var(--bs-gutter-x) * -.5)}html[data-netbox-color-mode=dark] .row>*{flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-top:var(--bs-gutter-y)}html[data-netbox-color-mode=dark] .col{flex:1 0 0%}html[data-netbox-color-mode=dark] .row-cols-auto>*{flex:0 0 auto;width:auto}html[data-netbox-color-mode=dark] .row-cols-1>*{flex:0 0 auto;width:100%}html[data-netbox-color-mode=dark] .row-cols-2>*{flex:0 0 auto;width:50%}html[data-netbox-color-mode=dark] .row-cols-3>*{flex:0 0 auto;width:33.3333333333%}html[data-netbox-color-mode=dark] .row-cols-4>*{flex:0 0 auto;width:25%}html[data-netbox-color-mode=dark] .row-cols-5>*{flex:0 0 auto;width:20%}html[data-netbox-color-mode=dark] .row-cols-6>*{flex:0 0 auto;width:16.6666666667%}@media (min-width: 576px){html[data-netbox-color-mode=dark] .col-sm{flex:1 0 0%}html[data-netbox-color-mode=dark] .row-cols-sm-auto>*{flex:0 0 auto;width:auto}html[data-netbox-color-mode=dark] .row-cols-sm-1>*{flex:0 0 auto;width:100%}html[data-netbox-color-mode=dark] .row-cols-sm-2>*{flex:0 0 auto;width:50%}html[data-netbox-color-mode=dark] .row-cols-sm-3>*{flex:0 0 auto;width:33.3333333333%}html[data-netbox-color-mode=dark] .row-cols-sm-4>*{flex:0 0 auto;width:25%}html[data-netbox-color-mode=dark] .row-cols-sm-5>*{flex:0 0 auto;width:20%}html[data-netbox-color-mode=dark] .row-cols-sm-6>*{flex:0 0 auto;width:16.6666666667%}}@media (min-width: 768px){html[data-netbox-color-mode=dark] .col-md{flex:1 0 0%}html[data-netbox-color-mode=dark] .row-cols-md-auto>*{flex:0 0 auto;width:auto}html[data-netbox-color-mode=dark] .row-cols-md-1>*{flex:0 0 auto;width:100%}html[data-netbox-color-mode=dark] .row-cols-md-2>*{flex:0 0 auto;width:50%}html[data-netbox-color-mode=dark] .row-cols-md-3>*{flex:0 0 auto;width:33.3333333333%}html[data-netbox-color-mode=dark] .row-cols-md-4>*{flex:0 0 auto;width:25%}html[data-netbox-color-mode=dark] .row-cols-md-5>*{flex:0 0 auto;width:20%}html[data-netbox-color-mode=dark] .row-cols-md-6>*{flex:0 0 auto;width:16.6666666667%}}@media (min-width: 992px){html[data-netbox-color-mode=dark] .col-lg{flex:1 0 0%}html[data-netbox-color-mode=dark] .row-cols-lg-auto>*{flex:0 0 auto;width:auto}html[data-netbox-color-mode=dark] .row-cols-lg-1>*{flex:0 0 auto;width:100%}html[data-netbox-color-mode=dark] .row-cols-lg-2>*{flex:0 0 auto;width:50%}html[data-netbox-color-mode=dark] .row-cols-lg-3>*{flex:0 0 auto;width:33.3333333333%}html[data-netbox-color-mode=dark] .row-cols-lg-4>*{flex:0 0 auto;width:25%}html[data-netbox-color-mode=dark] .row-cols-lg-5>*{flex:0 0 auto;width:20%}html[data-netbox-color-mode=dark] .row-cols-lg-6>*{flex:0 0 auto;width:16.6666666667%}}@media (min-width: 1200px){html[data-netbox-color-mode=dark] .col-xl{flex:1 0 0%}html[data-netbox-color-mode=dark] .row-cols-xl-auto>*{flex:0 0 auto;width:auto}html[data-netbox-color-mode=dark] .row-cols-xl-1>*{flex:0 0 auto;width:100%}html[data-netbox-color-mode=dark] .row-cols-xl-2>*{flex:0 0 auto;width:50%}html[data-netbox-color-mode=dark] .row-cols-xl-3>*{flex:0 0 auto;width:33.3333333333%}html[data-netbox-color-mode=dark] .row-cols-xl-4>*{flex:0 0 auto;width:25%}html[data-netbox-color-mode=dark] .row-cols-xl-5>*{flex:0 0 auto;width:20%}html[data-netbox-color-mode=dark] .row-cols-xl-6>*{flex:0 0 auto;width:16.6666666667%}}@media (min-width: 1400px){html[data-netbox-color-mode=dark] .col-xxl{flex:1 0 0%}html[data-netbox-color-mode=dark] .row-cols-xxl-auto>*{flex:0 0 auto;width:auto}html[data-netbox-color-mode=dark] .row-cols-xxl-1>*{flex:0 0 auto;width:100%}html[data-netbox-color-mode=dark] .row-cols-xxl-2>*{flex:0 0 auto;width:50%}html[data-netbox-color-mode=dark] .row-cols-xxl-3>*{flex:0 0 auto;width:33.3333333333%}html[data-netbox-color-mode=dark] .row-cols-xxl-4>*{flex:0 0 auto;width:25%}html[data-netbox-color-mode=dark] .row-cols-xxl-5>*{flex:0 0 auto;width:20%}html[data-netbox-color-mode=dark] .row-cols-xxl-6>*{flex:0 0 auto;width:16.6666666667%}}html[data-netbox-color-mode=dark] .col-auto{flex:0 0 auto;width:auto}html[data-netbox-color-mode=dark] .col-1{flex:0 0 auto;width:8.33333333%}html[data-netbox-color-mode=dark] .col-2{flex:0 0 auto;width:16.66666667%}html[data-netbox-color-mode=dark] .col-3{flex:0 0 auto;width:25%}html[data-netbox-color-mode=dark] .col-4{flex:0 0 auto;width:33.33333333%}html[data-netbox-color-mode=dark] .col-5{flex:0 0 auto;width:41.66666667%}html[data-netbox-color-mode=dark] .col-6{flex:0 0 auto;width:50%}html[data-netbox-color-mode=dark] .col-7{flex:0 0 auto;width:58.33333333%}html[data-netbox-color-mode=dark] .col-8{flex:0 0 auto;width:66.66666667%}html[data-netbox-color-mode=dark] .col-9{flex:0 0 auto;width:75%}html[data-netbox-color-mode=dark] .col-10{flex:0 0 auto;width:83.33333333%}html[data-netbox-color-mode=dark] .col-11{flex:0 0 auto;width:91.66666667%}html[data-netbox-color-mode=dark] .col-12{flex:0 0 auto;width:100%}html[data-netbox-color-mode=dark] .offset-1{margin-left:8.33333333%}html[data-netbox-color-mode=dark] .offset-2{margin-left:16.66666667%}html[data-netbox-color-mode=dark] .offset-3{margin-left:25%}html[data-netbox-color-mode=dark] .offset-4{margin-left:33.33333333%}html[data-netbox-color-mode=dark] .offset-5{margin-left:41.66666667%}html[data-netbox-color-mode=dark] .offset-6{margin-left:50%}html[data-netbox-color-mode=dark] .offset-7{margin-left:58.33333333%}html[data-netbox-color-mode=dark] .offset-8{margin-left:66.66666667%}html[data-netbox-color-mode=dark] .offset-9{margin-left:75%}html[data-netbox-color-mode=dark] .offset-10{margin-left:83.33333333%}html[data-netbox-color-mode=dark] .offset-11{margin-left:91.66666667%}html[data-netbox-color-mode=dark] .g-0,html[data-netbox-color-mode=dark] .gx-0{--bs-gutter-x: 0}html[data-netbox-color-mode=dark] .g-0,html[data-netbox-color-mode=dark] .gy-0{--bs-gutter-y: 0}html[data-netbox-color-mode=dark] .g-1,html[data-netbox-color-mode=dark] .gx-1{--bs-gutter-x: .25rem}html[data-netbox-color-mode=dark] .g-1,html[data-netbox-color-mode=dark] .gy-1{--bs-gutter-y: .25rem}html[data-netbox-color-mode=dark] .g-2,html[data-netbox-color-mode=dark] .gx-2{--bs-gutter-x: .5rem}html[data-netbox-color-mode=dark] .g-2,html[data-netbox-color-mode=dark] .gy-2{--bs-gutter-y: .5rem}html[data-netbox-color-mode=dark] .g-3,html[data-netbox-color-mode=dark] .gx-3{--bs-gutter-x: 1rem}html[data-netbox-color-mode=dark] .g-3,html[data-netbox-color-mode=dark] .gy-3{--bs-gutter-y: 1rem}html[data-netbox-color-mode=dark] .g-4,html[data-netbox-color-mode=dark] .gx-4{--bs-gutter-x: 1.5rem}html[data-netbox-color-mode=dark] .g-4,html[data-netbox-color-mode=dark] .gy-4{--bs-gutter-y: 1.5rem}html[data-netbox-color-mode=dark] .g-5,html[data-netbox-color-mode=dark] .gx-5{--bs-gutter-x: 3rem}html[data-netbox-color-mode=dark] .g-5,html[data-netbox-color-mode=dark] .gy-5{--bs-gutter-y: 3rem}@media (min-width: 576px){html[data-netbox-color-mode=dark] .col-sm-auto{flex:0 0 auto;width:auto}html[data-netbox-color-mode=dark] .col-sm-1{flex:0 0 auto;width:8.33333333%}html[data-netbox-color-mode=dark] .col-sm-2{flex:0 0 auto;width:16.66666667%}html[data-netbox-color-mode=dark] .col-sm-3{flex:0 0 auto;width:25%}html[data-netbox-color-mode=dark] .col-sm-4{flex:0 0 auto;width:33.33333333%}html[data-netbox-color-mode=dark] .col-sm-5{flex:0 0 auto;width:41.66666667%}html[data-netbox-color-mode=dark] .col-sm-6{flex:0 0 auto;width:50%}html[data-netbox-color-mode=dark] .col-sm-7{flex:0 0 auto;width:58.33333333%}html[data-netbox-color-mode=dark] .col-sm-8{flex:0 0 auto;width:66.66666667%}html[data-netbox-color-mode=dark] .col-sm-9{flex:0 0 auto;width:75%}html[data-netbox-color-mode=dark] .col-sm-10{flex:0 0 auto;width:83.33333333%}html[data-netbox-color-mode=dark] .col-sm-11{flex:0 0 auto;width:91.66666667%}html[data-netbox-color-mode=dark] .col-sm-12{flex:0 0 auto;width:100%}html[data-netbox-color-mode=dark] .offset-sm-0{margin-left:0}html[data-netbox-color-mode=dark] .offset-sm-1{margin-left:8.33333333%}html[data-netbox-color-mode=dark] .offset-sm-2{margin-left:16.66666667%}html[data-netbox-color-mode=dark] .offset-sm-3{margin-left:25%}html[data-netbox-color-mode=dark] .offset-sm-4{margin-left:33.33333333%}html[data-netbox-color-mode=dark] .offset-sm-5{margin-left:41.66666667%}html[data-netbox-color-mode=dark] .offset-sm-6{margin-left:50%}html[data-netbox-color-mode=dark] .offset-sm-7{margin-left:58.33333333%}html[data-netbox-color-mode=dark] .offset-sm-8{margin-left:66.66666667%}html[data-netbox-color-mode=dark] .offset-sm-9{margin-left:75%}html[data-netbox-color-mode=dark] .offset-sm-10{margin-left:83.33333333%}html[data-netbox-color-mode=dark] .offset-sm-11{margin-left:91.66666667%}html[data-netbox-color-mode=dark] .g-sm-0,html[data-netbox-color-mode=dark] .gx-sm-0{--bs-gutter-x: 0}html[data-netbox-color-mode=dark] .g-sm-0,html[data-netbox-color-mode=dark] .gy-sm-0{--bs-gutter-y: 0}html[data-netbox-color-mode=dark] .g-sm-1,html[data-netbox-color-mode=dark] .gx-sm-1{--bs-gutter-x: .25rem}html[data-netbox-color-mode=dark] .g-sm-1,html[data-netbox-color-mode=dark] .gy-sm-1{--bs-gutter-y: .25rem}html[data-netbox-color-mode=dark] .g-sm-2,html[data-netbox-color-mode=dark] .gx-sm-2{--bs-gutter-x: .5rem}html[data-netbox-color-mode=dark] .g-sm-2,html[data-netbox-color-mode=dark] .gy-sm-2{--bs-gutter-y: .5rem}html[data-netbox-color-mode=dark] .g-sm-3,html[data-netbox-color-mode=dark] .gx-sm-3{--bs-gutter-x: 1rem}html[data-netbox-color-mode=dark] .g-sm-3,html[data-netbox-color-mode=dark] .gy-sm-3{--bs-gutter-y: 1rem}html[data-netbox-color-mode=dark] .g-sm-4,html[data-netbox-color-mode=dark] .gx-sm-4{--bs-gutter-x: 1.5rem}html[data-netbox-color-mode=dark] .g-sm-4,html[data-netbox-color-mode=dark] .gy-sm-4{--bs-gutter-y: 1.5rem}html[data-netbox-color-mode=dark] .g-sm-5,html[data-netbox-color-mode=dark] .gx-sm-5{--bs-gutter-x: 3rem}html[data-netbox-color-mode=dark] .g-sm-5,html[data-netbox-color-mode=dark] .gy-sm-5{--bs-gutter-y: 3rem}}@media (min-width: 768px){html[data-netbox-color-mode=dark] .col-md-auto{flex:0 0 auto;width:auto}html[data-netbox-color-mode=dark] .col-md-1{flex:0 0 auto;width:8.33333333%}html[data-netbox-color-mode=dark] .col-md-2{flex:0 0 auto;width:16.66666667%}html[data-netbox-color-mode=dark] .col-md-3{flex:0 0 auto;width:25%}html[data-netbox-color-mode=dark] .col-md-4{flex:0 0 auto;width:33.33333333%}html[data-netbox-color-mode=dark] .col-md-5{flex:0 0 auto;width:41.66666667%}html[data-netbox-color-mode=dark] .col-md-6{flex:0 0 auto;width:50%}html[data-netbox-color-mode=dark] .col-md-7{flex:0 0 auto;width:58.33333333%}html[data-netbox-color-mode=dark] .col-md-8{flex:0 0 auto;width:66.66666667%}html[data-netbox-color-mode=dark] .col-md-9{flex:0 0 auto;width:75%}html[data-netbox-color-mode=dark] .col-md-10{flex:0 0 auto;width:83.33333333%}html[data-netbox-color-mode=dark] .col-md-11{flex:0 0 auto;width:91.66666667%}html[data-netbox-color-mode=dark] .col-md-12{flex:0 0 auto;width:100%}html[data-netbox-color-mode=dark] .offset-md-0{margin-left:0}html[data-netbox-color-mode=dark] .offset-md-1{margin-left:8.33333333%}html[data-netbox-color-mode=dark] .offset-md-2{margin-left:16.66666667%}html[data-netbox-color-mode=dark] .offset-md-3{margin-left:25%}html[data-netbox-color-mode=dark] .offset-md-4{margin-left:33.33333333%}html[data-netbox-color-mode=dark] .offset-md-5{margin-left:41.66666667%}html[data-netbox-color-mode=dark] .offset-md-6{margin-left:50%}html[data-netbox-color-mode=dark] .offset-md-7{margin-left:58.33333333%}html[data-netbox-color-mode=dark] .offset-md-8{margin-left:66.66666667%}html[data-netbox-color-mode=dark] .offset-md-9{margin-left:75%}html[data-netbox-color-mode=dark] .offset-md-10{margin-left:83.33333333%}html[data-netbox-color-mode=dark] .offset-md-11{margin-left:91.66666667%}html[data-netbox-color-mode=dark] .g-md-0,html[data-netbox-color-mode=dark] .gx-md-0{--bs-gutter-x: 0}html[data-netbox-color-mode=dark] .g-md-0,html[data-netbox-color-mode=dark] .gy-md-0{--bs-gutter-y: 0}html[data-netbox-color-mode=dark] .g-md-1,html[data-netbox-color-mode=dark] .gx-md-1{--bs-gutter-x: .25rem}html[data-netbox-color-mode=dark] .g-md-1,html[data-netbox-color-mode=dark] .gy-md-1{--bs-gutter-y: .25rem}html[data-netbox-color-mode=dark] .g-md-2,html[data-netbox-color-mode=dark] .gx-md-2{--bs-gutter-x: .5rem}html[data-netbox-color-mode=dark] .g-md-2,html[data-netbox-color-mode=dark] .gy-md-2{--bs-gutter-y: .5rem}html[data-netbox-color-mode=dark] .g-md-3,html[data-netbox-color-mode=dark] .gx-md-3{--bs-gutter-x: 1rem}html[data-netbox-color-mode=dark] .g-md-3,html[data-netbox-color-mode=dark] .gy-md-3{--bs-gutter-y: 1rem}html[data-netbox-color-mode=dark] .g-md-4,html[data-netbox-color-mode=dark] .gx-md-4{--bs-gutter-x: 1.5rem}html[data-netbox-color-mode=dark] .g-md-4,html[data-netbox-color-mode=dark] .gy-md-4{--bs-gutter-y: 1.5rem}html[data-netbox-color-mode=dark] .g-md-5,html[data-netbox-color-mode=dark] .gx-md-5{--bs-gutter-x: 3rem}html[data-netbox-color-mode=dark] .g-md-5,html[data-netbox-color-mode=dark] .gy-md-5{--bs-gutter-y: 3rem}}@media (min-width: 992px){html[data-netbox-color-mode=dark] .col-lg-auto{flex:0 0 auto;width:auto}html[data-netbox-color-mode=dark] .col-lg-1{flex:0 0 auto;width:8.33333333%}html[data-netbox-color-mode=dark] .col-lg-2{flex:0 0 auto;width:16.66666667%}html[data-netbox-color-mode=dark] .col-lg-3{flex:0 0 auto;width:25%}html[data-netbox-color-mode=dark] .col-lg-4{flex:0 0 auto;width:33.33333333%}html[data-netbox-color-mode=dark] .col-lg-5{flex:0 0 auto;width:41.66666667%}html[data-netbox-color-mode=dark] .col-lg-6{flex:0 0 auto;width:50%}html[data-netbox-color-mode=dark] .col-lg-7{flex:0 0 auto;width:58.33333333%}html[data-netbox-color-mode=dark] .col-lg-8{flex:0 0 auto;width:66.66666667%}html[data-netbox-color-mode=dark] .col-lg-9{flex:0 0 auto;width:75%}html[data-netbox-color-mode=dark] .col-lg-10{flex:0 0 auto;width:83.33333333%}html[data-netbox-color-mode=dark] .col-lg-11{flex:0 0 auto;width:91.66666667%}html[data-netbox-color-mode=dark] .col-lg-12{flex:0 0 auto;width:100%}html[data-netbox-color-mode=dark] .offset-lg-0{margin-left:0}html[data-netbox-color-mode=dark] .offset-lg-1{margin-left:8.33333333%}html[data-netbox-color-mode=dark] .offset-lg-2{margin-left:16.66666667%}html[data-netbox-color-mode=dark] .offset-lg-3{margin-left:25%}html[data-netbox-color-mode=dark] .offset-lg-4{margin-left:33.33333333%}html[data-netbox-color-mode=dark] .offset-lg-5{margin-left:41.66666667%}html[data-netbox-color-mode=dark] .offset-lg-6{margin-left:50%}html[data-netbox-color-mode=dark] .offset-lg-7{margin-left:58.33333333%}html[data-netbox-color-mode=dark] .offset-lg-8{margin-left:66.66666667%}html[data-netbox-color-mode=dark] .offset-lg-9{margin-left:75%}html[data-netbox-color-mode=dark] .offset-lg-10{margin-left:83.33333333%}html[data-netbox-color-mode=dark] .offset-lg-11{margin-left:91.66666667%}html[data-netbox-color-mode=dark] .g-lg-0,html[data-netbox-color-mode=dark] .gx-lg-0{--bs-gutter-x: 0}html[data-netbox-color-mode=dark] .g-lg-0,html[data-netbox-color-mode=dark] .gy-lg-0{--bs-gutter-y: 0}html[data-netbox-color-mode=dark] .g-lg-1,html[data-netbox-color-mode=dark] .gx-lg-1{--bs-gutter-x: .25rem}html[data-netbox-color-mode=dark] .g-lg-1,html[data-netbox-color-mode=dark] .gy-lg-1{--bs-gutter-y: .25rem}html[data-netbox-color-mode=dark] .g-lg-2,html[data-netbox-color-mode=dark] .gx-lg-2{--bs-gutter-x: .5rem}html[data-netbox-color-mode=dark] .g-lg-2,html[data-netbox-color-mode=dark] .gy-lg-2{--bs-gutter-y: .5rem}html[data-netbox-color-mode=dark] .g-lg-3,html[data-netbox-color-mode=dark] .gx-lg-3{--bs-gutter-x: 1rem}html[data-netbox-color-mode=dark] .g-lg-3,html[data-netbox-color-mode=dark] .gy-lg-3{--bs-gutter-y: 1rem}html[data-netbox-color-mode=dark] .g-lg-4,html[data-netbox-color-mode=dark] .gx-lg-4{--bs-gutter-x: 1.5rem}html[data-netbox-color-mode=dark] .g-lg-4,html[data-netbox-color-mode=dark] .gy-lg-4{--bs-gutter-y: 1.5rem}html[data-netbox-color-mode=dark] .g-lg-5,html[data-netbox-color-mode=dark] .gx-lg-5{--bs-gutter-x: 3rem}html[data-netbox-color-mode=dark] .g-lg-5,html[data-netbox-color-mode=dark] .gy-lg-5{--bs-gutter-y: 3rem}}@media (min-width: 1200px){html[data-netbox-color-mode=dark] .col-xl-auto{flex:0 0 auto;width:auto}html[data-netbox-color-mode=dark] .col-xl-1{flex:0 0 auto;width:8.33333333%}html[data-netbox-color-mode=dark] .col-xl-2{flex:0 0 auto;width:16.66666667%}html[data-netbox-color-mode=dark] .col-xl-3{flex:0 0 auto;width:25%}html[data-netbox-color-mode=dark] .col-xl-4{flex:0 0 auto;width:33.33333333%}html[data-netbox-color-mode=dark] .col-xl-5{flex:0 0 auto;width:41.66666667%}html[data-netbox-color-mode=dark] .col-xl-6{flex:0 0 auto;width:50%}html[data-netbox-color-mode=dark] .col-xl-7{flex:0 0 auto;width:58.33333333%}html[data-netbox-color-mode=dark] .col-xl-8{flex:0 0 auto;width:66.66666667%}html[data-netbox-color-mode=dark] .col-xl-9{flex:0 0 auto;width:75%}html[data-netbox-color-mode=dark] .col-xl-10{flex:0 0 auto;width:83.33333333%}html[data-netbox-color-mode=dark] .col-xl-11{flex:0 0 auto;width:91.66666667%}html[data-netbox-color-mode=dark] .col-xl-12{flex:0 0 auto;width:100%}html[data-netbox-color-mode=dark] .offset-xl-0{margin-left:0}html[data-netbox-color-mode=dark] .offset-xl-1{margin-left:8.33333333%}html[data-netbox-color-mode=dark] .offset-xl-2{margin-left:16.66666667%}html[data-netbox-color-mode=dark] .offset-xl-3{margin-left:25%}html[data-netbox-color-mode=dark] .offset-xl-4{margin-left:33.33333333%}html[data-netbox-color-mode=dark] .offset-xl-5{margin-left:41.66666667%}html[data-netbox-color-mode=dark] .offset-xl-6{margin-left:50%}html[data-netbox-color-mode=dark] .offset-xl-7{margin-left:58.33333333%}html[data-netbox-color-mode=dark] .offset-xl-8{margin-left:66.66666667%}html[data-netbox-color-mode=dark] .offset-xl-9{margin-left:75%}html[data-netbox-color-mode=dark] .offset-xl-10{margin-left:83.33333333%}html[data-netbox-color-mode=dark] .offset-xl-11{margin-left:91.66666667%}html[data-netbox-color-mode=dark] .g-xl-0,html[data-netbox-color-mode=dark] .gx-xl-0{--bs-gutter-x: 0}html[data-netbox-color-mode=dark] .g-xl-0,html[data-netbox-color-mode=dark] .gy-xl-0{--bs-gutter-y: 0}html[data-netbox-color-mode=dark] .g-xl-1,html[data-netbox-color-mode=dark] .gx-xl-1{--bs-gutter-x: .25rem}html[data-netbox-color-mode=dark] .g-xl-1,html[data-netbox-color-mode=dark] .gy-xl-1{--bs-gutter-y: .25rem}html[data-netbox-color-mode=dark] .g-xl-2,html[data-netbox-color-mode=dark] .gx-xl-2{--bs-gutter-x: .5rem}html[data-netbox-color-mode=dark] .g-xl-2,html[data-netbox-color-mode=dark] .gy-xl-2{--bs-gutter-y: .5rem}html[data-netbox-color-mode=dark] .g-xl-3,html[data-netbox-color-mode=dark] .gx-xl-3{--bs-gutter-x: 1rem}html[data-netbox-color-mode=dark] .g-xl-3,html[data-netbox-color-mode=dark] .gy-xl-3{--bs-gutter-y: 1rem}html[data-netbox-color-mode=dark] .g-xl-4,html[data-netbox-color-mode=dark] .gx-xl-4{--bs-gutter-x: 1.5rem}html[data-netbox-color-mode=dark] .g-xl-4,html[data-netbox-color-mode=dark] .gy-xl-4{--bs-gutter-y: 1.5rem}html[data-netbox-color-mode=dark] .g-xl-5,html[data-netbox-color-mode=dark] .gx-xl-5{--bs-gutter-x: 3rem}html[data-netbox-color-mode=dark] .g-xl-5,html[data-netbox-color-mode=dark] .gy-xl-5{--bs-gutter-y: 3rem}}@media (min-width: 1400px){html[data-netbox-color-mode=dark] .col-xxl-auto{flex:0 0 auto;width:auto}html[data-netbox-color-mode=dark] .col-xxl-1{flex:0 0 auto;width:8.33333333%}html[data-netbox-color-mode=dark] .col-xxl-2{flex:0 0 auto;width:16.66666667%}html[data-netbox-color-mode=dark] .col-xxl-3{flex:0 0 auto;width:25%}html[data-netbox-color-mode=dark] .col-xxl-4{flex:0 0 auto;width:33.33333333%}html[data-netbox-color-mode=dark] .col-xxl-5{flex:0 0 auto;width:41.66666667%}html[data-netbox-color-mode=dark] .col-xxl-6{flex:0 0 auto;width:50%}html[data-netbox-color-mode=dark] .col-xxl-7{flex:0 0 auto;width:58.33333333%}html[data-netbox-color-mode=dark] .col-xxl-8{flex:0 0 auto;width:66.66666667%}html[data-netbox-color-mode=dark] .col-xxl-9{flex:0 0 auto;width:75%}html[data-netbox-color-mode=dark] .col-xxl-10{flex:0 0 auto;width:83.33333333%}html[data-netbox-color-mode=dark] .col-xxl-11{flex:0 0 auto;width:91.66666667%}html[data-netbox-color-mode=dark] .col-xxl-12{flex:0 0 auto;width:100%}html[data-netbox-color-mode=dark] .offset-xxl-0{margin-left:0}html[data-netbox-color-mode=dark] .offset-xxl-1{margin-left:8.33333333%}html[data-netbox-color-mode=dark] .offset-xxl-2{margin-left:16.66666667%}html[data-netbox-color-mode=dark] .offset-xxl-3{margin-left:25%}html[data-netbox-color-mode=dark] .offset-xxl-4{margin-left:33.33333333%}html[data-netbox-color-mode=dark] .offset-xxl-5{margin-left:41.66666667%}html[data-netbox-color-mode=dark] .offset-xxl-6{margin-left:50%}html[data-netbox-color-mode=dark] .offset-xxl-7{margin-left:58.33333333%}html[data-netbox-color-mode=dark] .offset-xxl-8{margin-left:66.66666667%}html[data-netbox-color-mode=dark] .offset-xxl-9{margin-left:75%}html[data-netbox-color-mode=dark] .offset-xxl-10{margin-left:83.33333333%}html[data-netbox-color-mode=dark] .offset-xxl-11{margin-left:91.66666667%}html[data-netbox-color-mode=dark] .g-xxl-0,html[data-netbox-color-mode=dark] .gx-xxl-0{--bs-gutter-x: 0}html[data-netbox-color-mode=dark] .g-xxl-0,html[data-netbox-color-mode=dark] .gy-xxl-0{--bs-gutter-y: 0}html[data-netbox-color-mode=dark] .g-xxl-1,html[data-netbox-color-mode=dark] .gx-xxl-1{--bs-gutter-x: .25rem}html[data-netbox-color-mode=dark] .g-xxl-1,html[data-netbox-color-mode=dark] .gy-xxl-1{--bs-gutter-y: .25rem}html[data-netbox-color-mode=dark] .g-xxl-2,html[data-netbox-color-mode=dark] .gx-xxl-2{--bs-gutter-x: .5rem}html[data-netbox-color-mode=dark] .g-xxl-2,html[data-netbox-color-mode=dark] .gy-xxl-2{--bs-gutter-y: .5rem}html[data-netbox-color-mode=dark] .g-xxl-3,html[data-netbox-color-mode=dark] .gx-xxl-3{--bs-gutter-x: 1rem}html[data-netbox-color-mode=dark] .g-xxl-3,html[data-netbox-color-mode=dark] .gy-xxl-3{--bs-gutter-y: 1rem}html[data-netbox-color-mode=dark] .g-xxl-4,html[data-netbox-color-mode=dark] .gx-xxl-4{--bs-gutter-x: 1.5rem}html[data-netbox-color-mode=dark] .g-xxl-4,html[data-netbox-color-mode=dark] .gy-xxl-4{--bs-gutter-y: 1.5rem}html[data-netbox-color-mode=dark] .g-xxl-5,html[data-netbox-color-mode=dark] .gx-xxl-5{--bs-gutter-x: 3rem}html[data-netbox-color-mode=dark] .g-xxl-5,html[data-netbox-color-mode=dark] .gy-xxl-5{--bs-gutter-y: 3rem}}html[data-netbox-color-mode=dark] .table{--bs-table-bg: transparent;--bs-table-accent-bg: transparent;--bs-table-striped-color: #f8f9fa;--bs-table-striped-bg: rgba(255, 255, 255, .05);--bs-table-active-color: #f8f9fa;--bs-table-active-bg: rgba(255, 255, 255, .1);--bs-table-hover-color: #f8f9fa;--bs-table-hover-bg: rgba(255, 255, 255, .075);width:100%;margin-bottom:1rem;color:#f8f9fa;vertical-align:top;border-color:#495057}html[data-netbox-color-mode=dark] .table>:not(caption)>*>*{padding:.5rem;background-color:var(--bs-table-bg);border-bottom-width:1px;box-shadow:inset 0 0 0 9999px var(--bs-table-accent-bg)}html[data-netbox-color-mode=dark] .table>tbody{vertical-align:inherit}html[data-netbox-color-mode=dark] .table>thead{vertical-align:bottom}html[data-netbox-color-mode=dark] .table>:not(:last-child)>:last-child>*{border-bottom-color:currentColor}html[data-netbox-color-mode=dark] .caption-top{caption-side:top}html[data-netbox-color-mode=dark] .table-sm>:not(caption)>*>*{padding:.25rem}html[data-netbox-color-mode=dark] .table-bordered>:not(caption)>*{border-width:1px 0}html[data-netbox-color-mode=dark] .table-bordered>:not(caption)>*>*{border-width:0 1px}html[data-netbox-color-mode=dark] .table-borderless>:not(caption)>*>*{border-bottom-width:0}html[data-netbox-color-mode=dark] .table-striped>tbody>tr:nth-of-type(odd){--bs-table-accent-bg: var(--bs-table-striped-bg);color:var(--bs-table-striped-color)}html[data-netbox-color-mode=dark] .table-active{--bs-table-accent-bg: var(--bs-table-active-bg);color:var(--bs-table-active-color)}html[data-netbox-color-mode=dark] .table-hover>tbody>tr:hover{--bs-table-accent-bg: var(--bs-table-hover-bg);color:var(--bs-table-hover-color)}html[data-netbox-color-mode=dark] .table-primary{--bs-table-bg: #cfe2ff;--bs-table-striped-bg: #c5d7f2;--bs-table-striped-color: #000;--bs-table-active-bg: #bacbe6;--bs-table-active-color: #000;--bs-table-hover-bg: #bfd1ec;--bs-table-hover-color: #000;color:#000;border-color:#bacbe6}html[data-netbox-color-mode=dark] .table-secondary{--bs-table-bg: #e2e3e5;--bs-table-striped-bg: #d7d8da;--bs-table-striped-color: #000;--bs-table-active-bg: #cbccce;--bs-table-active-color: #000;--bs-table-hover-bg: #d1d2d4;--bs-table-hover-color: #000;color:#000;border-color:#cbccce}html[data-netbox-color-mode=dark] .table-success{--bs-table-bg: #d1e7dd;--bs-table-striped-bg: #c7dbd2;--bs-table-striped-color: #000;--bs-table-active-bg: #bcd0c7;--bs-table-active-color: #000;--bs-table-hover-bg: #c1d6cc;--bs-table-hover-color: #000;color:#000;border-color:#bcd0c7}html[data-netbox-color-mode=dark] .table-info{--bs-table-bg: #cff4fc;--bs-table-striped-bg: #c5e8ef;--bs-table-striped-color: #000;--bs-table-active-bg: #badce3;--bs-table-active-color: #000;--bs-table-hover-bg: #bfe2e9;--bs-table-hover-color: #000;color:#000;border-color:#badce3}html[data-netbox-color-mode=dark] .table-warning{--bs-table-bg: #fff3cd;--bs-table-striped-bg: #f2e7c3;--bs-table-striped-color: #000;--bs-table-active-bg: #e6dbb9;--bs-table-active-color: #000;--bs-table-hover-bg: #ece1be;--bs-table-hover-color: #000;color:#000;border-color:#e6dbb9}html[data-netbox-color-mode=dark] .table-danger{--bs-table-bg: #f8d7da;--bs-table-striped-bg: #eccccf;--bs-table-striped-color: #000;--bs-table-active-bg: #dfc2c4;--bs-table-active-color: #000;--bs-table-hover-bg: #e5c7ca;--bs-table-hover-color: #000;color:#000;border-color:#dfc2c4}html[data-netbox-color-mode=dark] .table-light{--bs-table-bg: #f8f9fa;--bs-table-striped-bg: #ecedee;--bs-table-striped-color: #000;--bs-table-active-bg: #dfe0e1;--bs-table-active-color: #000;--bs-table-hover-bg: #e5e6e7;--bs-table-hover-color: #000;color:#000;border-color:#dfe0e1}html[data-netbox-color-mode=dark] .table-dark{--bs-table-bg: #212529;--bs-table-striped-bg: #2c3034;--bs-table-striped-color: #fff;--bs-table-active-bg: #373b3e;--bs-table-active-color: #fff;--bs-table-hover-bg: #323539;--bs-table-hover-color: #fff;color:#fff;border-color:#373b3e}html[data-netbox-color-mode=dark] .table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}@media (max-width: 575.98px){html[data-netbox-color-mode=dark] .table-responsive-sm{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width: 767.98px){html[data-netbox-color-mode=dark] .table-responsive-md{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width: 991.98px){html[data-netbox-color-mode=dark] .table-responsive-lg{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width: 1199.98px){html[data-netbox-color-mode=dark] .table-responsive-xl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width: 1399.98px){html[data-netbox-color-mode=dark] .table-responsive-xxl{overflow-x:auto;-webkit-overflow-scrolling:touch}}html[data-netbox-color-mode=dark] .form-label{margin-bottom:.5rem}html[data-netbox-color-mode=dark] .col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}html[data-netbox-color-mode=dark] .col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem}html[data-netbox-color-mode=dark] .col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem}html[data-netbox-color-mode=dark] .form-text{margin-top:.25rem;font-size:.875em;color:#ced4da}html[data-netbox-color-mode=dark] .form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#f8f9fa;background-color:#212529;background-clip:padding-box;border:1px solid #495057;appearance:none;border-radius:.375rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion: reduce){html[data-netbox-color-mode=dark] .form-control{transition:none}}html[data-netbox-color-mode=dark] .form-control[type=file]{overflow:hidden}html[data-netbox-color-mode=dark] .form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}html[data-netbox-color-mode=dark] .form-control:focus{color:#f8f9fa;background-color:#212529;border-color:#7db1fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}html[data-netbox-color-mode=dark] .form-control::-webkit-date-and-time-value{height:1.5em}html[data-netbox-color-mode=dark] .form-control::placeholder{color:#495057;opacity:1}html[data-netbox-color-mode=dark] .form-control:disabled,html[data-netbox-color-mode=dark] .form-control[readonly]{background-color:#495057;opacity:1}html[data-netbox-color-mode=dark] .form-control::file-selector-button{padding:.375rem .75rem;margin:-.375rem -.75rem;margin-inline-end:.75rem;color:#f8f9fa;background-color:#495057;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion: reduce){html[data-netbox-color-mode=dark] .form-control::file-selector-button{transition:none}}html[data-netbox-color-mode=dark] .form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:#454c53}html[data-netbox-color-mode=dark] .form-control::-webkit-file-upload-button{padding:.375rem .75rem;margin:-.375rem -.75rem;margin-inline-end:.75rem;color:#f8f9fa;background-color:#495057;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion: reduce){html[data-netbox-color-mode=dark] .form-control::-webkit-file-upload-button{transition:none}}html[data-netbox-color-mode=dark] .form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button{background-color:#454c53}html[data-netbox-color-mode=dark] .form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;line-height:1.5;color:#fff;background-color:transparent;border:solid transparent;border-width:1px 0}html[data-netbox-color-mode=dark] .form-control-plaintext.form-control-sm,html[data-netbox-color-mode=dark] .form-control-plaintext.form-control-lg{padding-right:0;padding-left:0}html[data-netbox-color-mode=dark] .form-control-sm{min-height:calc(1.5em + (.5rem + 2px));padding:.25rem .5rem;font-size:.875rem;border-radius:.375rem}html[data-netbox-color-mode=dark] .form-control-sm::file-selector-button{padding:.25rem .5rem;margin:-.25rem -.5rem;margin-inline-end:.5rem}html[data-netbox-color-mode=dark] .form-control-sm::-webkit-file-upload-button{padding:.25rem .5rem;margin:-.25rem -.5rem;margin-inline-end:.5rem}html[data-netbox-color-mode=dark] .form-control-lg{min-height:calc(1.5em + (1rem + 2px));padding:.5rem 1rem;font-size:1.25rem;border-radius:.75rem}html[data-netbox-color-mode=dark] .form-control-lg::file-selector-button{padding:.5rem 1rem;margin:-.5rem -1rem;margin-inline-end:1rem}html[data-netbox-color-mode=dark] .form-control-lg::-webkit-file-upload-button{padding:.5rem 1rem;margin:-.5rem -1rem;margin-inline-end:1rem}html[data-netbox-color-mode=dark] textarea.form-control{min-height:calc(1.5em + (.75rem + 2px))}html[data-netbox-color-mode=dark] textarea.form-control-sm{min-height:calc(1.5em + (.5rem + 2px))}html[data-netbox-color-mode=dark] textarea.form-control-lg{min-height:calc(1.5em + (1rem + 2px))}html[data-netbox-color-mode=dark] .form-control-color{max-width:3rem;height:auto;padding:.375rem}html[data-netbox-color-mode=dark] .form-control-color:not(:disabled):not([readonly]){cursor:pointer}html[data-netbox-color-mode=dark] .form-control-color::-moz-color-swatch{height:1.5em;border-radius:.375rem}html[data-netbox-color-mode=dark] .form-control-color::-webkit-color-swatch{height:1.5em;border-radius:.375rem}html[data-netbox-color-mode=dark] .form-select{display:block;width:100%;padding:.375rem 2.25rem .375rem .75rem;-moz-padding-start:calc(.75rem - 3px);font-size:1rem;font-weight:400;line-height:1.5;color:#f8f9fa;background-color:#212529;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23f8f9fa' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right .75rem center;background-size:16px 12px;border:1px solid #495057;border-radius:.375rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion: reduce){html[data-netbox-color-mode=dark] .form-select{transition:none}}html[data-netbox-color-mode=dark] .form-select:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}html[data-netbox-color-mode=dark] .form-select[multiple],html[data-netbox-color-mode=dark] .form-select[size]:not([size="1"]){padding-right:.75rem;background-image:none}html[data-netbox-color-mode=dark] .form-select:disabled{color:#adb5bd;background-color:#495057}html[data-netbox-color-mode=dark] .form-select:-moz-focusring{color:transparent;text-shadow:0 0 0 #f8f9fa}html[data-netbox-color-mode=dark] .form-select-sm{padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem}html[data-netbox-color-mode=dark] .form-select-lg{padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}html[data-netbox-color-mode=dark] .form-check{display:block;min-height:1.5rem;padding-left:1.5em;margin-bottom:.125rem}html[data-netbox-color-mode=dark] .form-check .form-check-input{float:left;margin-left:-1.5em}html[data-netbox-color-mode=dark] .form-check-input{width:1em;height:1em;margin-top:.25em;vertical-align:top;background-color:#212529;background-repeat:no-repeat;background-position:center;background-size:contain;border:1px solid rgba(255,255,255,.25);appearance:none;color-adjust:exact}html[data-netbox-color-mode=dark] .form-check-input[type=checkbox]{border-radius:.25em}html[data-netbox-color-mode=dark] .form-check-input[type=radio]{border-radius:50%}html[data-netbox-color-mode=dark] .form-check-input:active{filter:brightness(90%)}html[data-netbox-color-mode=dark] .form-check-input:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}html[data-netbox-color-mode=dark] .form-check-input:checked{background-color:#6ea8fe;border-color:#6ea8fe}html[data-netbox-color-mode=dark] .form-check-input:checked[type=checkbox]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10l3 3l6-6'/%3e%3c/svg%3e")}html[data-netbox-color-mode=dark] .form-check-input:checked[type=radio]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e")}html[data-netbox-color-mode=dark] .form-check-input[type=checkbox]:indeterminate{background-color:#6ea8fe;border-color:#6ea8fe;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e")}html[data-netbox-color-mode=dark] .form-check-input:disabled{pointer-events:none;filter:none;opacity:.5}html[data-netbox-color-mode=dark] .form-check-input[disabled]~.form-check-label,html[data-netbox-color-mode=dark] .form-check-input:disabled~.form-check-label{opacity:.5}html[data-netbox-color-mode=dark] .form-switch{padding-left:2.5em}html[data-netbox-color-mode=dark] .form-switch .form-check-input{width:2em;margin-left:-2.5em;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e");background-position:left center;border-radius:2em;transition:background-position .15s ease-in-out}@media (prefers-reduced-motion: reduce){html[data-netbox-color-mode=dark] .form-switch .form-check-input{transition:none}}html[data-netbox-color-mode=dark] .form-switch .form-check-input:focus{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2386b7fe'/%3e%3c/svg%3e")}html[data-netbox-color-mode=dark] .form-switch .form-check-input:checked{background-position:right center;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}html[data-netbox-color-mode=dark] .form-check-inline{display:inline-block;margin-right:1rem}html[data-netbox-color-mode=dark] .btn-check{position:absolute;clip:rect(0,0,0,0);pointer-events:none}html[data-netbox-color-mode=dark] .btn-check[disabled]+.btn,html[data-netbox-color-mode=dark] .btn-check:disabled+.btn{pointer-events:none;filter:none;opacity:.65}html[data-netbox-color-mode=dark] .form-range{width:100%;height:1.5rem;padding:0;background-color:transparent;appearance:none}html[data-netbox-color-mode=dark] .form-range:focus{outline:0}html[data-netbox-color-mode=dark] .form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #1b1f22,0 0 0 .25rem #0d6efd40}html[data-netbox-color-mode=dark] .form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #1b1f22,0 0 0 .25rem #0d6efd40}html[data-netbox-color-mode=dark] .form-range::-moz-focus-outer{border:0}html[data-netbox-color-mode=dark] .form-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#6ea8fe;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion: reduce){html[data-netbox-color-mode=dark] .form-range::-webkit-slider-thumb{transition:none}}html[data-netbox-color-mode=dark] .form-range::-webkit-slider-thumb:active{background-color:#d4e5ff}html[data-netbox-color-mode=dark] .form-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}html[data-netbox-color-mode=dark] .form-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#6ea8fe;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion: reduce){html[data-netbox-color-mode=dark] .form-range::-moz-range-thumb{transition:none}}html[data-netbox-color-mode=dark] .form-range::-moz-range-thumb:active{background-color:#d4e5ff}html[data-netbox-color-mode=dark] .form-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}html[data-netbox-color-mode=dark] .form-range:disabled{pointer-events:none}html[data-netbox-color-mode=dark] .form-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}html[data-netbox-color-mode=dark] .form-range:disabled::-moz-range-thumb{background-color:#adb5bd}html[data-netbox-color-mode=dark] .form-floating>.form-control,html[data-netbox-color-mode=dark] .form-floating>.form-select{height:calc(3.5rem + 2px);line-height:1.25}html[data-netbox-color-mode=dark] .form-floating>label{position:absolute;top:0;left:0;height:100%;padding:1rem .75rem;pointer-events:none;border:1px solid transparent;transform-origin:0 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out}@media (prefers-reduced-motion: reduce){html[data-netbox-color-mode=dark] .form-floating>label{transition:none}}html[data-netbox-color-mode=dark] .form-floating>.form-control{padding:1rem .75rem}html[data-netbox-color-mode=dark] .form-floating>.form-control::placeholder{color:transparent}html[data-netbox-color-mode=dark] .form-floating>.form-control:focus,html[data-netbox-color-mode=dark] .form-floating>.form-control:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}html[data-netbox-color-mode=dark] .form-floating>.form-control:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}html[data-netbox-color-mode=dark] .form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem}html[data-netbox-color-mode=dark] .form-floating>.form-control:focus~label,html[data-netbox-color-mode=dark] .form-floating>.form-control:not(:placeholder-shown)~label,html[data-netbox-color-mode=dark] .form-floating>.form-select~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translate(.15rem)}html[data-netbox-color-mode=dark] .form-floating>.form-control:-webkit-autofill~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translate(.15rem)}html[data-netbox-color-mode=dark] .input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}html[data-netbox-color-mode=dark] .input-group>.form-control,html[data-netbox-color-mode=dark] .input-group>.form-select{position:relative;flex:1 1 auto;width:1%;min-width:0}html[data-netbox-color-mode=dark] .input-group>.form-control:focus,html[data-netbox-color-mode=dark] .input-group>.form-select:focus{z-index:3}html[data-netbox-color-mode=dark] .input-group .btn{position:relative;z-index:2}html[data-netbox-color-mode=dark] .input-group .btn:focus{z-index:3}html[data-netbox-color-mode=dark] .input-group-text{display:flex;align-items:center;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#f8f9fa;text-align:center;white-space:nowrap;background-color:#495057;border:1px solid #495057;border-radius:.375rem}html[data-netbox-color-mode=dark] .input-group-lg>.form-control,html[data-netbox-color-mode=dark] .input-group-lg>.form-select,html[data-netbox-color-mode=dark] .input-group-lg>.input-group-text,html[data-netbox-color-mode=dark] .input-group-lg>.btn{padding:.5rem 1rem;font-size:1.25rem;border-radius:.75rem}html[data-netbox-color-mode=dark] .input-group-sm>.form-control,html[data-netbox-color-mode=dark] .input-group-sm>.form-select,html[data-netbox-color-mode=dark] .input-group-sm>.input-group-text,html[data-netbox-color-mode=dark] .input-group-sm>.btn{padding:.25rem .5rem;font-size:.875rem;border-radius:.375rem}html[data-netbox-color-mode=dark] .input-group-lg>.form-select,html[data-netbox-color-mode=dark] .input-group-sm>.form-select{padding-right:3rem}html[data-netbox-color-mode=dark] .input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu),html[data-netbox-color-mode=dark] .input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3){border-top-right-radius:0;border-bottom-right-radius:0}html[data-netbox-color-mode=dark] .input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu),html[data-netbox-color-mode=dark] .input-group.has-validation>.dropdown-toggle:nth-last-child(n+4){border-top-right-radius:0;border-bottom-right-radius:0}html[data-netbox-color-mode=dark] .input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-left:-1px;border-top-left-radius:0;border-bottom-left-radius:0}html[data-netbox-color-mode=dark] .valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#198754}html[data-netbox-color-mode=dark] .valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:#198754e6;border-radius:.375rem}.was-validated html[data-netbox-color-mode=dark]:valid~.valid-feedback,.was-validated html[data-netbox-color-mode=dark]:valid~.valid-tooltip,html[data-netbox-color-mode=dark].is-valid~.valid-feedback,html[data-netbox-color-mode=dark].is-valid~.valid-tooltip{display:block}.was-validated html[data-netbox-color-mode=dark] .form-control:valid,html[data-netbox-color-mode=dark] .form-control.is-valid{border-color:#198754;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.was-validated html[data-netbox-color-mode=dark] .form-control:valid:focus,html[data-netbox-color-mode=dark] .form-control.is-valid:focus{border-color:#198754;box-shadow:0 0 0 .25rem #19875440}.was-validated html[data-netbox-color-mode=dark] textarea.form-control:valid,html[data-netbox-color-mode=dark] textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.was-validated html[data-netbox-color-mode=dark] .form-select:valid,html[data-netbox-color-mode=dark] .form-select.is-valid{border-color:#198754}.was-validated html[data-netbox-color-mode=dark] .form-select:valid:not([multiple]):not([size]),.was-validated html[data-netbox-color-mode=dark] .form-select:valid:not([multiple])[size="1"],html[data-netbox-color-mode=dark] .form-select.is-valid:not([multiple]):not([size]),html[data-netbox-color-mode=dark] .form-select.is-valid:not([multiple])[size="1"]{padding-right:4.125rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23f8f9fa' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.was-validated html[data-netbox-color-mode=dark] .form-select:valid:focus,html[data-netbox-color-mode=dark] .form-select.is-valid:focus{border-color:#198754;box-shadow:0 0 0 .25rem #19875440}.was-validated html[data-netbox-color-mode=dark] .form-check-input:valid,html[data-netbox-color-mode=dark] .form-check-input.is-valid{border-color:#198754}.was-validated html[data-netbox-color-mode=dark] .form-check-input:valid:checked,html[data-netbox-color-mode=dark] .form-check-input.is-valid:checked{background-color:#198754}.was-validated html[data-netbox-color-mode=dark] .form-check-input:valid:focus,html[data-netbox-color-mode=dark] .form-check-input.is-valid:focus{box-shadow:0 0 0 .25rem #19875440}.was-validated html[data-netbox-color-mode=dark] .form-check-input:valid~.form-check-label,html[data-netbox-color-mode=dark] .form-check-input.is-valid~.form-check-label{color:#198754}html[data-netbox-color-mode=dark] .form-check-inline .form-check-input~.valid-feedback{margin-left:.5em}.was-validated html[data-netbox-color-mode=dark] .input-group .form-control:valid,html[data-netbox-color-mode=dark] .input-group .form-control.is-valid,.was-validated html[data-netbox-color-mode=dark] .input-group .form-select:valid,html[data-netbox-color-mode=dark] .input-group .form-select.is-valid{z-index:1}.was-validated html[data-netbox-color-mode=dark] .input-group .form-control:valid:focus,html[data-netbox-color-mode=dark] .input-group .form-control.is-valid:focus,.was-validated html[data-netbox-color-mode=dark] .input-group .form-select:valid:focus,html[data-netbox-color-mode=dark] .input-group .form-select.is-valid:focus{z-index:3}html[data-netbox-color-mode=dark] .invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#dc3545}html[data-netbox-color-mode=dark] .invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:#dc3545e6;border-radius:.375rem}.was-validated html[data-netbox-color-mode=dark]:invalid~.invalid-feedback,.was-validated html[data-netbox-color-mode=dark]:invalid~.invalid-tooltip,html[data-netbox-color-mode=dark].is-invalid~.invalid-feedback,html[data-netbox-color-mode=dark].is-invalid~.invalid-tooltip{display:block}.was-validated html[data-netbox-color-mode=dark] .form-control:invalid,html[data-netbox-color-mode=dark] .form-control.is-invalid{border-color:#dc3545;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.was-validated html[data-netbox-color-mode=dark] .form-control:invalid:focus,html[data-netbox-color-mode=dark] .form-control.is-invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .25rem #dc354540}.was-validated html[data-netbox-color-mode=dark] textarea.form-control:invalid,html[data-netbox-color-mode=dark] textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.was-validated html[data-netbox-color-mode=dark] .form-select:invalid,html[data-netbox-color-mode=dark] .form-select.is-invalid{border-color:#dc3545}.was-validated html[data-netbox-color-mode=dark] .form-select:invalid:not([multiple]):not([size]),.was-validated html[data-netbox-color-mode=dark] .form-select:invalid:not([multiple])[size="1"],html[data-netbox-color-mode=dark] .form-select.is-invalid:not([multiple]):not([size]),html[data-netbox-color-mode=dark] .form-select.is-invalid:not([multiple])[size="1"]{padding-right:4.125rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23f8f9fa' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.was-validated html[data-netbox-color-mode=dark] .form-select:invalid:focus,html[data-netbox-color-mode=dark] .form-select.is-invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .25rem #dc354540}.was-validated html[data-netbox-color-mode=dark] .form-check-input:invalid,html[data-netbox-color-mode=dark] .form-check-input.is-invalid{border-color:#dc3545}.was-validated html[data-netbox-color-mode=dark] .form-check-input:invalid:checked,html[data-netbox-color-mode=dark] .form-check-input.is-invalid:checked{background-color:#dc3545}.was-validated html[data-netbox-color-mode=dark] .form-check-input:invalid:focus,html[data-netbox-color-mode=dark] .form-check-input.is-invalid:focus{box-shadow:0 0 0 .25rem #dc354540}.was-validated html[data-netbox-color-mode=dark] .form-check-input:invalid~.form-check-label,html[data-netbox-color-mode=dark] .form-check-input.is-invalid~.form-check-label{color:#dc3545}html[data-netbox-color-mode=dark] .form-check-inline .form-check-input~.invalid-feedback{margin-left:.5em}.was-validated html[data-netbox-color-mode=dark] .input-group .form-control:invalid,html[data-netbox-color-mode=dark] .input-group .form-control.is-invalid,.was-validated html[data-netbox-color-mode=dark] .input-group .form-select:invalid,html[data-netbox-color-mode=dark] .input-group .form-select.is-invalid{z-index:2}.was-validated html[data-netbox-color-mode=dark] .input-group .form-control:invalid:focus,html[data-netbox-color-mode=dark] .input-group .form-control.is-invalid:focus,.was-validated html[data-netbox-color-mode=dark] .input-group .form-select:invalid:focus,html[data-netbox-color-mode=dark] .input-group .form-select.is-invalid:focus{z-index:3}html[data-netbox-color-mode=dark] .btn{display:inline-block;font-weight:400;line-height:1.5;color:#fff;text-align:center;text-decoration:none;vertical-align:middle;cursor:pointer;user-select:none;background-color:transparent;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;border-radius:.375rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion: reduce){html[data-netbox-color-mode=dark] .btn{transition:none}}html[data-netbox-color-mode=dark] .btn:hover{color:#fff}.btn-check:focus+html[data-netbox-color-mode=dark] .btn,html[data-netbox-color-mode=dark] .btn:focus{outline:0;box-shadow:0 0 0 .25rem #0d6efd40}html[data-netbox-color-mode=dark] .btn:disabled,html[data-netbox-color-mode=dark] .btn.disabled,fieldset:disabled html[data-netbox-color-mode=dark] .btn{pointer-events:none;opacity:.65}html[data-netbox-color-mode=dark] .btn-primary{color:#000;background-color:#6ea8fe;border-color:#6ea8fe}html[data-netbox-color-mode=dark] .btn-primary:hover{color:#000;background-color:#84b5fe;border-color:#7db1fe}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-primary,html[data-netbox-color-mode=dark] .btn-primary:focus{color:#000;background-color:#84b5fe;border-color:#7db1fe;box-shadow:0 0 0 .25rem #5e8fd880}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-primary,.btn-check:active+html[data-netbox-color-mode=dark] .btn-primary,html[data-netbox-color-mode=dark] .btn-primary:active,html[data-netbox-color-mode=dark] .btn-primary.active,.show>html[data-netbox-color-mode=dark] .btn-primary.dropdown-toggle{color:#000;background-color:#8bb9fe;border-color:#7db1fe}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-primary:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-primary:focus,html[data-netbox-color-mode=dark] .btn-primary:active:focus,html[data-netbox-color-mode=dark] .btn-primary.active:focus,.show>html[data-netbox-color-mode=dark] .btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #5e8fd880}html[data-netbox-color-mode=dark] .btn-primary:disabled,html[data-netbox-color-mode=dark] .btn-primary.disabled{color:#000;background-color:#6ea8fe;border-color:#6ea8fe}html[data-netbox-color-mode=dark] .btn-secondary{color:#000;background-color:#adb5bd;border-color:#adb5bd}html[data-netbox-color-mode=dark] .btn-secondary:hover{color:#000;background-color:#b9c0c7;border-color:#b5bcc4}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-secondary,html[data-netbox-color-mode=dark] .btn-secondary:focus{color:#000;background-color:#b9c0c7;border-color:#b5bcc4;box-shadow:0 0 0 .25rem #939aa180}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-secondary,.btn-check:active+html[data-netbox-color-mode=dark] .btn-secondary,html[data-netbox-color-mode=dark] .btn-secondary:active,html[data-netbox-color-mode=dark] .btn-secondary.active,.show>html[data-netbox-color-mode=dark] .btn-secondary.dropdown-toggle{color:#000;background-color:#bdc4ca;border-color:#b5bcc4}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-secondary:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-secondary:focus,html[data-netbox-color-mode=dark] .btn-secondary:active:focus,html[data-netbox-color-mode=dark] .btn-secondary.active:focus,.show>html[data-netbox-color-mode=dark] .btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #939aa180}html[data-netbox-color-mode=dark] .btn-secondary:disabled,html[data-netbox-color-mode=dark] .btn-secondary.disabled{color:#000;background-color:#adb5bd;border-color:#adb5bd}html[data-netbox-color-mode=dark] .btn-success{color:#000;background-color:#75b798;border-color:#75b798}html[data-netbox-color-mode=dark] .btn-success:hover{color:#000;background-color:#8ac2a7;border-color:#83bea2}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-success,html[data-netbox-color-mode=dark] .btn-success:focus{color:#000;background-color:#8ac2a7;border-color:#83bea2;box-shadow:0 0 0 .25rem #639c8180}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-success,.btn-check:active+html[data-netbox-color-mode=dark] .btn-success,html[data-netbox-color-mode=dark] .btn-success:active,html[data-netbox-color-mode=dark] .btn-success.active,.show>html[data-netbox-color-mode=dark] .btn-success.dropdown-toggle{color:#000;background-color:#91c5ad;border-color:#83bea2}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-success:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-success:focus,html[data-netbox-color-mode=dark] .btn-success:active:focus,html[data-netbox-color-mode=dark] .btn-success.active:focus,.show>html[data-netbox-color-mode=dark] .btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #639c8180}html[data-netbox-color-mode=dark] .btn-success:disabled,html[data-netbox-color-mode=dark] .btn-success.disabled{color:#000;background-color:#75b798;border-color:#75b798}html[data-netbox-color-mode=dark] .btn-info{color:#000;background-color:#6edff6;border-color:#6edff6}html[data-netbox-color-mode=dark] .btn-info:hover{color:#000;background-color:#84e4f7;border-color:#7de2f7}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-info,html[data-netbox-color-mode=dark] .btn-info:focus{color:#000;background-color:#84e4f7;border-color:#7de2f7;box-shadow:0 0 0 .25rem #5ebed180}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-info,.btn-check:active+html[data-netbox-color-mode=dark] .btn-info,html[data-netbox-color-mode=dark] .btn-info:active,html[data-netbox-color-mode=dark] .btn-info.active,.show>html[data-netbox-color-mode=dark] .btn-info.dropdown-toggle{color:#000;background-color:#8be5f8;border-color:#7de2f7}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-info:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-info:focus,html[data-netbox-color-mode=dark] .btn-info:active:focus,html[data-netbox-color-mode=dark] .btn-info.active:focus,.show>html[data-netbox-color-mode=dark] .btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #5ebed180}html[data-netbox-color-mode=dark] .btn-info:disabled,html[data-netbox-color-mode=dark] .btn-info.disabled{color:#000;background-color:#6edff6;border-color:#6edff6}html[data-netbox-color-mode=dark] .btn-warning{color:#000;background-color:#ffda6a;border-color:#ffda6a}html[data-netbox-color-mode=dark] .btn-warning:hover{color:#000;background-color:#ffe080;border-color:#ffde79}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-warning,html[data-netbox-color-mode=dark] .btn-warning:focus{color:#000;background-color:#ffe080;border-color:#ffde79;box-shadow:0 0 0 .25rem #d9b95a80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-warning,.btn-check:active+html[data-netbox-color-mode=dark] .btn-warning,html[data-netbox-color-mode=dark] .btn-warning:active,html[data-netbox-color-mode=dark] .btn-warning.active,.show>html[data-netbox-color-mode=dark] .btn-warning.dropdown-toggle{color:#000;background-color:#ffe188;border-color:#ffde79}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-warning:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-warning:focus,html[data-netbox-color-mode=dark] .btn-warning:active:focus,html[data-netbox-color-mode=dark] .btn-warning.active:focus,.show>html[data-netbox-color-mode=dark] .btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #d9b95a80}html[data-netbox-color-mode=dark] .btn-warning:disabled,html[data-netbox-color-mode=dark] .btn-warning.disabled{color:#000;background-color:#ffda6a;border-color:#ffda6a}html[data-netbox-color-mode=dark] .btn-danger{color:#000;background-color:#ea868f;border-color:#ea868f}html[data-netbox-color-mode=dark] .btn-danger:hover{color:#000;background-color:#ed98a0;border-color:#ec929a}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-danger,html[data-netbox-color-mode=dark] .btn-danger:focus{color:#000;background-color:#ed98a0;border-color:#ec929a;box-shadow:0 0 0 .25rem #c7727a80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-danger,.btn-check:active+html[data-netbox-color-mode=dark] .btn-danger,html[data-netbox-color-mode=dark] .btn-danger:active,html[data-netbox-color-mode=dark] .btn-danger.active,.show>html[data-netbox-color-mode=dark] .btn-danger.dropdown-toggle{color:#000;background-color:#ee9ea5;border-color:#ec929a}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-danger:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-danger:focus,html[data-netbox-color-mode=dark] .btn-danger:active:focus,html[data-netbox-color-mode=dark] .btn-danger.active:focus,.show>html[data-netbox-color-mode=dark] .btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #c7727a80}html[data-netbox-color-mode=dark] .btn-danger:disabled,html[data-netbox-color-mode=dark] .btn-danger.disabled{color:#000;background-color:#ea868f;border-color:#ea868f}html[data-netbox-color-mode=dark] .btn-light{color:#000;background-color:#dee2e6;border-color:#dee2e6}html[data-netbox-color-mode=dark] .btn-light:hover{color:#000;background-color:#e3e6ea;border-color:#e1e5e9}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-light,html[data-netbox-color-mode=dark] .btn-light:focus{color:#000;background-color:#e3e6ea;border-color:#e1e5e9;box-shadow:0 0 0 .25rem #bdc0c480}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-light,.btn-check:active+html[data-netbox-color-mode=dark] .btn-light,html[data-netbox-color-mode=dark] .btn-light:active,html[data-netbox-color-mode=dark] .btn-light.active,.show>html[data-netbox-color-mode=dark] .btn-light.dropdown-toggle{color:#000;background-color:#e5e8eb;border-color:#e1e5e9}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-light:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-light:focus,html[data-netbox-color-mode=dark] .btn-light:active:focus,html[data-netbox-color-mode=dark] .btn-light.active:focus,.show>html[data-netbox-color-mode=dark] .btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #bdc0c480}html[data-netbox-color-mode=dark] .btn-light:disabled,html[data-netbox-color-mode=dark] .btn-light.disabled{color:#000;background-color:#dee2e6;border-color:#dee2e6}html[data-netbox-color-mode=dark] .btn-dark{color:#000;background-color:#adb5bd;border-color:#adb5bd}html[data-netbox-color-mode=dark] .btn-dark:hover{color:#000;background-color:#b9c0c7;border-color:#b5bcc4}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-dark,html[data-netbox-color-mode=dark] .btn-dark:focus{color:#000;background-color:#b9c0c7;border-color:#b5bcc4;box-shadow:0 0 0 .25rem #939aa180}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-dark,.btn-check:active+html[data-netbox-color-mode=dark] .btn-dark,html[data-netbox-color-mode=dark] .btn-dark:active,html[data-netbox-color-mode=dark] .btn-dark.active,.show>html[data-netbox-color-mode=dark] .btn-dark.dropdown-toggle{color:#000;background-color:#bdc4ca;border-color:#b5bcc4}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-dark:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-dark:focus,html[data-netbox-color-mode=dark] .btn-dark:active:focus,html[data-netbox-color-mode=dark] .btn-dark.active:focus,.show>html[data-netbox-color-mode=dark] .btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #939aa180}html[data-netbox-color-mode=dark] .btn-dark:disabled,html[data-netbox-color-mode=dark] .btn-dark.disabled{color:#000;background-color:#adb5bd;border-color:#adb5bd}html[data-netbox-color-mode=dark] .btn-red{color:#000;background-color:#ea868f;border-color:#ea868f}html[data-netbox-color-mode=dark] .btn-red:hover{color:#000;background-color:#ed98a0;border-color:#ec929a}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-red,html[data-netbox-color-mode=dark] .btn-red:focus{color:#000;background-color:#ed98a0;border-color:#ec929a;box-shadow:0 0 0 .25rem #c7727a80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-red,.btn-check:active+html[data-netbox-color-mode=dark] .btn-red,html[data-netbox-color-mode=dark] .btn-red:active,html[data-netbox-color-mode=dark] .btn-red.active,.show>html[data-netbox-color-mode=dark] .btn-red.dropdown-toggle{color:#000;background-color:#ee9ea5;border-color:#ec929a}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-red:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-red:focus,html[data-netbox-color-mode=dark] .btn-red:active:focus,html[data-netbox-color-mode=dark] .btn-red.active:focus,.show>html[data-netbox-color-mode=dark] .btn-red.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #c7727a80}html[data-netbox-color-mode=dark] .btn-red:disabled,html[data-netbox-color-mode=dark] .btn-red.disabled{color:#000;background-color:#ea868f;border-color:#ea868f}html[data-netbox-color-mode=dark] .btn-yellow{color:#000;background-color:#ffda6a;border-color:#ffda6a}html[data-netbox-color-mode=dark] .btn-yellow:hover{color:#000;background-color:#ffe080;border-color:#ffde79}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-yellow,html[data-netbox-color-mode=dark] .btn-yellow:focus{color:#000;background-color:#ffe080;border-color:#ffde79;box-shadow:0 0 0 .25rem #d9b95a80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-yellow,.btn-check:active+html[data-netbox-color-mode=dark] .btn-yellow,html[data-netbox-color-mode=dark] .btn-yellow:active,html[data-netbox-color-mode=dark] .btn-yellow.active,.show>html[data-netbox-color-mode=dark] .btn-yellow.dropdown-toggle{color:#000;background-color:#ffe188;border-color:#ffde79}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-yellow:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-yellow:focus,html[data-netbox-color-mode=dark] .btn-yellow:active:focus,html[data-netbox-color-mode=dark] .btn-yellow.active:focus,.show>html[data-netbox-color-mode=dark] .btn-yellow.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #d9b95a80}html[data-netbox-color-mode=dark] .btn-yellow:disabled,html[data-netbox-color-mode=dark] .btn-yellow.disabled{color:#000;background-color:#ffda6a;border-color:#ffda6a}html[data-netbox-color-mode=dark] .btn-green{color:#000;background-color:#75b798;border-color:#75b798}html[data-netbox-color-mode=dark] .btn-green:hover{color:#000;background-color:#8ac2a7;border-color:#83bea2}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-green,html[data-netbox-color-mode=dark] .btn-green:focus{color:#000;background-color:#8ac2a7;border-color:#83bea2;box-shadow:0 0 0 .25rem #639c8180}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-green,.btn-check:active+html[data-netbox-color-mode=dark] .btn-green,html[data-netbox-color-mode=dark] .btn-green:active,html[data-netbox-color-mode=dark] .btn-green.active,.show>html[data-netbox-color-mode=dark] .btn-green.dropdown-toggle{color:#000;background-color:#91c5ad;border-color:#83bea2}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-green:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-green:focus,html[data-netbox-color-mode=dark] .btn-green:active:focus,html[data-netbox-color-mode=dark] .btn-green.active:focus,.show>html[data-netbox-color-mode=dark] .btn-green.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #639c8180}html[data-netbox-color-mode=dark] .btn-green:disabled,html[data-netbox-color-mode=dark] .btn-green.disabled{color:#000;background-color:#75b798;border-color:#75b798}html[data-netbox-color-mode=dark] .btn-blue{color:#000;background-color:#6ea8fe;border-color:#6ea8fe}html[data-netbox-color-mode=dark] .btn-blue:hover{color:#000;background-color:#84b5fe;border-color:#7db1fe}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-blue,html[data-netbox-color-mode=dark] .btn-blue:focus{color:#000;background-color:#84b5fe;border-color:#7db1fe;box-shadow:0 0 0 .25rem #5e8fd880}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-blue,.btn-check:active+html[data-netbox-color-mode=dark] .btn-blue,html[data-netbox-color-mode=dark] .btn-blue:active,html[data-netbox-color-mode=dark] .btn-blue.active,.show>html[data-netbox-color-mode=dark] .btn-blue.dropdown-toggle{color:#000;background-color:#8bb9fe;border-color:#7db1fe}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-blue:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-blue:focus,html[data-netbox-color-mode=dark] .btn-blue:active:focus,html[data-netbox-color-mode=dark] .btn-blue.active:focus,.show>html[data-netbox-color-mode=dark] .btn-blue.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #5e8fd880}html[data-netbox-color-mode=dark] .btn-blue:disabled,html[data-netbox-color-mode=dark] .btn-blue.disabled{color:#000;background-color:#6ea8fe;border-color:#6ea8fe}html[data-netbox-color-mode=dark] .btn-cyan{color:#000;background-color:#6edff6;border-color:#6edff6}html[data-netbox-color-mode=dark] .btn-cyan:hover{color:#000;background-color:#84e4f7;border-color:#7de2f7}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-cyan,html[data-netbox-color-mode=dark] .btn-cyan:focus{color:#000;background-color:#84e4f7;border-color:#7de2f7;box-shadow:0 0 0 .25rem #5ebed180}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-cyan,.btn-check:active+html[data-netbox-color-mode=dark] .btn-cyan,html[data-netbox-color-mode=dark] .btn-cyan:active,html[data-netbox-color-mode=dark] .btn-cyan.active,.show>html[data-netbox-color-mode=dark] .btn-cyan.dropdown-toggle{color:#000;background-color:#8be5f8;border-color:#7de2f7}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-cyan:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-cyan:focus,html[data-netbox-color-mode=dark] .btn-cyan:active:focus,html[data-netbox-color-mode=dark] .btn-cyan.active:focus,.show>html[data-netbox-color-mode=dark] .btn-cyan.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #5ebed180}html[data-netbox-color-mode=dark] .btn-cyan:disabled,html[data-netbox-color-mode=dark] .btn-cyan.disabled{color:#000;background-color:#6edff6;border-color:#6edff6}html[data-netbox-color-mode=dark] .btn-indigo{color:#000;background-color:#a370f7;border-color:#a370f7}html[data-netbox-color-mode=dark] .btn-indigo:hover{color:#000;background-color:#b185f8;border-color:#ac7ef8}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-indigo,html[data-netbox-color-mode=dark] .btn-indigo:focus{color:#000;background-color:#b185f8;border-color:#ac7ef8;box-shadow:0 0 0 .25rem #8b5fd280}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-indigo,.btn-check:active+html[data-netbox-color-mode=dark] .btn-indigo,html[data-netbox-color-mode=dark] .btn-indigo:active,html[data-netbox-color-mode=dark] .btn-indigo.active,.show>html[data-netbox-color-mode=dark] .btn-indigo.dropdown-toggle{color:#000;background-color:#b58df9;border-color:#ac7ef8}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-indigo:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-indigo:focus,html[data-netbox-color-mode=dark] .btn-indigo:active:focus,html[data-netbox-color-mode=dark] .btn-indigo.active:focus,.show>html[data-netbox-color-mode=dark] .btn-indigo.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #8b5fd280}html[data-netbox-color-mode=dark] .btn-indigo:disabled,html[data-netbox-color-mode=dark] .btn-indigo.disabled{color:#000;background-color:#a370f7;border-color:#a370f7}html[data-netbox-color-mode=dark] .btn-purple{color:#000;background-color:#a98eda;border-color:#a98eda}html[data-netbox-color-mode=dark] .btn-purple:hover{color:#000;background-color:#b69fe0;border-color:#b299de}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-purple,html[data-netbox-color-mode=dark] .btn-purple:focus{color:#000;background-color:#b69fe0;border-color:#b299de;box-shadow:0 0 0 .25rem #9079b980}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-purple,.btn-check:active+html[data-netbox-color-mode=dark] .btn-purple,html[data-netbox-color-mode=dark] .btn-purple:active,html[data-netbox-color-mode=dark] .btn-purple.active,.show>html[data-netbox-color-mode=dark] .btn-purple.dropdown-toggle{color:#000;background-color:#baa5e1;border-color:#b299de}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-purple:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-purple:focus,html[data-netbox-color-mode=dark] .btn-purple:active:focus,html[data-netbox-color-mode=dark] .btn-purple.active:focus,.show>html[data-netbox-color-mode=dark] .btn-purple.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #9079b980}html[data-netbox-color-mode=dark] .btn-purple:disabled,html[data-netbox-color-mode=dark] .btn-purple.disabled{color:#000;background-color:#a98eda;border-color:#a98eda}html[data-netbox-color-mode=dark] .btn-pink{color:#000;background-color:#e685b5;border-color:#e685b5}html[data-netbox-color-mode=dark] .btn-pink:hover{color:#000;background-color:#ea97c0;border-color:#e991bc}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-pink,html[data-netbox-color-mode=dark] .btn-pink:focus{color:#000;background-color:#ea97c0;border-color:#e991bc;box-shadow:0 0 0 .25rem #c4719a80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-pink,.btn-check:active+html[data-netbox-color-mode=dark] .btn-pink,html[data-netbox-color-mode=dark] .btn-pink:active,html[data-netbox-color-mode=dark] .btn-pink.active,.show>html[data-netbox-color-mode=dark] .btn-pink.dropdown-toggle{color:#000;background-color:#eb9dc4;border-color:#e991bc}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-pink:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-pink:focus,html[data-netbox-color-mode=dark] .btn-pink:active:focus,html[data-netbox-color-mode=dark] .btn-pink.active:focus,.show>html[data-netbox-color-mode=dark] .btn-pink.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #c4719a80}html[data-netbox-color-mode=dark] .btn-pink:disabled,html[data-netbox-color-mode=dark] .btn-pink.disabled{color:#000;background-color:#e685b5;border-color:#e685b5}html[data-netbox-color-mode=dark] .btn-darker{color:#fff;background-color:#1b1f22;border-color:#1b1f22}html[data-netbox-color-mode=dark] .btn-darker:hover{color:#fff;background-color:#171a1d;border-color:#16191b}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-darker,html[data-netbox-color-mode=dark] .btn-darker:focus{color:#fff;background-color:#171a1d;border-color:#16191b;box-shadow:0 0 0 .25rem #3d414380}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-darker,.btn-check:active+html[data-netbox-color-mode=dark] .btn-darker,html[data-netbox-color-mode=dark] .btn-darker:active,html[data-netbox-color-mode=dark] .btn-darker.active,.show>html[data-netbox-color-mode=dark] .btn-darker.dropdown-toggle{color:#fff;background-color:#16191b;border-color:#14171a}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-darker:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-darker:focus,html[data-netbox-color-mode=dark] .btn-darker:active:focus,html[data-netbox-color-mode=dark] .btn-darker.active:focus,.show>html[data-netbox-color-mode=dark] .btn-darker.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #3d414380}html[data-netbox-color-mode=dark] .btn-darker:disabled,html[data-netbox-color-mode=dark] .btn-darker.disabled{color:#fff;background-color:#1b1f22;border-color:#1b1f22}html[data-netbox-color-mode=dark] .btn-darkest{color:#fff;background-color:#171b1d;border-color:#171b1d}html[data-netbox-color-mode=dark] .btn-darkest:hover{color:#fff;background-color:#141719;border-color:#121617}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-darkest,html[data-netbox-color-mode=dark] .btn-darkest:focus{color:#fff;background-color:#141719;border-color:#121617;box-shadow:0 0 0 .25rem #3a3d3f80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-darkest,.btn-check:active+html[data-netbox-color-mode=dark] .btn-darkest,html[data-netbox-color-mode=dark] .btn-darkest:active,html[data-netbox-color-mode=dark] .btn-darkest.active,.show>html[data-netbox-color-mode=dark] .btn-darkest.dropdown-toggle{color:#fff;background-color:#121617;border-color:#111416}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-darkest:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-darkest:focus,html[data-netbox-color-mode=dark] .btn-darkest:active:focus,html[data-netbox-color-mode=dark] .btn-darkest.active:focus,.show>html[data-netbox-color-mode=dark] .btn-darkest.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #3a3d3f80}html[data-netbox-color-mode=dark] .btn-darkest:disabled,html[data-netbox-color-mode=dark] .btn-darkest.disabled{color:#fff;background-color:#171b1d;border-color:#171b1d}html[data-netbox-color-mode=dark] .btn-gray{color:#000;background-color:#ced4da;border-color:#ced4da}html[data-netbox-color-mode=dark] .btn-gray:hover{color:#000;background-color:#d5dae0;border-color:#d3d8de}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-gray,html[data-netbox-color-mode=dark] .btn-gray:focus{color:#000;background-color:#d5dae0;border-color:#d3d8de;box-shadow:0 0 0 .25rem #afb4b980}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-gray,.btn-check:active+html[data-netbox-color-mode=dark] .btn-gray,html[data-netbox-color-mode=dark] .btn-gray:active,html[data-netbox-color-mode=dark] .btn-gray.active,.show>html[data-netbox-color-mode=dark] .btn-gray.dropdown-toggle{color:#000;background-color:#d8dde1;border-color:#d3d8de}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-gray:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-gray:focus,html[data-netbox-color-mode=dark] .btn-gray:active:focus,html[data-netbox-color-mode=dark] .btn-gray.active:focus,.show>html[data-netbox-color-mode=dark] .btn-gray.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #afb4b980}html[data-netbox-color-mode=dark] .btn-gray:disabled,html[data-netbox-color-mode=dark] .btn-gray.disabled{color:#000;background-color:#ced4da;border-color:#ced4da}html[data-netbox-color-mode=dark] .btn-gray-100{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}html[data-netbox-color-mode=dark] .btn-gray-100:hover{color:#000;background-color:#f9fafb;border-color:#f9fafb}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-gray-100,html[data-netbox-color-mode=dark] .btn-gray-100:focus{color:#000;background-color:#f9fafb;border-color:#f9fafb;box-shadow:0 0 0 .25rem #d3d4d580}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-gray-100,.btn-check:active+html[data-netbox-color-mode=dark] .btn-gray-100,html[data-netbox-color-mode=dark] .btn-gray-100:active,html[data-netbox-color-mode=dark] .btn-gray-100.active,.show>html[data-netbox-color-mode=dark] .btn-gray-100.dropdown-toggle{color:#000;background-color:#f9fafb;border-color:#f9fafb}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-gray-100:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-gray-100:focus,html[data-netbox-color-mode=dark] .btn-gray-100:active:focus,html[data-netbox-color-mode=dark] .btn-gray-100.active:focus,.show>html[data-netbox-color-mode=dark] .btn-gray-100.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #d3d4d580}html[data-netbox-color-mode=dark] .btn-gray-100:disabled,html[data-netbox-color-mode=dark] .btn-gray-100.disabled{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}html[data-netbox-color-mode=dark] .btn-gray-200{color:#000;background-color:#e9ecef;border-color:#e9ecef}html[data-netbox-color-mode=dark] .btn-gray-200:hover{color:#000;background-color:#eceff1;border-color:#ebeef1}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-gray-200,html[data-netbox-color-mode=dark] .btn-gray-200:focus{color:#000;background-color:#eceff1;border-color:#ebeef1;box-shadow:0 0 0 .25rem #c6c9cb80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-gray-200,.btn-check:active+html[data-netbox-color-mode=dark] .btn-gray-200,html[data-netbox-color-mode=dark] .btn-gray-200:active,html[data-netbox-color-mode=dark] .btn-gray-200.active,.show>html[data-netbox-color-mode=dark] .btn-gray-200.dropdown-toggle{color:#000;background-color:#edf0f2;border-color:#ebeef1}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-gray-200:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-gray-200:focus,html[data-netbox-color-mode=dark] .btn-gray-200:active:focus,html[data-netbox-color-mode=dark] .btn-gray-200.active:focus,.show>html[data-netbox-color-mode=dark] .btn-gray-200.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #c6c9cb80}html[data-netbox-color-mode=dark] .btn-gray-200:disabled,html[data-netbox-color-mode=dark] .btn-gray-200.disabled{color:#000;background-color:#e9ecef;border-color:#e9ecef}html[data-netbox-color-mode=dark] .btn-gray-300{color:#000;background-color:#dee2e6;border-color:#dee2e6}html[data-netbox-color-mode=dark] .btn-gray-300:hover{color:#000;background-color:#e3e6ea;border-color:#e1e5e9}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-gray-300,html[data-netbox-color-mode=dark] .btn-gray-300:focus{color:#000;background-color:#e3e6ea;border-color:#e1e5e9;box-shadow:0 0 0 .25rem #bdc0c480}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-gray-300,.btn-check:active+html[data-netbox-color-mode=dark] .btn-gray-300,html[data-netbox-color-mode=dark] .btn-gray-300:active,html[data-netbox-color-mode=dark] .btn-gray-300.active,.show>html[data-netbox-color-mode=dark] .btn-gray-300.dropdown-toggle{color:#000;background-color:#e5e8eb;border-color:#e1e5e9}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-gray-300:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-gray-300:focus,html[data-netbox-color-mode=dark] .btn-gray-300:active:focus,html[data-netbox-color-mode=dark] .btn-gray-300.active:focus,.show>html[data-netbox-color-mode=dark] .btn-gray-300.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #bdc0c480}html[data-netbox-color-mode=dark] .btn-gray-300:disabled,html[data-netbox-color-mode=dark] .btn-gray-300.disabled{color:#000;background-color:#dee2e6;border-color:#dee2e6}html[data-netbox-color-mode=dark] .btn-gray-400{color:#000;background-color:#ced4da;border-color:#ced4da}html[data-netbox-color-mode=dark] .btn-gray-400:hover{color:#000;background-color:#d5dae0;border-color:#d3d8de}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-gray-400,html[data-netbox-color-mode=dark] .btn-gray-400:focus{color:#000;background-color:#d5dae0;border-color:#d3d8de;box-shadow:0 0 0 .25rem #afb4b980}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-gray-400,.btn-check:active+html[data-netbox-color-mode=dark] .btn-gray-400,html[data-netbox-color-mode=dark] .btn-gray-400:active,html[data-netbox-color-mode=dark] .btn-gray-400.active,.show>html[data-netbox-color-mode=dark] .btn-gray-400.dropdown-toggle{color:#000;background-color:#d8dde1;border-color:#d3d8de}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-gray-400:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-gray-400:focus,html[data-netbox-color-mode=dark] .btn-gray-400:active:focus,html[data-netbox-color-mode=dark] .btn-gray-400.active:focus,.show>html[data-netbox-color-mode=dark] .btn-gray-400.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #afb4b980}html[data-netbox-color-mode=dark] .btn-gray-400:disabled,html[data-netbox-color-mode=dark] .btn-gray-400.disabled{color:#000;background-color:#ced4da;border-color:#ced4da}html[data-netbox-color-mode=dark] .btn-gray-500{color:#000;background-color:#adb5bd;border-color:#adb5bd}html[data-netbox-color-mode=dark] .btn-gray-500:hover{color:#000;background-color:#b9c0c7;border-color:#b5bcc4}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-gray-500,html[data-netbox-color-mode=dark] .btn-gray-500:focus{color:#000;background-color:#b9c0c7;border-color:#b5bcc4;box-shadow:0 0 0 .25rem #939aa180}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-gray-500,.btn-check:active+html[data-netbox-color-mode=dark] .btn-gray-500,html[data-netbox-color-mode=dark] .btn-gray-500:active,html[data-netbox-color-mode=dark] .btn-gray-500.active,.show>html[data-netbox-color-mode=dark] .btn-gray-500.dropdown-toggle{color:#000;background-color:#bdc4ca;border-color:#b5bcc4}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-gray-500:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-gray-500:focus,html[data-netbox-color-mode=dark] .btn-gray-500:active:focus,html[data-netbox-color-mode=dark] .btn-gray-500.active:focus,.show>html[data-netbox-color-mode=dark] .btn-gray-500.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #939aa180}html[data-netbox-color-mode=dark] .btn-gray-500:disabled,html[data-netbox-color-mode=dark] .btn-gray-500.disabled{color:#000;background-color:#adb5bd;border-color:#adb5bd}html[data-netbox-color-mode=dark] .btn-gray-600{color:#fff;background-color:#6c757d;border-color:#6c757d}html[data-netbox-color-mode=dark] .btn-gray-600:hover{color:#fff;background-color:#5c636a;border-color:#565e64}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-gray-600,html[data-netbox-color-mode=dark] .btn-gray-600:focus{color:#fff;background-color:#5c636a;border-color:#565e64;box-shadow:0 0 0 .25rem #828a9180}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-gray-600,.btn-check:active+html[data-netbox-color-mode=dark] .btn-gray-600,html[data-netbox-color-mode=dark] .btn-gray-600:active,html[data-netbox-color-mode=dark] .btn-gray-600.active,.show>html[data-netbox-color-mode=dark] .btn-gray-600.dropdown-toggle{color:#fff;background-color:#565e64;border-color:#51585e}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-gray-600:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-gray-600:focus,html[data-netbox-color-mode=dark] .btn-gray-600:active:focus,html[data-netbox-color-mode=dark] .btn-gray-600.active:focus,.show>html[data-netbox-color-mode=dark] .btn-gray-600.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #828a9180}html[data-netbox-color-mode=dark] .btn-gray-600:disabled,html[data-netbox-color-mode=dark] .btn-gray-600.disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}html[data-netbox-color-mode=dark] .btn-gray-700{color:#fff;background-color:#495057;border-color:#495057}html[data-netbox-color-mode=dark] .btn-gray-700:hover{color:#fff;background-color:#3e444a;border-color:#3a4046}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-gray-700,html[data-netbox-color-mode=dark] .btn-gray-700:focus{color:#fff;background-color:#3e444a;border-color:#3a4046;box-shadow:0 0 0 .25rem #646a7080}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-gray-700,.btn-check:active+html[data-netbox-color-mode=dark] .btn-gray-700,html[data-netbox-color-mode=dark] .btn-gray-700:active,html[data-netbox-color-mode=dark] .btn-gray-700.active,.show>html[data-netbox-color-mode=dark] .btn-gray-700.dropdown-toggle{color:#fff;background-color:#3a4046;border-color:#373c41}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-gray-700:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-gray-700:focus,html[data-netbox-color-mode=dark] .btn-gray-700:active:focus,html[data-netbox-color-mode=dark] .btn-gray-700.active:focus,.show>html[data-netbox-color-mode=dark] .btn-gray-700.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #646a7080}html[data-netbox-color-mode=dark] .btn-gray-700:disabled,html[data-netbox-color-mode=dark] .btn-gray-700.disabled{color:#fff;background-color:#495057;border-color:#495057}html[data-netbox-color-mode=dark] .btn-gray-800{color:#fff;background-color:#343a40;border-color:#343a40}html[data-netbox-color-mode=dark] .btn-gray-800:hover{color:#fff;background-color:#2c3136;border-color:#2a2e33}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-gray-800,html[data-netbox-color-mode=dark] .btn-gray-800:focus{color:#fff;background-color:#2c3136;border-color:#2a2e33;box-shadow:0 0 0 .25rem #52585d80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-gray-800,.btn-check:active+html[data-netbox-color-mode=dark] .btn-gray-800,html[data-netbox-color-mode=dark] .btn-gray-800:active,html[data-netbox-color-mode=dark] .btn-gray-800.active,.show>html[data-netbox-color-mode=dark] .btn-gray-800.dropdown-toggle{color:#fff;background-color:#2a2e33;border-color:#272c30}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-gray-800:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-gray-800:focus,html[data-netbox-color-mode=dark] .btn-gray-800:active:focus,html[data-netbox-color-mode=dark] .btn-gray-800.active:focus,.show>html[data-netbox-color-mode=dark] .btn-gray-800.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #52585d80}html[data-netbox-color-mode=dark] .btn-gray-800:disabled,html[data-netbox-color-mode=dark] .btn-gray-800.disabled{color:#fff;background-color:#343a40;border-color:#343a40}html[data-netbox-color-mode=dark] .btn-gray-900{color:#fff;background-color:#212529;border-color:#212529}html[data-netbox-color-mode=dark] .btn-gray-900:hover{color:#fff;background-color:#1c1f23;border-color:#1a1e21}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-gray-900,html[data-netbox-color-mode=dark] .btn-gray-900:focus{color:#fff;background-color:#1c1f23;border-color:#1a1e21;box-shadow:0 0 0 .25rem #42464980}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-gray-900,.btn-check:active+html[data-netbox-color-mode=dark] .btn-gray-900,html[data-netbox-color-mode=dark] .btn-gray-900:active,html[data-netbox-color-mode=dark] .btn-gray-900.active,.show>html[data-netbox-color-mode=dark] .btn-gray-900.dropdown-toggle{color:#fff;background-color:#1a1e21;border-color:#191c1f}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-gray-900:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-gray-900:focus,html[data-netbox-color-mode=dark] .btn-gray-900:active:focus,html[data-netbox-color-mode=dark] .btn-gray-900.active:focus,.show>html[data-netbox-color-mode=dark] .btn-gray-900.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #42464980}html[data-netbox-color-mode=dark] .btn-gray-900:disabled,html[data-netbox-color-mode=dark] .btn-gray-900.disabled{color:#fff;background-color:#212529;border-color:#212529}html[data-netbox-color-mode=dark] .btn-red-100{color:#000;background-color:#f8d7da;border-color:#f8d7da}html[data-netbox-color-mode=dark] .btn-red-100:hover{color:#000;background-color:#f9dde0;border-color:#f9dbde}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-red-100,html[data-netbox-color-mode=dark] .btn-red-100:focus{color:#000;background-color:#f9dde0;border-color:#f9dbde;box-shadow:0 0 0 .25rem #d3b7b980}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-red-100,.btn-check:active+html[data-netbox-color-mode=dark] .btn-red-100,html[data-netbox-color-mode=dark] .btn-red-100:active,html[data-netbox-color-mode=dark] .btn-red-100.active,.show>html[data-netbox-color-mode=dark] .btn-red-100.dropdown-toggle{color:#000;background-color:#f9dfe1;border-color:#f9dbde}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-red-100:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-red-100:focus,html[data-netbox-color-mode=dark] .btn-red-100:active:focus,html[data-netbox-color-mode=dark] .btn-red-100.active:focus,.show>html[data-netbox-color-mode=dark] .btn-red-100.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #d3b7b980}html[data-netbox-color-mode=dark] .btn-red-100:disabled,html[data-netbox-color-mode=dark] .btn-red-100.disabled{color:#000;background-color:#f8d7da;border-color:#f8d7da}html[data-netbox-color-mode=dark] .btn-red-200{color:#000;background-color:#f1aeb5;border-color:#f1aeb5}html[data-netbox-color-mode=dark] .btn-red-200:hover{color:#000;background-color:#f3bac0;border-color:#f2b6bc}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-red-200,html[data-netbox-color-mode=dark] .btn-red-200:focus{color:#000;background-color:#f3bac0;border-color:#f2b6bc;box-shadow:0 0 0 .25rem #cd949a80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-red-200,.btn-check:active+html[data-netbox-color-mode=dark] .btn-red-200,html[data-netbox-color-mode=dark] .btn-red-200:active,html[data-netbox-color-mode=dark] .btn-red-200.active,.show>html[data-netbox-color-mode=dark] .btn-red-200.dropdown-toggle{color:#000;background-color:#f4bec4;border-color:#f2b6bc}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-red-200:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-red-200:focus,html[data-netbox-color-mode=dark] .btn-red-200:active:focus,html[data-netbox-color-mode=dark] .btn-red-200.active:focus,.show>html[data-netbox-color-mode=dark] .btn-red-200.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #cd949a80}html[data-netbox-color-mode=dark] .btn-red-200:disabled,html[data-netbox-color-mode=dark] .btn-red-200.disabled{color:#000;background-color:#f1aeb5;border-color:#f1aeb5}html[data-netbox-color-mode=dark] .btn-red-300{color:#000;background-color:#ea868f;border-color:#ea868f}html[data-netbox-color-mode=dark] .btn-red-300:hover{color:#000;background-color:#ed98a0;border-color:#ec929a}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-red-300,html[data-netbox-color-mode=dark] .btn-red-300:focus{color:#000;background-color:#ed98a0;border-color:#ec929a;box-shadow:0 0 0 .25rem #c7727a80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-red-300,.btn-check:active+html[data-netbox-color-mode=dark] .btn-red-300,html[data-netbox-color-mode=dark] .btn-red-300:active,html[data-netbox-color-mode=dark] .btn-red-300.active,.show>html[data-netbox-color-mode=dark] .btn-red-300.dropdown-toggle{color:#000;background-color:#ee9ea5;border-color:#ec929a}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-red-300:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-red-300:focus,html[data-netbox-color-mode=dark] .btn-red-300:active:focus,html[data-netbox-color-mode=dark] .btn-red-300.active:focus,.show>html[data-netbox-color-mode=dark] .btn-red-300.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #c7727a80}html[data-netbox-color-mode=dark] .btn-red-300:disabled,html[data-netbox-color-mode=dark] .btn-red-300.disabled{color:#000;background-color:#ea868f;border-color:#ea868f}html[data-netbox-color-mode=dark] .btn-red-400{color:#000;background-color:#e35d6a;border-color:#e35d6a}html[data-netbox-color-mode=dark] .btn-red-400:hover{color:#000;background-color:#e77580;border-color:#e66d79}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-red-400,html[data-netbox-color-mode=dark] .btn-red-400:focus{color:#000;background-color:#e77580;border-color:#e66d79;box-shadow:0 0 0 .25rem #c14f5a80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-red-400,.btn-check:active+html[data-netbox-color-mode=dark] .btn-red-400,html[data-netbox-color-mode=dark] .btn-red-400:active,html[data-netbox-color-mode=dark] .btn-red-400.active,.show>html[data-netbox-color-mode=dark] .btn-red-400.dropdown-toggle{color:#000;background-color:#e97d88;border-color:#e66d79}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-red-400:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-red-400:focus,html[data-netbox-color-mode=dark] .btn-red-400:active:focus,html[data-netbox-color-mode=dark] .btn-red-400.active:focus,.show>html[data-netbox-color-mode=dark] .btn-red-400.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #c14f5a80}html[data-netbox-color-mode=dark] .btn-red-400:disabled,html[data-netbox-color-mode=dark] .btn-red-400.disabled{color:#000;background-color:#e35d6a;border-color:#e35d6a}html[data-netbox-color-mode=dark] .btn-red-500{color:#fff;background-color:#dc3545;border-color:#dc3545}html[data-netbox-color-mode=dark] .btn-red-500:hover{color:#fff;background-color:#bb2d3b;border-color:#b02a37}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-red-500,html[data-netbox-color-mode=dark] .btn-red-500:focus{color:#fff;background-color:#bb2d3b;border-color:#b02a37;box-shadow:0 0 0 .25rem #e1536180}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-red-500,.btn-check:active+html[data-netbox-color-mode=dark] .btn-red-500,html[data-netbox-color-mode=dark] .btn-red-500:active,html[data-netbox-color-mode=dark] .btn-red-500.active,.show>html[data-netbox-color-mode=dark] .btn-red-500.dropdown-toggle{color:#fff;background-color:#b02a37;border-color:#a52834}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-red-500:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-red-500:focus,html[data-netbox-color-mode=dark] .btn-red-500:active:focus,html[data-netbox-color-mode=dark] .btn-red-500.active:focus,.show>html[data-netbox-color-mode=dark] .btn-red-500.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #e1536180}html[data-netbox-color-mode=dark] .btn-red-500:disabled,html[data-netbox-color-mode=dark] .btn-red-500.disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}html[data-netbox-color-mode=dark] .btn-red-600{color:#fff;background-color:#b02a37;border-color:#b02a37}html[data-netbox-color-mode=dark] .btn-red-600:hover{color:#fff;background-color:#96242f;border-color:#8d222c}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-red-600,html[data-netbox-color-mode=dark] .btn-red-600:focus{color:#fff;background-color:#96242f;border-color:#8d222c;box-shadow:0 0 0 .25rem #bc4a5580}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-red-600,.btn-check:active+html[data-netbox-color-mode=dark] .btn-red-600,html[data-netbox-color-mode=dark] .btn-red-600:active,html[data-netbox-color-mode=dark] .btn-red-600.active,.show>html[data-netbox-color-mode=dark] .btn-red-600.dropdown-toggle{color:#fff;background-color:#8d222c;border-color:#842029}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-red-600:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-red-600:focus,html[data-netbox-color-mode=dark] .btn-red-600:active:focus,html[data-netbox-color-mode=dark] .btn-red-600.active:focus,.show>html[data-netbox-color-mode=dark] .btn-red-600.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #bc4a5580}html[data-netbox-color-mode=dark] .btn-red-600:disabled,html[data-netbox-color-mode=dark] .btn-red-600.disabled{color:#fff;background-color:#b02a37;border-color:#b02a37}html[data-netbox-color-mode=dark] .btn-red-700{color:#fff;background-color:#842029;border-color:#842029}html[data-netbox-color-mode=dark] .btn-red-700:hover{color:#fff;background-color:#701b23;border-color:#6a1a21}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-red-700,html[data-netbox-color-mode=dark] .btn-red-700:focus{color:#fff;background-color:#701b23;border-color:#6a1a21;box-shadow:0 0 0 .25rem #96414980}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-red-700,.btn-check:active+html[data-netbox-color-mode=dark] .btn-red-700,html[data-netbox-color-mode=dark] .btn-red-700:active,html[data-netbox-color-mode=dark] .btn-red-700.active,.show>html[data-netbox-color-mode=dark] .btn-red-700.dropdown-toggle{color:#fff;background-color:#6a1a21;border-color:#63181f}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-red-700:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-red-700:focus,html[data-netbox-color-mode=dark] .btn-red-700:active:focus,html[data-netbox-color-mode=dark] .btn-red-700.active:focus,.show>html[data-netbox-color-mode=dark] .btn-red-700.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #96414980}html[data-netbox-color-mode=dark] .btn-red-700:disabled,html[data-netbox-color-mode=dark] .btn-red-700.disabled{color:#fff;background-color:#842029;border-color:#842029}html[data-netbox-color-mode=dark] .btn-red-800{color:#fff;background-color:#58151c;border-color:#58151c}html[data-netbox-color-mode=dark] .btn-red-800:hover{color:#fff;background-color:#4b1218;border-color:#461116}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-red-800,html[data-netbox-color-mode=dark] .btn-red-800:focus{color:#fff;background-color:#4b1218;border-color:#461116;box-shadow:0 0 0 .25rem #71383e80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-red-800,.btn-check:active+html[data-netbox-color-mode=dark] .btn-red-800,html[data-netbox-color-mode=dark] .btn-red-800:active,html[data-netbox-color-mode=dark] .btn-red-800.active,.show>html[data-netbox-color-mode=dark] .btn-red-800.dropdown-toggle{color:#fff;background-color:#461116;border-color:#421015}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-red-800:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-red-800:focus,html[data-netbox-color-mode=dark] .btn-red-800:active:focus,html[data-netbox-color-mode=dark] .btn-red-800.active:focus,.show>html[data-netbox-color-mode=dark] .btn-red-800.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #71383e80}html[data-netbox-color-mode=dark] .btn-red-800:disabled,html[data-netbox-color-mode=dark] .btn-red-800.disabled{color:#fff;background-color:#58151c;border-color:#58151c}html[data-netbox-color-mode=dark] .btn-red-900{color:#fff;background-color:#2c0b0e;border-color:#2c0b0e}html[data-netbox-color-mode=dark] .btn-red-900:hover{color:#fff;background-color:#25090c;border-color:#23090b}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-red-900,html[data-netbox-color-mode=dark] .btn-red-900:focus{color:#fff;background-color:#25090c;border-color:#23090b;box-shadow:0 0 0 .25rem #4c303280}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-red-900,.btn-check:active+html[data-netbox-color-mode=dark] .btn-red-900,html[data-netbox-color-mode=dark] .btn-red-900:active,html[data-netbox-color-mode=dark] .btn-red-900.active,.show>html[data-netbox-color-mode=dark] .btn-red-900.dropdown-toggle{color:#fff;background-color:#23090b;border-color:#21080b}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-red-900:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-red-900:focus,html[data-netbox-color-mode=dark] .btn-red-900:active:focus,html[data-netbox-color-mode=dark] .btn-red-900.active:focus,.show>html[data-netbox-color-mode=dark] .btn-red-900.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #4c303280}html[data-netbox-color-mode=dark] .btn-red-900:disabled,html[data-netbox-color-mode=dark] .btn-red-900.disabled{color:#fff;background-color:#2c0b0e;border-color:#2c0b0e}html[data-netbox-color-mode=dark] .btn-yellow-100{color:#000;background-color:#fff3cd;border-color:#fff3cd}html[data-netbox-color-mode=dark] .btn-yellow-100:hover{color:#000;background-color:#fff5d5;border-color:#fff4d2}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-yellow-100,html[data-netbox-color-mode=dark] .btn-yellow-100:focus{color:#000;background-color:#fff5d5;border-color:#fff4d2;box-shadow:0 0 0 .25rem #d9cfae80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-yellow-100,.btn-check:active+html[data-netbox-color-mode=dark] .btn-yellow-100,html[data-netbox-color-mode=dark] .btn-yellow-100:active,html[data-netbox-color-mode=dark] .btn-yellow-100.active,.show>html[data-netbox-color-mode=dark] .btn-yellow-100.dropdown-toggle{color:#000;background-color:#fff5d7;border-color:#fff4d2}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-yellow-100:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-yellow-100:focus,html[data-netbox-color-mode=dark] .btn-yellow-100:active:focus,html[data-netbox-color-mode=dark] .btn-yellow-100.active:focus,.show>html[data-netbox-color-mode=dark] .btn-yellow-100.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #d9cfae80}html[data-netbox-color-mode=dark] .btn-yellow-100:disabled,html[data-netbox-color-mode=dark] .btn-yellow-100.disabled{color:#000;background-color:#fff3cd;border-color:#fff3cd}html[data-netbox-color-mode=dark] .btn-yellow-200{color:#000;background-color:#ffe69c;border-color:#ffe69c}html[data-netbox-color-mode=dark] .btn-yellow-200:hover{color:#000;background-color:#ffeaab;border-color:#ffe9a6}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-yellow-200,html[data-netbox-color-mode=dark] .btn-yellow-200:focus{color:#000;background-color:#ffeaab;border-color:#ffe9a6;box-shadow:0 0 0 .25rem #d9c48580}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-yellow-200,.btn-check:active+html[data-netbox-color-mode=dark] .btn-yellow-200,html[data-netbox-color-mode=dark] .btn-yellow-200:active,html[data-netbox-color-mode=dark] .btn-yellow-200.active,.show>html[data-netbox-color-mode=dark] .btn-yellow-200.dropdown-toggle{color:#000;background-color:#ffebb0;border-color:#ffe9a6}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-yellow-200:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-yellow-200:focus,html[data-netbox-color-mode=dark] .btn-yellow-200:active:focus,html[data-netbox-color-mode=dark] .btn-yellow-200.active:focus,.show>html[data-netbox-color-mode=dark] .btn-yellow-200.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #d9c48580}html[data-netbox-color-mode=dark] .btn-yellow-200:disabled,html[data-netbox-color-mode=dark] .btn-yellow-200.disabled{color:#000;background-color:#ffe69c;border-color:#ffe69c}html[data-netbox-color-mode=dark] .btn-yellow-300{color:#000;background-color:#ffda6a;border-color:#ffda6a}html[data-netbox-color-mode=dark] .btn-yellow-300:hover{color:#000;background-color:#ffe080;border-color:#ffde79}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-yellow-300,html[data-netbox-color-mode=dark] .btn-yellow-300:focus{color:#000;background-color:#ffe080;border-color:#ffde79;box-shadow:0 0 0 .25rem #d9b95a80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-yellow-300,.btn-check:active+html[data-netbox-color-mode=dark] .btn-yellow-300,html[data-netbox-color-mode=dark] .btn-yellow-300:active,html[data-netbox-color-mode=dark] .btn-yellow-300.active,.show>html[data-netbox-color-mode=dark] .btn-yellow-300.dropdown-toggle{color:#000;background-color:#ffe188;border-color:#ffde79}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-yellow-300:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-yellow-300:focus,html[data-netbox-color-mode=dark] .btn-yellow-300:active:focus,html[data-netbox-color-mode=dark] .btn-yellow-300.active:focus,.show>html[data-netbox-color-mode=dark] .btn-yellow-300.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #d9b95a80}html[data-netbox-color-mode=dark] .btn-yellow-300:disabled,html[data-netbox-color-mode=dark] .btn-yellow-300.disabled{color:#000;background-color:#ffda6a;border-color:#ffda6a}html[data-netbox-color-mode=dark] .btn-yellow-400{color:#000;background-color:#ffcd39;border-color:#ffcd39}html[data-netbox-color-mode=dark] .btn-yellow-400:hover{color:#000;background-color:#ffd557;border-color:#ffd24d}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-yellow-400,html[data-netbox-color-mode=dark] .btn-yellow-400:focus{color:#000;background-color:#ffd557;border-color:#ffd24d;box-shadow:0 0 0 .25rem #d9ae3080}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-yellow-400,.btn-check:active+html[data-netbox-color-mode=dark] .btn-yellow-400,html[data-netbox-color-mode=dark] .btn-yellow-400:active,html[data-netbox-color-mode=dark] .btn-yellow-400.active,.show>html[data-netbox-color-mode=dark] .btn-yellow-400.dropdown-toggle{color:#000;background-color:#ffd761;border-color:#ffd24d}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-yellow-400:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-yellow-400:focus,html[data-netbox-color-mode=dark] .btn-yellow-400:active:focus,html[data-netbox-color-mode=dark] .btn-yellow-400.active:focus,.show>html[data-netbox-color-mode=dark] .btn-yellow-400.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #d9ae3080}html[data-netbox-color-mode=dark] .btn-yellow-400:disabled,html[data-netbox-color-mode=dark] .btn-yellow-400.disabled{color:#000;background-color:#ffcd39;border-color:#ffcd39}html[data-netbox-color-mode=dark] .btn-yellow-500{color:#000;background-color:#ffc107;border-color:#ffc107}html[data-netbox-color-mode=dark] .btn-yellow-500:hover{color:#000;background-color:#ffca2c;border-color:#ffc720}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-yellow-500,html[data-netbox-color-mode=dark] .btn-yellow-500:focus{color:#000;background-color:#ffca2c;border-color:#ffc720;box-shadow:0 0 0 .25rem #d9a40680}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-yellow-500,.btn-check:active+html[data-netbox-color-mode=dark] .btn-yellow-500,html[data-netbox-color-mode=dark] .btn-yellow-500:active,html[data-netbox-color-mode=dark] .btn-yellow-500.active,.show>html[data-netbox-color-mode=dark] .btn-yellow-500.dropdown-toggle{color:#000;background-color:#ffcd39;border-color:#ffc720}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-yellow-500:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-yellow-500:focus,html[data-netbox-color-mode=dark] .btn-yellow-500:active:focus,html[data-netbox-color-mode=dark] .btn-yellow-500.active:focus,.show>html[data-netbox-color-mode=dark] .btn-yellow-500.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #d9a40680}html[data-netbox-color-mode=dark] .btn-yellow-500:disabled,html[data-netbox-color-mode=dark] .btn-yellow-500.disabled{color:#000;background-color:#ffc107;border-color:#ffc107}html[data-netbox-color-mode=dark] .btn-yellow-600{color:#000;background-color:#cc9a06;border-color:#cc9a06}html[data-netbox-color-mode=dark] .btn-yellow-600:hover{color:#000;background-color:#d4a92b;border-color:#d1a41f}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-yellow-600,html[data-netbox-color-mode=dark] .btn-yellow-600:focus{color:#000;background-color:#d4a92b;border-color:#d1a41f;box-shadow:0 0 0 .25rem #ad830580}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-yellow-600,.btn-check:active+html[data-netbox-color-mode=dark] .btn-yellow-600,html[data-netbox-color-mode=dark] .btn-yellow-600:active,html[data-netbox-color-mode=dark] .btn-yellow-600.active,.show>html[data-netbox-color-mode=dark] .btn-yellow-600.dropdown-toggle{color:#000;background-color:#d6ae38;border-color:#d1a41f}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-yellow-600:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-yellow-600:focus,html[data-netbox-color-mode=dark] .btn-yellow-600:active:focus,html[data-netbox-color-mode=dark] .btn-yellow-600.active:focus,.show>html[data-netbox-color-mode=dark] .btn-yellow-600.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #ad830580}html[data-netbox-color-mode=dark] .btn-yellow-600:disabled,html[data-netbox-color-mode=dark] .btn-yellow-600.disabled{color:#000;background-color:#cc9a06;border-color:#cc9a06}html[data-netbox-color-mode=dark] .btn-yellow-700{color:#000;background-color:#997404;border-color:#997404}html[data-netbox-color-mode=dark] .btn-yellow-700:hover{color:#000;background-color:#a8892a;border-color:#a3821d}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-yellow-700,html[data-netbox-color-mode=dark] .btn-yellow-700:focus{color:#000;background-color:#a8892a;border-color:#a3821d;box-shadow:0 0 0 .25rem #82630380}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-yellow-700,.btn-check:active+html[data-netbox-color-mode=dark] .btn-yellow-700,html[data-netbox-color-mode=dark] .btn-yellow-700:active,html[data-netbox-color-mode=dark] .btn-yellow-700.active,.show>html[data-netbox-color-mode=dark] .btn-yellow-700.dropdown-toggle{color:#000;background-color:#ad9036;border-color:#a3821d}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-yellow-700:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-yellow-700:focus,html[data-netbox-color-mode=dark] .btn-yellow-700:active:focus,html[data-netbox-color-mode=dark] .btn-yellow-700.active:focus,.show>html[data-netbox-color-mode=dark] .btn-yellow-700.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #82630380}html[data-netbox-color-mode=dark] .btn-yellow-700:disabled,html[data-netbox-color-mode=dark] .btn-yellow-700.disabled{color:#000;background-color:#997404;border-color:#997404}html[data-netbox-color-mode=dark] .btn-yellow-800{color:#fff;background-color:#664d03;border-color:#664d03}html[data-netbox-color-mode=dark] .btn-yellow-800:hover{color:#fff;background-color:#574103;border-color:#523e02}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-yellow-800,html[data-netbox-color-mode=dark] .btn-yellow-800:focus{color:#fff;background-color:#574103;border-color:#523e02;box-shadow:0 0 0 .25rem #7d682980}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-yellow-800,.btn-check:active+html[data-netbox-color-mode=dark] .btn-yellow-800,html[data-netbox-color-mode=dark] .btn-yellow-800:active,html[data-netbox-color-mode=dark] .btn-yellow-800.active,.show>html[data-netbox-color-mode=dark] .btn-yellow-800.dropdown-toggle{color:#fff;background-color:#523e02;border-color:#4d3a02}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-yellow-800:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-yellow-800:focus,html[data-netbox-color-mode=dark] .btn-yellow-800:active:focus,html[data-netbox-color-mode=dark] .btn-yellow-800.active:focus,.show>html[data-netbox-color-mode=dark] .btn-yellow-800.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #7d682980}html[data-netbox-color-mode=dark] .btn-yellow-800:disabled,html[data-netbox-color-mode=dark] .btn-yellow-800.disabled{color:#fff;background-color:#664d03;border-color:#664d03}html[data-netbox-color-mode=dark] .btn-yellow-900{color:#fff;background-color:#332701;border-color:#332701}html[data-netbox-color-mode=dark] .btn-yellow-900:hover{color:#fff;background-color:#2b2101;border-color:#291f01}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-yellow-900,html[data-netbox-color-mode=dark] .btn-yellow-900:focus{color:#fff;background-color:#2b2101;border-color:#291f01;box-shadow:0 0 0 .25rem #52472780}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-yellow-900,.btn-check:active+html[data-netbox-color-mode=dark] .btn-yellow-900,html[data-netbox-color-mode=dark] .btn-yellow-900:active,html[data-netbox-color-mode=dark] .btn-yellow-900.active,.show>html[data-netbox-color-mode=dark] .btn-yellow-900.dropdown-toggle{color:#fff;background-color:#291f01;border-color:#261d01}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-yellow-900:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-yellow-900:focus,html[data-netbox-color-mode=dark] .btn-yellow-900:active:focus,html[data-netbox-color-mode=dark] .btn-yellow-900.active:focus,.show>html[data-netbox-color-mode=dark] .btn-yellow-900.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #52472780}html[data-netbox-color-mode=dark] .btn-yellow-900:disabled,html[data-netbox-color-mode=dark] .btn-yellow-900.disabled{color:#fff;background-color:#332701;border-color:#332701}html[data-netbox-color-mode=dark] .btn-green-100{color:#000;background-color:#d1e7dd;border-color:#d1e7dd}html[data-netbox-color-mode=dark] .btn-green-100:hover{color:#000;background-color:#d8ebe2;border-color:#d6e9e0}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-green-100,html[data-netbox-color-mode=dark] .btn-green-100:focus{color:#000;background-color:#d8ebe2;border-color:#d6e9e0;box-shadow:0 0 0 .25rem #b2c4bc80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-green-100,.btn-check:active+html[data-netbox-color-mode=dark] .btn-green-100,html[data-netbox-color-mode=dark] .btn-green-100:active,html[data-netbox-color-mode=dark] .btn-green-100.active,.show>html[data-netbox-color-mode=dark] .btn-green-100.dropdown-toggle{color:#000;background-color:#daece4;border-color:#d6e9e0}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-green-100:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-green-100:focus,html[data-netbox-color-mode=dark] .btn-green-100:active:focus,html[data-netbox-color-mode=dark] .btn-green-100.active:focus,.show>html[data-netbox-color-mode=dark] .btn-green-100.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #b2c4bc80}html[data-netbox-color-mode=dark] .btn-green-100:disabled,html[data-netbox-color-mode=dark] .btn-green-100.disabled{color:#000;background-color:#d1e7dd;border-color:#d1e7dd}html[data-netbox-color-mode=dark] .btn-green-200{color:#000;background-color:#a3cfbb;border-color:#a3cfbb}html[data-netbox-color-mode=dark] .btn-green-200:hover{color:#000;background-color:#b1d6c5;border-color:#acd4c2}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-green-200,html[data-netbox-color-mode=dark] .btn-green-200:focus{color:#000;background-color:#b1d6c5;border-color:#acd4c2;box-shadow:0 0 0 .25rem #8bb09f80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-green-200,.btn-check:active+html[data-netbox-color-mode=dark] .btn-green-200,html[data-netbox-color-mode=dark] .btn-green-200:active,html[data-netbox-color-mode=dark] .btn-green-200.active,.show>html[data-netbox-color-mode=dark] .btn-green-200.dropdown-toggle{color:#000;background-color:#b5d9c9;border-color:#acd4c2}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-green-200:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-green-200:focus,html[data-netbox-color-mode=dark] .btn-green-200:active:focus,html[data-netbox-color-mode=dark] .btn-green-200.active:focus,.show>html[data-netbox-color-mode=dark] .btn-green-200.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #8bb09f80}html[data-netbox-color-mode=dark] .btn-green-200:disabled,html[data-netbox-color-mode=dark] .btn-green-200.disabled{color:#000;background-color:#a3cfbb;border-color:#a3cfbb}html[data-netbox-color-mode=dark] .btn-green-300{color:#000;background-color:#75b798;border-color:#75b798}html[data-netbox-color-mode=dark] .btn-green-300:hover{color:#000;background-color:#8ac2a7;border-color:#83bea2}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-green-300,html[data-netbox-color-mode=dark] .btn-green-300:focus{color:#000;background-color:#8ac2a7;border-color:#83bea2;box-shadow:0 0 0 .25rem #639c8180}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-green-300,.btn-check:active+html[data-netbox-color-mode=dark] .btn-green-300,html[data-netbox-color-mode=dark] .btn-green-300:active,html[data-netbox-color-mode=dark] .btn-green-300.active,.show>html[data-netbox-color-mode=dark] .btn-green-300.dropdown-toggle{color:#000;background-color:#91c5ad;border-color:#83bea2}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-green-300:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-green-300:focus,html[data-netbox-color-mode=dark] .btn-green-300:active:focus,html[data-netbox-color-mode=dark] .btn-green-300.active:focus,.show>html[data-netbox-color-mode=dark] .btn-green-300.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #639c8180}html[data-netbox-color-mode=dark] .btn-green-300:disabled,html[data-netbox-color-mode=dark] .btn-green-300.disabled{color:#000;background-color:#75b798;border-color:#75b798}html[data-netbox-color-mode=dark] .btn-green-400{color:#000;background-color:#479f76;border-color:#479f76}html[data-netbox-color-mode=dark] .btn-green-400:hover{color:#000;background-color:#63ad8b;border-color:#59a984}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-green-400,html[data-netbox-color-mode=dark] .btn-green-400:focus{color:#000;background-color:#63ad8b;border-color:#59a984;box-shadow:0 0 0 .25rem #3c876480}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-green-400,.btn-check:active+html[data-netbox-color-mode=dark] .btn-green-400,html[data-netbox-color-mode=dark] .btn-green-400:active,html[data-netbox-color-mode=dark] .btn-green-400.active,.show>html[data-netbox-color-mode=dark] .btn-green-400.dropdown-toggle{color:#000;background-color:#6cb291;border-color:#59a984}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-green-400:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-green-400:focus,html[data-netbox-color-mode=dark] .btn-green-400:active:focus,html[data-netbox-color-mode=dark] .btn-green-400.active:focus,.show>html[data-netbox-color-mode=dark] .btn-green-400.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #3c876480}html[data-netbox-color-mode=dark] .btn-green-400:disabled,html[data-netbox-color-mode=dark] .btn-green-400.disabled{color:#000;background-color:#479f76;border-color:#479f76}html[data-netbox-color-mode=dark] .btn-green-500{color:#fff;background-color:#198754;border-color:#198754}html[data-netbox-color-mode=dark] .btn-green-500:hover{color:#fff;background-color:#157347;border-color:#146c43}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-green-500,html[data-netbox-color-mode=dark] .btn-green-500:focus{color:#fff;background-color:#157347;border-color:#146c43;box-shadow:0 0 0 .25rem #3c996e80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-green-500,.btn-check:active+html[data-netbox-color-mode=dark] .btn-green-500,html[data-netbox-color-mode=dark] .btn-green-500:active,html[data-netbox-color-mode=dark] .btn-green-500.active,.show>html[data-netbox-color-mode=dark] .btn-green-500.dropdown-toggle{color:#fff;background-color:#146c43;border-color:#13653f}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-green-500:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-green-500:focus,html[data-netbox-color-mode=dark] .btn-green-500:active:focus,html[data-netbox-color-mode=dark] .btn-green-500.active:focus,.show>html[data-netbox-color-mode=dark] .btn-green-500.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #3c996e80}html[data-netbox-color-mode=dark] .btn-green-500:disabled,html[data-netbox-color-mode=dark] .btn-green-500.disabled{color:#fff;background-color:#198754;border-color:#198754}html[data-netbox-color-mode=dark] .btn-green-600{color:#fff;background-color:#146c43;border-color:#146c43}html[data-netbox-color-mode=dark] .btn-green-600:hover{color:#fff;background-color:#115c39;border-color:#105636}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-green-600,html[data-netbox-color-mode=dark] .btn-green-600:focus{color:#fff;background-color:#115c39;border-color:#105636;box-shadow:0 0 0 .25rem #37825f80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-green-600,.btn-check:active+html[data-netbox-color-mode=dark] .btn-green-600,html[data-netbox-color-mode=dark] .btn-green-600:active,html[data-netbox-color-mode=dark] .btn-green-600.active,.show>html[data-netbox-color-mode=dark] .btn-green-600.dropdown-toggle{color:#fff;background-color:#105636;border-color:#0f5132}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-green-600:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-green-600:focus,html[data-netbox-color-mode=dark] .btn-green-600:active:focus,html[data-netbox-color-mode=dark] .btn-green-600.active:focus,.show>html[data-netbox-color-mode=dark] .btn-green-600.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #37825f80}html[data-netbox-color-mode=dark] .btn-green-600:disabled,html[data-netbox-color-mode=dark] .btn-green-600.disabled{color:#fff;background-color:#146c43;border-color:#146c43}html[data-netbox-color-mode=dark] .btn-green-700{color:#fff;background-color:#0f5132;border-color:#0f5132}html[data-netbox-color-mode=dark] .btn-green-700:hover{color:#fff;background-color:#0d452b;border-color:#0c4128}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-green-700,html[data-netbox-color-mode=dark] .btn-green-700:focus{color:#fff;background-color:#0d452b;border-color:#0c4128;box-shadow:0 0 0 .25rem #336b5180}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-green-700,.btn-check:active+html[data-netbox-color-mode=dark] .btn-green-700,html[data-netbox-color-mode=dark] .btn-green-700:active,html[data-netbox-color-mode=dark] .btn-green-700.active,.show>html[data-netbox-color-mode=dark] .btn-green-700.dropdown-toggle{color:#fff;background-color:#0c4128;border-color:#0b3d26}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-green-700:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-green-700:focus,html[data-netbox-color-mode=dark] .btn-green-700:active:focus,html[data-netbox-color-mode=dark] .btn-green-700.active:focus,.show>html[data-netbox-color-mode=dark] .btn-green-700.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #336b5180}html[data-netbox-color-mode=dark] .btn-green-700:disabled,html[data-netbox-color-mode=dark] .btn-green-700.disabled{color:#fff;background-color:#0f5132;border-color:#0f5132}html[data-netbox-color-mode=dark] .btn-green-800{color:#fff;background-color:#0a3622;border-color:#0a3622}html[data-netbox-color-mode=dark] .btn-green-800:hover{color:#fff;background-color:#092e1d;border-color:#082b1b}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-green-800,html[data-netbox-color-mode=dark] .btn-green-800:focus{color:#fff;background-color:#092e1d;border-color:#082b1b;box-shadow:0 0 0 .25rem #2f544380}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-green-800,.btn-check:active+html[data-netbox-color-mode=dark] .btn-green-800,html[data-netbox-color-mode=dark] .btn-green-800:active,html[data-netbox-color-mode=dark] .btn-green-800.active,.show>html[data-netbox-color-mode=dark] .btn-green-800.dropdown-toggle{color:#fff;background-color:#082b1b;border-color:#08291a}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-green-800:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-green-800:focus,html[data-netbox-color-mode=dark] .btn-green-800:active:focus,html[data-netbox-color-mode=dark] .btn-green-800.active:focus,.show>html[data-netbox-color-mode=dark] .btn-green-800.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #2f544380}html[data-netbox-color-mode=dark] .btn-green-800:disabled,html[data-netbox-color-mode=dark] .btn-green-800.disabled{color:#fff;background-color:#0a3622;border-color:#0a3622}html[data-netbox-color-mode=dark] .btn-green-900{color:#fff;background-color:#051b11;border-color:#051b11}html[data-netbox-color-mode=dark] .btn-green-900:hover{color:#fff;background-color:#04170e;border-color:#04160e}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-green-900,html[data-netbox-color-mode=dark] .btn-green-900:focus{color:#fff;background-color:#04170e;border-color:#04160e;box-shadow:0 0 0 .25rem #2b3d3580}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-green-900,.btn-check:active+html[data-netbox-color-mode=dark] .btn-green-900,html[data-netbox-color-mode=dark] .btn-green-900:active,html[data-netbox-color-mode=dark] .btn-green-900.active,.show>html[data-netbox-color-mode=dark] .btn-green-900.dropdown-toggle{color:#fff;background-color:#04160e;border-color:#04140d}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-green-900:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-green-900:focus,html[data-netbox-color-mode=dark] .btn-green-900:active:focus,html[data-netbox-color-mode=dark] .btn-green-900.active:focus,.show>html[data-netbox-color-mode=dark] .btn-green-900.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #2b3d3580}html[data-netbox-color-mode=dark] .btn-green-900:disabled,html[data-netbox-color-mode=dark] .btn-green-900.disabled{color:#fff;background-color:#051b11;border-color:#051b11}html[data-netbox-color-mode=dark] .btn-blue-100{color:#000;background-color:#cfe2ff;border-color:#cfe2ff}html[data-netbox-color-mode=dark] .btn-blue-100:hover{color:#000;background-color:#d6e6ff;border-color:#d4e5ff}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-blue-100,html[data-netbox-color-mode=dark] .btn-blue-100:focus{color:#000;background-color:#d6e6ff;border-color:#d4e5ff;box-shadow:0 0 0 .25rem #b0c0d980}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-blue-100,.btn-check:active+html[data-netbox-color-mode=dark] .btn-blue-100,html[data-netbox-color-mode=dark] .btn-blue-100:active,html[data-netbox-color-mode=dark] .btn-blue-100.active,.show>html[data-netbox-color-mode=dark] .btn-blue-100.dropdown-toggle{color:#000;background-color:#d9e8ff;border-color:#d4e5ff}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-blue-100:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-blue-100:focus,html[data-netbox-color-mode=dark] .btn-blue-100:active:focus,html[data-netbox-color-mode=dark] .btn-blue-100.active:focus,.show>html[data-netbox-color-mode=dark] .btn-blue-100.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #b0c0d980}html[data-netbox-color-mode=dark] .btn-blue-100:disabled,html[data-netbox-color-mode=dark] .btn-blue-100.disabled{color:#000;background-color:#cfe2ff;border-color:#cfe2ff}html[data-netbox-color-mode=dark] .btn-blue-200{color:#000;background-color:#9ec5fe;border-color:#9ec5fe}html[data-netbox-color-mode=dark] .btn-blue-200:hover{color:#000;background-color:#adcefe;border-color:#a8cbfe}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-blue-200,html[data-netbox-color-mode=dark] .btn-blue-200:focus{color:#000;background-color:#adcefe;border-color:#a8cbfe;box-shadow:0 0 0 .25rem #86a7d880}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-blue-200,.btn-check:active+html[data-netbox-color-mode=dark] .btn-blue-200,html[data-netbox-color-mode=dark] .btn-blue-200:active,html[data-netbox-color-mode=dark] .btn-blue-200.active,.show>html[data-netbox-color-mode=dark] .btn-blue-200.dropdown-toggle{color:#000;background-color:#b1d1fe;border-color:#a8cbfe}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-blue-200:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-blue-200:focus,html[data-netbox-color-mode=dark] .btn-blue-200:active:focus,html[data-netbox-color-mode=dark] .btn-blue-200.active:focus,.show>html[data-netbox-color-mode=dark] .btn-blue-200.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #86a7d880}html[data-netbox-color-mode=dark] .btn-blue-200:disabled,html[data-netbox-color-mode=dark] .btn-blue-200.disabled{color:#000;background-color:#9ec5fe;border-color:#9ec5fe}html[data-netbox-color-mode=dark] .btn-blue-300{color:#000;background-color:#6ea8fe;border-color:#6ea8fe}html[data-netbox-color-mode=dark] .btn-blue-300:hover{color:#000;background-color:#84b5fe;border-color:#7db1fe}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-blue-300,html[data-netbox-color-mode=dark] .btn-blue-300:focus{color:#000;background-color:#84b5fe;border-color:#7db1fe;box-shadow:0 0 0 .25rem #5e8fd880}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-blue-300,.btn-check:active+html[data-netbox-color-mode=dark] .btn-blue-300,html[data-netbox-color-mode=dark] .btn-blue-300:active,html[data-netbox-color-mode=dark] .btn-blue-300.active,.show>html[data-netbox-color-mode=dark] .btn-blue-300.dropdown-toggle{color:#000;background-color:#8bb9fe;border-color:#7db1fe}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-blue-300:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-blue-300:focus,html[data-netbox-color-mode=dark] .btn-blue-300:active:focus,html[data-netbox-color-mode=dark] .btn-blue-300.active:focus,.show>html[data-netbox-color-mode=dark] .btn-blue-300.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #5e8fd880}html[data-netbox-color-mode=dark] .btn-blue-300:disabled,html[data-netbox-color-mode=dark] .btn-blue-300.disabled{color:#000;background-color:#6ea8fe;border-color:#6ea8fe}html[data-netbox-color-mode=dark] .btn-blue-400{color:#000;background-color:#3d8bfd;border-color:#3d8bfd}html[data-netbox-color-mode=dark] .btn-blue-400:hover{color:#000;background-color:#5a9cfd;border-color:#5097fd}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-blue-400,html[data-netbox-color-mode=dark] .btn-blue-400:focus{color:#000;background-color:#5a9cfd;border-color:#5097fd;box-shadow:0 0 0 .25rem #3476d780}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-blue-400,.btn-check:active+html[data-netbox-color-mode=dark] .btn-blue-400,html[data-netbox-color-mode=dark] .btn-blue-400:active,html[data-netbox-color-mode=dark] .btn-blue-400.active,.show>html[data-netbox-color-mode=dark] .btn-blue-400.dropdown-toggle{color:#000;background-color:#64a2fd;border-color:#5097fd}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-blue-400:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-blue-400:focus,html[data-netbox-color-mode=dark] .btn-blue-400:active:focus,html[data-netbox-color-mode=dark] .btn-blue-400.active:focus,.show>html[data-netbox-color-mode=dark] .btn-blue-400.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #3476d780}html[data-netbox-color-mode=dark] .btn-blue-400:disabled,html[data-netbox-color-mode=dark] .btn-blue-400.disabled{color:#000;background-color:#3d8bfd;border-color:#3d8bfd}html[data-netbox-color-mode=dark] .btn-blue-500{color:#fff;background-color:#0d6efd;border-color:#0d6efd}html[data-netbox-color-mode=dark] .btn-blue-500:hover{color:#fff;background-color:#0b5ed7;border-color:#0a58ca}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-blue-500,html[data-netbox-color-mode=dark] .btn-blue-500:focus{color:#fff;background-color:#0b5ed7;border-color:#0a58ca;box-shadow:0 0 0 .25rem #3184fd80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-blue-500,.btn-check:active+html[data-netbox-color-mode=dark] .btn-blue-500,html[data-netbox-color-mode=dark] .btn-blue-500:active,html[data-netbox-color-mode=dark] .btn-blue-500.active,.show>html[data-netbox-color-mode=dark] .btn-blue-500.dropdown-toggle{color:#fff;background-color:#0a58ca;border-color:#0a53be}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-blue-500:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-blue-500:focus,html[data-netbox-color-mode=dark] .btn-blue-500:active:focus,html[data-netbox-color-mode=dark] .btn-blue-500.active:focus,.show>html[data-netbox-color-mode=dark] .btn-blue-500.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #3184fd80}html[data-netbox-color-mode=dark] .btn-blue-500:disabled,html[data-netbox-color-mode=dark] .btn-blue-500.disabled{color:#fff;background-color:#0d6efd;border-color:#0d6efd}html[data-netbox-color-mode=dark] .btn-blue-600{color:#fff;background-color:#0a58ca;border-color:#0a58ca}html[data-netbox-color-mode=dark] .btn-blue-600:hover{color:#fff;background-color:#094bac;border-color:#0846a2}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-blue-600,html[data-netbox-color-mode=dark] .btn-blue-600:focus{color:#fff;background-color:#094bac;border-color:#0846a2;box-shadow:0 0 0 .25rem #2f71d280}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-blue-600,.btn-check:active+html[data-netbox-color-mode=dark] .btn-blue-600,html[data-netbox-color-mode=dark] .btn-blue-600:active,html[data-netbox-color-mode=dark] .btn-blue-600.active,.show>html[data-netbox-color-mode=dark] .btn-blue-600.dropdown-toggle{color:#fff;background-color:#0846a2;border-color:#084298}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-blue-600:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-blue-600:focus,html[data-netbox-color-mode=dark] .btn-blue-600:active:focus,html[data-netbox-color-mode=dark] .btn-blue-600.active:focus,.show>html[data-netbox-color-mode=dark] .btn-blue-600.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #2f71d280}html[data-netbox-color-mode=dark] .btn-blue-600:disabled,html[data-netbox-color-mode=dark] .btn-blue-600.disabled{color:#fff;background-color:#0a58ca;border-color:#0a58ca}html[data-netbox-color-mode=dark] .btn-blue-700{color:#fff;background-color:#084298;border-color:#084298}html[data-netbox-color-mode=dark] .btn-blue-700:hover{color:#fff;background-color:#073881;border-color:#06357a}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-blue-700,html[data-netbox-color-mode=dark] .btn-blue-700:focus{color:#fff;background-color:#073881;border-color:#06357a;box-shadow:0 0 0 .25rem #2d5ea780}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-blue-700,.btn-check:active+html[data-netbox-color-mode=dark] .btn-blue-700,html[data-netbox-color-mode=dark] .btn-blue-700:active,html[data-netbox-color-mode=dark] .btn-blue-700.active,.show>html[data-netbox-color-mode=dark] .btn-blue-700.dropdown-toggle{color:#fff;background-color:#06357a;border-color:#063272}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-blue-700:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-blue-700:focus,html[data-netbox-color-mode=dark] .btn-blue-700:active:focus,html[data-netbox-color-mode=dark] .btn-blue-700.active:focus,.show>html[data-netbox-color-mode=dark] .btn-blue-700.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #2d5ea780}html[data-netbox-color-mode=dark] .btn-blue-700:disabled,html[data-netbox-color-mode=dark] .btn-blue-700.disabled{color:#fff;background-color:#084298;border-color:#084298}html[data-netbox-color-mode=dark] .btn-blue-800{color:#fff;background-color:#052c65;border-color:#052c65}html[data-netbox-color-mode=dark] .btn-blue-800:hover{color:#fff;background-color:#042556;border-color:#042351}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-blue-800,html[data-netbox-color-mode=dark] .btn-blue-800:focus{color:#fff;background-color:#042556;border-color:#042351;box-shadow:0 0 0 .25rem #2b4c7c80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-blue-800,.btn-check:active+html[data-netbox-color-mode=dark] .btn-blue-800,html[data-netbox-color-mode=dark] .btn-blue-800:active,html[data-netbox-color-mode=dark] .btn-blue-800.active,.show>html[data-netbox-color-mode=dark] .btn-blue-800.dropdown-toggle{color:#fff;background-color:#042351;border-color:#04214c}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-blue-800:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-blue-800:focus,html[data-netbox-color-mode=dark] .btn-blue-800:active:focus,html[data-netbox-color-mode=dark] .btn-blue-800.active:focus,.show>html[data-netbox-color-mode=dark] .btn-blue-800.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #2b4c7c80}html[data-netbox-color-mode=dark] .btn-blue-800:disabled,html[data-netbox-color-mode=dark] .btn-blue-800.disabled{color:#fff;background-color:#052c65;border-color:#052c65}html[data-netbox-color-mode=dark] .btn-blue-900{color:#fff;background-color:#031633;border-color:#031633}html[data-netbox-color-mode=dark] .btn-blue-900:hover{color:#fff;background-color:#03132b;border-color:#021229}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-blue-900,html[data-netbox-color-mode=dark] .btn-blue-900:focus{color:#fff;background-color:#03132b;border-color:#021229;box-shadow:0 0 0 .25rem #29395280}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-blue-900,.btn-check:active+html[data-netbox-color-mode=dark] .btn-blue-900,html[data-netbox-color-mode=dark] .btn-blue-900:active,html[data-netbox-color-mode=dark] .btn-blue-900.active,.show>html[data-netbox-color-mode=dark] .btn-blue-900.dropdown-toggle{color:#fff;background-color:#021229;border-color:#021126}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-blue-900:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-blue-900:focus,html[data-netbox-color-mode=dark] .btn-blue-900:active:focus,html[data-netbox-color-mode=dark] .btn-blue-900.active:focus,.show>html[data-netbox-color-mode=dark] .btn-blue-900.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #29395280}html[data-netbox-color-mode=dark] .btn-blue-900:disabled,html[data-netbox-color-mode=dark] .btn-blue-900.disabled{color:#fff;background-color:#031633;border-color:#031633}html[data-netbox-color-mode=dark] .btn-cyan-100{color:#000;background-color:#cff4fc;border-color:#cff4fc}html[data-netbox-color-mode=dark] .btn-cyan-100:hover{color:#000;background-color:#d6f6fc;border-color:#d4f5fc}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-cyan-100,html[data-netbox-color-mode=dark] .btn-cyan-100:focus{color:#000;background-color:#d6f6fc;border-color:#d4f5fc;box-shadow:0 0 0 .25rem #b0cfd680}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-cyan-100,.btn-check:active+html[data-netbox-color-mode=dark] .btn-cyan-100,html[data-netbox-color-mode=dark] .btn-cyan-100:active,html[data-netbox-color-mode=dark] .btn-cyan-100.active,.show>html[data-netbox-color-mode=dark] .btn-cyan-100.dropdown-toggle{color:#000;background-color:#d9f6fd;border-color:#d4f5fc}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-cyan-100:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-cyan-100:focus,html[data-netbox-color-mode=dark] .btn-cyan-100:active:focus,html[data-netbox-color-mode=dark] .btn-cyan-100.active:focus,.show>html[data-netbox-color-mode=dark] .btn-cyan-100.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #b0cfd680}html[data-netbox-color-mode=dark] .btn-cyan-100:disabled,html[data-netbox-color-mode=dark] .btn-cyan-100.disabled{color:#000;background-color:#cff4fc;border-color:#cff4fc}html[data-netbox-color-mode=dark] .btn-cyan-200{color:#000;background-color:#9eeaf9;border-color:#9eeaf9}html[data-netbox-color-mode=dark] .btn-cyan-200:hover{color:#000;background-color:#adedfa;border-color:#a8ecfa}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-cyan-200,html[data-netbox-color-mode=dark] .btn-cyan-200:focus{color:#000;background-color:#adedfa;border-color:#a8ecfa;box-shadow:0 0 0 .25rem #86c7d480}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-cyan-200,.btn-check:active+html[data-netbox-color-mode=dark] .btn-cyan-200,html[data-netbox-color-mode=dark] .btn-cyan-200:active,html[data-netbox-color-mode=dark] .btn-cyan-200.active,.show>html[data-netbox-color-mode=dark] .btn-cyan-200.dropdown-toggle{color:#000;background-color:#b1eefa;border-color:#a8ecfa}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-cyan-200:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-cyan-200:focus,html[data-netbox-color-mode=dark] .btn-cyan-200:active:focus,html[data-netbox-color-mode=dark] .btn-cyan-200.active:focus,.show>html[data-netbox-color-mode=dark] .btn-cyan-200.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #86c7d480}html[data-netbox-color-mode=dark] .btn-cyan-200:disabled,html[data-netbox-color-mode=dark] .btn-cyan-200.disabled{color:#000;background-color:#9eeaf9;border-color:#9eeaf9}html[data-netbox-color-mode=dark] .btn-cyan-300{color:#000;background-color:#6edff6;border-color:#6edff6}html[data-netbox-color-mode=dark] .btn-cyan-300:hover{color:#000;background-color:#84e4f7;border-color:#7de2f7}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-cyan-300,html[data-netbox-color-mode=dark] .btn-cyan-300:focus{color:#000;background-color:#84e4f7;border-color:#7de2f7;box-shadow:0 0 0 .25rem #5ebed180}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-cyan-300,.btn-check:active+html[data-netbox-color-mode=dark] .btn-cyan-300,html[data-netbox-color-mode=dark] .btn-cyan-300:active,html[data-netbox-color-mode=dark] .btn-cyan-300.active,.show>html[data-netbox-color-mode=dark] .btn-cyan-300.dropdown-toggle{color:#000;background-color:#8be5f8;border-color:#7de2f7}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-cyan-300:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-cyan-300:focus,html[data-netbox-color-mode=dark] .btn-cyan-300:active:focus,html[data-netbox-color-mode=dark] .btn-cyan-300.active:focus,.show>html[data-netbox-color-mode=dark] .btn-cyan-300.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #5ebed180}html[data-netbox-color-mode=dark] .btn-cyan-300:disabled,html[data-netbox-color-mode=dark] .btn-cyan-300.disabled{color:#000;background-color:#6edff6;border-color:#6edff6}html[data-netbox-color-mode=dark] .btn-cyan-400{color:#000;background-color:#3dd5f3;border-color:#3dd5f3}html[data-netbox-color-mode=dark] .btn-cyan-400:hover{color:#000;background-color:#5adbf5;border-color:#50d9f4}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-cyan-400,html[data-netbox-color-mode=dark] .btn-cyan-400:focus{color:#000;background-color:#5adbf5;border-color:#50d9f4;box-shadow:0 0 0 .25rem #34b5cf80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-cyan-400,.btn-check:active+html[data-netbox-color-mode=dark] .btn-cyan-400,html[data-netbox-color-mode=dark] .btn-cyan-400:active,html[data-netbox-color-mode=dark] .btn-cyan-400.active,.show>html[data-netbox-color-mode=dark] .btn-cyan-400.dropdown-toggle{color:#000;background-color:#64ddf5;border-color:#50d9f4}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-cyan-400:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-cyan-400:focus,html[data-netbox-color-mode=dark] .btn-cyan-400:active:focus,html[data-netbox-color-mode=dark] .btn-cyan-400.active:focus,.show>html[data-netbox-color-mode=dark] .btn-cyan-400.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #34b5cf80}html[data-netbox-color-mode=dark] .btn-cyan-400:disabled,html[data-netbox-color-mode=dark] .btn-cyan-400.disabled{color:#000;background-color:#3dd5f3;border-color:#3dd5f3}html[data-netbox-color-mode=dark] .btn-cyan-500{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}html[data-netbox-color-mode=dark] .btn-cyan-500:hover{color:#000;background-color:#31d2f2;border-color:#25cff2}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-cyan-500,html[data-netbox-color-mode=dark] .btn-cyan-500:focus{color:#000;background-color:#31d2f2;border-color:#25cff2;box-shadow:0 0 0 .25rem #0baccc80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-cyan-500,.btn-check:active+html[data-netbox-color-mode=dark] .btn-cyan-500,html[data-netbox-color-mode=dark] .btn-cyan-500:active,html[data-netbox-color-mode=dark] .btn-cyan-500.active,.show>html[data-netbox-color-mode=dark] .btn-cyan-500.dropdown-toggle{color:#000;background-color:#3dd5f3;border-color:#25cff2}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-cyan-500:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-cyan-500:focus,html[data-netbox-color-mode=dark] .btn-cyan-500:active:focus,html[data-netbox-color-mode=dark] .btn-cyan-500.active:focus,.show>html[data-netbox-color-mode=dark] .btn-cyan-500.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #0baccc80}html[data-netbox-color-mode=dark] .btn-cyan-500:disabled,html[data-netbox-color-mode=dark] .btn-cyan-500.disabled{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}html[data-netbox-color-mode=dark] .btn-cyan-600{color:#000;background-color:#0aa2c0;border-color:#0aa2c0}html[data-netbox-color-mode=dark] .btn-cyan-600:hover{color:#000;background-color:#2fb0c9;border-color:#23abc6}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-cyan-600,html[data-netbox-color-mode=dark] .btn-cyan-600:focus{color:#000;background-color:#2fb0c9;border-color:#23abc6;box-shadow:0 0 0 .25rem #098aa380}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-cyan-600,.btn-check:active+html[data-netbox-color-mode=dark] .btn-cyan-600,html[data-netbox-color-mode=dark] .btn-cyan-600:active,html[data-netbox-color-mode=dark] .btn-cyan-600.active,.show>html[data-netbox-color-mode=dark] .btn-cyan-600.dropdown-toggle{color:#000;background-color:#3bb5cd;border-color:#23abc6}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-cyan-600:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-cyan-600:focus,html[data-netbox-color-mode=dark] .btn-cyan-600:active:focus,html[data-netbox-color-mode=dark] .btn-cyan-600.active:focus,.show>html[data-netbox-color-mode=dark] .btn-cyan-600.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #098aa380}html[data-netbox-color-mode=dark] .btn-cyan-600:disabled,html[data-netbox-color-mode=dark] .btn-cyan-600.disabled{color:#000;background-color:#0aa2c0;border-color:#0aa2c0}html[data-netbox-color-mode=dark] .btn-cyan-700{color:#fff;background-color:#087990;border-color:#087990}html[data-netbox-color-mode=dark] .btn-cyan-700:hover{color:#fff;background-color:#07677a;border-color:#066173}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-cyan-700,html[data-netbox-color-mode=dark] .btn-cyan-700:focus{color:#fff;background-color:#07677a;border-color:#066173;box-shadow:0 0 0 .25rem #2d8da180}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-cyan-700,.btn-check:active+html[data-netbox-color-mode=dark] .btn-cyan-700,html[data-netbox-color-mode=dark] .btn-cyan-700:active,html[data-netbox-color-mode=dark] .btn-cyan-700.active,.show>html[data-netbox-color-mode=dark] .btn-cyan-700.dropdown-toggle{color:#fff;background-color:#066173;border-color:#065b6c}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-cyan-700:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-cyan-700:focus,html[data-netbox-color-mode=dark] .btn-cyan-700:active:focus,html[data-netbox-color-mode=dark] .btn-cyan-700.active:focus,.show>html[data-netbox-color-mode=dark] .btn-cyan-700.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #2d8da180}html[data-netbox-color-mode=dark] .btn-cyan-700:disabled,html[data-netbox-color-mode=dark] .btn-cyan-700.disabled{color:#fff;background-color:#087990;border-color:#087990}html[data-netbox-color-mode=dark] .btn-cyan-800{color:#fff;background-color:#055160;border-color:#055160}html[data-netbox-color-mode=dark] .btn-cyan-800:hover{color:#fff;background-color:#044552;border-color:#04414d}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-cyan-800,html[data-netbox-color-mode=dark] .btn-cyan-800:focus{color:#fff;background-color:#044552;border-color:#04414d;box-shadow:0 0 0 .25rem #2b6b7880}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-cyan-800,.btn-check:active+html[data-netbox-color-mode=dark] .btn-cyan-800,html[data-netbox-color-mode=dark] .btn-cyan-800:active,html[data-netbox-color-mode=dark] .btn-cyan-800.active,.show>html[data-netbox-color-mode=dark] .btn-cyan-800.dropdown-toggle{color:#fff;background-color:#04414d;border-color:#043d48}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-cyan-800:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-cyan-800:focus,html[data-netbox-color-mode=dark] .btn-cyan-800:active:focus,html[data-netbox-color-mode=dark] .btn-cyan-800.active:focus,.show>html[data-netbox-color-mode=dark] .btn-cyan-800.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #2b6b7880}html[data-netbox-color-mode=dark] .btn-cyan-800:disabled,html[data-netbox-color-mode=dark] .btn-cyan-800.disabled{color:#fff;background-color:#055160;border-color:#055160}html[data-netbox-color-mode=dark] .btn-cyan-900{color:#fff;background-color:#032830;border-color:#032830}html[data-netbox-color-mode=dark] .btn-cyan-900:hover{color:#fff;background-color:#032229;border-color:#022026}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-cyan-900,html[data-netbox-color-mode=dark] .btn-cyan-900:focus{color:#fff;background-color:#032229;border-color:#022026;box-shadow:0 0 0 .25rem #29484f80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-cyan-900,.btn-check:active+html[data-netbox-color-mode=dark] .btn-cyan-900,html[data-netbox-color-mode=dark] .btn-cyan-900:active,html[data-netbox-color-mode=dark] .btn-cyan-900.active,.show>html[data-netbox-color-mode=dark] .btn-cyan-900.dropdown-toggle{color:#fff;background-color:#022026;border-color:#021e24}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-cyan-900:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-cyan-900:focus,html[data-netbox-color-mode=dark] .btn-cyan-900:active:focus,html[data-netbox-color-mode=dark] .btn-cyan-900.active:focus,.show>html[data-netbox-color-mode=dark] .btn-cyan-900.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #29484f80}html[data-netbox-color-mode=dark] .btn-cyan-900:disabled,html[data-netbox-color-mode=dark] .btn-cyan-900.disabled{color:#fff;background-color:#032830;border-color:#032830}html[data-netbox-color-mode=dark] .btn-indigo-100{color:#000;background-color:#e0cffc;border-color:#e0cffc}html[data-netbox-color-mode=dark] .btn-indigo-100:hover{color:#000;background-color:#e5d6fc;border-color:#e3d4fc}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-indigo-100,html[data-netbox-color-mode=dark] .btn-indigo-100:focus{color:#000;background-color:#e5d6fc;border-color:#e3d4fc;box-shadow:0 0 0 .25rem #beb0d680}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-indigo-100,.btn-check:active+html[data-netbox-color-mode=dark] .btn-indigo-100,html[data-netbox-color-mode=dark] .btn-indigo-100:active,html[data-netbox-color-mode=dark] .btn-indigo-100.active,.show>html[data-netbox-color-mode=dark] .btn-indigo-100.dropdown-toggle{color:#000;background-color:#e6d9fd;border-color:#e3d4fc}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-indigo-100:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-indigo-100:focus,html[data-netbox-color-mode=dark] .btn-indigo-100:active:focus,html[data-netbox-color-mode=dark] .btn-indigo-100.active:focus,.show>html[data-netbox-color-mode=dark] .btn-indigo-100.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #beb0d680}html[data-netbox-color-mode=dark] .btn-indigo-100:disabled,html[data-netbox-color-mode=dark] .btn-indigo-100.disabled{color:#000;background-color:#e0cffc;border-color:#e0cffc}html[data-netbox-color-mode=dark] .btn-indigo-200{color:#000;background-color:#c29ffa;border-color:#c29ffa}html[data-netbox-color-mode=dark] .btn-indigo-200:hover{color:#000;background-color:#cbadfb;border-color:#c8a9fb}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-indigo-200,html[data-netbox-color-mode=dark] .btn-indigo-200:focus{color:#000;background-color:#cbadfb;border-color:#c8a9fb;box-shadow:0 0 0 .25rem #a587d580}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-indigo-200,.btn-check:active+html[data-netbox-color-mode=dark] .btn-indigo-200,html[data-netbox-color-mode=dark] .btn-indigo-200:active,html[data-netbox-color-mode=dark] .btn-indigo-200.active,.show>html[data-netbox-color-mode=dark] .btn-indigo-200.dropdown-toggle{color:#000;background-color:#ceb2fb;border-color:#c8a9fb}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-indigo-200:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-indigo-200:focus,html[data-netbox-color-mode=dark] .btn-indigo-200:active:focus,html[data-netbox-color-mode=dark] .btn-indigo-200.active:focus,.show>html[data-netbox-color-mode=dark] .btn-indigo-200.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #a587d580}html[data-netbox-color-mode=dark] .btn-indigo-200:disabled,html[data-netbox-color-mode=dark] .btn-indigo-200.disabled{color:#000;background-color:#c29ffa;border-color:#c29ffa}html[data-netbox-color-mode=dark] .btn-indigo-300{color:#000;background-color:#a370f7;border-color:#a370f7}html[data-netbox-color-mode=dark] .btn-indigo-300:hover{color:#000;background-color:#b185f8;border-color:#ac7ef8}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-indigo-300,html[data-netbox-color-mode=dark] .btn-indigo-300:focus{color:#000;background-color:#b185f8;border-color:#ac7ef8;box-shadow:0 0 0 .25rem #8b5fd280}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-indigo-300,.btn-check:active+html[data-netbox-color-mode=dark] .btn-indigo-300,html[data-netbox-color-mode=dark] .btn-indigo-300:active,html[data-netbox-color-mode=dark] .btn-indigo-300.active,.show>html[data-netbox-color-mode=dark] .btn-indigo-300.dropdown-toggle{color:#000;background-color:#b58df9;border-color:#ac7ef8}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-indigo-300:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-indigo-300:focus,html[data-netbox-color-mode=dark] .btn-indigo-300:active:focus,html[data-netbox-color-mode=dark] .btn-indigo-300.active:focus,.show>html[data-netbox-color-mode=dark] .btn-indigo-300.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #8b5fd280}html[data-netbox-color-mode=dark] .btn-indigo-300:disabled,html[data-netbox-color-mode=dark] .btn-indigo-300.disabled{color:#000;background-color:#a370f7;border-color:#a370f7}html[data-netbox-color-mode=dark] .btn-indigo-400{color:#fff;background-color:#8540f5;border-color:#8540f5}html[data-netbox-color-mode=dark] .btn-indigo-400:hover{color:#fff;background-color:#7136d0;border-color:#6a33c4}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-indigo-400,html[data-netbox-color-mode=dark] .btn-indigo-400:focus{color:#fff;background-color:#7136d0;border-color:#6a33c4;box-shadow:0 0 0 .25rem #975df780}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-indigo-400,.btn-check:active+html[data-netbox-color-mode=dark] .btn-indigo-400,html[data-netbox-color-mode=dark] .btn-indigo-400:active,html[data-netbox-color-mode=dark] .btn-indigo-400.active,.show>html[data-netbox-color-mode=dark] .btn-indigo-400.dropdown-toggle{color:#fff;background-color:#6a33c4;border-color:#6430b8}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-indigo-400:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-indigo-400:focus,html[data-netbox-color-mode=dark] .btn-indigo-400:active:focus,html[data-netbox-color-mode=dark] .btn-indigo-400.active:focus,.show>html[data-netbox-color-mode=dark] .btn-indigo-400.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #975df780}html[data-netbox-color-mode=dark] .btn-indigo-400:disabled,html[data-netbox-color-mode=dark] .btn-indigo-400.disabled{color:#fff;background-color:#8540f5;border-color:#8540f5}html[data-netbox-color-mode=dark] .btn-indigo-500{color:#fff;background-color:#6610f2;border-color:#6610f2}html[data-netbox-color-mode=dark] .btn-indigo-500:hover{color:#fff;background-color:#570ece;border-color:#520dc2}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-indigo-500,html[data-netbox-color-mode=dark] .btn-indigo-500:focus{color:#fff;background-color:#570ece;border-color:#520dc2;box-shadow:0 0 0 .25rem #7d34f480}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-indigo-500,.btn-check:active+html[data-netbox-color-mode=dark] .btn-indigo-500,html[data-netbox-color-mode=dark] .btn-indigo-500:active,html[data-netbox-color-mode=dark] .btn-indigo-500.active,.show>html[data-netbox-color-mode=dark] .btn-indigo-500.dropdown-toggle{color:#fff;background-color:#520dc2;border-color:#4d0cb6}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-indigo-500:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-indigo-500:focus,html[data-netbox-color-mode=dark] .btn-indigo-500:active:focus,html[data-netbox-color-mode=dark] .btn-indigo-500.active:focus,.show>html[data-netbox-color-mode=dark] .btn-indigo-500.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #7d34f480}html[data-netbox-color-mode=dark] .btn-indigo-500:disabled,html[data-netbox-color-mode=dark] .btn-indigo-500.disabled{color:#fff;background-color:#6610f2;border-color:#6610f2}html[data-netbox-color-mode=dark] .btn-indigo-600{color:#fff;background-color:#520dc2;border-color:#520dc2}html[data-netbox-color-mode=dark] .btn-indigo-600:hover{color:#fff;background-color:#460ba5;border-color:#420a9b}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-indigo-600,html[data-netbox-color-mode=dark] .btn-indigo-600:focus{color:#fff;background-color:#460ba5;border-color:#420a9b;box-shadow:0 0 0 .25rem #6c31cb80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-indigo-600,.btn-check:active+html[data-netbox-color-mode=dark] .btn-indigo-600,html[data-netbox-color-mode=dark] .btn-indigo-600:active,html[data-netbox-color-mode=dark] .btn-indigo-600.active,.show>html[data-netbox-color-mode=dark] .btn-indigo-600.dropdown-toggle{color:#fff;background-color:#420a9b;border-color:#3e0a92}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-indigo-600:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-indigo-600:focus,html[data-netbox-color-mode=dark] .btn-indigo-600:active:focus,html[data-netbox-color-mode=dark] .btn-indigo-600.active:focus,.show>html[data-netbox-color-mode=dark] .btn-indigo-600.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #6c31cb80}html[data-netbox-color-mode=dark] .btn-indigo-600:disabled,html[data-netbox-color-mode=dark] .btn-indigo-600.disabled{color:#fff;background-color:#520dc2;border-color:#520dc2}html[data-netbox-color-mode=dark] .btn-indigo-700{color:#fff;background-color:#3d0a91;border-color:#3d0a91}html[data-netbox-color-mode=dark] .btn-indigo-700:hover{color:#fff;background-color:#34097b;border-color:#310874}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-indigo-700,html[data-netbox-color-mode=dark] .btn-indigo-700:focus{color:#fff;background-color:#34097b;border-color:#310874;box-shadow:0 0 0 .25rem #5a2fa280}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-indigo-700,.btn-check:active+html[data-netbox-color-mode=dark] .btn-indigo-700,html[data-netbox-color-mode=dark] .btn-indigo-700:active,html[data-netbox-color-mode=dark] .btn-indigo-700.active,.show>html[data-netbox-color-mode=dark] .btn-indigo-700.dropdown-toggle{color:#fff;background-color:#310874;border-color:#2e086d}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-indigo-700:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-indigo-700:focus,html[data-netbox-color-mode=dark] .btn-indigo-700:active:focus,html[data-netbox-color-mode=dark] .btn-indigo-700.active:focus,.show>html[data-netbox-color-mode=dark] .btn-indigo-700.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #5a2fa280}html[data-netbox-color-mode=dark] .btn-indigo-700:disabled,html[data-netbox-color-mode=dark] .btn-indigo-700.disabled{color:#fff;background-color:#3d0a91;border-color:#3d0a91}html[data-netbox-color-mode=dark] .btn-indigo-800{color:#fff;background-color:#290661;border-color:#290661}html[data-netbox-color-mode=dark] .btn-indigo-800:hover{color:#fff;background-color:#230552;border-color:#21054e}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-indigo-800,html[data-netbox-color-mode=dark] .btn-indigo-800:focus{color:#fff;background-color:#230552;border-color:#21054e;box-shadow:0 0 0 .25rem #492b7980}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-indigo-800,.btn-check:active+html[data-netbox-color-mode=dark] .btn-indigo-800,html[data-netbox-color-mode=dark] .btn-indigo-800:active,html[data-netbox-color-mode=dark] .btn-indigo-800.active,.show>html[data-netbox-color-mode=dark] .btn-indigo-800.dropdown-toggle{color:#fff;background-color:#21054e;border-color:#1f0549}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-indigo-800:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-indigo-800:focus,html[data-netbox-color-mode=dark] .btn-indigo-800:active:focus,html[data-netbox-color-mode=dark] .btn-indigo-800.active:focus,.show>html[data-netbox-color-mode=dark] .btn-indigo-800.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #492b7980}html[data-netbox-color-mode=dark] .btn-indigo-800:disabled,html[data-netbox-color-mode=dark] .btn-indigo-800.disabled{color:#fff;background-color:#290661;border-color:#290661}html[data-netbox-color-mode=dark] .btn-indigo-900{color:#fff;background-color:#140330;border-color:#140330}html[data-netbox-color-mode=dark] .btn-indigo-900:hover{color:#fff;background-color:#110329;border-color:#100226}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-indigo-900,html[data-netbox-color-mode=dark] .btn-indigo-900:focus{color:#fff;background-color:#110329;border-color:#100226;box-shadow:0 0 0 .25rem #37294f80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-indigo-900,.btn-check:active+html[data-netbox-color-mode=dark] .btn-indigo-900,html[data-netbox-color-mode=dark] .btn-indigo-900:active,html[data-netbox-color-mode=dark] .btn-indigo-900.active,.show>html[data-netbox-color-mode=dark] .btn-indigo-900.dropdown-toggle{color:#fff;background-color:#100226;border-color:#0f0224}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-indigo-900:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-indigo-900:focus,html[data-netbox-color-mode=dark] .btn-indigo-900:active:focus,html[data-netbox-color-mode=dark] .btn-indigo-900.active:focus,.show>html[data-netbox-color-mode=dark] .btn-indigo-900.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #37294f80}html[data-netbox-color-mode=dark] .btn-indigo-900:disabled,html[data-netbox-color-mode=dark] .btn-indigo-900.disabled{color:#fff;background-color:#140330;border-color:#140330}html[data-netbox-color-mode=dark] .btn-purple-100{color:#000;background-color:#e2d9f3;border-color:#e2d9f3}html[data-netbox-color-mode=dark] .btn-purple-100:hover{color:#000;background-color:#e6dff5;border-color:#e5ddf4}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-purple-100,html[data-netbox-color-mode=dark] .btn-purple-100:focus{color:#000;background-color:#e6dff5;border-color:#e5ddf4;box-shadow:0 0 0 .25rem #c0b8cf80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-purple-100,.btn-check:active+html[data-netbox-color-mode=dark] .btn-purple-100,html[data-netbox-color-mode=dark] .btn-purple-100:active,html[data-netbox-color-mode=dark] .btn-purple-100.active,.show>html[data-netbox-color-mode=dark] .btn-purple-100.dropdown-toggle{color:#000;background-color:#e8e1f5;border-color:#e5ddf4}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-purple-100:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-purple-100:focus,html[data-netbox-color-mode=dark] .btn-purple-100:active:focus,html[data-netbox-color-mode=dark] .btn-purple-100.active:focus,.show>html[data-netbox-color-mode=dark] .btn-purple-100.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #c0b8cf80}html[data-netbox-color-mode=dark] .btn-purple-100:disabled,html[data-netbox-color-mode=dark] .btn-purple-100.disabled{color:#000;background-color:#e2d9f3;border-color:#e2d9f3}html[data-netbox-color-mode=dark] .btn-purple-200{color:#000;background-color:#c5b3e6;border-color:#c5b3e6}html[data-netbox-color-mode=dark] .btn-purple-200:hover{color:#000;background-color:#cebeea;border-color:#cbbbe9}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-purple-200,html[data-netbox-color-mode=dark] .btn-purple-200:focus{color:#000;background-color:#cebeea;border-color:#cbbbe9;box-shadow:0 0 0 .25rem #a798c480}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-purple-200,.btn-check:active+html[data-netbox-color-mode=dark] .btn-purple-200,html[data-netbox-color-mode=dark] .btn-purple-200:active,html[data-netbox-color-mode=dark] .btn-purple-200.active,.show>html[data-netbox-color-mode=dark] .btn-purple-200.dropdown-toggle{color:#000;background-color:#d1c2eb;border-color:#cbbbe9}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-purple-200:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-purple-200:focus,html[data-netbox-color-mode=dark] .btn-purple-200:active:focus,html[data-netbox-color-mode=dark] .btn-purple-200.active:focus,.show>html[data-netbox-color-mode=dark] .btn-purple-200.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #a798c480}html[data-netbox-color-mode=dark] .btn-purple-200:disabled,html[data-netbox-color-mode=dark] .btn-purple-200.disabled{color:#000;background-color:#c5b3e6;border-color:#c5b3e6}html[data-netbox-color-mode=dark] .btn-purple-300{color:#000;background-color:#a98eda;border-color:#a98eda}html[data-netbox-color-mode=dark] .btn-purple-300:hover{color:#000;background-color:#b69fe0;border-color:#b299de}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-purple-300,html[data-netbox-color-mode=dark] .btn-purple-300:focus{color:#000;background-color:#b69fe0;border-color:#b299de;box-shadow:0 0 0 .25rem #9079b980}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-purple-300,.btn-check:active+html[data-netbox-color-mode=dark] .btn-purple-300,html[data-netbox-color-mode=dark] .btn-purple-300:active,html[data-netbox-color-mode=dark] .btn-purple-300.active,.show>html[data-netbox-color-mode=dark] .btn-purple-300.dropdown-toggle{color:#000;background-color:#baa5e1;border-color:#b299de}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-purple-300:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-purple-300:focus,html[data-netbox-color-mode=dark] .btn-purple-300:active:focus,html[data-netbox-color-mode=dark] .btn-purple-300.active:focus,.show>html[data-netbox-color-mode=dark] .btn-purple-300.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #9079b980}html[data-netbox-color-mode=dark] .btn-purple-300:disabled,html[data-netbox-color-mode=dark] .btn-purple-300.disabled{color:#000;background-color:#a98eda;border-color:#a98eda}html[data-netbox-color-mode=dark] .btn-purple-400{color:#000;background-color:#8c68cd;border-color:#8c68cd}html[data-netbox-color-mode=dark] .btn-purple-400:hover{color:#000;background-color:#9d7fd5;border-color:#9877d2}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-purple-400,html[data-netbox-color-mode=dark] .btn-purple-400:focus{color:#000;background-color:#9d7fd5;border-color:#9877d2;box-shadow:0 0 0 .25rem #7758ae80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-purple-400,.btn-check:active+html[data-netbox-color-mode=dark] .btn-purple-400,html[data-netbox-color-mode=dark] .btn-purple-400:active,html[data-netbox-color-mode=dark] .btn-purple-400.active,.show>html[data-netbox-color-mode=dark] .btn-purple-400.dropdown-toggle{color:#000;background-color:#a386d7;border-color:#9877d2}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-purple-400:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-purple-400:focus,html[data-netbox-color-mode=dark] .btn-purple-400:active:focus,html[data-netbox-color-mode=dark] .btn-purple-400.active:focus,.show>html[data-netbox-color-mode=dark] .btn-purple-400.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #7758ae80}html[data-netbox-color-mode=dark] .btn-purple-400:disabled,html[data-netbox-color-mode=dark] .btn-purple-400.disabled{color:#000;background-color:#8c68cd;border-color:#8c68cd}html[data-netbox-color-mode=dark] .btn-purple-500{color:#fff;background-color:#6f42c1;border-color:#6f42c1}html[data-netbox-color-mode=dark] .btn-purple-500:hover{color:#fff;background-color:#5e38a4;border-color:#59359a}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-purple-500,html[data-netbox-color-mode=dark] .btn-purple-500:focus{color:#fff;background-color:#5e38a4;border-color:#59359a;box-shadow:0 0 0 .25rem #855eca80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-purple-500,.btn-check:active+html[data-netbox-color-mode=dark] .btn-purple-500,html[data-netbox-color-mode=dark] .btn-purple-500:active,html[data-netbox-color-mode=dark] .btn-purple-500.active,.show>html[data-netbox-color-mode=dark] .btn-purple-500.dropdown-toggle{color:#fff;background-color:#59359a;border-color:#533291}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-purple-500:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-purple-500:focus,html[data-netbox-color-mode=dark] .btn-purple-500:active:focus,html[data-netbox-color-mode=dark] .btn-purple-500.active:focus,.show>html[data-netbox-color-mode=dark] .btn-purple-500.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #855eca80}html[data-netbox-color-mode=dark] .btn-purple-500:disabled,html[data-netbox-color-mode=dark] .btn-purple-500.disabled{color:#fff;background-color:#6f42c1;border-color:#6f42c1}html[data-netbox-color-mode=dark] .btn-purple-600{color:#fff;background-color:#59359a;border-color:#59359a}html[data-netbox-color-mode=dark] .btn-purple-600:hover{color:#fff;background-color:#4c2d83;border-color:#472a7b}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-purple-600,html[data-netbox-color-mode=dark] .btn-purple-600:focus{color:#fff;background-color:#4c2d83;border-color:#472a7b;box-shadow:0 0 0 .25rem #7253a980}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-purple-600,.btn-check:active+html[data-netbox-color-mode=dark] .btn-purple-600,html[data-netbox-color-mode=dark] .btn-purple-600:active,html[data-netbox-color-mode=dark] .btn-purple-600.active,.show>html[data-netbox-color-mode=dark] .btn-purple-600.dropdown-toggle{color:#fff;background-color:#472a7b;border-color:#432874}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-purple-600:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-purple-600:focus,html[data-netbox-color-mode=dark] .btn-purple-600:active:focus,html[data-netbox-color-mode=dark] .btn-purple-600.active:focus,.show>html[data-netbox-color-mode=dark] .btn-purple-600.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #7253a980}html[data-netbox-color-mode=dark] .btn-purple-600:disabled,html[data-netbox-color-mode=dark] .btn-purple-600.disabled{color:#fff;background-color:#59359a;border-color:#59359a}html[data-netbox-color-mode=dark] .btn-purple-700{color:#fff;background-color:#432874;border-color:#432874}html[data-netbox-color-mode=dark] .btn-purple-700:hover{color:#fff;background-color:#392263;border-color:#36205d}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-purple-700,html[data-netbox-color-mode=dark] .btn-purple-700:focus{color:#fff;background-color:#392263;border-color:#36205d;box-shadow:0 0 0 .25rem #5f488980}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-purple-700,.btn-check:active+html[data-netbox-color-mode=dark] .btn-purple-700,html[data-netbox-color-mode=dark] .btn-purple-700:active,html[data-netbox-color-mode=dark] .btn-purple-700.active,.show>html[data-netbox-color-mode=dark] .btn-purple-700.dropdown-toggle{color:#fff;background-color:#36205d;border-color:#321e57}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-purple-700:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-purple-700:focus,html[data-netbox-color-mode=dark] .btn-purple-700:active:focus,html[data-netbox-color-mode=dark] .btn-purple-700.active:focus,.show>html[data-netbox-color-mode=dark] .btn-purple-700.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #5f488980}html[data-netbox-color-mode=dark] .btn-purple-700:disabled,html[data-netbox-color-mode=dark] .btn-purple-700.disabled{color:#fff;background-color:#432874;border-color:#432874}html[data-netbox-color-mode=dark] .btn-purple-800{color:#fff;background-color:#2c1a4d;border-color:#2c1a4d}html[data-netbox-color-mode=dark] .btn-purple-800:hover{color:#fff;background-color:#251641;border-color:#23153e}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-purple-800,html[data-netbox-color-mode=dark] .btn-purple-800:focus{color:#fff;background-color:#251641;border-color:#23153e;box-shadow:0 0 0 .25rem #4c3c6880}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-purple-800,.btn-check:active+html[data-netbox-color-mode=dark] .btn-purple-800,html[data-netbox-color-mode=dark] .btn-purple-800:active,html[data-netbox-color-mode=dark] .btn-purple-800.active,.show>html[data-netbox-color-mode=dark] .btn-purple-800.dropdown-toggle{color:#fff;background-color:#23153e;border-color:#21143a}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-purple-800:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-purple-800:focus,html[data-netbox-color-mode=dark] .btn-purple-800:active:focus,html[data-netbox-color-mode=dark] .btn-purple-800.active:focus,.show>html[data-netbox-color-mode=dark] .btn-purple-800.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #4c3c6880}html[data-netbox-color-mode=dark] .btn-purple-800:disabled,html[data-netbox-color-mode=dark] .btn-purple-800.disabled{color:#fff;background-color:#2c1a4d;border-color:#2c1a4d}html[data-netbox-color-mode=dark] .btn-purple-900{color:#fff;background-color:#160d27;border-color:#160d27}html[data-netbox-color-mode=dark] .btn-purple-900:hover{color:#fff;background-color:#130b21;border-color:#120a1f}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-purple-900,html[data-netbox-color-mode=dark] .btn-purple-900:focus{color:#fff;background-color:#130b21;border-color:#120a1f;box-shadow:0 0 0 .25rem #39314780}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-purple-900,.btn-check:active+html[data-netbox-color-mode=dark] .btn-purple-900,html[data-netbox-color-mode=dark] .btn-purple-900:active,html[data-netbox-color-mode=dark] .btn-purple-900.active,.show>html[data-netbox-color-mode=dark] .btn-purple-900.dropdown-toggle{color:#fff;background-color:#120a1f;border-color:#110a1d}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-purple-900:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-purple-900:focus,html[data-netbox-color-mode=dark] .btn-purple-900:active:focus,html[data-netbox-color-mode=dark] .btn-purple-900.active:focus,.show>html[data-netbox-color-mode=dark] .btn-purple-900.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #39314780}html[data-netbox-color-mode=dark] .btn-purple-900:disabled,html[data-netbox-color-mode=dark] .btn-purple-900.disabled{color:#fff;background-color:#160d27;border-color:#160d27}html[data-netbox-color-mode=dark] .btn-pink-100{color:#000;background-color:#f7d6e6;border-color:#f7d6e6}html[data-netbox-color-mode=dark] .btn-pink-100:hover{color:#000;background-color:#f8dcea;border-color:#f8dae9}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-pink-100,html[data-netbox-color-mode=dark] .btn-pink-100:focus{color:#000;background-color:#f8dcea;border-color:#f8dae9;box-shadow:0 0 0 .25rem #d2b6c480}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-pink-100,.btn-check:active+html[data-netbox-color-mode=dark] .btn-pink-100,html[data-netbox-color-mode=dark] .btn-pink-100:active,html[data-netbox-color-mode=dark] .btn-pink-100.active,.show>html[data-netbox-color-mode=dark] .btn-pink-100.dropdown-toggle{color:#000;background-color:#f9deeb;border-color:#f8dae9}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-pink-100:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-pink-100:focus,html[data-netbox-color-mode=dark] .btn-pink-100:active:focus,html[data-netbox-color-mode=dark] .btn-pink-100.active:focus,.show>html[data-netbox-color-mode=dark] .btn-pink-100.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #d2b6c480}html[data-netbox-color-mode=dark] .btn-pink-100:disabled,html[data-netbox-color-mode=dark] .btn-pink-100.disabled{color:#000;background-color:#f7d6e6;border-color:#f7d6e6}html[data-netbox-color-mode=dark] .btn-pink-200{color:#000;background-color:#efadce;border-color:#efadce}html[data-netbox-color-mode=dark] .btn-pink-200:hover{color:#000;background-color:#f1b9d5;border-color:#f1b5d3}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-pink-200,html[data-netbox-color-mode=dark] .btn-pink-200:focus{color:#000;background-color:#f1b9d5;border-color:#f1b5d3;box-shadow:0 0 0 .25rem #cb93af80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-pink-200,.btn-check:active+html[data-netbox-color-mode=dark] .btn-pink-200,html[data-netbox-color-mode=dark] .btn-pink-200:active,html[data-netbox-color-mode=dark] .btn-pink-200.active,.show>html[data-netbox-color-mode=dark] .btn-pink-200.dropdown-toggle{color:#000;background-color:#f2bdd8;border-color:#f1b5d3}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-pink-200:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-pink-200:focus,html[data-netbox-color-mode=dark] .btn-pink-200:active:focus,html[data-netbox-color-mode=dark] .btn-pink-200.active:focus,.show>html[data-netbox-color-mode=dark] .btn-pink-200.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #cb93af80}html[data-netbox-color-mode=dark] .btn-pink-200:disabled,html[data-netbox-color-mode=dark] .btn-pink-200.disabled{color:#000;background-color:#efadce;border-color:#efadce}html[data-netbox-color-mode=dark] .btn-pink-300{color:#000;background-color:#e685b5;border-color:#e685b5}html[data-netbox-color-mode=dark] .btn-pink-300:hover{color:#000;background-color:#ea97c0;border-color:#e991bc}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-pink-300,html[data-netbox-color-mode=dark] .btn-pink-300:focus{color:#000;background-color:#ea97c0;border-color:#e991bc;box-shadow:0 0 0 .25rem #c4719a80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-pink-300,.btn-check:active+html[data-netbox-color-mode=dark] .btn-pink-300,html[data-netbox-color-mode=dark] .btn-pink-300:active,html[data-netbox-color-mode=dark] .btn-pink-300.active,.show>html[data-netbox-color-mode=dark] .btn-pink-300.dropdown-toggle{color:#000;background-color:#eb9dc4;border-color:#e991bc}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-pink-300:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-pink-300:focus,html[data-netbox-color-mode=dark] .btn-pink-300:active:focus,html[data-netbox-color-mode=dark] .btn-pink-300.active:focus,.show>html[data-netbox-color-mode=dark] .btn-pink-300.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #c4719a80}html[data-netbox-color-mode=dark] .btn-pink-300:disabled,html[data-netbox-color-mode=dark] .btn-pink-300.disabled{color:#000;background-color:#e685b5;border-color:#e685b5}html[data-netbox-color-mode=dark] .btn-pink-400{color:#000;background-color:#de5c9d;border-color:#de5c9d}html[data-netbox-color-mode=dark] .btn-pink-400:hover{color:#000;background-color:#e374ac;border-color:#e16ca7}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-pink-400,html[data-netbox-color-mode=dark] .btn-pink-400:focus{color:#000;background-color:#e374ac;border-color:#e16ca7;box-shadow:0 0 0 .25rem #bd4e8580}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-pink-400,.btn-check:active+html[data-netbox-color-mode=dark] .btn-pink-400,html[data-netbox-color-mode=dark] .btn-pink-400:active,html[data-netbox-color-mode=dark] .btn-pink-400.active,.show>html[data-netbox-color-mode=dark] .btn-pink-400.dropdown-toggle{color:#000;background-color:#e57db1;border-color:#e16ca7}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-pink-400:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-pink-400:focus,html[data-netbox-color-mode=dark] .btn-pink-400:active:focus,html[data-netbox-color-mode=dark] .btn-pink-400.active:focus,.show>html[data-netbox-color-mode=dark] .btn-pink-400.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #bd4e8580}html[data-netbox-color-mode=dark] .btn-pink-400:disabled,html[data-netbox-color-mode=dark] .btn-pink-400.disabled{color:#000;background-color:#de5c9d;border-color:#de5c9d}html[data-netbox-color-mode=dark] .btn-pink-500{color:#fff;background-color:#d63384;border-color:#d63384}html[data-netbox-color-mode=dark] .btn-pink-500:hover{color:#fff;background-color:#b62b70;border-color:#ab296a}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-pink-500,html[data-netbox-color-mode=dark] .btn-pink-500:focus{color:#fff;background-color:#b62b70;border-color:#ab296a;box-shadow:0 0 0 .25rem #dc529680}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-pink-500,.btn-check:active+html[data-netbox-color-mode=dark] .btn-pink-500,html[data-netbox-color-mode=dark] .btn-pink-500:active,html[data-netbox-color-mode=dark] .btn-pink-500.active,.show>html[data-netbox-color-mode=dark] .btn-pink-500.dropdown-toggle{color:#fff;background-color:#ab296a;border-color:#a12663}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-pink-500:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-pink-500:focus,html[data-netbox-color-mode=dark] .btn-pink-500:active:focus,html[data-netbox-color-mode=dark] .btn-pink-500.active:focus,.show>html[data-netbox-color-mode=dark] .btn-pink-500.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #dc529680}html[data-netbox-color-mode=dark] .btn-pink-500:disabled,html[data-netbox-color-mode=dark] .btn-pink-500.disabled{color:#fff;background-color:#d63384;border-color:#d63384}html[data-netbox-color-mode=dark] .btn-pink-600{color:#fff;background-color:#ab296a;border-color:#ab296a}html[data-netbox-color-mode=dark] .btn-pink-600:hover{color:#fff;background-color:#91235a;border-color:#892155}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-pink-600,html[data-netbox-color-mode=dark] .btn-pink-600:focus{color:#fff;background-color:#91235a;border-color:#892155;box-shadow:0 0 0 .25rem #b8498080}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-pink-600,.btn-check:active+html[data-netbox-color-mode=dark] .btn-pink-600,html[data-netbox-color-mode=dark] .btn-pink-600:active,html[data-netbox-color-mode=dark] .btn-pink-600.active,.show>html[data-netbox-color-mode=dark] .btn-pink-600.dropdown-toggle{color:#fff;background-color:#892155;border-color:#801f50}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-pink-600:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-pink-600:focus,html[data-netbox-color-mode=dark] .btn-pink-600:active:focus,html[data-netbox-color-mode=dark] .btn-pink-600.active:focus,.show>html[data-netbox-color-mode=dark] .btn-pink-600.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #b8498080}html[data-netbox-color-mode=dark] .btn-pink-600:disabled,html[data-netbox-color-mode=dark] .btn-pink-600.disabled{color:#fff;background-color:#ab296a;border-color:#ab296a}html[data-netbox-color-mode=dark] .btn-pink-700{color:#fff;background-color:#801f4f;border-color:#801f4f}html[data-netbox-color-mode=dark] .btn-pink-700:hover{color:#fff;background-color:#6d1a43;border-color:#66193f}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-pink-700,html[data-netbox-color-mode=dark] .btn-pink-700:focus{color:#fff;background-color:#6d1a43;border-color:#66193f;box-shadow:0 0 0 .25rem #93416980}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-pink-700,.btn-check:active+html[data-netbox-color-mode=dark] .btn-pink-700,html[data-netbox-color-mode=dark] .btn-pink-700:active,html[data-netbox-color-mode=dark] .btn-pink-700.active,.show>html[data-netbox-color-mode=dark] .btn-pink-700.dropdown-toggle{color:#fff;background-color:#66193f;border-color:#60173b}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-pink-700:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-pink-700:focus,html[data-netbox-color-mode=dark] .btn-pink-700:active:focus,html[data-netbox-color-mode=dark] .btn-pink-700.active:focus,.show>html[data-netbox-color-mode=dark] .btn-pink-700.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #93416980}html[data-netbox-color-mode=dark] .btn-pink-700:disabled,html[data-netbox-color-mode=dark] .btn-pink-700.disabled{color:#fff;background-color:#801f4f;border-color:#801f4f}html[data-netbox-color-mode=dark] .btn-pink-800{color:#fff;background-color:#561435;border-color:#561435}html[data-netbox-color-mode=dark] .btn-pink-800:hover{color:#fff;background-color:#49112d;border-color:#45102a}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-pink-800,html[data-netbox-color-mode=dark] .btn-pink-800:focus{color:#fff;background-color:#49112d;border-color:#45102a;box-shadow:0 0 0 .25rem #6f375380}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-pink-800,.btn-check:active+html[data-netbox-color-mode=dark] .btn-pink-800,html[data-netbox-color-mode=dark] .btn-pink-800:active,html[data-netbox-color-mode=dark] .btn-pink-800.active,.show>html[data-netbox-color-mode=dark] .btn-pink-800.dropdown-toggle{color:#fff;background-color:#45102a;border-color:#410f28}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-pink-800:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-pink-800:focus,html[data-netbox-color-mode=dark] .btn-pink-800:active:focus,html[data-netbox-color-mode=dark] .btn-pink-800.active:focus,.show>html[data-netbox-color-mode=dark] .btn-pink-800.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #6f375380}html[data-netbox-color-mode=dark] .btn-pink-800:disabled,html[data-netbox-color-mode=dark] .btn-pink-800.disabled{color:#fff;background-color:#561435;border-color:#561435}html[data-netbox-color-mode=dark] .btn-pink-900{color:#fff;background-color:#2b0a1a;border-color:#2b0a1a}html[data-netbox-color-mode=dark] .btn-pink-900:hover{color:#fff;background-color:#250916;border-color:#220815}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-pink-900,html[data-netbox-color-mode=dark] .btn-pink-900:focus{color:#fff;background-color:#250916;border-color:#220815;box-shadow:0 0 0 .25rem #4b2f3c80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-pink-900,.btn-check:active+html[data-netbox-color-mode=dark] .btn-pink-900,html[data-netbox-color-mode=dark] .btn-pink-900:active,html[data-netbox-color-mode=dark] .btn-pink-900.active,.show>html[data-netbox-color-mode=dark] .btn-pink-900.dropdown-toggle{color:#fff;background-color:#220815;border-color:#200814}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-pink-900:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-pink-900:focus,html[data-netbox-color-mode=dark] .btn-pink-900:active:focus,html[data-netbox-color-mode=dark] .btn-pink-900.active:focus,.show>html[data-netbox-color-mode=dark] .btn-pink-900.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #4b2f3c80}html[data-netbox-color-mode=dark] .btn-pink-900:disabled,html[data-netbox-color-mode=dark] .btn-pink-900.disabled{color:#fff;background-color:#2b0a1a;border-color:#2b0a1a}html[data-netbox-color-mode=dark] .btn-outline-primary{color:#6ea8fe;border-color:#6ea8fe}html[data-netbox-color-mode=dark] .btn-outline-primary:hover{color:#000;background-color:#6ea8fe;border-color:#6ea8fe}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-primary,html[data-netbox-color-mode=dark] .btn-outline-primary:focus{box-shadow:0 0 0 .25rem #6ea8fe80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-primary,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-primary,html[data-netbox-color-mode=dark] .btn-outline-primary:active,html[data-netbox-color-mode=dark] .btn-outline-primary.active,html[data-netbox-color-mode=dark] .btn-outline-primary.dropdown-toggle.show{color:#000;background-color:#6ea8fe;border-color:#6ea8fe}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-primary:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-primary:focus,html[data-netbox-color-mode=dark] .btn-outline-primary:active:focus,html[data-netbox-color-mode=dark] .btn-outline-primary.active:focus,html[data-netbox-color-mode=dark] .btn-outline-primary.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #6ea8fe80}html[data-netbox-color-mode=dark] .btn-outline-primary:disabled,html[data-netbox-color-mode=dark] .btn-outline-primary.disabled{color:#6ea8fe;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-secondary{color:#adb5bd;border-color:#adb5bd}html[data-netbox-color-mode=dark] .btn-outline-secondary:hover{color:#000;background-color:#adb5bd;border-color:#adb5bd}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-secondary,html[data-netbox-color-mode=dark] .btn-outline-secondary:focus{box-shadow:0 0 0 .25rem #adb5bd80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-secondary,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-secondary,html[data-netbox-color-mode=dark] .btn-outline-secondary:active,html[data-netbox-color-mode=dark] .btn-outline-secondary.active,html[data-netbox-color-mode=dark] .btn-outline-secondary.dropdown-toggle.show{color:#000;background-color:#adb5bd;border-color:#adb5bd}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-secondary:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-secondary:focus,html[data-netbox-color-mode=dark] .btn-outline-secondary:active:focus,html[data-netbox-color-mode=dark] .btn-outline-secondary.active:focus,html[data-netbox-color-mode=dark] .btn-outline-secondary.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #adb5bd80}html[data-netbox-color-mode=dark] .btn-outline-secondary:disabled,html[data-netbox-color-mode=dark] .btn-outline-secondary.disabled{color:#adb5bd;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-success{color:#75b798;border-color:#75b798}html[data-netbox-color-mode=dark] .btn-outline-success:hover{color:#000;background-color:#75b798;border-color:#75b798}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-success,html[data-netbox-color-mode=dark] .btn-outline-success:focus{box-shadow:0 0 0 .25rem #75b79880}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-success,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-success,html[data-netbox-color-mode=dark] .btn-outline-success:active,html[data-netbox-color-mode=dark] .btn-outline-success.active,html[data-netbox-color-mode=dark] .btn-outline-success.dropdown-toggle.show{color:#000;background-color:#75b798;border-color:#75b798}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-success:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-success:focus,html[data-netbox-color-mode=dark] .btn-outline-success:active:focus,html[data-netbox-color-mode=dark] .btn-outline-success.active:focus,html[data-netbox-color-mode=dark] .btn-outline-success.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #75b79880}html[data-netbox-color-mode=dark] .btn-outline-success:disabled,html[data-netbox-color-mode=dark] .btn-outline-success.disabled{color:#75b798;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-info{color:#6edff6;border-color:#6edff6}html[data-netbox-color-mode=dark] .btn-outline-info:hover{color:#000;background-color:#6edff6;border-color:#6edff6}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-info,html[data-netbox-color-mode=dark] .btn-outline-info:focus{box-shadow:0 0 0 .25rem #6edff680}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-info,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-info,html[data-netbox-color-mode=dark] .btn-outline-info:active,html[data-netbox-color-mode=dark] .btn-outline-info.active,html[data-netbox-color-mode=dark] .btn-outline-info.dropdown-toggle.show{color:#000;background-color:#6edff6;border-color:#6edff6}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-info:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-info:focus,html[data-netbox-color-mode=dark] .btn-outline-info:active:focus,html[data-netbox-color-mode=dark] .btn-outline-info.active:focus,html[data-netbox-color-mode=dark] .btn-outline-info.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #6edff680}html[data-netbox-color-mode=dark] .btn-outline-info:disabled,html[data-netbox-color-mode=dark] .btn-outline-info.disabled{color:#6edff6;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-warning{color:#ffda6a;border-color:#ffda6a}html[data-netbox-color-mode=dark] .btn-outline-warning:hover{color:#000;background-color:#ffda6a;border-color:#ffda6a}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-warning,html[data-netbox-color-mode=dark] .btn-outline-warning:focus{box-shadow:0 0 0 .25rem #ffda6a80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-warning,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-warning,html[data-netbox-color-mode=dark] .btn-outline-warning:active,html[data-netbox-color-mode=dark] .btn-outline-warning.active,html[data-netbox-color-mode=dark] .btn-outline-warning.dropdown-toggle.show{color:#000;background-color:#ffda6a;border-color:#ffda6a}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-warning:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-warning:focus,html[data-netbox-color-mode=dark] .btn-outline-warning:active:focus,html[data-netbox-color-mode=dark] .btn-outline-warning.active:focus,html[data-netbox-color-mode=dark] .btn-outline-warning.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #ffda6a80}html[data-netbox-color-mode=dark] .btn-outline-warning:disabled,html[data-netbox-color-mode=dark] .btn-outline-warning.disabled{color:#ffda6a;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-danger{color:#ea868f;border-color:#ea868f}html[data-netbox-color-mode=dark] .btn-outline-danger:hover{color:#000;background-color:#ea868f;border-color:#ea868f}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-danger,html[data-netbox-color-mode=dark] .btn-outline-danger:focus{box-shadow:0 0 0 .25rem #ea868f80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-danger,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-danger,html[data-netbox-color-mode=dark] .btn-outline-danger:active,html[data-netbox-color-mode=dark] .btn-outline-danger.active,html[data-netbox-color-mode=dark] .btn-outline-danger.dropdown-toggle.show{color:#000;background-color:#ea868f;border-color:#ea868f}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-danger:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-danger:focus,html[data-netbox-color-mode=dark] .btn-outline-danger:active:focus,html[data-netbox-color-mode=dark] .btn-outline-danger.active:focus,html[data-netbox-color-mode=dark] .btn-outline-danger.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #ea868f80}html[data-netbox-color-mode=dark] .btn-outline-danger:disabled,html[data-netbox-color-mode=dark] .btn-outline-danger.disabled{color:#ea868f;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-light{color:#dee2e6;border-color:#dee2e6}html[data-netbox-color-mode=dark] .btn-outline-light:hover{color:#000;background-color:#dee2e6;border-color:#dee2e6}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-light,html[data-netbox-color-mode=dark] .btn-outline-light:focus{box-shadow:0 0 0 .25rem #dee2e680}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-light,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-light,html[data-netbox-color-mode=dark] .btn-outline-light:active,html[data-netbox-color-mode=dark] .btn-outline-light.active,html[data-netbox-color-mode=dark] .btn-outline-light.dropdown-toggle.show{color:#000;background-color:#dee2e6;border-color:#dee2e6}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-light:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-light:focus,html[data-netbox-color-mode=dark] .btn-outline-light:active:focus,html[data-netbox-color-mode=dark] .btn-outline-light.active:focus,html[data-netbox-color-mode=dark] .btn-outline-light.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #dee2e680}html[data-netbox-color-mode=dark] .btn-outline-light:disabled,html[data-netbox-color-mode=dark] .btn-outline-light.disabled{color:#dee2e6;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-dark{color:#adb5bd;border-color:#adb5bd}html[data-netbox-color-mode=dark] .btn-outline-dark:hover{color:#000;background-color:#adb5bd;border-color:#adb5bd}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-dark,html[data-netbox-color-mode=dark] .btn-outline-dark:focus{box-shadow:0 0 0 .25rem #adb5bd80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-dark,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-dark,html[data-netbox-color-mode=dark] .btn-outline-dark:active,html[data-netbox-color-mode=dark] .btn-outline-dark.active,html[data-netbox-color-mode=dark] .btn-outline-dark.dropdown-toggle.show{color:#000;background-color:#adb5bd;border-color:#adb5bd}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-dark:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-dark:focus,html[data-netbox-color-mode=dark] .btn-outline-dark:active:focus,html[data-netbox-color-mode=dark] .btn-outline-dark.active:focus,html[data-netbox-color-mode=dark] .btn-outline-dark.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #adb5bd80}html[data-netbox-color-mode=dark] .btn-outline-dark:disabled,html[data-netbox-color-mode=dark] .btn-outline-dark.disabled{color:#adb5bd;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-red{color:#ea868f;border-color:#ea868f}html[data-netbox-color-mode=dark] .btn-outline-red:hover{color:#000;background-color:#ea868f;border-color:#ea868f}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-red,html[data-netbox-color-mode=dark] .btn-outline-red:focus{box-shadow:0 0 0 .25rem #ea868f80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-red,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-red,html[data-netbox-color-mode=dark] .btn-outline-red:active,html[data-netbox-color-mode=dark] .btn-outline-red.active,html[data-netbox-color-mode=dark] .btn-outline-red.dropdown-toggle.show{color:#000;background-color:#ea868f;border-color:#ea868f}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-red:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-red:focus,html[data-netbox-color-mode=dark] .btn-outline-red:active:focus,html[data-netbox-color-mode=dark] .btn-outline-red.active:focus,html[data-netbox-color-mode=dark] .btn-outline-red.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #ea868f80}html[data-netbox-color-mode=dark] .btn-outline-red:disabled,html[data-netbox-color-mode=dark] .btn-outline-red.disabled{color:#ea868f;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-yellow{color:#ffda6a;border-color:#ffda6a}html[data-netbox-color-mode=dark] .btn-outline-yellow:hover{color:#000;background-color:#ffda6a;border-color:#ffda6a}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-yellow,html[data-netbox-color-mode=dark] .btn-outline-yellow:focus{box-shadow:0 0 0 .25rem #ffda6a80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-yellow,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-yellow,html[data-netbox-color-mode=dark] .btn-outline-yellow:active,html[data-netbox-color-mode=dark] .btn-outline-yellow.active,html[data-netbox-color-mode=dark] .btn-outline-yellow.dropdown-toggle.show{color:#000;background-color:#ffda6a;border-color:#ffda6a}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-yellow:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-yellow:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow:active:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow.active:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #ffda6a80}html[data-netbox-color-mode=dark] .btn-outline-yellow:disabled,html[data-netbox-color-mode=dark] .btn-outline-yellow.disabled{color:#ffda6a;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-green{color:#75b798;border-color:#75b798}html[data-netbox-color-mode=dark] .btn-outline-green:hover{color:#000;background-color:#75b798;border-color:#75b798}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-green,html[data-netbox-color-mode=dark] .btn-outline-green:focus{box-shadow:0 0 0 .25rem #75b79880}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-green,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-green,html[data-netbox-color-mode=dark] .btn-outline-green:active,html[data-netbox-color-mode=dark] .btn-outline-green.active,html[data-netbox-color-mode=dark] .btn-outline-green.dropdown-toggle.show{color:#000;background-color:#75b798;border-color:#75b798}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-green:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-green:focus,html[data-netbox-color-mode=dark] .btn-outline-green:active:focus,html[data-netbox-color-mode=dark] .btn-outline-green.active:focus,html[data-netbox-color-mode=dark] .btn-outline-green.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #75b79880}html[data-netbox-color-mode=dark] .btn-outline-green:disabled,html[data-netbox-color-mode=dark] .btn-outline-green.disabled{color:#75b798;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-blue{color:#6ea8fe;border-color:#6ea8fe}html[data-netbox-color-mode=dark] .btn-outline-blue:hover{color:#000;background-color:#6ea8fe;border-color:#6ea8fe}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-blue,html[data-netbox-color-mode=dark] .btn-outline-blue:focus{box-shadow:0 0 0 .25rem #6ea8fe80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-blue,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-blue,html[data-netbox-color-mode=dark] .btn-outline-blue:active,html[data-netbox-color-mode=dark] .btn-outline-blue.active,html[data-netbox-color-mode=dark] .btn-outline-blue.dropdown-toggle.show{color:#000;background-color:#6ea8fe;border-color:#6ea8fe}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-blue:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-blue:focus,html[data-netbox-color-mode=dark] .btn-outline-blue:active:focus,html[data-netbox-color-mode=dark] .btn-outline-blue.active:focus,html[data-netbox-color-mode=dark] .btn-outline-blue.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #6ea8fe80}html[data-netbox-color-mode=dark] .btn-outline-blue:disabled,html[data-netbox-color-mode=dark] .btn-outline-blue.disabled{color:#6ea8fe;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-cyan{color:#6edff6;border-color:#6edff6}html[data-netbox-color-mode=dark] .btn-outline-cyan:hover{color:#000;background-color:#6edff6;border-color:#6edff6}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-cyan,html[data-netbox-color-mode=dark] .btn-outline-cyan:focus{box-shadow:0 0 0 .25rem #6edff680}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-cyan,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-cyan,html[data-netbox-color-mode=dark] .btn-outline-cyan:active,html[data-netbox-color-mode=dark] .btn-outline-cyan.active,html[data-netbox-color-mode=dark] .btn-outline-cyan.dropdown-toggle.show{color:#000;background-color:#6edff6;border-color:#6edff6}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-cyan:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-cyan:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan:active:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan.active:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #6edff680}html[data-netbox-color-mode=dark] .btn-outline-cyan:disabled,html[data-netbox-color-mode=dark] .btn-outline-cyan.disabled{color:#6edff6;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-indigo{color:#a370f7;border-color:#a370f7}html[data-netbox-color-mode=dark] .btn-outline-indigo:hover{color:#000;background-color:#a370f7;border-color:#a370f7}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-indigo,html[data-netbox-color-mode=dark] .btn-outline-indigo:focus{box-shadow:0 0 0 .25rem #a370f780}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-indigo,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-indigo,html[data-netbox-color-mode=dark] .btn-outline-indigo:active,html[data-netbox-color-mode=dark] .btn-outline-indigo.active,html[data-netbox-color-mode=dark] .btn-outline-indigo.dropdown-toggle.show{color:#000;background-color:#a370f7;border-color:#a370f7}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-indigo:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-indigo:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo:active:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo.active:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #a370f780}html[data-netbox-color-mode=dark] .btn-outline-indigo:disabled,html[data-netbox-color-mode=dark] .btn-outline-indigo.disabled{color:#a370f7;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-purple{color:#a98eda;border-color:#a98eda}html[data-netbox-color-mode=dark] .btn-outline-purple:hover{color:#000;background-color:#a98eda;border-color:#a98eda}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-purple,html[data-netbox-color-mode=dark] .btn-outline-purple:focus{box-shadow:0 0 0 .25rem #a98eda80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-purple,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-purple,html[data-netbox-color-mode=dark] .btn-outline-purple:active,html[data-netbox-color-mode=dark] .btn-outline-purple.active,html[data-netbox-color-mode=dark] .btn-outline-purple.dropdown-toggle.show{color:#000;background-color:#a98eda;border-color:#a98eda}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-purple:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-purple:focus,html[data-netbox-color-mode=dark] .btn-outline-purple:active:focus,html[data-netbox-color-mode=dark] .btn-outline-purple.active:focus,html[data-netbox-color-mode=dark] .btn-outline-purple.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #a98eda80}html[data-netbox-color-mode=dark] .btn-outline-purple:disabled,html[data-netbox-color-mode=dark] .btn-outline-purple.disabled{color:#a98eda;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-pink{color:#e685b5;border-color:#e685b5}html[data-netbox-color-mode=dark] .btn-outline-pink:hover{color:#000;background-color:#e685b5;border-color:#e685b5}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-pink,html[data-netbox-color-mode=dark] .btn-outline-pink:focus{box-shadow:0 0 0 .25rem #e685b580}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-pink,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-pink,html[data-netbox-color-mode=dark] .btn-outline-pink:active,html[data-netbox-color-mode=dark] .btn-outline-pink.active,html[data-netbox-color-mode=dark] .btn-outline-pink.dropdown-toggle.show{color:#000;background-color:#e685b5;border-color:#e685b5}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-pink:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-pink:focus,html[data-netbox-color-mode=dark] .btn-outline-pink:active:focus,html[data-netbox-color-mode=dark] .btn-outline-pink.active:focus,html[data-netbox-color-mode=dark] .btn-outline-pink.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #e685b580}html[data-netbox-color-mode=dark] .btn-outline-pink:disabled,html[data-netbox-color-mode=dark] .btn-outline-pink.disabled{color:#e685b5;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-darker{color:#1b1f22;border-color:#1b1f22}html[data-netbox-color-mode=dark] .btn-outline-darker:hover{color:#fff;background-color:#1b1f22;border-color:#1b1f22}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-darker,html[data-netbox-color-mode=dark] .btn-outline-darker:focus{box-shadow:0 0 0 .25rem #1b1f2280}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-darker,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-darker,html[data-netbox-color-mode=dark] .btn-outline-darker:active,html[data-netbox-color-mode=dark] .btn-outline-darker.active,html[data-netbox-color-mode=dark] .btn-outline-darker.dropdown-toggle.show{color:#fff;background-color:#1b1f22;border-color:#1b1f22}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-darker:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-darker:focus,html[data-netbox-color-mode=dark] .btn-outline-darker:active:focus,html[data-netbox-color-mode=dark] .btn-outline-darker.active:focus,html[data-netbox-color-mode=dark] .btn-outline-darker.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #1b1f2280}html[data-netbox-color-mode=dark] .btn-outline-darker:disabled,html[data-netbox-color-mode=dark] .btn-outline-darker.disabled{color:#1b1f22;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-darkest{color:#171b1d;border-color:#171b1d}html[data-netbox-color-mode=dark] .btn-outline-darkest:hover{color:#fff;background-color:#171b1d;border-color:#171b1d}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-darkest,html[data-netbox-color-mode=dark] .btn-outline-darkest:focus{box-shadow:0 0 0 .25rem #171b1d80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-darkest,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-darkest,html[data-netbox-color-mode=dark] .btn-outline-darkest:active,html[data-netbox-color-mode=dark] .btn-outline-darkest.active,html[data-netbox-color-mode=dark] .btn-outline-darkest.dropdown-toggle.show{color:#fff;background-color:#171b1d;border-color:#171b1d}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-darkest:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-darkest:focus,html[data-netbox-color-mode=dark] .btn-outline-darkest:active:focus,html[data-netbox-color-mode=dark] .btn-outline-darkest.active:focus,html[data-netbox-color-mode=dark] .btn-outline-darkest.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #171b1d80}html[data-netbox-color-mode=dark] .btn-outline-darkest:disabled,html[data-netbox-color-mode=dark] .btn-outline-darkest.disabled{color:#171b1d;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-gray{color:#ced4da;border-color:#ced4da}html[data-netbox-color-mode=dark] .btn-outline-gray:hover{color:#000;background-color:#ced4da;border-color:#ced4da}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-gray,html[data-netbox-color-mode=dark] .btn-outline-gray:focus{box-shadow:0 0 0 .25rem #ced4da80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-gray,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-gray,html[data-netbox-color-mode=dark] .btn-outline-gray:active,html[data-netbox-color-mode=dark] .btn-outline-gray.active,html[data-netbox-color-mode=dark] .btn-outline-gray.dropdown-toggle.show{color:#000;background-color:#ced4da;border-color:#ced4da}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-gray:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-gray:focus,html[data-netbox-color-mode=dark] .btn-outline-gray:active:focus,html[data-netbox-color-mode=dark] .btn-outline-gray.active:focus,html[data-netbox-color-mode=dark] .btn-outline-gray.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #ced4da80}html[data-netbox-color-mode=dark] .btn-outline-gray:disabled,html[data-netbox-color-mode=dark] .btn-outline-gray.disabled{color:#ced4da;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-gray-100{color:#f8f9fa;border-color:#f8f9fa}html[data-netbox-color-mode=dark] .btn-outline-gray-100:hover{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-gray-100,html[data-netbox-color-mode=dark] .btn-outline-gray-100:focus{box-shadow:0 0 0 .25rem #f8f9fa80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-gray-100,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-gray-100,html[data-netbox-color-mode=dark] .btn-outline-gray-100:active,html[data-netbox-color-mode=dark] .btn-outline-gray-100.active,html[data-netbox-color-mode=dark] .btn-outline-gray-100.dropdown-toggle.show{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-gray-100:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-gray-100:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-100:active:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-100.active:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-100.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #f8f9fa80}html[data-netbox-color-mode=dark] .btn-outline-gray-100:disabled,html[data-netbox-color-mode=dark] .btn-outline-gray-100.disabled{color:#f8f9fa;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-gray-200{color:#e9ecef;border-color:#e9ecef}html[data-netbox-color-mode=dark] .btn-outline-gray-200:hover{color:#000;background-color:#e9ecef;border-color:#e9ecef}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-gray-200,html[data-netbox-color-mode=dark] .btn-outline-gray-200:focus{box-shadow:0 0 0 .25rem #e9ecef80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-gray-200,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-gray-200,html[data-netbox-color-mode=dark] .btn-outline-gray-200:active,html[data-netbox-color-mode=dark] .btn-outline-gray-200.active,html[data-netbox-color-mode=dark] .btn-outline-gray-200.dropdown-toggle.show{color:#000;background-color:#e9ecef;border-color:#e9ecef}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-gray-200:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-gray-200:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-200:active:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-200.active:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-200.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #e9ecef80}html[data-netbox-color-mode=dark] .btn-outline-gray-200:disabled,html[data-netbox-color-mode=dark] .btn-outline-gray-200.disabled{color:#e9ecef;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-gray-300{color:#dee2e6;border-color:#dee2e6}html[data-netbox-color-mode=dark] .btn-outline-gray-300:hover{color:#000;background-color:#dee2e6;border-color:#dee2e6}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-gray-300,html[data-netbox-color-mode=dark] .btn-outline-gray-300:focus{box-shadow:0 0 0 .25rem #dee2e680}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-gray-300,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-gray-300,html[data-netbox-color-mode=dark] .btn-outline-gray-300:active,html[data-netbox-color-mode=dark] .btn-outline-gray-300.active,html[data-netbox-color-mode=dark] .btn-outline-gray-300.dropdown-toggle.show{color:#000;background-color:#dee2e6;border-color:#dee2e6}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-gray-300:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-gray-300:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-300:active:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-300.active:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-300.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #dee2e680}html[data-netbox-color-mode=dark] .btn-outline-gray-300:disabled,html[data-netbox-color-mode=dark] .btn-outline-gray-300.disabled{color:#dee2e6;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-gray-400{color:#ced4da;border-color:#ced4da}html[data-netbox-color-mode=dark] .btn-outline-gray-400:hover{color:#000;background-color:#ced4da;border-color:#ced4da}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-gray-400,html[data-netbox-color-mode=dark] .btn-outline-gray-400:focus{box-shadow:0 0 0 .25rem #ced4da80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-gray-400,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-gray-400,html[data-netbox-color-mode=dark] .btn-outline-gray-400:active,html[data-netbox-color-mode=dark] .btn-outline-gray-400.active,html[data-netbox-color-mode=dark] .btn-outline-gray-400.dropdown-toggle.show{color:#000;background-color:#ced4da;border-color:#ced4da}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-gray-400:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-gray-400:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-400:active:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-400.active:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-400.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #ced4da80}html[data-netbox-color-mode=dark] .btn-outline-gray-400:disabled,html[data-netbox-color-mode=dark] .btn-outline-gray-400.disabled{color:#ced4da;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-gray-500{color:#adb5bd;border-color:#adb5bd}html[data-netbox-color-mode=dark] .btn-outline-gray-500:hover{color:#000;background-color:#adb5bd;border-color:#adb5bd}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-gray-500,html[data-netbox-color-mode=dark] .btn-outline-gray-500:focus{box-shadow:0 0 0 .25rem #adb5bd80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-gray-500,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-gray-500,html[data-netbox-color-mode=dark] .btn-outline-gray-500:active,html[data-netbox-color-mode=dark] .btn-outline-gray-500.active,html[data-netbox-color-mode=dark] .btn-outline-gray-500.dropdown-toggle.show{color:#000;background-color:#adb5bd;border-color:#adb5bd}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-gray-500:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-gray-500:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-500:active:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-500.active:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-500.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #adb5bd80}html[data-netbox-color-mode=dark] .btn-outline-gray-500:disabled,html[data-netbox-color-mode=dark] .btn-outline-gray-500.disabled{color:#adb5bd;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-gray-600{color:#6c757d;border-color:#6c757d}html[data-netbox-color-mode=dark] .btn-outline-gray-600:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-gray-600,html[data-netbox-color-mode=dark] .btn-outline-gray-600:focus{box-shadow:0 0 0 .25rem #6c757d80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-gray-600,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-gray-600,html[data-netbox-color-mode=dark] .btn-outline-gray-600:active,html[data-netbox-color-mode=dark] .btn-outline-gray-600.active,html[data-netbox-color-mode=dark] .btn-outline-gray-600.dropdown-toggle.show{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-gray-600:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-gray-600:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-600:active:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-600.active:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-600.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #6c757d80}html[data-netbox-color-mode=dark] .btn-outline-gray-600:disabled,html[data-netbox-color-mode=dark] .btn-outline-gray-600.disabled{color:#6c757d;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-gray-700{color:#495057;border-color:#495057}html[data-netbox-color-mode=dark] .btn-outline-gray-700:hover{color:#fff;background-color:#495057;border-color:#495057}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-gray-700,html[data-netbox-color-mode=dark] .btn-outline-gray-700:focus{box-shadow:0 0 0 .25rem #49505780}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-gray-700,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-gray-700,html[data-netbox-color-mode=dark] .btn-outline-gray-700:active,html[data-netbox-color-mode=dark] .btn-outline-gray-700.active,html[data-netbox-color-mode=dark] .btn-outline-gray-700.dropdown-toggle.show{color:#fff;background-color:#495057;border-color:#495057}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-gray-700:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-gray-700:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-700:active:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-700.active:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-700.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #49505780}html[data-netbox-color-mode=dark] .btn-outline-gray-700:disabled,html[data-netbox-color-mode=dark] .btn-outline-gray-700.disabled{color:#495057;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-gray-800{color:#343a40;border-color:#343a40}html[data-netbox-color-mode=dark] .btn-outline-gray-800:hover{color:#fff;background-color:#343a40;border-color:#343a40}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-gray-800,html[data-netbox-color-mode=dark] .btn-outline-gray-800:focus{box-shadow:0 0 0 .25rem #343a4080}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-gray-800,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-gray-800,html[data-netbox-color-mode=dark] .btn-outline-gray-800:active,html[data-netbox-color-mode=dark] .btn-outline-gray-800.active,html[data-netbox-color-mode=dark] .btn-outline-gray-800.dropdown-toggle.show{color:#fff;background-color:#343a40;border-color:#343a40}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-gray-800:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-gray-800:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-800:active:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-800.active:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-800.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #343a4080}html[data-netbox-color-mode=dark] .btn-outline-gray-800:disabled,html[data-netbox-color-mode=dark] .btn-outline-gray-800.disabled{color:#343a40;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-gray-900{color:#212529;border-color:#212529}html[data-netbox-color-mode=dark] .btn-outline-gray-900:hover{color:#fff;background-color:#212529;border-color:#212529}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-gray-900,html[data-netbox-color-mode=dark] .btn-outline-gray-900:focus{box-shadow:0 0 0 .25rem #21252980}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-gray-900,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-gray-900,html[data-netbox-color-mode=dark] .btn-outline-gray-900:active,html[data-netbox-color-mode=dark] .btn-outline-gray-900.active,html[data-netbox-color-mode=dark] .btn-outline-gray-900.dropdown-toggle.show{color:#fff;background-color:#212529;border-color:#212529}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-gray-900:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-gray-900:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-900:active:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-900.active:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-900.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #21252980}html[data-netbox-color-mode=dark] .btn-outline-gray-900:disabled,html[data-netbox-color-mode=dark] .btn-outline-gray-900.disabled{color:#212529;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-red-100{color:#f8d7da;border-color:#f8d7da}html[data-netbox-color-mode=dark] .btn-outline-red-100:hover{color:#000;background-color:#f8d7da;border-color:#f8d7da}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-red-100,html[data-netbox-color-mode=dark] .btn-outline-red-100:focus{box-shadow:0 0 0 .25rem #f8d7da80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-red-100,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-red-100,html[data-netbox-color-mode=dark] .btn-outline-red-100:active,html[data-netbox-color-mode=dark] .btn-outline-red-100.active,html[data-netbox-color-mode=dark] .btn-outline-red-100.dropdown-toggle.show{color:#000;background-color:#f8d7da;border-color:#f8d7da}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-red-100:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-red-100:focus,html[data-netbox-color-mode=dark] .btn-outline-red-100:active:focus,html[data-netbox-color-mode=dark] .btn-outline-red-100.active:focus,html[data-netbox-color-mode=dark] .btn-outline-red-100.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #f8d7da80}html[data-netbox-color-mode=dark] .btn-outline-red-100:disabled,html[data-netbox-color-mode=dark] .btn-outline-red-100.disabled{color:#f8d7da;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-red-200{color:#f1aeb5;border-color:#f1aeb5}html[data-netbox-color-mode=dark] .btn-outline-red-200:hover{color:#000;background-color:#f1aeb5;border-color:#f1aeb5}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-red-200,html[data-netbox-color-mode=dark] .btn-outline-red-200:focus{box-shadow:0 0 0 .25rem #f1aeb580}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-red-200,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-red-200,html[data-netbox-color-mode=dark] .btn-outline-red-200:active,html[data-netbox-color-mode=dark] .btn-outline-red-200.active,html[data-netbox-color-mode=dark] .btn-outline-red-200.dropdown-toggle.show{color:#000;background-color:#f1aeb5;border-color:#f1aeb5}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-red-200:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-red-200:focus,html[data-netbox-color-mode=dark] .btn-outline-red-200:active:focus,html[data-netbox-color-mode=dark] .btn-outline-red-200.active:focus,html[data-netbox-color-mode=dark] .btn-outline-red-200.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #f1aeb580}html[data-netbox-color-mode=dark] .btn-outline-red-200:disabled,html[data-netbox-color-mode=dark] .btn-outline-red-200.disabled{color:#f1aeb5;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-red-300{color:#ea868f;border-color:#ea868f}html[data-netbox-color-mode=dark] .btn-outline-red-300:hover{color:#000;background-color:#ea868f;border-color:#ea868f}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-red-300,html[data-netbox-color-mode=dark] .btn-outline-red-300:focus{box-shadow:0 0 0 .25rem #ea868f80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-red-300,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-red-300,html[data-netbox-color-mode=dark] .btn-outline-red-300:active,html[data-netbox-color-mode=dark] .btn-outline-red-300.active,html[data-netbox-color-mode=dark] .btn-outline-red-300.dropdown-toggle.show{color:#000;background-color:#ea868f;border-color:#ea868f}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-red-300:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-red-300:focus,html[data-netbox-color-mode=dark] .btn-outline-red-300:active:focus,html[data-netbox-color-mode=dark] .btn-outline-red-300.active:focus,html[data-netbox-color-mode=dark] .btn-outline-red-300.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #ea868f80}html[data-netbox-color-mode=dark] .btn-outline-red-300:disabled,html[data-netbox-color-mode=dark] .btn-outline-red-300.disabled{color:#ea868f;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-red-400{color:#e35d6a;border-color:#e35d6a}html[data-netbox-color-mode=dark] .btn-outline-red-400:hover{color:#000;background-color:#e35d6a;border-color:#e35d6a}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-red-400,html[data-netbox-color-mode=dark] .btn-outline-red-400:focus{box-shadow:0 0 0 .25rem #e35d6a80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-red-400,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-red-400,html[data-netbox-color-mode=dark] .btn-outline-red-400:active,html[data-netbox-color-mode=dark] .btn-outline-red-400.active,html[data-netbox-color-mode=dark] .btn-outline-red-400.dropdown-toggle.show{color:#000;background-color:#e35d6a;border-color:#e35d6a}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-red-400:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-red-400:focus,html[data-netbox-color-mode=dark] .btn-outline-red-400:active:focus,html[data-netbox-color-mode=dark] .btn-outline-red-400.active:focus,html[data-netbox-color-mode=dark] .btn-outline-red-400.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #e35d6a80}html[data-netbox-color-mode=dark] .btn-outline-red-400:disabled,html[data-netbox-color-mode=dark] .btn-outline-red-400.disabled{color:#e35d6a;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-red-500{color:#dc3545;border-color:#dc3545}html[data-netbox-color-mode=dark] .btn-outline-red-500:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-red-500,html[data-netbox-color-mode=dark] .btn-outline-red-500:focus{box-shadow:0 0 0 .25rem #dc354580}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-red-500,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-red-500,html[data-netbox-color-mode=dark] .btn-outline-red-500:active,html[data-netbox-color-mode=dark] .btn-outline-red-500.active,html[data-netbox-color-mode=dark] .btn-outline-red-500.dropdown-toggle.show{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-red-500:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-red-500:focus,html[data-netbox-color-mode=dark] .btn-outline-red-500:active:focus,html[data-netbox-color-mode=dark] .btn-outline-red-500.active:focus,html[data-netbox-color-mode=dark] .btn-outline-red-500.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #dc354580}html[data-netbox-color-mode=dark] .btn-outline-red-500:disabled,html[data-netbox-color-mode=dark] .btn-outline-red-500.disabled{color:#dc3545;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-red-600{color:#b02a37;border-color:#b02a37}html[data-netbox-color-mode=dark] .btn-outline-red-600:hover{color:#fff;background-color:#b02a37;border-color:#b02a37}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-red-600,html[data-netbox-color-mode=dark] .btn-outline-red-600:focus{box-shadow:0 0 0 .25rem #b02a3780}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-red-600,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-red-600,html[data-netbox-color-mode=dark] .btn-outline-red-600:active,html[data-netbox-color-mode=dark] .btn-outline-red-600.active,html[data-netbox-color-mode=dark] .btn-outline-red-600.dropdown-toggle.show{color:#fff;background-color:#b02a37;border-color:#b02a37}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-red-600:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-red-600:focus,html[data-netbox-color-mode=dark] .btn-outline-red-600:active:focus,html[data-netbox-color-mode=dark] .btn-outline-red-600.active:focus,html[data-netbox-color-mode=dark] .btn-outline-red-600.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #b02a3780}html[data-netbox-color-mode=dark] .btn-outline-red-600:disabled,html[data-netbox-color-mode=dark] .btn-outline-red-600.disabled{color:#b02a37;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-red-700{color:#842029;border-color:#842029}html[data-netbox-color-mode=dark] .btn-outline-red-700:hover{color:#fff;background-color:#842029;border-color:#842029}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-red-700,html[data-netbox-color-mode=dark] .btn-outline-red-700:focus{box-shadow:0 0 0 .25rem #84202980}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-red-700,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-red-700,html[data-netbox-color-mode=dark] .btn-outline-red-700:active,html[data-netbox-color-mode=dark] .btn-outline-red-700.active,html[data-netbox-color-mode=dark] .btn-outline-red-700.dropdown-toggle.show{color:#fff;background-color:#842029;border-color:#842029}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-red-700:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-red-700:focus,html[data-netbox-color-mode=dark] .btn-outline-red-700:active:focus,html[data-netbox-color-mode=dark] .btn-outline-red-700.active:focus,html[data-netbox-color-mode=dark] .btn-outline-red-700.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #84202980}html[data-netbox-color-mode=dark] .btn-outline-red-700:disabled,html[data-netbox-color-mode=dark] .btn-outline-red-700.disabled{color:#842029;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-red-800{color:#58151c;border-color:#58151c}html[data-netbox-color-mode=dark] .btn-outline-red-800:hover{color:#fff;background-color:#58151c;border-color:#58151c}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-red-800,html[data-netbox-color-mode=dark] .btn-outline-red-800:focus{box-shadow:0 0 0 .25rem #58151c80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-red-800,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-red-800,html[data-netbox-color-mode=dark] .btn-outline-red-800:active,html[data-netbox-color-mode=dark] .btn-outline-red-800.active,html[data-netbox-color-mode=dark] .btn-outline-red-800.dropdown-toggle.show{color:#fff;background-color:#58151c;border-color:#58151c}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-red-800:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-red-800:focus,html[data-netbox-color-mode=dark] .btn-outline-red-800:active:focus,html[data-netbox-color-mode=dark] .btn-outline-red-800.active:focus,html[data-netbox-color-mode=dark] .btn-outline-red-800.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #58151c80}html[data-netbox-color-mode=dark] .btn-outline-red-800:disabled,html[data-netbox-color-mode=dark] .btn-outline-red-800.disabled{color:#58151c;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-red-900{color:#2c0b0e;border-color:#2c0b0e}html[data-netbox-color-mode=dark] .btn-outline-red-900:hover{color:#fff;background-color:#2c0b0e;border-color:#2c0b0e}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-red-900,html[data-netbox-color-mode=dark] .btn-outline-red-900:focus{box-shadow:0 0 0 .25rem #2c0b0e80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-red-900,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-red-900,html[data-netbox-color-mode=dark] .btn-outline-red-900:active,html[data-netbox-color-mode=dark] .btn-outline-red-900.active,html[data-netbox-color-mode=dark] .btn-outline-red-900.dropdown-toggle.show{color:#fff;background-color:#2c0b0e;border-color:#2c0b0e}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-red-900:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-red-900:focus,html[data-netbox-color-mode=dark] .btn-outline-red-900:active:focus,html[data-netbox-color-mode=dark] .btn-outline-red-900.active:focus,html[data-netbox-color-mode=dark] .btn-outline-red-900.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #2c0b0e80}html[data-netbox-color-mode=dark] .btn-outline-red-900:disabled,html[data-netbox-color-mode=dark] .btn-outline-red-900.disabled{color:#2c0b0e;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-yellow-100{color:#fff3cd;border-color:#fff3cd}html[data-netbox-color-mode=dark] .btn-outline-yellow-100:hover{color:#000;background-color:#fff3cd;border-color:#fff3cd}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-yellow-100,html[data-netbox-color-mode=dark] .btn-outline-yellow-100:focus{box-shadow:0 0 0 .25rem #fff3cd80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-yellow-100,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-yellow-100,html[data-netbox-color-mode=dark] .btn-outline-yellow-100:active,html[data-netbox-color-mode=dark] .btn-outline-yellow-100.active,html[data-netbox-color-mode=dark] .btn-outline-yellow-100.dropdown-toggle.show{color:#000;background-color:#fff3cd;border-color:#fff3cd}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-yellow-100:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-yellow-100:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-100:active:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-100.active:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-100.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #fff3cd80}html[data-netbox-color-mode=dark] .btn-outline-yellow-100:disabled,html[data-netbox-color-mode=dark] .btn-outline-yellow-100.disabled{color:#fff3cd;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-yellow-200{color:#ffe69c;border-color:#ffe69c}html[data-netbox-color-mode=dark] .btn-outline-yellow-200:hover{color:#000;background-color:#ffe69c;border-color:#ffe69c}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-yellow-200,html[data-netbox-color-mode=dark] .btn-outline-yellow-200:focus{box-shadow:0 0 0 .25rem #ffe69c80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-yellow-200,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-yellow-200,html[data-netbox-color-mode=dark] .btn-outline-yellow-200:active,html[data-netbox-color-mode=dark] .btn-outline-yellow-200.active,html[data-netbox-color-mode=dark] .btn-outline-yellow-200.dropdown-toggle.show{color:#000;background-color:#ffe69c;border-color:#ffe69c}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-yellow-200:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-yellow-200:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-200:active:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-200.active:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-200.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #ffe69c80}html[data-netbox-color-mode=dark] .btn-outline-yellow-200:disabled,html[data-netbox-color-mode=dark] .btn-outline-yellow-200.disabled{color:#ffe69c;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-yellow-300{color:#ffda6a;border-color:#ffda6a}html[data-netbox-color-mode=dark] .btn-outline-yellow-300:hover{color:#000;background-color:#ffda6a;border-color:#ffda6a}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-yellow-300,html[data-netbox-color-mode=dark] .btn-outline-yellow-300:focus{box-shadow:0 0 0 .25rem #ffda6a80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-yellow-300,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-yellow-300,html[data-netbox-color-mode=dark] .btn-outline-yellow-300:active,html[data-netbox-color-mode=dark] .btn-outline-yellow-300.active,html[data-netbox-color-mode=dark] .btn-outline-yellow-300.dropdown-toggle.show{color:#000;background-color:#ffda6a;border-color:#ffda6a}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-yellow-300:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-yellow-300:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-300:active:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-300.active:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-300.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #ffda6a80}html[data-netbox-color-mode=dark] .btn-outline-yellow-300:disabled,html[data-netbox-color-mode=dark] .btn-outline-yellow-300.disabled{color:#ffda6a;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-yellow-400{color:#ffcd39;border-color:#ffcd39}html[data-netbox-color-mode=dark] .btn-outline-yellow-400:hover{color:#000;background-color:#ffcd39;border-color:#ffcd39}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-yellow-400,html[data-netbox-color-mode=dark] .btn-outline-yellow-400:focus{box-shadow:0 0 0 .25rem #ffcd3980}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-yellow-400,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-yellow-400,html[data-netbox-color-mode=dark] .btn-outline-yellow-400:active,html[data-netbox-color-mode=dark] .btn-outline-yellow-400.active,html[data-netbox-color-mode=dark] .btn-outline-yellow-400.dropdown-toggle.show{color:#000;background-color:#ffcd39;border-color:#ffcd39}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-yellow-400:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-yellow-400:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-400:active:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-400.active:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-400.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #ffcd3980}html[data-netbox-color-mode=dark] .btn-outline-yellow-400:disabled,html[data-netbox-color-mode=dark] .btn-outline-yellow-400.disabled{color:#ffcd39;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-yellow-500{color:#ffc107;border-color:#ffc107}html[data-netbox-color-mode=dark] .btn-outline-yellow-500:hover{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-yellow-500,html[data-netbox-color-mode=dark] .btn-outline-yellow-500:focus{box-shadow:0 0 0 .25rem #ffc10780}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-yellow-500,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-yellow-500,html[data-netbox-color-mode=dark] .btn-outline-yellow-500:active,html[data-netbox-color-mode=dark] .btn-outline-yellow-500.active,html[data-netbox-color-mode=dark] .btn-outline-yellow-500.dropdown-toggle.show{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-yellow-500:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-yellow-500:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-500:active:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-500.active:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-500.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #ffc10780}html[data-netbox-color-mode=dark] .btn-outline-yellow-500:disabled,html[data-netbox-color-mode=dark] .btn-outline-yellow-500.disabled{color:#ffc107;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-yellow-600{color:#cc9a06;border-color:#cc9a06}html[data-netbox-color-mode=dark] .btn-outline-yellow-600:hover{color:#000;background-color:#cc9a06;border-color:#cc9a06}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-yellow-600,html[data-netbox-color-mode=dark] .btn-outline-yellow-600:focus{box-shadow:0 0 0 .25rem #cc9a0680}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-yellow-600,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-yellow-600,html[data-netbox-color-mode=dark] .btn-outline-yellow-600:active,html[data-netbox-color-mode=dark] .btn-outline-yellow-600.active,html[data-netbox-color-mode=dark] .btn-outline-yellow-600.dropdown-toggle.show{color:#000;background-color:#cc9a06;border-color:#cc9a06}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-yellow-600:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-yellow-600:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-600:active:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-600.active:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-600.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #cc9a0680}html[data-netbox-color-mode=dark] .btn-outline-yellow-600:disabled,html[data-netbox-color-mode=dark] .btn-outline-yellow-600.disabled{color:#cc9a06;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-yellow-700{color:#997404;border-color:#997404}html[data-netbox-color-mode=dark] .btn-outline-yellow-700:hover{color:#000;background-color:#997404;border-color:#997404}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-yellow-700,html[data-netbox-color-mode=dark] .btn-outline-yellow-700:focus{box-shadow:0 0 0 .25rem #99740480}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-yellow-700,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-yellow-700,html[data-netbox-color-mode=dark] .btn-outline-yellow-700:active,html[data-netbox-color-mode=dark] .btn-outline-yellow-700.active,html[data-netbox-color-mode=dark] .btn-outline-yellow-700.dropdown-toggle.show{color:#000;background-color:#997404;border-color:#997404}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-yellow-700:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-yellow-700:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-700:active:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-700.active:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-700.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #99740480}html[data-netbox-color-mode=dark] .btn-outline-yellow-700:disabled,html[data-netbox-color-mode=dark] .btn-outline-yellow-700.disabled{color:#997404;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-yellow-800{color:#664d03;border-color:#664d03}html[data-netbox-color-mode=dark] .btn-outline-yellow-800:hover{color:#fff;background-color:#664d03;border-color:#664d03}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-yellow-800,html[data-netbox-color-mode=dark] .btn-outline-yellow-800:focus{box-shadow:0 0 0 .25rem #664d0380}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-yellow-800,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-yellow-800,html[data-netbox-color-mode=dark] .btn-outline-yellow-800:active,html[data-netbox-color-mode=dark] .btn-outline-yellow-800.active,html[data-netbox-color-mode=dark] .btn-outline-yellow-800.dropdown-toggle.show{color:#fff;background-color:#664d03;border-color:#664d03}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-yellow-800:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-yellow-800:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-800:active:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-800.active:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-800.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #664d0380}html[data-netbox-color-mode=dark] .btn-outline-yellow-800:disabled,html[data-netbox-color-mode=dark] .btn-outline-yellow-800.disabled{color:#664d03;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-yellow-900{color:#332701;border-color:#332701}html[data-netbox-color-mode=dark] .btn-outline-yellow-900:hover{color:#fff;background-color:#332701;border-color:#332701}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-yellow-900,html[data-netbox-color-mode=dark] .btn-outline-yellow-900:focus{box-shadow:0 0 0 .25rem #33270180}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-yellow-900,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-yellow-900,html[data-netbox-color-mode=dark] .btn-outline-yellow-900:active,html[data-netbox-color-mode=dark] .btn-outline-yellow-900.active,html[data-netbox-color-mode=dark] .btn-outline-yellow-900.dropdown-toggle.show{color:#fff;background-color:#332701;border-color:#332701}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-yellow-900:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-yellow-900:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-900:active:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-900.active:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-900.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #33270180}html[data-netbox-color-mode=dark] .btn-outline-yellow-900:disabled,html[data-netbox-color-mode=dark] .btn-outline-yellow-900.disabled{color:#332701;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-green-100{color:#d1e7dd;border-color:#d1e7dd}html[data-netbox-color-mode=dark] .btn-outline-green-100:hover{color:#000;background-color:#d1e7dd;border-color:#d1e7dd}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-green-100,html[data-netbox-color-mode=dark] .btn-outline-green-100:focus{box-shadow:0 0 0 .25rem #d1e7dd80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-green-100,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-green-100,html[data-netbox-color-mode=dark] .btn-outline-green-100:active,html[data-netbox-color-mode=dark] .btn-outline-green-100.active,html[data-netbox-color-mode=dark] .btn-outline-green-100.dropdown-toggle.show{color:#000;background-color:#d1e7dd;border-color:#d1e7dd}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-green-100:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-green-100:focus,html[data-netbox-color-mode=dark] .btn-outline-green-100:active:focus,html[data-netbox-color-mode=dark] .btn-outline-green-100.active:focus,html[data-netbox-color-mode=dark] .btn-outline-green-100.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #d1e7dd80}html[data-netbox-color-mode=dark] .btn-outline-green-100:disabled,html[data-netbox-color-mode=dark] .btn-outline-green-100.disabled{color:#d1e7dd;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-green-200{color:#a3cfbb;border-color:#a3cfbb}html[data-netbox-color-mode=dark] .btn-outline-green-200:hover{color:#000;background-color:#a3cfbb;border-color:#a3cfbb}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-green-200,html[data-netbox-color-mode=dark] .btn-outline-green-200:focus{box-shadow:0 0 0 .25rem #a3cfbb80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-green-200,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-green-200,html[data-netbox-color-mode=dark] .btn-outline-green-200:active,html[data-netbox-color-mode=dark] .btn-outline-green-200.active,html[data-netbox-color-mode=dark] .btn-outline-green-200.dropdown-toggle.show{color:#000;background-color:#a3cfbb;border-color:#a3cfbb}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-green-200:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-green-200:focus,html[data-netbox-color-mode=dark] .btn-outline-green-200:active:focus,html[data-netbox-color-mode=dark] .btn-outline-green-200.active:focus,html[data-netbox-color-mode=dark] .btn-outline-green-200.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #a3cfbb80}html[data-netbox-color-mode=dark] .btn-outline-green-200:disabled,html[data-netbox-color-mode=dark] .btn-outline-green-200.disabled{color:#a3cfbb;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-green-300{color:#75b798;border-color:#75b798}html[data-netbox-color-mode=dark] .btn-outline-green-300:hover{color:#000;background-color:#75b798;border-color:#75b798}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-green-300,html[data-netbox-color-mode=dark] .btn-outline-green-300:focus{box-shadow:0 0 0 .25rem #75b79880}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-green-300,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-green-300,html[data-netbox-color-mode=dark] .btn-outline-green-300:active,html[data-netbox-color-mode=dark] .btn-outline-green-300.active,html[data-netbox-color-mode=dark] .btn-outline-green-300.dropdown-toggle.show{color:#000;background-color:#75b798;border-color:#75b798}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-green-300:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-green-300:focus,html[data-netbox-color-mode=dark] .btn-outline-green-300:active:focus,html[data-netbox-color-mode=dark] .btn-outline-green-300.active:focus,html[data-netbox-color-mode=dark] .btn-outline-green-300.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #75b79880}html[data-netbox-color-mode=dark] .btn-outline-green-300:disabled,html[data-netbox-color-mode=dark] .btn-outline-green-300.disabled{color:#75b798;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-green-400{color:#479f76;border-color:#479f76}html[data-netbox-color-mode=dark] .btn-outline-green-400:hover{color:#000;background-color:#479f76;border-color:#479f76}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-green-400,html[data-netbox-color-mode=dark] .btn-outline-green-400:focus{box-shadow:0 0 0 .25rem #479f7680}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-green-400,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-green-400,html[data-netbox-color-mode=dark] .btn-outline-green-400:active,html[data-netbox-color-mode=dark] .btn-outline-green-400.active,html[data-netbox-color-mode=dark] .btn-outline-green-400.dropdown-toggle.show{color:#000;background-color:#479f76;border-color:#479f76}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-green-400:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-green-400:focus,html[data-netbox-color-mode=dark] .btn-outline-green-400:active:focus,html[data-netbox-color-mode=dark] .btn-outline-green-400.active:focus,html[data-netbox-color-mode=dark] .btn-outline-green-400.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #479f7680}html[data-netbox-color-mode=dark] .btn-outline-green-400:disabled,html[data-netbox-color-mode=dark] .btn-outline-green-400.disabled{color:#479f76;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-green-500{color:#198754;border-color:#198754}html[data-netbox-color-mode=dark] .btn-outline-green-500:hover{color:#fff;background-color:#198754;border-color:#198754}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-green-500,html[data-netbox-color-mode=dark] .btn-outline-green-500:focus{box-shadow:0 0 0 .25rem #19875480}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-green-500,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-green-500,html[data-netbox-color-mode=dark] .btn-outline-green-500:active,html[data-netbox-color-mode=dark] .btn-outline-green-500.active,html[data-netbox-color-mode=dark] .btn-outline-green-500.dropdown-toggle.show{color:#fff;background-color:#198754;border-color:#198754}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-green-500:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-green-500:focus,html[data-netbox-color-mode=dark] .btn-outline-green-500:active:focus,html[data-netbox-color-mode=dark] .btn-outline-green-500.active:focus,html[data-netbox-color-mode=dark] .btn-outline-green-500.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #19875480}html[data-netbox-color-mode=dark] .btn-outline-green-500:disabled,html[data-netbox-color-mode=dark] .btn-outline-green-500.disabled{color:#198754;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-green-600{color:#146c43;border-color:#146c43}html[data-netbox-color-mode=dark] .btn-outline-green-600:hover{color:#fff;background-color:#146c43;border-color:#146c43}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-green-600,html[data-netbox-color-mode=dark] .btn-outline-green-600:focus{box-shadow:0 0 0 .25rem #146c4380}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-green-600,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-green-600,html[data-netbox-color-mode=dark] .btn-outline-green-600:active,html[data-netbox-color-mode=dark] .btn-outline-green-600.active,html[data-netbox-color-mode=dark] .btn-outline-green-600.dropdown-toggle.show{color:#fff;background-color:#146c43;border-color:#146c43}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-green-600:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-green-600:focus,html[data-netbox-color-mode=dark] .btn-outline-green-600:active:focus,html[data-netbox-color-mode=dark] .btn-outline-green-600.active:focus,html[data-netbox-color-mode=dark] .btn-outline-green-600.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #146c4380}html[data-netbox-color-mode=dark] .btn-outline-green-600:disabled,html[data-netbox-color-mode=dark] .btn-outline-green-600.disabled{color:#146c43;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-green-700{color:#0f5132;border-color:#0f5132}html[data-netbox-color-mode=dark] .btn-outline-green-700:hover{color:#fff;background-color:#0f5132;border-color:#0f5132}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-green-700,html[data-netbox-color-mode=dark] .btn-outline-green-700:focus{box-shadow:0 0 0 .25rem #0f513280}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-green-700,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-green-700,html[data-netbox-color-mode=dark] .btn-outline-green-700:active,html[data-netbox-color-mode=dark] .btn-outline-green-700.active,html[data-netbox-color-mode=dark] .btn-outline-green-700.dropdown-toggle.show{color:#fff;background-color:#0f5132;border-color:#0f5132}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-green-700:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-green-700:focus,html[data-netbox-color-mode=dark] .btn-outline-green-700:active:focus,html[data-netbox-color-mode=dark] .btn-outline-green-700.active:focus,html[data-netbox-color-mode=dark] .btn-outline-green-700.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #0f513280}html[data-netbox-color-mode=dark] .btn-outline-green-700:disabled,html[data-netbox-color-mode=dark] .btn-outline-green-700.disabled{color:#0f5132;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-green-800{color:#0a3622;border-color:#0a3622}html[data-netbox-color-mode=dark] .btn-outline-green-800:hover{color:#fff;background-color:#0a3622;border-color:#0a3622}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-green-800,html[data-netbox-color-mode=dark] .btn-outline-green-800:focus{box-shadow:0 0 0 .25rem #0a362280}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-green-800,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-green-800,html[data-netbox-color-mode=dark] .btn-outline-green-800:active,html[data-netbox-color-mode=dark] .btn-outline-green-800.active,html[data-netbox-color-mode=dark] .btn-outline-green-800.dropdown-toggle.show{color:#fff;background-color:#0a3622;border-color:#0a3622}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-green-800:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-green-800:focus,html[data-netbox-color-mode=dark] .btn-outline-green-800:active:focus,html[data-netbox-color-mode=dark] .btn-outline-green-800.active:focus,html[data-netbox-color-mode=dark] .btn-outline-green-800.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #0a362280}html[data-netbox-color-mode=dark] .btn-outline-green-800:disabled,html[data-netbox-color-mode=dark] .btn-outline-green-800.disabled{color:#0a3622;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-green-900{color:#051b11;border-color:#051b11}html[data-netbox-color-mode=dark] .btn-outline-green-900:hover{color:#fff;background-color:#051b11;border-color:#051b11}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-green-900,html[data-netbox-color-mode=dark] .btn-outline-green-900:focus{box-shadow:0 0 0 .25rem #051b1180}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-green-900,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-green-900,html[data-netbox-color-mode=dark] .btn-outline-green-900:active,html[data-netbox-color-mode=dark] .btn-outline-green-900.active,html[data-netbox-color-mode=dark] .btn-outline-green-900.dropdown-toggle.show{color:#fff;background-color:#051b11;border-color:#051b11}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-green-900:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-green-900:focus,html[data-netbox-color-mode=dark] .btn-outline-green-900:active:focus,html[data-netbox-color-mode=dark] .btn-outline-green-900.active:focus,html[data-netbox-color-mode=dark] .btn-outline-green-900.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #051b1180}html[data-netbox-color-mode=dark] .btn-outline-green-900:disabled,html[data-netbox-color-mode=dark] .btn-outline-green-900.disabled{color:#051b11;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-blue-100{color:#cfe2ff;border-color:#cfe2ff}html[data-netbox-color-mode=dark] .btn-outline-blue-100:hover{color:#000;background-color:#cfe2ff;border-color:#cfe2ff}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-blue-100,html[data-netbox-color-mode=dark] .btn-outline-blue-100:focus{box-shadow:0 0 0 .25rem #cfe2ff80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-blue-100,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-blue-100,html[data-netbox-color-mode=dark] .btn-outline-blue-100:active,html[data-netbox-color-mode=dark] .btn-outline-blue-100.active,html[data-netbox-color-mode=dark] .btn-outline-blue-100.dropdown-toggle.show{color:#000;background-color:#cfe2ff;border-color:#cfe2ff}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-blue-100:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-blue-100:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-100:active:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-100.active:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-100.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #cfe2ff80}html[data-netbox-color-mode=dark] .btn-outline-blue-100:disabled,html[data-netbox-color-mode=dark] .btn-outline-blue-100.disabled{color:#cfe2ff;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-blue-200{color:#9ec5fe;border-color:#9ec5fe}html[data-netbox-color-mode=dark] .btn-outline-blue-200:hover{color:#000;background-color:#9ec5fe;border-color:#9ec5fe}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-blue-200,html[data-netbox-color-mode=dark] .btn-outline-blue-200:focus{box-shadow:0 0 0 .25rem #9ec5fe80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-blue-200,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-blue-200,html[data-netbox-color-mode=dark] .btn-outline-blue-200:active,html[data-netbox-color-mode=dark] .btn-outline-blue-200.active,html[data-netbox-color-mode=dark] .btn-outline-blue-200.dropdown-toggle.show{color:#000;background-color:#9ec5fe;border-color:#9ec5fe}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-blue-200:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-blue-200:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-200:active:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-200.active:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-200.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #9ec5fe80}html[data-netbox-color-mode=dark] .btn-outline-blue-200:disabled,html[data-netbox-color-mode=dark] .btn-outline-blue-200.disabled{color:#9ec5fe;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-blue-300{color:#6ea8fe;border-color:#6ea8fe}html[data-netbox-color-mode=dark] .btn-outline-blue-300:hover{color:#000;background-color:#6ea8fe;border-color:#6ea8fe}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-blue-300,html[data-netbox-color-mode=dark] .btn-outline-blue-300:focus{box-shadow:0 0 0 .25rem #6ea8fe80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-blue-300,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-blue-300,html[data-netbox-color-mode=dark] .btn-outline-blue-300:active,html[data-netbox-color-mode=dark] .btn-outline-blue-300.active,html[data-netbox-color-mode=dark] .btn-outline-blue-300.dropdown-toggle.show{color:#000;background-color:#6ea8fe;border-color:#6ea8fe}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-blue-300:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-blue-300:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-300:active:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-300.active:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-300.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #6ea8fe80}html[data-netbox-color-mode=dark] .btn-outline-blue-300:disabled,html[data-netbox-color-mode=dark] .btn-outline-blue-300.disabled{color:#6ea8fe;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-blue-400{color:#3d8bfd;border-color:#3d8bfd}html[data-netbox-color-mode=dark] .btn-outline-blue-400:hover{color:#000;background-color:#3d8bfd;border-color:#3d8bfd}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-blue-400,html[data-netbox-color-mode=dark] .btn-outline-blue-400:focus{box-shadow:0 0 0 .25rem #3d8bfd80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-blue-400,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-blue-400,html[data-netbox-color-mode=dark] .btn-outline-blue-400:active,html[data-netbox-color-mode=dark] .btn-outline-blue-400.active,html[data-netbox-color-mode=dark] .btn-outline-blue-400.dropdown-toggle.show{color:#000;background-color:#3d8bfd;border-color:#3d8bfd}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-blue-400:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-blue-400:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-400:active:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-400.active:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-400.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #3d8bfd80}html[data-netbox-color-mode=dark] .btn-outline-blue-400:disabled,html[data-netbox-color-mode=dark] .btn-outline-blue-400.disabled{color:#3d8bfd;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-blue-500{color:#0d6efd;border-color:#0d6efd}html[data-netbox-color-mode=dark] .btn-outline-blue-500:hover{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-blue-500,html[data-netbox-color-mode=dark] .btn-outline-blue-500:focus{box-shadow:0 0 0 .25rem #0d6efd80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-blue-500,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-blue-500,html[data-netbox-color-mode=dark] .btn-outline-blue-500:active,html[data-netbox-color-mode=dark] .btn-outline-blue-500.active,html[data-netbox-color-mode=dark] .btn-outline-blue-500.dropdown-toggle.show{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-blue-500:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-blue-500:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-500:active:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-500.active:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-500.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #0d6efd80}html[data-netbox-color-mode=dark] .btn-outline-blue-500:disabled,html[data-netbox-color-mode=dark] .btn-outline-blue-500.disabled{color:#0d6efd;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-blue-600{color:#0a58ca;border-color:#0a58ca}html[data-netbox-color-mode=dark] .btn-outline-blue-600:hover{color:#fff;background-color:#0a58ca;border-color:#0a58ca}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-blue-600,html[data-netbox-color-mode=dark] .btn-outline-blue-600:focus{box-shadow:0 0 0 .25rem #0a58ca80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-blue-600,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-blue-600,html[data-netbox-color-mode=dark] .btn-outline-blue-600:active,html[data-netbox-color-mode=dark] .btn-outline-blue-600.active,html[data-netbox-color-mode=dark] .btn-outline-blue-600.dropdown-toggle.show{color:#fff;background-color:#0a58ca;border-color:#0a58ca}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-blue-600:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-blue-600:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-600:active:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-600.active:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-600.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #0a58ca80}html[data-netbox-color-mode=dark] .btn-outline-blue-600:disabled,html[data-netbox-color-mode=dark] .btn-outline-blue-600.disabled{color:#0a58ca;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-blue-700{color:#084298;border-color:#084298}html[data-netbox-color-mode=dark] .btn-outline-blue-700:hover{color:#fff;background-color:#084298;border-color:#084298}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-blue-700,html[data-netbox-color-mode=dark] .btn-outline-blue-700:focus{box-shadow:0 0 0 .25rem #08429880}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-blue-700,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-blue-700,html[data-netbox-color-mode=dark] .btn-outline-blue-700:active,html[data-netbox-color-mode=dark] .btn-outline-blue-700.active,html[data-netbox-color-mode=dark] .btn-outline-blue-700.dropdown-toggle.show{color:#fff;background-color:#084298;border-color:#084298}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-blue-700:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-blue-700:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-700:active:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-700.active:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-700.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #08429880}html[data-netbox-color-mode=dark] .btn-outline-blue-700:disabled,html[data-netbox-color-mode=dark] .btn-outline-blue-700.disabled{color:#084298;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-blue-800{color:#052c65;border-color:#052c65}html[data-netbox-color-mode=dark] .btn-outline-blue-800:hover{color:#fff;background-color:#052c65;border-color:#052c65}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-blue-800,html[data-netbox-color-mode=dark] .btn-outline-blue-800:focus{box-shadow:0 0 0 .25rem #052c6580}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-blue-800,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-blue-800,html[data-netbox-color-mode=dark] .btn-outline-blue-800:active,html[data-netbox-color-mode=dark] .btn-outline-blue-800.active,html[data-netbox-color-mode=dark] .btn-outline-blue-800.dropdown-toggle.show{color:#fff;background-color:#052c65;border-color:#052c65}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-blue-800:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-blue-800:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-800:active:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-800.active:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-800.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #052c6580}html[data-netbox-color-mode=dark] .btn-outline-blue-800:disabled,html[data-netbox-color-mode=dark] .btn-outline-blue-800.disabled{color:#052c65;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-blue-900{color:#031633;border-color:#031633}html[data-netbox-color-mode=dark] .btn-outline-blue-900:hover{color:#fff;background-color:#031633;border-color:#031633}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-blue-900,html[data-netbox-color-mode=dark] .btn-outline-blue-900:focus{box-shadow:0 0 0 .25rem #03163380}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-blue-900,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-blue-900,html[data-netbox-color-mode=dark] .btn-outline-blue-900:active,html[data-netbox-color-mode=dark] .btn-outline-blue-900.active,html[data-netbox-color-mode=dark] .btn-outline-blue-900.dropdown-toggle.show{color:#fff;background-color:#031633;border-color:#031633}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-blue-900:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-blue-900:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-900:active:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-900.active:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-900.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #03163380}html[data-netbox-color-mode=dark] .btn-outline-blue-900:disabled,html[data-netbox-color-mode=dark] .btn-outline-blue-900.disabled{color:#031633;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-cyan-100{color:#cff4fc;border-color:#cff4fc}html[data-netbox-color-mode=dark] .btn-outline-cyan-100:hover{color:#000;background-color:#cff4fc;border-color:#cff4fc}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-cyan-100,html[data-netbox-color-mode=dark] .btn-outline-cyan-100:focus{box-shadow:0 0 0 .25rem #cff4fc80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-cyan-100,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-cyan-100,html[data-netbox-color-mode=dark] .btn-outline-cyan-100:active,html[data-netbox-color-mode=dark] .btn-outline-cyan-100.active,html[data-netbox-color-mode=dark] .btn-outline-cyan-100.dropdown-toggle.show{color:#000;background-color:#cff4fc;border-color:#cff4fc}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-cyan-100:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-cyan-100:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-100:active:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-100.active:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-100.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #cff4fc80}html[data-netbox-color-mode=dark] .btn-outline-cyan-100:disabled,html[data-netbox-color-mode=dark] .btn-outline-cyan-100.disabled{color:#cff4fc;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-cyan-200{color:#9eeaf9;border-color:#9eeaf9}html[data-netbox-color-mode=dark] .btn-outline-cyan-200:hover{color:#000;background-color:#9eeaf9;border-color:#9eeaf9}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-cyan-200,html[data-netbox-color-mode=dark] .btn-outline-cyan-200:focus{box-shadow:0 0 0 .25rem #9eeaf980}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-cyan-200,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-cyan-200,html[data-netbox-color-mode=dark] .btn-outline-cyan-200:active,html[data-netbox-color-mode=dark] .btn-outline-cyan-200.active,html[data-netbox-color-mode=dark] .btn-outline-cyan-200.dropdown-toggle.show{color:#000;background-color:#9eeaf9;border-color:#9eeaf9}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-cyan-200:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-cyan-200:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-200:active:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-200.active:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-200.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #9eeaf980}html[data-netbox-color-mode=dark] .btn-outline-cyan-200:disabled,html[data-netbox-color-mode=dark] .btn-outline-cyan-200.disabled{color:#9eeaf9;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-cyan-300{color:#6edff6;border-color:#6edff6}html[data-netbox-color-mode=dark] .btn-outline-cyan-300:hover{color:#000;background-color:#6edff6;border-color:#6edff6}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-cyan-300,html[data-netbox-color-mode=dark] .btn-outline-cyan-300:focus{box-shadow:0 0 0 .25rem #6edff680}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-cyan-300,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-cyan-300,html[data-netbox-color-mode=dark] .btn-outline-cyan-300:active,html[data-netbox-color-mode=dark] .btn-outline-cyan-300.active,html[data-netbox-color-mode=dark] .btn-outline-cyan-300.dropdown-toggle.show{color:#000;background-color:#6edff6;border-color:#6edff6}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-cyan-300:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-cyan-300:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-300:active:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-300.active:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-300.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #6edff680}html[data-netbox-color-mode=dark] .btn-outline-cyan-300:disabled,html[data-netbox-color-mode=dark] .btn-outline-cyan-300.disabled{color:#6edff6;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-cyan-400{color:#3dd5f3;border-color:#3dd5f3}html[data-netbox-color-mode=dark] .btn-outline-cyan-400:hover{color:#000;background-color:#3dd5f3;border-color:#3dd5f3}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-cyan-400,html[data-netbox-color-mode=dark] .btn-outline-cyan-400:focus{box-shadow:0 0 0 .25rem #3dd5f380}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-cyan-400,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-cyan-400,html[data-netbox-color-mode=dark] .btn-outline-cyan-400:active,html[data-netbox-color-mode=dark] .btn-outline-cyan-400.active,html[data-netbox-color-mode=dark] .btn-outline-cyan-400.dropdown-toggle.show{color:#000;background-color:#3dd5f3;border-color:#3dd5f3}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-cyan-400:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-cyan-400:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-400:active:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-400.active:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-400.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #3dd5f380}html[data-netbox-color-mode=dark] .btn-outline-cyan-400:disabled,html[data-netbox-color-mode=dark] .btn-outline-cyan-400.disabled{color:#3dd5f3;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-cyan-500{color:#0dcaf0;border-color:#0dcaf0}html[data-netbox-color-mode=dark] .btn-outline-cyan-500:hover{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-cyan-500,html[data-netbox-color-mode=dark] .btn-outline-cyan-500:focus{box-shadow:0 0 0 .25rem #0dcaf080}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-cyan-500,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-cyan-500,html[data-netbox-color-mode=dark] .btn-outline-cyan-500:active,html[data-netbox-color-mode=dark] .btn-outline-cyan-500.active,html[data-netbox-color-mode=dark] .btn-outline-cyan-500.dropdown-toggle.show{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-cyan-500:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-cyan-500:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-500:active:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-500.active:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-500.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #0dcaf080}html[data-netbox-color-mode=dark] .btn-outline-cyan-500:disabled,html[data-netbox-color-mode=dark] .btn-outline-cyan-500.disabled{color:#0dcaf0;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-cyan-600{color:#0aa2c0;border-color:#0aa2c0}html[data-netbox-color-mode=dark] .btn-outline-cyan-600:hover{color:#000;background-color:#0aa2c0;border-color:#0aa2c0}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-cyan-600,html[data-netbox-color-mode=dark] .btn-outline-cyan-600:focus{box-shadow:0 0 0 .25rem #0aa2c080}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-cyan-600,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-cyan-600,html[data-netbox-color-mode=dark] .btn-outline-cyan-600:active,html[data-netbox-color-mode=dark] .btn-outline-cyan-600.active,html[data-netbox-color-mode=dark] .btn-outline-cyan-600.dropdown-toggle.show{color:#000;background-color:#0aa2c0;border-color:#0aa2c0}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-cyan-600:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-cyan-600:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-600:active:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-600.active:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-600.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #0aa2c080}html[data-netbox-color-mode=dark] .btn-outline-cyan-600:disabled,html[data-netbox-color-mode=dark] .btn-outline-cyan-600.disabled{color:#0aa2c0;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-cyan-700{color:#087990;border-color:#087990}html[data-netbox-color-mode=dark] .btn-outline-cyan-700:hover{color:#fff;background-color:#087990;border-color:#087990}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-cyan-700,html[data-netbox-color-mode=dark] .btn-outline-cyan-700:focus{box-shadow:0 0 0 .25rem #08799080}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-cyan-700,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-cyan-700,html[data-netbox-color-mode=dark] .btn-outline-cyan-700:active,html[data-netbox-color-mode=dark] .btn-outline-cyan-700.active,html[data-netbox-color-mode=dark] .btn-outline-cyan-700.dropdown-toggle.show{color:#fff;background-color:#087990;border-color:#087990}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-cyan-700:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-cyan-700:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-700:active:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-700.active:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-700.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #08799080}html[data-netbox-color-mode=dark] .btn-outline-cyan-700:disabled,html[data-netbox-color-mode=dark] .btn-outline-cyan-700.disabled{color:#087990;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-cyan-800{color:#055160;border-color:#055160}html[data-netbox-color-mode=dark] .btn-outline-cyan-800:hover{color:#fff;background-color:#055160;border-color:#055160}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-cyan-800,html[data-netbox-color-mode=dark] .btn-outline-cyan-800:focus{box-shadow:0 0 0 .25rem #05516080}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-cyan-800,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-cyan-800,html[data-netbox-color-mode=dark] .btn-outline-cyan-800:active,html[data-netbox-color-mode=dark] .btn-outline-cyan-800.active,html[data-netbox-color-mode=dark] .btn-outline-cyan-800.dropdown-toggle.show{color:#fff;background-color:#055160;border-color:#055160}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-cyan-800:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-cyan-800:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-800:active:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-800.active:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-800.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #05516080}html[data-netbox-color-mode=dark] .btn-outline-cyan-800:disabled,html[data-netbox-color-mode=dark] .btn-outline-cyan-800.disabled{color:#055160;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-cyan-900{color:#032830;border-color:#032830}html[data-netbox-color-mode=dark] .btn-outline-cyan-900:hover{color:#fff;background-color:#032830;border-color:#032830}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-cyan-900,html[data-netbox-color-mode=dark] .btn-outline-cyan-900:focus{box-shadow:0 0 0 .25rem #03283080}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-cyan-900,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-cyan-900,html[data-netbox-color-mode=dark] .btn-outline-cyan-900:active,html[data-netbox-color-mode=dark] .btn-outline-cyan-900.active,html[data-netbox-color-mode=dark] .btn-outline-cyan-900.dropdown-toggle.show{color:#fff;background-color:#032830;border-color:#032830}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-cyan-900:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-cyan-900:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-900:active:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-900.active:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-900.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #03283080}html[data-netbox-color-mode=dark] .btn-outline-cyan-900:disabled,html[data-netbox-color-mode=dark] .btn-outline-cyan-900.disabled{color:#032830;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-indigo-100{color:#e0cffc;border-color:#e0cffc}html[data-netbox-color-mode=dark] .btn-outline-indigo-100:hover{color:#000;background-color:#e0cffc;border-color:#e0cffc}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-indigo-100,html[data-netbox-color-mode=dark] .btn-outline-indigo-100:focus{box-shadow:0 0 0 .25rem #e0cffc80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-indigo-100,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-indigo-100,html[data-netbox-color-mode=dark] .btn-outline-indigo-100:active,html[data-netbox-color-mode=dark] .btn-outline-indigo-100.active,html[data-netbox-color-mode=dark] .btn-outline-indigo-100.dropdown-toggle.show{color:#000;background-color:#e0cffc;border-color:#e0cffc}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-indigo-100:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-indigo-100:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-100:active:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-100.active:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-100.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #e0cffc80}html[data-netbox-color-mode=dark] .btn-outline-indigo-100:disabled,html[data-netbox-color-mode=dark] .btn-outline-indigo-100.disabled{color:#e0cffc;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-indigo-200{color:#c29ffa;border-color:#c29ffa}html[data-netbox-color-mode=dark] .btn-outline-indigo-200:hover{color:#000;background-color:#c29ffa;border-color:#c29ffa}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-indigo-200,html[data-netbox-color-mode=dark] .btn-outline-indigo-200:focus{box-shadow:0 0 0 .25rem #c29ffa80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-indigo-200,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-indigo-200,html[data-netbox-color-mode=dark] .btn-outline-indigo-200:active,html[data-netbox-color-mode=dark] .btn-outline-indigo-200.active,html[data-netbox-color-mode=dark] .btn-outline-indigo-200.dropdown-toggle.show{color:#000;background-color:#c29ffa;border-color:#c29ffa}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-indigo-200:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-indigo-200:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-200:active:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-200.active:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-200.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #c29ffa80}html[data-netbox-color-mode=dark] .btn-outline-indigo-200:disabled,html[data-netbox-color-mode=dark] .btn-outline-indigo-200.disabled{color:#c29ffa;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-indigo-300{color:#a370f7;border-color:#a370f7}html[data-netbox-color-mode=dark] .btn-outline-indigo-300:hover{color:#000;background-color:#a370f7;border-color:#a370f7}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-indigo-300,html[data-netbox-color-mode=dark] .btn-outline-indigo-300:focus{box-shadow:0 0 0 .25rem #a370f780}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-indigo-300,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-indigo-300,html[data-netbox-color-mode=dark] .btn-outline-indigo-300:active,html[data-netbox-color-mode=dark] .btn-outline-indigo-300.active,html[data-netbox-color-mode=dark] .btn-outline-indigo-300.dropdown-toggle.show{color:#000;background-color:#a370f7;border-color:#a370f7}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-indigo-300:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-indigo-300:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-300:active:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-300.active:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-300.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #a370f780}html[data-netbox-color-mode=dark] .btn-outline-indigo-300:disabled,html[data-netbox-color-mode=dark] .btn-outline-indigo-300.disabled{color:#a370f7;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-indigo-400{color:#8540f5;border-color:#8540f5}html[data-netbox-color-mode=dark] .btn-outline-indigo-400:hover{color:#fff;background-color:#8540f5;border-color:#8540f5}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-indigo-400,html[data-netbox-color-mode=dark] .btn-outline-indigo-400:focus{box-shadow:0 0 0 .25rem #8540f580}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-indigo-400,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-indigo-400,html[data-netbox-color-mode=dark] .btn-outline-indigo-400:active,html[data-netbox-color-mode=dark] .btn-outline-indigo-400.active,html[data-netbox-color-mode=dark] .btn-outline-indigo-400.dropdown-toggle.show{color:#fff;background-color:#8540f5;border-color:#8540f5}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-indigo-400:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-indigo-400:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-400:active:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-400.active:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-400.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #8540f580}html[data-netbox-color-mode=dark] .btn-outline-indigo-400:disabled,html[data-netbox-color-mode=dark] .btn-outline-indigo-400.disabled{color:#8540f5;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-indigo-500{color:#6610f2;border-color:#6610f2}html[data-netbox-color-mode=dark] .btn-outline-indigo-500:hover{color:#fff;background-color:#6610f2;border-color:#6610f2}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-indigo-500,html[data-netbox-color-mode=dark] .btn-outline-indigo-500:focus{box-shadow:0 0 0 .25rem #6610f280}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-indigo-500,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-indigo-500,html[data-netbox-color-mode=dark] .btn-outline-indigo-500:active,html[data-netbox-color-mode=dark] .btn-outline-indigo-500.active,html[data-netbox-color-mode=dark] .btn-outline-indigo-500.dropdown-toggle.show{color:#fff;background-color:#6610f2;border-color:#6610f2}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-indigo-500:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-indigo-500:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-500:active:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-500.active:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-500.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #6610f280}html[data-netbox-color-mode=dark] .btn-outline-indigo-500:disabled,html[data-netbox-color-mode=dark] .btn-outline-indigo-500.disabled{color:#6610f2;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-indigo-600{color:#520dc2;border-color:#520dc2}html[data-netbox-color-mode=dark] .btn-outline-indigo-600:hover{color:#fff;background-color:#520dc2;border-color:#520dc2}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-indigo-600,html[data-netbox-color-mode=dark] .btn-outline-indigo-600:focus{box-shadow:0 0 0 .25rem #520dc280}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-indigo-600,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-indigo-600,html[data-netbox-color-mode=dark] .btn-outline-indigo-600:active,html[data-netbox-color-mode=dark] .btn-outline-indigo-600.active,html[data-netbox-color-mode=dark] .btn-outline-indigo-600.dropdown-toggle.show{color:#fff;background-color:#520dc2;border-color:#520dc2}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-indigo-600:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-indigo-600:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-600:active:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-600.active:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-600.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #520dc280}html[data-netbox-color-mode=dark] .btn-outline-indigo-600:disabled,html[data-netbox-color-mode=dark] .btn-outline-indigo-600.disabled{color:#520dc2;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-indigo-700{color:#3d0a91;border-color:#3d0a91}html[data-netbox-color-mode=dark] .btn-outline-indigo-700:hover{color:#fff;background-color:#3d0a91;border-color:#3d0a91}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-indigo-700,html[data-netbox-color-mode=dark] .btn-outline-indigo-700:focus{box-shadow:0 0 0 .25rem #3d0a9180}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-indigo-700,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-indigo-700,html[data-netbox-color-mode=dark] .btn-outline-indigo-700:active,html[data-netbox-color-mode=dark] .btn-outline-indigo-700.active,html[data-netbox-color-mode=dark] .btn-outline-indigo-700.dropdown-toggle.show{color:#fff;background-color:#3d0a91;border-color:#3d0a91}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-indigo-700:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-indigo-700:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-700:active:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-700.active:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-700.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #3d0a9180}html[data-netbox-color-mode=dark] .btn-outline-indigo-700:disabled,html[data-netbox-color-mode=dark] .btn-outline-indigo-700.disabled{color:#3d0a91;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-indigo-800{color:#290661;border-color:#290661}html[data-netbox-color-mode=dark] .btn-outline-indigo-800:hover{color:#fff;background-color:#290661;border-color:#290661}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-indigo-800,html[data-netbox-color-mode=dark] .btn-outline-indigo-800:focus{box-shadow:0 0 0 .25rem #29066180}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-indigo-800,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-indigo-800,html[data-netbox-color-mode=dark] .btn-outline-indigo-800:active,html[data-netbox-color-mode=dark] .btn-outline-indigo-800.active,html[data-netbox-color-mode=dark] .btn-outline-indigo-800.dropdown-toggle.show{color:#fff;background-color:#290661;border-color:#290661}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-indigo-800:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-indigo-800:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-800:active:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-800.active:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-800.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #29066180}html[data-netbox-color-mode=dark] .btn-outline-indigo-800:disabled,html[data-netbox-color-mode=dark] .btn-outline-indigo-800.disabled{color:#290661;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-indigo-900{color:#140330;border-color:#140330}html[data-netbox-color-mode=dark] .btn-outline-indigo-900:hover{color:#fff;background-color:#140330;border-color:#140330}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-indigo-900,html[data-netbox-color-mode=dark] .btn-outline-indigo-900:focus{box-shadow:0 0 0 .25rem #14033080}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-indigo-900,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-indigo-900,html[data-netbox-color-mode=dark] .btn-outline-indigo-900:active,html[data-netbox-color-mode=dark] .btn-outline-indigo-900.active,html[data-netbox-color-mode=dark] .btn-outline-indigo-900.dropdown-toggle.show{color:#fff;background-color:#140330;border-color:#140330}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-indigo-900:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-indigo-900:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-900:active:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-900.active:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-900.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #14033080}html[data-netbox-color-mode=dark] .btn-outline-indigo-900:disabled,html[data-netbox-color-mode=dark] .btn-outline-indigo-900.disabled{color:#140330;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-purple-100{color:#e2d9f3;border-color:#e2d9f3}html[data-netbox-color-mode=dark] .btn-outline-purple-100:hover{color:#000;background-color:#e2d9f3;border-color:#e2d9f3}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-purple-100,html[data-netbox-color-mode=dark] .btn-outline-purple-100:focus{box-shadow:0 0 0 .25rem #e2d9f380}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-purple-100,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-purple-100,html[data-netbox-color-mode=dark] .btn-outline-purple-100:active,html[data-netbox-color-mode=dark] .btn-outline-purple-100.active,html[data-netbox-color-mode=dark] .btn-outline-purple-100.dropdown-toggle.show{color:#000;background-color:#e2d9f3;border-color:#e2d9f3}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-purple-100:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-purple-100:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-100:active:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-100.active:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-100.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #e2d9f380}html[data-netbox-color-mode=dark] .btn-outline-purple-100:disabled,html[data-netbox-color-mode=dark] .btn-outline-purple-100.disabled{color:#e2d9f3;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-purple-200{color:#c5b3e6;border-color:#c5b3e6}html[data-netbox-color-mode=dark] .btn-outline-purple-200:hover{color:#000;background-color:#c5b3e6;border-color:#c5b3e6}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-purple-200,html[data-netbox-color-mode=dark] .btn-outline-purple-200:focus{box-shadow:0 0 0 .25rem #c5b3e680}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-purple-200,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-purple-200,html[data-netbox-color-mode=dark] .btn-outline-purple-200:active,html[data-netbox-color-mode=dark] .btn-outline-purple-200.active,html[data-netbox-color-mode=dark] .btn-outline-purple-200.dropdown-toggle.show{color:#000;background-color:#c5b3e6;border-color:#c5b3e6}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-purple-200:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-purple-200:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-200:active:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-200.active:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-200.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #c5b3e680}html[data-netbox-color-mode=dark] .btn-outline-purple-200:disabled,html[data-netbox-color-mode=dark] .btn-outline-purple-200.disabled{color:#c5b3e6;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-purple-300{color:#a98eda;border-color:#a98eda}html[data-netbox-color-mode=dark] .btn-outline-purple-300:hover{color:#000;background-color:#a98eda;border-color:#a98eda}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-purple-300,html[data-netbox-color-mode=dark] .btn-outline-purple-300:focus{box-shadow:0 0 0 .25rem #a98eda80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-purple-300,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-purple-300,html[data-netbox-color-mode=dark] .btn-outline-purple-300:active,html[data-netbox-color-mode=dark] .btn-outline-purple-300.active,html[data-netbox-color-mode=dark] .btn-outline-purple-300.dropdown-toggle.show{color:#000;background-color:#a98eda;border-color:#a98eda}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-purple-300:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-purple-300:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-300:active:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-300.active:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-300.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #a98eda80}html[data-netbox-color-mode=dark] .btn-outline-purple-300:disabled,html[data-netbox-color-mode=dark] .btn-outline-purple-300.disabled{color:#a98eda;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-purple-400{color:#8c68cd;border-color:#8c68cd}html[data-netbox-color-mode=dark] .btn-outline-purple-400:hover{color:#000;background-color:#8c68cd;border-color:#8c68cd}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-purple-400,html[data-netbox-color-mode=dark] .btn-outline-purple-400:focus{box-shadow:0 0 0 .25rem #8c68cd80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-purple-400,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-purple-400,html[data-netbox-color-mode=dark] .btn-outline-purple-400:active,html[data-netbox-color-mode=dark] .btn-outline-purple-400.active,html[data-netbox-color-mode=dark] .btn-outline-purple-400.dropdown-toggle.show{color:#000;background-color:#8c68cd;border-color:#8c68cd}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-purple-400:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-purple-400:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-400:active:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-400.active:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-400.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #8c68cd80}html[data-netbox-color-mode=dark] .btn-outline-purple-400:disabled,html[data-netbox-color-mode=dark] .btn-outline-purple-400.disabled{color:#8c68cd;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-purple-500{color:#6f42c1;border-color:#6f42c1}html[data-netbox-color-mode=dark] .btn-outline-purple-500:hover{color:#fff;background-color:#6f42c1;border-color:#6f42c1}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-purple-500,html[data-netbox-color-mode=dark] .btn-outline-purple-500:focus{box-shadow:0 0 0 .25rem #6f42c180}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-purple-500,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-purple-500,html[data-netbox-color-mode=dark] .btn-outline-purple-500:active,html[data-netbox-color-mode=dark] .btn-outline-purple-500.active,html[data-netbox-color-mode=dark] .btn-outline-purple-500.dropdown-toggle.show{color:#fff;background-color:#6f42c1;border-color:#6f42c1}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-purple-500:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-purple-500:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-500:active:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-500.active:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-500.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #6f42c180}html[data-netbox-color-mode=dark] .btn-outline-purple-500:disabled,html[data-netbox-color-mode=dark] .btn-outline-purple-500.disabled{color:#6f42c1;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-purple-600{color:#59359a;border-color:#59359a}html[data-netbox-color-mode=dark] .btn-outline-purple-600:hover{color:#fff;background-color:#59359a;border-color:#59359a}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-purple-600,html[data-netbox-color-mode=dark] .btn-outline-purple-600:focus{box-shadow:0 0 0 .25rem #59359a80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-purple-600,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-purple-600,html[data-netbox-color-mode=dark] .btn-outline-purple-600:active,html[data-netbox-color-mode=dark] .btn-outline-purple-600.active,html[data-netbox-color-mode=dark] .btn-outline-purple-600.dropdown-toggle.show{color:#fff;background-color:#59359a;border-color:#59359a}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-purple-600:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-purple-600:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-600:active:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-600.active:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-600.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #59359a80}html[data-netbox-color-mode=dark] .btn-outline-purple-600:disabled,html[data-netbox-color-mode=dark] .btn-outline-purple-600.disabled{color:#59359a;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-purple-700{color:#432874;border-color:#432874}html[data-netbox-color-mode=dark] .btn-outline-purple-700:hover{color:#fff;background-color:#432874;border-color:#432874}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-purple-700,html[data-netbox-color-mode=dark] .btn-outline-purple-700:focus{box-shadow:0 0 0 .25rem #43287480}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-purple-700,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-purple-700,html[data-netbox-color-mode=dark] .btn-outline-purple-700:active,html[data-netbox-color-mode=dark] .btn-outline-purple-700.active,html[data-netbox-color-mode=dark] .btn-outline-purple-700.dropdown-toggle.show{color:#fff;background-color:#432874;border-color:#432874}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-purple-700:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-purple-700:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-700:active:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-700.active:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-700.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #43287480}html[data-netbox-color-mode=dark] .btn-outline-purple-700:disabled,html[data-netbox-color-mode=dark] .btn-outline-purple-700.disabled{color:#432874;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-purple-800{color:#2c1a4d;border-color:#2c1a4d}html[data-netbox-color-mode=dark] .btn-outline-purple-800:hover{color:#fff;background-color:#2c1a4d;border-color:#2c1a4d}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-purple-800,html[data-netbox-color-mode=dark] .btn-outline-purple-800:focus{box-shadow:0 0 0 .25rem #2c1a4d80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-purple-800,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-purple-800,html[data-netbox-color-mode=dark] .btn-outline-purple-800:active,html[data-netbox-color-mode=dark] .btn-outline-purple-800.active,html[data-netbox-color-mode=dark] .btn-outline-purple-800.dropdown-toggle.show{color:#fff;background-color:#2c1a4d;border-color:#2c1a4d}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-purple-800:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-purple-800:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-800:active:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-800.active:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-800.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #2c1a4d80}html[data-netbox-color-mode=dark] .btn-outline-purple-800:disabled,html[data-netbox-color-mode=dark] .btn-outline-purple-800.disabled{color:#2c1a4d;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-purple-900{color:#160d27;border-color:#160d27}html[data-netbox-color-mode=dark] .btn-outline-purple-900:hover{color:#fff;background-color:#160d27;border-color:#160d27}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-purple-900,html[data-netbox-color-mode=dark] .btn-outline-purple-900:focus{box-shadow:0 0 0 .25rem #160d2780}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-purple-900,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-purple-900,html[data-netbox-color-mode=dark] .btn-outline-purple-900:active,html[data-netbox-color-mode=dark] .btn-outline-purple-900.active,html[data-netbox-color-mode=dark] .btn-outline-purple-900.dropdown-toggle.show{color:#fff;background-color:#160d27;border-color:#160d27}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-purple-900:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-purple-900:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-900:active:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-900.active:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-900.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #160d2780}html[data-netbox-color-mode=dark] .btn-outline-purple-900:disabled,html[data-netbox-color-mode=dark] .btn-outline-purple-900.disabled{color:#160d27;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-pink-100{color:#f7d6e6;border-color:#f7d6e6}html[data-netbox-color-mode=dark] .btn-outline-pink-100:hover{color:#000;background-color:#f7d6e6;border-color:#f7d6e6}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-pink-100,html[data-netbox-color-mode=dark] .btn-outline-pink-100:focus{box-shadow:0 0 0 .25rem #f7d6e680}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-pink-100,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-pink-100,html[data-netbox-color-mode=dark] .btn-outline-pink-100:active,html[data-netbox-color-mode=dark] .btn-outline-pink-100.active,html[data-netbox-color-mode=dark] .btn-outline-pink-100.dropdown-toggle.show{color:#000;background-color:#f7d6e6;border-color:#f7d6e6}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-pink-100:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-pink-100:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-100:active:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-100.active:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-100.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #f7d6e680}html[data-netbox-color-mode=dark] .btn-outline-pink-100:disabled,html[data-netbox-color-mode=dark] .btn-outline-pink-100.disabled{color:#f7d6e6;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-pink-200{color:#efadce;border-color:#efadce}html[data-netbox-color-mode=dark] .btn-outline-pink-200:hover{color:#000;background-color:#efadce;border-color:#efadce}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-pink-200,html[data-netbox-color-mode=dark] .btn-outline-pink-200:focus{box-shadow:0 0 0 .25rem #efadce80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-pink-200,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-pink-200,html[data-netbox-color-mode=dark] .btn-outline-pink-200:active,html[data-netbox-color-mode=dark] .btn-outline-pink-200.active,html[data-netbox-color-mode=dark] .btn-outline-pink-200.dropdown-toggle.show{color:#000;background-color:#efadce;border-color:#efadce}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-pink-200:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-pink-200:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-200:active:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-200.active:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-200.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #efadce80}html[data-netbox-color-mode=dark] .btn-outline-pink-200:disabled,html[data-netbox-color-mode=dark] .btn-outline-pink-200.disabled{color:#efadce;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-pink-300{color:#e685b5;border-color:#e685b5}html[data-netbox-color-mode=dark] .btn-outline-pink-300:hover{color:#000;background-color:#e685b5;border-color:#e685b5}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-pink-300,html[data-netbox-color-mode=dark] .btn-outline-pink-300:focus{box-shadow:0 0 0 .25rem #e685b580}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-pink-300,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-pink-300,html[data-netbox-color-mode=dark] .btn-outline-pink-300:active,html[data-netbox-color-mode=dark] .btn-outline-pink-300.active,html[data-netbox-color-mode=dark] .btn-outline-pink-300.dropdown-toggle.show{color:#000;background-color:#e685b5;border-color:#e685b5}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-pink-300:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-pink-300:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-300:active:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-300.active:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-300.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #e685b580}html[data-netbox-color-mode=dark] .btn-outline-pink-300:disabled,html[data-netbox-color-mode=dark] .btn-outline-pink-300.disabled{color:#e685b5;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-pink-400{color:#de5c9d;border-color:#de5c9d}html[data-netbox-color-mode=dark] .btn-outline-pink-400:hover{color:#000;background-color:#de5c9d;border-color:#de5c9d}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-pink-400,html[data-netbox-color-mode=dark] .btn-outline-pink-400:focus{box-shadow:0 0 0 .25rem #de5c9d80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-pink-400,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-pink-400,html[data-netbox-color-mode=dark] .btn-outline-pink-400:active,html[data-netbox-color-mode=dark] .btn-outline-pink-400.active,html[data-netbox-color-mode=dark] .btn-outline-pink-400.dropdown-toggle.show{color:#000;background-color:#de5c9d;border-color:#de5c9d}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-pink-400:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-pink-400:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-400:active:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-400.active:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-400.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #de5c9d80}html[data-netbox-color-mode=dark] .btn-outline-pink-400:disabled,html[data-netbox-color-mode=dark] .btn-outline-pink-400.disabled{color:#de5c9d;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-pink-500{color:#d63384;border-color:#d63384}html[data-netbox-color-mode=dark] .btn-outline-pink-500:hover{color:#fff;background-color:#d63384;border-color:#d63384}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-pink-500,html[data-netbox-color-mode=dark] .btn-outline-pink-500:focus{box-shadow:0 0 0 .25rem #d6338480}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-pink-500,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-pink-500,html[data-netbox-color-mode=dark] .btn-outline-pink-500:active,html[data-netbox-color-mode=dark] .btn-outline-pink-500.active,html[data-netbox-color-mode=dark] .btn-outline-pink-500.dropdown-toggle.show{color:#fff;background-color:#d63384;border-color:#d63384}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-pink-500:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-pink-500:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-500:active:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-500.active:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-500.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #d6338480}html[data-netbox-color-mode=dark] .btn-outline-pink-500:disabled,html[data-netbox-color-mode=dark] .btn-outline-pink-500.disabled{color:#d63384;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-pink-600{color:#ab296a;border-color:#ab296a}html[data-netbox-color-mode=dark] .btn-outline-pink-600:hover{color:#fff;background-color:#ab296a;border-color:#ab296a}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-pink-600,html[data-netbox-color-mode=dark] .btn-outline-pink-600:focus{box-shadow:0 0 0 .25rem #ab296a80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-pink-600,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-pink-600,html[data-netbox-color-mode=dark] .btn-outline-pink-600:active,html[data-netbox-color-mode=dark] .btn-outline-pink-600.active,html[data-netbox-color-mode=dark] .btn-outline-pink-600.dropdown-toggle.show{color:#fff;background-color:#ab296a;border-color:#ab296a}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-pink-600:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-pink-600:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-600:active:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-600.active:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-600.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #ab296a80}html[data-netbox-color-mode=dark] .btn-outline-pink-600:disabled,html[data-netbox-color-mode=dark] .btn-outline-pink-600.disabled{color:#ab296a;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-pink-700{color:#801f4f;border-color:#801f4f}html[data-netbox-color-mode=dark] .btn-outline-pink-700:hover{color:#fff;background-color:#801f4f;border-color:#801f4f}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-pink-700,html[data-netbox-color-mode=dark] .btn-outline-pink-700:focus{box-shadow:0 0 0 .25rem #801f4f80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-pink-700,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-pink-700,html[data-netbox-color-mode=dark] .btn-outline-pink-700:active,html[data-netbox-color-mode=dark] .btn-outline-pink-700.active,html[data-netbox-color-mode=dark] .btn-outline-pink-700.dropdown-toggle.show{color:#fff;background-color:#801f4f;border-color:#801f4f}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-pink-700:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-pink-700:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-700:active:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-700.active:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-700.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #801f4f80}html[data-netbox-color-mode=dark] .btn-outline-pink-700:disabled,html[data-netbox-color-mode=dark] .btn-outline-pink-700.disabled{color:#801f4f;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-pink-800{color:#561435;border-color:#561435}html[data-netbox-color-mode=dark] .btn-outline-pink-800:hover{color:#fff;background-color:#561435;border-color:#561435}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-pink-800,html[data-netbox-color-mode=dark] .btn-outline-pink-800:focus{box-shadow:0 0 0 .25rem #56143580}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-pink-800,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-pink-800,html[data-netbox-color-mode=dark] .btn-outline-pink-800:active,html[data-netbox-color-mode=dark] .btn-outline-pink-800.active,html[data-netbox-color-mode=dark] .btn-outline-pink-800.dropdown-toggle.show{color:#fff;background-color:#561435;border-color:#561435}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-pink-800:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-pink-800:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-800:active:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-800.active:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-800.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #56143580}html[data-netbox-color-mode=dark] .btn-outline-pink-800:disabled,html[data-netbox-color-mode=dark] .btn-outline-pink-800.disabled{color:#561435;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-pink-900{color:#2b0a1a;border-color:#2b0a1a}html[data-netbox-color-mode=dark] .btn-outline-pink-900:hover{color:#fff;background-color:#2b0a1a;border-color:#2b0a1a}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-pink-900,html[data-netbox-color-mode=dark] .btn-outline-pink-900:focus{box-shadow:0 0 0 .25rem #2b0a1a80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-pink-900,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-pink-900,html[data-netbox-color-mode=dark] .btn-outline-pink-900:active,html[data-netbox-color-mode=dark] .btn-outline-pink-900.active,html[data-netbox-color-mode=dark] .btn-outline-pink-900.dropdown-toggle.show{color:#fff;background-color:#2b0a1a;border-color:#2b0a1a}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-pink-900:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-pink-900:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-900:active:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-900.active:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-900.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #2b0a1a80}html[data-netbox-color-mode=dark] .btn-outline-pink-900:disabled,html[data-netbox-color-mode=dark] .btn-outline-pink-900.disabled{color:#2b0a1a;background-color:transparent}html[data-netbox-color-mode=dark] .btn-link{font-weight:400;color:#0d6efd;text-decoration:underline}html[data-netbox-color-mode=dark] .btn-link:hover{color:#0a58ca}html[data-netbox-color-mode=dark] .btn-link:disabled,html[data-netbox-color-mode=dark] .btn-link.disabled{color:#dee2e6}html[data-netbox-color-mode=dark] .btn-lg,html[data-netbox-color-mode=dark] .btn-group-lg>.btn{padding:.5rem 1rem;font-size:1.25rem;border-radius:.75rem}html[data-netbox-color-mode=dark] .btn-sm,html[data-netbox-color-mode=dark] .btn-group-sm>.btn{padding:.25rem .5rem;font-size:.875rem;border-radius:.375rem}html[data-netbox-color-mode=dark] .fade{transition:opacity .15s linear}@media (prefers-reduced-motion: reduce){html[data-netbox-color-mode=dark] .fade{transition:none}}html[data-netbox-color-mode=dark] .fade:not(.show){opacity:0}html[data-netbox-color-mode=dark] .collapse:not(.show){display:none}html[data-netbox-color-mode=dark] .collapsing{height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion: reduce){html[data-netbox-color-mode=dark] .collapsing{transition:none}}html[data-netbox-color-mode=dark] .dropup,html[data-netbox-color-mode=dark] .dropend,html[data-netbox-color-mode=dark] .dropdown,html[data-netbox-color-mode=dark] .dropstart{position:relative}html[data-netbox-color-mode=dark] .dropdown-toggle{white-space:nowrap}html[data-netbox-color-mode=dark] .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}html[data-netbox-color-mode=dark] .dropdown-toggle:empty:after{margin-left:0}html[data-netbox-color-mode=dark] .dropdown-menu{position:absolute;z-index:1000;display:none;min-width:10rem;padding:.5rem 0;margin:0;font-size:1rem;color:#fff;text-align:left;list-style:none;background-color:#212529;background-clip:padding-box;border:1px solid rgba(255,255,255,.15);border-radius:.375rem}html[data-netbox-color-mode=dark] .dropdown-menu[data-bs-popper]{top:100%;left:0;margin-top:.125rem}html[data-netbox-color-mode=dark] .dropdown-menu-start{--bs-position: start}html[data-netbox-color-mode=dark] .dropdown-menu-start[data-bs-popper]{right:auto;left:0}html[data-netbox-color-mode=dark] .dropdown-menu-end{--bs-position: end}html[data-netbox-color-mode=dark] .dropdown-menu-end[data-bs-popper]{right:0;left:auto}@media (min-width: 576px){html[data-netbox-color-mode=dark] .dropdown-menu-sm-start{--bs-position: start}html[data-netbox-color-mode=dark] .dropdown-menu-sm-start[data-bs-popper]{right:auto;left:0}html[data-netbox-color-mode=dark] .dropdown-menu-sm-end{--bs-position: end}html[data-netbox-color-mode=dark] .dropdown-menu-sm-end[data-bs-popper]{right:0;left:auto}}@media (min-width: 768px){html[data-netbox-color-mode=dark] .dropdown-menu-md-start{--bs-position: start}html[data-netbox-color-mode=dark] .dropdown-menu-md-start[data-bs-popper]{right:auto;left:0}html[data-netbox-color-mode=dark] .dropdown-menu-md-end{--bs-position: end}html[data-netbox-color-mode=dark] .dropdown-menu-md-end[data-bs-popper]{right:0;left:auto}}@media (min-width: 992px){html[data-netbox-color-mode=dark] .dropdown-menu-lg-start{--bs-position: start}html[data-netbox-color-mode=dark] .dropdown-menu-lg-start[data-bs-popper]{right:auto;left:0}html[data-netbox-color-mode=dark] .dropdown-menu-lg-end{--bs-position: end}html[data-netbox-color-mode=dark] .dropdown-menu-lg-end[data-bs-popper]{right:0;left:auto}}@media (min-width: 1200px){html[data-netbox-color-mode=dark] .dropdown-menu-xl-start{--bs-position: start}html[data-netbox-color-mode=dark] .dropdown-menu-xl-start[data-bs-popper]{right:auto;left:0}html[data-netbox-color-mode=dark] .dropdown-menu-xl-end{--bs-position: end}html[data-netbox-color-mode=dark] .dropdown-menu-xl-end[data-bs-popper]{right:0;left:auto}}@media (min-width: 1400px){html[data-netbox-color-mode=dark] .dropdown-menu-xxl-start{--bs-position: start}html[data-netbox-color-mode=dark] .dropdown-menu-xxl-start[data-bs-popper]{right:auto;left:0}html[data-netbox-color-mode=dark] .dropdown-menu-xxl-end{--bs-position: end}html[data-netbox-color-mode=dark] .dropdown-menu-xxl-end[data-bs-popper]{right:0;left:auto}}html[data-netbox-color-mode=dark] .dropup .dropdown-menu[data-bs-popper]{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}html[data-netbox-color-mode=dark] .dropup .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}html[data-netbox-color-mode=dark] .dropup .dropdown-toggle:empty:after{margin-left:0}html[data-netbox-color-mode=dark] .dropend .dropdown-menu[data-bs-popper]{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}html[data-netbox-color-mode=dark] .dropend .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}html[data-netbox-color-mode=dark] .dropend .dropdown-toggle:empty:after{margin-left:0}html[data-netbox-color-mode=dark] .dropend .dropdown-toggle:after{vertical-align:0}html[data-netbox-color-mode=dark] .dropstart .dropdown-menu[data-bs-popper]{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}html[data-netbox-color-mode=dark] .dropstart .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}html[data-netbox-color-mode=dark] .dropstart .dropdown-toggle:after{display:none}html[data-netbox-color-mode=dark] .dropstart .dropdown-toggle:before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}html[data-netbox-color-mode=dark] .dropstart .dropdown-toggle:empty:after{margin-left:0}html[data-netbox-color-mode=dark] .dropstart .dropdown-toggle:before{vertical-align:0}html[data-netbox-color-mode=dark] .dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid rgba(0,0,0,.15)}html[data-netbox-color-mode=dark] .dropdown-item{display:block;width:100%;padding:.25rem 1rem;clear:both;font-weight:400;color:#f8f9fa;text-align:inherit;text-decoration:none;white-space:nowrap;background-color:transparent;border:0}html[data-netbox-color-mode=dark] .dropdown-item:hover,html[data-netbox-color-mode=dark] .dropdown-item:focus{color:#fff;background-color:#6c757d}html[data-netbox-color-mode=dark] .dropdown-item.active,html[data-netbox-color-mode=dark] .dropdown-item:active{color:#fff;text-decoration:none;background-color:#0d6efd}html[data-netbox-color-mode=dark] .dropdown-item.disabled,html[data-netbox-color-mode=dark] .dropdown-item:disabled{color:#343a40;pointer-events:none;background-color:transparent}html[data-netbox-color-mode=dark] .dropdown-menu.show{display:block}html[data-netbox-color-mode=dark] .dropdown-header{display:block;padding:.5rem 1rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}html[data-netbox-color-mode=dark] .dropdown-item-text{display:block;padding:.25rem 1rem;color:#f8f9fa}html[data-netbox-color-mode=dark] .dropdown-menu-dark{color:#dee2e6;background-color:#343a40;border-color:#00000026}html[data-netbox-color-mode=dark] .dropdown-menu-dark .dropdown-item{color:#dee2e6}html[data-netbox-color-mode=dark] .dropdown-menu-dark .dropdown-item:hover,html[data-netbox-color-mode=dark] .dropdown-menu-dark .dropdown-item:focus{color:#fff;background-color:#ffffff26}html[data-netbox-color-mode=dark] .dropdown-menu-dark .dropdown-item.active,html[data-netbox-color-mode=dark] .dropdown-menu-dark .dropdown-item:active{color:#fff;background-color:#0d6efd}html[data-netbox-color-mode=dark] .dropdown-menu-dark .dropdown-item.disabled,html[data-netbox-color-mode=dark] .dropdown-menu-dark .dropdown-item:disabled{color:#adb5bd}html[data-netbox-color-mode=dark] .dropdown-menu-dark .dropdown-divider{border-color:#00000026}html[data-netbox-color-mode=dark] .dropdown-menu-dark .dropdown-item-text{color:#dee2e6}html[data-netbox-color-mode=dark] .dropdown-menu-dark .dropdown-header{color:#adb5bd}html[data-netbox-color-mode=dark] .btn-group,html[data-netbox-color-mode=dark] .btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}html[data-netbox-color-mode=dark] .btn-group>.btn,html[data-netbox-color-mode=dark] .btn-group-vertical>.btn{position:relative;flex:1 1 auto}html[data-netbox-color-mode=dark] .btn-group>.btn-check:checked+.btn,html[data-netbox-color-mode=dark] .btn-group>.btn-check:focus+.btn,html[data-netbox-color-mode=dark] .btn-group>.btn:hover,html[data-netbox-color-mode=dark] .btn-group>.btn:focus,html[data-netbox-color-mode=dark] .btn-group>.btn:active,html[data-netbox-color-mode=dark] .btn-group>.btn.active,html[data-netbox-color-mode=dark] .btn-group-vertical>.btn-check:checked+.btn,html[data-netbox-color-mode=dark] .btn-group-vertical>.btn-check:focus+.btn,html[data-netbox-color-mode=dark] .btn-group-vertical>.btn:hover,html[data-netbox-color-mode=dark] .btn-group-vertical>.btn:focus,html[data-netbox-color-mode=dark] .btn-group-vertical>.btn:active,html[data-netbox-color-mode=dark] .btn-group-vertical>.btn.active{z-index:1}html[data-netbox-color-mode=dark] .btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}html[data-netbox-color-mode=dark] .btn-toolbar .input-group{width:auto}html[data-netbox-color-mode=dark] .btn-group>.btn:not(:first-child),html[data-netbox-color-mode=dark] .btn-group>.btn-group:not(:first-child){margin-left:-1px}html[data-netbox-color-mode=dark] .btn-group>.btn:not(:last-child):not(.dropdown-toggle),html[data-netbox-color-mode=dark] .btn-group>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}html[data-netbox-color-mode=dark] .btn-group>.btn:nth-child(n+3),html[data-netbox-color-mode=dark] .btn-group>:not(.btn-check)+.btn,html[data-netbox-color-mode=dark] .btn-group>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}html[data-netbox-color-mode=dark] .dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}html[data-netbox-color-mode=dark] .dropdown-toggle-split:after,.dropup html[data-netbox-color-mode=dark] .dropdown-toggle-split:after,.dropend html[data-netbox-color-mode=dark] .dropdown-toggle-split:after{margin-left:0}.dropstart html[data-netbox-color-mode=dark] .dropdown-toggle-split:before{margin-right:0}html[data-netbox-color-mode=dark] .btn-sm+.dropdown-toggle-split,html[data-netbox-color-mode=dark] .btn-group-sm>.btn+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}html[data-netbox-color-mode=dark] .btn-lg+.dropdown-toggle-split,html[data-netbox-color-mode=dark] .btn-group-lg>.btn+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}html[data-netbox-color-mode=dark] .btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}html[data-netbox-color-mode=dark] .btn-group-vertical>.btn,html[data-netbox-color-mode=dark] .btn-group-vertical>.btn-group{width:100%}html[data-netbox-color-mode=dark] .btn-group-vertical>.btn:not(:first-child),html[data-netbox-color-mode=dark] .btn-group-vertical>.btn-group:not(:first-child){margin-top:-1px}html[data-netbox-color-mode=dark] .btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle),html[data-netbox-color-mode=dark] .btn-group-vertical>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-bottom-left-radius:0}html[data-netbox-color-mode=dark] .btn-group-vertical>.btn~.btn,html[data-netbox-color-mode=dark] .btn-group-vertical>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-top-right-radius:0}html[data-netbox-color-mode=dark] .nav{display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}html[data-netbox-color-mode=dark] .nav-link{display:block;padding:.5rem 1rem;color:#fff;text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media (prefers-reduced-motion: reduce){html[data-netbox-color-mode=dark] .nav-link{transition:none}}html[data-netbox-color-mode=dark] .nav-link.disabled{color:#343a40;pointer-events:none;cursor:default}html[data-netbox-color-mode=dark] .nav-tabs{border-bottom:1px solid #495057}html[data-netbox-color-mode=dark] .nav-tabs .nav-link{margin-bottom:-1px;background:none;border:1px solid transparent;border-top-left-radius:.375rem;border-top-right-radius:.375rem}html[data-netbox-color-mode=dark] .nav-tabs .nav-link:hover,html[data-netbox-color-mode=dark] .nav-tabs .nav-link:focus{border-color:rgba(52,58,64,.5) rgba(52,58,64,.5) #495057;isolation:isolate}html[data-netbox-color-mode=dark] .nav-tabs .nav-link.disabled{color:#343a40;background-color:transparent;border-color:transparent}html[data-netbox-color-mode=dark] .nav-tabs .nav-link.active,html[data-netbox-color-mode=dark] .nav-tabs .nav-item.show .nav-link{color:#f8f9fa;background-color:#1b1f22;border-color:#343a40 #343a40 #1b1f22}html[data-netbox-color-mode=dark] .nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}html[data-netbox-color-mode=dark] .nav-pills .nav-link{background:none;border:0;border-radius:.375rem}html[data-netbox-color-mode=dark] .nav-pills .nav-link.active,html[data-netbox-color-mode=dark] .nav-pills .show>.nav-link{color:#000;background-color:#6ea8fe}html[data-netbox-color-mode=dark] .nav-fill>.nav-link,html[data-netbox-color-mode=dark] .nav-fill .nav-item{flex:1 1 auto;text-align:center}html[data-netbox-color-mode=dark] .nav-justified>.nav-link,html[data-netbox-color-mode=dark] .nav-justified .nav-item{flex-basis:0;flex-grow:1;text-align:center}html[data-netbox-color-mode=dark] .nav-fill .nav-item .nav-link,html[data-netbox-color-mode=dark] .nav-justified .nav-item .nav-link{width:100%}html[data-netbox-color-mode=dark] .tab-content>.tab-pane{display:none}html[data-netbox-color-mode=dark] .tab-content>.active{display:block}html[data-netbox-color-mode=dark] .navbar{position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding-top:.5rem;padding-bottom:.5rem}html[data-netbox-color-mode=dark] .navbar>.container,html[data-netbox-color-mode=dark] .navbar>.container-fluid,html[data-netbox-color-mode=dark] .navbar>.container-sm,html[data-netbox-color-mode=dark] .navbar>.container-md,html[data-netbox-color-mode=dark] .navbar>.container-lg,html[data-netbox-color-mode=dark] .navbar>.container-xl,html[data-netbox-color-mode=dark] .navbar>.container-xxl{display:flex;flex-wrap:inherit;align-items:center;justify-content:space-between}html[data-netbox-color-mode=dark] .navbar-brand{padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;text-decoration:none;white-space:nowrap}html[data-netbox-color-mode=dark] .navbar-nav{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}html[data-netbox-color-mode=dark] .navbar-nav .nav-link{padding-right:0;padding-left:0}html[data-netbox-color-mode=dark] .navbar-nav .dropdown-menu{position:static}html[data-netbox-color-mode=dark] .navbar-text{padding-top:.5rem;padding-bottom:.5rem}html[data-netbox-color-mode=dark] .navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}html[data-netbox-color-mode=dark] .navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.375rem;transition:box-shadow .15s ease-in-out}@media (prefers-reduced-motion: reduce){html[data-netbox-color-mode=dark] .navbar-toggler{transition:none}}html[data-netbox-color-mode=dark] .navbar-toggler:hover{text-decoration:none}html[data-netbox-color-mode=dark] .navbar-toggler:focus{text-decoration:none;outline:0;box-shadow:0 0 0 .25rem}html[data-netbox-color-mode=dark] .navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;background-repeat:no-repeat;background-position:center;background-size:100%}html[data-netbox-color-mode=dark] .navbar-nav-scroll{max-height:var(--bs-scroll-height, 75vh);overflow-y:auto}@media (min-width: 576px){html[data-netbox-color-mode=dark] .navbar-expand-sm{flex-wrap:nowrap;justify-content:flex-start}html[data-netbox-color-mode=dark] .navbar-expand-sm .navbar-nav{flex-direction:row}html[data-netbox-color-mode=dark] .navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}html[data-netbox-color-mode=dark] .navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}html[data-netbox-color-mode=dark] .navbar-expand-sm .navbar-nav-scroll{overflow:visible}html[data-netbox-color-mode=dark] .navbar-expand-sm .navbar-collapse{display:flex!important;flex-basis:auto}html[data-netbox-color-mode=dark] .navbar-expand-sm .navbar-toggler{display:none}}@media (min-width: 768px){html[data-netbox-color-mode=dark] .navbar-expand-md{flex-wrap:nowrap;justify-content:flex-start}html[data-netbox-color-mode=dark] .navbar-expand-md .navbar-nav{flex-direction:row}html[data-netbox-color-mode=dark] .navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}html[data-netbox-color-mode=dark] .navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}html[data-netbox-color-mode=dark] .navbar-expand-md .navbar-nav-scroll{overflow:visible}html[data-netbox-color-mode=dark] .navbar-expand-md .navbar-collapse{display:flex!important;flex-basis:auto}html[data-netbox-color-mode=dark] .navbar-expand-md .navbar-toggler{display:none}}@media (min-width: 992px){html[data-netbox-color-mode=dark] .navbar-expand-lg{flex-wrap:nowrap;justify-content:flex-start}html[data-netbox-color-mode=dark] .navbar-expand-lg .navbar-nav{flex-direction:row}html[data-netbox-color-mode=dark] .navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}html[data-netbox-color-mode=dark] .navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}html[data-netbox-color-mode=dark] .navbar-expand-lg .navbar-nav-scroll{overflow:visible}html[data-netbox-color-mode=dark] .navbar-expand-lg .navbar-collapse{display:flex!important;flex-basis:auto}html[data-netbox-color-mode=dark] .navbar-expand-lg .navbar-toggler{display:none}}@media (min-width: 1200px){html[data-netbox-color-mode=dark] .navbar-expand-xl{flex-wrap:nowrap;justify-content:flex-start}html[data-netbox-color-mode=dark] .navbar-expand-xl .navbar-nav{flex-direction:row}html[data-netbox-color-mode=dark] .navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}html[data-netbox-color-mode=dark] .navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}html[data-netbox-color-mode=dark] .navbar-expand-xl .navbar-nav-scroll{overflow:visible}html[data-netbox-color-mode=dark] .navbar-expand-xl .navbar-collapse{display:flex!important;flex-basis:auto}html[data-netbox-color-mode=dark] .navbar-expand-xl .navbar-toggler{display:none}}@media (min-width: 1400px){html[data-netbox-color-mode=dark] .navbar-expand-xxl{flex-wrap:nowrap;justify-content:flex-start}html[data-netbox-color-mode=dark] .navbar-expand-xxl .navbar-nav{flex-direction:row}html[data-netbox-color-mode=dark] .navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}html[data-netbox-color-mode=dark] .navbar-expand-xxl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}html[data-netbox-color-mode=dark] .navbar-expand-xxl .navbar-nav-scroll{overflow:visible}html[data-netbox-color-mode=dark] .navbar-expand-xxl .navbar-collapse{display:flex!important;flex-basis:auto}html[data-netbox-color-mode=dark] .navbar-expand-xxl .navbar-toggler{display:none}}html[data-netbox-color-mode=dark] .navbar-expand{flex-wrap:nowrap;justify-content:flex-start}html[data-netbox-color-mode=dark] .navbar-expand .navbar-nav{flex-direction:row}html[data-netbox-color-mode=dark] .navbar-expand .navbar-nav .dropdown-menu{position:absolute}html[data-netbox-color-mode=dark] .navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}html[data-netbox-color-mode=dark] .navbar-expand .navbar-nav-scroll{overflow:visible}html[data-netbox-color-mode=dark] .navbar-expand .navbar-collapse{display:flex!important;flex-basis:auto}html[data-netbox-color-mode=dark] .navbar-expand .navbar-toggler{display:none}html[data-netbox-color-mode=dark] .navbar-light .navbar-brand{color:#000000e6}html[data-netbox-color-mode=dark] .navbar-light .navbar-brand:hover,html[data-netbox-color-mode=dark] .navbar-light .navbar-brand:focus{color:#000000e6}html[data-netbox-color-mode=dark] .navbar-light .navbar-nav .nav-link{color:#adb5bd}html[data-netbox-color-mode=dark] .navbar-light .navbar-nav .nav-link:hover,html[data-netbox-color-mode=dark] .navbar-light .navbar-nav .nav-link:focus{color:#000000b3}html[data-netbox-color-mode=dark] .navbar-light .navbar-nav .nav-link.disabled{color:#0000004d}html[data-netbox-color-mode=dark] .navbar-light .navbar-nav .show>.nav-link,html[data-netbox-color-mode=dark] .navbar-light .navbar-nav .nav-link.active{color:#000000e6}html[data-netbox-color-mode=dark] .navbar-light .navbar-toggler{color:#adb5bd;border-color:#495057}html[data-netbox-color-mode=dark] .navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='%23adb5bd' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}html[data-netbox-color-mode=dark] .navbar-light .navbar-text{color:#adb5bd}html[data-netbox-color-mode=dark] .navbar-light .navbar-text a,html[data-netbox-color-mode=dark] .navbar-light .navbar-text a:hover,html[data-netbox-color-mode=dark] .navbar-light .navbar-text a:focus{color:#000000e6}html[data-netbox-color-mode=dark] .navbar-dark .navbar-brand{color:#fff}html[data-netbox-color-mode=dark] .navbar-dark .navbar-brand:hover,html[data-netbox-color-mode=dark] .navbar-dark .navbar-brand:focus{color:#fff}html[data-netbox-color-mode=dark] .navbar-dark .navbar-nav .nav-link{color:#ffffff8c}html[data-netbox-color-mode=dark] .navbar-dark .navbar-nav .nav-link:hover,html[data-netbox-color-mode=dark] .navbar-dark .navbar-nav .nav-link:focus{color:#ffffffbf}html[data-netbox-color-mode=dark] .navbar-dark .navbar-nav .nav-link.disabled{color:#ffffff40}html[data-netbox-color-mode=dark] .navbar-dark .navbar-nav .show>.nav-link,html[data-netbox-color-mode=dark] .navbar-dark .navbar-nav .nav-link.active{color:#fff}html[data-netbox-color-mode=dark] .navbar-dark .navbar-toggler{color:#ffffff8c;border-color:#ffffff1a}html[data-netbox-color-mode=dark] .navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}html[data-netbox-color-mode=dark] .navbar-dark .navbar-text{color:#ffffff8c}html[data-netbox-color-mode=dark] .navbar-dark .navbar-text a,html[data-netbox-color-mode=dark] .navbar-dark .navbar-text a:hover,html[data-netbox-color-mode=dark] .navbar-dark .navbar-text a:focus{color:#fff}html[data-netbox-color-mode=dark] .card{position:relative;display:flex;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#212529;background-clip:border-box;border:1px solid rgba(255,255,255,.125);border-radius:.375rem}html[data-netbox-color-mode=dark] .card>hr{margin-right:0;margin-left:0}html[data-netbox-color-mode=dark] .card>.list-group{border-top:inherit;border-bottom:inherit}html[data-netbox-color-mode=dark] .card>.list-group:first-child{border-top-width:0;border-top-left-radius:calc(.375rem - 1px);border-top-right-radius:calc(.375rem - 1px)}html[data-netbox-color-mode=dark] .card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:calc(.375rem - 1px);border-bottom-left-radius:calc(.375rem - 1px)}html[data-netbox-color-mode=dark] .card>.card-header+.list-group,html[data-netbox-color-mode=dark] .card>.list-group+.card-footer{border-top:0}html[data-netbox-color-mode=dark] .card-body{flex:1 1 auto;padding:1rem}html[data-netbox-color-mode=dark] .card-title{margin-bottom:.5rem}html[data-netbox-color-mode=dark] .card-subtitle{margin-top:-.25rem;margin-bottom:0}html[data-netbox-color-mode=dark] .card-text:last-child{margin-bottom:0}html[data-netbox-color-mode=dark] .card-link:hover{text-decoration:none}html[data-netbox-color-mode=dark] .card-link+.card-link{margin-left:1rem}html[data-netbox-color-mode=dark] .card-header{padding:.5rem 1rem;margin-bottom:0;background-color:"unset";border-bottom:1px solid rgba(255,255,255,.125)}html[data-netbox-color-mode=dark] .card-header:first-child{border-radius:calc(.375rem - 1px) calc(.375rem - 1px) 0 0}html[data-netbox-color-mode=dark] .card-footer{padding:.5rem 1rem;background-color:"unset";border-top:1px solid rgba(255,255,255,.125)}html[data-netbox-color-mode=dark] .card-footer:last-child{border-radius:0 0 calc(.375rem - 1px) calc(.375rem - 1px)}html[data-netbox-color-mode=dark] .card-header-tabs{margin-right:-.5rem;margin-bottom:-.5rem;margin-left:-.5rem;border-bottom:0}html[data-netbox-color-mode=dark] .card-header-tabs .nav-link.active{background-color:#212529;border-bottom-color:#212529}html[data-netbox-color-mode=dark] .card-header-pills{margin-right:-.5rem;margin-left:-.5rem}html[data-netbox-color-mode=dark] .card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1rem;border-radius:calc(.375rem - 1px)}html[data-netbox-color-mode=dark] .card-img,html[data-netbox-color-mode=dark] .card-img-top,html[data-netbox-color-mode=dark] .card-img-bottom{width:100%}html[data-netbox-color-mode=dark] .card-img,html[data-netbox-color-mode=dark] .card-img-top{border-top-left-radius:calc(.375rem - 1px);border-top-right-radius:calc(.375rem - 1px)}html[data-netbox-color-mode=dark] .card-img,html[data-netbox-color-mode=dark] .card-img-bottom{border-bottom-right-radius:calc(.375rem - 1px);border-bottom-left-radius:calc(.375rem - 1px)}html[data-netbox-color-mode=dark] .card-group>.card{margin-bottom:.75rem}@media (min-width: 576px){html[data-netbox-color-mode=dark] .card-group{display:flex;flex-flow:row wrap}html[data-netbox-color-mode=dark] .card-group>.card{flex:1 0 0%;margin-bottom:0}html[data-netbox-color-mode=dark] .card-group>.card+.card{margin-left:0;border-left:0}html[data-netbox-color-mode=dark] .card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}html[data-netbox-color-mode=dark] .card-group>.card:not(:last-child) .card-img-top,html[data-netbox-color-mode=dark] .card-group>.card:not(:last-child) .card-header{border-top-right-radius:0}html[data-netbox-color-mode=dark] .card-group>.card:not(:last-child) .card-img-bottom,html[data-netbox-color-mode=dark] .card-group>.card:not(:last-child) .card-footer{border-bottom-right-radius:0}html[data-netbox-color-mode=dark] .card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}html[data-netbox-color-mode=dark] .card-group>.card:not(:first-child) .card-img-top,html[data-netbox-color-mode=dark] .card-group>.card:not(:first-child) .card-header{border-top-left-radius:0}html[data-netbox-color-mode=dark] .card-group>.card:not(:first-child) .card-img-bottom,html[data-netbox-color-mode=dark] .card-group>.card:not(:first-child) .card-footer{border-bottom-left-radius:0}}html[data-netbox-color-mode=dark] .accordion-button{position:relative;display:flex;align-items:center;width:100%;padding:1rem 1.25rem;font-size:1rem;color:#fff;text-align:left;background-color:transparent;border:0;border-radius:0;overflow-anchor:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,border-radius .15s ease}@media (prefers-reduced-motion: reduce){html[data-netbox-color-mode=dark] .accordion-button{transition:none}}html[data-netbox-color-mode=dark] .accordion-button:not(.collapsed){color:#000;background-color:#6397e5;box-shadow:inset 0 -1px #495057}html[data-netbox-color-mode=dark] .accordion-button:not(.collapsed):after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");transform:rotate(-180deg)}html[data-netbox-color-mode=dark] .accordion-button:after{flex-shrink:0;width:1.25rem;height:1.25rem;margin-left:auto;content:"";background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-size:1.25rem;transition:transform .2s ease-in-out}@media (prefers-reduced-motion: reduce){html[data-netbox-color-mode=dark] .accordion-button:after{transition:none}}html[data-netbox-color-mode=dark] .accordion-button:hover{z-index:2}html[data-netbox-color-mode=dark] .accordion-button:focus{z-index:3;border-color:#7db1fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}html[data-netbox-color-mode=dark] .accordion-header{margin-bottom:0}html[data-netbox-color-mode=dark] .accordion-item{background-color:transparent;border:1px solid #495057}html[data-netbox-color-mode=dark] .accordion-item:first-of-type{border-top-left-radius:.375rem;border-top-right-radius:.375rem}html[data-netbox-color-mode=dark] .accordion-item:first-of-type .accordion-button{border-top-left-radius:calc(.375rem - 1px);border-top-right-radius:calc(.375rem - 1px)}html[data-netbox-color-mode=dark] .accordion-item:not(:first-of-type){border-top:0}html[data-netbox-color-mode=dark] .accordion-item:last-of-type{border-bottom-right-radius:.375rem;border-bottom-left-radius:.375rem}html[data-netbox-color-mode=dark] .accordion-item:last-of-type .accordion-button.collapsed{border-bottom-right-radius:calc(.375rem - 1px);border-bottom-left-radius:calc(.375rem - 1px)}html[data-netbox-color-mode=dark] .accordion-item:last-of-type .accordion-collapse{border-bottom-right-radius:.375rem;border-bottom-left-radius:.375rem}html[data-netbox-color-mode=dark] .accordion-body{padding:1rem 1.25rem}html[data-netbox-color-mode=dark] .accordion-flush .accordion-collapse{border-width:0}html[data-netbox-color-mode=dark] .accordion-flush .accordion-item{border-right:0;border-left:0;border-radius:0}html[data-netbox-color-mode=dark] .accordion-flush .accordion-item:first-child{border-top:0}html[data-netbox-color-mode=dark] .accordion-flush .accordion-item:last-child{border-bottom:0}html[data-netbox-color-mode=dark] .accordion-flush .accordion-item .accordion-button{border-radius:0}html[data-netbox-color-mode=dark] .breadcrumb{display:flex;flex-wrap:wrap;padding:0;margin-bottom:1rem;list-style:none}html[data-netbox-color-mode=dark] .breadcrumb-item+.breadcrumb-item{padding-left:.5rem}html[data-netbox-color-mode=dark] .breadcrumb-item+.breadcrumb-item:before{float:left;padding-right:.5rem;color:#f8f9fa;content:var(--bs-breadcrumb-divider, url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8'%3E%3Cpath d='M2.5 0L1 1.5 3.5 4 1 6.5 2.5 8l4-4-4-4z' fill='%23f8f9fa'/%3E%3C/svg%3E"))}html[data-netbox-color-mode=dark] .breadcrumb-item.active{color:#fff}html[data-netbox-color-mode=dark] .pagination{display:flex;padding-left:0;list-style:none}html[data-netbox-color-mode=dark] .page-link{position:relative;display:block;color:#9ec5fe;text-decoration:none;background-color:#343a40;border:1px solid #6c757d;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion: reduce){html[data-netbox-color-mode=dark] .page-link{transition:none}}html[data-netbox-color-mode=dark] .page-link:hover{z-index:2;color:#cfe2ff;background-color:#ced4da;border-color:#adb5bd}html[data-netbox-color-mode=dark] .page-link:focus{z-index:3;color:#cfe2ff;background-color:#ced4da;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}html[data-netbox-color-mode=dark] .page-item:not(:first-child) .page-link{margin-left:-1px}html[data-netbox-color-mode=dark] .page-item.active .page-link{z-index:3;color:#000;background-color:#6ea8fe;border-color:#6ea8fe}html[data-netbox-color-mode=dark] .page-item.disabled .page-link{color:#6c757d;pointer-events:none;background-color:#343a40;border-color:#6c757d}html[data-netbox-color-mode=dark] .page-link{padding:.375rem .75rem}html[data-netbox-color-mode=dark] .page-item:first-child .page-link{border-top-left-radius:.375rem;border-bottom-left-radius:.375rem}html[data-netbox-color-mode=dark] .page-item:last-child .page-link{border-top-right-radius:.375rem;border-bottom-right-radius:.375rem}html[data-netbox-color-mode=dark] .pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem}html[data-netbox-color-mode=dark] .pagination-lg .page-item:first-child .page-link{border-top-left-radius:.75rem;border-bottom-left-radius:.75rem}html[data-netbox-color-mode=dark] .pagination-lg .page-item:last-child .page-link{border-top-right-radius:.75rem;border-bottom-right-radius:.75rem}html[data-netbox-color-mode=dark] .pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem}html[data-netbox-color-mode=dark] .pagination-sm .page-item:first-child .page-link{border-top-left-radius:.375rem;border-bottom-left-radius:.375rem}html[data-netbox-color-mode=dark] .pagination-sm .page-item:last-child .page-link{border-top-right-radius:.375rem;border-bottom-right-radius:.375rem}html[data-netbox-color-mode=dark] .badge{display:inline-block;padding:.35em .65em;font-size:.75em;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.375rem}html[data-netbox-color-mode=dark] .badge:empty{display:none}html[data-netbox-color-mode=dark] .btn .badge{position:relative;top:-1px}html[data-netbox-color-mode=dark] .alert{position:relative;padding:1rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.375rem}html[data-netbox-color-mode=dark] .alert-heading{color:inherit}html[data-netbox-color-mode=dark] .alert-link{font-weight:700}html[data-netbox-color-mode=dark] .alert-dismissible{padding-right:3rem}html[data-netbox-color-mode=dark] .alert-dismissible .btn-close{position:absolute;top:0;right:0;z-index:2;padding:1.25rem 1rem}html[data-netbox-color-mode=dark] .alert-primary{color:#162233;background-color:#75acfe;border-color:#8bb9fe}html[data-netbox-color-mode=dark] .alert-primary .alert-link{color:#121b29}html[data-netbox-color-mode=dark] .alert-secondary{color:#232426;background-color:#b1b9c0;border-color:#bdc4ca}html[data-netbox-color-mode=dark] .alert-secondary .alert-link{color:#1c1d1e}html[data-netbox-color-mode=dark] .alert-success{color:#17251e;background-color:#7cbb9d;border-color:#91c5ad}html[data-netbox-color-mode=dark] .alert-success .alert-link{color:#121e18}html[data-netbox-color-mode=dark] .alert-info{color:#162d31;background-color:#75e1f6;border-color:#8be5f8}html[data-netbox-color-mode=dark] .alert-info .alert-link{color:#122427}html[data-netbox-color-mode=dark] .alert-warning{color:#332c15;background-color:#ffdc71;border-color:#ffe188}html[data-netbox-color-mode=dark] .alert-warning .alert-link{color:#292311}html[data-netbox-color-mode=dark] .alert-danger{color:#2f1b1d;background-color:#eb8c95;border-color:#ee9ea5}html[data-netbox-color-mode=dark] .alert-danger .alert-link{color:#261617}html[data-netbox-color-mode=dark] .alert-light{color:#2c2d2e;background-color:#e0e3e7;border-color:#e5e8eb}html[data-netbox-color-mode=dark] .alert-light .alert-link{color:#232425}html[data-netbox-color-mode=dark] .alert-dark{color:#232426;background-color:#b1b9c0;border-color:#bdc4ca}html[data-netbox-color-mode=dark] .alert-dark .alert-link{color:#1c1d1e}html[data-netbox-color-mode=dark] .alert-red{color:#2f1b1d;background-color:#eb8c95;border-color:#ee9ea5}html[data-netbox-color-mode=dark] .alert-red .alert-link{color:#261617}html[data-netbox-color-mode=dark] .alert-yellow{color:#332c15;background-color:#ffdc71;border-color:#ffe188}html[data-netbox-color-mode=dark] .alert-yellow .alert-link{color:#292311}html[data-netbox-color-mode=dark] .alert-green{color:#17251e;background-color:#7cbb9d;border-color:#91c5ad}html[data-netbox-color-mode=dark] .alert-green .alert-link{color:#121e18}html[data-netbox-color-mode=dark] .alert-blue{color:#162233;background-color:#75acfe;border-color:#8bb9fe}html[data-netbox-color-mode=dark] .alert-blue .alert-link{color:#121b29}html[data-netbox-color-mode=dark] .alert-cyan{color:#162d31;background-color:#75e1f6;border-color:#8be5f8}html[data-netbox-color-mode=dark] .alert-cyan .alert-link{color:#122427}html[data-netbox-color-mode=dark] .alert-indigo{color:#211631;background-color:#a877f7;border-color:#b58df9}html[data-netbox-color-mode=dark] .alert-indigo .alert-link{color:#1a1227}html[data-netbox-color-mode=dark] .alert-purple{color:#221c2c;background-color:#ad94dc;border-color:#baa5e1}html[data-netbox-color-mode=dark] .alert-purple .alert-link{color:#1b1623}html[data-netbox-color-mode=dark] .alert-pink{color:#2e1b24;background-color:#e78bb9;border-color:#eb9dc4}html[data-netbox-color-mode=dark] .alert-pink .alert-link{color:#25161d}html[data-netbox-color-mode=dark] .alert-darker{color:#d1d2d3;background-color:#262a2d;border-color:#494c4e}html[data-netbox-color-mode=dark] .alert-darker .alert-link{color:#a7a8a9}html[data-netbox-color-mode=dark] .alert-darkest{color:#d1d1d2;background-color:#232628;border-color:#45494a}html[data-netbox-color-mode=dark] .alert-darkest .alert-link{color:#a7a7a8}html[data-netbox-color-mode=dark] .alert-gray{color:#292a2c;background-color:#d0d6dc;border-color:#d8dde1}html[data-netbox-color-mode=dark] .alert-gray .alert-link{color:#212223}html[data-netbox-color-mode=dark] .alert-gray-100{color:#323232;background-color:#f8f9fa;border-color:#f9fafb}html[data-netbox-color-mode=dark] .alert-gray-100 .alert-link{color:#282828}html[data-netbox-color-mode=dark] .alert-gray-200{color:#2f2f30;background-color:#eaedf0;border-color:#edf0f2}html[data-netbox-color-mode=dark] .alert-gray-200 .alert-link{color:#262626}html[data-netbox-color-mode=dark] .alert-gray-300{color:#2c2d2e;background-color:#e0e3e7;border-color:#e5e8eb}html[data-netbox-color-mode=dark] .alert-gray-300 .alert-link{color:#232425}html[data-netbox-color-mode=dark] .alert-gray-400{color:#292a2c;background-color:#d0d6dc;border-color:#d8dde1}html[data-netbox-color-mode=dark] .alert-gray-400 .alert-link{color:#212223}html[data-netbox-color-mode=dark] .alert-gray-500{color:#232426;background-color:#b1b9c0;border-color:#bdc4ca}html[data-netbox-color-mode=dark] .alert-gray-500 .alert-link{color:#1c1d1e}html[data-netbox-color-mode=dark] .alert-gray-600{color:#161719;background-color:#737c84;border-color:#899197}html[data-netbox-color-mode=dark] .alert-gray-600 .alert-link{color:#121214}html[data-netbox-color-mode=dark] .alert-gray-700{color:#dbdcdd;background-color:#52595f;border-color:#6d7379}html[data-netbox-color-mode=dark] .alert-gray-700 .alert-link{color:#afb0b1}html[data-netbox-color-mode=dark] .alert-gray-800{color:#d6d8d9;background-color:#3e444a;border-color:#5d6166}html[data-netbox-color-mode=dark] .alert-gray-800 .alert-link{color:#abadae}html[data-netbox-color-mode=dark] .alert-gray-900{color:#d3d3d4;background-color:#2c3034;border-color:#4d5154}html[data-netbox-color-mode=dark] .alert-gray-900 .alert-link{color:#a9a9aa}html[data-netbox-color-mode=dark] .alert-red-100{color:#322b2c;background-color:#f8d9dc;border-color:#f9dfe1}html[data-netbox-color-mode=dark] .alert-red-100 .alert-link{color:#282223}html[data-netbox-color-mode=dark] .alert-red-200{color:#302324;background-color:#f2b2b9;border-color:#f4bec4}html[data-netbox-color-mode=dark] .alert-red-200 .alert-link{color:#261c1d}html[data-netbox-color-mode=dark] .alert-red-300{color:#2f1b1d;background-color:#eb8c95;border-color:#ee9ea5}html[data-netbox-color-mode=dark] .alert-red-300 .alert-link{color:#261617}html[data-netbox-color-mode=dark] .alert-red-400{color:#2d1315;background-color:#e46571;border-color:#e97d88}html[data-netbox-color-mode=dark] .alert-red-400 .alert-link{color:#240f11}html[data-netbox-color-mode=dark] .alert-red-500{color:#2c0b0e;background-color:#de3f4e;border-color:#e35d6a}html[data-netbox-color-mode=dark] .alert-red-500 .alert-link{color:#23090b}html[data-netbox-color-mode=dark] .alert-red-600{color:#efd4d7;background-color:#b43541;border-color:#c0555f}html[data-netbox-color-mode=dark] .alert-red-600 .alert-link{color:#bfaaac}html[data-netbox-color-mode=dark] .alert-red-700{color:#e6d2d4;background-color:#8a2b34;border-color:#9d4d54}html[data-netbox-color-mode=dark] .alert-red-700 .alert-link{color:#b8a8aa}html[data-netbox-color-mode=dark] .alert-red-800{color:#ded0d2;background-color:#602127;border-color:#794449}html[data-netbox-color-mode=dark] .alert-red-800 .alert-link{color:#b2a6a8}html[data-netbox-color-mode=dark] .alert-red-900{color:#d5cecf;background-color:#37171a;border-color:#563c3e}html[data-netbox-color-mode=dark] .alert-red-900 .alert-link{color:#aaa5a6}html[data-netbox-color-mode=dark] .alert-yellow-100{color:#333129;background-color:#fff4d0;border-color:#fff5d7}html[data-netbox-color-mode=dark] .alert-yellow-100 .alert-link{color:#292721}html[data-netbox-color-mode=dark] .alert-yellow-200{color:#332e1f;background-color:#ffe7a1;border-color:#ffebb0}html[data-netbox-color-mode=dark] .alert-yellow-200 .alert-link{color:#292519}html[data-netbox-color-mode=dark] .alert-yellow-300{color:#332c15;background-color:#ffdc71;border-color:#ffe188}html[data-netbox-color-mode=dark] .alert-yellow-300 .alert-link{color:#292311}html[data-netbox-color-mode=dark] .alert-yellow-400{color:#33290b;background-color:#ffd043;border-color:#ffd761}html[data-netbox-color-mode=dark] .alert-yellow-400 .alert-link{color:#292109}html[data-netbox-color-mode=dark] .alert-yellow-500{color:#332701;background-color:#ffc413;border-color:#ffcd39}html[data-netbox-color-mode=dark] .alert-yellow-500 .alert-link{color:#291f01}html[data-netbox-color-mode=dark] .alert-yellow-600{color:#291f01;background-color:#cf9f12;border-color:#d6ae38}html[data-netbox-color-mode=dark] .alert-yellow-600 .alert-link{color:#211901}html[data-netbox-color-mode=dark] .alert-yellow-700{color:#1f1701;background-color:#9e7b11;border-color:#ad9036}html[data-netbox-color-mode=dark] .alert-yellow-700 .alert-link{color:#191201}html[data-netbox-color-mode=dark] .alert-yellow-800{color:#e0dbcd;background-color:#6e5610;border-color:#857135}html[data-netbox-color-mode=dark] .alert-yellow-800 .alert-link{color:#b3afa4}html[data-netbox-color-mode=dark] .alert-yellow-900{color:#d6d4cc;background-color:#3d320e;border-color:#5c5234}html[data-netbox-color-mode=dark] .alert-yellow-900 .alert-link{color:#abaaa3}html[data-netbox-color-mode=dark] .alert-green-100{color:#2a2e2c;background-color:#d3e8df;border-color:#daece4}html[data-netbox-color-mode=dark] .alert-green-100 .alert-link{color:#222523}html[data-netbox-color-mode=dark] .alert-green-200{color:#212925;background-color:#a8d1be;border-color:#b5d9c9}html[data-netbox-color-mode=dark] .alert-green-200 .alert-link{color:#1a211e}html[data-netbox-color-mode=dark] .alert-green-300{color:#17251e;background-color:#7cbb9d;border-color:#91c5ad}html[data-netbox-color-mode=dark] .alert-green-300 .alert-link{color:#121e18}html[data-netbox-color-mode=dark] .alert-green-400{color:#0e2018;background-color:#50a47d;border-color:#6cb291}html[data-netbox-color-mode=dark] .alert-green-400 .alert-link{color:#0b1a13}html[data-netbox-color-mode=dark] .alert-green-500{color:#051b11;background-color:#258d5d;border-color:#479f76}html[data-netbox-color-mode=dark] .alert-green-500 .alert-link{color:#04160e}html[data-netbox-color-mode=dark] .alert-green-600{color:#d0e2d9;background-color:#20734c;border-color:#438969}html[data-netbox-color-mode=dark] .alert-green-600 .alert-link{color:#a6b5ae}html[data-netbox-color-mode=dark] .alert-green-700{color:#cfdcd6;background-color:#1b5a3c;border-color:#3f745b}html[data-netbox-color-mode=dark] .alert-green-700 .alert-link{color:#a6b0ab}html[data-netbox-color-mode=dark] .alert-green-800{color:#ced7d3;background-color:#16402d;border-color:#3b5e4e}html[data-netbox-color-mode=dark] .alert-green-800 .alert-link{color:#a5aca9}html[data-netbox-color-mode=dark] .alert-green-900{color:#cdd1cf;background-color:#12261d;border-color:#374941}html[data-netbox-color-mode=dark] .alert-green-900 .alert-link{color:#a4a7a6}html[data-netbox-color-mode=dark] .alert-blue-100{color:#292d33;background-color:#d1e3ff;border-color:#d9e8ff}html[data-netbox-color-mode=dark] .alert-blue-100 .alert-link{color:#212429}html[data-netbox-color-mode=dark] .alert-blue-200{color:#202733;background-color:#a3c8fe;border-color:#b1d1fe}html[data-netbox-color-mode=dark] .alert-blue-200 .alert-link{color:#1a1f29}html[data-netbox-color-mode=dark] .alert-blue-300{color:#162233;background-color:#75acfe;border-color:#8bb9fe}html[data-netbox-color-mode=dark] .alert-blue-300 .alert-link{color:#121b29}html[data-netbox-color-mode=dark] .alert-blue-400{color:#0c1c33;background-color:#4791fd;border-color:#64a2fd}html[data-netbox-color-mode=dark] .alert-blue-400 .alert-link{color:#0a1629}html[data-netbox-color-mode=dark] .alert-blue-500{color:#031633;background-color:#1975fd;border-color:#3d8bfd}html[data-netbox-color-mode=dark] .alert-blue-500 .alert-link{color:#021229}html[data-netbox-color-mode=dark] .alert-blue-600{color:#cedef4;background-color:#1660cd;border-color:#3b79d5}html[data-netbox-color-mode=dark] .alert-blue-600 .alert-link{color:#a5b2c3}html[data-netbox-color-mode=dark] .alert-blue-700{color:#ced9ea;background-color:#144b9d;border-color:#3968ad}html[data-netbox-color-mode=dark] .alert-blue-700 .alert-link{color:#a5aebb}html[data-netbox-color-mode=dark] .alert-blue-800{color:#cdd5e0;background-color:#12376d;border-color:#375684}html[data-netbox-color-mode=dark] .alert-blue-800 .alert-link{color:#a4aab3}html[data-netbox-color-mode=dark] .alert-blue-900{color:#cdd0d6;background-color:#10223d;border-color:#35455c}html[data-netbox-color-mode=dark] .alert-blue-900 .alert-link{color:#a4a6ab}html[data-netbox-color-mode=dark] .alert-cyan-100{color:#293132;background-color:#d1f5fc;border-color:#d9f6fd}html[data-netbox-color-mode=dark] .alert-cyan-100 .alert-link{color:#212728}html[data-netbox-color-mode=dark] .alert-cyan-200{color:#202f32;background-color:#a3ebf9;border-color:#b1eefa}html[data-netbox-color-mode=dark] .alert-cyan-200 .alert-link{color:#1a2628}html[data-netbox-color-mode=dark] .alert-cyan-300{color:#162d31;background-color:#75e1f6;border-color:#8be5f8}html[data-netbox-color-mode=dark] .alert-cyan-300 .alert-link{color:#122427}html[data-netbox-color-mode=dark] .alert-cyan-400{color:#0c2b31;background-color:#47d7f4;border-color:#64ddf5}html[data-netbox-color-mode=dark] .alert-cyan-400 .alert-link{color:#0a2227}html[data-netbox-color-mode=dark] .alert-cyan-500{color:#032830;background-color:#19cdf1;border-color:#3dd5f3}html[data-netbox-color-mode=dark] .alert-cyan-500 .alert-link{color:#022026}html[data-netbox-color-mode=dark] .alert-cyan-600{color:#022026;background-color:#16a7c3;border-color:#3bb5cd}html[data-netbox-color-mode=dark] .alert-cyan-600 .alert-link{color:#021a1e}html[data-netbox-color-mode=dark] .alert-cyan-700{color:#cee4e9;background-color:#148096;border-color:#3994a6}html[data-netbox-color-mode=dark] .alert-cyan-700 .alert-link{color:#a5b6ba}html[data-netbox-color-mode=dark] .alert-cyan-800{color:#cddcdf;background-color:#125a68;border-color:#377480}html[data-netbox-color-mode=dark] .alert-cyan-800 .alert-link{color:#a4b0b2}html[data-netbox-color-mode=dark] .alert-cyan-900{color:#cdd4d6;background-color:#10333a;border-color:#355359}html[data-netbox-color-mode=dark] .alert-cyan-900 .alert-link{color:#a4aaab}html[data-netbox-color-mode=dark] .alert-indigo-100{color:#2d2932;background-color:#e2d1fc;border-color:#e6d9fd}html[data-netbox-color-mode=dark] .alert-indigo-100 .alert-link{color:#242128}html[data-netbox-color-mode=dark] .alert-indigo-200{color:#272032;background-color:#c5a4fa;border-color:#ceb2fb}html[data-netbox-color-mode=dark] .alert-indigo-200 .alert-link{color:#1f1a28}html[data-netbox-color-mode=dark] .alert-indigo-300{color:#211631;background-color:#a877f7;border-color:#b58df9}html[data-netbox-color-mode=dark] .alert-indigo-300 .alert-link{color:#1a1227}html[data-netbox-color-mode=dark] .alert-indigo-400{color:#e7d9fd;background-color:#8b4af6;border-color:#9d66f7}html[data-netbox-color-mode=dark] .alert-indigo-400 .alert-link{color:#b9aeca}html[data-netbox-color-mode=dark] .alert-indigo-500{color:#e0cffc;background-color:#6e1cf3;border-color:#8540f5}html[data-netbox-color-mode=dark] .alert-indigo-500 .alert-link{color:#b3a6ca}html[data-netbox-color-mode=dark] .alert-indigo-600{color:#dccff3;background-color:#5b19c5;border-color:#753dce}html[data-netbox-color-mode=dark] .alert-indigo-600 .alert-link{color:#b0a6c2}html[data-netbox-color-mode=dark] .alert-indigo-700{color:#d8cee9;background-color:#471697;border-color:#643ba7}html[data-netbox-color-mode=dark] .alert-indigo-700 .alert-link{color:#ada5ba}html[data-netbox-color-mode=dark] .alert-indigo-800{color:#d4cddf;background-color:#341269;border-color:#543881}html[data-netbox-color-mode=dark] .alert-indigo-800 .alert-link{color:#aaa4b2}html[data-netbox-color-mode=dark] .alert-indigo-900{color:#d0cdd6;background-color:#20103a;border-color:#433559}html[data-netbox-color-mode=dark] .alert-indigo-900 .alert-link{color:#a6a4ab}html[data-netbox-color-mode=dark] .alert-purple-100{color:#2d2b31;background-color:#e3dbf4;border-color:#e8e1f5}html[data-netbox-color-mode=dark] .alert-purple-100 .alert-link{color:#242227}html[data-netbox-color-mode=dark] .alert-purple-200{color:#27242e;background-color:#c8b7e7;border-color:#d1c2eb}html[data-netbox-color-mode=dark] .alert-purple-200 .alert-link{color:#1f1d25}html[data-netbox-color-mode=dark] .alert-purple-300{color:#221c2c;background-color:#ad94dc;border-color:#baa5e1}html[data-netbox-color-mode=dark] .alert-purple-300 .alert-link{color:#1b1623}html[data-netbox-color-mode=dark] .alert-purple-400{color:#1c1529;background-color:#9270d0;border-color:#a386d7}html[data-netbox-color-mode=dark] .alert-purple-400 .alert-link{color:#161121}html[data-netbox-color-mode=dark] .alert-purple-500{color:#e2d9f3;background-color:#764bc4;border-color:#8c68cd}html[data-netbox-color-mode=dark] .alert-purple-500 .alert-link{color:#b5aec2}html[data-netbox-color-mode=dark] .alert-purple-600{color:#ded7eb;background-color:#613f9f;border-color:#7a5dae}html[data-netbox-color-mode=dark] .alert-purple-600 .alert-link{color:#b2acbc}html[data-netbox-color-mode=dark] .alert-purple-700{color:#d9d4e3;background-color:#4c337b;border-color:#695390}html[data-netbox-color-mode=dark] .alert-purple-700 .alert-link{color:#aeaab6}html[data-netbox-color-mode=dark] .alert-purple-800{color:#d5d1db;background-color:#372556;border-color:#564871}html[data-netbox-color-mode=dark] .alert-purple-800 .alert-link{color:#aaa7af}html[data-netbox-color-mode=dark] .alert-purple-900{color:#d0cfd4;background-color:#221932;border-color:#453d52}html[data-netbox-color-mode=dark] .alert-purple-900 .alert-link{color:#a6a6aa}html[data-netbox-color-mode=dark] .alert-pink-100{color:#312b2e;background-color:#f7d8e7;border-color:#f9deeb}html[data-netbox-color-mode=dark] .alert-pink-100 .alert-link{color:#272225}html[data-netbox-color-mode=dark] .alert-pink-200{color:#302329;background-color:#f0b1d0;border-color:#f2bdd8}html[data-netbox-color-mode=dark] .alert-pink-200 .alert-link{color:#261c21}html[data-netbox-color-mode=dark] .alert-pink-300{color:#2e1b24;background-color:#e78bb9;border-color:#eb9dc4}html[data-netbox-color-mode=dark] .alert-pink-300 .alert-link{color:#25161d}html[data-netbox-color-mode=dark] .alert-pink-400{color:#2c121f;background-color:#e064a2;border-color:#e57db1}html[data-netbox-color-mode=dark] .alert-pink-400 .alert-link{color:#230e19}html[data-netbox-color-mode=dark] .alert-pink-500{color:#2b0a1a;background-color:#d83d8a;border-color:#de5c9d}html[data-netbox-color-mode=dark] .alert-pink-500 .alert-link{color:#220815}html[data-netbox-color-mode=dark] .alert-pink-600{color:#eed4e1;background-color:#af3471;border-color:#bc5488}html[data-netbox-color-mode=dark] .alert-pink-600 .alert-link{color:#beaab4}html[data-netbox-color-mode=dark] .alert-pink-700{color:#e6d2dc;background-color:#862a58;border-color:#994c72}html[data-netbox-color-mode=dark] .alert-pink-700 .alert-link{color:#b8a8b0}html[data-netbox-color-mode=dark] .alert-pink-800{color:#ddd0d7;background-color:#5e203f;border-color:#78435d}html[data-netbox-color-mode=dark] .alert-pink-800 .alert-link{color:#b1a6ac}html[data-netbox-color-mode=dark] .alert-pink-900{color:#d5ced1;background-color:#361625;border-color:#553b48}html[data-netbox-color-mode=dark] .alert-pink-900 .alert-link{color:#aaa5a7}@keyframes progress-bar-stripes{0%{background-position-x:1rem}}html[data-netbox-color-mode=dark] .progress{display:flex;height:1rem;overflow:hidden;font-size:.75rem;background-color:#6c757d;border-radius:.375rem}html[data-netbox-color-mode=dark] .progress-bar{display:flex;flex-direction:column;justify-content:center;overflow:hidden;color:#fff;text-align:center;white-space:nowrap;background-color:#6ea8fe;transition:width .6s ease}@media (prefers-reduced-motion: reduce){html[data-netbox-color-mode=dark] .progress-bar{transition:none}}html[data-netbox-color-mode=dark] .progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:1rem 1rem}html[data-netbox-color-mode=dark] .progress-bar-animated{animation:1s linear infinite progress-bar-stripes}@media (prefers-reduced-motion: reduce){html[data-netbox-color-mode=dark] .progress-bar-animated{animation:none}}html[data-netbox-color-mode=dark] .list-group{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:.375rem}html[data-netbox-color-mode=dark] .list-group-numbered{list-style-type:none;counter-reset:section}html[data-netbox-color-mode=dark] .list-group-numbered>li:before{content:counters(section,".") ". ";counter-increment:section}html[data-netbox-color-mode=dark] .list-group-item-action{width:100%;color:#dee2e6;text-align:inherit}html[data-netbox-color-mode=dark] .list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-action:focus{z-index:1;color:#fff;text-decoration:none;background-color:#f8f9fa26}html[data-netbox-color-mode=dark] .list-group-item-action:active{color:#fff;background-color:#dee2e620}html[data-netbox-color-mode=dark] .list-group-item{position:relative;display:block;padding:.5rem 1rem;color:#fff;text-decoration:none;background-color:#212529;border:1px solid rgba(255,255,255,.125)}html[data-netbox-color-mode=dark] .list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}html[data-netbox-color-mode=dark] .list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}html[data-netbox-color-mode=dark] .list-group-item.disabled,html[data-netbox-color-mode=dark] .list-group-item:disabled{color:#6c757d;pointer-events:none;background-color:#212529}html[data-netbox-color-mode=dark] .list-group-item.active{z-index:2;color:#000;background-color:#6ea8fe;border-color:#6ea8fe}html[data-netbox-color-mode=dark] .list-group-item+html[data-netbox-color-mode=dark] .list-group-item{border-top-width:0}html[data-netbox-color-mode=dark] .list-group-item+html[data-netbox-color-mode=dark] .list-group-item.active{margin-top:-1px;border-top-width:1px}html[data-netbox-color-mode=dark] .list-group-horizontal{flex-direction:row}html[data-netbox-color-mode=dark] .list-group-horizontal>.list-group-item:first-child{border-bottom-left-radius:.375rem;border-top-right-radius:0}html[data-netbox-color-mode=dark] .list-group-horizontal>.list-group-item:last-child{border-top-right-radius:.375rem;border-bottom-left-radius:0}html[data-netbox-color-mode=dark] .list-group-horizontal>.list-group-item.active{margin-top:0}html[data-netbox-color-mode=dark] .list-group-horizontal>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}html[data-netbox-color-mode=dark] .list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}@media (min-width: 576px){html[data-netbox-color-mode=dark] .list-group-horizontal-sm{flex-direction:row}html[data-netbox-color-mode=dark] .list-group-horizontal-sm>.list-group-item:first-child{border-bottom-left-radius:.375rem;border-top-right-radius:0}html[data-netbox-color-mode=dark] .list-group-horizontal-sm>.list-group-item:last-child{border-top-right-radius:.375rem;border-bottom-left-radius:0}html[data-netbox-color-mode=dark] .list-group-horizontal-sm>.list-group-item.active{margin-top:0}html[data-netbox-color-mode=dark] .list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}html[data-netbox-color-mode=dark] .list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width: 768px){html[data-netbox-color-mode=dark] .list-group-horizontal-md{flex-direction:row}html[data-netbox-color-mode=dark] .list-group-horizontal-md>.list-group-item:first-child{border-bottom-left-radius:.375rem;border-top-right-radius:0}html[data-netbox-color-mode=dark] .list-group-horizontal-md>.list-group-item:last-child{border-top-right-radius:.375rem;border-bottom-left-radius:0}html[data-netbox-color-mode=dark] .list-group-horizontal-md>.list-group-item.active{margin-top:0}html[data-netbox-color-mode=dark] .list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}html[data-netbox-color-mode=dark] .list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width: 992px){html[data-netbox-color-mode=dark] .list-group-horizontal-lg{flex-direction:row}html[data-netbox-color-mode=dark] .list-group-horizontal-lg>.list-group-item:first-child{border-bottom-left-radius:.375rem;border-top-right-radius:0}html[data-netbox-color-mode=dark] .list-group-horizontal-lg>.list-group-item:last-child{border-top-right-radius:.375rem;border-bottom-left-radius:0}html[data-netbox-color-mode=dark] .list-group-horizontal-lg>.list-group-item.active{margin-top:0}html[data-netbox-color-mode=dark] .list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}html[data-netbox-color-mode=dark] .list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width: 1200px){html[data-netbox-color-mode=dark] .list-group-horizontal-xl{flex-direction:row}html[data-netbox-color-mode=dark] .list-group-horizontal-xl>.list-group-item:first-child{border-bottom-left-radius:.375rem;border-top-right-radius:0}html[data-netbox-color-mode=dark] .list-group-horizontal-xl>.list-group-item:last-child{border-top-right-radius:.375rem;border-bottom-left-radius:0}html[data-netbox-color-mode=dark] .list-group-horizontal-xl>.list-group-item.active{margin-top:0}html[data-netbox-color-mode=dark] .list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}html[data-netbox-color-mode=dark] .list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width: 1400px){html[data-netbox-color-mode=dark] .list-group-horizontal-xxl{flex-direction:row}html[data-netbox-color-mode=dark] .list-group-horizontal-xxl>.list-group-item:first-child{border-bottom-left-radius:.375rem;border-top-right-radius:0}html[data-netbox-color-mode=dark] .list-group-horizontal-xxl>.list-group-item:last-child{border-top-right-radius:.375rem;border-bottom-left-radius:0}html[data-netbox-color-mode=dark] .list-group-horizontal-xxl>.list-group-item.active{margin-top:0}html[data-netbox-color-mode=dark] .list-group-horizontal-xxl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}html[data-netbox-color-mode=dark] .list-group-horizontal-xxl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}html[data-netbox-color-mode=dark] .list-group-flush{border-radius:0}html[data-netbox-color-mode=dark] .list-group-flush>.list-group-item{border-width:0 0 1px}html[data-netbox-color-mode=dark] .list-group-flush>.list-group-item:last-child{border-bottom-width:0}html[data-netbox-color-mode=dark] .list-group-item-primary{color:#426598;background-color:#e2eeff}html[data-netbox-color-mode=dark] .list-group-item-primary.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-primary.list-group-item-action:focus{color:#426598;background-color:#cbd6e6}html[data-netbox-color-mode=dark] .list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#426598;border-color:#426598}html[data-netbox-color-mode=dark] .list-group-item-secondary{color:#686d71;background-color:#eff0f2}html[data-netbox-color-mode=dark] .list-group-item-secondary.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-secondary.list-group-item-action:focus{color:#686d71;background-color:#d7d8da}html[data-netbox-color-mode=dark] .list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#686d71;border-color:#686d71}html[data-netbox-color-mode=dark] .list-group-item-success{color:#466e5b;background-color:#e3f1ea}html[data-netbox-color-mode=dark] .list-group-item-success.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-success.list-group-item-action:focus{color:#466e5b;background-color:#ccd9d3}html[data-netbox-color-mode=dark] .list-group-item-success.list-group-item-action.active{color:#fff;background-color:#466e5b;border-color:#466e5b}html[data-netbox-color-mode=dark] .list-group-item-info{color:#2c5962;background-color:#e2f9fd}html[data-netbox-color-mode=dark] .list-group-item-info.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-info.list-group-item-action:focus{color:#2c5962;background-color:#cbe0e4}html[data-netbox-color-mode=dark] .list-group-item-info.list-group-item-action.active{color:#fff;background-color:#2c5962;border-color:#2c5962}html[data-netbox-color-mode=dark] .list-group-item-warning{color:#66572a;background-color:#fff8e1}html[data-netbox-color-mode=dark] .list-group-item-warning.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-warning.list-group-item-action:focus{color:#66572a;background-color:#e6dfcb}html[data-netbox-color-mode=dark] .list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#66572a;border-color:#66572a}html[data-netbox-color-mode=dark] .list-group-item-danger{color:#8c5056;background-color:#fbe7e9}html[data-netbox-color-mode=dark] .list-group-item-danger.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-danger.list-group-item-action:focus{color:#8c5056;background-color:#e2d0d2}html[data-netbox-color-mode=dark] .list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#8c5056;border-color:#8c5056}html[data-netbox-color-mode=dark] .list-group-item-light{color:#595a5c;background-color:#f8f9fa}html[data-netbox-color-mode=dark] .list-group-item-light.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-light.list-group-item-action:focus{color:#595a5c;background-color:#dfe0e1}html[data-netbox-color-mode=dark] .list-group-item-light.list-group-item-action.active{color:#fff;background-color:#595a5c;border-color:#595a5c}html[data-netbox-color-mode=dark] .list-group-item-dark{color:#686d71;background-color:#eff0f2}html[data-netbox-color-mode=dark] .list-group-item-dark.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-dark.list-group-item-action:focus{color:#686d71;background-color:#d7d8da}html[data-netbox-color-mode=dark] .list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#686d71;border-color:#686d71}html[data-netbox-color-mode=dark] .list-group-item-red{color:#8c5056;background-color:#fbe7e9}html[data-netbox-color-mode=dark] .list-group-item-red.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-red.list-group-item-action:focus{color:#8c5056;background-color:#e2d0d2}html[data-netbox-color-mode=dark] .list-group-item-red.list-group-item-action.active{color:#fff;background-color:#8c5056;border-color:#8c5056}html[data-netbox-color-mode=dark] .list-group-item-yellow{color:#66572a;background-color:#fff8e1}html[data-netbox-color-mode=dark] .list-group-item-yellow.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-yellow.list-group-item-action:focus{color:#66572a;background-color:#e6dfcb}html[data-netbox-color-mode=dark] .list-group-item-yellow.list-group-item-action.active{color:#fff;background-color:#66572a;border-color:#66572a}html[data-netbox-color-mode=dark] .list-group-item-green{color:#466e5b;background-color:#e3f1ea}html[data-netbox-color-mode=dark] .list-group-item-green.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-green.list-group-item-action:focus{color:#466e5b;background-color:#ccd9d3}html[data-netbox-color-mode=dark] .list-group-item-green.list-group-item-action.active{color:#fff;background-color:#466e5b;border-color:#466e5b}html[data-netbox-color-mode=dark] .list-group-item-blue{color:#426598;background-color:#e2eeff}html[data-netbox-color-mode=dark] .list-group-item-blue.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-blue.list-group-item-action:focus{color:#426598;background-color:#cbd6e6}html[data-netbox-color-mode=dark] .list-group-item-blue.list-group-item-action.active{color:#fff;background-color:#426598;border-color:#426598}html[data-netbox-color-mode=dark] .list-group-item-cyan{color:#2c5962;background-color:#e2f9fd}html[data-netbox-color-mode=dark] .list-group-item-cyan.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-cyan.list-group-item-action:focus{color:#2c5962;background-color:#cbe0e4}html[data-netbox-color-mode=dark] .list-group-item-cyan.list-group-item-action.active{color:#fff;background-color:#2c5962;border-color:#2c5962}html[data-netbox-color-mode=dark] .list-group-item-indigo{color:#624394;background-color:#ede2fd}html[data-netbox-color-mode=dark] .list-group-item-indigo.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-indigo.list-group-item-action:focus{color:#624394;background-color:#d5cbe4}html[data-netbox-color-mode=dark] .list-group-item-indigo.list-group-item-action.active{color:#fff;background-color:#624394;border-color:#624394}html[data-netbox-color-mode=dark] .list-group-item-purple{color:#655583;background-color:#eee8f8}html[data-netbox-color-mode=dark] .list-group-item-purple.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-purple.list-group-item-action:focus{color:#655583;background-color:#d6d1df}html[data-netbox-color-mode=dark] .list-group-item-purple.list-group-item-action.active{color:#fff;background-color:#655583;border-color:#655583}html[data-netbox-color-mode=dark] .list-group-item-pink{color:#8a506d;background-color:#fae7f0}html[data-netbox-color-mode=dark] .list-group-item-pink.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-pink.list-group-item-action:focus{color:#8a506d;background-color:#e1d0d8}html[data-netbox-color-mode=dark] .list-group-item-pink.list-group-item-action.active{color:#fff;background-color:#8a506d;border-color:#8a506d}html[data-netbox-color-mode=dark] .list-group-item-darker{color:#101314;background-color:#d1d2d3}html[data-netbox-color-mode=dark] .list-group-item-darker.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-darker.list-group-item-action:focus{color:#101314;background-color:#bcbdbe}html[data-netbox-color-mode=dark] .list-group-item-darker.list-group-item-action.active{color:#fff;background-color:#101314;border-color:#101314}html[data-netbox-color-mode=dark] .list-group-item-darkest{color:#0e1011;background-color:#d1d1d2}html[data-netbox-color-mode=dark] .list-group-item-darkest.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-darkest.list-group-item-action:focus{color:#0e1011;background-color:#bcbcbd}html[data-netbox-color-mode=dark] .list-group-item-darkest.list-group-item-action.active{color:#fff;background-color:#0e1011;border-color:#0e1011}html[data-netbox-color-mode=dark] .list-group-item-gray{color:#525557;background-color:#f5f6f8}html[data-netbox-color-mode=dark] .list-group-item-gray.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-gray.list-group-item-action:focus{color:#525557;background-color:#dddddf}html[data-netbox-color-mode=dark] .list-group-item-gray.list-group-item-action.active{color:#fff;background-color:#525557;border-color:#525557}html[data-netbox-color-mode=dark] .list-group-item-gray-100{color:#636464;background-color:#fefefe}html[data-netbox-color-mode=dark] .list-group-item-gray-100.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-gray-100.list-group-item-action:focus{color:#636464;background-color:#e5e5e5}html[data-netbox-color-mode=dark] .list-group-item-gray-100.list-group-item-action.active{color:#fff;background-color:#636464;border-color:#636464}html[data-netbox-color-mode=dark] .list-group-item-gray-200{color:#5d5e60;background-color:#fbfbfc}html[data-netbox-color-mode=dark] .list-group-item-gray-200.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-gray-200.list-group-item-action:focus{color:#5d5e60;background-color:#e2e2e3}html[data-netbox-color-mode=dark] .list-group-item-gray-200.list-group-item-action.active{color:#fff;background-color:#5d5e60;border-color:#5d5e60}html[data-netbox-color-mode=dark] .list-group-item-gray-300{color:#595a5c;background-color:#f8f9fa}html[data-netbox-color-mode=dark] .list-group-item-gray-300.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-gray-300.list-group-item-action:focus{color:#595a5c;background-color:#dfe0e1}html[data-netbox-color-mode=dark] .list-group-item-gray-300.list-group-item-action.active{color:#fff;background-color:#595a5c;border-color:#595a5c}html[data-netbox-color-mode=dark] .list-group-item-gray-400{color:#525557;background-color:#f5f6f8}html[data-netbox-color-mode=dark] .list-group-item-gray-400.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-gray-400.list-group-item-action:focus{color:#525557;background-color:#dddddf}html[data-netbox-color-mode=dark] .list-group-item-gray-400.list-group-item-action.active{color:#fff;background-color:#525557;border-color:#525557}html[data-netbox-color-mode=dark] .list-group-item-gray-500{color:#686d71;background-color:#eff0f2}html[data-netbox-color-mode=dark] .list-group-item-gray-500.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-gray-500.list-group-item-action:focus{color:#686d71;background-color:#d7d8da}html[data-netbox-color-mode=dark] .list-group-item-gray-500.list-group-item-action.active{color:#fff;background-color:#686d71;border-color:#686d71}html[data-netbox-color-mode=dark] .list-group-item-gray-600{color:#41464b;background-color:#e2e3e5}html[data-netbox-color-mode=dark] .list-group-item-gray-600.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-gray-600.list-group-item-action:focus{color:#41464b;background-color:#cbccce}html[data-netbox-color-mode=dark] .list-group-item-gray-600.list-group-item-action.active{color:#fff;background-color:#41464b;border-color:#41464b}html[data-netbox-color-mode=dark] .list-group-item-gray-700{color:#2c3034;background-color:#dbdcdd}html[data-netbox-color-mode=dark] .list-group-item-gray-700.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-gray-700.list-group-item-action:focus{color:#2c3034;background-color:#c5c6c7}html[data-netbox-color-mode=dark] .list-group-item-gray-700.list-group-item-action.active{color:#fff;background-color:#2c3034;border-color:#2c3034}html[data-netbox-color-mode=dark] .list-group-item-gray-800{color:#1f2326;background-color:#d6d8d9}html[data-netbox-color-mode=dark] .list-group-item-gray-800.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-gray-800.list-group-item-action:focus{color:#1f2326;background-color:#c1c2c3}html[data-netbox-color-mode=dark] .list-group-item-gray-800.list-group-item-action.active{color:#fff;background-color:#1f2326;border-color:#1f2326}html[data-netbox-color-mode=dark] .list-group-item-gray-900{color:#141619;background-color:#d3d3d4}html[data-netbox-color-mode=dark] .list-group-item-gray-900.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-gray-900.list-group-item-action:focus{color:#141619;background-color:#bebebf}html[data-netbox-color-mode=dark] .list-group-item-gray-900.list-group-item-action.active{color:#fff;background-color:#141619;border-color:#141619}html[data-netbox-color-mode=dark] .list-group-item-red-100{color:#635657;background-color:#fef7f8}html[data-netbox-color-mode=dark] .list-group-item-red-100.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-red-100.list-group-item-action:focus{color:#635657;background-color:#e5dedf}html[data-netbox-color-mode=dark] .list-group-item-red-100.list-group-item-action.active{color:#fff;background-color:#635657;border-color:#635657}html[data-netbox-color-mode=dark] .list-group-item-red-200{color:#604648;background-color:#fceff0}html[data-netbox-color-mode=dark] .list-group-item-red-200.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-red-200.list-group-item-action:focus{color:#604648;background-color:#e3d7d8}html[data-netbox-color-mode=dark] .list-group-item-red-200.list-group-item-action.active{color:#fff;background-color:#604648;border-color:#604648}html[data-netbox-color-mode=dark] .list-group-item-red-300{color:#8c5056;background-color:#fbe7e9}html[data-netbox-color-mode=dark] .list-group-item-red-300.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-red-300.list-group-item-action:focus{color:#8c5056;background-color:#e2d0d2}html[data-netbox-color-mode=dark] .list-group-item-red-300.list-group-item-action.active{color:#fff;background-color:#8c5056;border-color:#8c5056}html[data-netbox-color-mode=dark] .list-group-item-red-400{color:#883840;background-color:#f9dfe1}html[data-netbox-color-mode=dark] .list-group-item-red-400.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-red-400.list-group-item-action:focus{color:#883840;background-color:#e0c9cb}html[data-netbox-color-mode=dark] .list-group-item-red-400.list-group-item-action.active{color:#fff;background-color:#883840;border-color:#883840}html[data-netbox-color-mode=dark] .list-group-item-red-500{color:#842029;background-color:#f8d7da}html[data-netbox-color-mode=dark] .list-group-item-red-500.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-red-500.list-group-item-action:focus{color:#842029;background-color:#dfc2c4}html[data-netbox-color-mode=dark] .list-group-item-red-500.list-group-item-action.active{color:#fff;background-color:#842029;border-color:#842029}html[data-netbox-color-mode=dark] .list-group-item-red-600{color:#6a1921;background-color:#efd4d7}html[data-netbox-color-mode=dark] .list-group-item-red-600.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-red-600.list-group-item-action:focus{color:#6a1921;background-color:#d7bfc2}html[data-netbox-color-mode=dark] .list-group-item-red-600.list-group-item-action.active{color:#fff;background-color:#6a1921;border-color:#6a1921}html[data-netbox-color-mode=dark] .list-group-item-red-700{color:#4f1319;background-color:#e6d2d4}html[data-netbox-color-mode=dark] .list-group-item-red-700.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-red-700.list-group-item-action:focus{color:#4f1319;background-color:#cfbdbf}html[data-netbox-color-mode=dark] .list-group-item-red-700.list-group-item-action.active{color:#fff;background-color:#4f1319;border-color:#4f1319}html[data-netbox-color-mode=dark] .list-group-item-red-800{color:#350d11;background-color:#ded0d2}html[data-netbox-color-mode=dark] .list-group-item-red-800.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-red-800.list-group-item-action:focus{color:#350d11;background-color:#c8bbbd}html[data-netbox-color-mode=dark] .list-group-item-red-800.list-group-item-action.active{color:#fff;background-color:#350d11;border-color:#350d11}html[data-netbox-color-mode=dark] .list-group-item-red-900{color:#1a0708;background-color:#d5cecf}html[data-netbox-color-mode=dark] .list-group-item-red-900.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-red-900.list-group-item-action:focus{color:#1a0708;background-color:#c0b9ba}html[data-netbox-color-mode=dark] .list-group-item-red-900.list-group-item-action.active{color:#fff;background-color:#1a0708;border-color:#1a0708}html[data-netbox-color-mode=dark] .list-group-item-yellow-100{color:#666152;background-color:#fffdf5}html[data-netbox-color-mode=dark] .list-group-item-yellow-100.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-yellow-100.list-group-item-action:focus{color:#666152;background-color:#e6e4dd}html[data-netbox-color-mode=dark] .list-group-item-yellow-100.list-group-item-action.active{color:#fff;background-color:#666152;border-color:#666152}html[data-netbox-color-mode=dark] .list-group-item-yellow-200{color:#665c3e;background-color:#fffaeb}html[data-netbox-color-mode=dark] .list-group-item-yellow-200.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-yellow-200.list-group-item-action:focus{color:#665c3e;background-color:#e6e1d4}html[data-netbox-color-mode=dark] .list-group-item-yellow-200.list-group-item-action.active{color:#fff;background-color:#665c3e;border-color:#665c3e}html[data-netbox-color-mode=dark] .list-group-item-yellow-300{color:#66572a;background-color:#fff8e1}html[data-netbox-color-mode=dark] .list-group-item-yellow-300.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-yellow-300.list-group-item-action:focus{color:#66572a;background-color:#e6dfcb}html[data-netbox-color-mode=dark] .list-group-item-yellow-300.list-group-item-action.active{color:#fff;background-color:#66572a;border-color:#66572a}html[data-netbox-color-mode=dark] .list-group-item-yellow-400{color:#665217;background-color:#fff5d7}html[data-netbox-color-mode=dark] .list-group-item-yellow-400.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-yellow-400.list-group-item-action:focus{color:#665217;background-color:#e6ddc2}html[data-netbox-color-mode=dark] .list-group-item-yellow-400.list-group-item-action.active{color:#fff;background-color:#665217;border-color:#665217}html[data-netbox-color-mode=dark] .list-group-item-yellow-500{color:#664d03;background-color:#fff3cd}html[data-netbox-color-mode=dark] .list-group-item-yellow-500.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-yellow-500.list-group-item-action:focus{color:#664d03;background-color:#e6dbb9}html[data-netbox-color-mode=dark] .list-group-item-yellow-500.list-group-item-action.active{color:#fff;background-color:#664d03;border-color:#664d03}html[data-netbox-color-mode=dark] .list-group-item-yellow-600{color:#7a5c04;background-color:#f5ebcd}html[data-netbox-color-mode=dark] .list-group-item-yellow-600.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-yellow-600.list-group-item-action:focus{color:#7a5c04;background-color:#ddd4b9}html[data-netbox-color-mode=dark] .list-group-item-yellow-600.list-group-item-action.active{color:#fff;background-color:#7a5c04;border-color:#7a5c04}html[data-netbox-color-mode=dark] .list-group-item-yellow-700{color:#5c4602;background-color:#ebe3cd}html[data-netbox-color-mode=dark] .list-group-item-yellow-700.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-yellow-700.list-group-item-action:focus{color:#5c4602;background-color:#d4ccb9}html[data-netbox-color-mode=dark] .list-group-item-yellow-700.list-group-item-action.active{color:#fff;background-color:#5c4602;border-color:#5c4602}html[data-netbox-color-mode=dark] .list-group-item-yellow-800{color:#3d2e02;background-color:#e0dbcd}html[data-netbox-color-mode=dark] .list-group-item-yellow-800.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-yellow-800.list-group-item-action:focus{color:#3d2e02;background-color:#cac5b9}html[data-netbox-color-mode=dark] .list-group-item-yellow-800.list-group-item-action.active{color:#fff;background-color:#3d2e02;border-color:#3d2e02}html[data-netbox-color-mode=dark] .list-group-item-yellow-900{color:#1f1701;background-color:#d6d4cc}html[data-netbox-color-mode=dark] .list-group-item-yellow-900.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-yellow-900.list-group-item-action:focus{color:#1f1701;background-color:#c1bfb8}html[data-netbox-color-mode=dark] .list-group-item-yellow-900.list-group-item-action.active{color:#fff;background-color:#1f1701;border-color:#1f1701}html[data-netbox-color-mode=dark] .list-group-item-green-100{color:#545c58;background-color:#f6faf8}html[data-netbox-color-mode=dark] .list-group-item-green-100.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-green-100.list-group-item-action:focus{color:#545c58;background-color:#dde1df}html[data-netbox-color-mode=dark] .list-group-item-green-100.list-group-item-action.active{color:#fff;background-color:#545c58;border-color:#545c58}html[data-netbox-color-mode=dark] .list-group-item-green-200{color:#41534b;background-color:#edf5f1}html[data-netbox-color-mode=dark] .list-group-item-green-200.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-green-200.list-group-item-action:focus{color:#41534b;background-color:#d5ddd9}html[data-netbox-color-mode=dark] .list-group-item-green-200.list-group-item-action.active{color:#fff;background-color:#41534b;border-color:#41534b}html[data-netbox-color-mode=dark] .list-group-item-green-300{color:#466e5b;background-color:#e3f1ea}html[data-netbox-color-mode=dark] .list-group-item-green-300.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-green-300.list-group-item-action:focus{color:#466e5b;background-color:#ccd9d3}html[data-netbox-color-mode=dark] .list-group-item-green-300.list-group-item-action.active{color:#fff;background-color:#466e5b;border-color:#466e5b}html[data-netbox-color-mode=dark] .list-group-item-green-400{color:#2b5f47;background-color:#daece4}html[data-netbox-color-mode=dark] .list-group-item-green-400.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-green-400.list-group-item-action:focus{color:#2b5f47;background-color:#c4d4cd}html[data-netbox-color-mode=dark] .list-group-item-green-400.list-group-item-action.active{color:#fff;background-color:#2b5f47;border-color:#2b5f47}html[data-netbox-color-mode=dark] .list-group-item-green-500{color:#0f5132;background-color:#d1e7dd}html[data-netbox-color-mode=dark] .list-group-item-green-500.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-green-500.list-group-item-action:focus{color:#0f5132;background-color:#bcd0c7}html[data-netbox-color-mode=dark] .list-group-item-green-500.list-group-item-action.active{color:#fff;background-color:#0f5132;border-color:#0f5132}html[data-netbox-color-mode=dark] .list-group-item-green-600{color:#0c4128;background-color:#d0e2d9}html[data-netbox-color-mode=dark] .list-group-item-green-600.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-green-600.list-group-item-action:focus{color:#0c4128;background-color:#bbcbc3}html[data-netbox-color-mode=dark] .list-group-item-green-600.list-group-item-action.active{color:#fff;background-color:#0c4128;border-color:#0c4128}html[data-netbox-color-mode=dark] .list-group-item-green-700{color:#09311e;background-color:#cfdcd6}html[data-netbox-color-mode=dark] .list-group-item-green-700.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-green-700.list-group-item-action:focus{color:#09311e;background-color:#bac6c1}html[data-netbox-color-mode=dark] .list-group-item-green-700.list-group-item-action.active{color:#fff;background-color:#09311e;border-color:#09311e}html[data-netbox-color-mode=dark] .list-group-item-green-800{color:#062014;background-color:#ced7d3}html[data-netbox-color-mode=dark] .list-group-item-green-800.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-green-800.list-group-item-action:focus{color:#062014;background-color:#b9c2be}html[data-netbox-color-mode=dark] .list-group-item-green-800.list-group-item-action.active{color:#fff;background-color:#062014;border-color:#062014}html[data-netbox-color-mode=dark] .list-group-item-green-900{color:#03100a;background-color:#cdd1cf}html[data-netbox-color-mode=dark] .list-group-item-green-900.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-green-900.list-group-item-action:focus{color:#03100a;background-color:#b9bcba}html[data-netbox-color-mode=dark] .list-group-item-green-900.list-group-item-action.active{color:#fff;background-color:#03100a;border-color:#03100a}html[data-netbox-color-mode=dark] .list-group-item-blue-100{color:#535a66;background-color:#f5f9ff}html[data-netbox-color-mode=dark] .list-group-item-blue-100.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-blue-100.list-group-item-action:focus{color:#535a66;background-color:#dde0e6}html[data-netbox-color-mode=dark] .list-group-item-blue-100.list-group-item-action.active{color:#fff;background-color:#535a66;border-color:#535a66}html[data-netbox-color-mode=dark] .list-group-item-blue-200{color:#3f4f66;background-color:#ecf3ff}html[data-netbox-color-mode=dark] .list-group-item-blue-200.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-blue-200.list-group-item-action:focus{color:#3f4f66;background-color:#d4dbe6}html[data-netbox-color-mode=dark] .list-group-item-blue-200.list-group-item-action.active{color:#fff;background-color:#3f4f66;border-color:#3f4f66}html[data-netbox-color-mode=dark] .list-group-item-blue-300{color:#426598;background-color:#e2eeff}html[data-netbox-color-mode=dark] .list-group-item-blue-300.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-blue-300.list-group-item-action:focus{color:#426598;background-color:#cbd6e6}html[data-netbox-color-mode=dark] .list-group-item-blue-300.list-group-item-action.active{color:#fff;background-color:#426598;border-color:#426598}html[data-netbox-color-mode=dark] .list-group-item-blue-400{color:#255398;background-color:#d8e8ff}html[data-netbox-color-mode=dark] .list-group-item-blue-400.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-blue-400.list-group-item-action:focus{color:#255398;background-color:#c2d1e6}html[data-netbox-color-mode=dark] .list-group-item-blue-400.list-group-item-action.active{color:#fff;background-color:#255398;border-color:#255398}html[data-netbox-color-mode=dark] .list-group-item-blue-500{color:#084298;background-color:#cfe2ff}html[data-netbox-color-mode=dark] .list-group-item-blue-500.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-blue-500.list-group-item-action:focus{color:#084298;background-color:#bacbe6}html[data-netbox-color-mode=dark] .list-group-item-blue-500.list-group-item-action.active{color:#fff;background-color:#084298;border-color:#084298}html[data-netbox-color-mode=dark] .list-group-item-blue-600{color:#063579;background-color:#cedef4}html[data-netbox-color-mode=dark] .list-group-item-blue-600.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-blue-600.list-group-item-action:focus{color:#063579;background-color:#b9c8dc}html[data-netbox-color-mode=dark] .list-group-item-blue-600.list-group-item-action.active{color:#fff;background-color:#063579;border-color:#063579}html[data-netbox-color-mode=dark] .list-group-item-blue-700{color:#05285b;background-color:#ced9ea}html[data-netbox-color-mode=dark] .list-group-item-blue-700.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-blue-700.list-group-item-action:focus{color:#05285b;background-color:#b9c3d3}html[data-netbox-color-mode=dark] .list-group-item-blue-700.list-group-item-action.active{color:#fff;background-color:#05285b;border-color:#05285b}html[data-netbox-color-mode=dark] .list-group-item-blue-800{color:#031a3d;background-color:#cdd5e0}html[data-netbox-color-mode=dark] .list-group-item-blue-800.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-blue-800.list-group-item-action:focus{color:#031a3d;background-color:#b9c0ca}html[data-netbox-color-mode=dark] .list-group-item-blue-800.list-group-item-action.active{color:#fff;background-color:#031a3d;border-color:#031a3d}html[data-netbox-color-mode=dark] .list-group-item-blue-900{color:#020d1f;background-color:#cdd0d6}html[data-netbox-color-mode=dark] .list-group-item-blue-900.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-blue-900.list-group-item-action:focus{color:#020d1f;background-color:#b9bbc1}html[data-netbox-color-mode=dark] .list-group-item-blue-900.list-group-item-action.active{color:#fff;background-color:#020d1f;border-color:#020d1f}html[data-netbox-color-mode=dark] .list-group-item-cyan-100{color:#536265;background-color:#f5fdfe}html[data-netbox-color-mode=dark] .list-group-item-cyan-100.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-cyan-100.list-group-item-action:focus{color:#536265;background-color:#dde4e5}html[data-netbox-color-mode=dark] .list-group-item-cyan-100.list-group-item-action.active{color:#fff;background-color:#536265;border-color:#536265}html[data-netbox-color-mode=dark] .list-group-item-cyan-200{color:#3f5e64;background-color:#ecfbfe}html[data-netbox-color-mode=dark] .list-group-item-cyan-200.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-cyan-200.list-group-item-action:focus{color:#3f5e64;background-color:#d4e2e5}html[data-netbox-color-mode=dark] .list-group-item-cyan-200.list-group-item-action.active{color:#fff;background-color:#3f5e64;border-color:#3f5e64}html[data-netbox-color-mode=dark] .list-group-item-cyan-300{color:#2c5962;background-color:#e2f9fd}html[data-netbox-color-mode=dark] .list-group-item-cyan-300.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-cyan-300.list-group-item-action:focus{color:#2c5962;background-color:#cbe0e4}html[data-netbox-color-mode=dark] .list-group-item-cyan-300.list-group-item-action.active{color:#fff;background-color:#2c5962;border-color:#2c5962}html[data-netbox-color-mode=dark] .list-group-item-cyan-400{color:#185561;background-color:#d8f7fd}html[data-netbox-color-mode=dark] .list-group-item-cyan-400.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-cyan-400.list-group-item-action:focus{color:#185561;background-color:#c2dee4}html[data-netbox-color-mode=dark] .list-group-item-cyan-400.list-group-item-action.active{color:#fff;background-color:#185561;border-color:#185561}html[data-netbox-color-mode=dark] .list-group-item-cyan-500{color:#055160;background-color:#cff4fc}html[data-netbox-color-mode=dark] .list-group-item-cyan-500.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-cyan-500.list-group-item-action:focus{color:#055160;background-color:#badce3}html[data-netbox-color-mode=dark] .list-group-item-cyan-500.list-group-item-action.active{color:#fff;background-color:#055160;border-color:#055160}html[data-netbox-color-mode=dark] .list-group-item-cyan-600{color:#066173;background-color:#ceecf2}html[data-netbox-color-mode=dark] .list-group-item-cyan-600.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-cyan-600.list-group-item-action:focus{color:#066173;background-color:#b9d4da}html[data-netbox-color-mode=dark] .list-group-item-cyan-600.list-group-item-action.active{color:#fff;background-color:#066173;border-color:#066173}html[data-netbox-color-mode=dark] .list-group-item-cyan-700{color:#054956;background-color:#cee4e9}html[data-netbox-color-mode=dark] .list-group-item-cyan-700.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-cyan-700.list-group-item-action:focus{color:#054956;background-color:#b9cdd2}html[data-netbox-color-mode=dark] .list-group-item-cyan-700.list-group-item-action.active{color:#fff;background-color:#054956;border-color:#054956}html[data-netbox-color-mode=dark] .list-group-item-cyan-800{color:#03313a;background-color:#cddcdf}html[data-netbox-color-mode=dark] .list-group-item-cyan-800.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-cyan-800.list-group-item-action:focus{color:#03313a;background-color:#b9c6c9}html[data-netbox-color-mode=dark] .list-group-item-cyan-800.list-group-item-action.active{color:#fff;background-color:#03313a;border-color:#03313a}html[data-netbox-color-mode=dark] .list-group-item-cyan-900{color:#02181d;background-color:#cdd4d6}html[data-netbox-color-mode=dark] .list-group-item-cyan-900.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-cyan-900.list-group-item-action:focus{color:#02181d;background-color:#b9bfc1}html[data-netbox-color-mode=dark] .list-group-item-cyan-900.list-group-item-action.active{color:#fff;background-color:#02181d;border-color:#02181d}html[data-netbox-color-mode=dark] .list-group-item-indigo-100{color:#5a5365;background-color:#f9f5fe}html[data-netbox-color-mode=dark] .list-group-item-indigo-100.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-indigo-100.list-group-item-action:focus{color:#5a5365;background-color:#e0dde5}html[data-netbox-color-mode=dark] .list-group-item-indigo-100.list-group-item-action.active{color:#fff;background-color:#5a5365;border-color:#5a5365}html[data-netbox-color-mode=dark] .list-group-item-indigo-200{color:#745f96;background-color:#f3ecfe}html[data-netbox-color-mode=dark] .list-group-item-indigo-200.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-indigo-200.list-group-item-action:focus{color:#745f96;background-color:#dbd4e5}html[data-netbox-color-mode=dark] .list-group-item-indigo-200.list-group-item-action.active{color:#fff;background-color:#745f96;border-color:#745f96}html[data-netbox-color-mode=dark] .list-group-item-indigo-300{color:#624394;background-color:#ede2fd}html[data-netbox-color-mode=dark] .list-group-item-indigo-300.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-indigo-300.list-group-item-action:focus{color:#624394;background-color:#d5cbe4}html[data-netbox-color-mode=dark] .list-group-item-indigo-300.list-group-item-action.active{color:#fff;background-color:#624394;border-color:#624394}html[data-netbox-color-mode=dark] .list-group-item-indigo-400{color:#502693;background-color:#e7d9fd}html[data-netbox-color-mode=dark] .list-group-item-indigo-400.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-indigo-400.list-group-item-action:focus{color:#502693;background-color:#d0c3e4}html[data-netbox-color-mode=dark] .list-group-item-indigo-400.list-group-item-action.active{color:#fff;background-color:#502693;border-color:#502693}html[data-netbox-color-mode=dark] .list-group-item-indigo-500{color:#3d0a91;background-color:#e0cffc}html[data-netbox-color-mode=dark] .list-group-item-indigo-500.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-indigo-500.list-group-item-action:focus{color:#3d0a91;background-color:#cabae3}html[data-netbox-color-mode=dark] .list-group-item-indigo-500.list-group-item-action.active{color:#fff;background-color:#3d0a91;border-color:#3d0a91}html[data-netbox-color-mode=dark] .list-group-item-indigo-600{color:#310874;background-color:#dccff3}html[data-netbox-color-mode=dark] .list-group-item-indigo-600.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-indigo-600.list-group-item-action:focus{color:#310874;background-color:#c6badb}html[data-netbox-color-mode=dark] .list-group-item-indigo-600.list-group-item-action.active{color:#fff;background-color:#310874;border-color:#310874}html[data-netbox-color-mode=dark] .list-group-item-indigo-700{color:#250657;background-color:#d8cee9}html[data-netbox-color-mode=dark] .list-group-item-indigo-700.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-indigo-700.list-group-item-action:focus{color:#250657;background-color:#c2b9d2}html[data-netbox-color-mode=dark] .list-group-item-indigo-700.list-group-item-action.active{color:#fff;background-color:#250657;border-color:#250657}html[data-netbox-color-mode=dark] .list-group-item-indigo-800{color:#19043a;background-color:#d4cddf}html[data-netbox-color-mode=dark] .list-group-item-indigo-800.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-indigo-800.list-group-item-action:focus{color:#19043a;background-color:#bfb9c9}html[data-netbox-color-mode=dark] .list-group-item-indigo-800.list-group-item-action.active{color:#fff;background-color:#19043a;border-color:#19043a}html[data-netbox-color-mode=dark] .list-group-item-indigo-900{color:#0c021d;background-color:#d0cdd6}html[data-netbox-color-mode=dark] .list-group-item-indigo-900.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-indigo-900.list-group-item-action:focus{color:#0c021d;background-color:#bbb9c1}html[data-netbox-color-mode=dark] .list-group-item-indigo-900.list-group-item-action.active{color:#fff;background-color:#0c021d;border-color:#0c021d}html[data-netbox-color-mode=dark] .list-group-item-purple-100{color:#5a5761;background-color:#f9f7fd}html[data-netbox-color-mode=dark] .list-group-item-purple-100.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-purple-100.list-group-item-action:focus{color:#5a5761;background-color:#e0dee4}html[data-netbox-color-mode=dark] .list-group-item-purple-100.list-group-item-action.active{color:#fff;background-color:#5a5761;border-color:#5a5761}html[data-netbox-color-mode=dark] .list-group-item-purple-200{color:#4f485c;background-color:#f3f0fa}html[data-netbox-color-mode=dark] .list-group-item-purple-200.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-purple-200.list-group-item-action:focus{color:#4f485c;background-color:#dbd8e1}html[data-netbox-color-mode=dark] .list-group-item-purple-200.list-group-item-action.active{color:#fff;background-color:#4f485c;border-color:#4f485c}html[data-netbox-color-mode=dark] .list-group-item-purple-300{color:#655583;background-color:#eee8f8}html[data-netbox-color-mode=dark] .list-group-item-purple-300.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-purple-300.list-group-item-action:focus{color:#655583;background-color:#d6d1df}html[data-netbox-color-mode=dark] .list-group-item-purple-300.list-group-item-action.active{color:#fff;background-color:#655583;border-color:#655583}html[data-netbox-color-mode=dark] .list-group-item-purple-400{color:#543e7b;background-color:#e8e1f5}html[data-netbox-color-mode=dark] .list-group-item-purple-400.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-purple-400.list-group-item-action:focus{color:#543e7b;background-color:#d1cbdd}html[data-netbox-color-mode=dark] .list-group-item-purple-400.list-group-item-action.active{color:#fff;background-color:#543e7b;border-color:#543e7b}html[data-netbox-color-mode=dark] .list-group-item-purple-500{color:#432874;background-color:#e2d9f3}html[data-netbox-color-mode=dark] .list-group-item-purple-500.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-purple-500.list-group-item-action:focus{color:#432874;background-color:#cbc3db}html[data-netbox-color-mode=dark] .list-group-item-purple-500.list-group-item-action.active{color:#fff;background-color:#432874;border-color:#432874}html[data-netbox-color-mode=dark] .list-group-item-purple-600{color:#35205c;background-color:#ded7eb}html[data-netbox-color-mode=dark] .list-group-item-purple-600.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-purple-600.list-group-item-action:focus{color:#35205c;background-color:#c8c2d4}html[data-netbox-color-mode=dark] .list-group-item-purple-600.list-group-item-action.active{color:#fff;background-color:#35205c;border-color:#35205c}html[data-netbox-color-mode=dark] .list-group-item-purple-700{color:#281846;background-color:#d9d4e3}html[data-netbox-color-mode=dark] .list-group-item-purple-700.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-purple-700.list-group-item-action:focus{color:#281846;background-color:#c3bfcc}html[data-netbox-color-mode=dark] .list-group-item-purple-700.list-group-item-action.active{color:#fff;background-color:#281846;border-color:#281846}html[data-netbox-color-mode=dark] .list-group-item-purple-800{color:#1a102e;background-color:#d5d1db}html[data-netbox-color-mode=dark] .list-group-item-purple-800.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-purple-800.list-group-item-action:focus{color:#1a102e;background-color:#c0bcc5}html[data-netbox-color-mode=dark] .list-group-item-purple-800.list-group-item-action.active{color:#fff;background-color:#1a102e;border-color:#1a102e}html[data-netbox-color-mode=dark] .list-group-item-purple-900{color:#0d0817;background-color:#d0cfd4}html[data-netbox-color-mode=dark] .list-group-item-purple-900.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-purple-900.list-group-item-action:focus{color:#0d0817;background-color:#bbbabf}html[data-netbox-color-mode=dark] .list-group-item-purple-900.list-group-item-action.active{color:#fff;background-color:#0d0817;border-color:#0d0817}html[data-netbox-color-mode=dark] .list-group-item-pink-100{color:#63565c;background-color:#fdf7fa}html[data-netbox-color-mode=dark] .list-group-item-pink-100.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-pink-100.list-group-item-action:focus{color:#63565c;background-color:#e4dee1}html[data-netbox-color-mode=dark] .list-group-item-pink-100.list-group-item-action.active{color:#fff;background-color:#63565c;border-color:#63565c}html[data-netbox-color-mode=dark] .list-group-item-pink-200{color:#604552;background-color:#fceff5}html[data-netbox-color-mode=dark] .list-group-item-pink-200.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-pink-200.list-group-item-action:focus{color:#604552;background-color:#e3d7dd}html[data-netbox-color-mode=dark] .list-group-item-pink-200.list-group-item-action.active{color:#fff;background-color:#604552;border-color:#604552}html[data-netbox-color-mode=dark] .list-group-item-pink-300{color:#8a506d;background-color:#fae7f0}html[data-netbox-color-mode=dark] .list-group-item-pink-300.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-pink-300.list-group-item-action:focus{color:#8a506d;background-color:#e1d0d8}html[data-netbox-color-mode=dark] .list-group-item-pink-300.list-group-item-action.active{color:#fff;background-color:#8a506d;border-color:#8a506d}html[data-netbox-color-mode=dark] .list-group-item-pink-400{color:#85375e;background-color:#f8deeb}html[data-netbox-color-mode=dark] .list-group-item-pink-400.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-pink-400.list-group-item-action:focus{color:#85375e;background-color:#dfc8d4}html[data-netbox-color-mode=dark] .list-group-item-pink-400.list-group-item-action.active{color:#fff;background-color:#85375e;border-color:#85375e}html[data-netbox-color-mode=dark] .list-group-item-pink-500{color:#801f4f;background-color:#f7d6e6}html[data-netbox-color-mode=dark] .list-group-item-pink-500.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-pink-500.list-group-item-action:focus{color:#801f4f;background-color:#dec1cf}html[data-netbox-color-mode=dark] .list-group-item-pink-500.list-group-item-action.active{color:#fff;background-color:#801f4f;border-color:#801f4f}html[data-netbox-color-mode=dark] .list-group-item-pink-600{color:#671940;background-color:#eed4e1}html[data-netbox-color-mode=dark] .list-group-item-pink-600.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-pink-600.list-group-item-action:focus{color:#671940;background-color:#d6bfcb}html[data-netbox-color-mode=dark] .list-group-item-pink-600.list-group-item-action.active{color:#fff;background-color:#671940;border-color:#671940}html[data-netbox-color-mode=dark] .list-group-item-pink-700{color:#4d132f;background-color:#e6d2dc}html[data-netbox-color-mode=dark] .list-group-item-pink-700.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-pink-700.list-group-item-action:focus{color:#4d132f;background-color:#cfbdc6}html[data-netbox-color-mode=dark] .list-group-item-pink-700.list-group-item-action.active{color:#fff;background-color:#4d132f;border-color:#4d132f}html[data-netbox-color-mode=dark] .list-group-item-pink-800{color:#340c20;background-color:#ddd0d7}html[data-netbox-color-mode=dark] .list-group-item-pink-800.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-pink-800.list-group-item-action:focus{color:#340c20;background-color:#c7bbc2}html[data-netbox-color-mode=dark] .list-group-item-pink-800.list-group-item-action.active{color:#fff;background-color:#340c20;border-color:#340c20}html[data-netbox-color-mode=dark] .list-group-item-pink-900{color:#1a0610;background-color:#d5ced1}html[data-netbox-color-mode=dark] .list-group-item-pink-900.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-pink-900.list-group-item-action:focus{color:#1a0610;background-color:#c0b9bc}html[data-netbox-color-mode=dark] .list-group-item-pink-900.list-group-item-action.active{color:#fff;background-color:#1a0610;border-color:#1a0610}html[data-netbox-color-mode=dark] .btn-close{box-sizing:content-box;width:1em;height:1em;padding:.25em;color:#fff;background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat;border:0;border-radius:.375rem;opacity:.5}html[data-netbox-color-mode=dark] .btn-close:hover{color:#fff;text-decoration:none;opacity:.75}html[data-netbox-color-mode=dark] .btn-close:focus{outline:0;box-shadow:0 0 0 .25rem #0d6efd40;opacity:1}html[data-netbox-color-mode=dark] .btn-close:disabled,html[data-netbox-color-mode=dark] .btn-close.disabled{pointer-events:none;user-select:none;opacity:.25}html[data-netbox-color-mode=dark] .btn-close-white{filter:invert(1) grayscale(100%) brightness(200%)}html[data-netbox-color-mode=dark] .toast{width:350px;max-width:100%;font-size:.875rem;pointer-events:auto;background-color:#ffffffd9;background-clip:padding-box;border:1px solid rgba(0,0,0,.1);box-shadow:0 .5rem 1rem #00000026;border-radius:.375rem}html[data-netbox-color-mode=dark] .toast:not(.showing):not(.show){opacity:0}html[data-netbox-color-mode=dark] .toast.hide{display:none}html[data-netbox-color-mode=dark] .toast-container{width:max-content;max-width:100%;pointer-events:none}html[data-netbox-color-mode=dark] .toast-container>:not(:last-child){margin-bottom:.75rem}html[data-netbox-color-mode=dark] .toast-header{display:flex;align-items:center;padding:.5rem .75rem;color:#6c757d;background-color:#ffffffd9;background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,.05);border-top-left-radius:calc(.375rem - 1px);border-top-right-radius:calc(.375rem - 1px)}html[data-netbox-color-mode=dark] .toast-header .btn-close{margin-right:-.375rem;margin-left:.75rem}html[data-netbox-color-mode=dark] .toast-body{padding:.75rem;word-wrap:break-word}html[data-netbox-color-mode=dark] .modal{position:fixed;top:0;left:0;z-index:1060;display:none;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;outline:0}html[data-netbox-color-mode=dark] .modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade html[data-netbox-color-mode=dark] .modal-dialog{transition:transform .3s ease-out;transform:translateY(-50px)}@media (prefers-reduced-motion: reduce){.modal.fade html[data-netbox-color-mode=dark] .modal-dialog{transition:none}}.modal.show html[data-netbox-color-mode=dark] .modal-dialog{transform:none}.modal.modal-static html[data-netbox-color-mode=dark] .modal-dialog{transform:scale(1.02)}html[data-netbox-color-mode=dark] .modal-dialog-scrollable{height:calc(100% - 1rem)}html[data-netbox-color-mode=dark] .modal-dialog-scrollable .modal-content{max-height:100%;overflow:hidden}html[data-netbox-color-mode=dark] .modal-dialog-scrollable .modal-body{overflow-y:auto}html[data-netbox-color-mode=dark] .modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - 1rem)}html[data-netbox-color-mode=dark] .modal-content{position:relative;display:flex;flex-direction:column;width:100%;pointer-events:auto;background-color:#343a40;background-clip:padding-box;border:1px solid rgba(255,255,255,.2);border-radius:.75rem;outline:0}html[data-netbox-color-mode=dark] .modal-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}html[data-netbox-color-mode=dark] .modal-backdrop.fade{opacity:0}html[data-netbox-color-mode=dark] .modal-backdrop.show{opacity:.5}html[data-netbox-color-mode=dark] .modal-header{display:flex;flex-shrink:0;align-items:center;justify-content:space-between;padding:1rem;border-bottom:1px solid #495057;border-top-left-radius:calc(.75rem - 1px);border-top-right-radius:calc(.75rem - 1px)}html[data-netbox-color-mode=dark] .modal-header .btn-close{padding:.5rem;margin:-.5rem -.5rem -.5rem auto}html[data-netbox-color-mode=dark] .modal-title{margin-bottom:0;line-height:1.5}html[data-netbox-color-mode=dark] .modal-body{position:relative;flex:1 1 auto;padding:1rem}html[data-netbox-color-mode=dark] .modal-footer{display:flex;flex-wrap:wrap;flex-shrink:0;align-items:center;justify-content:flex-end;padding:.75rem;border-top:1px solid #495057;border-bottom-right-radius:calc(.75rem - 1px);border-bottom-left-radius:calc(.75rem - 1px)}html[data-netbox-color-mode=dark] .modal-footer>*{margin:.25rem}@media (min-width: 576px){html[data-netbox-color-mode=dark] .modal-dialog{max-width:500px;margin:1.75rem auto}html[data-netbox-color-mode=dark] .modal-dialog-scrollable{height:calc(100% - 3.5rem)}html[data-netbox-color-mode=dark] .modal-dialog-centered{min-height:calc(100% - 3.5rem)}html[data-netbox-color-mode=dark] .modal-sm{max-width:300px}}@media (min-width: 992px){html[data-netbox-color-mode=dark] .modal-lg,html[data-netbox-color-mode=dark] .modal-xl{max-width:800px}}@media (min-width: 1200px){html[data-netbox-color-mode=dark] .modal-xl{max-width:1140px}}html[data-netbox-color-mode=dark] .modal-fullscreen{width:100vw;max-width:none;height:100%;margin:0}html[data-netbox-color-mode=dark] .modal-fullscreen .modal-content{height:100%;border:0;border-radius:0}html[data-netbox-color-mode=dark] .modal-fullscreen .modal-header{border-radius:0}html[data-netbox-color-mode=dark] .modal-fullscreen .modal-body{overflow-y:auto}html[data-netbox-color-mode=dark] .modal-fullscreen .modal-footer{border-radius:0}@media (max-width: 575.98px){html[data-netbox-color-mode=dark] .modal-fullscreen-sm-down{width:100vw;max-width:none;height:100%;margin:0}html[data-netbox-color-mode=dark] .modal-fullscreen-sm-down .modal-content{height:100%;border:0;border-radius:0}html[data-netbox-color-mode=dark] .modal-fullscreen-sm-down .modal-header{border-radius:0}html[data-netbox-color-mode=dark] .modal-fullscreen-sm-down .modal-body{overflow-y:auto}html[data-netbox-color-mode=dark] .modal-fullscreen-sm-down .modal-footer{border-radius:0}}@media (max-width: 767.98px){html[data-netbox-color-mode=dark] .modal-fullscreen-md-down{width:100vw;max-width:none;height:100%;margin:0}html[data-netbox-color-mode=dark] .modal-fullscreen-md-down .modal-content{height:100%;border:0;border-radius:0}html[data-netbox-color-mode=dark] .modal-fullscreen-md-down .modal-header{border-radius:0}html[data-netbox-color-mode=dark] .modal-fullscreen-md-down .modal-body{overflow-y:auto}html[data-netbox-color-mode=dark] .modal-fullscreen-md-down .modal-footer{border-radius:0}}@media (max-width: 991.98px){html[data-netbox-color-mode=dark] .modal-fullscreen-lg-down{width:100vw;max-width:none;height:100%;margin:0}html[data-netbox-color-mode=dark] .modal-fullscreen-lg-down .modal-content{height:100%;border:0;border-radius:0}html[data-netbox-color-mode=dark] .modal-fullscreen-lg-down .modal-header{border-radius:0}html[data-netbox-color-mode=dark] .modal-fullscreen-lg-down .modal-body{overflow-y:auto}html[data-netbox-color-mode=dark] .modal-fullscreen-lg-down .modal-footer{border-radius:0}}@media (max-width: 1199.98px){html[data-netbox-color-mode=dark] .modal-fullscreen-xl-down{width:100vw;max-width:none;height:100%;margin:0}html[data-netbox-color-mode=dark] .modal-fullscreen-xl-down .modal-content{height:100%;border:0;border-radius:0}html[data-netbox-color-mode=dark] .modal-fullscreen-xl-down .modal-header{border-radius:0}html[data-netbox-color-mode=dark] .modal-fullscreen-xl-down .modal-body{overflow-y:auto}html[data-netbox-color-mode=dark] .modal-fullscreen-xl-down .modal-footer{border-radius:0}}@media (max-width: 1399.98px){html[data-netbox-color-mode=dark] .modal-fullscreen-xxl-down{width:100vw;max-width:none;height:100%;margin:0}html[data-netbox-color-mode=dark] .modal-fullscreen-xxl-down .modal-content{height:100%;border:0;border-radius:0}html[data-netbox-color-mode=dark] .modal-fullscreen-xxl-down .modal-header{border-radius:0}html[data-netbox-color-mode=dark] .modal-fullscreen-xxl-down .modal-body{overflow-y:auto}html[data-netbox-color-mode=dark] .modal-fullscreen-xxl-down .modal-footer{border-radius:0}}html[data-netbox-color-mode=dark] .tooltip{position:absolute;z-index:1080;display:block;margin:0;font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}html[data-netbox-color-mode=dark] .tooltip.show{opacity:.9}html[data-netbox-color-mode=dark] .tooltip .tooltip-arrow{position:absolute;display:block;width:.8rem;height:.4rem}html[data-netbox-color-mode=dark] .tooltip .tooltip-arrow:before{position:absolute;content:"";border-color:transparent;border-style:solid}html[data-netbox-color-mode=dark] .bs-tooltip-top,html[data-netbox-color-mode=dark] .bs-tooltip-auto[data-popper-placement^=top]{padding:.4rem 0}html[data-netbox-color-mode=dark] .bs-tooltip-top .tooltip-arrow,html[data-netbox-color-mode=dark] .bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow{bottom:0}html[data-netbox-color-mode=dark] .bs-tooltip-top .tooltip-arrow:before,html[data-netbox-color-mode=dark] .bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow:before{top:-1px;border-width:.4rem .4rem 0;border-top-color:#495057}html[data-netbox-color-mode=dark] .bs-tooltip-end,html[data-netbox-color-mode=dark] .bs-tooltip-auto[data-popper-placement^=right]{padding:0 .4rem}html[data-netbox-color-mode=dark] .bs-tooltip-end .tooltip-arrow,html[data-netbox-color-mode=dark] .bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow{left:0;width:.4rem;height:.8rem}html[data-netbox-color-mode=dark] .bs-tooltip-end .tooltip-arrow:before,html[data-netbox-color-mode=dark] .bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow:before{right:-1px;border-width:.4rem .4rem .4rem 0;border-right-color:#495057}html[data-netbox-color-mode=dark] .bs-tooltip-bottom,html[data-netbox-color-mode=dark] .bs-tooltip-auto[data-popper-placement^=bottom]{padding:.4rem 0}html[data-netbox-color-mode=dark] .bs-tooltip-bottom .tooltip-arrow,html[data-netbox-color-mode=dark] .bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow{top:0}html[data-netbox-color-mode=dark] .bs-tooltip-bottom .tooltip-arrow:before,html[data-netbox-color-mode=dark] .bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow:before{bottom:-1px;border-width:0 .4rem .4rem;border-bottom-color:#495057}html[data-netbox-color-mode=dark] .bs-tooltip-start,html[data-netbox-color-mode=dark] .bs-tooltip-auto[data-popper-placement^=left]{padding:0 .4rem}html[data-netbox-color-mode=dark] .bs-tooltip-start .tooltip-arrow,html[data-netbox-color-mode=dark] .bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow{right:0;width:.4rem;height:.8rem}html[data-netbox-color-mode=dark] .bs-tooltip-start .tooltip-arrow:before,html[data-netbox-color-mode=dark] .bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow:before{left:-1px;border-width:.4rem 0 .4rem .4rem;border-left-color:#495057}html[data-netbox-color-mode=dark] .tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#495057;border-radius:.375rem}html[data-netbox-color-mode=dark] .popover{position:absolute;top:0;left:0;z-index:1070;display:block;max-width:276px;font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#495057;background-clip:padding-box;border:1px solid rgba(255,255,255,.2);border-radius:.75rem}html[data-netbox-color-mode=dark] .popover .popover-arrow{position:absolute;display:block;width:1rem;height:.5rem}html[data-netbox-color-mode=dark] .popover .popover-arrow:before,html[data-netbox-color-mode=dark] .popover .popover-arrow:after{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}html[data-netbox-color-mode=dark] .bs-popover-top>.popover-arrow,html[data-netbox-color-mode=dark] .bs-popover-auto[data-popper-placement^=top]>.popover-arrow{bottom:calc(-.5rem - 1px)}html[data-netbox-color-mode=dark] .bs-popover-top>.popover-arrow:before,html[data-netbox-color-mode=dark] .bs-popover-auto[data-popper-placement^=top]>.popover-arrow:before{bottom:0;border-width:.5rem .5rem 0;border-top-color:#ffffff40}html[data-netbox-color-mode=dark] .bs-popover-top>.popover-arrow:after,html[data-netbox-color-mode=dark] .bs-popover-auto[data-popper-placement^=top]>.popover-arrow:after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#495057}html[data-netbox-color-mode=dark] .bs-popover-end>.popover-arrow,html[data-netbox-color-mode=dark] .bs-popover-auto[data-popper-placement^=right]>.popover-arrow{left:calc(-.5rem - 1px);width:.5rem;height:1rem}html[data-netbox-color-mode=dark] .bs-popover-end>.popover-arrow:before,html[data-netbox-color-mode=dark] .bs-popover-auto[data-popper-placement^=right]>.popover-arrow:before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:#ffffff40}html[data-netbox-color-mode=dark] .bs-popover-end>.popover-arrow:after,html[data-netbox-color-mode=dark] .bs-popover-auto[data-popper-placement^=right]>.popover-arrow:after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#495057}html[data-netbox-color-mode=dark] .bs-popover-bottom>.popover-arrow,html[data-netbox-color-mode=dark] .bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow{top:calc(-.5rem - 1px)}html[data-netbox-color-mode=dark] .bs-popover-bottom>.popover-arrow:before,html[data-netbox-color-mode=dark] .bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow:before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:#ffffff40}html[data-netbox-color-mode=dark] .bs-popover-bottom>.popover-arrow:after,html[data-netbox-color-mode=dark] .bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow:after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#495057}html[data-netbox-color-mode=dark] .bs-popover-bottom .popover-header:before,html[data-netbox-color-mode=dark] .bs-popover-auto[data-popper-placement^=bottom] .popover-header:before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #454b52}html[data-netbox-color-mode=dark] .bs-popover-start>.popover-arrow,html[data-netbox-color-mode=dark] .bs-popover-auto[data-popper-placement^=left]>.popover-arrow{right:calc(-.5rem - 1px);width:.5rem;height:1rem}html[data-netbox-color-mode=dark] .bs-popover-start>.popover-arrow:before,html[data-netbox-color-mode=dark] .bs-popover-auto[data-popper-placement^=left]>.popover-arrow:before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:#ffffff40}html[data-netbox-color-mode=dark] .bs-popover-start>.popover-arrow:after,html[data-netbox-color-mode=dark] .bs-popover-auto[data-popper-placement^=left]>.popover-arrow:after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#495057}html[data-netbox-color-mode=dark] .popover-header{padding:.5rem 1rem;margin-bottom:0;font-size:1rem;background-color:#454b52;border-bottom:1px solid rgba(255,255,255,.2);border-top-left-radius:calc(.75rem - 1px);border-top-right-radius:calc(.75rem - 1px)}html[data-netbox-color-mode=dark] .popover-header:empty{display:none}html[data-netbox-color-mode=dark] .popover-body{padding:1rem;color:#fff}html[data-netbox-color-mode=dark] .carousel{position:relative}html[data-netbox-color-mode=dark] .carousel.pointer-event{touch-action:pan-y}html[data-netbox-color-mode=dark] .carousel-inner{position:relative;width:100%;overflow:hidden}html[data-netbox-color-mode=dark] .carousel-inner:after{display:block;clear:both;content:""}html[data-netbox-color-mode=dark] .carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;backface-visibility:hidden;transition:transform .6s ease-in-out}@media (prefers-reduced-motion: reduce){html[data-netbox-color-mode=dark] .carousel-item{transition:none}}html[data-netbox-color-mode=dark] .carousel-item.active,html[data-netbox-color-mode=dark] .carousel-item-next,html[data-netbox-color-mode=dark] .carousel-item-prev{display:block}html[data-netbox-color-mode=dark] .carousel-item-next:not(.carousel-item-start),html[data-netbox-color-mode=dark] .active.carousel-item-end{transform:translate(100%)}html[data-netbox-color-mode=dark] .carousel-item-prev:not(.carousel-item-end),html[data-netbox-color-mode=dark] .active.carousel-item-start{transform:translate(-100%)}html[data-netbox-color-mode=dark] .carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}html[data-netbox-color-mode=dark] .carousel-fade .carousel-item.active,html[data-netbox-color-mode=dark] .carousel-fade .carousel-item-next.carousel-item-start,html[data-netbox-color-mode=dark] .carousel-fade .carousel-item-prev.carousel-item-end{z-index:1;opacity:1}html[data-netbox-color-mode=dark] .carousel-fade .active.carousel-item-start,html[data-netbox-color-mode=dark] .carousel-fade .active.carousel-item-end{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion: reduce){html[data-netbox-color-mode=dark] .carousel-fade .active.carousel-item-start,html[data-netbox-color-mode=dark] .carousel-fade .active.carousel-item-end{transition:none}}html[data-netbox-color-mode=dark] .carousel-control-prev,html[data-netbox-color-mode=dark] .carousel-control-next{position:absolute;top:0;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:none;border:0;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion: reduce){html[data-netbox-color-mode=dark] .carousel-control-prev,html[data-netbox-color-mode=dark] .carousel-control-next{transition:none}}html[data-netbox-color-mode=dark] .carousel-control-prev:hover,html[data-netbox-color-mode=dark] .carousel-control-prev:focus,html[data-netbox-color-mode=dark] .carousel-control-next:hover,html[data-netbox-color-mode=dark] .carousel-control-next:focus{color:#fff;text-decoration:none;outline:0;opacity:.9}html[data-netbox-color-mode=dark] .carousel-control-prev{left:0}html[data-netbox-color-mode=dark] .carousel-control-next{right:0}html[data-netbox-color-mode=dark] .carousel-control-prev-icon,html[data-netbox-color-mode=dark] .carousel-control-next-icon{display:inline-block;width:2rem;height:2rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}html[data-netbox-color-mode=dark] .carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e")}html[data-netbox-color-mode=dark] .carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}html[data-netbox-color-mode=dark] .carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:2;display:flex;justify-content:center;padding:0;margin-right:15%;margin-bottom:1rem;margin-left:15%;list-style:none}html[data-netbox-color-mode=dark] .carousel-indicators [data-bs-target]{box-sizing:content-box;flex:0 1 auto;width:30px;height:3px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border:0;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion: reduce){html[data-netbox-color-mode=dark] .carousel-indicators [data-bs-target]{transition:none}}html[data-netbox-color-mode=dark] .carousel-indicators .active{opacity:1}html[data-netbox-color-mode=dark] .carousel-caption{position:absolute;right:15%;bottom:1.25rem;left:15%;padding-top:1.25rem;padding-bottom:1.25rem;color:#fff;text-align:center}html[data-netbox-color-mode=dark] .carousel-dark .carousel-control-prev-icon,html[data-netbox-color-mode=dark] .carousel-dark .carousel-control-next-icon{filter:invert(1) grayscale(100)}html[data-netbox-color-mode=dark] .carousel-dark .carousel-indicators [data-bs-target]{background-color:#000}html[data-netbox-color-mode=dark] .carousel-dark .carousel-caption{color:#000}@keyframes spinner-border{to{transform:rotate(360deg)}}html[data-netbox-color-mode=dark] .spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:-.125em;border:.25em solid currentColor;border-right-color:transparent;border-radius:50%;animation:.75s linear infinite spinner-border}html[data-netbox-color-mode=dark] .spinner-border-sm{width:1rem;height:1rem;border-width:.2em}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}html[data-netbox-color-mode=dark] .spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:-.125em;background-color:currentColor;border-radius:50%;opacity:0;animation:.75s linear infinite spinner-grow}html[data-netbox-color-mode=dark] .spinner-grow-sm{width:1rem;height:1rem}@media (prefers-reduced-motion: reduce){html[data-netbox-color-mode=dark] .spinner-border,html[data-netbox-color-mode=dark] .spinner-grow{animation-duration:1.5s}}html[data-netbox-color-mode=dark] .clearfix:after{display:block;clear:both;content:""}html[data-netbox-color-mode=dark] .link-primary{color:#6ea8fe}html[data-netbox-color-mode=dark] .link-primary:hover,html[data-netbox-color-mode=dark] .link-primary:focus{color:#8bb9fe}html[data-netbox-color-mode=dark] .link-secondary{color:#adb5bd}html[data-netbox-color-mode=dark] .link-secondary:hover,html[data-netbox-color-mode=dark] .link-secondary:focus{color:#bdc4ca}html[data-netbox-color-mode=dark] .link-success{color:#75b798}html[data-netbox-color-mode=dark] .link-success:hover,html[data-netbox-color-mode=dark] .link-success:focus{color:#91c5ad}html[data-netbox-color-mode=dark] .link-info{color:#6edff6}html[data-netbox-color-mode=dark] .link-info:hover,html[data-netbox-color-mode=dark] .link-info:focus{color:#8be5f8}html[data-netbox-color-mode=dark] .link-warning{color:#ffda6a}html[data-netbox-color-mode=dark] .link-warning:hover,html[data-netbox-color-mode=dark] .link-warning:focus{color:#ffe188}html[data-netbox-color-mode=dark] .link-danger{color:#ea868f}html[data-netbox-color-mode=dark] .link-danger:hover,html[data-netbox-color-mode=dark] .link-danger:focus{color:#ee9ea5}html[data-netbox-color-mode=dark] .link-light{color:#dee2e6}html[data-netbox-color-mode=dark] .link-light:hover,html[data-netbox-color-mode=dark] .link-light:focus{color:#e5e8eb}html[data-netbox-color-mode=dark] .link-dark{color:#adb5bd}html[data-netbox-color-mode=dark] .link-dark:hover,html[data-netbox-color-mode=dark] .link-dark:focus{color:#bdc4ca}html[data-netbox-color-mode=dark] .link-red{color:#ea868f}html[data-netbox-color-mode=dark] .link-red:hover,html[data-netbox-color-mode=dark] .link-red:focus{color:#ee9ea5}html[data-netbox-color-mode=dark] .link-yellow{color:#ffda6a}html[data-netbox-color-mode=dark] .link-yellow:hover,html[data-netbox-color-mode=dark] .link-yellow:focus{color:#ffe188}html[data-netbox-color-mode=dark] .link-green{color:#75b798}html[data-netbox-color-mode=dark] .link-green:hover,html[data-netbox-color-mode=dark] .link-green:focus{color:#91c5ad}html[data-netbox-color-mode=dark] .link-blue{color:#6ea8fe}html[data-netbox-color-mode=dark] .link-blue:hover,html[data-netbox-color-mode=dark] .link-blue:focus{color:#8bb9fe}html[data-netbox-color-mode=dark] .link-cyan{color:#6edff6}html[data-netbox-color-mode=dark] .link-cyan:hover,html[data-netbox-color-mode=dark] .link-cyan:focus{color:#8be5f8}html[data-netbox-color-mode=dark] .link-indigo{color:#a370f7}html[data-netbox-color-mode=dark] .link-indigo:hover,html[data-netbox-color-mode=dark] .link-indigo:focus{color:#b58df9}html[data-netbox-color-mode=dark] .link-purple{color:#a98eda}html[data-netbox-color-mode=dark] .link-purple:hover,html[data-netbox-color-mode=dark] .link-purple:focus{color:#baa5e1}html[data-netbox-color-mode=dark] .link-pink{color:#e685b5}html[data-netbox-color-mode=dark] .link-pink:hover,html[data-netbox-color-mode=dark] .link-pink:focus{color:#eb9dc4}html[data-netbox-color-mode=dark] .link-darker{color:#1b1f22}html[data-netbox-color-mode=dark] .link-darker:hover,html[data-netbox-color-mode=dark] .link-darker:focus{color:#16191b}html[data-netbox-color-mode=dark] .link-darkest{color:#171b1d}html[data-netbox-color-mode=dark] .link-darkest:hover,html[data-netbox-color-mode=dark] .link-darkest:focus{color:#121617}html[data-netbox-color-mode=dark] .link-gray{color:#ced4da}html[data-netbox-color-mode=dark] .link-gray:hover,html[data-netbox-color-mode=dark] .link-gray:focus{color:#d8dde1}html[data-netbox-color-mode=dark] .link-gray-100{color:#f8f9fa}html[data-netbox-color-mode=dark] .link-gray-100:hover,html[data-netbox-color-mode=dark] .link-gray-100:focus{color:#f9fafb}html[data-netbox-color-mode=dark] .link-gray-200{color:#e9ecef}html[data-netbox-color-mode=dark] .link-gray-200:hover,html[data-netbox-color-mode=dark] .link-gray-200:focus{color:#edf0f2}html[data-netbox-color-mode=dark] .link-gray-300{color:#dee2e6}html[data-netbox-color-mode=dark] .link-gray-300:hover,html[data-netbox-color-mode=dark] .link-gray-300:focus{color:#e5e8eb}html[data-netbox-color-mode=dark] .link-gray-400{color:#ced4da}html[data-netbox-color-mode=dark] .link-gray-400:hover,html[data-netbox-color-mode=dark] .link-gray-400:focus{color:#d8dde1}html[data-netbox-color-mode=dark] .link-gray-500{color:#adb5bd}html[data-netbox-color-mode=dark] .link-gray-500:hover,html[data-netbox-color-mode=dark] .link-gray-500:focus{color:#bdc4ca}html[data-netbox-color-mode=dark] .link-gray-600{color:#6c757d}html[data-netbox-color-mode=dark] .link-gray-600:hover,html[data-netbox-color-mode=dark] .link-gray-600:focus{color:#565e64}html[data-netbox-color-mode=dark] .link-gray-700{color:#495057}html[data-netbox-color-mode=dark] .link-gray-700:hover,html[data-netbox-color-mode=dark] .link-gray-700:focus{color:#3a4046}html[data-netbox-color-mode=dark] .link-gray-800{color:#343a40}html[data-netbox-color-mode=dark] .link-gray-800:hover,html[data-netbox-color-mode=dark] .link-gray-800:focus{color:#2a2e33}html[data-netbox-color-mode=dark] .link-gray-900{color:#212529}html[data-netbox-color-mode=dark] .link-gray-900:hover,html[data-netbox-color-mode=dark] .link-gray-900:focus{color:#1a1e21}html[data-netbox-color-mode=dark] .link-red-100{color:#f8d7da}html[data-netbox-color-mode=dark] .link-red-100:hover,html[data-netbox-color-mode=dark] .link-red-100:focus{color:#f9dfe1}html[data-netbox-color-mode=dark] .link-red-200{color:#f1aeb5}html[data-netbox-color-mode=dark] .link-red-200:hover,html[data-netbox-color-mode=dark] .link-red-200:focus{color:#f4bec4}html[data-netbox-color-mode=dark] .link-red-300{color:#ea868f}html[data-netbox-color-mode=dark] .link-red-300:hover,html[data-netbox-color-mode=dark] .link-red-300:focus{color:#ee9ea5}html[data-netbox-color-mode=dark] .link-red-400{color:#e35d6a}html[data-netbox-color-mode=dark] .link-red-400:hover,html[data-netbox-color-mode=dark] .link-red-400:focus{color:#e97d88}html[data-netbox-color-mode=dark] .link-red-500{color:#dc3545}html[data-netbox-color-mode=dark] .link-red-500:hover,html[data-netbox-color-mode=dark] .link-red-500:focus{color:#b02a37}html[data-netbox-color-mode=dark] .link-red-600{color:#b02a37}html[data-netbox-color-mode=dark] .link-red-600:hover,html[data-netbox-color-mode=dark] .link-red-600:focus{color:#8d222c}html[data-netbox-color-mode=dark] .link-red-700{color:#842029}html[data-netbox-color-mode=dark] .link-red-700:hover,html[data-netbox-color-mode=dark] .link-red-700:focus{color:#6a1a21}html[data-netbox-color-mode=dark] .link-red-800{color:#58151c}html[data-netbox-color-mode=dark] .link-red-800:hover,html[data-netbox-color-mode=dark] .link-red-800:focus{color:#461116}html[data-netbox-color-mode=dark] .link-red-900{color:#2c0b0e}html[data-netbox-color-mode=dark] .link-red-900:hover,html[data-netbox-color-mode=dark] .link-red-900:focus{color:#23090b}html[data-netbox-color-mode=dark] .link-yellow-100{color:#fff3cd}html[data-netbox-color-mode=dark] .link-yellow-100:hover,html[data-netbox-color-mode=dark] .link-yellow-100:focus{color:#fff5d7}html[data-netbox-color-mode=dark] .link-yellow-200{color:#ffe69c}html[data-netbox-color-mode=dark] .link-yellow-200:hover,html[data-netbox-color-mode=dark] .link-yellow-200:focus{color:#ffebb0}html[data-netbox-color-mode=dark] .link-yellow-300{color:#ffda6a}html[data-netbox-color-mode=dark] .link-yellow-300:hover,html[data-netbox-color-mode=dark] .link-yellow-300:focus{color:#ffe188}html[data-netbox-color-mode=dark] .link-yellow-400{color:#ffcd39}html[data-netbox-color-mode=dark] .link-yellow-400:hover,html[data-netbox-color-mode=dark] .link-yellow-400:focus{color:#ffd761}html[data-netbox-color-mode=dark] .link-yellow-500{color:#ffc107}html[data-netbox-color-mode=dark] .link-yellow-500:hover,html[data-netbox-color-mode=dark] .link-yellow-500:focus{color:#ffcd39}html[data-netbox-color-mode=dark] .link-yellow-600{color:#cc9a06}html[data-netbox-color-mode=dark] .link-yellow-600:hover,html[data-netbox-color-mode=dark] .link-yellow-600:focus{color:#d6ae38}html[data-netbox-color-mode=dark] .link-yellow-700{color:#997404}html[data-netbox-color-mode=dark] .link-yellow-700:hover,html[data-netbox-color-mode=dark] .link-yellow-700:focus{color:#ad9036}html[data-netbox-color-mode=dark] .link-yellow-800{color:#664d03}html[data-netbox-color-mode=dark] .link-yellow-800:hover,html[data-netbox-color-mode=dark] .link-yellow-800:focus{color:#523e02}html[data-netbox-color-mode=dark] .link-yellow-900{color:#332701}html[data-netbox-color-mode=dark] .link-yellow-900:hover,html[data-netbox-color-mode=dark] .link-yellow-900:focus{color:#291f01}html[data-netbox-color-mode=dark] .link-green-100{color:#d1e7dd}html[data-netbox-color-mode=dark] .link-green-100:hover,html[data-netbox-color-mode=dark] .link-green-100:focus{color:#daece4}html[data-netbox-color-mode=dark] .link-green-200{color:#a3cfbb}html[data-netbox-color-mode=dark] .link-green-200:hover,html[data-netbox-color-mode=dark] .link-green-200:focus{color:#b5d9c9}html[data-netbox-color-mode=dark] .link-green-300{color:#75b798}html[data-netbox-color-mode=dark] .link-green-300:hover,html[data-netbox-color-mode=dark] .link-green-300:focus{color:#91c5ad}html[data-netbox-color-mode=dark] .link-green-400{color:#479f76}html[data-netbox-color-mode=dark] .link-green-400:hover,html[data-netbox-color-mode=dark] .link-green-400:focus{color:#6cb291}html[data-netbox-color-mode=dark] .link-green-500{color:#198754}html[data-netbox-color-mode=dark] .link-green-500:hover,html[data-netbox-color-mode=dark] .link-green-500:focus{color:#146c43}html[data-netbox-color-mode=dark] .link-green-600{color:#146c43}html[data-netbox-color-mode=dark] .link-green-600:hover,html[data-netbox-color-mode=dark] .link-green-600:focus{color:#105636}html[data-netbox-color-mode=dark] .link-green-700{color:#0f5132}html[data-netbox-color-mode=dark] .link-green-700:hover,html[data-netbox-color-mode=dark] .link-green-700:focus{color:#0c4128}html[data-netbox-color-mode=dark] .link-green-800{color:#0a3622}html[data-netbox-color-mode=dark] .link-green-800:hover,html[data-netbox-color-mode=dark] .link-green-800:focus{color:#082b1b}html[data-netbox-color-mode=dark] .link-green-900{color:#051b11}html[data-netbox-color-mode=dark] .link-green-900:hover,html[data-netbox-color-mode=dark] .link-green-900:focus{color:#04160e}html[data-netbox-color-mode=dark] .link-blue-100{color:#cfe2ff}html[data-netbox-color-mode=dark] .link-blue-100:hover,html[data-netbox-color-mode=dark] .link-blue-100:focus{color:#d9e8ff}html[data-netbox-color-mode=dark] .link-blue-200{color:#9ec5fe}html[data-netbox-color-mode=dark] .link-blue-200:hover,html[data-netbox-color-mode=dark] .link-blue-200:focus{color:#b1d1fe}html[data-netbox-color-mode=dark] .link-blue-300{color:#6ea8fe}html[data-netbox-color-mode=dark] .link-blue-300:hover,html[data-netbox-color-mode=dark] .link-blue-300:focus{color:#8bb9fe}html[data-netbox-color-mode=dark] .link-blue-400{color:#3d8bfd}html[data-netbox-color-mode=dark] .link-blue-400:hover,html[data-netbox-color-mode=dark] .link-blue-400:focus{color:#64a2fd}html[data-netbox-color-mode=dark] .link-blue-500{color:#0d6efd}html[data-netbox-color-mode=dark] .link-blue-500:hover,html[data-netbox-color-mode=dark] .link-blue-500:focus{color:#0a58ca}html[data-netbox-color-mode=dark] .link-blue-600{color:#0a58ca}html[data-netbox-color-mode=dark] .link-blue-600:hover,html[data-netbox-color-mode=dark] .link-blue-600:focus{color:#0846a2}html[data-netbox-color-mode=dark] .link-blue-700{color:#084298}html[data-netbox-color-mode=dark] .link-blue-700:hover,html[data-netbox-color-mode=dark] .link-blue-700:focus{color:#06357a}html[data-netbox-color-mode=dark] .link-blue-800{color:#052c65}html[data-netbox-color-mode=dark] .link-blue-800:hover,html[data-netbox-color-mode=dark] .link-blue-800:focus{color:#042351}html[data-netbox-color-mode=dark] .link-blue-900{color:#031633}html[data-netbox-color-mode=dark] .link-blue-900:hover,html[data-netbox-color-mode=dark] .link-blue-900:focus{color:#021229}html[data-netbox-color-mode=dark] .link-cyan-100{color:#cff4fc}html[data-netbox-color-mode=dark] .link-cyan-100:hover,html[data-netbox-color-mode=dark] .link-cyan-100:focus{color:#d9f6fd}html[data-netbox-color-mode=dark] .link-cyan-200{color:#9eeaf9}html[data-netbox-color-mode=dark] .link-cyan-200:hover,html[data-netbox-color-mode=dark] .link-cyan-200:focus{color:#b1eefa}html[data-netbox-color-mode=dark] .link-cyan-300{color:#6edff6}html[data-netbox-color-mode=dark] .link-cyan-300:hover,html[data-netbox-color-mode=dark] .link-cyan-300:focus{color:#8be5f8}html[data-netbox-color-mode=dark] .link-cyan-400{color:#3dd5f3}html[data-netbox-color-mode=dark] .link-cyan-400:hover,html[data-netbox-color-mode=dark] .link-cyan-400:focus{color:#64ddf5}html[data-netbox-color-mode=dark] .link-cyan-500{color:#0dcaf0}html[data-netbox-color-mode=dark] .link-cyan-500:hover,html[data-netbox-color-mode=dark] .link-cyan-500:focus{color:#3dd5f3}html[data-netbox-color-mode=dark] .link-cyan-600{color:#0aa2c0}html[data-netbox-color-mode=dark] .link-cyan-600:hover,html[data-netbox-color-mode=dark] .link-cyan-600:focus{color:#3bb5cd}html[data-netbox-color-mode=dark] .link-cyan-700{color:#087990}html[data-netbox-color-mode=dark] .link-cyan-700:hover,html[data-netbox-color-mode=dark] .link-cyan-700:focus{color:#066173}html[data-netbox-color-mode=dark] .link-cyan-800{color:#055160}html[data-netbox-color-mode=dark] .link-cyan-800:hover,html[data-netbox-color-mode=dark] .link-cyan-800:focus{color:#04414d}html[data-netbox-color-mode=dark] .link-cyan-900{color:#032830}html[data-netbox-color-mode=dark] .link-cyan-900:hover,html[data-netbox-color-mode=dark] .link-cyan-900:focus{color:#022026}html[data-netbox-color-mode=dark] .link-indigo-100{color:#e0cffc}html[data-netbox-color-mode=dark] .link-indigo-100:hover,html[data-netbox-color-mode=dark] .link-indigo-100:focus{color:#e6d9fd}html[data-netbox-color-mode=dark] .link-indigo-200{color:#c29ffa}html[data-netbox-color-mode=dark] .link-indigo-200:hover,html[data-netbox-color-mode=dark] .link-indigo-200:focus{color:#ceb2fb}html[data-netbox-color-mode=dark] .link-indigo-300{color:#a370f7}html[data-netbox-color-mode=dark] .link-indigo-300:hover,html[data-netbox-color-mode=dark] .link-indigo-300:focus{color:#b58df9}html[data-netbox-color-mode=dark] .link-indigo-400{color:#8540f5}html[data-netbox-color-mode=dark] .link-indigo-400:hover,html[data-netbox-color-mode=dark] .link-indigo-400:focus{color:#6a33c4}html[data-netbox-color-mode=dark] .link-indigo-500{color:#6610f2}html[data-netbox-color-mode=dark] .link-indigo-500:hover,html[data-netbox-color-mode=dark] .link-indigo-500:focus{color:#520dc2}html[data-netbox-color-mode=dark] .link-indigo-600{color:#520dc2}html[data-netbox-color-mode=dark] .link-indigo-600:hover,html[data-netbox-color-mode=dark] .link-indigo-600:focus{color:#420a9b}html[data-netbox-color-mode=dark] .link-indigo-700{color:#3d0a91}html[data-netbox-color-mode=dark] .link-indigo-700:hover,html[data-netbox-color-mode=dark] .link-indigo-700:focus{color:#310874}html[data-netbox-color-mode=dark] .link-indigo-800{color:#290661}html[data-netbox-color-mode=dark] .link-indigo-800:hover,html[data-netbox-color-mode=dark] .link-indigo-800:focus{color:#21054e}html[data-netbox-color-mode=dark] .link-indigo-900{color:#140330}html[data-netbox-color-mode=dark] .link-indigo-900:hover,html[data-netbox-color-mode=dark] .link-indigo-900:focus{color:#100226}html[data-netbox-color-mode=dark] .link-purple-100{color:#e2d9f3}html[data-netbox-color-mode=dark] .link-purple-100:hover,html[data-netbox-color-mode=dark] .link-purple-100:focus{color:#e8e1f5}html[data-netbox-color-mode=dark] .link-purple-200{color:#c5b3e6}html[data-netbox-color-mode=dark] .link-purple-200:hover,html[data-netbox-color-mode=dark] .link-purple-200:focus{color:#d1c2eb}html[data-netbox-color-mode=dark] .link-purple-300{color:#a98eda}html[data-netbox-color-mode=dark] .link-purple-300:hover,html[data-netbox-color-mode=dark] .link-purple-300:focus{color:#baa5e1}html[data-netbox-color-mode=dark] .link-purple-400{color:#8c68cd}html[data-netbox-color-mode=dark] .link-purple-400:hover,html[data-netbox-color-mode=dark] .link-purple-400:focus{color:#a386d7}html[data-netbox-color-mode=dark] .link-purple-500{color:#6f42c1}html[data-netbox-color-mode=dark] .link-purple-500:hover,html[data-netbox-color-mode=dark] .link-purple-500:focus{color:#59359a}html[data-netbox-color-mode=dark] .link-purple-600{color:#59359a}html[data-netbox-color-mode=dark] .link-purple-600:hover,html[data-netbox-color-mode=dark] .link-purple-600:focus{color:#472a7b}html[data-netbox-color-mode=dark] .link-purple-700{color:#432874}html[data-netbox-color-mode=dark] .link-purple-700:hover,html[data-netbox-color-mode=dark] .link-purple-700:focus{color:#36205d}html[data-netbox-color-mode=dark] .link-purple-800{color:#2c1a4d}html[data-netbox-color-mode=dark] .link-purple-800:hover,html[data-netbox-color-mode=dark] .link-purple-800:focus{color:#23153e}html[data-netbox-color-mode=dark] .link-purple-900{color:#160d27}html[data-netbox-color-mode=dark] .link-purple-900:hover,html[data-netbox-color-mode=dark] .link-purple-900:focus{color:#120a1f}html[data-netbox-color-mode=dark] .link-pink-100{color:#f7d6e6}html[data-netbox-color-mode=dark] .link-pink-100:hover,html[data-netbox-color-mode=dark] .link-pink-100:focus{color:#f9deeb}html[data-netbox-color-mode=dark] .link-pink-200{color:#efadce}html[data-netbox-color-mode=dark] .link-pink-200:hover,html[data-netbox-color-mode=dark] .link-pink-200:focus{color:#f2bdd8}html[data-netbox-color-mode=dark] .link-pink-300{color:#e685b5}html[data-netbox-color-mode=dark] .link-pink-300:hover,html[data-netbox-color-mode=dark] .link-pink-300:focus{color:#eb9dc4}html[data-netbox-color-mode=dark] .link-pink-400{color:#de5c9d}html[data-netbox-color-mode=dark] .link-pink-400:hover,html[data-netbox-color-mode=dark] .link-pink-400:focus{color:#e57db1}html[data-netbox-color-mode=dark] .link-pink-500{color:#d63384}html[data-netbox-color-mode=dark] .link-pink-500:hover,html[data-netbox-color-mode=dark] .link-pink-500:focus{color:#ab296a}html[data-netbox-color-mode=dark] .link-pink-600{color:#ab296a}html[data-netbox-color-mode=dark] .link-pink-600:hover,html[data-netbox-color-mode=dark] .link-pink-600:focus{color:#892155}html[data-netbox-color-mode=dark] .link-pink-700{color:#801f4f}html[data-netbox-color-mode=dark] .link-pink-700:hover,html[data-netbox-color-mode=dark] .link-pink-700:focus{color:#66193f}html[data-netbox-color-mode=dark] .link-pink-800{color:#561435}html[data-netbox-color-mode=dark] .link-pink-800:hover,html[data-netbox-color-mode=dark] .link-pink-800:focus{color:#45102a}html[data-netbox-color-mode=dark] .link-pink-900{color:#2b0a1a}html[data-netbox-color-mode=dark] .link-pink-900:hover,html[data-netbox-color-mode=dark] .link-pink-900:focus{color:#220815}html[data-netbox-color-mode=dark] .ratio{position:relative;width:100%}html[data-netbox-color-mode=dark] .ratio:before{display:block;padding-top:var(--bs-aspect-ratio);content:""}html[data-netbox-color-mode=dark] .ratio>*{position:absolute;top:0;left:0;width:100%;height:100%}html[data-netbox-color-mode=dark] .ratio-1x1{--bs-aspect-ratio: 100%}html[data-netbox-color-mode=dark] .ratio-4x3{--bs-aspect-ratio: calc(3 / 4 * 100%)}html[data-netbox-color-mode=dark] .ratio-16x9{--bs-aspect-ratio: calc(9 / 16 * 100%)}html[data-netbox-color-mode=dark] .ratio-21x9{--bs-aspect-ratio: calc(9 / 21 * 100%)}html[data-netbox-color-mode=dark] .fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}html[data-netbox-color-mode=dark] .fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}html[data-netbox-color-mode=dark] .sticky-top{position:sticky;top:0;z-index:1020}@media (min-width: 576px){html[data-netbox-color-mode=dark] .sticky-sm-top{position:sticky;top:0;z-index:1020}}@media (min-width: 768px){html[data-netbox-color-mode=dark] .sticky-md-top{position:sticky;top:0;z-index:1020}}@media (min-width: 992px){html[data-netbox-color-mode=dark] .sticky-lg-top{position:sticky;top:0;z-index:1020}}@media (min-width: 1200px){html[data-netbox-color-mode=dark] .sticky-xl-top{position:sticky;top:0;z-index:1020}}@media (min-width: 1400px){html[data-netbox-color-mode=dark] .sticky-xxl-top{position:sticky;top:0;z-index:1020}}html[data-netbox-color-mode=dark] .visually-hidden,html[data-netbox-color-mode=dark] .visually-hidden-focusable:not(:focus):not(:focus-within){position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}html[data-netbox-color-mode=dark] .stretched-link:after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;content:""}html[data-netbox-color-mode=dark] .text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}html[data-netbox-color-mode=dark] .align-baseline{vertical-align:baseline!important}html[data-netbox-color-mode=dark] .align-top{vertical-align:top!important}html[data-netbox-color-mode=dark] .align-middle{vertical-align:middle!important}html[data-netbox-color-mode=dark] .align-bottom{vertical-align:bottom!important}html[data-netbox-color-mode=dark] .align-text-bottom{vertical-align:text-bottom!important}html[data-netbox-color-mode=dark] .align-text-top{vertical-align:text-top!important}html[data-netbox-color-mode=dark] .float-start{float:left!important}html[data-netbox-color-mode=dark] .float-end{float:right!important}html[data-netbox-color-mode=dark] .float-none{float:none!important}html[data-netbox-color-mode=dark] .overflow-auto{overflow:auto!important}html[data-netbox-color-mode=dark] .overflow-hidden{overflow:hidden!important}html[data-netbox-color-mode=dark] .overflow-visible{overflow:visible!important}html[data-netbox-color-mode=dark] .overflow-scroll{overflow:scroll!important}html[data-netbox-color-mode=dark] .d-inline{display:inline!important}html[data-netbox-color-mode=dark] .d-inline-block{display:inline-block!important}html[data-netbox-color-mode=dark] .d-block{display:block!important}html[data-netbox-color-mode=dark] .d-grid{display:grid!important}html[data-netbox-color-mode=dark] .d-table{display:table!important}html[data-netbox-color-mode=dark] .d-table-row{display:table-row!important}html[data-netbox-color-mode=dark] .d-table-cell{display:table-cell!important}html[data-netbox-color-mode=dark] .d-flex{display:flex!important}html[data-netbox-color-mode=dark] .d-inline-flex{display:inline-flex!important}html[data-netbox-color-mode=dark] .d-none{display:none!important}html[data-netbox-color-mode=dark] .shadow{box-shadow:0 .5rem 1rem #00000026!important}html[data-netbox-color-mode=dark] .shadow-sm{box-shadow:0 .125rem .25rem #00000013!important}html[data-netbox-color-mode=dark] .shadow-lg{box-shadow:0 1rem 3rem #0000002d!important}html[data-netbox-color-mode=dark] .shadow-none{box-shadow:none!important}html[data-netbox-color-mode=dark] .position-static{position:static!important}html[data-netbox-color-mode=dark] .position-relative{position:relative!important}html[data-netbox-color-mode=dark] .position-absolute{position:absolute!important}html[data-netbox-color-mode=dark] .position-fixed{position:fixed!important}html[data-netbox-color-mode=dark] .position-sticky{position:sticky!important}html[data-netbox-color-mode=dark] .top-0{top:0!important}html[data-netbox-color-mode=dark] .top-50{top:50%!important}html[data-netbox-color-mode=dark] .top-100{top:100%!important}html[data-netbox-color-mode=dark] .bottom-0{bottom:0!important}html[data-netbox-color-mode=dark] .bottom-50{bottom:50%!important}html[data-netbox-color-mode=dark] .bottom-100{bottom:100%!important}html[data-netbox-color-mode=dark] .start-0{left:0!important}html[data-netbox-color-mode=dark] .start-50{left:50%!important}html[data-netbox-color-mode=dark] .start-100{left:100%!important}html[data-netbox-color-mode=dark] .end-0{right:0!important}html[data-netbox-color-mode=dark] .end-50{right:50%!important}html[data-netbox-color-mode=dark] .end-100{right:100%!important}html[data-netbox-color-mode=dark] .translate-middle{transform:translate(-50%,-50%)!important}html[data-netbox-color-mode=dark] .translate-middle-x{transform:translate(-50%)!important}html[data-netbox-color-mode=dark] .translate-middle-y{transform:translateY(-50%)!important}html[data-netbox-color-mode=dark] .border{border:1px solid #495057!important}html[data-netbox-color-mode=dark] .border-0{border:0!important}html[data-netbox-color-mode=dark] .border-top{border-top:1px solid #495057!important}html[data-netbox-color-mode=dark] .border-top-0{border-top:0!important}html[data-netbox-color-mode=dark] .border-end{border-right:1px solid #495057!important}html[data-netbox-color-mode=dark] .border-end-0{border-right:0!important}html[data-netbox-color-mode=dark] .border-bottom{border-bottom:1px solid #495057!important}html[data-netbox-color-mode=dark] .border-bottom-0{border-bottom:0!important}html[data-netbox-color-mode=dark] .border-start{border-left:1px solid #495057!important}html[data-netbox-color-mode=dark] .border-start-0{border-left:0!important}html[data-netbox-color-mode=dark] .border-primary{border-color:#6ea8fe!important}html[data-netbox-color-mode=dark] .border-secondary{border-color:#adb5bd!important}html[data-netbox-color-mode=dark] .border-success{border-color:#75b798!important}html[data-netbox-color-mode=dark] .border-info{border-color:#6edff6!important}html[data-netbox-color-mode=dark] .border-warning{border-color:#ffda6a!important}html[data-netbox-color-mode=dark] .border-danger{border-color:#ea868f!important}html[data-netbox-color-mode=dark] .border-light{border-color:#dee2e6!important}html[data-netbox-color-mode=dark] .border-dark{border-color:#adb5bd!important}html[data-netbox-color-mode=dark] .border-red{border-color:#ea868f!important}html[data-netbox-color-mode=dark] .border-yellow{border-color:#ffda6a!important}html[data-netbox-color-mode=dark] .border-green{border-color:#75b798!important}html[data-netbox-color-mode=dark] .border-blue{border-color:#6ea8fe!important}html[data-netbox-color-mode=dark] .border-cyan{border-color:#6edff6!important}html[data-netbox-color-mode=dark] .border-indigo{border-color:#a370f7!important}html[data-netbox-color-mode=dark] .border-purple{border-color:#a98eda!important}html[data-netbox-color-mode=dark] .border-pink{border-color:#e685b5!important}html[data-netbox-color-mode=dark] .border-darker{border-color:#1b1f22!important}html[data-netbox-color-mode=dark] .border-darkest{border-color:#171b1d!important}html[data-netbox-color-mode=dark] .border-gray{border-color:#ced4da!important}html[data-netbox-color-mode=dark] .border-gray-100{border-color:#f8f9fa!important}html[data-netbox-color-mode=dark] .border-gray-200{border-color:#e9ecef!important}html[data-netbox-color-mode=dark] .border-gray-300{border-color:#dee2e6!important}html[data-netbox-color-mode=dark] .border-gray-400{border-color:#ced4da!important}html[data-netbox-color-mode=dark] .border-gray-500{border-color:#adb5bd!important}html[data-netbox-color-mode=dark] .border-gray-600{border-color:#6c757d!important}html[data-netbox-color-mode=dark] .border-gray-700{border-color:#495057!important}html[data-netbox-color-mode=dark] .border-gray-800{border-color:#343a40!important}html[data-netbox-color-mode=dark] .border-gray-900{border-color:#212529!important}html[data-netbox-color-mode=dark] .border-red-100{border-color:#f8d7da!important}html[data-netbox-color-mode=dark] .border-red-200{border-color:#f1aeb5!important}html[data-netbox-color-mode=dark] .border-red-300{border-color:#ea868f!important}html[data-netbox-color-mode=dark] .border-red-400{border-color:#e35d6a!important}html[data-netbox-color-mode=dark] .border-red-500{border-color:#dc3545!important}html[data-netbox-color-mode=dark] .border-red-600{border-color:#b02a37!important}html[data-netbox-color-mode=dark] .border-red-700{border-color:#842029!important}html[data-netbox-color-mode=dark] .border-red-800{border-color:#58151c!important}html[data-netbox-color-mode=dark] .border-red-900{border-color:#2c0b0e!important}html[data-netbox-color-mode=dark] .border-yellow-100{border-color:#fff3cd!important}html[data-netbox-color-mode=dark] .border-yellow-200{border-color:#ffe69c!important}html[data-netbox-color-mode=dark] .border-yellow-300{border-color:#ffda6a!important}html[data-netbox-color-mode=dark] .border-yellow-400{border-color:#ffcd39!important}html[data-netbox-color-mode=dark] .border-yellow-500{border-color:#ffc107!important}html[data-netbox-color-mode=dark] .border-yellow-600{border-color:#cc9a06!important}html[data-netbox-color-mode=dark] .border-yellow-700{border-color:#997404!important}html[data-netbox-color-mode=dark] .border-yellow-800{border-color:#664d03!important}html[data-netbox-color-mode=dark] .border-yellow-900{border-color:#332701!important}html[data-netbox-color-mode=dark] .border-green-100{border-color:#d1e7dd!important}html[data-netbox-color-mode=dark] .border-green-200{border-color:#a3cfbb!important}html[data-netbox-color-mode=dark] .border-green-300{border-color:#75b798!important}html[data-netbox-color-mode=dark] .border-green-400{border-color:#479f76!important}html[data-netbox-color-mode=dark] .border-green-500{border-color:#198754!important}html[data-netbox-color-mode=dark] .border-green-600{border-color:#146c43!important}html[data-netbox-color-mode=dark] .border-green-700{border-color:#0f5132!important}html[data-netbox-color-mode=dark] .border-green-800{border-color:#0a3622!important}html[data-netbox-color-mode=dark] .border-green-900{border-color:#051b11!important}html[data-netbox-color-mode=dark] .border-blue-100{border-color:#cfe2ff!important}html[data-netbox-color-mode=dark] .border-blue-200{border-color:#9ec5fe!important}html[data-netbox-color-mode=dark] .border-blue-300{border-color:#6ea8fe!important}html[data-netbox-color-mode=dark] .border-blue-400{border-color:#3d8bfd!important}html[data-netbox-color-mode=dark] .border-blue-500{border-color:#0d6efd!important}html[data-netbox-color-mode=dark] .border-blue-600{border-color:#0a58ca!important}html[data-netbox-color-mode=dark] .border-blue-700{border-color:#084298!important}html[data-netbox-color-mode=dark] .border-blue-800{border-color:#052c65!important}html[data-netbox-color-mode=dark] .border-blue-900{border-color:#031633!important}html[data-netbox-color-mode=dark] .border-cyan-100{border-color:#cff4fc!important}html[data-netbox-color-mode=dark] .border-cyan-200{border-color:#9eeaf9!important}html[data-netbox-color-mode=dark] .border-cyan-300{border-color:#6edff6!important}html[data-netbox-color-mode=dark] .border-cyan-400{border-color:#3dd5f3!important}html[data-netbox-color-mode=dark] .border-cyan-500{border-color:#0dcaf0!important}html[data-netbox-color-mode=dark] .border-cyan-600{border-color:#0aa2c0!important}html[data-netbox-color-mode=dark] .border-cyan-700{border-color:#087990!important}html[data-netbox-color-mode=dark] .border-cyan-800{border-color:#055160!important}html[data-netbox-color-mode=dark] .border-cyan-900{border-color:#032830!important}html[data-netbox-color-mode=dark] .border-indigo-100{border-color:#e0cffc!important}html[data-netbox-color-mode=dark] .border-indigo-200{border-color:#c29ffa!important}html[data-netbox-color-mode=dark] .border-indigo-300{border-color:#a370f7!important}html[data-netbox-color-mode=dark] .border-indigo-400{border-color:#8540f5!important}html[data-netbox-color-mode=dark] .border-indigo-500{border-color:#6610f2!important}html[data-netbox-color-mode=dark] .border-indigo-600{border-color:#520dc2!important}html[data-netbox-color-mode=dark] .border-indigo-700{border-color:#3d0a91!important}html[data-netbox-color-mode=dark] .border-indigo-800{border-color:#290661!important}html[data-netbox-color-mode=dark] .border-indigo-900{border-color:#140330!important}html[data-netbox-color-mode=dark] .border-purple-100{border-color:#e2d9f3!important}html[data-netbox-color-mode=dark] .border-purple-200{border-color:#c5b3e6!important}html[data-netbox-color-mode=dark] .border-purple-300{border-color:#a98eda!important}html[data-netbox-color-mode=dark] .border-purple-400{border-color:#8c68cd!important}html[data-netbox-color-mode=dark] .border-purple-500{border-color:#6f42c1!important}html[data-netbox-color-mode=dark] .border-purple-600{border-color:#59359a!important}html[data-netbox-color-mode=dark] .border-purple-700{border-color:#432874!important}html[data-netbox-color-mode=dark] .border-purple-800{border-color:#2c1a4d!important}html[data-netbox-color-mode=dark] .border-purple-900{border-color:#160d27!important}html[data-netbox-color-mode=dark] .border-pink-100{border-color:#f7d6e6!important}html[data-netbox-color-mode=dark] .border-pink-200{border-color:#efadce!important}html[data-netbox-color-mode=dark] .border-pink-300{border-color:#e685b5!important}html[data-netbox-color-mode=dark] .border-pink-400{border-color:#de5c9d!important}html[data-netbox-color-mode=dark] .border-pink-500{border-color:#d63384!important}html[data-netbox-color-mode=dark] .border-pink-600{border-color:#ab296a!important}html[data-netbox-color-mode=dark] .border-pink-700{border-color:#801f4f!important}html[data-netbox-color-mode=dark] .border-pink-800{border-color:#561435!important}html[data-netbox-color-mode=dark] .border-pink-900{border-color:#2b0a1a!important}html[data-netbox-color-mode=dark] .border-white{border-color:#fff!important}html[data-netbox-color-mode=dark] .border-1{border-width:1px!important}html[data-netbox-color-mode=dark] .border-2{border-width:2px!important}html[data-netbox-color-mode=dark] .border-3{border-width:3px!important}html[data-netbox-color-mode=dark] .border-4{border-width:4px!important}html[data-netbox-color-mode=dark] .border-5{border-width:5px!important}html[data-netbox-color-mode=dark] .w-25{width:25%!important}html[data-netbox-color-mode=dark] .w-50{width:50%!important}html[data-netbox-color-mode=dark] .w-75{width:75%!important}html[data-netbox-color-mode=dark] .w-100{width:100%!important}html[data-netbox-color-mode=dark] .w-auto{width:auto!important}html[data-netbox-color-mode=dark] .mw-100{max-width:100%!important}html[data-netbox-color-mode=dark] .vw-100{width:100vw!important}html[data-netbox-color-mode=dark] .min-vw-100{min-width:100vw!important}html[data-netbox-color-mode=dark] .h-25{height:25%!important}html[data-netbox-color-mode=dark] .h-50{height:50%!important}html[data-netbox-color-mode=dark] .h-75{height:75%!important}html[data-netbox-color-mode=dark] .h-100{height:100%!important}html[data-netbox-color-mode=dark] .h-auto{height:auto!important}html[data-netbox-color-mode=dark] .mh-100{max-height:100%!important}html[data-netbox-color-mode=dark] .vh-100{height:100vh!important}html[data-netbox-color-mode=dark] .min-vh-100{min-height:100vh!important}html[data-netbox-color-mode=dark] .flex-fill{flex:1 1 auto!important}html[data-netbox-color-mode=dark] .flex-row{flex-direction:row!important}html[data-netbox-color-mode=dark] .flex-column{flex-direction:column!important}html[data-netbox-color-mode=dark] .flex-row-reverse{flex-direction:row-reverse!important}html[data-netbox-color-mode=dark] .flex-column-reverse{flex-direction:column-reverse!important}html[data-netbox-color-mode=dark] .flex-grow-0{flex-grow:0!important}html[data-netbox-color-mode=dark] .flex-grow-1{flex-grow:1!important}html[data-netbox-color-mode=dark] .flex-shrink-0{flex-shrink:0!important}html[data-netbox-color-mode=dark] .flex-shrink-1{flex-shrink:1!important}html[data-netbox-color-mode=dark] .flex-wrap{flex-wrap:wrap!important}html[data-netbox-color-mode=dark] .flex-nowrap{flex-wrap:nowrap!important}html[data-netbox-color-mode=dark] .flex-wrap-reverse{flex-wrap:wrap-reverse!important}html[data-netbox-color-mode=dark] .gap-0{gap:0!important}html[data-netbox-color-mode=dark] .gap-1{gap:.25rem!important}html[data-netbox-color-mode=dark] .gap-2{gap:.5rem!important}html[data-netbox-color-mode=dark] .gap-3{gap:1rem!important}html[data-netbox-color-mode=dark] .gap-4{gap:1.5rem!important}html[data-netbox-color-mode=dark] .gap-5{gap:3rem!important}html[data-netbox-color-mode=dark] .justify-content-start{justify-content:flex-start!important}html[data-netbox-color-mode=dark] .justify-content-end{justify-content:flex-end!important}html[data-netbox-color-mode=dark] .justify-content-center{justify-content:center!important}html[data-netbox-color-mode=dark] .justify-content-between{justify-content:space-between!important}html[data-netbox-color-mode=dark] .justify-content-around{justify-content:space-around!important}html[data-netbox-color-mode=dark] .justify-content-evenly{justify-content:space-evenly!important}html[data-netbox-color-mode=dark] .align-items-start{align-items:flex-start!important}html[data-netbox-color-mode=dark] .align-items-end{align-items:flex-end!important}html[data-netbox-color-mode=dark] .align-items-center{align-items:center!important}html[data-netbox-color-mode=dark] .align-items-baseline{align-items:baseline!important}html[data-netbox-color-mode=dark] .align-items-stretch{align-items:stretch!important}html[data-netbox-color-mode=dark] .align-content-start{align-content:flex-start!important}html[data-netbox-color-mode=dark] .align-content-end{align-content:flex-end!important}html[data-netbox-color-mode=dark] .align-content-center{align-content:center!important}html[data-netbox-color-mode=dark] .align-content-between{align-content:space-between!important}html[data-netbox-color-mode=dark] .align-content-around{align-content:space-around!important}html[data-netbox-color-mode=dark] .align-content-stretch{align-content:stretch!important}html[data-netbox-color-mode=dark] .align-self-auto{align-self:auto!important}html[data-netbox-color-mode=dark] .align-self-start{align-self:flex-start!important}html[data-netbox-color-mode=dark] .align-self-end{align-self:flex-end!important}html[data-netbox-color-mode=dark] .align-self-center{align-self:center!important}html[data-netbox-color-mode=dark] .align-self-baseline{align-self:baseline!important}html[data-netbox-color-mode=dark] .align-self-stretch{align-self:stretch!important}html[data-netbox-color-mode=dark] .order-first{order:-1!important}html[data-netbox-color-mode=dark] .order-0{order:0!important}html[data-netbox-color-mode=dark] .order-1{order:1!important}html[data-netbox-color-mode=dark] .order-2{order:2!important}html[data-netbox-color-mode=dark] .order-3{order:3!important}html[data-netbox-color-mode=dark] .order-4{order:4!important}html[data-netbox-color-mode=dark] .order-5{order:5!important}html[data-netbox-color-mode=dark] .order-last{order:6!important}html[data-netbox-color-mode=dark] .m-0{margin:0!important}html[data-netbox-color-mode=dark] .m-1{margin:.25rem!important}html[data-netbox-color-mode=dark] .m-2{margin:.5rem!important}html[data-netbox-color-mode=dark] .m-3{margin:1rem!important}html[data-netbox-color-mode=dark] .m-4{margin:1.5rem!important}html[data-netbox-color-mode=dark] .m-5{margin:3rem!important}html[data-netbox-color-mode=dark] .m-auto{margin:auto!important}html[data-netbox-color-mode=dark] .mx-0{margin-right:0!important;margin-left:0!important}html[data-netbox-color-mode=dark] .mx-1{margin-right:.25rem!important;margin-left:.25rem!important}html[data-netbox-color-mode=dark] .mx-2{margin-right:.5rem!important;margin-left:.5rem!important}html[data-netbox-color-mode=dark] .mx-3{margin-right:1rem!important;margin-left:1rem!important}html[data-netbox-color-mode=dark] .mx-4{margin-right:1.5rem!important;margin-left:1.5rem!important}html[data-netbox-color-mode=dark] .mx-5{margin-right:3rem!important;margin-left:3rem!important}html[data-netbox-color-mode=dark] .mx-auto{margin-right:auto!important;margin-left:auto!important}html[data-netbox-color-mode=dark] .my-0{margin-top:0!important;margin-bottom:0!important}html[data-netbox-color-mode=dark] .my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}html[data-netbox-color-mode=dark] .my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}html[data-netbox-color-mode=dark] .my-3{margin-top:1rem!important;margin-bottom:1rem!important}html[data-netbox-color-mode=dark] .my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}html[data-netbox-color-mode=dark] .my-5{margin-top:3rem!important;margin-bottom:3rem!important}html[data-netbox-color-mode=dark] .my-auto{margin-top:auto!important;margin-bottom:auto!important}html[data-netbox-color-mode=dark] .mt-0{margin-top:0!important}html[data-netbox-color-mode=dark] .mt-1{margin-top:.25rem!important}html[data-netbox-color-mode=dark] .mt-2{margin-top:.5rem!important}html[data-netbox-color-mode=dark] .mt-3{margin-top:1rem!important}html[data-netbox-color-mode=dark] .mt-4{margin-top:1.5rem!important}html[data-netbox-color-mode=dark] .mt-5{margin-top:3rem!important}html[data-netbox-color-mode=dark] .mt-auto{margin-top:auto!important}html[data-netbox-color-mode=dark] .me-0{margin-right:0!important}html[data-netbox-color-mode=dark] .me-1{margin-right:.25rem!important}html[data-netbox-color-mode=dark] .me-2{margin-right:.5rem!important}html[data-netbox-color-mode=dark] .me-3{margin-right:1rem!important}html[data-netbox-color-mode=dark] .me-4{margin-right:1.5rem!important}html[data-netbox-color-mode=dark] .me-5{margin-right:3rem!important}html[data-netbox-color-mode=dark] .me-auto{margin-right:auto!important}html[data-netbox-color-mode=dark] .mb-0{margin-bottom:0!important}html[data-netbox-color-mode=dark] .mb-1{margin-bottom:.25rem!important}html[data-netbox-color-mode=dark] .mb-2{margin-bottom:.5rem!important}html[data-netbox-color-mode=dark] .mb-3{margin-bottom:1rem!important}html[data-netbox-color-mode=dark] .mb-4{margin-bottom:1.5rem!important}html[data-netbox-color-mode=dark] .mb-5{margin-bottom:3rem!important}html[data-netbox-color-mode=dark] .mb-auto{margin-bottom:auto!important}html[data-netbox-color-mode=dark] .ms-0{margin-left:0!important}html[data-netbox-color-mode=dark] .ms-1{margin-left:.25rem!important}html[data-netbox-color-mode=dark] .ms-2{margin-left:.5rem!important}html[data-netbox-color-mode=dark] .ms-3{margin-left:1rem!important}html[data-netbox-color-mode=dark] .ms-4{margin-left:1.5rem!important}html[data-netbox-color-mode=dark] .ms-5{margin-left:3rem!important}html[data-netbox-color-mode=dark] .ms-auto{margin-left:auto!important}html[data-netbox-color-mode=dark] .p-0{padding:0!important}html[data-netbox-color-mode=dark] .p-1{padding:.25rem!important}html[data-netbox-color-mode=dark] .p-2{padding:.5rem!important}html[data-netbox-color-mode=dark] .p-3{padding:1rem!important}html[data-netbox-color-mode=dark] .p-4{padding:1.5rem!important}html[data-netbox-color-mode=dark] .p-5{padding:3rem!important}html[data-netbox-color-mode=dark] .px-0{padding-right:0!important;padding-left:0!important}html[data-netbox-color-mode=dark] .px-1{padding-right:.25rem!important;padding-left:.25rem!important}html[data-netbox-color-mode=dark] .px-2{padding-right:.5rem!important;padding-left:.5rem!important}html[data-netbox-color-mode=dark] .px-3{padding-right:1rem!important;padding-left:1rem!important}html[data-netbox-color-mode=dark] .px-4{padding-right:1.5rem!important;padding-left:1.5rem!important}html[data-netbox-color-mode=dark] .px-5{padding-right:3rem!important;padding-left:3rem!important}html[data-netbox-color-mode=dark] .py-0{padding-top:0!important;padding-bottom:0!important}html[data-netbox-color-mode=dark] .py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}html[data-netbox-color-mode=dark] .py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}html[data-netbox-color-mode=dark] .py-3{padding-top:1rem!important;padding-bottom:1rem!important}html[data-netbox-color-mode=dark] .py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}html[data-netbox-color-mode=dark] .py-5{padding-top:3rem!important;padding-bottom:3rem!important}html[data-netbox-color-mode=dark] .pt-0{padding-top:0!important}html[data-netbox-color-mode=dark] .pt-1{padding-top:.25rem!important}html[data-netbox-color-mode=dark] .pt-2{padding-top:.5rem!important}html[data-netbox-color-mode=dark] .pt-3{padding-top:1rem!important}html[data-netbox-color-mode=dark] .pt-4{padding-top:1.5rem!important}html[data-netbox-color-mode=dark] .pt-5{padding-top:3rem!important}html[data-netbox-color-mode=dark] .pe-0{padding-right:0!important}html[data-netbox-color-mode=dark] .pe-1{padding-right:.25rem!important}html[data-netbox-color-mode=dark] .pe-2{padding-right:.5rem!important}html[data-netbox-color-mode=dark] .pe-3{padding-right:1rem!important}html[data-netbox-color-mode=dark] .pe-4{padding-right:1.5rem!important}html[data-netbox-color-mode=dark] .pe-5{padding-right:3rem!important}html[data-netbox-color-mode=dark] .pb-0{padding-bottom:0!important}html[data-netbox-color-mode=dark] .pb-1{padding-bottom:.25rem!important}html[data-netbox-color-mode=dark] .pb-2{padding-bottom:.5rem!important}html[data-netbox-color-mode=dark] .pb-3{padding-bottom:1rem!important}html[data-netbox-color-mode=dark] .pb-4{padding-bottom:1.5rem!important}html[data-netbox-color-mode=dark] .pb-5{padding-bottom:3rem!important}html[data-netbox-color-mode=dark] .ps-0{padding-left:0!important}html[data-netbox-color-mode=dark] .ps-1{padding-left:.25rem!important}html[data-netbox-color-mode=dark] .ps-2{padding-left:.5rem!important}html[data-netbox-color-mode=dark] .ps-3{padding-left:1rem!important}html[data-netbox-color-mode=dark] .ps-4{padding-left:1.5rem!important}html[data-netbox-color-mode=dark] .ps-5{padding-left:3rem!important}html[data-netbox-color-mode=dark] .font-monospace{font-family:var(--bs-font-monospace)!important}html[data-netbox-color-mode=dark] .fs-1{font-size:calc(1.375rem + 1.5vw)!important}html[data-netbox-color-mode=dark] .fs-2{font-size:calc(1.325rem + .9vw)!important}html[data-netbox-color-mode=dark] .fs-3{font-size:calc(1.3rem + .6vw)!important}html[data-netbox-color-mode=dark] .fs-4{font-size:calc(1.275rem + .3vw)!important}html[data-netbox-color-mode=dark] .fs-5{font-size:1.25rem!important}html[data-netbox-color-mode=dark] .fs-6{font-size:1rem!important}html[data-netbox-color-mode=dark] .fst-italic{font-style:italic!important}html[data-netbox-color-mode=dark] .fst-normal{font-style:normal!important}html[data-netbox-color-mode=dark] .fw-light{font-weight:300!important}html[data-netbox-color-mode=dark] .fw-lighter{font-weight:200!important}html[data-netbox-color-mode=dark] .fw-normal{font-weight:400!important}html[data-netbox-color-mode=dark] .fw-bold{font-weight:700!important}html[data-netbox-color-mode=dark] .fw-bolder{font-weight:800!important}html[data-netbox-color-mode=dark] .lh-1{line-height:1!important}html[data-netbox-color-mode=dark] .lh-sm{line-height:1.25!important}html[data-netbox-color-mode=dark] .lh-base{line-height:1.5!important}html[data-netbox-color-mode=dark] .lh-lg{line-height:1.75!important}html[data-netbox-color-mode=dark] .text-start{text-align:left!important}html[data-netbox-color-mode=dark] .text-end{text-align:right!important}html[data-netbox-color-mode=dark] .text-center{text-align:center!important}html[data-netbox-color-mode=dark] .text-decoration-none{text-decoration:none!important}html[data-netbox-color-mode=dark] .text-decoration-underline{text-decoration:underline!important}html[data-netbox-color-mode=dark] .text-decoration-line-through{text-decoration:line-through!important}html[data-netbox-color-mode=dark] .text-lowercase{text-transform:lowercase!important}html[data-netbox-color-mode=dark] .text-uppercase{text-transform:uppercase!important}html[data-netbox-color-mode=dark] .text-capitalize{text-transform:capitalize!important}html[data-netbox-color-mode=dark] .text-wrap{white-space:normal!important}html[data-netbox-color-mode=dark] .text-nowrap{white-space:nowrap!important}html[data-netbox-color-mode=dark] .text-break{word-wrap:break-word!important;word-break:break-word!important}html[data-netbox-color-mode=dark] .text-primary{color:#6ea8fe!important}html[data-netbox-color-mode=dark] .text-secondary{color:#adb5bd!important}html[data-netbox-color-mode=dark] .text-success{color:#75b798!important}html[data-netbox-color-mode=dark] .text-info{color:#6edff6!important}html[data-netbox-color-mode=dark] .text-warning{color:#ffda6a!important}html[data-netbox-color-mode=dark] .text-danger{color:#ea868f!important}html[data-netbox-color-mode=dark] .text-light{color:#dee2e6!important}html[data-netbox-color-mode=dark] .text-dark{color:#adb5bd!important}html[data-netbox-color-mode=dark] .text-red{color:#ea868f!important}html[data-netbox-color-mode=dark] .text-yellow{color:#ffda6a!important}html[data-netbox-color-mode=dark] .text-green{color:#75b798!important}html[data-netbox-color-mode=dark] .text-blue{color:#6ea8fe!important}html[data-netbox-color-mode=dark] .text-cyan{color:#6edff6!important}html[data-netbox-color-mode=dark] .text-indigo{color:#a370f7!important}html[data-netbox-color-mode=dark] .text-purple{color:#a98eda!important}html[data-netbox-color-mode=dark] .text-pink{color:#e685b5!important}html[data-netbox-color-mode=dark] .text-darker{color:#1b1f22!important}html[data-netbox-color-mode=dark] .text-darkest{color:#171b1d!important}html[data-netbox-color-mode=dark] .text-gray{color:#ced4da!important}html[data-netbox-color-mode=dark] .text-gray-100{color:#f8f9fa!important}html[data-netbox-color-mode=dark] .text-gray-200{color:#e9ecef!important}html[data-netbox-color-mode=dark] .text-gray-300{color:#dee2e6!important}html[data-netbox-color-mode=dark] .text-gray-400{color:#ced4da!important}html[data-netbox-color-mode=dark] .text-gray-500{color:#adb5bd!important}html[data-netbox-color-mode=dark] .text-gray-600{color:#6c757d!important}html[data-netbox-color-mode=dark] .text-gray-700{color:#495057!important}html[data-netbox-color-mode=dark] .text-gray-800{color:#343a40!important}html[data-netbox-color-mode=dark] .text-gray-900{color:#212529!important}html[data-netbox-color-mode=dark] .text-red-100{color:#f8d7da!important}html[data-netbox-color-mode=dark] .text-red-200{color:#f1aeb5!important}html[data-netbox-color-mode=dark] .text-red-300{color:#ea868f!important}html[data-netbox-color-mode=dark] .text-red-400{color:#e35d6a!important}html[data-netbox-color-mode=dark] .text-red-500{color:#dc3545!important}html[data-netbox-color-mode=dark] .text-red-600{color:#b02a37!important}html[data-netbox-color-mode=dark] .text-red-700{color:#842029!important}html[data-netbox-color-mode=dark] .text-red-800{color:#58151c!important}html[data-netbox-color-mode=dark] .text-red-900{color:#2c0b0e!important}html[data-netbox-color-mode=dark] .text-yellow-100{color:#fff3cd!important}html[data-netbox-color-mode=dark] .text-yellow-200{color:#ffe69c!important}html[data-netbox-color-mode=dark] .text-yellow-300{color:#ffda6a!important}html[data-netbox-color-mode=dark] .text-yellow-400{color:#ffcd39!important}html[data-netbox-color-mode=dark] .text-yellow-500{color:#ffc107!important}html[data-netbox-color-mode=dark] .text-yellow-600{color:#cc9a06!important}html[data-netbox-color-mode=dark] .text-yellow-700{color:#997404!important}html[data-netbox-color-mode=dark] .text-yellow-800{color:#664d03!important}html[data-netbox-color-mode=dark] .text-yellow-900{color:#332701!important}html[data-netbox-color-mode=dark] .text-green-100{color:#d1e7dd!important}html[data-netbox-color-mode=dark] .text-green-200{color:#a3cfbb!important}html[data-netbox-color-mode=dark] .text-green-300{color:#75b798!important}html[data-netbox-color-mode=dark] .text-green-400{color:#479f76!important}html[data-netbox-color-mode=dark] .text-green-500{color:#198754!important}html[data-netbox-color-mode=dark] .text-green-600{color:#146c43!important}html[data-netbox-color-mode=dark] .text-green-700{color:#0f5132!important}html[data-netbox-color-mode=dark] .text-green-800{color:#0a3622!important}html[data-netbox-color-mode=dark] .text-green-900{color:#051b11!important}html[data-netbox-color-mode=dark] .text-blue-100{color:#cfe2ff!important}html[data-netbox-color-mode=dark] .text-blue-200{color:#9ec5fe!important}html[data-netbox-color-mode=dark] .text-blue-300{color:#6ea8fe!important}html[data-netbox-color-mode=dark] .text-blue-400{color:#3d8bfd!important}html[data-netbox-color-mode=dark] .text-blue-500{color:#0d6efd!important}html[data-netbox-color-mode=dark] .text-blue-600{color:#0a58ca!important}html[data-netbox-color-mode=dark] .text-blue-700{color:#084298!important}html[data-netbox-color-mode=dark] .text-blue-800{color:#052c65!important}html[data-netbox-color-mode=dark] .text-blue-900{color:#031633!important}html[data-netbox-color-mode=dark] .text-cyan-100{color:#cff4fc!important}html[data-netbox-color-mode=dark] .text-cyan-200{color:#9eeaf9!important}html[data-netbox-color-mode=dark] .text-cyan-300{color:#6edff6!important}html[data-netbox-color-mode=dark] .text-cyan-400{color:#3dd5f3!important}html[data-netbox-color-mode=dark] .text-cyan-500{color:#0dcaf0!important}html[data-netbox-color-mode=dark] .text-cyan-600{color:#0aa2c0!important}html[data-netbox-color-mode=dark] .text-cyan-700{color:#087990!important}html[data-netbox-color-mode=dark] .text-cyan-800{color:#055160!important}html[data-netbox-color-mode=dark] .text-cyan-900{color:#032830!important}html[data-netbox-color-mode=dark] .text-indigo-100{color:#e0cffc!important}html[data-netbox-color-mode=dark] .text-indigo-200{color:#c29ffa!important}html[data-netbox-color-mode=dark] .text-indigo-300{color:#a370f7!important}html[data-netbox-color-mode=dark] .text-indigo-400{color:#8540f5!important}html[data-netbox-color-mode=dark] .text-indigo-500{color:#6610f2!important}html[data-netbox-color-mode=dark] .text-indigo-600{color:#520dc2!important}html[data-netbox-color-mode=dark] .text-indigo-700{color:#3d0a91!important}html[data-netbox-color-mode=dark] .text-indigo-800{color:#290661!important}html[data-netbox-color-mode=dark] .text-indigo-900{color:#140330!important}html[data-netbox-color-mode=dark] .text-purple-100{color:#e2d9f3!important}html[data-netbox-color-mode=dark] .text-purple-200{color:#c5b3e6!important}html[data-netbox-color-mode=dark] .text-purple-300{color:#a98eda!important}html[data-netbox-color-mode=dark] .text-purple-400{color:#8c68cd!important}html[data-netbox-color-mode=dark] .text-purple-500{color:#6f42c1!important}html[data-netbox-color-mode=dark] .text-purple-600{color:#59359a!important}html[data-netbox-color-mode=dark] .text-purple-700{color:#432874!important}html[data-netbox-color-mode=dark] .text-purple-800{color:#2c1a4d!important}html[data-netbox-color-mode=dark] .text-purple-900{color:#160d27!important}html[data-netbox-color-mode=dark] .text-pink-100{color:#f7d6e6!important}html[data-netbox-color-mode=dark] .text-pink-200{color:#efadce!important}html[data-netbox-color-mode=dark] .text-pink-300{color:#e685b5!important}html[data-netbox-color-mode=dark] .text-pink-400{color:#de5c9d!important}html[data-netbox-color-mode=dark] .text-pink-500{color:#d63384!important}html[data-netbox-color-mode=dark] .text-pink-600{color:#ab296a!important}html[data-netbox-color-mode=dark] .text-pink-700{color:#801f4f!important}html[data-netbox-color-mode=dark] .text-pink-800{color:#561435!important}html[data-netbox-color-mode=dark] .text-pink-900{color:#2b0a1a!important}html[data-netbox-color-mode=dark] .text-white{color:#fff!important}html[data-netbox-color-mode=dark] .text-body{color:#fff!important}html[data-netbox-color-mode=dark] .text-muted{color:#ced4da!important}html[data-netbox-color-mode=dark] .text-black-50{color:#00000080!important}html[data-netbox-color-mode=dark] .text-white-50{color:#ffffff80!important}html[data-netbox-color-mode=dark] .text-reset{color:inherit!important}html[data-netbox-color-mode=dark] .bg-primary{background-color:#6ea8fe!important}html[data-netbox-color-mode=dark] .bg-secondary{background-color:#adb5bd!important}html[data-netbox-color-mode=dark] .bg-success{background-color:#75b798!important}html[data-netbox-color-mode=dark] .bg-info{background-color:#6edff6!important}html[data-netbox-color-mode=dark] .bg-warning{background-color:#ffda6a!important}html[data-netbox-color-mode=dark] .bg-danger{background-color:#ea868f!important}html[data-netbox-color-mode=dark] .bg-light{background-color:#dee2e6!important}html[data-netbox-color-mode=dark] .bg-dark{background-color:#adb5bd!important}html[data-netbox-color-mode=dark] .bg-red{background-color:#ea868f!important}html[data-netbox-color-mode=dark] .bg-yellow{background-color:#ffda6a!important}html[data-netbox-color-mode=dark] .bg-green{background-color:#75b798!important}html[data-netbox-color-mode=dark] .bg-blue{background-color:#6ea8fe!important}html[data-netbox-color-mode=dark] .bg-cyan{background-color:#6edff6!important}html[data-netbox-color-mode=dark] .bg-indigo{background-color:#a370f7!important}html[data-netbox-color-mode=dark] .bg-purple{background-color:#a98eda!important}html[data-netbox-color-mode=dark] .bg-pink{background-color:#e685b5!important}html[data-netbox-color-mode=dark] .bg-darker{background-color:#1b1f22!important}html[data-netbox-color-mode=dark] .bg-darkest{background-color:#171b1d!important}html[data-netbox-color-mode=dark] .bg-gray{background-color:#ced4da!important}html[data-netbox-color-mode=dark] .bg-gray-100{background-color:#f8f9fa!important}html[data-netbox-color-mode=dark] .bg-gray-200{background-color:#e9ecef!important}html[data-netbox-color-mode=dark] .bg-gray-300{background-color:#dee2e6!important}html[data-netbox-color-mode=dark] .bg-gray-400{background-color:#ced4da!important}html[data-netbox-color-mode=dark] .bg-gray-500{background-color:#adb5bd!important}html[data-netbox-color-mode=dark] .bg-gray-600{background-color:#6c757d!important}html[data-netbox-color-mode=dark] .bg-gray-700{background-color:#495057!important}html[data-netbox-color-mode=dark] .bg-gray-800{background-color:#343a40!important}html[data-netbox-color-mode=dark] .bg-gray-900{background-color:#212529!important}html[data-netbox-color-mode=dark] .bg-red-100{background-color:#f8d7da!important}html[data-netbox-color-mode=dark] .bg-red-200{background-color:#f1aeb5!important}html[data-netbox-color-mode=dark] .bg-red-300{background-color:#ea868f!important}html[data-netbox-color-mode=dark] .bg-red-400{background-color:#e35d6a!important}html[data-netbox-color-mode=dark] .bg-red-500{background-color:#dc3545!important}html[data-netbox-color-mode=dark] .bg-red-600{background-color:#b02a37!important}html[data-netbox-color-mode=dark] .bg-red-700{background-color:#842029!important}html[data-netbox-color-mode=dark] .bg-red-800{background-color:#58151c!important}html[data-netbox-color-mode=dark] .bg-red-900{background-color:#2c0b0e!important}html[data-netbox-color-mode=dark] .bg-yellow-100{background-color:#fff3cd!important}html[data-netbox-color-mode=dark] .bg-yellow-200{background-color:#ffe69c!important}html[data-netbox-color-mode=dark] .bg-yellow-300{background-color:#ffda6a!important}html[data-netbox-color-mode=dark] .bg-yellow-400{background-color:#ffcd39!important}html[data-netbox-color-mode=dark] .bg-yellow-500{background-color:#ffc107!important}html[data-netbox-color-mode=dark] .bg-yellow-600{background-color:#cc9a06!important}html[data-netbox-color-mode=dark] .bg-yellow-700{background-color:#997404!important}html[data-netbox-color-mode=dark] .bg-yellow-800{background-color:#664d03!important}html[data-netbox-color-mode=dark] .bg-yellow-900{background-color:#332701!important}html[data-netbox-color-mode=dark] .bg-green-100{background-color:#d1e7dd!important}html[data-netbox-color-mode=dark] .bg-green-200{background-color:#a3cfbb!important}html[data-netbox-color-mode=dark] .bg-green-300{background-color:#75b798!important}html[data-netbox-color-mode=dark] .bg-green-400{background-color:#479f76!important}html[data-netbox-color-mode=dark] .bg-green-500{background-color:#198754!important}html[data-netbox-color-mode=dark] .bg-green-600{background-color:#146c43!important}html[data-netbox-color-mode=dark] .bg-green-700{background-color:#0f5132!important}html[data-netbox-color-mode=dark] .bg-green-800{background-color:#0a3622!important}html[data-netbox-color-mode=dark] .bg-green-900{background-color:#051b11!important}html[data-netbox-color-mode=dark] .bg-blue-100{background-color:#cfe2ff!important}html[data-netbox-color-mode=dark] .bg-blue-200{background-color:#9ec5fe!important}html[data-netbox-color-mode=dark] .bg-blue-300{background-color:#6ea8fe!important}html[data-netbox-color-mode=dark] .bg-blue-400{background-color:#3d8bfd!important}html[data-netbox-color-mode=dark] .bg-blue-500{background-color:#0d6efd!important}html[data-netbox-color-mode=dark] .bg-blue-600{background-color:#0a58ca!important}html[data-netbox-color-mode=dark] .bg-blue-700{background-color:#084298!important}html[data-netbox-color-mode=dark] .bg-blue-800{background-color:#052c65!important}html[data-netbox-color-mode=dark] .bg-blue-900{background-color:#031633!important}html[data-netbox-color-mode=dark] .bg-cyan-100{background-color:#cff4fc!important}html[data-netbox-color-mode=dark] .bg-cyan-200{background-color:#9eeaf9!important}html[data-netbox-color-mode=dark] .bg-cyan-300{background-color:#6edff6!important}html[data-netbox-color-mode=dark] .bg-cyan-400{background-color:#3dd5f3!important}html[data-netbox-color-mode=dark] .bg-cyan-500{background-color:#0dcaf0!important}html[data-netbox-color-mode=dark] .bg-cyan-600{background-color:#0aa2c0!important}html[data-netbox-color-mode=dark] .bg-cyan-700{background-color:#087990!important}html[data-netbox-color-mode=dark] .bg-cyan-800{background-color:#055160!important}html[data-netbox-color-mode=dark] .bg-cyan-900{background-color:#032830!important}html[data-netbox-color-mode=dark] .bg-indigo-100{background-color:#e0cffc!important}html[data-netbox-color-mode=dark] .bg-indigo-200{background-color:#c29ffa!important}html[data-netbox-color-mode=dark] .bg-indigo-300{background-color:#a370f7!important}html[data-netbox-color-mode=dark] .bg-indigo-400{background-color:#8540f5!important}html[data-netbox-color-mode=dark] .bg-indigo-500{background-color:#6610f2!important}html[data-netbox-color-mode=dark] .bg-indigo-600{background-color:#520dc2!important}html[data-netbox-color-mode=dark] .bg-indigo-700{background-color:#3d0a91!important}html[data-netbox-color-mode=dark] .bg-indigo-800{background-color:#290661!important}html[data-netbox-color-mode=dark] .bg-indigo-900{background-color:#140330!important}html[data-netbox-color-mode=dark] .bg-purple-100{background-color:#e2d9f3!important}html[data-netbox-color-mode=dark] .bg-purple-200{background-color:#c5b3e6!important}html[data-netbox-color-mode=dark] .bg-purple-300{background-color:#a98eda!important}html[data-netbox-color-mode=dark] .bg-purple-400{background-color:#8c68cd!important}html[data-netbox-color-mode=dark] .bg-purple-500{background-color:#6f42c1!important}html[data-netbox-color-mode=dark] .bg-purple-600{background-color:#59359a!important}html[data-netbox-color-mode=dark] .bg-purple-700{background-color:#432874!important}html[data-netbox-color-mode=dark] .bg-purple-800{background-color:#2c1a4d!important}html[data-netbox-color-mode=dark] .bg-purple-900{background-color:#160d27!important}html[data-netbox-color-mode=dark] .bg-pink-100{background-color:#f7d6e6!important}html[data-netbox-color-mode=dark] .bg-pink-200{background-color:#efadce!important}html[data-netbox-color-mode=dark] .bg-pink-300{background-color:#e685b5!important}html[data-netbox-color-mode=dark] .bg-pink-400{background-color:#de5c9d!important}html[data-netbox-color-mode=dark] .bg-pink-500{background-color:#d63384!important}html[data-netbox-color-mode=dark] .bg-pink-600{background-color:#ab296a!important}html[data-netbox-color-mode=dark] .bg-pink-700{background-color:#801f4f!important}html[data-netbox-color-mode=dark] .bg-pink-800{background-color:#561435!important}html[data-netbox-color-mode=dark] .bg-pink-900{background-color:#2b0a1a!important}html[data-netbox-color-mode=dark] .bg-body{background-color:#1b1f22!important}html[data-netbox-color-mode=dark] .bg-white{background-color:#fff!important}html[data-netbox-color-mode=dark] .bg-transparent{background-color:transparent!important}html[data-netbox-color-mode=dark] .bg-gradient{background-image:var(--bs-gradient)!important}html[data-netbox-color-mode=dark] .user-select-all{user-select:all!important}html[data-netbox-color-mode=dark] .user-select-auto{user-select:auto!important}html[data-netbox-color-mode=dark] .user-select-none{user-select:none!important}html[data-netbox-color-mode=dark] .pe-none{pointer-events:none!important}html[data-netbox-color-mode=dark] .pe-auto{pointer-events:auto!important}html[data-netbox-color-mode=dark] .rounded{border-radius:.375rem!important}html[data-netbox-color-mode=dark] .rounded-0{border-radius:0!important}html[data-netbox-color-mode=dark] .rounded-1{border-radius:.375rem!important}html[data-netbox-color-mode=dark] .rounded-2{border-radius:.375rem!important}html[data-netbox-color-mode=dark] .rounded-3{border-radius:.75rem!important}html[data-netbox-color-mode=dark] .rounded-circle{border-radius:50%!important}html[data-netbox-color-mode=dark] .rounded-pill{border-radius:50rem!important}html[data-netbox-color-mode=dark] .rounded-top{border-top-left-radius:.375rem!important;border-top-right-radius:.375rem!important}html[data-netbox-color-mode=dark] .rounded-end{border-top-right-radius:.375rem!important;border-bottom-right-radius:.375rem!important}html[data-netbox-color-mode=dark] .rounded-bottom{border-bottom-right-radius:.375rem!important;border-bottom-left-radius:.375rem!important}html[data-netbox-color-mode=dark] .rounded-start{border-bottom-left-radius:.375rem!important;border-top-left-radius:.375rem!important}html[data-netbox-color-mode=dark] .visible{visibility:visible!important}html[data-netbox-color-mode=dark] .invisible{visibility:hidden!important}@media (min-width: 576px){html[data-netbox-color-mode=dark] .float-sm-start{float:left!important}html[data-netbox-color-mode=dark] .float-sm-end{float:right!important}html[data-netbox-color-mode=dark] .float-sm-none{float:none!important}html[data-netbox-color-mode=dark] .d-sm-inline{display:inline!important}html[data-netbox-color-mode=dark] .d-sm-inline-block{display:inline-block!important}html[data-netbox-color-mode=dark] .d-sm-block{display:block!important}html[data-netbox-color-mode=dark] .d-sm-grid{display:grid!important}html[data-netbox-color-mode=dark] .d-sm-table{display:table!important}html[data-netbox-color-mode=dark] .d-sm-table-row{display:table-row!important}html[data-netbox-color-mode=dark] .d-sm-table-cell{display:table-cell!important}html[data-netbox-color-mode=dark] .d-sm-flex{display:flex!important}html[data-netbox-color-mode=dark] .d-sm-inline-flex{display:inline-flex!important}html[data-netbox-color-mode=dark] .d-sm-none{display:none!important}html[data-netbox-color-mode=dark] .flex-sm-fill{flex:1 1 auto!important}html[data-netbox-color-mode=dark] .flex-sm-row{flex-direction:row!important}html[data-netbox-color-mode=dark] .flex-sm-column{flex-direction:column!important}html[data-netbox-color-mode=dark] .flex-sm-row-reverse{flex-direction:row-reverse!important}html[data-netbox-color-mode=dark] .flex-sm-column-reverse{flex-direction:column-reverse!important}html[data-netbox-color-mode=dark] .flex-sm-grow-0{flex-grow:0!important}html[data-netbox-color-mode=dark] .flex-sm-grow-1{flex-grow:1!important}html[data-netbox-color-mode=dark] .flex-sm-shrink-0{flex-shrink:0!important}html[data-netbox-color-mode=dark] .flex-sm-shrink-1{flex-shrink:1!important}html[data-netbox-color-mode=dark] .flex-sm-wrap{flex-wrap:wrap!important}html[data-netbox-color-mode=dark] .flex-sm-nowrap{flex-wrap:nowrap!important}html[data-netbox-color-mode=dark] .flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}html[data-netbox-color-mode=dark] .gap-sm-0{gap:0!important}html[data-netbox-color-mode=dark] .gap-sm-1{gap:.25rem!important}html[data-netbox-color-mode=dark] .gap-sm-2{gap:.5rem!important}html[data-netbox-color-mode=dark] .gap-sm-3{gap:1rem!important}html[data-netbox-color-mode=dark] .gap-sm-4{gap:1.5rem!important}html[data-netbox-color-mode=dark] .gap-sm-5{gap:3rem!important}html[data-netbox-color-mode=dark] .justify-content-sm-start{justify-content:flex-start!important}html[data-netbox-color-mode=dark] .justify-content-sm-end{justify-content:flex-end!important}html[data-netbox-color-mode=dark] .justify-content-sm-center{justify-content:center!important}html[data-netbox-color-mode=dark] .justify-content-sm-between{justify-content:space-between!important}html[data-netbox-color-mode=dark] .justify-content-sm-around{justify-content:space-around!important}html[data-netbox-color-mode=dark] .justify-content-sm-evenly{justify-content:space-evenly!important}html[data-netbox-color-mode=dark] .align-items-sm-start{align-items:flex-start!important}html[data-netbox-color-mode=dark] .align-items-sm-end{align-items:flex-end!important}html[data-netbox-color-mode=dark] .align-items-sm-center{align-items:center!important}html[data-netbox-color-mode=dark] .align-items-sm-baseline{align-items:baseline!important}html[data-netbox-color-mode=dark] .align-items-sm-stretch{align-items:stretch!important}html[data-netbox-color-mode=dark] .align-content-sm-start{align-content:flex-start!important}html[data-netbox-color-mode=dark] .align-content-sm-end{align-content:flex-end!important}html[data-netbox-color-mode=dark] .align-content-sm-center{align-content:center!important}html[data-netbox-color-mode=dark] .align-content-sm-between{align-content:space-between!important}html[data-netbox-color-mode=dark] .align-content-sm-around{align-content:space-around!important}html[data-netbox-color-mode=dark] .align-content-sm-stretch{align-content:stretch!important}html[data-netbox-color-mode=dark] .align-self-sm-auto{align-self:auto!important}html[data-netbox-color-mode=dark] .align-self-sm-start{align-self:flex-start!important}html[data-netbox-color-mode=dark] .align-self-sm-end{align-self:flex-end!important}html[data-netbox-color-mode=dark] .align-self-sm-center{align-self:center!important}html[data-netbox-color-mode=dark] .align-self-sm-baseline{align-self:baseline!important}html[data-netbox-color-mode=dark] .align-self-sm-stretch{align-self:stretch!important}html[data-netbox-color-mode=dark] .order-sm-first{order:-1!important}html[data-netbox-color-mode=dark] .order-sm-0{order:0!important}html[data-netbox-color-mode=dark] .order-sm-1{order:1!important}html[data-netbox-color-mode=dark] .order-sm-2{order:2!important}html[data-netbox-color-mode=dark] .order-sm-3{order:3!important}html[data-netbox-color-mode=dark] .order-sm-4{order:4!important}html[data-netbox-color-mode=dark] .order-sm-5{order:5!important}html[data-netbox-color-mode=dark] .order-sm-last{order:6!important}html[data-netbox-color-mode=dark] .m-sm-0{margin:0!important}html[data-netbox-color-mode=dark] .m-sm-1{margin:.25rem!important}html[data-netbox-color-mode=dark] .m-sm-2{margin:.5rem!important}html[data-netbox-color-mode=dark] .m-sm-3{margin:1rem!important}html[data-netbox-color-mode=dark] .m-sm-4{margin:1.5rem!important}html[data-netbox-color-mode=dark] .m-sm-5{margin:3rem!important}html[data-netbox-color-mode=dark] .m-sm-auto{margin:auto!important}html[data-netbox-color-mode=dark] .mx-sm-0{margin-right:0!important;margin-left:0!important}html[data-netbox-color-mode=dark] .mx-sm-1{margin-right:.25rem!important;margin-left:.25rem!important}html[data-netbox-color-mode=dark] .mx-sm-2{margin-right:.5rem!important;margin-left:.5rem!important}html[data-netbox-color-mode=dark] .mx-sm-3{margin-right:1rem!important;margin-left:1rem!important}html[data-netbox-color-mode=dark] .mx-sm-4{margin-right:1.5rem!important;margin-left:1.5rem!important}html[data-netbox-color-mode=dark] .mx-sm-5{margin-right:3rem!important;margin-left:3rem!important}html[data-netbox-color-mode=dark] .mx-sm-auto{margin-right:auto!important;margin-left:auto!important}html[data-netbox-color-mode=dark] .my-sm-0{margin-top:0!important;margin-bottom:0!important}html[data-netbox-color-mode=dark] .my-sm-1{margin-top:.25rem!important;margin-bottom:.25rem!important}html[data-netbox-color-mode=dark] .my-sm-2{margin-top:.5rem!important;margin-bottom:.5rem!important}html[data-netbox-color-mode=dark] .my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important}html[data-netbox-color-mode=dark] .my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}html[data-netbox-color-mode=dark] .my-sm-5{margin-top:3rem!important;margin-bottom:3rem!important}html[data-netbox-color-mode=dark] .my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}html[data-netbox-color-mode=dark] .mt-sm-0{margin-top:0!important}html[data-netbox-color-mode=dark] .mt-sm-1{margin-top:.25rem!important}html[data-netbox-color-mode=dark] .mt-sm-2{margin-top:.5rem!important}html[data-netbox-color-mode=dark] .mt-sm-3{margin-top:1rem!important}html[data-netbox-color-mode=dark] .mt-sm-4{margin-top:1.5rem!important}html[data-netbox-color-mode=dark] .mt-sm-5{margin-top:3rem!important}html[data-netbox-color-mode=dark] .mt-sm-auto{margin-top:auto!important}html[data-netbox-color-mode=dark] .me-sm-0{margin-right:0!important}html[data-netbox-color-mode=dark] .me-sm-1{margin-right:.25rem!important}html[data-netbox-color-mode=dark] .me-sm-2{margin-right:.5rem!important}html[data-netbox-color-mode=dark] .me-sm-3{margin-right:1rem!important}html[data-netbox-color-mode=dark] .me-sm-4{margin-right:1.5rem!important}html[data-netbox-color-mode=dark] .me-sm-5{margin-right:3rem!important}html[data-netbox-color-mode=dark] .me-sm-auto{margin-right:auto!important}html[data-netbox-color-mode=dark] .mb-sm-0{margin-bottom:0!important}html[data-netbox-color-mode=dark] .mb-sm-1{margin-bottom:.25rem!important}html[data-netbox-color-mode=dark] .mb-sm-2{margin-bottom:.5rem!important}html[data-netbox-color-mode=dark] .mb-sm-3{margin-bottom:1rem!important}html[data-netbox-color-mode=dark] .mb-sm-4{margin-bottom:1.5rem!important}html[data-netbox-color-mode=dark] .mb-sm-5{margin-bottom:3rem!important}html[data-netbox-color-mode=dark] .mb-sm-auto{margin-bottom:auto!important}html[data-netbox-color-mode=dark] .ms-sm-0{margin-left:0!important}html[data-netbox-color-mode=dark] .ms-sm-1{margin-left:.25rem!important}html[data-netbox-color-mode=dark] .ms-sm-2{margin-left:.5rem!important}html[data-netbox-color-mode=dark] .ms-sm-3{margin-left:1rem!important}html[data-netbox-color-mode=dark] .ms-sm-4{margin-left:1.5rem!important}html[data-netbox-color-mode=dark] .ms-sm-5{margin-left:3rem!important}html[data-netbox-color-mode=dark] .ms-sm-auto{margin-left:auto!important}html[data-netbox-color-mode=dark] .p-sm-0{padding:0!important}html[data-netbox-color-mode=dark] .p-sm-1{padding:.25rem!important}html[data-netbox-color-mode=dark] .p-sm-2{padding:.5rem!important}html[data-netbox-color-mode=dark] .p-sm-3{padding:1rem!important}html[data-netbox-color-mode=dark] .p-sm-4{padding:1.5rem!important}html[data-netbox-color-mode=dark] .p-sm-5{padding:3rem!important}html[data-netbox-color-mode=dark] .px-sm-0{padding-right:0!important;padding-left:0!important}html[data-netbox-color-mode=dark] .px-sm-1{padding-right:.25rem!important;padding-left:.25rem!important}html[data-netbox-color-mode=dark] .px-sm-2{padding-right:.5rem!important;padding-left:.5rem!important}html[data-netbox-color-mode=dark] .px-sm-3{padding-right:1rem!important;padding-left:1rem!important}html[data-netbox-color-mode=dark] .px-sm-4{padding-right:1.5rem!important;padding-left:1.5rem!important}html[data-netbox-color-mode=dark] .px-sm-5{padding-right:3rem!important;padding-left:3rem!important}html[data-netbox-color-mode=dark] .py-sm-0{padding-top:0!important;padding-bottom:0!important}html[data-netbox-color-mode=dark] .py-sm-1{padding-top:.25rem!important;padding-bottom:.25rem!important}html[data-netbox-color-mode=dark] .py-sm-2{padding-top:.5rem!important;padding-bottom:.5rem!important}html[data-netbox-color-mode=dark] .py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important}html[data-netbox-color-mode=dark] .py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}html[data-netbox-color-mode=dark] .py-sm-5{padding-top:3rem!important;padding-bottom:3rem!important}html[data-netbox-color-mode=dark] .pt-sm-0{padding-top:0!important}html[data-netbox-color-mode=dark] .pt-sm-1{padding-top:.25rem!important}html[data-netbox-color-mode=dark] .pt-sm-2{padding-top:.5rem!important}html[data-netbox-color-mode=dark] .pt-sm-3{padding-top:1rem!important}html[data-netbox-color-mode=dark] .pt-sm-4{padding-top:1.5rem!important}html[data-netbox-color-mode=dark] .pt-sm-5{padding-top:3rem!important}html[data-netbox-color-mode=dark] .pe-sm-0{padding-right:0!important}html[data-netbox-color-mode=dark] .pe-sm-1{padding-right:.25rem!important}html[data-netbox-color-mode=dark] .pe-sm-2{padding-right:.5rem!important}html[data-netbox-color-mode=dark] .pe-sm-3{padding-right:1rem!important}html[data-netbox-color-mode=dark] .pe-sm-4{padding-right:1.5rem!important}html[data-netbox-color-mode=dark] .pe-sm-5{padding-right:3rem!important}html[data-netbox-color-mode=dark] .pb-sm-0{padding-bottom:0!important}html[data-netbox-color-mode=dark] .pb-sm-1{padding-bottom:.25rem!important}html[data-netbox-color-mode=dark] .pb-sm-2{padding-bottom:.5rem!important}html[data-netbox-color-mode=dark] .pb-sm-3{padding-bottom:1rem!important}html[data-netbox-color-mode=dark] .pb-sm-4{padding-bottom:1.5rem!important}html[data-netbox-color-mode=dark] .pb-sm-5{padding-bottom:3rem!important}html[data-netbox-color-mode=dark] .ps-sm-0{padding-left:0!important}html[data-netbox-color-mode=dark] .ps-sm-1{padding-left:.25rem!important}html[data-netbox-color-mode=dark] .ps-sm-2{padding-left:.5rem!important}html[data-netbox-color-mode=dark] .ps-sm-3{padding-left:1rem!important}html[data-netbox-color-mode=dark] .ps-sm-4{padding-left:1.5rem!important}html[data-netbox-color-mode=dark] .ps-sm-5{padding-left:3rem!important}html[data-netbox-color-mode=dark] .text-sm-start{text-align:left!important}html[data-netbox-color-mode=dark] .text-sm-end{text-align:right!important}html[data-netbox-color-mode=dark] .text-sm-center{text-align:center!important}}@media (min-width: 768px){html[data-netbox-color-mode=dark] .float-md-start{float:left!important}html[data-netbox-color-mode=dark] .float-md-end{float:right!important}html[data-netbox-color-mode=dark] .float-md-none{float:none!important}html[data-netbox-color-mode=dark] .d-md-inline{display:inline!important}html[data-netbox-color-mode=dark] .d-md-inline-block{display:inline-block!important}html[data-netbox-color-mode=dark] .d-md-block{display:block!important}html[data-netbox-color-mode=dark] .d-md-grid{display:grid!important}html[data-netbox-color-mode=dark] .d-md-table{display:table!important}html[data-netbox-color-mode=dark] .d-md-table-row{display:table-row!important}html[data-netbox-color-mode=dark] .d-md-table-cell{display:table-cell!important}html[data-netbox-color-mode=dark] .d-md-flex{display:flex!important}html[data-netbox-color-mode=dark] .d-md-inline-flex{display:inline-flex!important}html[data-netbox-color-mode=dark] .d-md-none{display:none!important}html[data-netbox-color-mode=dark] .flex-md-fill{flex:1 1 auto!important}html[data-netbox-color-mode=dark] .flex-md-row{flex-direction:row!important}html[data-netbox-color-mode=dark] .flex-md-column{flex-direction:column!important}html[data-netbox-color-mode=dark] .flex-md-row-reverse{flex-direction:row-reverse!important}html[data-netbox-color-mode=dark] .flex-md-column-reverse{flex-direction:column-reverse!important}html[data-netbox-color-mode=dark] .flex-md-grow-0{flex-grow:0!important}html[data-netbox-color-mode=dark] .flex-md-grow-1{flex-grow:1!important}html[data-netbox-color-mode=dark] .flex-md-shrink-0{flex-shrink:0!important}html[data-netbox-color-mode=dark] .flex-md-shrink-1{flex-shrink:1!important}html[data-netbox-color-mode=dark] .flex-md-wrap{flex-wrap:wrap!important}html[data-netbox-color-mode=dark] .flex-md-nowrap{flex-wrap:nowrap!important}html[data-netbox-color-mode=dark] .flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}html[data-netbox-color-mode=dark] .gap-md-0{gap:0!important}html[data-netbox-color-mode=dark] .gap-md-1{gap:.25rem!important}html[data-netbox-color-mode=dark] .gap-md-2{gap:.5rem!important}html[data-netbox-color-mode=dark] .gap-md-3{gap:1rem!important}html[data-netbox-color-mode=dark] .gap-md-4{gap:1.5rem!important}html[data-netbox-color-mode=dark] .gap-md-5{gap:3rem!important}html[data-netbox-color-mode=dark] .justify-content-md-start{justify-content:flex-start!important}html[data-netbox-color-mode=dark] .justify-content-md-end{justify-content:flex-end!important}html[data-netbox-color-mode=dark] .justify-content-md-center{justify-content:center!important}html[data-netbox-color-mode=dark] .justify-content-md-between{justify-content:space-between!important}html[data-netbox-color-mode=dark] .justify-content-md-around{justify-content:space-around!important}html[data-netbox-color-mode=dark] .justify-content-md-evenly{justify-content:space-evenly!important}html[data-netbox-color-mode=dark] .align-items-md-start{align-items:flex-start!important}html[data-netbox-color-mode=dark] .align-items-md-end{align-items:flex-end!important}html[data-netbox-color-mode=dark] .align-items-md-center{align-items:center!important}html[data-netbox-color-mode=dark] .align-items-md-baseline{align-items:baseline!important}html[data-netbox-color-mode=dark] .align-items-md-stretch{align-items:stretch!important}html[data-netbox-color-mode=dark] .align-content-md-start{align-content:flex-start!important}html[data-netbox-color-mode=dark] .align-content-md-end{align-content:flex-end!important}html[data-netbox-color-mode=dark] .align-content-md-center{align-content:center!important}html[data-netbox-color-mode=dark] .align-content-md-between{align-content:space-between!important}html[data-netbox-color-mode=dark] .align-content-md-around{align-content:space-around!important}html[data-netbox-color-mode=dark] .align-content-md-stretch{align-content:stretch!important}html[data-netbox-color-mode=dark] .align-self-md-auto{align-self:auto!important}html[data-netbox-color-mode=dark] .align-self-md-start{align-self:flex-start!important}html[data-netbox-color-mode=dark] .align-self-md-end{align-self:flex-end!important}html[data-netbox-color-mode=dark] .align-self-md-center{align-self:center!important}html[data-netbox-color-mode=dark] .align-self-md-baseline{align-self:baseline!important}html[data-netbox-color-mode=dark] .align-self-md-stretch{align-self:stretch!important}html[data-netbox-color-mode=dark] .order-md-first{order:-1!important}html[data-netbox-color-mode=dark] .order-md-0{order:0!important}html[data-netbox-color-mode=dark] .order-md-1{order:1!important}html[data-netbox-color-mode=dark] .order-md-2{order:2!important}html[data-netbox-color-mode=dark] .order-md-3{order:3!important}html[data-netbox-color-mode=dark] .order-md-4{order:4!important}html[data-netbox-color-mode=dark] .order-md-5{order:5!important}html[data-netbox-color-mode=dark] .order-md-last{order:6!important}html[data-netbox-color-mode=dark] .m-md-0{margin:0!important}html[data-netbox-color-mode=dark] .m-md-1{margin:.25rem!important}html[data-netbox-color-mode=dark] .m-md-2{margin:.5rem!important}html[data-netbox-color-mode=dark] .m-md-3{margin:1rem!important}html[data-netbox-color-mode=dark] .m-md-4{margin:1.5rem!important}html[data-netbox-color-mode=dark] .m-md-5{margin:3rem!important}html[data-netbox-color-mode=dark] .m-md-auto{margin:auto!important}html[data-netbox-color-mode=dark] .mx-md-0{margin-right:0!important;margin-left:0!important}html[data-netbox-color-mode=dark] .mx-md-1{margin-right:.25rem!important;margin-left:.25rem!important}html[data-netbox-color-mode=dark] .mx-md-2{margin-right:.5rem!important;margin-left:.5rem!important}html[data-netbox-color-mode=dark] .mx-md-3{margin-right:1rem!important;margin-left:1rem!important}html[data-netbox-color-mode=dark] .mx-md-4{margin-right:1.5rem!important;margin-left:1.5rem!important}html[data-netbox-color-mode=dark] .mx-md-5{margin-right:3rem!important;margin-left:3rem!important}html[data-netbox-color-mode=dark] .mx-md-auto{margin-right:auto!important;margin-left:auto!important}html[data-netbox-color-mode=dark] .my-md-0{margin-top:0!important;margin-bottom:0!important}html[data-netbox-color-mode=dark] .my-md-1{margin-top:.25rem!important;margin-bottom:.25rem!important}html[data-netbox-color-mode=dark] .my-md-2{margin-top:.5rem!important;margin-bottom:.5rem!important}html[data-netbox-color-mode=dark] .my-md-3{margin-top:1rem!important;margin-bottom:1rem!important}html[data-netbox-color-mode=dark] .my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}html[data-netbox-color-mode=dark] .my-md-5{margin-top:3rem!important;margin-bottom:3rem!important}html[data-netbox-color-mode=dark] .my-md-auto{margin-top:auto!important;margin-bottom:auto!important}html[data-netbox-color-mode=dark] .mt-md-0{margin-top:0!important}html[data-netbox-color-mode=dark] .mt-md-1{margin-top:.25rem!important}html[data-netbox-color-mode=dark] .mt-md-2{margin-top:.5rem!important}html[data-netbox-color-mode=dark] .mt-md-3{margin-top:1rem!important}html[data-netbox-color-mode=dark] .mt-md-4{margin-top:1.5rem!important}html[data-netbox-color-mode=dark] .mt-md-5{margin-top:3rem!important}html[data-netbox-color-mode=dark] .mt-md-auto{margin-top:auto!important}html[data-netbox-color-mode=dark] .me-md-0{margin-right:0!important}html[data-netbox-color-mode=dark] .me-md-1{margin-right:.25rem!important}html[data-netbox-color-mode=dark] .me-md-2{margin-right:.5rem!important}html[data-netbox-color-mode=dark] .me-md-3{margin-right:1rem!important}html[data-netbox-color-mode=dark] .me-md-4{margin-right:1.5rem!important}html[data-netbox-color-mode=dark] .me-md-5{margin-right:3rem!important}html[data-netbox-color-mode=dark] .me-md-auto{margin-right:auto!important}html[data-netbox-color-mode=dark] .mb-md-0{margin-bottom:0!important}html[data-netbox-color-mode=dark] .mb-md-1{margin-bottom:.25rem!important}html[data-netbox-color-mode=dark] .mb-md-2{margin-bottom:.5rem!important}html[data-netbox-color-mode=dark] .mb-md-3{margin-bottom:1rem!important}html[data-netbox-color-mode=dark] .mb-md-4{margin-bottom:1.5rem!important}html[data-netbox-color-mode=dark] .mb-md-5{margin-bottom:3rem!important}html[data-netbox-color-mode=dark] .mb-md-auto{margin-bottom:auto!important}html[data-netbox-color-mode=dark] .ms-md-0{margin-left:0!important}html[data-netbox-color-mode=dark] .ms-md-1{margin-left:.25rem!important}html[data-netbox-color-mode=dark] .ms-md-2{margin-left:.5rem!important}html[data-netbox-color-mode=dark] .ms-md-3{margin-left:1rem!important}html[data-netbox-color-mode=dark] .ms-md-4{margin-left:1.5rem!important}html[data-netbox-color-mode=dark] .ms-md-5{margin-left:3rem!important}html[data-netbox-color-mode=dark] .ms-md-auto{margin-left:auto!important}html[data-netbox-color-mode=dark] .p-md-0{padding:0!important}html[data-netbox-color-mode=dark] .p-md-1{padding:.25rem!important}html[data-netbox-color-mode=dark] .p-md-2{padding:.5rem!important}html[data-netbox-color-mode=dark] .p-md-3{padding:1rem!important}html[data-netbox-color-mode=dark] .p-md-4{padding:1.5rem!important}html[data-netbox-color-mode=dark] .p-md-5{padding:3rem!important}html[data-netbox-color-mode=dark] .px-md-0{padding-right:0!important;padding-left:0!important}html[data-netbox-color-mode=dark] .px-md-1{padding-right:.25rem!important;padding-left:.25rem!important}html[data-netbox-color-mode=dark] .px-md-2{padding-right:.5rem!important;padding-left:.5rem!important}html[data-netbox-color-mode=dark] .px-md-3{padding-right:1rem!important;padding-left:1rem!important}html[data-netbox-color-mode=dark] .px-md-4{padding-right:1.5rem!important;padding-left:1.5rem!important}html[data-netbox-color-mode=dark] .px-md-5{padding-right:3rem!important;padding-left:3rem!important}html[data-netbox-color-mode=dark] .py-md-0{padding-top:0!important;padding-bottom:0!important}html[data-netbox-color-mode=dark] .py-md-1{padding-top:.25rem!important;padding-bottom:.25rem!important}html[data-netbox-color-mode=dark] .py-md-2{padding-top:.5rem!important;padding-bottom:.5rem!important}html[data-netbox-color-mode=dark] .py-md-3{padding-top:1rem!important;padding-bottom:1rem!important}html[data-netbox-color-mode=dark] .py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}html[data-netbox-color-mode=dark] .py-md-5{padding-top:3rem!important;padding-bottom:3rem!important}html[data-netbox-color-mode=dark] .pt-md-0{padding-top:0!important}html[data-netbox-color-mode=dark] .pt-md-1{padding-top:.25rem!important}html[data-netbox-color-mode=dark] .pt-md-2{padding-top:.5rem!important}html[data-netbox-color-mode=dark] .pt-md-3{padding-top:1rem!important}html[data-netbox-color-mode=dark] .pt-md-4{padding-top:1.5rem!important}html[data-netbox-color-mode=dark] .pt-md-5{padding-top:3rem!important}html[data-netbox-color-mode=dark] .pe-md-0{padding-right:0!important}html[data-netbox-color-mode=dark] .pe-md-1{padding-right:.25rem!important}html[data-netbox-color-mode=dark] .pe-md-2{padding-right:.5rem!important}html[data-netbox-color-mode=dark] .pe-md-3{padding-right:1rem!important}html[data-netbox-color-mode=dark] .pe-md-4{padding-right:1.5rem!important}html[data-netbox-color-mode=dark] .pe-md-5{padding-right:3rem!important}html[data-netbox-color-mode=dark] .pb-md-0{padding-bottom:0!important}html[data-netbox-color-mode=dark] .pb-md-1{padding-bottom:.25rem!important}html[data-netbox-color-mode=dark] .pb-md-2{padding-bottom:.5rem!important}html[data-netbox-color-mode=dark] .pb-md-3{padding-bottom:1rem!important}html[data-netbox-color-mode=dark] .pb-md-4{padding-bottom:1.5rem!important}html[data-netbox-color-mode=dark] .pb-md-5{padding-bottom:3rem!important}html[data-netbox-color-mode=dark] .ps-md-0{padding-left:0!important}html[data-netbox-color-mode=dark] .ps-md-1{padding-left:.25rem!important}html[data-netbox-color-mode=dark] .ps-md-2{padding-left:.5rem!important}html[data-netbox-color-mode=dark] .ps-md-3{padding-left:1rem!important}html[data-netbox-color-mode=dark] .ps-md-4{padding-left:1.5rem!important}html[data-netbox-color-mode=dark] .ps-md-5{padding-left:3rem!important}html[data-netbox-color-mode=dark] .text-md-start{text-align:left!important}html[data-netbox-color-mode=dark] .text-md-end{text-align:right!important}html[data-netbox-color-mode=dark] .text-md-center{text-align:center!important}}@media (min-width: 992px){html[data-netbox-color-mode=dark] .float-lg-start{float:left!important}html[data-netbox-color-mode=dark] .float-lg-end{float:right!important}html[data-netbox-color-mode=dark] .float-lg-none{float:none!important}html[data-netbox-color-mode=dark] .d-lg-inline{display:inline!important}html[data-netbox-color-mode=dark] .d-lg-inline-block{display:inline-block!important}html[data-netbox-color-mode=dark] .d-lg-block{display:block!important}html[data-netbox-color-mode=dark] .d-lg-grid{display:grid!important}html[data-netbox-color-mode=dark] .d-lg-table{display:table!important}html[data-netbox-color-mode=dark] .d-lg-table-row{display:table-row!important}html[data-netbox-color-mode=dark] .d-lg-table-cell{display:table-cell!important}html[data-netbox-color-mode=dark] .d-lg-flex{display:flex!important}html[data-netbox-color-mode=dark] .d-lg-inline-flex{display:inline-flex!important}html[data-netbox-color-mode=dark] .d-lg-none{display:none!important}html[data-netbox-color-mode=dark] .flex-lg-fill{flex:1 1 auto!important}html[data-netbox-color-mode=dark] .flex-lg-row{flex-direction:row!important}html[data-netbox-color-mode=dark] .flex-lg-column{flex-direction:column!important}html[data-netbox-color-mode=dark] .flex-lg-row-reverse{flex-direction:row-reverse!important}html[data-netbox-color-mode=dark] .flex-lg-column-reverse{flex-direction:column-reverse!important}html[data-netbox-color-mode=dark] .flex-lg-grow-0{flex-grow:0!important}html[data-netbox-color-mode=dark] .flex-lg-grow-1{flex-grow:1!important}html[data-netbox-color-mode=dark] .flex-lg-shrink-0{flex-shrink:0!important}html[data-netbox-color-mode=dark] .flex-lg-shrink-1{flex-shrink:1!important}html[data-netbox-color-mode=dark] .flex-lg-wrap{flex-wrap:wrap!important}html[data-netbox-color-mode=dark] .flex-lg-nowrap{flex-wrap:nowrap!important}html[data-netbox-color-mode=dark] .flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}html[data-netbox-color-mode=dark] .gap-lg-0{gap:0!important}html[data-netbox-color-mode=dark] .gap-lg-1{gap:.25rem!important}html[data-netbox-color-mode=dark] .gap-lg-2{gap:.5rem!important}html[data-netbox-color-mode=dark] .gap-lg-3{gap:1rem!important}html[data-netbox-color-mode=dark] .gap-lg-4{gap:1.5rem!important}html[data-netbox-color-mode=dark] .gap-lg-5{gap:3rem!important}html[data-netbox-color-mode=dark] .justify-content-lg-start{justify-content:flex-start!important}html[data-netbox-color-mode=dark] .justify-content-lg-end{justify-content:flex-end!important}html[data-netbox-color-mode=dark] .justify-content-lg-center{justify-content:center!important}html[data-netbox-color-mode=dark] .justify-content-lg-between{justify-content:space-between!important}html[data-netbox-color-mode=dark] .justify-content-lg-around{justify-content:space-around!important}html[data-netbox-color-mode=dark] .justify-content-lg-evenly{justify-content:space-evenly!important}html[data-netbox-color-mode=dark] .align-items-lg-start{align-items:flex-start!important}html[data-netbox-color-mode=dark] .align-items-lg-end{align-items:flex-end!important}html[data-netbox-color-mode=dark] .align-items-lg-center{align-items:center!important}html[data-netbox-color-mode=dark] .align-items-lg-baseline{align-items:baseline!important}html[data-netbox-color-mode=dark] .align-items-lg-stretch{align-items:stretch!important}html[data-netbox-color-mode=dark] .align-content-lg-start{align-content:flex-start!important}html[data-netbox-color-mode=dark] .align-content-lg-end{align-content:flex-end!important}html[data-netbox-color-mode=dark] .align-content-lg-center{align-content:center!important}html[data-netbox-color-mode=dark] .align-content-lg-between{align-content:space-between!important}html[data-netbox-color-mode=dark] .align-content-lg-around{align-content:space-around!important}html[data-netbox-color-mode=dark] .align-content-lg-stretch{align-content:stretch!important}html[data-netbox-color-mode=dark] .align-self-lg-auto{align-self:auto!important}html[data-netbox-color-mode=dark] .align-self-lg-start{align-self:flex-start!important}html[data-netbox-color-mode=dark] .align-self-lg-end{align-self:flex-end!important}html[data-netbox-color-mode=dark] .align-self-lg-center{align-self:center!important}html[data-netbox-color-mode=dark] .align-self-lg-baseline{align-self:baseline!important}html[data-netbox-color-mode=dark] .align-self-lg-stretch{align-self:stretch!important}html[data-netbox-color-mode=dark] .order-lg-first{order:-1!important}html[data-netbox-color-mode=dark] .order-lg-0{order:0!important}html[data-netbox-color-mode=dark] .order-lg-1{order:1!important}html[data-netbox-color-mode=dark] .order-lg-2{order:2!important}html[data-netbox-color-mode=dark] .order-lg-3{order:3!important}html[data-netbox-color-mode=dark] .order-lg-4{order:4!important}html[data-netbox-color-mode=dark] .order-lg-5{order:5!important}html[data-netbox-color-mode=dark] .order-lg-last{order:6!important}html[data-netbox-color-mode=dark] .m-lg-0{margin:0!important}html[data-netbox-color-mode=dark] .m-lg-1{margin:.25rem!important}html[data-netbox-color-mode=dark] .m-lg-2{margin:.5rem!important}html[data-netbox-color-mode=dark] .m-lg-3{margin:1rem!important}html[data-netbox-color-mode=dark] .m-lg-4{margin:1.5rem!important}html[data-netbox-color-mode=dark] .m-lg-5{margin:3rem!important}html[data-netbox-color-mode=dark] .m-lg-auto{margin:auto!important}html[data-netbox-color-mode=dark] .mx-lg-0{margin-right:0!important;margin-left:0!important}html[data-netbox-color-mode=dark] .mx-lg-1{margin-right:.25rem!important;margin-left:.25rem!important}html[data-netbox-color-mode=dark] .mx-lg-2{margin-right:.5rem!important;margin-left:.5rem!important}html[data-netbox-color-mode=dark] .mx-lg-3{margin-right:1rem!important;margin-left:1rem!important}html[data-netbox-color-mode=dark] .mx-lg-4{margin-right:1.5rem!important;margin-left:1.5rem!important}html[data-netbox-color-mode=dark] .mx-lg-5{margin-right:3rem!important;margin-left:3rem!important}html[data-netbox-color-mode=dark] .mx-lg-auto{margin-right:auto!important;margin-left:auto!important}html[data-netbox-color-mode=dark] .my-lg-0{margin-top:0!important;margin-bottom:0!important}html[data-netbox-color-mode=dark] .my-lg-1{margin-top:.25rem!important;margin-bottom:.25rem!important}html[data-netbox-color-mode=dark] .my-lg-2{margin-top:.5rem!important;margin-bottom:.5rem!important}html[data-netbox-color-mode=dark] .my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important}html[data-netbox-color-mode=dark] .my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}html[data-netbox-color-mode=dark] .my-lg-5{margin-top:3rem!important;margin-bottom:3rem!important}html[data-netbox-color-mode=dark] .my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}html[data-netbox-color-mode=dark] .mt-lg-0{margin-top:0!important}html[data-netbox-color-mode=dark] .mt-lg-1{margin-top:.25rem!important}html[data-netbox-color-mode=dark] .mt-lg-2{margin-top:.5rem!important}html[data-netbox-color-mode=dark] .mt-lg-3{margin-top:1rem!important}html[data-netbox-color-mode=dark] .mt-lg-4{margin-top:1.5rem!important}html[data-netbox-color-mode=dark] .mt-lg-5{margin-top:3rem!important}html[data-netbox-color-mode=dark] .mt-lg-auto{margin-top:auto!important}html[data-netbox-color-mode=dark] .me-lg-0{margin-right:0!important}html[data-netbox-color-mode=dark] .me-lg-1{margin-right:.25rem!important}html[data-netbox-color-mode=dark] .me-lg-2{margin-right:.5rem!important}html[data-netbox-color-mode=dark] .me-lg-3{margin-right:1rem!important}html[data-netbox-color-mode=dark] .me-lg-4{margin-right:1.5rem!important}html[data-netbox-color-mode=dark] .me-lg-5{margin-right:3rem!important}html[data-netbox-color-mode=dark] .me-lg-auto{margin-right:auto!important}html[data-netbox-color-mode=dark] .mb-lg-0{margin-bottom:0!important}html[data-netbox-color-mode=dark] .mb-lg-1{margin-bottom:.25rem!important}html[data-netbox-color-mode=dark] .mb-lg-2{margin-bottom:.5rem!important}html[data-netbox-color-mode=dark] .mb-lg-3{margin-bottom:1rem!important}html[data-netbox-color-mode=dark] .mb-lg-4{margin-bottom:1.5rem!important}html[data-netbox-color-mode=dark] .mb-lg-5{margin-bottom:3rem!important}html[data-netbox-color-mode=dark] .mb-lg-auto{margin-bottom:auto!important}html[data-netbox-color-mode=dark] .ms-lg-0{margin-left:0!important}html[data-netbox-color-mode=dark] .ms-lg-1{margin-left:.25rem!important}html[data-netbox-color-mode=dark] .ms-lg-2{margin-left:.5rem!important}html[data-netbox-color-mode=dark] .ms-lg-3{margin-left:1rem!important}html[data-netbox-color-mode=dark] .ms-lg-4{margin-left:1.5rem!important}html[data-netbox-color-mode=dark] .ms-lg-5{margin-left:3rem!important}html[data-netbox-color-mode=dark] .ms-lg-auto{margin-left:auto!important}html[data-netbox-color-mode=dark] .p-lg-0{padding:0!important}html[data-netbox-color-mode=dark] .p-lg-1{padding:.25rem!important}html[data-netbox-color-mode=dark] .p-lg-2{padding:.5rem!important}html[data-netbox-color-mode=dark] .p-lg-3{padding:1rem!important}html[data-netbox-color-mode=dark] .p-lg-4{padding:1.5rem!important}html[data-netbox-color-mode=dark] .p-lg-5{padding:3rem!important}html[data-netbox-color-mode=dark] .px-lg-0{padding-right:0!important;padding-left:0!important}html[data-netbox-color-mode=dark] .px-lg-1{padding-right:.25rem!important;padding-left:.25rem!important}html[data-netbox-color-mode=dark] .px-lg-2{padding-right:.5rem!important;padding-left:.5rem!important}html[data-netbox-color-mode=dark] .px-lg-3{padding-right:1rem!important;padding-left:1rem!important}html[data-netbox-color-mode=dark] .px-lg-4{padding-right:1.5rem!important;padding-left:1.5rem!important}html[data-netbox-color-mode=dark] .px-lg-5{padding-right:3rem!important;padding-left:3rem!important}html[data-netbox-color-mode=dark] .py-lg-0{padding-top:0!important;padding-bottom:0!important}html[data-netbox-color-mode=dark] .py-lg-1{padding-top:.25rem!important;padding-bottom:.25rem!important}html[data-netbox-color-mode=dark] .py-lg-2{padding-top:.5rem!important;padding-bottom:.5rem!important}html[data-netbox-color-mode=dark] .py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important}html[data-netbox-color-mode=dark] .py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}html[data-netbox-color-mode=dark] .py-lg-5{padding-top:3rem!important;padding-bottom:3rem!important}html[data-netbox-color-mode=dark] .pt-lg-0{padding-top:0!important}html[data-netbox-color-mode=dark] .pt-lg-1{padding-top:.25rem!important}html[data-netbox-color-mode=dark] .pt-lg-2{padding-top:.5rem!important}html[data-netbox-color-mode=dark] .pt-lg-3{padding-top:1rem!important}html[data-netbox-color-mode=dark] .pt-lg-4{padding-top:1.5rem!important}html[data-netbox-color-mode=dark] .pt-lg-5{padding-top:3rem!important}html[data-netbox-color-mode=dark] .pe-lg-0{padding-right:0!important}html[data-netbox-color-mode=dark] .pe-lg-1{padding-right:.25rem!important}html[data-netbox-color-mode=dark] .pe-lg-2{padding-right:.5rem!important}html[data-netbox-color-mode=dark] .pe-lg-3{padding-right:1rem!important}html[data-netbox-color-mode=dark] .pe-lg-4{padding-right:1.5rem!important}html[data-netbox-color-mode=dark] .pe-lg-5{padding-right:3rem!important}html[data-netbox-color-mode=dark] .pb-lg-0{padding-bottom:0!important}html[data-netbox-color-mode=dark] .pb-lg-1{padding-bottom:.25rem!important}html[data-netbox-color-mode=dark] .pb-lg-2{padding-bottom:.5rem!important}html[data-netbox-color-mode=dark] .pb-lg-3{padding-bottom:1rem!important}html[data-netbox-color-mode=dark] .pb-lg-4{padding-bottom:1.5rem!important}html[data-netbox-color-mode=dark] .pb-lg-5{padding-bottom:3rem!important}html[data-netbox-color-mode=dark] .ps-lg-0{padding-left:0!important}html[data-netbox-color-mode=dark] .ps-lg-1{padding-left:.25rem!important}html[data-netbox-color-mode=dark] .ps-lg-2{padding-left:.5rem!important}html[data-netbox-color-mode=dark] .ps-lg-3{padding-left:1rem!important}html[data-netbox-color-mode=dark] .ps-lg-4{padding-left:1.5rem!important}html[data-netbox-color-mode=dark] .ps-lg-5{padding-left:3rem!important}html[data-netbox-color-mode=dark] .text-lg-start{text-align:left!important}html[data-netbox-color-mode=dark] .text-lg-end{text-align:right!important}html[data-netbox-color-mode=dark] .text-lg-center{text-align:center!important}}@media (min-width: 1200px){html[data-netbox-color-mode=dark] .float-xl-start{float:left!important}html[data-netbox-color-mode=dark] .float-xl-end{float:right!important}html[data-netbox-color-mode=dark] .float-xl-none{float:none!important}html[data-netbox-color-mode=dark] .d-xl-inline{display:inline!important}html[data-netbox-color-mode=dark] .d-xl-inline-block{display:inline-block!important}html[data-netbox-color-mode=dark] .d-xl-block{display:block!important}html[data-netbox-color-mode=dark] .d-xl-grid{display:grid!important}html[data-netbox-color-mode=dark] .d-xl-table{display:table!important}html[data-netbox-color-mode=dark] .d-xl-table-row{display:table-row!important}html[data-netbox-color-mode=dark] .d-xl-table-cell{display:table-cell!important}html[data-netbox-color-mode=dark] .d-xl-flex{display:flex!important}html[data-netbox-color-mode=dark] .d-xl-inline-flex{display:inline-flex!important}html[data-netbox-color-mode=dark] .d-xl-none{display:none!important}html[data-netbox-color-mode=dark] .flex-xl-fill{flex:1 1 auto!important}html[data-netbox-color-mode=dark] .flex-xl-row{flex-direction:row!important}html[data-netbox-color-mode=dark] .flex-xl-column{flex-direction:column!important}html[data-netbox-color-mode=dark] .flex-xl-row-reverse{flex-direction:row-reverse!important}html[data-netbox-color-mode=dark] .flex-xl-column-reverse{flex-direction:column-reverse!important}html[data-netbox-color-mode=dark] .flex-xl-grow-0{flex-grow:0!important}html[data-netbox-color-mode=dark] .flex-xl-grow-1{flex-grow:1!important}html[data-netbox-color-mode=dark] .flex-xl-shrink-0{flex-shrink:0!important}html[data-netbox-color-mode=dark] .flex-xl-shrink-1{flex-shrink:1!important}html[data-netbox-color-mode=dark] .flex-xl-wrap{flex-wrap:wrap!important}html[data-netbox-color-mode=dark] .flex-xl-nowrap{flex-wrap:nowrap!important}html[data-netbox-color-mode=dark] .flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}html[data-netbox-color-mode=dark] .gap-xl-0{gap:0!important}html[data-netbox-color-mode=dark] .gap-xl-1{gap:.25rem!important}html[data-netbox-color-mode=dark] .gap-xl-2{gap:.5rem!important}html[data-netbox-color-mode=dark] .gap-xl-3{gap:1rem!important}html[data-netbox-color-mode=dark] .gap-xl-4{gap:1.5rem!important}html[data-netbox-color-mode=dark] .gap-xl-5{gap:3rem!important}html[data-netbox-color-mode=dark] .justify-content-xl-start{justify-content:flex-start!important}html[data-netbox-color-mode=dark] .justify-content-xl-end{justify-content:flex-end!important}html[data-netbox-color-mode=dark] .justify-content-xl-center{justify-content:center!important}html[data-netbox-color-mode=dark] .justify-content-xl-between{justify-content:space-between!important}html[data-netbox-color-mode=dark] .justify-content-xl-around{justify-content:space-around!important}html[data-netbox-color-mode=dark] .justify-content-xl-evenly{justify-content:space-evenly!important}html[data-netbox-color-mode=dark] .align-items-xl-start{align-items:flex-start!important}html[data-netbox-color-mode=dark] .align-items-xl-end{align-items:flex-end!important}html[data-netbox-color-mode=dark] .align-items-xl-center{align-items:center!important}html[data-netbox-color-mode=dark] .align-items-xl-baseline{align-items:baseline!important}html[data-netbox-color-mode=dark] .align-items-xl-stretch{align-items:stretch!important}html[data-netbox-color-mode=dark] .align-content-xl-start{align-content:flex-start!important}html[data-netbox-color-mode=dark] .align-content-xl-end{align-content:flex-end!important}html[data-netbox-color-mode=dark] .align-content-xl-center{align-content:center!important}html[data-netbox-color-mode=dark] .align-content-xl-between{align-content:space-between!important}html[data-netbox-color-mode=dark] .align-content-xl-around{align-content:space-around!important}html[data-netbox-color-mode=dark] .align-content-xl-stretch{align-content:stretch!important}html[data-netbox-color-mode=dark] .align-self-xl-auto{align-self:auto!important}html[data-netbox-color-mode=dark] .align-self-xl-start{align-self:flex-start!important}html[data-netbox-color-mode=dark] .align-self-xl-end{align-self:flex-end!important}html[data-netbox-color-mode=dark] .align-self-xl-center{align-self:center!important}html[data-netbox-color-mode=dark] .align-self-xl-baseline{align-self:baseline!important}html[data-netbox-color-mode=dark] .align-self-xl-stretch{align-self:stretch!important}html[data-netbox-color-mode=dark] .order-xl-first{order:-1!important}html[data-netbox-color-mode=dark] .order-xl-0{order:0!important}html[data-netbox-color-mode=dark] .order-xl-1{order:1!important}html[data-netbox-color-mode=dark] .order-xl-2{order:2!important}html[data-netbox-color-mode=dark] .order-xl-3{order:3!important}html[data-netbox-color-mode=dark] .order-xl-4{order:4!important}html[data-netbox-color-mode=dark] .order-xl-5{order:5!important}html[data-netbox-color-mode=dark] .order-xl-last{order:6!important}html[data-netbox-color-mode=dark] .m-xl-0{margin:0!important}html[data-netbox-color-mode=dark] .m-xl-1{margin:.25rem!important}html[data-netbox-color-mode=dark] .m-xl-2{margin:.5rem!important}html[data-netbox-color-mode=dark] .m-xl-3{margin:1rem!important}html[data-netbox-color-mode=dark] .m-xl-4{margin:1.5rem!important}html[data-netbox-color-mode=dark] .m-xl-5{margin:3rem!important}html[data-netbox-color-mode=dark] .m-xl-auto{margin:auto!important}html[data-netbox-color-mode=dark] .mx-xl-0{margin-right:0!important;margin-left:0!important}html[data-netbox-color-mode=dark] .mx-xl-1{margin-right:.25rem!important;margin-left:.25rem!important}html[data-netbox-color-mode=dark] .mx-xl-2{margin-right:.5rem!important;margin-left:.5rem!important}html[data-netbox-color-mode=dark] .mx-xl-3{margin-right:1rem!important;margin-left:1rem!important}html[data-netbox-color-mode=dark] .mx-xl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}html[data-netbox-color-mode=dark] .mx-xl-5{margin-right:3rem!important;margin-left:3rem!important}html[data-netbox-color-mode=dark] .mx-xl-auto{margin-right:auto!important;margin-left:auto!important}html[data-netbox-color-mode=dark] .my-xl-0{margin-top:0!important;margin-bottom:0!important}html[data-netbox-color-mode=dark] .my-xl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}html[data-netbox-color-mode=dark] .my-xl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}html[data-netbox-color-mode=dark] .my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important}html[data-netbox-color-mode=dark] .my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}html[data-netbox-color-mode=dark] .my-xl-5{margin-top:3rem!important;margin-bottom:3rem!important}html[data-netbox-color-mode=dark] .my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}html[data-netbox-color-mode=dark] .mt-xl-0{margin-top:0!important}html[data-netbox-color-mode=dark] .mt-xl-1{margin-top:.25rem!important}html[data-netbox-color-mode=dark] .mt-xl-2{margin-top:.5rem!important}html[data-netbox-color-mode=dark] .mt-xl-3{margin-top:1rem!important}html[data-netbox-color-mode=dark] .mt-xl-4{margin-top:1.5rem!important}html[data-netbox-color-mode=dark] .mt-xl-5{margin-top:3rem!important}html[data-netbox-color-mode=dark] .mt-xl-auto{margin-top:auto!important}html[data-netbox-color-mode=dark] .me-xl-0{margin-right:0!important}html[data-netbox-color-mode=dark] .me-xl-1{margin-right:.25rem!important}html[data-netbox-color-mode=dark] .me-xl-2{margin-right:.5rem!important}html[data-netbox-color-mode=dark] .me-xl-3{margin-right:1rem!important}html[data-netbox-color-mode=dark] .me-xl-4{margin-right:1.5rem!important}html[data-netbox-color-mode=dark] .me-xl-5{margin-right:3rem!important}html[data-netbox-color-mode=dark] .me-xl-auto{margin-right:auto!important}html[data-netbox-color-mode=dark] .mb-xl-0{margin-bottom:0!important}html[data-netbox-color-mode=dark] .mb-xl-1{margin-bottom:.25rem!important}html[data-netbox-color-mode=dark] .mb-xl-2{margin-bottom:.5rem!important}html[data-netbox-color-mode=dark] .mb-xl-3{margin-bottom:1rem!important}html[data-netbox-color-mode=dark] .mb-xl-4{margin-bottom:1.5rem!important}html[data-netbox-color-mode=dark] .mb-xl-5{margin-bottom:3rem!important}html[data-netbox-color-mode=dark] .mb-xl-auto{margin-bottom:auto!important}html[data-netbox-color-mode=dark] .ms-xl-0{margin-left:0!important}html[data-netbox-color-mode=dark] .ms-xl-1{margin-left:.25rem!important}html[data-netbox-color-mode=dark] .ms-xl-2{margin-left:.5rem!important}html[data-netbox-color-mode=dark] .ms-xl-3{margin-left:1rem!important}html[data-netbox-color-mode=dark] .ms-xl-4{margin-left:1.5rem!important}html[data-netbox-color-mode=dark] .ms-xl-5{margin-left:3rem!important}html[data-netbox-color-mode=dark] .ms-xl-auto{margin-left:auto!important}html[data-netbox-color-mode=dark] .p-xl-0{padding:0!important}html[data-netbox-color-mode=dark] .p-xl-1{padding:.25rem!important}html[data-netbox-color-mode=dark] .p-xl-2{padding:.5rem!important}html[data-netbox-color-mode=dark] .p-xl-3{padding:1rem!important}html[data-netbox-color-mode=dark] .p-xl-4{padding:1.5rem!important}html[data-netbox-color-mode=dark] .p-xl-5{padding:3rem!important}html[data-netbox-color-mode=dark] .px-xl-0{padding-right:0!important;padding-left:0!important}html[data-netbox-color-mode=dark] .px-xl-1{padding-right:.25rem!important;padding-left:.25rem!important}html[data-netbox-color-mode=dark] .px-xl-2{padding-right:.5rem!important;padding-left:.5rem!important}html[data-netbox-color-mode=dark] .px-xl-3{padding-right:1rem!important;padding-left:1rem!important}html[data-netbox-color-mode=dark] .px-xl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}html[data-netbox-color-mode=dark] .px-xl-5{padding-right:3rem!important;padding-left:3rem!important}html[data-netbox-color-mode=dark] .py-xl-0{padding-top:0!important;padding-bottom:0!important}html[data-netbox-color-mode=dark] .py-xl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}html[data-netbox-color-mode=dark] .py-xl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}html[data-netbox-color-mode=dark] .py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important}html[data-netbox-color-mode=dark] .py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}html[data-netbox-color-mode=dark] .py-xl-5{padding-top:3rem!important;padding-bottom:3rem!important}html[data-netbox-color-mode=dark] .pt-xl-0{padding-top:0!important}html[data-netbox-color-mode=dark] .pt-xl-1{padding-top:.25rem!important}html[data-netbox-color-mode=dark] .pt-xl-2{padding-top:.5rem!important}html[data-netbox-color-mode=dark] .pt-xl-3{padding-top:1rem!important}html[data-netbox-color-mode=dark] .pt-xl-4{padding-top:1.5rem!important}html[data-netbox-color-mode=dark] .pt-xl-5{padding-top:3rem!important}html[data-netbox-color-mode=dark] .pe-xl-0{padding-right:0!important}html[data-netbox-color-mode=dark] .pe-xl-1{padding-right:.25rem!important}html[data-netbox-color-mode=dark] .pe-xl-2{padding-right:.5rem!important}html[data-netbox-color-mode=dark] .pe-xl-3{padding-right:1rem!important}html[data-netbox-color-mode=dark] .pe-xl-4{padding-right:1.5rem!important}html[data-netbox-color-mode=dark] .pe-xl-5{padding-right:3rem!important}html[data-netbox-color-mode=dark] .pb-xl-0{padding-bottom:0!important}html[data-netbox-color-mode=dark] .pb-xl-1{padding-bottom:.25rem!important}html[data-netbox-color-mode=dark] .pb-xl-2{padding-bottom:.5rem!important}html[data-netbox-color-mode=dark] .pb-xl-3{padding-bottom:1rem!important}html[data-netbox-color-mode=dark] .pb-xl-4{padding-bottom:1.5rem!important}html[data-netbox-color-mode=dark] .pb-xl-5{padding-bottom:3rem!important}html[data-netbox-color-mode=dark] .ps-xl-0{padding-left:0!important}html[data-netbox-color-mode=dark] .ps-xl-1{padding-left:.25rem!important}html[data-netbox-color-mode=dark] .ps-xl-2{padding-left:.5rem!important}html[data-netbox-color-mode=dark] .ps-xl-3{padding-left:1rem!important}html[data-netbox-color-mode=dark] .ps-xl-4{padding-left:1.5rem!important}html[data-netbox-color-mode=dark] .ps-xl-5{padding-left:3rem!important}html[data-netbox-color-mode=dark] .text-xl-start{text-align:left!important}html[data-netbox-color-mode=dark] .text-xl-end{text-align:right!important}html[data-netbox-color-mode=dark] .text-xl-center{text-align:center!important}}@media (min-width: 1400px){html[data-netbox-color-mode=dark] .float-xxl-start{float:left!important}html[data-netbox-color-mode=dark] .float-xxl-end{float:right!important}html[data-netbox-color-mode=dark] .float-xxl-none{float:none!important}html[data-netbox-color-mode=dark] .d-xxl-inline{display:inline!important}html[data-netbox-color-mode=dark] .d-xxl-inline-block{display:inline-block!important}html[data-netbox-color-mode=dark] .d-xxl-block{display:block!important}html[data-netbox-color-mode=dark] .d-xxl-grid{display:grid!important}html[data-netbox-color-mode=dark] .d-xxl-table{display:table!important}html[data-netbox-color-mode=dark] .d-xxl-table-row{display:table-row!important}html[data-netbox-color-mode=dark] .d-xxl-table-cell{display:table-cell!important}html[data-netbox-color-mode=dark] .d-xxl-flex{display:flex!important}html[data-netbox-color-mode=dark] .d-xxl-inline-flex{display:inline-flex!important}html[data-netbox-color-mode=dark] .d-xxl-none{display:none!important}html[data-netbox-color-mode=dark] .flex-xxl-fill{flex:1 1 auto!important}html[data-netbox-color-mode=dark] .flex-xxl-row{flex-direction:row!important}html[data-netbox-color-mode=dark] .flex-xxl-column{flex-direction:column!important}html[data-netbox-color-mode=dark] .flex-xxl-row-reverse{flex-direction:row-reverse!important}html[data-netbox-color-mode=dark] .flex-xxl-column-reverse{flex-direction:column-reverse!important}html[data-netbox-color-mode=dark] .flex-xxl-grow-0{flex-grow:0!important}html[data-netbox-color-mode=dark] .flex-xxl-grow-1{flex-grow:1!important}html[data-netbox-color-mode=dark] .flex-xxl-shrink-0{flex-shrink:0!important}html[data-netbox-color-mode=dark] .flex-xxl-shrink-1{flex-shrink:1!important}html[data-netbox-color-mode=dark] .flex-xxl-wrap{flex-wrap:wrap!important}html[data-netbox-color-mode=dark] .flex-xxl-nowrap{flex-wrap:nowrap!important}html[data-netbox-color-mode=dark] .flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}html[data-netbox-color-mode=dark] .gap-xxl-0{gap:0!important}html[data-netbox-color-mode=dark] .gap-xxl-1{gap:.25rem!important}html[data-netbox-color-mode=dark] .gap-xxl-2{gap:.5rem!important}html[data-netbox-color-mode=dark] .gap-xxl-3{gap:1rem!important}html[data-netbox-color-mode=dark] .gap-xxl-4{gap:1.5rem!important}html[data-netbox-color-mode=dark] .gap-xxl-5{gap:3rem!important}html[data-netbox-color-mode=dark] .justify-content-xxl-start{justify-content:flex-start!important}html[data-netbox-color-mode=dark] .justify-content-xxl-end{justify-content:flex-end!important}html[data-netbox-color-mode=dark] .justify-content-xxl-center{justify-content:center!important}html[data-netbox-color-mode=dark] .justify-content-xxl-between{justify-content:space-between!important}html[data-netbox-color-mode=dark] .justify-content-xxl-around{justify-content:space-around!important}html[data-netbox-color-mode=dark] .justify-content-xxl-evenly{justify-content:space-evenly!important}html[data-netbox-color-mode=dark] .align-items-xxl-start{align-items:flex-start!important}html[data-netbox-color-mode=dark] .align-items-xxl-end{align-items:flex-end!important}html[data-netbox-color-mode=dark] .align-items-xxl-center{align-items:center!important}html[data-netbox-color-mode=dark] .align-items-xxl-baseline{align-items:baseline!important}html[data-netbox-color-mode=dark] .align-items-xxl-stretch{align-items:stretch!important}html[data-netbox-color-mode=dark] .align-content-xxl-start{align-content:flex-start!important}html[data-netbox-color-mode=dark] .align-content-xxl-end{align-content:flex-end!important}html[data-netbox-color-mode=dark] .align-content-xxl-center{align-content:center!important}html[data-netbox-color-mode=dark] .align-content-xxl-between{align-content:space-between!important}html[data-netbox-color-mode=dark] .align-content-xxl-around{align-content:space-around!important}html[data-netbox-color-mode=dark] .align-content-xxl-stretch{align-content:stretch!important}html[data-netbox-color-mode=dark] .align-self-xxl-auto{align-self:auto!important}html[data-netbox-color-mode=dark] .align-self-xxl-start{align-self:flex-start!important}html[data-netbox-color-mode=dark] .align-self-xxl-end{align-self:flex-end!important}html[data-netbox-color-mode=dark] .align-self-xxl-center{align-self:center!important}html[data-netbox-color-mode=dark] .align-self-xxl-baseline{align-self:baseline!important}html[data-netbox-color-mode=dark] .align-self-xxl-stretch{align-self:stretch!important}html[data-netbox-color-mode=dark] .order-xxl-first{order:-1!important}html[data-netbox-color-mode=dark] .order-xxl-0{order:0!important}html[data-netbox-color-mode=dark] .order-xxl-1{order:1!important}html[data-netbox-color-mode=dark] .order-xxl-2{order:2!important}html[data-netbox-color-mode=dark] .order-xxl-3{order:3!important}html[data-netbox-color-mode=dark] .order-xxl-4{order:4!important}html[data-netbox-color-mode=dark] .order-xxl-5{order:5!important}html[data-netbox-color-mode=dark] .order-xxl-last{order:6!important}html[data-netbox-color-mode=dark] .m-xxl-0{margin:0!important}html[data-netbox-color-mode=dark] .m-xxl-1{margin:.25rem!important}html[data-netbox-color-mode=dark] .m-xxl-2{margin:.5rem!important}html[data-netbox-color-mode=dark] .m-xxl-3{margin:1rem!important}html[data-netbox-color-mode=dark] .m-xxl-4{margin:1.5rem!important}html[data-netbox-color-mode=dark] .m-xxl-5{margin:3rem!important}html[data-netbox-color-mode=dark] .m-xxl-auto{margin:auto!important}html[data-netbox-color-mode=dark] .mx-xxl-0{margin-right:0!important;margin-left:0!important}html[data-netbox-color-mode=dark] .mx-xxl-1{margin-right:.25rem!important;margin-left:.25rem!important}html[data-netbox-color-mode=dark] .mx-xxl-2{margin-right:.5rem!important;margin-left:.5rem!important}html[data-netbox-color-mode=dark] .mx-xxl-3{margin-right:1rem!important;margin-left:1rem!important}html[data-netbox-color-mode=dark] .mx-xxl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}html[data-netbox-color-mode=dark] .mx-xxl-5{margin-right:3rem!important;margin-left:3rem!important}html[data-netbox-color-mode=dark] .mx-xxl-auto{margin-right:auto!important;margin-left:auto!important}html[data-netbox-color-mode=dark] .my-xxl-0{margin-top:0!important;margin-bottom:0!important}html[data-netbox-color-mode=dark] .my-xxl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}html[data-netbox-color-mode=dark] .my-xxl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}html[data-netbox-color-mode=dark] .my-xxl-3{margin-top:1rem!important;margin-bottom:1rem!important}html[data-netbox-color-mode=dark] .my-xxl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}html[data-netbox-color-mode=dark] .my-xxl-5{margin-top:3rem!important;margin-bottom:3rem!important}html[data-netbox-color-mode=dark] .my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important}html[data-netbox-color-mode=dark] .mt-xxl-0{margin-top:0!important}html[data-netbox-color-mode=dark] .mt-xxl-1{margin-top:.25rem!important}html[data-netbox-color-mode=dark] .mt-xxl-2{margin-top:.5rem!important}html[data-netbox-color-mode=dark] .mt-xxl-3{margin-top:1rem!important}html[data-netbox-color-mode=dark] .mt-xxl-4{margin-top:1.5rem!important}html[data-netbox-color-mode=dark] .mt-xxl-5{margin-top:3rem!important}html[data-netbox-color-mode=dark] .mt-xxl-auto{margin-top:auto!important}html[data-netbox-color-mode=dark] .me-xxl-0{margin-right:0!important}html[data-netbox-color-mode=dark] .me-xxl-1{margin-right:.25rem!important}html[data-netbox-color-mode=dark] .me-xxl-2{margin-right:.5rem!important}html[data-netbox-color-mode=dark] .me-xxl-3{margin-right:1rem!important}html[data-netbox-color-mode=dark] .me-xxl-4{margin-right:1.5rem!important}html[data-netbox-color-mode=dark] .me-xxl-5{margin-right:3rem!important}html[data-netbox-color-mode=dark] .me-xxl-auto{margin-right:auto!important}html[data-netbox-color-mode=dark] .mb-xxl-0{margin-bottom:0!important}html[data-netbox-color-mode=dark] .mb-xxl-1{margin-bottom:.25rem!important}html[data-netbox-color-mode=dark] .mb-xxl-2{margin-bottom:.5rem!important}html[data-netbox-color-mode=dark] .mb-xxl-3{margin-bottom:1rem!important}html[data-netbox-color-mode=dark] .mb-xxl-4{margin-bottom:1.5rem!important}html[data-netbox-color-mode=dark] .mb-xxl-5{margin-bottom:3rem!important}html[data-netbox-color-mode=dark] .mb-xxl-auto{margin-bottom:auto!important}html[data-netbox-color-mode=dark] .ms-xxl-0{margin-left:0!important}html[data-netbox-color-mode=dark] .ms-xxl-1{margin-left:.25rem!important}html[data-netbox-color-mode=dark] .ms-xxl-2{margin-left:.5rem!important}html[data-netbox-color-mode=dark] .ms-xxl-3{margin-left:1rem!important}html[data-netbox-color-mode=dark] .ms-xxl-4{margin-left:1.5rem!important}html[data-netbox-color-mode=dark] .ms-xxl-5{margin-left:3rem!important}html[data-netbox-color-mode=dark] .ms-xxl-auto{margin-left:auto!important}html[data-netbox-color-mode=dark] .p-xxl-0{padding:0!important}html[data-netbox-color-mode=dark] .p-xxl-1{padding:.25rem!important}html[data-netbox-color-mode=dark] .p-xxl-2{padding:.5rem!important}html[data-netbox-color-mode=dark] .p-xxl-3{padding:1rem!important}html[data-netbox-color-mode=dark] .p-xxl-4{padding:1.5rem!important}html[data-netbox-color-mode=dark] .p-xxl-5{padding:3rem!important}html[data-netbox-color-mode=dark] .px-xxl-0{padding-right:0!important;padding-left:0!important}html[data-netbox-color-mode=dark] .px-xxl-1{padding-right:.25rem!important;padding-left:.25rem!important}html[data-netbox-color-mode=dark] .px-xxl-2{padding-right:.5rem!important;padding-left:.5rem!important}html[data-netbox-color-mode=dark] .px-xxl-3{padding-right:1rem!important;padding-left:1rem!important}html[data-netbox-color-mode=dark] .px-xxl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}html[data-netbox-color-mode=dark] .px-xxl-5{padding-right:3rem!important;padding-left:3rem!important}html[data-netbox-color-mode=dark] .py-xxl-0{padding-top:0!important;padding-bottom:0!important}html[data-netbox-color-mode=dark] .py-xxl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}html[data-netbox-color-mode=dark] .py-xxl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}html[data-netbox-color-mode=dark] .py-xxl-3{padding-top:1rem!important;padding-bottom:1rem!important}html[data-netbox-color-mode=dark] .py-xxl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}html[data-netbox-color-mode=dark] .py-xxl-5{padding-top:3rem!important;padding-bottom:3rem!important}html[data-netbox-color-mode=dark] .pt-xxl-0{padding-top:0!important}html[data-netbox-color-mode=dark] .pt-xxl-1{padding-top:.25rem!important}html[data-netbox-color-mode=dark] .pt-xxl-2{padding-top:.5rem!important}html[data-netbox-color-mode=dark] .pt-xxl-3{padding-top:1rem!important}html[data-netbox-color-mode=dark] .pt-xxl-4{padding-top:1.5rem!important}html[data-netbox-color-mode=dark] .pt-xxl-5{padding-top:3rem!important}html[data-netbox-color-mode=dark] .pe-xxl-0{padding-right:0!important}html[data-netbox-color-mode=dark] .pe-xxl-1{padding-right:.25rem!important}html[data-netbox-color-mode=dark] .pe-xxl-2{padding-right:.5rem!important}html[data-netbox-color-mode=dark] .pe-xxl-3{padding-right:1rem!important}html[data-netbox-color-mode=dark] .pe-xxl-4{padding-right:1.5rem!important}html[data-netbox-color-mode=dark] .pe-xxl-5{padding-right:3rem!important}html[data-netbox-color-mode=dark] .pb-xxl-0{padding-bottom:0!important}html[data-netbox-color-mode=dark] .pb-xxl-1{padding-bottom:.25rem!important}html[data-netbox-color-mode=dark] .pb-xxl-2{padding-bottom:.5rem!important}html[data-netbox-color-mode=dark] .pb-xxl-3{padding-bottom:1rem!important}html[data-netbox-color-mode=dark] .pb-xxl-4{padding-bottom:1.5rem!important}html[data-netbox-color-mode=dark] .pb-xxl-5{padding-bottom:3rem!important}html[data-netbox-color-mode=dark] .ps-xxl-0{padding-left:0!important}html[data-netbox-color-mode=dark] .ps-xxl-1{padding-left:.25rem!important}html[data-netbox-color-mode=dark] .ps-xxl-2{padding-left:.5rem!important}html[data-netbox-color-mode=dark] .ps-xxl-3{padding-left:1rem!important}html[data-netbox-color-mode=dark] .ps-xxl-4{padding-left:1.5rem!important}html[data-netbox-color-mode=dark] .ps-xxl-5{padding-left:3rem!important}html[data-netbox-color-mode=dark] .text-xxl-start{text-align:left!important}html[data-netbox-color-mode=dark] .text-xxl-end{text-align:right!important}html[data-netbox-color-mode=dark] .text-xxl-center{text-align:center!important}}@media (min-width: 1200px){html[data-netbox-color-mode=dark] .fs-1{font-size:2.5rem!important}html[data-netbox-color-mode=dark] .fs-2{font-size:2rem!important}html[data-netbox-color-mode=dark] .fs-3{font-size:1.75rem!important}html[data-netbox-color-mode=dark] .fs-4{font-size:1.5rem!important}}@media print{html[data-netbox-color-mode=dark] .d-print-inline{display:inline!important}html[data-netbox-color-mode=dark] .d-print-inline-block{display:inline-block!important}html[data-netbox-color-mode=dark] .d-print-block{display:block!important}html[data-netbox-color-mode=dark] .d-print-grid{display:grid!important}html[data-netbox-color-mode=dark] .d-print-table{display:table!important}html[data-netbox-color-mode=dark] .d-print-table-row{display:table-row!important}html[data-netbox-color-mode=dark] .d-print-table-cell{display:table-cell!important}html[data-netbox-color-mode=dark] .d-print-flex{display:flex!important}html[data-netbox-color-mode=dark] .d-print-inline-flex{display:inline-flex!important}html[data-netbox-color-mode=dark] .d-print-none{display:none!important}}html[data-netbox-color-mode=dark] :root{--nbx-select-content-bg: #212529;--nbx-select-option-selected-bg: #dee2e6;--nbx-select-option-hover-bg: #0d6efd;--nbx-select-option-hover-color: #fff;--nbx-select-placeholder-color: #adb5bd;--nbx-select-value-color: #fff}html[data-netbox-color-mode=dark] :root[data-netbox-color-mode=dark]{--nbx-select-content-bg: #212529;--nbx-select-option-selected-bg: #adb5bd;--nbx-select-option-hover-bg: #9ec5fe;--nbx-select-option-hover-color: #000;--nbx-select-placeholder-color: #495057;--nbx-select-value-color: #000}html[data-netbox-color-mode=dark] .ss-main{position:relative;display:inline-block;user-select:none;color:#f8f9fa;width:100%}html[data-netbox-color-mode=dark] .ss-main .ss-single-selected{display:flex;cursor:pointer;width:100%;height:calc(1.5em + (.75rem + 2px));padding:.75rem;border:1px solid #495057;border-radius:.375rem;background-color:#fff;outline:0;box-sizing:border-box;transition:background-color .2s}html[data-netbox-color-mode=dark] .ss-main .ss-single-selected.ss-disabled{background-color:#495057;cursor:not-allowed}html[data-netbox-color-mode=dark] .ss-main .ss-single-selected.ss-open-above{border-top-left-radius:0;border-top-right-radius:0}html[data-netbox-color-mode=dark] .ss-main .ss-single-selected.ss-open-below{border-bottom-left-radius:0;border-bottom-right-radius:0}html[data-netbox-color-mode=dark] .ss-main .ss-single-selected .placeholder{display:flex;flex:1 1 100%;align-items:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:left;width:calc(100% - 30px);line-height:1em;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}html[data-netbox-color-mode=dark] .ss-main .ss-single-selected .placeholder *{display:flex;align-items:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:auto}html[data-netbox-color-mode=dark] .ss-main .ss-single-selected .placeholder .ss-disabled{color:#adb5bd}html[data-netbox-color-mode=dark] .ss-main .ss-single-selected .ss-deselect{display:flex;align-items:center;justify-content:flex-end;flex:0 1 auto;margin:0 .75rem;font-weight:bold}html[data-netbox-color-mode=dark] .ss-main .ss-single-selected .ss-deselect.ss-hide{display:none}html[data-netbox-color-mode=dark] .ss-main .ss-single-selected .ss-arrow{display:flex;align-items:center;justify-content:flex-end;flex:0 1 auto;margin:0 .75rem}html[data-netbox-color-mode=dark] .ss-main .ss-single-selected .ss-arrow span{border:solid #f8f9fa;border-width:0 2px 2px 0;display:inline-block;padding:3px;transition:transform .2s,margin .2s}html[data-netbox-color-mode=dark] .ss-main .ss-single-selected .ss-arrow span.arrow-up{transform:rotate(-135deg);margin:3px 0 0}html[data-netbox-color-mode=dark] .ss-main .ss-single-selected .ss-arrow span.arrow-down{transform:rotate(45deg);margin:-3px 0 0}html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected{display:flex;flex-direction:row;cursor:pointer;min-height:calc(1.5em + (.75rem + 2px));width:100%;padding:0 0 0 3px;border:1px solid #495057;border-radius:.375rem;background-color:#fff;outline:0;box-sizing:border-box;transition:background-color .2s}html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected.ss-disabled{background-color:#495057;cursor:not-allowed}html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected.ss-disabled .ss-values .ss-disabled{color:#f8f9fa}html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected.ss-disabled .ss-values .ss-value .ss-value-delete{cursor:not-allowed}html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected.ss-open-above{border-top-left-radius:0;border-top-right-radius:0}html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected.ss-open-below{border-bottom-left-radius:0;border-bottom-right-radius:0}html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-values{display:flex;flex-wrap:wrap;justify-content:flex-start;flex:1 1 100%;width:calc(100% - 30px)}html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-values .ss-disabled{display:flex;padding:4px 5px;margin:2px 0;line-height:1em;align-items:center;width:100%;color:#adb5bd;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@keyframes scaleIn{0%{transform:scale(0);opacity:0}to{transform:scale(1);opacity:1}}@keyframes scaleOut{0%{transform:scale(1);opacity:1}to{transform:scale(0);opacity:0}}html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-values .ss-value{display:flex;user-select:none;align-items:center;font-size:12px;padding:3px 5px;margin:3px 5px 3px 0;color:#fff;background-color:#6ea8fe;border-radius:.375rem;animation-name:scaleIn;animation-duration:.2s;animation-timing-function:ease-out;animation-fill-mode:both}html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-values .ss-value.ss-out{animation-name:scaleOut;animation-duration:.2s;animation-timing-function:ease-out}html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-values .ss-value .ss-value-delete{margin:0 0 0 5px;cursor:pointer}html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-add{display:flex;flex:0 1 3px;margin:9px 12px 0 5px}html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-add .ss-plus{display:flex;justify-content:center;align-items:center;background:#f8f9fa;position:relative;height:10px;width:2px;transition:transform .2s}html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-add .ss-plus:after{background:#f8f9fa;content:"";position:absolute;height:2px;width:10px;left:-4px;top:4px}html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-add .ss-plus.ss-cross{transform:rotate(45deg)}html[data-netbox-color-mode=dark] .ss-content{position:absolute;width:100%;margin:-1px 0 0;box-sizing:border-box;border:solid 1px #495057;z-index:1010;background-color:#fff;transform-origin:center top;transition:transform .2s,opacity .2s;opacity:0;transform:scaleY(0)}html[data-netbox-color-mode=dark] .ss-content.ss-open{display:block;opacity:1;transform:scaleY(1)}html[data-netbox-color-mode=dark] .ss-content .ss-search{display:flex;flex-direction:row;padding:.75rem}html[data-netbox-color-mode=dark] .ss-content .ss-search.ss-hide{height:0px;opacity:0;padding:0;margin:0}html[data-netbox-color-mode=dark] .ss-content .ss-search.ss-hide input{height:0px;opacity:0;padding:0;margin:0}html[data-netbox-color-mode=dark] .ss-content .ss-search input{display:inline-flex;font-size:inherit;line-height:inherit;flex:1 1 auto;width:100%;min-width:0px;height:30px;padding:.75rem;margin:0;border:1px solid #495057;border-radius:.375rem;background-color:#fff;outline:0;text-align:left;box-sizing:border-box;-webkit-box-sizing:border-box;-webkit-appearance:textfield}html[data-netbox-color-mode=dark] .ss-content .ss-search input::placeholder{color:#495057;vertical-align:middle}html[data-netbox-color-mode=dark] .ss-content .ss-search input:focus{box-shadow:0 0 5px #6ea8fe}html[data-netbox-color-mode=dark] .ss-content .ss-search .ss-addable{display:inline-flex;justify-content:center;align-items:center;cursor:pointer;font-size:22px;font-weight:bold;flex:0 0 30px;height:30px;margin:0 0 0 8px;border:1px solid #495057;border-radius:.375rem;box-sizing:border-box}html[data-netbox-color-mode=dark] .ss-content .ss-addable{padding-top:0}html[data-netbox-color-mode=dark] .ss-content .ss-list{max-height:200px;overflow-x:hidden;overflow-y:auto;text-align:left}html[data-netbox-color-mode=dark] .ss-content .ss-list .ss-optgroup .ss-optgroup-label{padding:6px 10px;font-weight:bold}html[data-netbox-color-mode=dark] .ss-content .ss-list .ss-optgroup .ss-option{padding:6px 6px 6px 25px}html[data-netbox-color-mode=dark] .ss-content .ss-list .ss-optgroup-label-selectable{cursor:pointer}html[data-netbox-color-mode=dark] .ss-content .ss-list .ss-optgroup-label-selectable:hover{color:#fff;background-color:#6ea8fe}html[data-netbox-color-mode=dark] .ss-content .ss-list .ss-option{padding:6px 10px;cursor:pointer;user-select:none}html[data-netbox-color-mode=dark] .ss-content .ss-list .ss-option *{display:inline-block}html[data-netbox-color-mode=dark] .ss-content .ss-list .ss-option:hover,html[data-netbox-color-mode=dark] .ss-content .ss-list .ss-option.ss-highlighted{color:#fff;background-color:#6ea8fe}html[data-netbox-color-mode=dark] .ss-content .ss-list .ss-option.ss-disabled{cursor:not-allowed;color:#adb5bd;background-color:#fff}html[data-netbox-color-mode=dark] .ss-content .ss-list .ss-option:not(.ss-disabled).ss-option-selected{color:#f8f9fa;background-color:#6ea8fe1a}html[data-netbox-color-mode=dark] .ss-content .ss-list .ss-option.ss-hide{display:none}html[data-netbox-color-mode=dark] .ss-content .ss-list .ss-option .ss-search-highlight{background-color:#ffc107}html[data-netbox-color-mode=dark] .ss-main{color:#f8f9fa}html[data-netbox-color-mode=dark] .ss-main.is-invalid .ss-single-selected,html[data-netbox-color-mode=dark] .ss-main.is-invalid .ss-multi-selected{border-color:#dc3545}html[data-netbox-color-mode=dark] .ss-main.is-valid .ss-single-selected,html[data-netbox-color-mode=dark] .ss-main.is-valid .ss-multi-selected{border-color:#198754}html[data-netbox-color-mode=dark] .ss-main .ss-single-selected,html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected{padding:.375rem .75rem;background-color:#212529;border:1px solid #495057}html[data-netbox-color-mode=dark] .ss-main .ss-single-selected[disabled],html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected[disabled]{color:#adb5bd;background-color:#495057}html[data-netbox-color-mode=dark] .ss-main div.ss-multi-selected .ss-values .ss-disabled,html[data-netbox-color-mode=dark] .ss-main div.ss-single-selected span.placeholder .ss-disabled{color:var(--nbx-select-placeholder-color)}html[data-netbox-color-mode=dark] .ss-main .ss-single-selected span.ss-arrow span.arrow-down,html[data-netbox-color-mode=dark] .ss-main .ss-single-selected span.ss-arrow span.arrow-up{border-color:currentColor;color:#ced4da}html[data-netbox-color-mode=dark] .ss-main .ss-single-selected .placeholder .depth{display:none}html[data-netbox-color-mode=dark] .ss-main .ss-single-selected span.placeholder>*,html[data-netbox-color-mode=dark] .ss-main .ss-single-selected span.placeholder{line-height:1.5}html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected{align-items:center;padding-right:.75rem;padding-left:.75rem}html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-values .ss-disabled{padding:4px 0}html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-values .ss-value{color:var(--nbx-select-value-color);border-radius:.375rem}html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-values .ss-value .depth{display:none}html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-add{margin:0 .75rem}html[data-netbox-color-mode=dark] .ss-main .ss-content{background-color:var(--nbx-select-content-bg);border-bottom-right-radius:.375rem;border-bottom-left-radius:.375rem}html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-list .ss-option.ss-option-selected{color:#fff;background-color:var(--nbx-select-option-selected-bg)}html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-list .ss-option:hover{color:var(--nbx-select-option-hover-color);background-color:var(--nbx-select-option-hover-bg)}html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-list .ss-option:last-child{border-bottom-right-radius:.375rem;border-bottom-left-radius:.375rem}html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-list .ss-option.ss-disabled{background-color:unset}html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-list .ss-option.ss-disabled:hover{color:#adb5bd}html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-list .ss-option .depth{opacity:.3}html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-list::-webkit-scrollbar{right:0;width:4px}html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-list::-webkit-scrollbar:hover{opacity:.8}html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-list::-webkit-scrollbar-track{background:transparent}html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-list::-webkit-scrollbar-thumb{right:0;width:2px;background-color:var(--nbx-sidebar-scroll)}html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-search{padding-right:.5rem}html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-search button{margin-left:.75rem}html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-search input[type=search]{color:#f8f9fa;background-color:#212529;border:1px solid #495057}html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-search input[type=search]:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}html[data-netbox-color-mode=dark] .flatpickr-calendar{color:#fff;background:#343a40;border-radius:.375rem;box-shadow:1px 0 #495057,-1px 0 #495057,0 1px #495057,0 -1px #495057,0 3px 13px #00000014}html[data-netbox-color-mode=dark] .flatpickr-calendar.arrowTop:before,html[data-netbox-color-mode=dark] .flatpickr-calendar.arrowTop:after{border-bottom-color:#343a40}html[data-netbox-color-mode=dark] .flatpickr-calendar span.flatpickr-weekday{color:#dee2e6}html[data-netbox-color-mode=dark] .flatpickr-calendar .numInputWrapper span.arrowUp:after{border-bottom-color:#f8f9fa}html[data-netbox-color-mode=dark] .flatpickr-calendar .numInputWrapper span.arrowDown:after{border-top-color:#f8f9fa}html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-months .flatpickr-month{color:#fff;fill:#fff}html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-months .flatpickr-next-month,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-months .flatpickr-prev-month{color:#fff;fill:#fff}html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-months .flatpickr-next-month:hover svg,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-months .flatpickr-prev-month:hover svg{fill:#ea868f}html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-months .flatpickr-current-month select{background:#343a40}html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day{color:#fff}html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.selected,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.startRange,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.endRange,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.selected.inRange,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.startRange.inRange,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.endRange.inRange,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.selected:focus,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.startRange:focus,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.endRange:focus,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.selected:hover,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.startRange:hover,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.endRange:hover,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.selected.prevMonthDay,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.startRange.prevMonthDay,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.endRange.prevMonthDay,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.selected.nextMonthDay,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.startRange.nextMonthDay,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.endRange.nextMonthDay{color:#000;background:#6ea8fe;border-color:#6ea8fe}html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day:hover{color:#000;background:#adb5bd;border-color:#adb5bd}html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.flatpickr-disabled,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.flatpickr-disabled:hover,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.prevMonthDay,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.nextMonthDay,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.notAllowed,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.notAllowed.prevMonthDay,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.notAllowed.nextMonthDay{color:#adb5bd}html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.flatpickr-disabled:hover,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.flatpickr-disabled:hover:hover,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.prevMonthDay:hover,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.nextMonthDay:hover,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.notAllowed:hover,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.notAllowed.prevMonthDay:hover,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.notAllowed.nextMonthDay:hover{color:#000;background:#adb5bd;border-color:#adb5bd}html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-time input{color:#f8f9fa;background:#343a40}html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-time input:hover,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-time input:active{background:#343a40}html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-time .flatpickr-time-separator{color:#adb5bd}html[data-netbox-color-mode=dark] .flatpickr-calendar.showTimeInput.hasTime .flatpickr-time{border-top:1px solid #495057}html[data-netbox-color-mode=dark] .sidenav{position:fixed;top:0;bottom:0;left:0;z-index:1050;display:block;width:100%;max-width:3rem;padding-top:0;padding-right:0;padding-left:0;background-color:var(--nbx-sidebar-bg);border-right:1px solid #495057;transition:all .1s ease-in-out}@media (max-width: 991.98px){html[data-netbox-color-mode=dark] .sidenav{transform:translate(-3rem)}html[data-netbox-color-mode=dark] .sidenav+.content-container[class]{margin-left:0}html[data-netbox-color-mode=dark] .sidenav .profile-button-container[class]{display:block}}html[data-netbox-color-mode=dark] .sidenav .profile-button-container{display:none;padding:.5rem 1rem}html[data-netbox-color-mode=dark] .sidenav+.content-container{margin-left:3rem;transition:all .1s ease-in-out}html[data-netbox-color-mode=dark] .sidenav .sidenav-brand{margin-right:0;transition:opacity .1s ease-in-out}html[data-netbox-color-mode=dark] .sidenav .sidenav-brand-icon{transition:opacity .1s ease-in-out}html[data-netbox-color-mode=dark] .sidenav .sidenav-inner{padding-right:1.5rem;padding-left:1.5rem}@media (min-width: 768px){html[data-netbox-color-mode=dark] .sidenav .sidenav-inner{padding-right:0;padding-left:0}}html[data-netbox-color-mode=dark] .sidenav .sidenav-brand-img,html[data-netbox-color-mode=dark] .sidenav .sidenav-brand>img{max-width:100%;max-height:calc(16rem - 1rem)}html[data-netbox-color-mode=dark] .sidenav .navbar-heading{padding-top:.5rem;padding-bottom:.5rem;font-size:.75rem;text-transform:uppercase;letter-spacing:.04em}html[data-netbox-color-mode=dark] .sidenav .sidenav-header{position:relative;display:flex;align-items:center;justify-content:space-between;height:78px;padding:1rem;transition:all .1s ease-in-out}html[data-netbox-color-mode=dark] .sidenav .sidenav-toggle{position:absolute;display:inline-block;opacity:0;transition:opacity 10ms ease-in-out;transition-delay:.1s}html[data-netbox-color-mode=dark] .sidenav .sidenav-collapse{display:flex;flex:1;flex-direction:column;align-items:stretch;padding-right:1.5rem;padding-left:1.5rem;margin-right:-1.5rem;margin-left:-1.5rem}html[data-netbox-color-mode=dark] .sidenav .sidenav-collapse>*{min-width:100%}@media (min-width: 768px){html[data-netbox-color-mode=dark] .sidenav .sidenav-collapse{margin-right:0;margin-left:0}}html[data-netbox-color-mode=dark] .sidenav .nav-group-header{padding:.25rem 1rem;margin-top:.5rem;margin-bottom:0}html[data-netbox-color-mode=dark] .sidenav .nav .nav-item{display:flex;align-items:center;justify-content:space-between;width:100%}html[data-netbox-color-mode=dark] .sidenav .nav .nav-item.no-buttons{padding-right:5rem}html[data-netbox-color-mode=dark] .sidenav .collapse .nav .nav-item .nav-link{width:100%;padding:.25rem .25rem .25rem 1rem;margin-top:0;margin-bottom:0;border-top-right-radius:.375rem;border-bottom-right-radius:.375rem}html[data-netbox-color-mode=dark] .sidenav .collapse .nav .nav-item .nav-link .sidenav-mini-icon{width:1rem;text-align:center;transition:all .1s ease-in-out}html[data-netbox-color-mode=dark] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle]{width:unset;height:100%;padding-left:.5rem;font-weight:700;color:var(--nbx-sidenav-parent-color)}html[data-netbox-color-mode=dark] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle].active{color:#000;background:#6397e5}html[data-netbox-color-mode=dark] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle]:after{display:inline-block;margin-left:auto;font-family:"Material Design Icons";font-style:normal;font-weight:700;font-variant:normal;color:#ced4da;text-rendering:auto;-webkit-font-smoothing:antialiased;content:"\f0142";transition:all .1s ease-in-out}html[data-netbox-color-mode=dark] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle][aria-expanded=true].active:after{color:#000}html[data-netbox-color-mode=dark] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle][aria-expanded=true]:after{color:#6ea8fe;transform:rotate(90deg)}html[data-netbox-color-mode=dark] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle] .nav-link-text{padding-left:.25rem;transition:all .1s ease-in-out}html[data-netbox-color-mode=dark] .sidenav .navbar-nav{flex-direction:column;margin-right:-1.5rem;margin-left:-1.5rem}html[data-netbox-color-mode=dark] .sidenav .navbar-nav .nav-item{margin-top:2px}html[data-netbox-color-mode=dark] .sidenav .navbar-nav .nav-item.disabled{cursor:not-allowed;opacity:.8}html[data-netbox-color-mode=dark] .sidenav .navbar-nav .nav-item .nav-link{position:relative;display:flex;align-items:center;width:100%;padding:.5rem 1rem;font-size:.875rem;color:var(--nbx-sidenav-link-color);white-space:nowrap;transition:all .1s ease-in-out}html[data-netbox-color-mode=dark] .sidenav .navbar-nav .nav-item .nav-link.active{background-color:var(--nbx-sidebar-link-active-bg)}html[data-netbox-color-mode=dark] .sidenav .navbar-nav .nav-item .nav-link:hover:not(.active){color:var(--nbx-body-color);background-color:var(--nbx-sidebar-link-hover-bg)}html[data-netbox-color-mode=dark] .sidenav .navbar-nav .nav-item .nav-link>i{min-width:2rem;font-size:calc(45px / 2);text-align:center}html[data-netbox-color-mode=dark] .sidenav .navbar-nav .nav-group-label{display:block;font-size:.75rem;font-weight:700;color:var(--nbx-sidenav-group-color);text-transform:uppercase;white-space:nowrap}html[data-netbox-color-mode=dark] body[data-sidenav-pinned] .sidenav .sidenav-toggle-icon{color:var(--nbx-sidenav-pin-color);transform:rotate(90deg)}@media (min-width: 1200px){html[data-netbox-color-mode=dark] body[data-sidenav-pinned] .sidenav+.content-container{margin-left:16rem}}html[data-netbox-color-mode=dark] .g-sidenav-show:not(.g-sidenav-pinned) .sidenav .sidenav-toggle-icon{transform:rotate(0)}html[data-netbox-color-mode=dark] body[data-sidenav-show] .sidenav,html[data-netbox-color-mode=dark] body[data-sidenav-pinned] .sidenav{max-width:16rem}html[data-netbox-color-mode=dark] body[data-sidenav-show] .sidenav .sidenav-brand,html[data-netbox-color-mode=dark] body[data-sidenav-show] .sidenav .navbar-heading,html[data-netbox-color-mode=dark] body[data-sidenav-pinned] .sidenav .sidenav-brand,html[data-netbox-color-mode=dark] body[data-sidenav-pinned] .sidenav .navbar-heading{display:block}html[data-netbox-color-mode=dark] body[data-sidenav-show] .sidenav .sidenav-brand,html[data-netbox-color-mode=dark] body[data-sidenav-pinned] .sidenav .sidenav-brand{opacity:1;transform:translate(0)}html[data-netbox-color-mode=dark] body[data-sidenav-show] .sidenav .sidenav-brand-icon,html[data-netbox-color-mode=dark] body[data-sidenav-pinned] .sidenav .sidenav-brand-icon{position:absolute;opacity:0}@media (max-width: 991.98px){html[data-netbox-color-mode=dark] body[data-sidenav-show] .sidenav,html[data-netbox-color-mode=dark] body[data-sidenav-pinned] .sidenav{transform:translate(0)}}html[data-netbox-color-mode=dark] body[data-sidenav-hide] .sidenav .sidenav-header,html[data-netbox-color-mode=dark] body[data-sidenav-hidden] .sidenav .sidenav-header{padding:.5rem}html[data-netbox-color-mode=dark] body[data-sidenav-hide] .sidenav .sidenav-brand,html[data-netbox-color-mode=dark] body[data-sidenav-hidden] .sidenav .sidenav-brand{position:absolute;opacity:0}html[data-netbox-color-mode=dark] body[data-sidenav-hide] .sidenav .sidenav-brand-icon,html[data-netbox-color-mode=dark] body[data-sidenav-hidden] .sidenav .sidenav-brand-icon{opacity:1}html[data-netbox-color-mode=dark] body[data-sidenav-hide] .sidenav .sidenav-toggle,html[data-netbox-color-mode=dark] body[data-sidenav-hidden] .sidenav .sidenav-toggle{opacity:0;position:absolute;transition:unset;transition-delay:0ms}html[data-netbox-color-mode=dark] body[data-sidenav-hide] .sidenav .navbar-nav>.nav-item>.nav-link:after,html[data-netbox-color-mode=dark] body[data-sidenav-hidden] .sidenav .navbar-nav>.nav-item>.nav-link:after{content:""}html[data-netbox-color-mode=dark] body[data-sidenav-hide] .sidenav .nav-item .collapse,html[data-netbox-color-mode=dark] body[data-sidenav-hidden] .sidenav .nav-item .collapse{display:none}html[data-netbox-color-mode=dark] body[data-sidenav-hide] .sidenav .nav-link-text,html[data-netbox-color-mode=dark] body[data-sidenav-hidden] .sidenav .nav-link-text{opacity:0}html[data-netbox-color-mode=dark] body[data-sidenav-hide] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle].active,html[data-netbox-color-mode=dark] body[data-sidenav-hidden] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle].active{margin-right:0;margin-left:0;border-radius:unset}html[data-netbox-color-mode=dark] body[data-sidenav-show] .sidenav .sidenav-brand{display:block}html[data-netbox-color-mode=dark] body[data-sidenav-show] .sidenav .nav-item .collapse{height:auto;transition:all .1s ease-in-out}html[data-netbox-color-mode=dark] body[data-sidenav-show] .sidenav .nav-item .nav-link .nav-link-text{opacity:1}html[data-netbox-color-mode=dark] body[data-sidenav-show] .sidenav .nav-item .sidenav-mini-icon{opacity:0}@media (min-width: 992px){html[data-netbox-color-mode=dark] body[data-sidenav-show] .sidenav .sidenav-toggle{position:relative;opacity:1}}html[data-netbox-color-mode=dark] .simplebar-track.simplebar-vertical{right:0;width:6px;background-color:transparent}html[data-netbox-color-mode=dark] .simplebar-track.simplebar-vertical .simplebar-scrollbar{transition:none}html[data-netbox-color-mode=dark] .simplebar-track.simplebar-vertical .simplebar-scrollbar:before{right:0;width:3px;background:var(--nbx-sidebar-scroll);border-radius:.375rem}html[data-netbox-color-mode=dark] .simplebar-track.simplebar-vertical.simplebar-hover .simplebar-scrollbar:before{width:5px}html[data-netbox-color-mode=dark] body{color:var(--nbx-body-color);background-color:var(--nbx-body-bg);font-size:.875rem}html[data-netbox-color-mode=dark] pre{padding:1rem;white-space:pre;background-color:var(--nbx-pre-bg);border:1px solid var(--nbx-pre-border-color);border-radius:.375rem}html[data-netbox-color-mode=dark] small,html[data-netbox-color-mode=dark] .small{font-size:smaller!important}html[data-netbox-color-mode=dark] a[type=button]{-webkit-appearance:unset!important}html[data-netbox-color-mode=dark] *[data-href]{cursor:pointer}html[data-netbox-color-mode=dark] .form-control:not([type=file]){font-size:inherit}html[data-netbox-color-mode=dark] .badge{font-size:.75rem}html[data-netbox-color-mode=dark] .text-xs{font-size:.75rem!important;line-height:1.25!important}html[data-netbox-color-mode=dark] .border-input{border:1px solid #495057!important}html[data-netbox-color-mode=dark] .ws-nowrap{white-space:nowrap!important}html[data-netbox-color-mode=dark] table tr .vertical-align,html[data-netbox-color-mode=dark] table td .vertical-align{vertical-align:middle}@media print{html[data-netbox-color-mode=dark] .noprint{display:none!important;visibility:hidden!important}}html[data-netbox-color-mode=dark] .printonly{display:none!important;visibility:hidden!important}@media print{html[data-netbox-color-mode=dark] .printonly{display:block!important;visibility:visible!important}}html[data-netbox-color-mode=dark] :root{--nbx-sidebar-bg: #e9ecef;--nbx-sidebar-scroll: #adb5bd;--nbx-sidebar-link-hover-bg: rgba(108, 117, 125, .15);--nbx-sidebar-link-active-bg: #cfe2ff;--nbx-sidebar-title-color: #ced4da;--nbx-sidebar-shadow: inset 0px -25px 20px -25px rgba(0, 0, 0, .25);--nbx-breadcrumb-bg: #dee2e6;--nbx-body-bg: #fff;--nbx-body-color: #343a40;--nbx-pre-bg: #f8f9fa;--nbx-pre-border-color: #6c757d;--nbx-change-added: rgba(25, 135, 84, .4);--nbx-change-removed: rgba(220, 53, 69, .4);--nbx-cable-node-bg: #f8f9fa;--nbx-cable-node-border-color: #e9ecef;--nbx-cable-termination-bg: #e9ecef;--nbx-cable-termination-border-color: #dee2e6;--nbx-search-filter-border-left-color: #dee2e6;--nbx-color-mode-toggle-color: #6ea8fe;--nbx-sidenav-link-color: #343a40;--nbx-sidenav-pin-color: #fd7e14;--nbx-sidenav-parent-color: #343a40;--nbx-sidenav-group-color: #343a40}html[data-netbox-color-mode=dark] :root[data-netbox-color-mode=dark]{--nbx-sidebar-bg: #212529;--nbx-sidebar-scroll: #495057;--nbx-sidebar-link-active-bg: rgba(110, 168, 254, .25);--nbx-sidebar-link-hover-bg: rgba(173, 181, 189, .15);--nbx-sidebar-title-color: #6c757d;--nbx-sidebar-shadow: inset 0px -25px 20px -25px rgba(255, 255, 255, .05);--nbx-breadcrumb-bg: #343a40;--nbx-body-bg: #1b1f22;--nbx-body-color: #f8f9fa;--nbx-pre-bg: #495057;--nbx-pre-border-color: #6c757d;--nbx-change-added: rgba(117, 183, 152, .4);--nbx-change-removed: rgba(234, 134, 143, .4);--nbx-cable-node-bg: #495057;--nbx-cable-node-border-color: #6c757d;--nbx-cable-termination-bg: #343a40;--nbx-cable-termination-border-color: #495057;--nbx-search-filter-border-left-color: #6c757d;--nbx-color-mode-toggle-color: #ffda6a;--nbx-sidenav-link-color: #e9ecef;--nbx-sidenav-pin-color: #ffc107;--nbx-sidenav-parent-color: #e9ecef;--nbx-sidenav-group-color: #6c757d}html[data-netbox-color-mode=dark] .bg-primary button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23162233'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-primary{color:#6ea8fe}html[data-netbox-color-mode=dark] .btn.btn-ghost-primary:hover{background-color:#6ea8fe1f}html[data-netbox-color-mode=dark] .alert.alert-primary a:not(.btn),html[data-netbox-color-mode=dark] .table-primary a:not(.btn){font-weight:700;color:#162233}html[data-netbox-color-mode=dark] .alert.alert-primary .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-primary .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-primary a:not(.btn){font-weight:700;color:#162233}html[data-netbox-color-mode=dark] .badge.bg-primary,html[data-netbox-color-mode=dark] .toast.bg-primary,html[data-netbox-color-mode=dark] .toast-header.bg-primary,html[data-netbox-color-mode=dark] .progress-bar.bg-primary{color:#000}html[data-netbox-color-mode=dark] .bg-secondary button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23232426'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-secondary{color:#adb5bd}html[data-netbox-color-mode=dark] .btn.btn-ghost-secondary:hover{background-color:#adb5bd1f}html[data-netbox-color-mode=dark] .alert.alert-secondary a:not(.btn),html[data-netbox-color-mode=dark] .table-secondary a:not(.btn){font-weight:700;color:#232426}html[data-netbox-color-mode=dark] .alert.alert-secondary .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-secondary .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-secondary a:not(.btn){font-weight:700;color:#232426}html[data-netbox-color-mode=dark] .badge.bg-secondary,html[data-netbox-color-mode=dark] .toast.bg-secondary,html[data-netbox-color-mode=dark] .toast-header.bg-secondary,html[data-netbox-color-mode=dark] .progress-bar.bg-secondary{color:#000}html[data-netbox-color-mode=dark] .bg-success button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%2317251e'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-success{color:#75b798}html[data-netbox-color-mode=dark] .btn.btn-ghost-success:hover{background-color:#75b7981f}html[data-netbox-color-mode=dark] .alert.alert-success a:not(.btn),html[data-netbox-color-mode=dark] .table-success a:not(.btn){font-weight:700;color:#17251e}html[data-netbox-color-mode=dark] .alert.alert-success .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-success .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-success a:not(.btn){font-weight:700;color:#17251e}html[data-netbox-color-mode=dark] .badge.bg-success,html[data-netbox-color-mode=dark] .toast.bg-success,html[data-netbox-color-mode=dark] .toast-header.bg-success,html[data-netbox-color-mode=dark] .progress-bar.bg-success{color:#000}html[data-netbox-color-mode=dark] .bg-info button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23162d31'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-info{color:#6edff6}html[data-netbox-color-mode=dark] .btn.btn-ghost-info:hover{background-color:#6edff61f}html[data-netbox-color-mode=dark] .alert.alert-info a:not(.btn),html[data-netbox-color-mode=dark] .table-info a:not(.btn){font-weight:700;color:#162d31}html[data-netbox-color-mode=dark] .alert.alert-info .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-info .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-info a:not(.btn){font-weight:700;color:#162d31}html[data-netbox-color-mode=dark] .badge.bg-info,html[data-netbox-color-mode=dark] .toast.bg-info,html[data-netbox-color-mode=dark] .toast-header.bg-info,html[data-netbox-color-mode=dark] .progress-bar.bg-info{color:#000}html[data-netbox-color-mode=dark] .bg-warning button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23332c15'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-warning{color:#ffda6a}html[data-netbox-color-mode=dark] .btn.btn-ghost-warning:hover{background-color:#ffda6a1f}html[data-netbox-color-mode=dark] .alert.alert-warning a:not(.btn),html[data-netbox-color-mode=dark] .table-warning a:not(.btn){font-weight:700;color:#332c15}html[data-netbox-color-mode=dark] .alert.alert-warning .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-warning .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-warning a:not(.btn){font-weight:700;color:#332c15}html[data-netbox-color-mode=dark] .badge.bg-warning,html[data-netbox-color-mode=dark] .toast.bg-warning,html[data-netbox-color-mode=dark] .toast-header.bg-warning,html[data-netbox-color-mode=dark] .progress-bar.bg-warning{color:#000}html[data-netbox-color-mode=dark] .bg-danger button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%232f1b1d'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-danger{color:#ea868f}html[data-netbox-color-mode=dark] .btn.btn-ghost-danger:hover{background-color:#ea868f1f}html[data-netbox-color-mode=dark] .alert.alert-danger a:not(.btn),html[data-netbox-color-mode=dark] .table-danger a:not(.btn){font-weight:700;color:#2f1b1d}html[data-netbox-color-mode=dark] .alert.alert-danger .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-danger .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-danger a:not(.btn){font-weight:700;color:#2f1b1d}html[data-netbox-color-mode=dark] .badge.bg-danger,html[data-netbox-color-mode=dark] .toast.bg-danger,html[data-netbox-color-mode=dark] .toast-header.bg-danger,html[data-netbox-color-mode=dark] .progress-bar.bg-danger{color:#000}html[data-netbox-color-mode=dark] .bg-light button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%232c2d2e'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-light{color:#dee2e6}html[data-netbox-color-mode=dark] .btn.btn-ghost-light:hover{background-color:#dee2e61f}html[data-netbox-color-mode=dark] .alert.alert-light a:not(.btn),html[data-netbox-color-mode=dark] .table-light a:not(.btn){font-weight:700;color:#2c2d2e}html[data-netbox-color-mode=dark] .alert.alert-light .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-light .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-light a:not(.btn){font-weight:700;color:#2c2d2e}html[data-netbox-color-mode=dark] .badge.bg-light,html[data-netbox-color-mode=dark] .toast.bg-light,html[data-netbox-color-mode=dark] .toast-header.bg-light,html[data-netbox-color-mode=dark] .progress-bar.bg-light{color:#000}html[data-netbox-color-mode=dark] .bg-dark button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23232426'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-dark{color:#adb5bd}html[data-netbox-color-mode=dark] .btn.btn-ghost-dark:hover{background-color:#adb5bd1f}html[data-netbox-color-mode=dark] .alert.alert-dark a:not(.btn),html[data-netbox-color-mode=dark] .table-dark a:not(.btn){font-weight:700;color:#232426}html[data-netbox-color-mode=dark] .alert.alert-dark .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-dark .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-dark a:not(.btn){font-weight:700;color:#232426}html[data-netbox-color-mode=dark] .badge.bg-dark,html[data-netbox-color-mode=dark] .toast.bg-dark,html[data-netbox-color-mode=dark] .toast-header.bg-dark,html[data-netbox-color-mode=dark] .progress-bar.bg-dark{color:#000}html[data-netbox-color-mode=dark] .bg-red button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%232f1b1d'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-red{color:#ea868f}html[data-netbox-color-mode=dark] .btn.btn-ghost-red:hover{background-color:#ea868f1f}html[data-netbox-color-mode=dark] .alert.alert-red a:not(.btn),html[data-netbox-color-mode=dark] .table-red a:not(.btn){font-weight:700;color:#2f1b1d}html[data-netbox-color-mode=dark] .alert.alert-red .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-red .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-red a:not(.btn){font-weight:700;color:#2f1b1d}html[data-netbox-color-mode=dark] .badge.bg-red,html[data-netbox-color-mode=dark] .toast.bg-red,html[data-netbox-color-mode=dark] .toast-header.bg-red,html[data-netbox-color-mode=dark] .progress-bar.bg-red{color:#000}html[data-netbox-color-mode=dark] .bg-yellow button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23332c15'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-yellow{color:#ffda6a}html[data-netbox-color-mode=dark] .btn.btn-ghost-yellow:hover{background-color:#ffda6a1f}html[data-netbox-color-mode=dark] .alert.alert-yellow a:not(.btn),html[data-netbox-color-mode=dark] .table-yellow a:not(.btn){font-weight:700;color:#332c15}html[data-netbox-color-mode=dark] .alert.alert-yellow .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-yellow .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-yellow a:not(.btn){font-weight:700;color:#332c15}html[data-netbox-color-mode=dark] .badge.bg-yellow,html[data-netbox-color-mode=dark] .toast.bg-yellow,html[data-netbox-color-mode=dark] .toast-header.bg-yellow,html[data-netbox-color-mode=dark] .progress-bar.bg-yellow{color:#000}html[data-netbox-color-mode=dark] .bg-green button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%2317251e'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-green{color:#75b798}html[data-netbox-color-mode=dark] .btn.btn-ghost-green:hover{background-color:#75b7981f}html[data-netbox-color-mode=dark] .alert.alert-green a:not(.btn),html[data-netbox-color-mode=dark] .table-green a:not(.btn){font-weight:700;color:#17251e}html[data-netbox-color-mode=dark] .alert.alert-green .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-green .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-green a:not(.btn){font-weight:700;color:#17251e}html[data-netbox-color-mode=dark] .badge.bg-green,html[data-netbox-color-mode=dark] .toast.bg-green,html[data-netbox-color-mode=dark] .toast-header.bg-green,html[data-netbox-color-mode=dark] .progress-bar.bg-green{color:#000}html[data-netbox-color-mode=dark] .bg-blue button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23162233'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-blue{color:#6ea8fe}html[data-netbox-color-mode=dark] .btn.btn-ghost-blue:hover{background-color:#6ea8fe1f}html[data-netbox-color-mode=dark] .alert.alert-blue a:not(.btn),html[data-netbox-color-mode=dark] .table-blue a:not(.btn){font-weight:700;color:#162233}html[data-netbox-color-mode=dark] .alert.alert-blue .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-blue .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-blue a:not(.btn){font-weight:700;color:#162233}html[data-netbox-color-mode=dark] .badge.bg-blue,html[data-netbox-color-mode=dark] .toast.bg-blue,html[data-netbox-color-mode=dark] .toast-header.bg-blue,html[data-netbox-color-mode=dark] .progress-bar.bg-blue{color:#000}html[data-netbox-color-mode=dark] .bg-cyan button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23162d31'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-cyan{color:#6edff6}html[data-netbox-color-mode=dark] .btn.btn-ghost-cyan:hover{background-color:#6edff61f}html[data-netbox-color-mode=dark] .alert.alert-cyan a:not(.btn),html[data-netbox-color-mode=dark] .table-cyan a:not(.btn){font-weight:700;color:#162d31}html[data-netbox-color-mode=dark] .alert.alert-cyan .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-cyan .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-cyan a:not(.btn){font-weight:700;color:#162d31}html[data-netbox-color-mode=dark] .badge.bg-cyan,html[data-netbox-color-mode=dark] .toast.bg-cyan,html[data-netbox-color-mode=dark] .toast-header.bg-cyan,html[data-netbox-color-mode=dark] .progress-bar.bg-cyan{color:#000}html[data-netbox-color-mode=dark] .bg-indigo button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23211631'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-indigo{color:#a370f7}html[data-netbox-color-mode=dark] .btn.btn-ghost-indigo:hover{background-color:#a370f71f}html[data-netbox-color-mode=dark] .alert.alert-indigo a:not(.btn),html[data-netbox-color-mode=dark] .table-indigo a:not(.btn){font-weight:700;color:#211631}html[data-netbox-color-mode=dark] .alert.alert-indigo .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-indigo .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-indigo a:not(.btn){font-weight:700;color:#211631}html[data-netbox-color-mode=dark] .badge.bg-indigo,html[data-netbox-color-mode=dark] .toast.bg-indigo,html[data-netbox-color-mode=dark] .toast-header.bg-indigo,html[data-netbox-color-mode=dark] .progress-bar.bg-indigo{color:#000}html[data-netbox-color-mode=dark] .bg-purple button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23221c2c'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-purple{color:#a98eda}html[data-netbox-color-mode=dark] .btn.btn-ghost-purple:hover{background-color:#a98eda1f}html[data-netbox-color-mode=dark] .alert.alert-purple a:not(.btn),html[data-netbox-color-mode=dark] .table-purple a:not(.btn){font-weight:700;color:#221c2c}html[data-netbox-color-mode=dark] .alert.alert-purple .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-purple .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-purple a:not(.btn){font-weight:700;color:#221c2c}html[data-netbox-color-mode=dark] .badge.bg-purple,html[data-netbox-color-mode=dark] .toast.bg-purple,html[data-netbox-color-mode=dark] .toast-header.bg-purple,html[data-netbox-color-mode=dark] .progress-bar.bg-purple{color:#000}html[data-netbox-color-mode=dark] .bg-pink button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%232e1b24'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-pink{color:#e685b5}html[data-netbox-color-mode=dark] .btn.btn-ghost-pink:hover{background-color:#e685b51f}html[data-netbox-color-mode=dark] .alert.alert-pink a:not(.btn),html[data-netbox-color-mode=dark] .table-pink a:not(.btn){font-weight:700;color:#2e1b24}html[data-netbox-color-mode=dark] .alert.alert-pink .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-pink .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-pink a:not(.btn){font-weight:700;color:#2e1b24}html[data-netbox-color-mode=dark] .badge.bg-pink,html[data-netbox-color-mode=dark] .toast.bg-pink,html[data-netbox-color-mode=dark] .toast-header.bg-pink,html[data-netbox-color-mode=dark] .progress-bar.bg-pink{color:#000}html[data-netbox-color-mode=dark] .bg-darker button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23d1d2d3'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-darker{color:#1b1f22}html[data-netbox-color-mode=dark] .btn.btn-ghost-darker:hover{background-color:#1b1f221f}html[data-netbox-color-mode=dark] .alert.alert-darker a:not(.btn),html[data-netbox-color-mode=dark] .table-darker a:not(.btn){font-weight:700;color:#d1d2d3}html[data-netbox-color-mode=dark] .alert.alert-darker .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-darker .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-darker a:not(.btn){font-weight:700;color:#d1d2d3}html[data-netbox-color-mode=dark] .badge.bg-darker,html[data-netbox-color-mode=dark] .toast.bg-darker,html[data-netbox-color-mode=dark] .toast-header.bg-darker,html[data-netbox-color-mode=dark] .progress-bar.bg-darker{color:#fff}html[data-netbox-color-mode=dark] .bg-darkest button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23d1d1d2'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-darkest{color:#171b1d}html[data-netbox-color-mode=dark] .btn.btn-ghost-darkest:hover{background-color:#171b1d1f}html[data-netbox-color-mode=dark] .alert.alert-darkest a:not(.btn),html[data-netbox-color-mode=dark] .table-darkest a:not(.btn){font-weight:700;color:#d1d1d2}html[data-netbox-color-mode=dark] .alert.alert-darkest .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-darkest .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-darkest a:not(.btn){font-weight:700;color:#d1d1d2}html[data-netbox-color-mode=dark] .badge.bg-darkest,html[data-netbox-color-mode=dark] .toast.bg-darkest,html[data-netbox-color-mode=dark] .toast-header.bg-darkest,html[data-netbox-color-mode=dark] .progress-bar.bg-darkest{color:#fff}html[data-netbox-color-mode=dark] .bg-gray button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23292a2c'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-gray{color:#ced4da}html[data-netbox-color-mode=dark] .btn.btn-ghost-gray:hover{background-color:#ced4da1f}html[data-netbox-color-mode=dark] .alert.alert-gray a:not(.btn),html[data-netbox-color-mode=dark] .table-gray a:not(.btn){font-weight:700;color:#292a2c}html[data-netbox-color-mode=dark] .alert.alert-gray .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-gray .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-gray a:not(.btn){font-weight:700;color:#292a2c}html[data-netbox-color-mode=dark] .badge.bg-gray,html[data-netbox-color-mode=dark] .toast.bg-gray,html[data-netbox-color-mode=dark] .toast-header.bg-gray,html[data-netbox-color-mode=dark] .progress-bar.bg-gray{color:#000}html[data-netbox-color-mode=dark] .bg-gray-100 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23323232'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-gray-100{color:#f8f9fa}html[data-netbox-color-mode=dark] .btn.btn-ghost-gray-100:hover{background-color:#f8f9fa1f}html[data-netbox-color-mode=dark] .alert.alert-gray-100 a:not(.btn),html[data-netbox-color-mode=dark] .table-gray-100 a:not(.btn){font-weight:700;color:#323232}html[data-netbox-color-mode=dark] .alert.alert-gray-100 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-gray-100 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-gray-100 a:not(.btn){font-weight:700;color:#323232}html[data-netbox-color-mode=dark] .badge.bg-gray-100,html[data-netbox-color-mode=dark] .toast.bg-gray-100,html[data-netbox-color-mode=dark] .toast-header.bg-gray-100,html[data-netbox-color-mode=dark] .progress-bar.bg-gray-100{color:#000}html[data-netbox-color-mode=dark] .bg-gray-200 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%232f2f30'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-gray-200{color:#e9ecef}html[data-netbox-color-mode=dark] .btn.btn-ghost-gray-200:hover{background-color:#e9ecef1f}html[data-netbox-color-mode=dark] .alert.alert-gray-200 a:not(.btn),html[data-netbox-color-mode=dark] .table-gray-200 a:not(.btn){font-weight:700;color:#2f2f30}html[data-netbox-color-mode=dark] .alert.alert-gray-200 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-gray-200 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-gray-200 a:not(.btn){font-weight:700;color:#2f2f30}html[data-netbox-color-mode=dark] .badge.bg-gray-200,html[data-netbox-color-mode=dark] .toast.bg-gray-200,html[data-netbox-color-mode=dark] .toast-header.bg-gray-200,html[data-netbox-color-mode=dark] .progress-bar.bg-gray-200{color:#000}html[data-netbox-color-mode=dark] .bg-gray-300 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%232c2d2e'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-gray-300{color:#dee2e6}html[data-netbox-color-mode=dark] .btn.btn-ghost-gray-300:hover{background-color:#dee2e61f}html[data-netbox-color-mode=dark] .alert.alert-gray-300 a:not(.btn),html[data-netbox-color-mode=dark] .table-gray-300 a:not(.btn){font-weight:700;color:#2c2d2e}html[data-netbox-color-mode=dark] .alert.alert-gray-300 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-gray-300 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-gray-300 a:not(.btn){font-weight:700;color:#2c2d2e}html[data-netbox-color-mode=dark] .badge.bg-gray-300,html[data-netbox-color-mode=dark] .toast.bg-gray-300,html[data-netbox-color-mode=dark] .toast-header.bg-gray-300,html[data-netbox-color-mode=dark] .progress-bar.bg-gray-300{color:#000}html[data-netbox-color-mode=dark] .bg-gray-400 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23292a2c'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-gray-400{color:#ced4da}html[data-netbox-color-mode=dark] .btn.btn-ghost-gray-400:hover{background-color:#ced4da1f}html[data-netbox-color-mode=dark] .alert.alert-gray-400 a:not(.btn),html[data-netbox-color-mode=dark] .table-gray-400 a:not(.btn){font-weight:700;color:#292a2c}html[data-netbox-color-mode=dark] .alert.alert-gray-400 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-gray-400 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-gray-400 a:not(.btn){font-weight:700;color:#292a2c}html[data-netbox-color-mode=dark] .badge.bg-gray-400,html[data-netbox-color-mode=dark] .toast.bg-gray-400,html[data-netbox-color-mode=dark] .toast-header.bg-gray-400,html[data-netbox-color-mode=dark] .progress-bar.bg-gray-400{color:#000}html[data-netbox-color-mode=dark] .bg-gray-500 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23232426'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-gray-500{color:#adb5bd}html[data-netbox-color-mode=dark] .btn.btn-ghost-gray-500:hover{background-color:#adb5bd1f}html[data-netbox-color-mode=dark] .alert.alert-gray-500 a:not(.btn),html[data-netbox-color-mode=dark] .table-gray-500 a:not(.btn){font-weight:700;color:#232426}html[data-netbox-color-mode=dark] .alert.alert-gray-500 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-gray-500 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-gray-500 a:not(.btn){font-weight:700;color:#232426}html[data-netbox-color-mode=dark] .badge.bg-gray-500,html[data-netbox-color-mode=dark] .toast.bg-gray-500,html[data-netbox-color-mode=dark] .toast-header.bg-gray-500,html[data-netbox-color-mode=dark] .progress-bar.bg-gray-500{color:#000}html[data-netbox-color-mode=dark] .bg-gray-600 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23161719'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-gray-600{color:#6c757d}html[data-netbox-color-mode=dark] .btn.btn-ghost-gray-600:hover{background-color:#6c757d1f}html[data-netbox-color-mode=dark] .alert.alert-gray-600 a:not(.btn),html[data-netbox-color-mode=dark] .table-gray-600 a:not(.btn){font-weight:700;color:#161719}html[data-netbox-color-mode=dark] .alert.alert-gray-600 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-gray-600 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-gray-600 a:not(.btn){font-weight:700;color:#e2e3e5}html[data-netbox-color-mode=dark] .badge.bg-gray-600,html[data-netbox-color-mode=dark] .toast.bg-gray-600,html[data-netbox-color-mode=dark] .toast-header.bg-gray-600,html[data-netbox-color-mode=dark] .progress-bar.bg-gray-600{color:#fff}html[data-netbox-color-mode=dark] .bg-gray-700 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23dbdcdd'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-gray-700{color:#495057}html[data-netbox-color-mode=dark] .btn.btn-ghost-gray-700:hover{background-color:#4950571f}html[data-netbox-color-mode=dark] .alert.alert-gray-700 a:not(.btn),html[data-netbox-color-mode=dark] .table-gray-700 a:not(.btn){font-weight:700;color:#dbdcdd}html[data-netbox-color-mode=dark] .alert.alert-gray-700 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-gray-700 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-gray-700 a:not(.btn){font-weight:700;color:#dbdcdd}html[data-netbox-color-mode=dark] .badge.bg-gray-700,html[data-netbox-color-mode=dark] .toast.bg-gray-700,html[data-netbox-color-mode=dark] .toast-header.bg-gray-700,html[data-netbox-color-mode=dark] .progress-bar.bg-gray-700{color:#fff}html[data-netbox-color-mode=dark] .bg-gray-800 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23d6d8d9'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-gray-800{color:#343a40}html[data-netbox-color-mode=dark] .btn.btn-ghost-gray-800:hover{background-color:#343a401f}html[data-netbox-color-mode=dark] .alert.alert-gray-800 a:not(.btn),html[data-netbox-color-mode=dark] .table-gray-800 a:not(.btn){font-weight:700;color:#d6d8d9}html[data-netbox-color-mode=dark] .alert.alert-gray-800 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-gray-800 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-gray-800 a:not(.btn){font-weight:700;color:#d6d8d9}html[data-netbox-color-mode=dark] .badge.bg-gray-800,html[data-netbox-color-mode=dark] .toast.bg-gray-800,html[data-netbox-color-mode=dark] .toast-header.bg-gray-800,html[data-netbox-color-mode=dark] .progress-bar.bg-gray-800{color:#fff}html[data-netbox-color-mode=dark] .bg-gray-900 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23d3d3d4'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-gray-900{color:#212529}html[data-netbox-color-mode=dark] .btn.btn-ghost-gray-900:hover{background-color:#2125291f}html[data-netbox-color-mode=dark] .alert.alert-gray-900 a:not(.btn),html[data-netbox-color-mode=dark] .table-gray-900 a:not(.btn){font-weight:700;color:#d3d3d4}html[data-netbox-color-mode=dark] .alert.alert-gray-900 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-gray-900 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-gray-900 a:not(.btn){font-weight:700;color:#d3d3d4}html[data-netbox-color-mode=dark] .badge.bg-gray-900,html[data-netbox-color-mode=dark] .toast.bg-gray-900,html[data-netbox-color-mode=dark] .toast-header.bg-gray-900,html[data-netbox-color-mode=dark] .progress-bar.bg-gray-900{color:#fff}html[data-netbox-color-mode=dark] .bg-red-100 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23322b2c'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-red-100{color:#f8d7da}html[data-netbox-color-mode=dark] .btn.btn-ghost-red-100:hover{background-color:#f8d7da1f}html[data-netbox-color-mode=dark] .alert.alert-red-100 a:not(.btn),html[data-netbox-color-mode=dark] .table-red-100 a:not(.btn){font-weight:700;color:#322b2c}html[data-netbox-color-mode=dark] .alert.alert-red-100 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-red-100 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-red-100 a:not(.btn){font-weight:700;color:#322b2c}html[data-netbox-color-mode=dark] .badge.bg-red-100,html[data-netbox-color-mode=dark] .toast.bg-red-100,html[data-netbox-color-mode=dark] .toast-header.bg-red-100,html[data-netbox-color-mode=dark] .progress-bar.bg-red-100{color:#000}html[data-netbox-color-mode=dark] .bg-red-200 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23302324'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-red-200{color:#f1aeb5}html[data-netbox-color-mode=dark] .btn.btn-ghost-red-200:hover{background-color:#f1aeb51f}html[data-netbox-color-mode=dark] .alert.alert-red-200 a:not(.btn),html[data-netbox-color-mode=dark] .table-red-200 a:not(.btn){font-weight:700;color:#302324}html[data-netbox-color-mode=dark] .alert.alert-red-200 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-red-200 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-red-200 a:not(.btn){font-weight:700;color:#302324}html[data-netbox-color-mode=dark] .badge.bg-red-200,html[data-netbox-color-mode=dark] .toast.bg-red-200,html[data-netbox-color-mode=dark] .toast-header.bg-red-200,html[data-netbox-color-mode=dark] .progress-bar.bg-red-200{color:#000}html[data-netbox-color-mode=dark] .bg-red-300 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%232f1b1d'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-red-300{color:#ea868f}html[data-netbox-color-mode=dark] .btn.btn-ghost-red-300:hover{background-color:#ea868f1f}html[data-netbox-color-mode=dark] .alert.alert-red-300 a:not(.btn),html[data-netbox-color-mode=dark] .table-red-300 a:not(.btn){font-weight:700;color:#2f1b1d}html[data-netbox-color-mode=dark] .alert.alert-red-300 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-red-300 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-red-300 a:not(.btn){font-weight:700;color:#2f1b1d}html[data-netbox-color-mode=dark] .badge.bg-red-300,html[data-netbox-color-mode=dark] .toast.bg-red-300,html[data-netbox-color-mode=dark] .toast-header.bg-red-300,html[data-netbox-color-mode=dark] .progress-bar.bg-red-300{color:#000}html[data-netbox-color-mode=dark] .bg-red-400 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%232d1315'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-red-400{color:#e35d6a}html[data-netbox-color-mode=dark] .btn.btn-ghost-red-400:hover{background-color:#e35d6a1f}html[data-netbox-color-mode=dark] .alert.alert-red-400 a:not(.btn),html[data-netbox-color-mode=dark] .table-red-400 a:not(.btn){font-weight:700;color:#2d1315}html[data-netbox-color-mode=dark] .alert.alert-red-400 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-red-400 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-red-400 a:not(.btn){font-weight:700;color:#2d1315}html[data-netbox-color-mode=dark] .badge.bg-red-400,html[data-netbox-color-mode=dark] .toast.bg-red-400,html[data-netbox-color-mode=dark] .toast-header.bg-red-400,html[data-netbox-color-mode=dark] .progress-bar.bg-red-400{color:#000}html[data-netbox-color-mode=dark] .bg-red-500 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%232c0b0e'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-red-500{color:#dc3545}html[data-netbox-color-mode=dark] .btn.btn-ghost-red-500:hover{background-color:#dc35451f}html[data-netbox-color-mode=dark] .alert.alert-red-500 a:not(.btn),html[data-netbox-color-mode=dark] .table-red-500 a:not(.btn){font-weight:700;color:#2c0b0e}html[data-netbox-color-mode=dark] .alert.alert-red-500 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-red-500 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-red-500 a:not(.btn){font-weight:700;color:#f8d7da}html[data-netbox-color-mode=dark] .badge.bg-red-500,html[data-netbox-color-mode=dark] .toast.bg-red-500,html[data-netbox-color-mode=dark] .toast-header.bg-red-500,html[data-netbox-color-mode=dark] .progress-bar.bg-red-500{color:#fff}html[data-netbox-color-mode=dark] .bg-red-600 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23efd4d7'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-red-600{color:#b02a37}html[data-netbox-color-mode=dark] .btn.btn-ghost-red-600:hover{background-color:#b02a371f}html[data-netbox-color-mode=dark] .alert.alert-red-600 a:not(.btn),html[data-netbox-color-mode=dark] .table-red-600 a:not(.btn){font-weight:700;color:#efd4d7}html[data-netbox-color-mode=dark] .alert.alert-red-600 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-red-600 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-red-600 a:not(.btn){font-weight:700;color:#efd4d7}html[data-netbox-color-mode=dark] .badge.bg-red-600,html[data-netbox-color-mode=dark] .toast.bg-red-600,html[data-netbox-color-mode=dark] .toast-header.bg-red-600,html[data-netbox-color-mode=dark] .progress-bar.bg-red-600{color:#fff}html[data-netbox-color-mode=dark] .bg-red-700 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23e6d2d4'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-red-700{color:#842029}html[data-netbox-color-mode=dark] .btn.btn-ghost-red-700:hover{background-color:#8420291f}html[data-netbox-color-mode=dark] .alert.alert-red-700 a:not(.btn),html[data-netbox-color-mode=dark] .table-red-700 a:not(.btn){font-weight:700;color:#e6d2d4}html[data-netbox-color-mode=dark] .alert.alert-red-700 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-red-700 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-red-700 a:not(.btn){font-weight:700;color:#e6d2d4}html[data-netbox-color-mode=dark] .badge.bg-red-700,html[data-netbox-color-mode=dark] .toast.bg-red-700,html[data-netbox-color-mode=dark] .toast-header.bg-red-700,html[data-netbox-color-mode=dark] .progress-bar.bg-red-700{color:#fff}html[data-netbox-color-mode=dark] .bg-red-800 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23ded0d2'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-red-800{color:#58151c}html[data-netbox-color-mode=dark] .btn.btn-ghost-red-800:hover{background-color:#58151c1f}html[data-netbox-color-mode=dark] .alert.alert-red-800 a:not(.btn),html[data-netbox-color-mode=dark] .table-red-800 a:not(.btn){font-weight:700;color:#ded0d2}html[data-netbox-color-mode=dark] .alert.alert-red-800 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-red-800 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-red-800 a:not(.btn){font-weight:700;color:#ded0d2}html[data-netbox-color-mode=dark] .badge.bg-red-800,html[data-netbox-color-mode=dark] .toast.bg-red-800,html[data-netbox-color-mode=dark] .toast-header.bg-red-800,html[data-netbox-color-mode=dark] .progress-bar.bg-red-800{color:#fff}html[data-netbox-color-mode=dark] .bg-red-900 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23d5cecf'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-red-900{color:#2c0b0e}html[data-netbox-color-mode=dark] .btn.btn-ghost-red-900:hover{background-color:#2c0b0e1f}html[data-netbox-color-mode=dark] .alert.alert-red-900 a:not(.btn),html[data-netbox-color-mode=dark] .table-red-900 a:not(.btn){font-weight:700;color:#d5cecf}html[data-netbox-color-mode=dark] .alert.alert-red-900 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-red-900 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-red-900 a:not(.btn){font-weight:700;color:#d5cecf}html[data-netbox-color-mode=dark] .badge.bg-red-900,html[data-netbox-color-mode=dark] .toast.bg-red-900,html[data-netbox-color-mode=dark] .toast-header.bg-red-900,html[data-netbox-color-mode=dark] .progress-bar.bg-red-900{color:#fff}html[data-netbox-color-mode=dark] .bg-yellow-100 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23333129'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-yellow-100{color:#fff3cd}html[data-netbox-color-mode=dark] .btn.btn-ghost-yellow-100:hover{background-color:#fff3cd1f}html[data-netbox-color-mode=dark] .alert.alert-yellow-100 a:not(.btn),html[data-netbox-color-mode=dark] .table-yellow-100 a:not(.btn){font-weight:700;color:#333129}html[data-netbox-color-mode=dark] .alert.alert-yellow-100 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-yellow-100 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-yellow-100 a:not(.btn){font-weight:700;color:#333129}html[data-netbox-color-mode=dark] .badge.bg-yellow-100,html[data-netbox-color-mode=dark] .toast.bg-yellow-100,html[data-netbox-color-mode=dark] .toast-header.bg-yellow-100,html[data-netbox-color-mode=dark] .progress-bar.bg-yellow-100{color:#000}html[data-netbox-color-mode=dark] .bg-yellow-200 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23332e1f'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-yellow-200{color:#ffe69c}html[data-netbox-color-mode=dark] .btn.btn-ghost-yellow-200:hover{background-color:#ffe69c1f}html[data-netbox-color-mode=dark] .alert.alert-yellow-200 a:not(.btn),html[data-netbox-color-mode=dark] .table-yellow-200 a:not(.btn){font-weight:700;color:#332e1f}html[data-netbox-color-mode=dark] .alert.alert-yellow-200 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-yellow-200 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-yellow-200 a:not(.btn){font-weight:700;color:#332e1f}html[data-netbox-color-mode=dark] .badge.bg-yellow-200,html[data-netbox-color-mode=dark] .toast.bg-yellow-200,html[data-netbox-color-mode=dark] .toast-header.bg-yellow-200,html[data-netbox-color-mode=dark] .progress-bar.bg-yellow-200{color:#000}html[data-netbox-color-mode=dark] .bg-yellow-300 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23332c15'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-yellow-300{color:#ffda6a}html[data-netbox-color-mode=dark] .btn.btn-ghost-yellow-300:hover{background-color:#ffda6a1f}html[data-netbox-color-mode=dark] .alert.alert-yellow-300 a:not(.btn),html[data-netbox-color-mode=dark] .table-yellow-300 a:not(.btn){font-weight:700;color:#332c15}html[data-netbox-color-mode=dark] .alert.alert-yellow-300 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-yellow-300 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-yellow-300 a:not(.btn){font-weight:700;color:#332c15}html[data-netbox-color-mode=dark] .badge.bg-yellow-300,html[data-netbox-color-mode=dark] .toast.bg-yellow-300,html[data-netbox-color-mode=dark] .toast-header.bg-yellow-300,html[data-netbox-color-mode=dark] .progress-bar.bg-yellow-300{color:#000}html[data-netbox-color-mode=dark] .bg-yellow-400 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%2333290b'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-yellow-400{color:#ffcd39}html[data-netbox-color-mode=dark] .btn.btn-ghost-yellow-400:hover{background-color:#ffcd391f}html[data-netbox-color-mode=dark] .alert.alert-yellow-400 a:not(.btn),html[data-netbox-color-mode=dark] .table-yellow-400 a:not(.btn){font-weight:700;color:#33290b}html[data-netbox-color-mode=dark] .alert.alert-yellow-400 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-yellow-400 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-yellow-400 a:not(.btn){font-weight:700;color:#33290b}html[data-netbox-color-mode=dark] .badge.bg-yellow-400,html[data-netbox-color-mode=dark] .toast.bg-yellow-400,html[data-netbox-color-mode=dark] .toast-header.bg-yellow-400,html[data-netbox-color-mode=dark] .progress-bar.bg-yellow-400{color:#000}html[data-netbox-color-mode=dark] .bg-yellow-500 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23332701'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-yellow-500{color:#ffc107}html[data-netbox-color-mode=dark] .btn.btn-ghost-yellow-500:hover{background-color:#ffc1071f}html[data-netbox-color-mode=dark] .alert.alert-yellow-500 a:not(.btn),html[data-netbox-color-mode=dark] .table-yellow-500 a:not(.btn){font-weight:700;color:#332701}html[data-netbox-color-mode=dark] .alert.alert-yellow-500 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-yellow-500 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-yellow-500 a:not(.btn){font-weight:700;color:#332701}html[data-netbox-color-mode=dark] .badge.bg-yellow-500,html[data-netbox-color-mode=dark] .toast.bg-yellow-500,html[data-netbox-color-mode=dark] .toast-header.bg-yellow-500,html[data-netbox-color-mode=dark] .progress-bar.bg-yellow-500{color:#000}html[data-netbox-color-mode=dark] .bg-yellow-600 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23291f01'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-yellow-600{color:#cc9a06}html[data-netbox-color-mode=dark] .btn.btn-ghost-yellow-600:hover{background-color:#cc9a061f}html[data-netbox-color-mode=dark] .alert.alert-yellow-600 a:not(.btn),html[data-netbox-color-mode=dark] .table-yellow-600 a:not(.btn){font-weight:700;color:#291f01}html[data-netbox-color-mode=dark] .alert.alert-yellow-600 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-yellow-600 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-yellow-600 a:not(.btn){font-weight:700;color:#291f01}html[data-netbox-color-mode=dark] .badge.bg-yellow-600,html[data-netbox-color-mode=dark] .toast.bg-yellow-600,html[data-netbox-color-mode=dark] .toast-header.bg-yellow-600,html[data-netbox-color-mode=dark] .progress-bar.bg-yellow-600{color:#000}html[data-netbox-color-mode=dark] .bg-yellow-700 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%231f1701'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-yellow-700{color:#997404}html[data-netbox-color-mode=dark] .btn.btn-ghost-yellow-700:hover{background-color:#9974041f}html[data-netbox-color-mode=dark] .alert.alert-yellow-700 a:not(.btn),html[data-netbox-color-mode=dark] .table-yellow-700 a:not(.btn){font-weight:700;color:#1f1701}html[data-netbox-color-mode=dark] .alert.alert-yellow-700 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-yellow-700 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-yellow-700 a:not(.btn){font-weight:700;color:#1f1701}html[data-netbox-color-mode=dark] .badge.bg-yellow-700,html[data-netbox-color-mode=dark] .toast.bg-yellow-700,html[data-netbox-color-mode=dark] .toast-header.bg-yellow-700,html[data-netbox-color-mode=dark] .progress-bar.bg-yellow-700{color:#000}html[data-netbox-color-mode=dark] .bg-yellow-800 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23e0dbcd'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-yellow-800{color:#664d03}html[data-netbox-color-mode=dark] .btn.btn-ghost-yellow-800:hover{background-color:#664d031f}html[data-netbox-color-mode=dark] .alert.alert-yellow-800 a:not(.btn),html[data-netbox-color-mode=dark] .table-yellow-800 a:not(.btn){font-weight:700;color:#e0dbcd}html[data-netbox-color-mode=dark] .alert.alert-yellow-800 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-yellow-800 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-yellow-800 a:not(.btn){font-weight:700;color:#e0dbcd}html[data-netbox-color-mode=dark] .badge.bg-yellow-800,html[data-netbox-color-mode=dark] .toast.bg-yellow-800,html[data-netbox-color-mode=dark] .toast-header.bg-yellow-800,html[data-netbox-color-mode=dark] .progress-bar.bg-yellow-800{color:#fff}html[data-netbox-color-mode=dark] .bg-yellow-900 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23d6d4cc'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-yellow-900{color:#332701}html[data-netbox-color-mode=dark] .btn.btn-ghost-yellow-900:hover{background-color:#3327011f}html[data-netbox-color-mode=dark] .alert.alert-yellow-900 a:not(.btn),html[data-netbox-color-mode=dark] .table-yellow-900 a:not(.btn){font-weight:700;color:#d6d4cc}html[data-netbox-color-mode=dark] .alert.alert-yellow-900 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-yellow-900 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-yellow-900 a:not(.btn){font-weight:700;color:#d6d4cc}html[data-netbox-color-mode=dark] .badge.bg-yellow-900,html[data-netbox-color-mode=dark] .toast.bg-yellow-900,html[data-netbox-color-mode=dark] .toast-header.bg-yellow-900,html[data-netbox-color-mode=dark] .progress-bar.bg-yellow-900{color:#fff}html[data-netbox-color-mode=dark] .bg-green-100 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%232a2e2c'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-green-100{color:#d1e7dd}html[data-netbox-color-mode=dark] .btn.btn-ghost-green-100:hover{background-color:#d1e7dd1f}html[data-netbox-color-mode=dark] .alert.alert-green-100 a:not(.btn),html[data-netbox-color-mode=dark] .table-green-100 a:not(.btn){font-weight:700;color:#2a2e2c}html[data-netbox-color-mode=dark] .alert.alert-green-100 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-green-100 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-green-100 a:not(.btn){font-weight:700;color:#2a2e2c}html[data-netbox-color-mode=dark] .badge.bg-green-100,html[data-netbox-color-mode=dark] .toast.bg-green-100,html[data-netbox-color-mode=dark] .toast-header.bg-green-100,html[data-netbox-color-mode=dark] .progress-bar.bg-green-100{color:#000}html[data-netbox-color-mode=dark] .bg-green-200 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23212925'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-green-200{color:#a3cfbb}html[data-netbox-color-mode=dark] .btn.btn-ghost-green-200:hover{background-color:#a3cfbb1f}html[data-netbox-color-mode=dark] .alert.alert-green-200 a:not(.btn),html[data-netbox-color-mode=dark] .table-green-200 a:not(.btn){font-weight:700;color:#212925}html[data-netbox-color-mode=dark] .alert.alert-green-200 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-green-200 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-green-200 a:not(.btn){font-weight:700;color:#212925}html[data-netbox-color-mode=dark] .badge.bg-green-200,html[data-netbox-color-mode=dark] .toast.bg-green-200,html[data-netbox-color-mode=dark] .toast-header.bg-green-200,html[data-netbox-color-mode=dark] .progress-bar.bg-green-200{color:#000}html[data-netbox-color-mode=dark] .bg-green-300 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%2317251e'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-green-300{color:#75b798}html[data-netbox-color-mode=dark] .btn.btn-ghost-green-300:hover{background-color:#75b7981f}html[data-netbox-color-mode=dark] .alert.alert-green-300 a:not(.btn),html[data-netbox-color-mode=dark] .table-green-300 a:not(.btn){font-weight:700;color:#17251e}html[data-netbox-color-mode=dark] .alert.alert-green-300 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-green-300 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-green-300 a:not(.btn){font-weight:700;color:#17251e}html[data-netbox-color-mode=dark] .badge.bg-green-300,html[data-netbox-color-mode=dark] .toast.bg-green-300,html[data-netbox-color-mode=dark] .toast-header.bg-green-300,html[data-netbox-color-mode=dark] .progress-bar.bg-green-300{color:#000}html[data-netbox-color-mode=dark] .bg-green-400 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230e2018'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-green-400{color:#479f76}html[data-netbox-color-mode=dark] .btn.btn-ghost-green-400:hover{background-color:#479f761f}html[data-netbox-color-mode=dark] .alert.alert-green-400 a:not(.btn),html[data-netbox-color-mode=dark] .table-green-400 a:not(.btn){font-weight:700;color:#0e2018}html[data-netbox-color-mode=dark] .alert.alert-green-400 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-green-400 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-green-400 a:not(.btn){font-weight:700;color:#0e2018}html[data-netbox-color-mode=dark] .badge.bg-green-400,html[data-netbox-color-mode=dark] .toast.bg-green-400,html[data-netbox-color-mode=dark] .toast-header.bg-green-400,html[data-netbox-color-mode=dark] .progress-bar.bg-green-400{color:#000}html[data-netbox-color-mode=dark] .bg-green-500 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23051b11'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-green-500{color:#198754}html[data-netbox-color-mode=dark] .btn.btn-ghost-green-500:hover{background-color:#1987541f}html[data-netbox-color-mode=dark] .alert.alert-green-500 a:not(.btn),html[data-netbox-color-mode=dark] .table-green-500 a:not(.btn){font-weight:700;color:#051b11}html[data-netbox-color-mode=dark] .alert.alert-green-500 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-green-500 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-green-500 a:not(.btn){font-weight:700;color:#d1e7dd}html[data-netbox-color-mode=dark] .badge.bg-green-500,html[data-netbox-color-mode=dark] .toast.bg-green-500,html[data-netbox-color-mode=dark] .toast-header.bg-green-500,html[data-netbox-color-mode=dark] .progress-bar.bg-green-500{color:#fff}html[data-netbox-color-mode=dark] .bg-green-600 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23d0e2d9'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-green-600{color:#146c43}html[data-netbox-color-mode=dark] .btn.btn-ghost-green-600:hover{background-color:#146c431f}html[data-netbox-color-mode=dark] .alert.alert-green-600 a:not(.btn),html[data-netbox-color-mode=dark] .table-green-600 a:not(.btn){font-weight:700;color:#d0e2d9}html[data-netbox-color-mode=dark] .alert.alert-green-600 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-green-600 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-green-600 a:not(.btn){font-weight:700;color:#d0e2d9}html[data-netbox-color-mode=dark] .badge.bg-green-600,html[data-netbox-color-mode=dark] .toast.bg-green-600,html[data-netbox-color-mode=dark] .toast-header.bg-green-600,html[data-netbox-color-mode=dark] .progress-bar.bg-green-600{color:#fff}html[data-netbox-color-mode=dark] .bg-green-700 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23cfdcd6'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-green-700{color:#0f5132}html[data-netbox-color-mode=dark] .btn.btn-ghost-green-700:hover{background-color:#0f51321f}html[data-netbox-color-mode=dark] .alert.alert-green-700 a:not(.btn),html[data-netbox-color-mode=dark] .table-green-700 a:not(.btn){font-weight:700;color:#cfdcd6}html[data-netbox-color-mode=dark] .alert.alert-green-700 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-green-700 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-green-700 a:not(.btn){font-weight:700;color:#cfdcd6}html[data-netbox-color-mode=dark] .badge.bg-green-700,html[data-netbox-color-mode=dark] .toast.bg-green-700,html[data-netbox-color-mode=dark] .toast-header.bg-green-700,html[data-netbox-color-mode=dark] .progress-bar.bg-green-700{color:#fff}html[data-netbox-color-mode=dark] .bg-green-800 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23ced7d3'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-green-800{color:#0a3622}html[data-netbox-color-mode=dark] .btn.btn-ghost-green-800:hover{background-color:#0a36221f}html[data-netbox-color-mode=dark] .alert.alert-green-800 a:not(.btn),html[data-netbox-color-mode=dark] .table-green-800 a:not(.btn){font-weight:700;color:#ced7d3}html[data-netbox-color-mode=dark] .alert.alert-green-800 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-green-800 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-green-800 a:not(.btn){font-weight:700;color:#ced7d3}html[data-netbox-color-mode=dark] .badge.bg-green-800,html[data-netbox-color-mode=dark] .toast.bg-green-800,html[data-netbox-color-mode=dark] .toast-header.bg-green-800,html[data-netbox-color-mode=dark] .progress-bar.bg-green-800{color:#fff}html[data-netbox-color-mode=dark] .bg-green-900 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23cdd1cf'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-green-900{color:#051b11}html[data-netbox-color-mode=dark] .btn.btn-ghost-green-900:hover{background-color:#051b111f}html[data-netbox-color-mode=dark] .alert.alert-green-900 a:not(.btn),html[data-netbox-color-mode=dark] .table-green-900 a:not(.btn){font-weight:700;color:#cdd1cf}html[data-netbox-color-mode=dark] .alert.alert-green-900 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-green-900 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-green-900 a:not(.btn){font-weight:700;color:#cdd1cf}html[data-netbox-color-mode=dark] .badge.bg-green-900,html[data-netbox-color-mode=dark] .toast.bg-green-900,html[data-netbox-color-mode=dark] .toast-header.bg-green-900,html[data-netbox-color-mode=dark] .progress-bar.bg-green-900{color:#fff}html[data-netbox-color-mode=dark] .bg-blue-100 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23292d33'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-blue-100{color:#cfe2ff}html[data-netbox-color-mode=dark] .btn.btn-ghost-blue-100:hover{background-color:#cfe2ff1f}html[data-netbox-color-mode=dark] .alert.alert-blue-100 a:not(.btn),html[data-netbox-color-mode=dark] .table-blue-100 a:not(.btn){font-weight:700;color:#292d33}html[data-netbox-color-mode=dark] .alert.alert-blue-100 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-blue-100 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-blue-100 a:not(.btn){font-weight:700;color:#292d33}html[data-netbox-color-mode=dark] .badge.bg-blue-100,html[data-netbox-color-mode=dark] .toast.bg-blue-100,html[data-netbox-color-mode=dark] .toast-header.bg-blue-100,html[data-netbox-color-mode=dark] .progress-bar.bg-blue-100{color:#000}html[data-netbox-color-mode=dark] .bg-blue-200 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23202733'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-blue-200{color:#9ec5fe}html[data-netbox-color-mode=dark] .btn.btn-ghost-blue-200:hover{background-color:#9ec5fe1f}html[data-netbox-color-mode=dark] .alert.alert-blue-200 a:not(.btn),html[data-netbox-color-mode=dark] .table-blue-200 a:not(.btn){font-weight:700;color:#202733}html[data-netbox-color-mode=dark] .alert.alert-blue-200 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-blue-200 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-blue-200 a:not(.btn){font-weight:700;color:#202733}html[data-netbox-color-mode=dark] .badge.bg-blue-200,html[data-netbox-color-mode=dark] .toast.bg-blue-200,html[data-netbox-color-mode=dark] .toast-header.bg-blue-200,html[data-netbox-color-mode=dark] .progress-bar.bg-blue-200{color:#000}html[data-netbox-color-mode=dark] .bg-blue-300 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23162233'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-blue-300{color:#6ea8fe}html[data-netbox-color-mode=dark] .btn.btn-ghost-blue-300:hover{background-color:#6ea8fe1f}html[data-netbox-color-mode=dark] .alert.alert-blue-300 a:not(.btn),html[data-netbox-color-mode=dark] .table-blue-300 a:not(.btn){font-weight:700;color:#162233}html[data-netbox-color-mode=dark] .alert.alert-blue-300 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-blue-300 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-blue-300 a:not(.btn){font-weight:700;color:#162233}html[data-netbox-color-mode=dark] .badge.bg-blue-300,html[data-netbox-color-mode=dark] .toast.bg-blue-300,html[data-netbox-color-mode=dark] .toast-header.bg-blue-300,html[data-netbox-color-mode=dark] .progress-bar.bg-blue-300{color:#000}html[data-netbox-color-mode=dark] .bg-blue-400 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230c1c33'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-blue-400{color:#3d8bfd}html[data-netbox-color-mode=dark] .btn.btn-ghost-blue-400:hover{background-color:#3d8bfd1f}html[data-netbox-color-mode=dark] .alert.alert-blue-400 a:not(.btn),html[data-netbox-color-mode=dark] .table-blue-400 a:not(.btn){font-weight:700;color:#0c1c33}html[data-netbox-color-mode=dark] .alert.alert-blue-400 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-blue-400 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-blue-400 a:not(.btn){font-weight:700;color:#0c1c33}html[data-netbox-color-mode=dark] .badge.bg-blue-400,html[data-netbox-color-mode=dark] .toast.bg-blue-400,html[data-netbox-color-mode=dark] .toast-header.bg-blue-400,html[data-netbox-color-mode=dark] .progress-bar.bg-blue-400{color:#000}html[data-netbox-color-mode=dark] .bg-blue-500 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23031633'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-blue-500{color:#0d6efd}html[data-netbox-color-mode=dark] .btn.btn-ghost-blue-500:hover{background-color:#0d6efd1f}html[data-netbox-color-mode=dark] .alert.alert-blue-500 a:not(.btn),html[data-netbox-color-mode=dark] .table-blue-500 a:not(.btn){font-weight:700;color:#031633}html[data-netbox-color-mode=dark] .alert.alert-blue-500 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-blue-500 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-blue-500 a:not(.btn){font-weight:700;color:#cfe2ff}html[data-netbox-color-mode=dark] .badge.bg-blue-500,html[data-netbox-color-mode=dark] .toast.bg-blue-500,html[data-netbox-color-mode=dark] .toast-header.bg-blue-500,html[data-netbox-color-mode=dark] .progress-bar.bg-blue-500{color:#fff}html[data-netbox-color-mode=dark] .bg-blue-600 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23cedef4'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-blue-600{color:#0a58ca}html[data-netbox-color-mode=dark] .btn.btn-ghost-blue-600:hover{background-color:#0a58ca1f}html[data-netbox-color-mode=dark] .alert.alert-blue-600 a:not(.btn),html[data-netbox-color-mode=dark] .table-blue-600 a:not(.btn){font-weight:700;color:#cedef4}html[data-netbox-color-mode=dark] .alert.alert-blue-600 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-blue-600 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-blue-600 a:not(.btn){font-weight:700;color:#cedef4}html[data-netbox-color-mode=dark] .badge.bg-blue-600,html[data-netbox-color-mode=dark] .toast.bg-blue-600,html[data-netbox-color-mode=dark] .toast-header.bg-blue-600,html[data-netbox-color-mode=dark] .progress-bar.bg-blue-600{color:#fff}html[data-netbox-color-mode=dark] .bg-blue-700 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23ced9ea'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-blue-700{color:#084298}html[data-netbox-color-mode=dark] .btn.btn-ghost-blue-700:hover{background-color:#0842981f}html[data-netbox-color-mode=dark] .alert.alert-blue-700 a:not(.btn),html[data-netbox-color-mode=dark] .table-blue-700 a:not(.btn){font-weight:700;color:#ced9ea}html[data-netbox-color-mode=dark] .alert.alert-blue-700 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-blue-700 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-blue-700 a:not(.btn){font-weight:700;color:#ced9ea}html[data-netbox-color-mode=dark] .badge.bg-blue-700,html[data-netbox-color-mode=dark] .toast.bg-blue-700,html[data-netbox-color-mode=dark] .toast-header.bg-blue-700,html[data-netbox-color-mode=dark] .progress-bar.bg-blue-700{color:#fff}html[data-netbox-color-mode=dark] .bg-blue-800 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23cdd5e0'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-blue-800{color:#052c65}html[data-netbox-color-mode=dark] .btn.btn-ghost-blue-800:hover{background-color:#052c651f}html[data-netbox-color-mode=dark] .alert.alert-blue-800 a:not(.btn),html[data-netbox-color-mode=dark] .table-blue-800 a:not(.btn){font-weight:700;color:#cdd5e0}html[data-netbox-color-mode=dark] .alert.alert-blue-800 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-blue-800 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-blue-800 a:not(.btn){font-weight:700;color:#cdd5e0}html[data-netbox-color-mode=dark] .badge.bg-blue-800,html[data-netbox-color-mode=dark] .toast.bg-blue-800,html[data-netbox-color-mode=dark] .toast-header.bg-blue-800,html[data-netbox-color-mode=dark] .progress-bar.bg-blue-800{color:#fff}html[data-netbox-color-mode=dark] .bg-blue-900 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23cdd0d6'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-blue-900{color:#031633}html[data-netbox-color-mode=dark] .btn.btn-ghost-blue-900:hover{background-color:#0316331f}html[data-netbox-color-mode=dark] .alert.alert-blue-900 a:not(.btn),html[data-netbox-color-mode=dark] .table-blue-900 a:not(.btn){font-weight:700;color:#cdd0d6}html[data-netbox-color-mode=dark] .alert.alert-blue-900 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-blue-900 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-blue-900 a:not(.btn){font-weight:700;color:#cdd0d6}html[data-netbox-color-mode=dark] .badge.bg-blue-900,html[data-netbox-color-mode=dark] .toast.bg-blue-900,html[data-netbox-color-mode=dark] .toast-header.bg-blue-900,html[data-netbox-color-mode=dark] .progress-bar.bg-blue-900{color:#fff}html[data-netbox-color-mode=dark] .bg-cyan-100 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23293132'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-cyan-100{color:#cff4fc}html[data-netbox-color-mode=dark] .btn.btn-ghost-cyan-100:hover{background-color:#cff4fc1f}html[data-netbox-color-mode=dark] .alert.alert-cyan-100 a:not(.btn),html[data-netbox-color-mode=dark] .table-cyan-100 a:not(.btn){font-weight:700;color:#293132}html[data-netbox-color-mode=dark] .alert.alert-cyan-100 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-cyan-100 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-cyan-100 a:not(.btn){font-weight:700;color:#293132}html[data-netbox-color-mode=dark] .badge.bg-cyan-100,html[data-netbox-color-mode=dark] .toast.bg-cyan-100,html[data-netbox-color-mode=dark] .toast-header.bg-cyan-100,html[data-netbox-color-mode=dark] .progress-bar.bg-cyan-100{color:#000}html[data-netbox-color-mode=dark] .bg-cyan-200 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23202f32'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-cyan-200{color:#9eeaf9}html[data-netbox-color-mode=dark] .btn.btn-ghost-cyan-200:hover{background-color:#9eeaf91f}html[data-netbox-color-mode=dark] .alert.alert-cyan-200 a:not(.btn),html[data-netbox-color-mode=dark] .table-cyan-200 a:not(.btn){font-weight:700;color:#202f32}html[data-netbox-color-mode=dark] .alert.alert-cyan-200 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-cyan-200 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-cyan-200 a:not(.btn){font-weight:700;color:#202f32}html[data-netbox-color-mode=dark] .badge.bg-cyan-200,html[data-netbox-color-mode=dark] .toast.bg-cyan-200,html[data-netbox-color-mode=dark] .toast-header.bg-cyan-200,html[data-netbox-color-mode=dark] .progress-bar.bg-cyan-200{color:#000}html[data-netbox-color-mode=dark] .bg-cyan-300 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23162d31'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-cyan-300{color:#6edff6}html[data-netbox-color-mode=dark] .btn.btn-ghost-cyan-300:hover{background-color:#6edff61f}html[data-netbox-color-mode=dark] .alert.alert-cyan-300 a:not(.btn),html[data-netbox-color-mode=dark] .table-cyan-300 a:not(.btn){font-weight:700;color:#162d31}html[data-netbox-color-mode=dark] .alert.alert-cyan-300 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-cyan-300 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-cyan-300 a:not(.btn){font-weight:700;color:#162d31}html[data-netbox-color-mode=dark] .badge.bg-cyan-300,html[data-netbox-color-mode=dark] .toast.bg-cyan-300,html[data-netbox-color-mode=dark] .toast-header.bg-cyan-300,html[data-netbox-color-mode=dark] .progress-bar.bg-cyan-300{color:#000}html[data-netbox-color-mode=dark] .bg-cyan-400 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230c2b31'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-cyan-400{color:#3dd5f3}html[data-netbox-color-mode=dark] .btn.btn-ghost-cyan-400:hover{background-color:#3dd5f31f}html[data-netbox-color-mode=dark] .alert.alert-cyan-400 a:not(.btn),html[data-netbox-color-mode=dark] .table-cyan-400 a:not(.btn){font-weight:700;color:#0c2b31}html[data-netbox-color-mode=dark] .alert.alert-cyan-400 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-cyan-400 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-cyan-400 a:not(.btn){font-weight:700;color:#0c2b31}html[data-netbox-color-mode=dark] .badge.bg-cyan-400,html[data-netbox-color-mode=dark] .toast.bg-cyan-400,html[data-netbox-color-mode=dark] .toast-header.bg-cyan-400,html[data-netbox-color-mode=dark] .progress-bar.bg-cyan-400{color:#000}html[data-netbox-color-mode=dark] .bg-cyan-500 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23032830'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-cyan-500{color:#0dcaf0}html[data-netbox-color-mode=dark] .btn.btn-ghost-cyan-500:hover{background-color:#0dcaf01f}html[data-netbox-color-mode=dark] .alert.alert-cyan-500 a:not(.btn),html[data-netbox-color-mode=dark] .table-cyan-500 a:not(.btn){font-weight:700;color:#032830}html[data-netbox-color-mode=dark] .alert.alert-cyan-500 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-cyan-500 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-cyan-500 a:not(.btn){font-weight:700;color:#032830}html[data-netbox-color-mode=dark] .badge.bg-cyan-500,html[data-netbox-color-mode=dark] .toast.bg-cyan-500,html[data-netbox-color-mode=dark] .toast-header.bg-cyan-500,html[data-netbox-color-mode=dark] .progress-bar.bg-cyan-500{color:#000}html[data-netbox-color-mode=dark] .bg-cyan-600 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23022026'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-cyan-600{color:#0aa2c0}html[data-netbox-color-mode=dark] .btn.btn-ghost-cyan-600:hover{background-color:#0aa2c01f}html[data-netbox-color-mode=dark] .alert.alert-cyan-600 a:not(.btn),html[data-netbox-color-mode=dark] .table-cyan-600 a:not(.btn){font-weight:700;color:#022026}html[data-netbox-color-mode=dark] .alert.alert-cyan-600 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-cyan-600 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-cyan-600 a:not(.btn){font-weight:700;color:#022026}html[data-netbox-color-mode=dark] .badge.bg-cyan-600,html[data-netbox-color-mode=dark] .toast.bg-cyan-600,html[data-netbox-color-mode=dark] .toast-header.bg-cyan-600,html[data-netbox-color-mode=dark] .progress-bar.bg-cyan-600{color:#000}html[data-netbox-color-mode=dark] .bg-cyan-700 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23cee4e9'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-cyan-700{color:#087990}html[data-netbox-color-mode=dark] .btn.btn-ghost-cyan-700:hover{background-color:#0879901f}html[data-netbox-color-mode=dark] .alert.alert-cyan-700 a:not(.btn),html[data-netbox-color-mode=dark] .table-cyan-700 a:not(.btn){font-weight:700;color:#cee4e9}html[data-netbox-color-mode=dark] .alert.alert-cyan-700 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-cyan-700 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-cyan-700 a:not(.btn){font-weight:700;color:#cee4e9}html[data-netbox-color-mode=dark] .badge.bg-cyan-700,html[data-netbox-color-mode=dark] .toast.bg-cyan-700,html[data-netbox-color-mode=dark] .toast-header.bg-cyan-700,html[data-netbox-color-mode=dark] .progress-bar.bg-cyan-700{color:#fff}html[data-netbox-color-mode=dark] .bg-cyan-800 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23cddcdf'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-cyan-800{color:#055160}html[data-netbox-color-mode=dark] .btn.btn-ghost-cyan-800:hover{background-color:#0551601f}html[data-netbox-color-mode=dark] .alert.alert-cyan-800 a:not(.btn),html[data-netbox-color-mode=dark] .table-cyan-800 a:not(.btn){font-weight:700;color:#cddcdf}html[data-netbox-color-mode=dark] .alert.alert-cyan-800 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-cyan-800 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-cyan-800 a:not(.btn){font-weight:700;color:#cddcdf}html[data-netbox-color-mode=dark] .badge.bg-cyan-800,html[data-netbox-color-mode=dark] .toast.bg-cyan-800,html[data-netbox-color-mode=dark] .toast-header.bg-cyan-800,html[data-netbox-color-mode=dark] .progress-bar.bg-cyan-800{color:#fff}html[data-netbox-color-mode=dark] .bg-cyan-900 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23cdd4d6'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-cyan-900{color:#032830}html[data-netbox-color-mode=dark] .btn.btn-ghost-cyan-900:hover{background-color:#0328301f}html[data-netbox-color-mode=dark] .alert.alert-cyan-900 a:not(.btn),html[data-netbox-color-mode=dark] .table-cyan-900 a:not(.btn){font-weight:700;color:#cdd4d6}html[data-netbox-color-mode=dark] .alert.alert-cyan-900 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-cyan-900 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-cyan-900 a:not(.btn){font-weight:700;color:#cdd4d6}html[data-netbox-color-mode=dark] .badge.bg-cyan-900,html[data-netbox-color-mode=dark] .toast.bg-cyan-900,html[data-netbox-color-mode=dark] .toast-header.bg-cyan-900,html[data-netbox-color-mode=dark] .progress-bar.bg-cyan-900{color:#fff}html[data-netbox-color-mode=dark] .bg-indigo-100 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%232d2932'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-indigo-100{color:#e0cffc}html[data-netbox-color-mode=dark] .btn.btn-ghost-indigo-100:hover{background-color:#e0cffc1f}html[data-netbox-color-mode=dark] .alert.alert-indigo-100 a:not(.btn),html[data-netbox-color-mode=dark] .table-indigo-100 a:not(.btn){font-weight:700;color:#2d2932}html[data-netbox-color-mode=dark] .alert.alert-indigo-100 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-indigo-100 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-indigo-100 a:not(.btn){font-weight:700;color:#2d2932}html[data-netbox-color-mode=dark] .badge.bg-indigo-100,html[data-netbox-color-mode=dark] .toast.bg-indigo-100,html[data-netbox-color-mode=dark] .toast-header.bg-indigo-100,html[data-netbox-color-mode=dark] .progress-bar.bg-indigo-100{color:#000}html[data-netbox-color-mode=dark] .bg-indigo-200 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23272032'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-indigo-200{color:#c29ffa}html[data-netbox-color-mode=dark] .btn.btn-ghost-indigo-200:hover{background-color:#c29ffa1f}html[data-netbox-color-mode=dark] .alert.alert-indigo-200 a:not(.btn),html[data-netbox-color-mode=dark] .table-indigo-200 a:not(.btn){font-weight:700;color:#272032}html[data-netbox-color-mode=dark] .alert.alert-indigo-200 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-indigo-200 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-indigo-200 a:not(.btn){font-weight:700;color:#272032}html[data-netbox-color-mode=dark] .badge.bg-indigo-200,html[data-netbox-color-mode=dark] .toast.bg-indigo-200,html[data-netbox-color-mode=dark] .toast-header.bg-indigo-200,html[data-netbox-color-mode=dark] .progress-bar.bg-indigo-200{color:#000}html[data-netbox-color-mode=dark] .bg-indigo-300 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23211631'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-indigo-300{color:#a370f7}html[data-netbox-color-mode=dark] .btn.btn-ghost-indigo-300:hover{background-color:#a370f71f}html[data-netbox-color-mode=dark] .alert.alert-indigo-300 a:not(.btn),html[data-netbox-color-mode=dark] .table-indigo-300 a:not(.btn){font-weight:700;color:#211631}html[data-netbox-color-mode=dark] .alert.alert-indigo-300 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-indigo-300 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-indigo-300 a:not(.btn){font-weight:700;color:#211631}html[data-netbox-color-mode=dark] .badge.bg-indigo-300,html[data-netbox-color-mode=dark] .toast.bg-indigo-300,html[data-netbox-color-mode=dark] .toast-header.bg-indigo-300,html[data-netbox-color-mode=dark] .progress-bar.bg-indigo-300{color:#000}html[data-netbox-color-mode=dark] .bg-indigo-400 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23e7d9fd'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-indigo-400{color:#8540f5}html[data-netbox-color-mode=dark] .btn.btn-ghost-indigo-400:hover{background-color:#8540f51f}html[data-netbox-color-mode=dark] .alert.alert-indigo-400 a:not(.btn),html[data-netbox-color-mode=dark] .table-indigo-400 a:not(.btn){font-weight:700;color:#e7d9fd}html[data-netbox-color-mode=dark] .alert.alert-indigo-400 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-indigo-400 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-indigo-400 a:not(.btn){font-weight:700;color:#e7d9fd}html[data-netbox-color-mode=dark] .badge.bg-indigo-400,html[data-netbox-color-mode=dark] .toast.bg-indigo-400,html[data-netbox-color-mode=dark] .toast-header.bg-indigo-400,html[data-netbox-color-mode=dark] .progress-bar.bg-indigo-400{color:#fff}html[data-netbox-color-mode=dark] .bg-indigo-500 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23e0cffc'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-indigo-500{color:#6610f2}html[data-netbox-color-mode=dark] .btn.btn-ghost-indigo-500:hover{background-color:#6610f21f}html[data-netbox-color-mode=dark] .alert.alert-indigo-500 a:not(.btn),html[data-netbox-color-mode=dark] .table-indigo-500 a:not(.btn){font-weight:700;color:#e0cffc}html[data-netbox-color-mode=dark] .alert.alert-indigo-500 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-indigo-500 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-indigo-500 a:not(.btn){font-weight:700;color:#e0cffc}html[data-netbox-color-mode=dark] .badge.bg-indigo-500,html[data-netbox-color-mode=dark] .toast.bg-indigo-500,html[data-netbox-color-mode=dark] .toast-header.bg-indigo-500,html[data-netbox-color-mode=dark] .progress-bar.bg-indigo-500{color:#fff}html[data-netbox-color-mode=dark] .bg-indigo-600 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23dccff3'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-indigo-600{color:#520dc2}html[data-netbox-color-mode=dark] .btn.btn-ghost-indigo-600:hover{background-color:#520dc21f}html[data-netbox-color-mode=dark] .alert.alert-indigo-600 a:not(.btn),html[data-netbox-color-mode=dark] .table-indigo-600 a:not(.btn){font-weight:700;color:#dccff3}html[data-netbox-color-mode=dark] .alert.alert-indigo-600 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-indigo-600 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-indigo-600 a:not(.btn){font-weight:700;color:#dccff3}html[data-netbox-color-mode=dark] .badge.bg-indigo-600,html[data-netbox-color-mode=dark] .toast.bg-indigo-600,html[data-netbox-color-mode=dark] .toast-header.bg-indigo-600,html[data-netbox-color-mode=dark] .progress-bar.bg-indigo-600{color:#fff}html[data-netbox-color-mode=dark] .bg-indigo-700 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23d8cee9'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-indigo-700{color:#3d0a91}html[data-netbox-color-mode=dark] .btn.btn-ghost-indigo-700:hover{background-color:#3d0a911f}html[data-netbox-color-mode=dark] .alert.alert-indigo-700 a:not(.btn),html[data-netbox-color-mode=dark] .table-indigo-700 a:not(.btn){font-weight:700;color:#d8cee9}html[data-netbox-color-mode=dark] .alert.alert-indigo-700 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-indigo-700 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-indigo-700 a:not(.btn){font-weight:700;color:#d8cee9}html[data-netbox-color-mode=dark] .badge.bg-indigo-700,html[data-netbox-color-mode=dark] .toast.bg-indigo-700,html[data-netbox-color-mode=dark] .toast-header.bg-indigo-700,html[data-netbox-color-mode=dark] .progress-bar.bg-indigo-700{color:#fff}html[data-netbox-color-mode=dark] .bg-indigo-800 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23d4cddf'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-indigo-800{color:#290661}html[data-netbox-color-mode=dark] .btn.btn-ghost-indigo-800:hover{background-color:#2906611f}html[data-netbox-color-mode=dark] .alert.alert-indigo-800 a:not(.btn),html[data-netbox-color-mode=dark] .table-indigo-800 a:not(.btn){font-weight:700;color:#d4cddf}html[data-netbox-color-mode=dark] .alert.alert-indigo-800 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-indigo-800 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-indigo-800 a:not(.btn){font-weight:700;color:#d4cddf}html[data-netbox-color-mode=dark] .badge.bg-indigo-800,html[data-netbox-color-mode=dark] .toast.bg-indigo-800,html[data-netbox-color-mode=dark] .toast-header.bg-indigo-800,html[data-netbox-color-mode=dark] .progress-bar.bg-indigo-800{color:#fff}html[data-netbox-color-mode=dark] .bg-indigo-900 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23d0cdd6'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-indigo-900{color:#140330}html[data-netbox-color-mode=dark] .btn.btn-ghost-indigo-900:hover{background-color:#1403301f}html[data-netbox-color-mode=dark] .alert.alert-indigo-900 a:not(.btn),html[data-netbox-color-mode=dark] .table-indigo-900 a:not(.btn){font-weight:700;color:#d0cdd6}html[data-netbox-color-mode=dark] .alert.alert-indigo-900 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-indigo-900 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-indigo-900 a:not(.btn){font-weight:700;color:#d0cdd6}html[data-netbox-color-mode=dark] .badge.bg-indigo-900,html[data-netbox-color-mode=dark] .toast.bg-indigo-900,html[data-netbox-color-mode=dark] .toast-header.bg-indigo-900,html[data-netbox-color-mode=dark] .progress-bar.bg-indigo-900{color:#fff}html[data-netbox-color-mode=dark] .bg-purple-100 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%232d2b31'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-purple-100{color:#e2d9f3}html[data-netbox-color-mode=dark] .btn.btn-ghost-purple-100:hover{background-color:#e2d9f31f}html[data-netbox-color-mode=dark] .alert.alert-purple-100 a:not(.btn),html[data-netbox-color-mode=dark] .table-purple-100 a:not(.btn){font-weight:700;color:#2d2b31}html[data-netbox-color-mode=dark] .alert.alert-purple-100 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-purple-100 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-purple-100 a:not(.btn){font-weight:700;color:#2d2b31}html[data-netbox-color-mode=dark] .badge.bg-purple-100,html[data-netbox-color-mode=dark] .toast.bg-purple-100,html[data-netbox-color-mode=dark] .toast-header.bg-purple-100,html[data-netbox-color-mode=dark] .progress-bar.bg-purple-100{color:#000}html[data-netbox-color-mode=dark] .bg-purple-200 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%2327242e'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-purple-200{color:#c5b3e6}html[data-netbox-color-mode=dark] .btn.btn-ghost-purple-200:hover{background-color:#c5b3e61f}html[data-netbox-color-mode=dark] .alert.alert-purple-200 a:not(.btn),html[data-netbox-color-mode=dark] .table-purple-200 a:not(.btn){font-weight:700;color:#27242e}html[data-netbox-color-mode=dark] .alert.alert-purple-200 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-purple-200 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-purple-200 a:not(.btn){font-weight:700;color:#27242e}html[data-netbox-color-mode=dark] .badge.bg-purple-200,html[data-netbox-color-mode=dark] .toast.bg-purple-200,html[data-netbox-color-mode=dark] .toast-header.bg-purple-200,html[data-netbox-color-mode=dark] .progress-bar.bg-purple-200{color:#000}html[data-netbox-color-mode=dark] .bg-purple-300 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23221c2c'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-purple-300{color:#a98eda}html[data-netbox-color-mode=dark] .btn.btn-ghost-purple-300:hover{background-color:#a98eda1f}html[data-netbox-color-mode=dark] .alert.alert-purple-300 a:not(.btn),html[data-netbox-color-mode=dark] .table-purple-300 a:not(.btn){font-weight:700;color:#221c2c}html[data-netbox-color-mode=dark] .alert.alert-purple-300 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-purple-300 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-purple-300 a:not(.btn){font-weight:700;color:#221c2c}html[data-netbox-color-mode=dark] .badge.bg-purple-300,html[data-netbox-color-mode=dark] .toast.bg-purple-300,html[data-netbox-color-mode=dark] .toast-header.bg-purple-300,html[data-netbox-color-mode=dark] .progress-bar.bg-purple-300{color:#000}html[data-netbox-color-mode=dark] .bg-purple-400 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%231c1529'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-purple-400{color:#8c68cd}html[data-netbox-color-mode=dark] .btn.btn-ghost-purple-400:hover{background-color:#8c68cd1f}html[data-netbox-color-mode=dark] .alert.alert-purple-400 a:not(.btn),html[data-netbox-color-mode=dark] .table-purple-400 a:not(.btn){font-weight:700;color:#1c1529}html[data-netbox-color-mode=dark] .alert.alert-purple-400 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-purple-400 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-purple-400 a:not(.btn){font-weight:700;color:#1c1529}html[data-netbox-color-mode=dark] .badge.bg-purple-400,html[data-netbox-color-mode=dark] .toast.bg-purple-400,html[data-netbox-color-mode=dark] .toast-header.bg-purple-400,html[data-netbox-color-mode=dark] .progress-bar.bg-purple-400{color:#000}html[data-netbox-color-mode=dark] .bg-purple-500 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23e2d9f3'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-purple-500{color:#6f42c1}html[data-netbox-color-mode=dark] .btn.btn-ghost-purple-500:hover{background-color:#6f42c11f}html[data-netbox-color-mode=dark] .alert.alert-purple-500 a:not(.btn),html[data-netbox-color-mode=dark] .table-purple-500 a:not(.btn){font-weight:700;color:#e2d9f3}html[data-netbox-color-mode=dark] .alert.alert-purple-500 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-purple-500 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-purple-500 a:not(.btn){font-weight:700;color:#e2d9f3}html[data-netbox-color-mode=dark] .badge.bg-purple-500,html[data-netbox-color-mode=dark] .toast.bg-purple-500,html[data-netbox-color-mode=dark] .toast-header.bg-purple-500,html[data-netbox-color-mode=dark] .progress-bar.bg-purple-500{color:#fff}html[data-netbox-color-mode=dark] .bg-purple-600 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23ded7eb'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-purple-600{color:#59359a}html[data-netbox-color-mode=dark] .btn.btn-ghost-purple-600:hover{background-color:#59359a1f}html[data-netbox-color-mode=dark] .alert.alert-purple-600 a:not(.btn),html[data-netbox-color-mode=dark] .table-purple-600 a:not(.btn){font-weight:700;color:#ded7eb}html[data-netbox-color-mode=dark] .alert.alert-purple-600 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-purple-600 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-purple-600 a:not(.btn){font-weight:700;color:#ded7eb}html[data-netbox-color-mode=dark] .badge.bg-purple-600,html[data-netbox-color-mode=dark] .toast.bg-purple-600,html[data-netbox-color-mode=dark] .toast-header.bg-purple-600,html[data-netbox-color-mode=dark] .progress-bar.bg-purple-600{color:#fff}html[data-netbox-color-mode=dark] .bg-purple-700 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23d9d4e3'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-purple-700{color:#432874}html[data-netbox-color-mode=dark] .btn.btn-ghost-purple-700:hover{background-color:#4328741f}html[data-netbox-color-mode=dark] .alert.alert-purple-700 a:not(.btn),html[data-netbox-color-mode=dark] .table-purple-700 a:not(.btn){font-weight:700;color:#d9d4e3}html[data-netbox-color-mode=dark] .alert.alert-purple-700 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-purple-700 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-purple-700 a:not(.btn){font-weight:700;color:#d9d4e3}html[data-netbox-color-mode=dark] .badge.bg-purple-700,html[data-netbox-color-mode=dark] .toast.bg-purple-700,html[data-netbox-color-mode=dark] .toast-header.bg-purple-700,html[data-netbox-color-mode=dark] .progress-bar.bg-purple-700{color:#fff}html[data-netbox-color-mode=dark] .bg-purple-800 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23d5d1db'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-purple-800{color:#2c1a4d}html[data-netbox-color-mode=dark] .btn.btn-ghost-purple-800:hover{background-color:#2c1a4d1f}html[data-netbox-color-mode=dark] .alert.alert-purple-800 a:not(.btn),html[data-netbox-color-mode=dark] .table-purple-800 a:not(.btn){font-weight:700;color:#d5d1db}html[data-netbox-color-mode=dark] .alert.alert-purple-800 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-purple-800 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-purple-800 a:not(.btn){font-weight:700;color:#d5d1db}html[data-netbox-color-mode=dark] .badge.bg-purple-800,html[data-netbox-color-mode=dark] .toast.bg-purple-800,html[data-netbox-color-mode=dark] .toast-header.bg-purple-800,html[data-netbox-color-mode=dark] .progress-bar.bg-purple-800{color:#fff}html[data-netbox-color-mode=dark] .bg-purple-900 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23d0cfd4'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-purple-900{color:#160d27}html[data-netbox-color-mode=dark] .btn.btn-ghost-purple-900:hover{background-color:#160d271f}html[data-netbox-color-mode=dark] .alert.alert-purple-900 a:not(.btn),html[data-netbox-color-mode=dark] .table-purple-900 a:not(.btn){font-weight:700;color:#d0cfd4}html[data-netbox-color-mode=dark] .alert.alert-purple-900 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-purple-900 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-purple-900 a:not(.btn){font-weight:700;color:#d0cfd4}html[data-netbox-color-mode=dark] .badge.bg-purple-900,html[data-netbox-color-mode=dark] .toast.bg-purple-900,html[data-netbox-color-mode=dark] .toast-header.bg-purple-900,html[data-netbox-color-mode=dark] .progress-bar.bg-purple-900{color:#fff}html[data-netbox-color-mode=dark] .bg-pink-100 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23312b2e'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-pink-100{color:#f7d6e6}html[data-netbox-color-mode=dark] .btn.btn-ghost-pink-100:hover{background-color:#f7d6e61f}html[data-netbox-color-mode=dark] .alert.alert-pink-100 a:not(.btn),html[data-netbox-color-mode=dark] .table-pink-100 a:not(.btn){font-weight:700;color:#312b2e}html[data-netbox-color-mode=dark] .alert.alert-pink-100 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-pink-100 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-pink-100 a:not(.btn){font-weight:700;color:#312b2e}html[data-netbox-color-mode=dark] .badge.bg-pink-100,html[data-netbox-color-mode=dark] .toast.bg-pink-100,html[data-netbox-color-mode=dark] .toast-header.bg-pink-100,html[data-netbox-color-mode=dark] .progress-bar.bg-pink-100{color:#000}html[data-netbox-color-mode=dark] .bg-pink-200 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23302329'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-pink-200{color:#efadce}html[data-netbox-color-mode=dark] .btn.btn-ghost-pink-200:hover{background-color:#efadce1f}html[data-netbox-color-mode=dark] .alert.alert-pink-200 a:not(.btn),html[data-netbox-color-mode=dark] .table-pink-200 a:not(.btn){font-weight:700;color:#302329}html[data-netbox-color-mode=dark] .alert.alert-pink-200 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-pink-200 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-pink-200 a:not(.btn){font-weight:700;color:#302329}html[data-netbox-color-mode=dark] .badge.bg-pink-200,html[data-netbox-color-mode=dark] .toast.bg-pink-200,html[data-netbox-color-mode=dark] .toast-header.bg-pink-200,html[data-netbox-color-mode=dark] .progress-bar.bg-pink-200{color:#000}html[data-netbox-color-mode=dark] .bg-pink-300 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%232e1b24'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-pink-300{color:#e685b5}html[data-netbox-color-mode=dark] .btn.btn-ghost-pink-300:hover{background-color:#e685b51f}html[data-netbox-color-mode=dark] .alert.alert-pink-300 a:not(.btn),html[data-netbox-color-mode=dark] .table-pink-300 a:not(.btn){font-weight:700;color:#2e1b24}html[data-netbox-color-mode=dark] .alert.alert-pink-300 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-pink-300 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-pink-300 a:not(.btn){font-weight:700;color:#2e1b24}html[data-netbox-color-mode=dark] .badge.bg-pink-300,html[data-netbox-color-mode=dark] .toast.bg-pink-300,html[data-netbox-color-mode=dark] .toast-header.bg-pink-300,html[data-netbox-color-mode=dark] .progress-bar.bg-pink-300{color:#000}html[data-netbox-color-mode=dark] .bg-pink-400 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%232c121f'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-pink-400{color:#de5c9d}html[data-netbox-color-mode=dark] .btn.btn-ghost-pink-400:hover{background-color:#de5c9d1f}html[data-netbox-color-mode=dark] .alert.alert-pink-400 a:not(.btn),html[data-netbox-color-mode=dark] .table-pink-400 a:not(.btn){font-weight:700;color:#2c121f}html[data-netbox-color-mode=dark] .alert.alert-pink-400 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-pink-400 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-pink-400 a:not(.btn){font-weight:700;color:#2c121f}html[data-netbox-color-mode=dark] .badge.bg-pink-400,html[data-netbox-color-mode=dark] .toast.bg-pink-400,html[data-netbox-color-mode=dark] .toast-header.bg-pink-400,html[data-netbox-color-mode=dark] .progress-bar.bg-pink-400{color:#000}html[data-netbox-color-mode=dark] .bg-pink-500 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%232b0a1a'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-pink-500{color:#d63384}html[data-netbox-color-mode=dark] .btn.btn-ghost-pink-500:hover{background-color:#d633841f}html[data-netbox-color-mode=dark] .alert.alert-pink-500 a:not(.btn),html[data-netbox-color-mode=dark] .table-pink-500 a:not(.btn){font-weight:700;color:#2b0a1a}html[data-netbox-color-mode=dark] .alert.alert-pink-500 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-pink-500 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-pink-500 a:not(.btn){font-weight:700;color:#f7d6e6}html[data-netbox-color-mode=dark] .badge.bg-pink-500,html[data-netbox-color-mode=dark] .toast.bg-pink-500,html[data-netbox-color-mode=dark] .toast-header.bg-pink-500,html[data-netbox-color-mode=dark] .progress-bar.bg-pink-500{color:#fff}html[data-netbox-color-mode=dark] .bg-pink-600 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23eed4e1'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-pink-600{color:#ab296a}html[data-netbox-color-mode=dark] .btn.btn-ghost-pink-600:hover{background-color:#ab296a1f}html[data-netbox-color-mode=dark] .alert.alert-pink-600 a:not(.btn),html[data-netbox-color-mode=dark] .table-pink-600 a:not(.btn){font-weight:700;color:#eed4e1}html[data-netbox-color-mode=dark] .alert.alert-pink-600 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-pink-600 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-pink-600 a:not(.btn){font-weight:700;color:#eed4e1}html[data-netbox-color-mode=dark] .badge.bg-pink-600,html[data-netbox-color-mode=dark] .toast.bg-pink-600,html[data-netbox-color-mode=dark] .toast-header.bg-pink-600,html[data-netbox-color-mode=dark] .progress-bar.bg-pink-600{color:#fff}html[data-netbox-color-mode=dark] .bg-pink-700 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23e6d2dc'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-pink-700{color:#801f4f}html[data-netbox-color-mode=dark] .btn.btn-ghost-pink-700:hover{background-color:#801f4f1f}html[data-netbox-color-mode=dark] .alert.alert-pink-700 a:not(.btn),html[data-netbox-color-mode=dark] .table-pink-700 a:not(.btn){font-weight:700;color:#e6d2dc}html[data-netbox-color-mode=dark] .alert.alert-pink-700 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-pink-700 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-pink-700 a:not(.btn){font-weight:700;color:#e6d2dc}html[data-netbox-color-mode=dark] .badge.bg-pink-700,html[data-netbox-color-mode=dark] .toast.bg-pink-700,html[data-netbox-color-mode=dark] .toast-header.bg-pink-700,html[data-netbox-color-mode=dark] .progress-bar.bg-pink-700{color:#fff}html[data-netbox-color-mode=dark] .bg-pink-800 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23ddd0d7'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-pink-800{color:#561435}html[data-netbox-color-mode=dark] .btn.btn-ghost-pink-800:hover{background-color:#5614351f}html[data-netbox-color-mode=dark] .alert.alert-pink-800 a:not(.btn),html[data-netbox-color-mode=dark] .table-pink-800 a:not(.btn){font-weight:700;color:#ddd0d7}html[data-netbox-color-mode=dark] .alert.alert-pink-800 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-pink-800 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-pink-800 a:not(.btn){font-weight:700;color:#ddd0d7}html[data-netbox-color-mode=dark] .badge.bg-pink-800,html[data-netbox-color-mode=dark] .toast.bg-pink-800,html[data-netbox-color-mode=dark] .toast-header.bg-pink-800,html[data-netbox-color-mode=dark] .progress-bar.bg-pink-800{color:#fff}html[data-netbox-color-mode=dark] .bg-pink-900 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23d5ced1'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-pink-900{color:#2b0a1a}html[data-netbox-color-mode=dark] .btn.btn-ghost-pink-900:hover{background-color:#2b0a1a1f}html[data-netbox-color-mode=dark] .alert.alert-pink-900 a:not(.btn),html[data-netbox-color-mode=dark] .table-pink-900 a:not(.btn){font-weight:700;color:#d5ced1}html[data-netbox-color-mode=dark] .alert.alert-pink-900 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-pink-900 .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-pink-900 a:not(.btn){font-weight:700;color:#d5ced1}html[data-netbox-color-mode=dark] .badge.bg-pink-900,html[data-netbox-color-mode=dark] .toast.bg-pink-900,html[data-netbox-color-mode=dark] .toast-header.bg-pink-900,html[data-netbox-color-mode=dark] .progress-bar.bg-pink-900{color:#fff}html[data-netbox-color-mode=dark] table td>.progress{min-width:6rem}html[data-netbox-color-mode=dark] .small .form-control{font-size:.875rem}html[data-netbox-color-mode=dark] :not(.card-body)>.col:not(:last-child):not(:only-child){margin-bottom:1rem}html[data-netbox-color-mode=dark] .nav-mobile{display:none;flex-direction:column;align-items:center;justify-content:space-between;width:100%}@media (max-width: 991.98px){html[data-netbox-color-mode=dark] .nav-mobile{display:flex}}html[data-netbox-color-mode=dark] .nav-mobile .nav-mobile-top{display:flex;align-items:center;justify-content:space-between;width:100%}html[data-netbox-color-mode=dark] .card>.table.table-flush{margin-bottom:0;overflow:hidden;border-bottom-right-radius:.375rem;border-bottom-left-radius:.375rem}html[data-netbox-color-mode=dark] .card>.table.table-flush thead th[scope=col]{padding-top:1rem;padding-bottom:1rem;text-transform:uppercase;vertical-align:middle;background-color:#495057;border-top:1px solid rgba(255,255,255,.125);border-bottom-color:#ffffff20}html[data-netbox-color-mode=dark] .card>.table.table-flush th,html[data-netbox-color-mode=dark] .card>.table.table-flush td{padding-right:1.5rem!important;padding-left:1.5rem!important;border-right:0;border-left:0}html[data-netbox-color-mode=dark] .card>.table.table-flush tr[class]{border-color:#ffffff20!important}html[data-netbox-color-mode=dark] .card>.table.table-flush tr[class]:last-of-type{border-bottom-color:transparent!important;border-bottom-right-radius:.375rem;border-bottom-left-radius:.375rem}html[data-netbox-color-mode=dark] .header-alert-container{display:flex;align-items:center;justify-content:center;padding:0 1rem}html[data-netbox-color-mode=dark] .header-alert-container .alert{width:100%}@media (min-width: 768px){html[data-netbox-color-mode=dark] .header-alert-container .alert{max-width:75%}}@media (min-width: 992px){html[data-netbox-color-mode=dark] .header-alert-container .alert{max-width:50%}}html[data-netbox-color-mode=dark] span.profile-button .dropdown-menu{right:0;left:auto;display:block!important;margin-top:.5rem;box-shadow:0 .5rem 1rem #00000026;transition:opacity .2s ease-in-out}html[data-netbox-color-mode=dark] span.profile-button .dropdown-menu:not(.show){pointer-events:none;opacity:0}html[data-netbox-color-mode=dark] span.profile-button .dropdown-menu.show{pointer-events:auto;opacity:1}html[data-netbox-color-mode=dark] div#advanced-search-content div.card div.card-body div.col:not(:last-child){margin-right:1rem}html[data-netbox-color-mode=dark] table td a{text-decoration:none}html[data-netbox-color-mode=dark] table td a:hover{text-decoration:underline}html[data-netbox-color-mode=dark] table td .dropdown{position:static}html[data-netbox-color-mode=dark] table th a,html[data-netbox-color-mode=dark] table th a:hover{color:#fff;text-decoration:none}html[data-netbox-color-mode=dark] table td,html[data-netbox-color-mode=dark] table th{font-size:.875rem;line-height:1.25;vertical-align:middle}html[data-netbox-color-mode=dark] table td.min-width,html[data-netbox-color-mode=dark] table th.min-width{width:1%}html[data-netbox-color-mode=dark] table td .form-check-input,html[data-netbox-color-mode=dark] table th .form-check-input{margin-top:.125em;font-size:1rem}html[data-netbox-color-mode=dark] table td .btn-sm,html[data-netbox-color-mode=dark] table td .btn-group-sm>.btn,html[data-netbox-color-mode=dark] table th .btn-sm,html[data-netbox-color-mode=dark] table th .btn-group-sm>.btn{line-height:1}html[data-netbox-color-mode=dark] table td p,html[data-netbox-color-mode=dark] table th p{margin-bottom:0}html[data-netbox-color-mode=dark] table.table>:not(caption)>*>*{padding-right:.25rem!important;padding-left:.25rem!important}html[data-netbox-color-mode=dark] table.object-list th{font-size:.75rem;line-height:1;vertical-align:bottom}html[data-netbox-color-mode=dark] table.attr-table th{font-weight:normal;width:25%}html[data-netbox-color-mode=dark] div.title-container{display:flex;flex-direction:column;flex-wrap:wrap;justify-content:space-between}@media (min-width: 992px){html[data-netbox-color-mode=dark] div.title-container{flex-direction:row}}html[data-netbox-color-mode=dark] div.title-container #content-title{display:flex;flex:1 0;flex-direction:column;padding-bottom:.5rem}html[data-netbox-color-mode=dark] .controls{margin-bottom:.5rem}@media print{html[data-netbox-color-mode=dark] .controls{display:none!important}}html[data-netbox-color-mode=dark] .controls .control-group{display:flex;flex-wrap:wrap;justify-content:flex-start}@media (min-width: 992px){html[data-netbox-color-mode=dark] .controls .control-group{justify-content:flex-end}}html[data-netbox-color-mode=dark] .controls .control-group>*{margin:.25rem}html[data-netbox-color-mode=dark] .controls .control-group>*:first-child{margin-left:0}html[data-netbox-color-mode=dark] .controls .control-group>*:last-child{margin-right:0}html[data-netbox-color-mode=dark] .object-subtitle{display:block;font-size:.875rem;color:#ced4da}@media (min-width: 768px){html[data-netbox-color-mode=dark] .object-subtitle{display:inline-block}}html[data-netbox-color-mode=dark] .object-subtitle>span{display:block}html[data-netbox-color-mode=dark] .object-subtitle>span.separator{display:none}@media (min-width: 768px){html[data-netbox-color-mode=dark] .object-subtitle>span,html[data-netbox-color-mode=dark] .object-subtitle>span.separator{display:inline-block}}html[data-netbox-color-mode=dark] nav.search{z-index:999;justify-content:center;background-color:var(--nbx-body-bg)}html[data-netbox-color-mode=dark] nav.search .search-container{display:flex;width:100%}@media (max-width: 991.98px){html[data-netbox-color-mode=dark] nav.search .search-container{display:none}}html[data-netbox-color-mode=dark] nav.search .input-group .search-obj-selected{border-color:#495057}html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle{color:#fff;border-color:#495057;margin-left:0;font-weight:400;line-height:1.5;color:#f8f9fa;background-color:#495057;border:1px solid #495057;border-radius:.375rem;border-left:1px solid var(--nbx-search-filter-border-left-color)}html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle:hover{color:#fff;background-color:#3e444a;border-color:#3a4046}.btn-check:focus+html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle,html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle:focus{color:#fff;background-color:#3e444a;border-color:#3a4046;box-shadow:0 0 0 .25rem #646a7080}.btn-check:checked+html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle,.btn-check:active+html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle,html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle:active,html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle.active,.show>html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle.dropdown-toggle{color:#fff;background-color:#3a4046;border-color:#373c41}.btn-check:checked+html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle:focus,.btn-check:active+html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle:focus,html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle:active:focus,html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle.active:focus,.show>html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #646a7080}html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle:disabled,html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle.disabled{color:#fff;background-color:#495057;border-color:#495057}html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle:focus{box-shadow:unset!important}html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle:after{display:none}html[data-netbox-color-mode=dark] nav.search .input-group .search-obj-selector{max-height:70vh;overflow-y:auto}html[data-netbox-color-mode=dark] nav.search .input-group .search-obj-selector .dropdown-item,html[data-netbox-color-mode=dark] nav.search .input-group .search-obj-selector .dropdown-header{font-size:.875rem}html[data-netbox-color-mode=dark] nav.search .input-group .search-obj-selector .dropdown-header{text-transform:uppercase}html[data-netbox-color-mode=dark] main.layout{display:flex;flex-wrap:nowrap;height:100vh;height:-webkit-fill-available;max-height:100vh;overflow-x:auto;overflow-y:hidden}@media print{html[data-netbox-color-mode=dark] main.layout{position:static!important;display:block!important;height:100%;overflow-x:visible!important;overflow-y:visible!important}}html[data-netbox-color-mode=dark] main.login-container{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;max-width:100vw;height:calc(100vh - 4rem);padding-top:40px;padding-bottom:40px}html[data-netbox-color-mode=dark] main.login-container+footer.footer button.color-mode-toggle{color:var(--nbx-color-mode-toggle-color)}html[data-netbox-color-mode=dark] .footer{padding:0}html[data-netbox-color-mode=dark] .footer .nav-link{padding:.5rem}@media (max-width: 767.98px){html[data-netbox-color-mode=dark] .footer{margin-bottom:8rem}}html[data-netbox-color-mode=dark] footer.login-footer{height:4rem;margin-top:auto}html[data-netbox-color-mode=dark] footer.login-footer .container-fluid,html[data-netbox-color-mode=dark] footer.login-footer .container-sm,html[data-netbox-color-mode=dark] footer.login-footer .container-md,html[data-netbox-color-mode=dark] footer.login-footer .container-lg,html[data-netbox-color-mode=dark] footer.login-footer .container-xl,html[data-netbox-color-mode=dark] footer.login-footer .container-xxl{display:flex;justify-content:flex-end;padding:.75rem 1.5rem}html[data-netbox-color-mode=dark] h1.accordion-item-title,html[data-netbox-color-mode=dark] .accordion-item-title.h1,html[data-netbox-color-mode=dark] h2.accordion-item-title,html[data-netbox-color-mode=dark] .accordion-item-title.h2,html[data-netbox-color-mode=dark] h3.accordion-item-title,html[data-netbox-color-mode=dark] .accordion-item-title.h3,html[data-netbox-color-mode=dark] h4.accordion-item-title,html[data-netbox-color-mode=dark] .accordion-item-title.h4,html[data-netbox-color-mode=dark] h5.accordion-item-title,html[data-netbox-color-mode=dark] .accordion-item-title.h5,html[data-netbox-color-mode=dark] h6.accordion-item-title,html[data-netbox-color-mode=dark] .accordion-item-title.h6{padding:.25rem .5rem;font-size:.875rem;font-weight:700;color:var(--nbx-sidebar-title-color);text-transform:uppercase}html[data-netbox-color-mode=dark] .form-login{width:100%;max-width:330px;padding:15px}html[data-netbox-color-mode=dark] .form-login input:focus{z-index:1}html[data-netbox-color-mode=dark] .form-login input[type=text]{margin-bottom:-1px;border-bottom-right-radius:0;border-bottom-left-radius:0}html[data-netbox-color-mode=dark] .form-login input[type=password]{margin-bottom:10px;border-top-left-radius:0;border-top-right-radius:0}html[data-netbox-color-mode=dark] .form-login .form-control{position:relative;box-sizing:border-box;height:auto;padding:10px;font-size:16px}html[data-netbox-color-mode=dark] .navbar-brand{padding-top:.75rem;padding-bottom:.75rem;font-size:1rem}html[data-netbox-color-mode=dark] nav.nav.nav-pills .nav-item.nav-link{padding:.25rem .5rem;font-size:.875rem;border-radius:.375rem}html[data-netbox-color-mode=dark] nav.nav.nav-pills .nav-item.nav-link:hover{color:#000;background-color:#6397e5}html[data-netbox-color-mode=dark] div.content-container{position:relative;display:flex;flex-direction:column;width:calc(100% - 3rem);min-height:100vh;overflow-x:hidden;overflow-y:auto}html[data-netbox-color-mode=dark] div.content-container:focus,html[data-netbox-color-mode=dark] div.content-container:focus-visible{outline:0}html[data-netbox-color-mode=dark] div.content-container div.content{flex:1}@media (max-width: 991.98px){html[data-netbox-color-mode=dark] div.content-container{width:100%}}@media print{html[data-netbox-color-mode=dark] div.content-container{width:100%!important;margin-left:0!important}}@media (max-width: 768px){html[data-netbox-color-mode=dark] .sidebar.collapse.show~.content-container>.content{position:fixed;top:0;left:0;overflow-y:hidden}}html[data-netbox-color-mode=dark] .tooltip{pointer-events:none}html[data-netbox-color-mode=dark] span.color-label{display:block;width:5rem;height:1rem;padding:.35em .65em;border:1px solid #303030;border-radius:.375rem;box-shadow:0 .125rem .25rem #00000013}html[data-netbox-color-mode=dark] .btn{white-space:nowrap}html[data-netbox-color-mode=dark] .card{box-shadow:0 .125rem .25rem #00000013}html[data-netbox-color-mode=dark] .card .card-header{padding:1rem;color:var(--nbx-body-color);border-bottom:none}html[data-netbox-color-mode=dark] .card .card-header+.card-body{padding-top:0}html[data-netbox-color-mode=dark] .card .card-body.small .form-control,html[data-netbox-color-mode=dark] .card .card-body.small .form-select{font-size:.875rem}html[data-netbox-color-mode=dark] .card .card-divider{width:100%;height:1px;margin:1rem 0;border-top:1px solid rgba(255,255,255,.125);opacity:.25}@media print{html[data-netbox-color-mode=dark] .card{box-shadow:unset!important}}html[data-netbox-color-mode=dark] .form-floating{position:relative}html[data-netbox-color-mode=dark] .form-floating>.input-group>.form-control,html[data-netbox-color-mode=dark] .form-floating>.input-group>.form-select{height:calc(3.5rem + 2px);padding:1rem .75rem}html[data-netbox-color-mode=dark] .form-floating>.input-group>label{position:absolute;top:0;left:0;height:100%;padding:1rem .75rem;pointer-events:none;border:1px solid transparent;transform-origin:0 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out}@media (prefers-reduced-motion: reduce){html[data-netbox-color-mode=dark] .form-floating>.input-group>label{transition:none}}html[data-netbox-color-mode=dark] .form-floating>.input-group>.form-control::placeholder{color:transparent}html[data-netbox-color-mode=dark] .form-floating>.input-group>.form-control:focus,html[data-netbox-color-mode=dark] .form-floating>.input-group>.form-control:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}html[data-netbox-color-mode=dark] .form-floating>.input-group>.form-control:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}html[data-netbox-color-mode=dark] .form-floating>.input-group>.form-select,html[data-netbox-color-mode=dark] .form-floating>.choices>.choices__inner,html[data-netbox-color-mode=dark] .form-floating>.ss-main span.placeholder,html[data-netbox-color-mode=dark] .form-floating>.ss-main div.ss-values{padding-top:1.625rem;padding-bottom:.625rem}html[data-netbox-color-mode=dark] .form-floating>.input-group>.form-control:focus~label,html[data-netbox-color-mode=dark] .form-floating>.input-group>.form-control:not(:placeholder-shown)~label,html[data-netbox-color-mode=dark] .form-floating>.input-group>.form-select~label,html[data-netbox-color-mode=dark] .form-floating>.choices~label,html[data-netbox-color-mode=dark] .form-floating>.ss-main~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translate(.15rem);z-index:4}html[data-netbox-color-mode=dark] .form-floating>.input-group>.form-control:-webkit-autofill~label{z-index:4;opacity:.65;transform:scale(.85) translateY(-.5rem) translate(.15rem)}html[data-netbox-color-mode=dark] .form-object-edit{margin:0 auto;max-width:800px}html[data-netbox-color-mode=dark] textarea.form-control[rows="10"]{height:18rem}html[data-netbox-color-mode=dark] textarea#id_local_context_data,html[data-netbox-color-mode=dark] textarea.markdown,html[data-netbox-color-mode=dark] textarea#id_public_key,html[data-netbox-color-mode=dark] textarea.form-control[name=csv],html[data-netbox-color-mode=dark] textarea.form-control[name=data]{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}html[data-netbox-color-mode=dark] .card:not(:only-of-type){margin-bottom:1rem}html[data-netbox-color-mode=dark] .stat-btn{min-width:3rem}html[data-netbox-color-mode=dark] nav.breadcrumb-container{width:fit-content;padding:.35em .65em;font-size:.875rem}html[data-netbox-color-mode=dark] nav.breadcrumb-container ol.breadcrumb{margin-bottom:0}html[data-netbox-color-mode=dark] nav.breadcrumb-container ol.breadcrumb li.breadcrumb-item>a{text-decoration:none}html[data-netbox-color-mode=dark] nav.breadcrumb-container ol.breadcrumb li.breadcrumb-item>a:hover{text-decoration:underline}html[data-netbox-color-mode=dark] div.paginator>form>div.input-group{width:fit-content}html[data-netbox-color-mode=dark] label.required{font-weight:700}html[data-netbox-color-mode=dark] label.required:after{position:absolute;display:inline-block;margin:0 0 0 2px;font-family:"Material Design Icons";font-size:8px;font-style:normal;font-weight:600;text-decoration:none;content:"\f06c4"}html[data-netbox-color-mode=dark] div.bulk-buttons{display:flex;justify-content:space-between;margin:.5rem 0}html[data-netbox-color-mode=dark] div.bulk-buttons>div.bulk-button-group{display:flex;flex-wrap:wrap;align-items:flex-start}html[data-netbox-color-mode=dark] div.bulk-buttons>div.bulk-button-group:first-of-type:not(:last-of-type)>*:first-child{margin-left:0}html[data-netbox-color-mode=dark] div.bulk-buttons>div.bulk-button-group:last-of-type:not(:first-of-type)>*:last-child{margin-right:0}html[data-netbox-color-mode=dark] div.bulk-buttons>div.bulk-button-group>*{margin:.25rem}html[data-netbox-color-mode=dark] table tbody tr.primary{background-color:#6ea8fe26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.secondary{background-color:#adb5bd26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.success{background-color:#75b79826;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.info{background-color:#6edff626;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.warning{background-color:#ffda6a26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.danger{background-color:#ea868f26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.light{background-color:#dee2e626;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.dark{background-color:#adb5bd26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.red{background-color:#ea868f26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.yellow{background-color:#ffda6a26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.green{background-color:#75b79826;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.blue{background-color:#6ea8fe26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.cyan{background-color:#6edff626;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.indigo{background-color:#a370f726;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.purple{background-color:#a98eda26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.pink{background-color:#e685b526;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.darker{background-color:#1b1f2226;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.darkest{background-color:#171b1d26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.gray{background-color:#ced4da26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.gray-100{background-color:#f8f9fa26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.gray-200{background-color:#e9ecef26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.gray-300{background-color:#dee2e626;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.gray-400{background-color:#ced4da26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.gray-500{background-color:#adb5bd26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.gray-600{background-color:#6c757d26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.gray-700{background-color:#49505726;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.gray-800{background-color:#343a4026;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.gray-900{background-color:#21252926;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.red-100{background-color:#f8d7da26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.red-200{background-color:#f1aeb526;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.red-300{background-color:#ea868f26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.red-400{background-color:#e35d6a26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.red-500{background-color:#dc354526;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.red-600{background-color:#b02a3726;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.red-700{background-color:#84202926;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.red-800{background-color:#58151c26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.red-900{background-color:#2c0b0e26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.yellow-100{background-color:#fff3cd26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.yellow-200{background-color:#ffe69c26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.yellow-300{background-color:#ffda6a26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.yellow-400{background-color:#ffcd3926;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.yellow-500{background-color:#ffc10726;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.yellow-600{background-color:#cc9a0626;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.yellow-700{background-color:#99740426;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.yellow-800{background-color:#664d0326;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.yellow-900{background-color:#33270126;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.green-100{background-color:#d1e7dd26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.green-200{background-color:#a3cfbb26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.green-300{background-color:#75b79826;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.green-400{background-color:#479f7626;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.green-500{background-color:#19875426;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.green-600{background-color:#146c4326;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.green-700{background-color:#0f513226;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.green-800{background-color:#0a362226;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.green-900{background-color:#051b1126;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.blue-100{background-color:#cfe2ff26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.blue-200{background-color:#9ec5fe26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.blue-300{background-color:#6ea8fe26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.blue-400{background-color:#3d8bfd26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.blue-500{background-color:#0d6efd26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.blue-600{background-color:#0a58ca26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.blue-700{background-color:#08429826;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.blue-800{background-color:#052c6526;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.blue-900{background-color:#03163326;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.cyan-100{background-color:#cff4fc26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.cyan-200{background-color:#9eeaf926;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.cyan-300{background-color:#6edff626;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.cyan-400{background-color:#3dd5f326;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.cyan-500{background-color:#0dcaf026;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.cyan-600{background-color:#0aa2c026;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.cyan-700{background-color:#08799026;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.cyan-800{background-color:#05516026;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.cyan-900{background-color:#03283026;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.indigo-100{background-color:#e0cffc26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.indigo-200{background-color:#c29ffa26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.indigo-300{background-color:#a370f726;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.indigo-400{background-color:#8540f526;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.indigo-500{background-color:#6610f226;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.indigo-600{background-color:#520dc226;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.indigo-700{background-color:#3d0a9126;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.indigo-800{background-color:#29066126;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.indigo-900{background-color:#14033026;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.purple-100{background-color:#e2d9f326;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.purple-200{background-color:#c5b3e626;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.purple-300{background-color:#a98eda26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.purple-400{background-color:#8c68cd26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.purple-500{background-color:#6f42c126;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.purple-600{background-color:#59359a26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.purple-700{background-color:#43287426;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.purple-800{background-color:#2c1a4d26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.purple-900{background-color:#160d2726;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.pink-100{background-color:#f7d6e626;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.pink-200{background-color:#efadce26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.pink-300{background-color:#e685b526;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.pink-400{background-color:#de5c9d26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.pink-500{background-color:#d6338426;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.pink-600{background-color:#ab296a26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.pink-700{background-color:#801f4f26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.pink-800{background-color:#56143526;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.pink-900{background-color:#2b0a1a26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table .table-badge-group .table-badge{display:block;width:min-content;font-size:.875rem;font-weight:400}html[data-netbox-color-mode=dark] table .table-badge-group .table-badge:not(.badge){padding:0 .65em}html[data-netbox-color-mode=dark] table .table-badge-group .table-badge.badge:not(:last-of-type):not(:only-child){margin-bottom:.25rem}html[data-netbox-color-mode=dark] pre.change-data{padding-right:0;padding-left:0}html[data-netbox-color-mode=dark] pre.change-data>span{display:block;padding-right:1rem;padding-left:1rem}html[data-netbox-color-mode=dark] pre.change-data>span.added{background-color:var(--nbx-change-added)}html[data-netbox-color-mode=dark] pre.change-data>span.removed{background-color:var(--nbx-change-removed)}html[data-netbox-color-mode=dark] pre.change-diff{border-color:transparent}html[data-netbox-color-mode=dark] pre.change-diff.change-removed{background-color:var(--nbx-change-removed)}html[data-netbox-color-mode=dark] pre.change-diff.change-added{background-color:var(--nbx-change-added)}html[data-netbox-color-mode=dark] div.card-overlay{position:absolute;display:flex;align-items:center;justify-content:center;width:100%;height:100%;background-color:#ffffffbf;border-radius:.375rem}html[data-netbox-color-mode=dark] div.card-overlay>div.spinner-border{width:6rem;height:6rem;color:#adb5bd}html[data-netbox-color-mode=dark] .table-controls{display:flex}@media (min-width: 768px){html[data-netbox-color-mode=dark] .table-controls{margin-top:0!important;margin-bottom:0!important}}html[data-netbox-color-mode=dark] .table-controls .table-configure{justify-content:flex-start}@media (min-width: 768px){html[data-netbox-color-mode=dark] .table-controls .table-configure{justify-content:flex-end}}html[data-netbox-color-mode=dark] .table-controls .form-switch.form-check-inline{flex:1 0 auto;font-size:.875rem}html[data-netbox-color-mode=dark] .paginator{display:flex;flex-direction:column;align-items:flex-end;padding:1rem 0}html[data-netbox-color-mode=dark] .nav-tabs .nav-link:hover{border-bottom-color:transparent}html[data-netbox-color-mode=dark] .nav-tabs .nav-link.active{background-color:#171b1d;border-bottom-color:#171b1d;transform:translateY(1px)}html[data-netbox-color-mode=dark] .tab-content{display:flex;flex-direction:column;padding:1rem;background-color:#171b1d;border-bottom:1px solid #495057}@media print{html[data-netbox-color-mode=dark] .tab-content{background-color:var(--nbx-body-bg)!important;border-bottom:none!important}}@media print{html[data-netbox-color-mode=dark] .masonry{position:static!important;display:block!important;height:unset!important}}@media print{html[data-netbox-color-mode=dark] .masonry .masonry-item{position:static!important;top:unset!important;left:unset!important;display:block!important}}html[data-netbox-color-mode=dark] .record-depth{display:inline;font-size:1rem;user-select:none;opacity:.33}html[data-netbox-color-mode=dark] .record-depth span:only-of-type,html[data-netbox-color-mode=dark] .record-depth span:last-of-type{margin-right:.25rem}html[data-netbox-color-mode=dark] .popover.image-preview-popover{max-width:unset}html[data-netbox-color-mode=dark] #django-messages{position:fixed;right:1rem;bottom:0;margin:1rem}html[data-netbox-color-mode=dark] html[data-netbox-url-name=home] .content-container,html[data-netbox-color-mode=dark] html[data-netbox-url-name=home] .search{background-color:#f8f9fa!important}html[data-netbox-color-mode=dark] html[data-netbox-url-name=home][data-netbox-color-mode=dark] .content-container,html[data-netbox-color-mode=dark] html[data-netbox-url-name=home][data-netbox-color-mode=dark] .search{background-color:#171b1d!important}html[data-netbox-color-mode=dark] html[data-netbox-url-name=login] #django-messages{display:none} diff --git a/netbox/project-static/dist/netbox-light.css b/netbox/project-static/dist/netbox-light.css index cf06883a9..3ae6b5779 100644 --- a/netbox/project-static/dist/netbox-light.css +++ b/netbox/project-static/dist/netbox-light.css @@ -1 +1 @@ -:root{--bs-orange: #fd7e14;--bs-teal: #20c997;--bs-white: #fff;--bs-gray: #6c757d;--bs-gray-dark: #343a40;--bs-primary: #337ab7;--bs-secondary: #6c757d;--bs-success: #198754;--bs-info: #0dcaf0;--bs-warning: #ffc107;--bs-danger: #dc3545;--bs-light: #f8f9fa;--bs-dark: #212529;--bs-red: #dc3545;--bs-yellow: #ffc107;--bs-green: #198754;--bs-blue: #0d6efd;--bs-cyan: #0dcaf0;--bs-indigo: #6610f2;--bs-purple: #6f42c1;--bs-pink: #d63384;--bs-darker: #1b1f22;--bs-darkest: #171b1d;--bs-gray: #ced4da;--bs-gray-100: #f8f9fa;--bs-gray-200: #e9ecef;--bs-gray-300: #dee2e6;--bs-gray-400: #ced4da;--bs-gray-500: #adb5bd;--bs-gray-600: #6c757d;--bs-gray-700: #495057;--bs-gray-800: #343a40;--bs-gray-900: #212529;--bs-red-100: #f8d7da;--bs-red-200: #f1aeb5;--bs-red-300: #ea868f;--bs-red-400: #e35d6a;--bs-red-500: #dc3545;--bs-red-600: #b02a37;--bs-red-700: #842029;--bs-red-800: #58151c;--bs-red-900: #2c0b0e;--bs-yellow-100: #fff3cd;--bs-yellow-200: #ffe69c;--bs-yellow-300: #ffda6a;--bs-yellow-400: #ffcd39;--bs-yellow-500: #ffc107;--bs-yellow-600: #cc9a06;--bs-yellow-700: #997404;--bs-yellow-800: #664d03;--bs-yellow-900: #332701;--bs-green-100: #d1e7dd;--bs-green-200: #a3cfbb;--bs-green-300: #75b798;--bs-green-400: #479f76;--bs-green-500: #198754;--bs-green-600: #146c43;--bs-green-700: #0f5132;--bs-green-800: #0a3622;--bs-green-900: #051b11;--bs-blue-100: #cfe2ff;--bs-blue-200: #9ec5fe;--bs-blue-300: #6ea8fe;--bs-blue-400: #3d8bfd;--bs-blue-500: #0d6efd;--bs-blue-600: #0a58ca;--bs-blue-700: #084298;--bs-blue-800: #052c65;--bs-blue-900: #031633;--bs-cyan-100: #cff4fc;--bs-cyan-200: #9eeaf9;--bs-cyan-300: #6edff6;--bs-cyan-400: #3dd5f3;--bs-cyan-500: #0dcaf0;--bs-cyan-600: #0aa2c0;--bs-cyan-700: #087990;--bs-cyan-800: #055160;--bs-cyan-900: #032830;--bs-indigo-100: #e0cffc;--bs-indigo-200: #c29ffa;--bs-indigo-300: #a370f7;--bs-indigo-400: #8540f5;--bs-indigo-500: #6610f2;--bs-indigo-600: #520dc2;--bs-indigo-700: #3d0a91;--bs-indigo-800: #290661;--bs-indigo-900: #140330;--bs-purple-100: #e2d9f3;--bs-purple-200: #c5b3e6;--bs-purple-300: #a98eda;--bs-purple-400: #8c68cd;--bs-purple-500: #6f42c1;--bs-purple-600: #59359a;--bs-purple-700: #432874;--bs-purple-800: #2c1a4d;--bs-purple-900: #160d27;--bs-pink-100: #f7d6e6;--bs-pink-200: #efadce;--bs-pink-300: #e685b5;--bs-pink-400: #de5c9d;--bs-pink-500: #d63384;--bs-pink-600: #ab296a;--bs-pink-700: #801f4f;--bs-pink-800: #561435;--bs-pink-900: #2b0a1a;--bs-font-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, .15), rgba(255, 255, 255, 0))}*,*:before,*:after{box-sizing:border-box}@media (prefers-reduced-motion: no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:var(--bs-font-sans-serif);font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0)}hr{margin:1rem 0;color:inherit;background-color:currentColor;border:0;opacity:.25}hr:not([size]){height:1px}h6,.h6,h5,.h5,h4,.h4,h3,.h3,h2,.h2,h1,.h1{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2}h1,.h1{font-size:calc(1.375rem + 1.5vw)}@media (min-width: 1200px){h1,.h1{font-size:2.5rem}}h2,.h2{font-size:calc(1.325rem + .9vw)}@media (min-width: 1200px){h2,.h2{font-size:2rem}}h3,.h3{font-size:calc(1.3rem + .6vw)}@media (min-width: 1200px){h3,.h3{font-size:1.75rem}}h4,.h4{font-size:calc(1.275rem + .3vw)}@media (min-width: 1200px){h4,.h4{font-size:1.5rem}}h5,.h5{font-size:1.25rem}h6,.h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[title],abbr[data-bs-original-title]{text-decoration:underline dotted;cursor:help;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}ol,ul,dl{margin-top:0;margin-bottom:1rem}ol ol,ul ul,ol ul,ul ol{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:800}small,.small{font-size:.875em}mark,.mark{padding:.2em;background-color:#fcf8e3}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#0d6efd;text-decoration:underline}a:hover{color:#0a58ca}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}pre,code,kbd,samp{font-family:var(--bs-font-monospace);font-size:1em;direction:ltr;unicode-bidi:bidi-override}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:.875em;color:#212529;word-wrap:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:.875em;color:#fff;background-color:#212529;border-radius:.375rem}kbd kbd{padding:0;font-size:1em;font-weight:700}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:#6c757d;text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}thead,tbody,tfoot,tr,td,th{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}input,button,select,optgroup,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]::-webkit-calendar-picker-indicator{display:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button:not(:disabled),[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + .3vw);line-height:inherit}@media (min-width: 1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-text,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:textfield}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{font:inherit}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none!important}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:calc(1.625rem + 4.5vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){.display-1{font-size:5rem}}.display-2{font-size:calc(1.575rem + 3.9vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){.display-2{font-size:4.5rem}}.display-3{font-size:calc(1.525rem + 3.3vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){.display-3{font-size:4rem}}.display-4{font-size:calc(1.475rem + 2.7vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){.display-4{font-size:3.5rem}}.display-5{font-size:calc(1.425rem + 2.1vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){.display-5{font-size:3rem}}.display-6{font-size:calc(1.375rem + 1.5vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){.display-6{font-size:2.5rem}}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:.875em;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{margin-top:-1rem;margin-bottom:1rem;font-size:.875em;color:#6c757d}.blockquote-footer:before{content:"\2014\a0"}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.375rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:.875em;color:#6c757d}.container,.container-fluid,.container-xxl,.container-xl,.container-lg,.container-md,.container-sm{width:100%;padding-right:var(--bs-gutter-x, .75rem);padding-left:var(--bs-gutter-x, .75rem);margin-right:auto;margin-left:auto}@media (min-width: 576px){.container-sm,.container{max-width:540px}}@media (min-width: 768px){.container-md,.container-sm,.container{max-width:720px}}@media (min-width: 992px){.container-lg,.container-md,.container-sm,.container{max-width:960px}}@media (min-width: 1200px){.container-xl,.container-lg,.container-md,.container-sm,.container{max-width:1140px}}@media (min-width: 1400px){.container-xxl,.container-xl,.container-lg,.container-md,.container-sm,.container{max-width:1320px}}.row{--bs-gutter-x: 1.5rem;--bs-gutter-y: 0;display:flex;flex-wrap:wrap;margin-top:calc(var(--bs-gutter-y) * -1);margin-right:calc(var(--bs-gutter-x) * -.5);margin-left:calc(var(--bs-gutter-x) * -.5)}.row>*{flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-top:var(--bs-gutter-y)}.col{flex:1 0 0%}.row-cols-auto>*{flex:0 0 auto;width:auto}.row-cols-1>*{flex:0 0 auto;width:100%}.row-cols-2>*{flex:0 0 auto;width:50%}.row-cols-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-4>*{flex:0 0 auto;width:25%}.row-cols-5>*{flex:0 0 auto;width:20%}.row-cols-6>*{flex:0 0 auto;width:16.6666666667%}@media (min-width: 576px){.col-sm{flex:1 0 0%}.row-cols-sm-auto>*{flex:0 0 auto;width:auto}.row-cols-sm-1>*{flex:0 0 auto;width:100%}.row-cols-sm-2>*{flex:0 0 auto;width:50%}.row-cols-sm-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-sm-4>*{flex:0 0 auto;width:25%}.row-cols-sm-5>*{flex:0 0 auto;width:20%}.row-cols-sm-6>*{flex:0 0 auto;width:16.6666666667%}}@media (min-width: 768px){.col-md{flex:1 0 0%}.row-cols-md-auto>*{flex:0 0 auto;width:auto}.row-cols-md-1>*{flex:0 0 auto;width:100%}.row-cols-md-2>*{flex:0 0 auto;width:50%}.row-cols-md-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-md-4>*{flex:0 0 auto;width:25%}.row-cols-md-5>*{flex:0 0 auto;width:20%}.row-cols-md-6>*{flex:0 0 auto;width:16.6666666667%}}@media (min-width: 992px){.col-lg{flex:1 0 0%}.row-cols-lg-auto>*{flex:0 0 auto;width:auto}.row-cols-lg-1>*{flex:0 0 auto;width:100%}.row-cols-lg-2>*{flex:0 0 auto;width:50%}.row-cols-lg-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-lg-4>*{flex:0 0 auto;width:25%}.row-cols-lg-5>*{flex:0 0 auto;width:20%}.row-cols-lg-6>*{flex:0 0 auto;width:16.6666666667%}}@media (min-width: 1200px){.col-xl{flex:1 0 0%}.row-cols-xl-auto>*{flex:0 0 auto;width:auto}.row-cols-xl-1>*{flex:0 0 auto;width:100%}.row-cols-xl-2>*{flex:0 0 auto;width:50%}.row-cols-xl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xl-4>*{flex:0 0 auto;width:25%}.row-cols-xl-5>*{flex:0 0 auto;width:20%}.row-cols-xl-6>*{flex:0 0 auto;width:16.6666666667%}}@media (min-width: 1400px){.col-xxl{flex:1 0 0%}.row-cols-xxl-auto>*{flex:0 0 auto;width:auto}.row-cols-xxl-1>*{flex:0 0 auto;width:100%}.row-cols-xxl-2>*{flex:0 0 auto;width:50%}.row-cols-xxl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xxl-4>*{flex:0 0 auto;width:25%}.row-cols-xxl-5>*{flex:0 0 auto;width:20%}.row-cols-xxl-6>*{flex:0 0 auto;width:16.6666666667%}}.col-auto{flex:0 0 auto;width:auto}.col-1{flex:0 0 auto;width:8.33333333%}.col-2{flex:0 0 auto;width:16.66666667%}.col-3{flex:0 0 auto;width:25%}.col-4{flex:0 0 auto;width:33.33333333%}.col-5{flex:0 0 auto;width:41.66666667%}.col-6{flex:0 0 auto;width:50%}.col-7{flex:0 0 auto;width:58.33333333%}.col-8{flex:0 0 auto;width:66.66666667%}.col-9{flex:0 0 auto;width:75%}.col-10{flex:0 0 auto;width:83.33333333%}.col-11{flex:0 0 auto;width:91.66666667%}.col-12{flex:0 0 auto;width:100%}.offset-1{margin-left:8.33333333%}.offset-2{margin-left:16.66666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333333%}.offset-5{margin-left:41.66666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333333%}.offset-8{margin-left:66.66666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333333%}.offset-11{margin-left:91.66666667%}.g-0,.gx-0{--bs-gutter-x: 0}.g-0,.gy-0{--bs-gutter-y: 0}.g-1,.gx-1{--bs-gutter-x: .25rem}.g-1,.gy-1{--bs-gutter-y: .25rem}.g-2,.gx-2{--bs-gutter-x: .5rem}.g-2,.gy-2{--bs-gutter-y: .5rem}.g-3,.gx-3{--bs-gutter-x: 1rem}.g-3,.gy-3{--bs-gutter-y: 1rem}.g-4,.gx-4{--bs-gutter-x: 1.5rem}.g-4,.gy-4{--bs-gutter-y: 1.5rem}.g-5,.gx-5{--bs-gutter-x: 3rem}.g-5,.gy-5{--bs-gutter-y: 3rem}@media (min-width: 576px){.col-sm-auto{flex:0 0 auto;width:auto}.col-sm-1{flex:0 0 auto;width:8.33333333%}.col-sm-2{flex:0 0 auto;width:16.66666667%}.col-sm-3{flex:0 0 auto;width:25%}.col-sm-4{flex:0 0 auto;width:33.33333333%}.col-sm-5{flex:0 0 auto;width:41.66666667%}.col-sm-6{flex:0 0 auto;width:50%}.col-sm-7{flex:0 0 auto;width:58.33333333%}.col-sm-8{flex:0 0 auto;width:66.66666667%}.col-sm-9{flex:0 0 auto;width:75%}.col-sm-10{flex:0 0 auto;width:83.33333333%}.col-sm-11{flex:0 0 auto;width:91.66666667%}.col-sm-12{flex:0 0 auto;width:100%}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333333%}.offset-sm-2{margin-left:16.66666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333333%}.offset-sm-5{margin-left:41.66666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333333%}.offset-sm-8{margin-left:66.66666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333333%}.offset-sm-11{margin-left:91.66666667%}.g-sm-0,.gx-sm-0{--bs-gutter-x: 0}.g-sm-0,.gy-sm-0{--bs-gutter-y: 0}.g-sm-1,.gx-sm-1{--bs-gutter-x: .25rem}.g-sm-1,.gy-sm-1{--bs-gutter-y: .25rem}.g-sm-2,.gx-sm-2{--bs-gutter-x: .5rem}.g-sm-2,.gy-sm-2{--bs-gutter-y: .5rem}.g-sm-3,.gx-sm-3{--bs-gutter-x: 1rem}.g-sm-3,.gy-sm-3{--bs-gutter-y: 1rem}.g-sm-4,.gx-sm-4{--bs-gutter-x: 1.5rem}.g-sm-4,.gy-sm-4{--bs-gutter-y: 1.5rem}.g-sm-5,.gx-sm-5{--bs-gutter-x: 3rem}.g-sm-5,.gy-sm-5{--bs-gutter-y: 3rem}}@media (min-width: 768px){.col-md-auto{flex:0 0 auto;width:auto}.col-md-1{flex:0 0 auto;width:8.33333333%}.col-md-2{flex:0 0 auto;width:16.66666667%}.col-md-3{flex:0 0 auto;width:25%}.col-md-4{flex:0 0 auto;width:33.33333333%}.col-md-5{flex:0 0 auto;width:41.66666667%}.col-md-6{flex:0 0 auto;width:50%}.col-md-7{flex:0 0 auto;width:58.33333333%}.col-md-8{flex:0 0 auto;width:66.66666667%}.col-md-9{flex:0 0 auto;width:75%}.col-md-10{flex:0 0 auto;width:83.33333333%}.col-md-11{flex:0 0 auto;width:91.66666667%}.col-md-12{flex:0 0 auto;width:100%}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333333%}.offset-md-2{margin-left:16.66666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333333%}.offset-md-5{margin-left:41.66666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333333%}.offset-md-8{margin-left:66.66666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333333%}.offset-md-11{margin-left:91.66666667%}.g-md-0,.gx-md-0{--bs-gutter-x: 0}.g-md-0,.gy-md-0{--bs-gutter-y: 0}.g-md-1,.gx-md-1{--bs-gutter-x: .25rem}.g-md-1,.gy-md-1{--bs-gutter-y: .25rem}.g-md-2,.gx-md-2{--bs-gutter-x: .5rem}.g-md-2,.gy-md-2{--bs-gutter-y: .5rem}.g-md-3,.gx-md-3{--bs-gutter-x: 1rem}.g-md-3,.gy-md-3{--bs-gutter-y: 1rem}.g-md-4,.gx-md-4{--bs-gutter-x: 1.5rem}.g-md-4,.gy-md-4{--bs-gutter-y: 1.5rem}.g-md-5,.gx-md-5{--bs-gutter-x: 3rem}.g-md-5,.gy-md-5{--bs-gutter-y: 3rem}}@media (min-width: 992px){.col-lg-auto{flex:0 0 auto;width:auto}.col-lg-1{flex:0 0 auto;width:8.33333333%}.col-lg-2{flex:0 0 auto;width:16.66666667%}.col-lg-3{flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;width:33.33333333%}.col-lg-5{flex:0 0 auto;width:41.66666667%}.col-lg-6{flex:0 0 auto;width:50%}.col-lg-7{flex:0 0 auto;width:58.33333333%}.col-lg-8{flex:0 0 auto;width:66.66666667%}.col-lg-9{flex:0 0 auto;width:75%}.col-lg-10{flex:0 0 auto;width:83.33333333%}.col-lg-11{flex:0 0 auto;width:91.66666667%}.col-lg-12{flex:0 0 auto;width:100%}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333333%}.offset-lg-2{margin-left:16.66666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333333%}.offset-lg-5{margin-left:41.66666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333333%}.offset-lg-8{margin-left:66.66666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333333%}.offset-lg-11{margin-left:91.66666667%}.g-lg-0,.gx-lg-0{--bs-gutter-x: 0}.g-lg-0,.gy-lg-0{--bs-gutter-y: 0}.g-lg-1,.gx-lg-1{--bs-gutter-x: .25rem}.g-lg-1,.gy-lg-1{--bs-gutter-y: .25rem}.g-lg-2,.gx-lg-2{--bs-gutter-x: .5rem}.g-lg-2,.gy-lg-2{--bs-gutter-y: .5rem}.g-lg-3,.gx-lg-3{--bs-gutter-x: 1rem}.g-lg-3,.gy-lg-3{--bs-gutter-y: 1rem}.g-lg-4,.gx-lg-4{--bs-gutter-x: 1.5rem}.g-lg-4,.gy-lg-4{--bs-gutter-y: 1.5rem}.g-lg-5,.gx-lg-5{--bs-gutter-x: 3rem}.g-lg-5,.gy-lg-5{--bs-gutter-y: 3rem}}@media (min-width: 1200px){.col-xl-auto{flex:0 0 auto;width:auto}.col-xl-1{flex:0 0 auto;width:8.33333333%}.col-xl-2{flex:0 0 auto;width:16.66666667%}.col-xl-3{flex:0 0 auto;width:25%}.col-xl-4{flex:0 0 auto;width:33.33333333%}.col-xl-5{flex:0 0 auto;width:41.66666667%}.col-xl-6{flex:0 0 auto;width:50%}.col-xl-7{flex:0 0 auto;width:58.33333333%}.col-xl-8{flex:0 0 auto;width:66.66666667%}.col-xl-9{flex:0 0 auto;width:75%}.col-xl-10{flex:0 0 auto;width:83.33333333%}.col-xl-11{flex:0 0 auto;width:91.66666667%}.col-xl-12{flex:0 0 auto;width:100%}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333333%}.offset-xl-2{margin-left:16.66666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333333%}.offset-xl-5{margin-left:41.66666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333333%}.offset-xl-8{margin-left:66.66666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333333%}.offset-xl-11{margin-left:91.66666667%}.g-xl-0,.gx-xl-0{--bs-gutter-x: 0}.g-xl-0,.gy-xl-0{--bs-gutter-y: 0}.g-xl-1,.gx-xl-1{--bs-gutter-x: .25rem}.g-xl-1,.gy-xl-1{--bs-gutter-y: .25rem}.g-xl-2,.gx-xl-2{--bs-gutter-x: .5rem}.g-xl-2,.gy-xl-2{--bs-gutter-y: .5rem}.g-xl-3,.gx-xl-3{--bs-gutter-x: 1rem}.g-xl-3,.gy-xl-3{--bs-gutter-y: 1rem}.g-xl-4,.gx-xl-4{--bs-gutter-x: 1.5rem}.g-xl-4,.gy-xl-4{--bs-gutter-y: 1.5rem}.g-xl-5,.gx-xl-5{--bs-gutter-x: 3rem}.g-xl-5,.gy-xl-5{--bs-gutter-y: 3rem}}@media (min-width: 1400px){.col-xxl-auto{flex:0 0 auto;width:auto}.col-xxl-1{flex:0 0 auto;width:8.33333333%}.col-xxl-2{flex:0 0 auto;width:16.66666667%}.col-xxl-3{flex:0 0 auto;width:25%}.col-xxl-4{flex:0 0 auto;width:33.33333333%}.col-xxl-5{flex:0 0 auto;width:41.66666667%}.col-xxl-6{flex:0 0 auto;width:50%}.col-xxl-7{flex:0 0 auto;width:58.33333333%}.col-xxl-8{flex:0 0 auto;width:66.66666667%}.col-xxl-9{flex:0 0 auto;width:75%}.col-xxl-10{flex:0 0 auto;width:83.33333333%}.col-xxl-11{flex:0 0 auto;width:91.66666667%}.col-xxl-12{flex:0 0 auto;width:100%}.offset-xxl-0{margin-left:0}.offset-xxl-1{margin-left:8.33333333%}.offset-xxl-2{margin-left:16.66666667%}.offset-xxl-3{margin-left:25%}.offset-xxl-4{margin-left:33.33333333%}.offset-xxl-5{margin-left:41.66666667%}.offset-xxl-6{margin-left:50%}.offset-xxl-7{margin-left:58.33333333%}.offset-xxl-8{margin-left:66.66666667%}.offset-xxl-9{margin-left:75%}.offset-xxl-10{margin-left:83.33333333%}.offset-xxl-11{margin-left:91.66666667%}.g-xxl-0,.gx-xxl-0{--bs-gutter-x: 0}.g-xxl-0,.gy-xxl-0{--bs-gutter-y: 0}.g-xxl-1,.gx-xxl-1{--bs-gutter-x: .25rem}.g-xxl-1,.gy-xxl-1{--bs-gutter-y: .25rem}.g-xxl-2,.gx-xxl-2{--bs-gutter-x: .5rem}.g-xxl-2,.gy-xxl-2{--bs-gutter-y: .5rem}.g-xxl-3,.gx-xxl-3{--bs-gutter-x: 1rem}.g-xxl-3,.gy-xxl-3{--bs-gutter-y: 1rem}.g-xxl-4,.gx-xxl-4{--bs-gutter-x: 1.5rem}.g-xxl-4,.gy-xxl-4{--bs-gutter-y: 1.5rem}.g-xxl-5,.gx-xxl-5{--bs-gutter-x: 3rem}.g-xxl-5,.gy-xxl-5{--bs-gutter-y: 3rem}}.table{--bs-table-bg: transparent;--bs-table-accent-bg: transparent;--bs-table-striped-color: #212529;--bs-table-striped-bg: rgba(0, 0, 0, .05);--bs-table-active-color: #212529;--bs-table-active-bg: rgba(0, 0, 0, .1);--bs-table-hover-color: #212529;--bs-table-hover-bg: rgba(0, 0, 0, .075);width:100%;margin-bottom:1rem;color:#212529;vertical-align:top;border-color:#dee2e6}.table>:not(caption)>*>*{padding:.5rem;background-color:var(--bs-table-bg);border-bottom-width:1px;box-shadow:inset 0 0 0 9999px var(--bs-table-accent-bg)}.table>tbody{vertical-align:inherit}.table>thead{vertical-align:bottom}.table>:not(:last-child)>:last-child>*{border-bottom-color:currentColor}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*{padding:.25rem}.table-bordered>:not(caption)>*{border-width:1px 0}.table-bordered>:not(caption)>*>*{border-width:0 1px}.table-borderless>:not(caption)>*>*{border-bottom-width:0}.table-striped>tbody>tr:nth-of-type(odd){--bs-table-accent-bg: var(--bs-table-striped-bg);color:var(--bs-table-striped-color)}.table-active{--bs-table-accent-bg: var(--bs-table-active-bg);color:var(--bs-table-active-color)}.table-hover>tbody>tr:hover{--bs-table-accent-bg: var(--bs-table-hover-bg);color:var(--bs-table-hover-color)}.table-primary{--bs-table-bg: #cfe2ff;--bs-table-striped-bg: #c5d7f2;--bs-table-striped-color: #000;--bs-table-active-bg: #bacbe6;--bs-table-active-color: #000;--bs-table-hover-bg: #bfd1ec;--bs-table-hover-color: #000;color:#000;border-color:#bacbe6}.table-secondary{--bs-table-bg: #e2e3e5;--bs-table-striped-bg: #d7d8da;--bs-table-striped-color: #000;--bs-table-active-bg: #cbccce;--bs-table-active-color: #000;--bs-table-hover-bg: #d1d2d4;--bs-table-hover-color: #000;color:#000;border-color:#cbccce}.table-success{--bs-table-bg: #d1e7dd;--bs-table-striped-bg: #c7dbd2;--bs-table-striped-color: #000;--bs-table-active-bg: #bcd0c7;--bs-table-active-color: #000;--bs-table-hover-bg: #c1d6cc;--bs-table-hover-color: #000;color:#000;border-color:#bcd0c7}.table-info{--bs-table-bg: #cff4fc;--bs-table-striped-bg: #c5e8ef;--bs-table-striped-color: #000;--bs-table-active-bg: #badce3;--bs-table-active-color: #000;--bs-table-hover-bg: #bfe2e9;--bs-table-hover-color: #000;color:#000;border-color:#badce3}.table-warning{--bs-table-bg: #fff3cd;--bs-table-striped-bg: #f2e7c3;--bs-table-striped-color: #000;--bs-table-active-bg: #e6dbb9;--bs-table-active-color: #000;--bs-table-hover-bg: #ece1be;--bs-table-hover-color: #000;color:#000;border-color:#e6dbb9}.table-danger{--bs-table-bg: #f8d7da;--bs-table-striped-bg: #eccccf;--bs-table-striped-color: #000;--bs-table-active-bg: #dfc2c4;--bs-table-active-color: #000;--bs-table-hover-bg: #e5c7ca;--bs-table-hover-color: #000;color:#000;border-color:#dfc2c4}.table-light{--bs-table-bg: #f8f9fa;--bs-table-striped-bg: #ecedee;--bs-table-striped-color: #000;--bs-table-active-bg: #dfe0e1;--bs-table-active-color: #000;--bs-table-hover-bg: #e5e6e7;--bs-table-hover-color: #000;color:#000;border-color:#dfe0e1}.table-dark{--bs-table-bg: #212529;--bs-table-striped-bg: #2c3034;--bs-table-striped-color: #fff;--bs-table-active-bg: #373b3e;--bs-table-active-color: #fff;--bs-table-hover-bg: #323539;--bs-table-hover-color: #fff;color:#fff;border-color:#373b3e}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}@media (max-width: 575.98px){.table-responsive-sm{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width: 767.98px){.table-responsive-md{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width: 991.98px){.table-responsive-lg{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width: 1199.98px){.table-responsive-xl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width: 1399.98px){.table-responsive-xxl{overflow-x:auto;-webkit-overflow-scrolling:touch}}.form-label{margin-bottom:.5rem}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem}.form-text{margin-top:.25rem;font-size:.875em;color:#6c757d}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;background-clip:padding-box;border:1px solid #e9ecef;appearance:none;border-radius:.375rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion: reduce){.form-control{transition:none}}.form-control[type=file]{overflow:hidden}.form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}.form-control:focus{color:#212529;background-color:#fff;border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}.form-control::-webkit-date-and-time-value{height:1.5em}.form-control::placeholder{color:#adb5bd;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}.form-control::file-selector-button{padding:.375rem .75rem;margin:-.375rem -.75rem;margin-inline-end:.75rem;color:#212529;background-color:#e9ecef;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion: reduce){.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:#dde0e3}.form-control::-webkit-file-upload-button{padding:.375rem .75rem;margin:-.375rem -.75rem;margin-inline-end:.75rem;color:#212529;background-color:#e9ecef;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion: reduce){.form-control::-webkit-file-upload-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button{background-color:#dde0e3}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;line-height:1.5;color:#212529;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-sm,.form-control-plaintext.form-control-lg{padding-right:0;padding-left:0}.form-control-sm{min-height:calc(1.5em + (.5rem + 2px));padding:.25rem .5rem;font-size:.875rem;border-radius:.375rem}.form-control-sm::file-selector-button{padding:.25rem .5rem;margin:-.25rem -.5rem;margin-inline-end:.5rem}.form-control-sm::-webkit-file-upload-button{padding:.25rem .5rem;margin:-.25rem -.5rem;margin-inline-end:.5rem}.form-control-lg{min-height:calc(1.5em + (1rem + 2px));padding:.5rem 1rem;font-size:1.25rem;border-radius:.75rem}.form-control-lg::file-selector-button{padding:.5rem 1rem;margin:-.5rem -1rem;margin-inline-end:1rem}.form-control-lg::-webkit-file-upload-button{padding:.5rem 1rem;margin:-.5rem -1rem;margin-inline-end:1rem}textarea.form-control{min-height:calc(1.5em + (.75rem + 2px))}textarea.form-control-sm{min-height:calc(1.5em + (.5rem + 2px))}textarea.form-control-lg{min-height:calc(1.5em + (1rem + 2px))}.form-control-color{max-width:3rem;height:auto;padding:.375rem}.form-control-color:not(:disabled):not([readonly]){cursor:pointer}.form-control-color::-moz-color-swatch{height:1.5em;border-radius:.375rem}.form-control-color::-webkit-color-swatch{height:1.5em;border-radius:.375rem}.form-select{display:block;width:100%;padding:.375rem 2.25rem .375rem .75rem;-moz-padding-start:calc(.75rem - 3px);font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right .75rem center;background-size:16px 12px;border:1px solid #ced4da;border-radius:.375rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion: reduce){.form-select{transition:none}}.form-select:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}.form-select[multiple],.form-select[size]:not([size="1"]){padding-right:.75rem;background-image:none}.form-select:disabled{color:#6c757d;background-color:#e9ecef}.form-select:-moz-focusring{color:transparent;text-shadow:0 0 0 #212529}.form-select-sm{padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem}.form-select-lg{padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}.form-check{display:block;min-height:1.5rem;padding-left:1.5em;margin-bottom:.125rem}.form-check .form-check-input{float:left;margin-left:-1.5em}.form-check-input{width:1em;height:1em;margin-top:.25em;vertical-align:top;background-color:#fff;background-repeat:no-repeat;background-position:center;background-size:contain;border:1px solid rgba(0,0,0,.25);appearance:none;color-adjust:exact}.form-check-input[type=checkbox]{border-radius:.25em}.form-check-input[type=radio]{border-radius:50%}.form-check-input:active{filter:brightness(90%)}.form-check-input:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}.form-check-input:checked{background-color:#0d6efd;border-color:#0d6efd}.form-check-input:checked[type=checkbox]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10l3 3l6-6'/%3e%3c/svg%3e")}.form-check-input:checked[type=radio]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e")}.form-check-input[type=checkbox]:indeterminate{background-color:#0d6efd;border-color:#0d6efd;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e")}.form-check-input:disabled{pointer-events:none;filter:none;opacity:.5}.form-check-input[disabled]~.form-check-label,.form-check-input:disabled~.form-check-label{opacity:.5}.form-switch{padding-left:2.5em}.form-switch .form-check-input{width:2em;margin-left:-2.5em;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e");background-position:left center;border-radius:2em;transition:background-position .15s ease-in-out}@media (prefers-reduced-motion: reduce){.form-switch .form-check-input{transition:none}}.form-switch .form-check-input:focus{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2386b7fe'/%3e%3c/svg%3e")}.form-switch .form-check-input:checked{background-position:right center;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.form-check-inline{display:inline-block;margin-right:1rem}.btn-check{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.btn-check[disabled]+.btn,.btn-check:disabled+.btn{pointer-events:none;filter:none;opacity:.65}.form-range{width:100%;height:1.5rem;padding:0;background-color:transparent;appearance:none}.form-range:focus{outline:0}.form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem #0d6efd40}.form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem #0d6efd40}.form-range::-moz-focus-outer{border:0}.form-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#0d6efd;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion: reduce){.form-range::-webkit-slider-thumb{transition:none}}.form-range::-webkit-slider-thumb:active{background-color:#b6d4fe}.form-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.form-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#0d6efd;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion: reduce){.form-range::-moz-range-thumb{transition:none}}.form-range::-moz-range-thumb:active{background-color:#b6d4fe}.form-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.form-range:disabled{pointer-events:none}.form-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.form-range:disabled::-moz-range-thumb{background-color:#adb5bd}.form-floating>.form-control,.form-floating>.form-select{height:calc(3.5rem + 2px);line-height:1.25}.form-floating>label{position:absolute;top:0;left:0;height:100%;padding:1rem .75rem;pointer-events:none;border:1px solid transparent;transform-origin:0 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out}@media (prefers-reduced-motion: reduce){.form-floating>label{transition:none}}.form-floating>.form-control{padding:1rem .75rem}.form-floating>.form-control::placeholder{color:transparent}.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:focus~label,.form-floating>.form-control:not(:placeholder-shown)~label,.form-floating>.form-select~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translate(.15rem)}.form-floating>.form-control:-webkit-autofill~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translate(.15rem)}.input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}.input-group>.form-control,.input-group>.form-select{position:relative;flex:1 1 auto;width:1%;min-width:0}.input-group>.form-control:focus,.input-group>.form-select:focus{z-index:3}.input-group .btn{position:relative;z-index:2}.input-group .btn:focus{z-index:3}.input-group-text{display:flex;align-items:center;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.375rem}.input-group-lg>.form-control,.input-group-lg>.form-select,.input-group-lg>.input-group-text,.input-group-lg>.btn{padding:.5rem 1rem;font-size:1.25rem;border-radius:.75rem}.input-group-sm>.form-control,.input-group-sm>.form-select,.input-group-sm>.input-group-text,.input-group-sm>.btn{padding:.25rem .5rem;font-size:.875rem;border-radius:.375rem}.input-group-lg>.form-select,.input-group-sm>.form-select{padding-right:3rem}.input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu),.input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3){border-top-right-radius:0;border-bottom-right-radius:0}.input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu),.input-group.has-validation>.dropdown-toggle:nth-last-child(n+4){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-left:-1px;border-top-left-radius:0;border-bottom-left-radius:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#198754}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:#198754e6;border-radius:.375rem}.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip,.is-valid~.valid-feedback,.is-valid~.valid-tooltip{display:block}.was-validated .form-control:valid,.form-control.is-valid{border-color:#198754;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.was-validated .form-control:valid:focus,.form-control.is-valid:focus{border-color:#198754;box-shadow:0 0 0 .25rem #19875440}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.was-validated .form-select:valid,.form-select.is-valid{border-color:#198754}.was-validated .form-select:valid:not([multiple]):not([size]),.was-validated .form-select:valid:not([multiple])[size="1"],.form-select.is-valid:not([multiple]):not([size]),.form-select.is-valid:not([multiple])[size="1"]{padding-right:4.125rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.was-validated .form-select:valid:focus,.form-select.is-valid:focus{border-color:#198754;box-shadow:0 0 0 .25rem #19875440}.was-validated .form-check-input:valid,.form-check-input.is-valid{border-color:#198754}.was-validated .form-check-input:valid:checked,.form-check-input.is-valid:checked{background-color:#198754}.was-validated .form-check-input:valid:focus,.form-check-input.is-valid:focus{box-shadow:0 0 0 .25rem #19875440}.was-validated .form-check-input:valid~.form-check-label,.form-check-input.is-valid~.form-check-label{color:#198754}.form-check-inline .form-check-input~.valid-feedback{margin-left:.5em}.was-validated .input-group .form-control:valid,.input-group .form-control.is-valid,.was-validated .input-group .form-select:valid,.input-group .form-select.is-valid{z-index:1}.was-validated .input-group .form-control:valid:focus,.input-group .form-control.is-valid:focus,.was-validated .input-group .form-select:valid:focus,.input-group .form-select.is-valid:focus{z-index:3}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:#dc3545e6;border-radius:.375rem}.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip,.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip{display:block}.was-validated .form-control:invalid,.form-control.is-invalid{border-color:#dc3545;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.was-validated .form-control:invalid:focus,.form-control.is-invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .25rem #dc354540}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.was-validated .form-select:invalid,.form-select.is-invalid{border-color:#dc3545}.was-validated .form-select:invalid:not([multiple]):not([size]),.was-validated .form-select:invalid:not([multiple])[size="1"],.form-select.is-invalid:not([multiple]):not([size]),.form-select.is-invalid:not([multiple])[size="1"]{padding-right:4.125rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.was-validated .form-select:invalid:focus,.form-select.is-invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .25rem #dc354540}.was-validated .form-check-input:invalid,.form-check-input.is-invalid{border-color:#dc3545}.was-validated .form-check-input:invalid:checked,.form-check-input.is-invalid:checked{background-color:#dc3545}.was-validated .form-check-input:invalid:focus,.form-check-input.is-invalid:focus{box-shadow:0 0 0 .25rem #dc354540}.was-validated .form-check-input:invalid~.form-check-label,.form-check-input.is-invalid~.form-check-label{color:#dc3545}.form-check-inline .form-check-input~.invalid-feedback{margin-left:.5em}.was-validated .input-group .form-control:invalid,.input-group .form-control.is-invalid,.was-validated .input-group .form-select:invalid,.input-group .form-select.is-invalid{z-index:2}.was-validated .input-group .form-control:invalid:focus,.input-group .form-control.is-invalid:focus,.was-validated .input-group .form-select:invalid:focus,.input-group .form-select.is-invalid:focus{z-index:3}.btn{display:inline-block;font-weight:400;line-height:1.5;color:#212529;text-align:center;text-decoration:none;vertical-align:middle;cursor:pointer;user-select:none;background-color:transparent;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;border-radius:.375rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion: reduce){.btn{transition:none}}.btn:hover{color:#212529}.btn-check:focus+.btn,.btn:focus{outline:0;box-shadow:0 0 0 .25rem #0d6efd40}.btn:disabled,.btn.disabled,fieldset:disabled .btn{pointer-events:none;opacity:.65}.btn-primary{color:#fff;background-color:#337ab7;border-color:#337ab7}.btn-primary:hover{color:#fff;background-color:#2b689c;border-color:#296292}.btn-check:focus+.btn-primary,.btn-primary:focus{color:#fff;background-color:#2b689c;border-color:#296292;box-shadow:0 0 0 .25rem #528ec280}.btn-check:checked+.btn-primary,.btn-check:active+.btn-primary,.btn-primary:active,.btn-primary.active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#296292;border-color:#265c89}.btn-check:checked+.btn-primary:focus,.btn-check:active+.btn-primary:focus,.btn-primary:active:focus,.btn-primary.active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #528ec280}.btn-primary:disabled,.btn-primary.disabled{color:#fff;background-color:#337ab7;border-color:#337ab7}.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:hover{color:#fff;background-color:#5c636a;border-color:#565e64}.btn-check:focus+.btn-secondary,.btn-secondary:focus{color:#fff;background-color:#5c636a;border-color:#565e64;box-shadow:0 0 0 .25rem #828a9180}.btn-check:checked+.btn-secondary,.btn-check:active+.btn-secondary,.btn-secondary:active,.btn-secondary.active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#565e64;border-color:#51585e}.btn-check:checked+.btn-secondary:focus,.btn-check:active+.btn-secondary:focus,.btn-secondary:active:focus,.btn-secondary.active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #828a9180}.btn-secondary:disabled,.btn-secondary.disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-success{color:#fff;background-color:#198754;border-color:#198754}.btn-success:hover{color:#fff;background-color:#157347;border-color:#146c43}.btn-check:focus+.btn-success,.btn-success:focus{color:#fff;background-color:#157347;border-color:#146c43;box-shadow:0 0 0 .25rem #3c996e80}.btn-check:checked+.btn-success,.btn-check:active+.btn-success,.btn-success:active,.btn-success.active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#146c43;border-color:#13653f}.btn-check:checked+.btn-success:focus,.btn-check:active+.btn-success:focus,.btn-success:active:focus,.btn-success.active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #3c996e80}.btn-success:disabled,.btn-success.disabled{color:#fff;background-color:#198754;border-color:#198754}.btn-info{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-info:hover{color:#000;background-color:#31d2f2;border-color:#25cff2}.btn-check:focus+.btn-info,.btn-info:focus{color:#000;background-color:#31d2f2;border-color:#25cff2;box-shadow:0 0 0 .25rem #0baccc80}.btn-check:checked+.btn-info,.btn-check:active+.btn-info,.btn-info:active,.btn-info.active,.show>.btn-info.dropdown-toggle{color:#000;background-color:#3dd5f3;border-color:#25cff2}.btn-check:checked+.btn-info:focus,.btn-check:active+.btn-info:focus,.btn-info:active:focus,.btn-info.active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #0baccc80}.btn-info:disabled,.btn-info.disabled{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-warning{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-warning:hover{color:#000;background-color:#ffca2c;border-color:#ffc720}.btn-check:focus+.btn-warning,.btn-warning:focus{color:#000;background-color:#ffca2c;border-color:#ffc720;box-shadow:0 0 0 .25rem #d9a40680}.btn-check:checked+.btn-warning,.btn-check:active+.btn-warning,.btn-warning:active,.btn-warning.active,.show>.btn-warning.dropdown-toggle{color:#000;background-color:#ffcd39;border-color:#ffc720}.btn-check:checked+.btn-warning:focus,.btn-check:active+.btn-warning:focus,.btn-warning:active:focus,.btn-warning.active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #d9a40680}.btn-warning:disabled,.btn-warning.disabled{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:hover{color:#fff;background-color:#bb2d3b;border-color:#b02a37}.btn-check:focus+.btn-danger,.btn-danger:focus{color:#fff;background-color:#bb2d3b;border-color:#b02a37;box-shadow:0 0 0 .25rem #e1536180}.btn-check:checked+.btn-danger,.btn-check:active+.btn-danger,.btn-danger:active,.btn-danger.active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#b02a37;border-color:#a52834}.btn-check:checked+.btn-danger:focus,.btn-check:active+.btn-danger:focus,.btn-danger:active:focus,.btn-danger.active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #e1536180}.btn-danger:disabled,.btn-danger.disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-light{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:hover{color:#000;background-color:#f9fafb;border-color:#f9fafb}.btn-check:focus+.btn-light,.btn-light:focus{color:#000;background-color:#f9fafb;border-color:#f9fafb;box-shadow:0 0 0 .25rem #d3d4d580}.btn-check:checked+.btn-light,.btn-check:active+.btn-light,.btn-light:active,.btn-light.active,.show>.btn-light.dropdown-toggle{color:#000;background-color:#f9fafb;border-color:#f9fafb}.btn-check:checked+.btn-light:focus,.btn-check:active+.btn-light:focus,.btn-light:active:focus,.btn-light.active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #d3d4d580}.btn-light:disabled,.btn-light.disabled{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-dark{color:#fff;background-color:#212529;border-color:#212529}.btn-dark:hover{color:#fff;background-color:#1c1f23;border-color:#1a1e21}.btn-check:focus+.btn-dark,.btn-dark:focus{color:#fff;background-color:#1c1f23;border-color:#1a1e21;box-shadow:0 0 0 .25rem #42464980}.btn-check:checked+.btn-dark,.btn-check:active+.btn-dark,.btn-dark:active,.btn-dark.active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#1a1e21;border-color:#191c1f}.btn-check:checked+.btn-dark:focus,.btn-check:active+.btn-dark:focus,.btn-dark:active:focus,.btn-dark.active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #42464980}.btn-dark:disabled,.btn-dark.disabled{color:#fff;background-color:#212529;border-color:#212529}.btn-red{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-red:hover{color:#fff;background-color:#bb2d3b;border-color:#b02a37}.btn-check:focus+.btn-red,.btn-red:focus{color:#fff;background-color:#bb2d3b;border-color:#b02a37;box-shadow:0 0 0 .25rem #e1536180}.btn-check:checked+.btn-red,.btn-check:active+.btn-red,.btn-red:active,.btn-red.active,.show>.btn-red.dropdown-toggle{color:#fff;background-color:#b02a37;border-color:#a52834}.btn-check:checked+.btn-red:focus,.btn-check:active+.btn-red:focus,.btn-red:active:focus,.btn-red.active:focus,.show>.btn-red.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #e1536180}.btn-red:disabled,.btn-red.disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-yellow{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-yellow:hover{color:#000;background-color:#ffca2c;border-color:#ffc720}.btn-check:focus+.btn-yellow,.btn-yellow:focus{color:#000;background-color:#ffca2c;border-color:#ffc720;box-shadow:0 0 0 .25rem #d9a40680}.btn-check:checked+.btn-yellow,.btn-check:active+.btn-yellow,.btn-yellow:active,.btn-yellow.active,.show>.btn-yellow.dropdown-toggle{color:#000;background-color:#ffcd39;border-color:#ffc720}.btn-check:checked+.btn-yellow:focus,.btn-check:active+.btn-yellow:focus,.btn-yellow:active:focus,.btn-yellow.active:focus,.show>.btn-yellow.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #d9a40680}.btn-yellow:disabled,.btn-yellow.disabled{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-green{color:#fff;background-color:#198754;border-color:#198754}.btn-green:hover{color:#fff;background-color:#157347;border-color:#146c43}.btn-check:focus+.btn-green,.btn-green:focus{color:#fff;background-color:#157347;border-color:#146c43;box-shadow:0 0 0 .25rem #3c996e80}.btn-check:checked+.btn-green,.btn-check:active+.btn-green,.btn-green:active,.btn-green.active,.show>.btn-green.dropdown-toggle{color:#fff;background-color:#146c43;border-color:#13653f}.btn-check:checked+.btn-green:focus,.btn-check:active+.btn-green:focus,.btn-green:active:focus,.btn-green.active:focus,.show>.btn-green.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #3c996e80}.btn-green:disabled,.btn-green.disabled{color:#fff;background-color:#198754;border-color:#198754}.btn-blue{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-blue:hover{color:#fff;background-color:#0b5ed7;border-color:#0a58ca}.btn-check:focus+.btn-blue,.btn-blue:focus{color:#fff;background-color:#0b5ed7;border-color:#0a58ca;box-shadow:0 0 0 .25rem #3184fd80}.btn-check:checked+.btn-blue,.btn-check:active+.btn-blue,.btn-blue:active,.btn-blue.active,.show>.btn-blue.dropdown-toggle{color:#fff;background-color:#0a58ca;border-color:#0a53be}.btn-check:checked+.btn-blue:focus,.btn-check:active+.btn-blue:focus,.btn-blue:active:focus,.btn-blue.active:focus,.show>.btn-blue.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #3184fd80}.btn-blue:disabled,.btn-blue.disabled{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-cyan{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-cyan:hover{color:#000;background-color:#31d2f2;border-color:#25cff2}.btn-check:focus+.btn-cyan,.btn-cyan:focus{color:#000;background-color:#31d2f2;border-color:#25cff2;box-shadow:0 0 0 .25rem #0baccc80}.btn-check:checked+.btn-cyan,.btn-check:active+.btn-cyan,.btn-cyan:active,.btn-cyan.active,.show>.btn-cyan.dropdown-toggle{color:#000;background-color:#3dd5f3;border-color:#25cff2}.btn-check:checked+.btn-cyan:focus,.btn-check:active+.btn-cyan:focus,.btn-cyan:active:focus,.btn-cyan.active:focus,.show>.btn-cyan.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #0baccc80}.btn-cyan:disabled,.btn-cyan.disabled{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-indigo{color:#fff;background-color:#6610f2;border-color:#6610f2}.btn-indigo:hover{color:#fff;background-color:#570ece;border-color:#520dc2}.btn-check:focus+.btn-indigo,.btn-indigo:focus{color:#fff;background-color:#570ece;border-color:#520dc2;box-shadow:0 0 0 .25rem #7d34f480}.btn-check:checked+.btn-indigo,.btn-check:active+.btn-indigo,.btn-indigo:active,.btn-indigo.active,.show>.btn-indigo.dropdown-toggle{color:#fff;background-color:#520dc2;border-color:#4d0cb6}.btn-check:checked+.btn-indigo:focus,.btn-check:active+.btn-indigo:focus,.btn-indigo:active:focus,.btn-indigo.active:focus,.show>.btn-indigo.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #7d34f480}.btn-indigo:disabled,.btn-indigo.disabled{color:#fff;background-color:#6610f2;border-color:#6610f2}.btn-purple{color:#fff;background-color:#6f42c1;border-color:#6f42c1}.btn-purple:hover{color:#fff;background-color:#5e38a4;border-color:#59359a}.btn-check:focus+.btn-purple,.btn-purple:focus{color:#fff;background-color:#5e38a4;border-color:#59359a;box-shadow:0 0 0 .25rem #855eca80}.btn-check:checked+.btn-purple,.btn-check:active+.btn-purple,.btn-purple:active,.btn-purple.active,.show>.btn-purple.dropdown-toggle{color:#fff;background-color:#59359a;border-color:#533291}.btn-check:checked+.btn-purple:focus,.btn-check:active+.btn-purple:focus,.btn-purple:active:focus,.btn-purple.active:focus,.show>.btn-purple.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #855eca80}.btn-purple:disabled,.btn-purple.disabled{color:#fff;background-color:#6f42c1;border-color:#6f42c1}.btn-pink{color:#fff;background-color:#d63384;border-color:#d63384}.btn-pink:hover{color:#fff;background-color:#b62b70;border-color:#ab296a}.btn-check:focus+.btn-pink,.btn-pink:focus{color:#fff;background-color:#b62b70;border-color:#ab296a;box-shadow:0 0 0 .25rem #dc529680}.btn-check:checked+.btn-pink,.btn-check:active+.btn-pink,.btn-pink:active,.btn-pink.active,.show>.btn-pink.dropdown-toggle{color:#fff;background-color:#ab296a;border-color:#a12663}.btn-check:checked+.btn-pink:focus,.btn-check:active+.btn-pink:focus,.btn-pink:active:focus,.btn-pink.active:focus,.show>.btn-pink.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #dc529680}.btn-pink:disabled,.btn-pink.disabled{color:#fff;background-color:#d63384;border-color:#d63384}.btn-darker{color:#fff;background-color:#1b1f22;border-color:#1b1f22}.btn-darker:hover{color:#fff;background-color:#171a1d;border-color:#16191b}.btn-check:focus+.btn-darker,.btn-darker:focus{color:#fff;background-color:#171a1d;border-color:#16191b;box-shadow:0 0 0 .25rem #3d414380}.btn-check:checked+.btn-darker,.btn-check:active+.btn-darker,.btn-darker:active,.btn-darker.active,.show>.btn-darker.dropdown-toggle{color:#fff;background-color:#16191b;border-color:#14171a}.btn-check:checked+.btn-darker:focus,.btn-check:active+.btn-darker:focus,.btn-darker:active:focus,.btn-darker.active:focus,.show>.btn-darker.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #3d414380}.btn-darker:disabled,.btn-darker.disabled{color:#fff;background-color:#1b1f22;border-color:#1b1f22}.btn-darkest{color:#fff;background-color:#171b1d;border-color:#171b1d}.btn-darkest:hover{color:#fff;background-color:#141719;border-color:#121617}.btn-check:focus+.btn-darkest,.btn-darkest:focus{color:#fff;background-color:#141719;border-color:#121617;box-shadow:0 0 0 .25rem #3a3d3f80}.btn-check:checked+.btn-darkest,.btn-check:active+.btn-darkest,.btn-darkest:active,.btn-darkest.active,.show>.btn-darkest.dropdown-toggle{color:#fff;background-color:#121617;border-color:#111416}.btn-check:checked+.btn-darkest:focus,.btn-check:active+.btn-darkest:focus,.btn-darkest:active:focus,.btn-darkest.active:focus,.show>.btn-darkest.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #3a3d3f80}.btn-darkest:disabled,.btn-darkest.disabled{color:#fff;background-color:#171b1d;border-color:#171b1d}.btn-gray{color:#000;background-color:#ced4da;border-color:#ced4da}.btn-gray:hover{color:#000;background-color:#d5dae0;border-color:#d3d8de}.btn-check:focus+.btn-gray,.btn-gray:focus{color:#000;background-color:#d5dae0;border-color:#d3d8de;box-shadow:0 0 0 .25rem #afb4b980}.btn-check:checked+.btn-gray,.btn-check:active+.btn-gray,.btn-gray:active,.btn-gray.active,.show>.btn-gray.dropdown-toggle{color:#000;background-color:#d8dde1;border-color:#d3d8de}.btn-check:checked+.btn-gray:focus,.btn-check:active+.btn-gray:focus,.btn-gray:active:focus,.btn-gray.active:focus,.show>.btn-gray.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #afb4b980}.btn-gray:disabled,.btn-gray.disabled{color:#000;background-color:#ced4da;border-color:#ced4da}.btn-gray-100{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-gray-100:hover{color:#000;background-color:#f9fafb;border-color:#f9fafb}.btn-check:focus+.btn-gray-100,.btn-gray-100:focus{color:#000;background-color:#f9fafb;border-color:#f9fafb;box-shadow:0 0 0 .25rem #d3d4d580}.btn-check:checked+.btn-gray-100,.btn-check:active+.btn-gray-100,.btn-gray-100:active,.btn-gray-100.active,.show>.btn-gray-100.dropdown-toggle{color:#000;background-color:#f9fafb;border-color:#f9fafb}.btn-check:checked+.btn-gray-100:focus,.btn-check:active+.btn-gray-100:focus,.btn-gray-100:active:focus,.btn-gray-100.active:focus,.show>.btn-gray-100.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #d3d4d580}.btn-gray-100:disabled,.btn-gray-100.disabled{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-gray-200{color:#000;background-color:#e9ecef;border-color:#e9ecef}.btn-gray-200:hover{color:#000;background-color:#eceff1;border-color:#ebeef1}.btn-check:focus+.btn-gray-200,.btn-gray-200:focus{color:#000;background-color:#eceff1;border-color:#ebeef1;box-shadow:0 0 0 .25rem #c6c9cb80}.btn-check:checked+.btn-gray-200,.btn-check:active+.btn-gray-200,.btn-gray-200:active,.btn-gray-200.active,.show>.btn-gray-200.dropdown-toggle{color:#000;background-color:#edf0f2;border-color:#ebeef1}.btn-check:checked+.btn-gray-200:focus,.btn-check:active+.btn-gray-200:focus,.btn-gray-200:active:focus,.btn-gray-200.active:focus,.show>.btn-gray-200.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #c6c9cb80}.btn-gray-200:disabled,.btn-gray-200.disabled{color:#000;background-color:#e9ecef;border-color:#e9ecef}.btn-gray-300{color:#000;background-color:#dee2e6;border-color:#dee2e6}.btn-gray-300:hover{color:#000;background-color:#e3e6ea;border-color:#e1e5e9}.btn-check:focus+.btn-gray-300,.btn-gray-300:focus{color:#000;background-color:#e3e6ea;border-color:#e1e5e9;box-shadow:0 0 0 .25rem #bdc0c480}.btn-check:checked+.btn-gray-300,.btn-check:active+.btn-gray-300,.btn-gray-300:active,.btn-gray-300.active,.show>.btn-gray-300.dropdown-toggle{color:#000;background-color:#e5e8eb;border-color:#e1e5e9}.btn-check:checked+.btn-gray-300:focus,.btn-check:active+.btn-gray-300:focus,.btn-gray-300:active:focus,.btn-gray-300.active:focus,.show>.btn-gray-300.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #bdc0c480}.btn-gray-300:disabled,.btn-gray-300.disabled{color:#000;background-color:#dee2e6;border-color:#dee2e6}.btn-gray-400{color:#000;background-color:#ced4da;border-color:#ced4da}.btn-gray-400:hover{color:#000;background-color:#d5dae0;border-color:#d3d8de}.btn-check:focus+.btn-gray-400,.btn-gray-400:focus{color:#000;background-color:#d5dae0;border-color:#d3d8de;box-shadow:0 0 0 .25rem #afb4b980}.btn-check:checked+.btn-gray-400,.btn-check:active+.btn-gray-400,.btn-gray-400:active,.btn-gray-400.active,.show>.btn-gray-400.dropdown-toggle{color:#000;background-color:#d8dde1;border-color:#d3d8de}.btn-check:checked+.btn-gray-400:focus,.btn-check:active+.btn-gray-400:focus,.btn-gray-400:active:focus,.btn-gray-400.active:focus,.show>.btn-gray-400.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #afb4b980}.btn-gray-400:disabled,.btn-gray-400.disabled{color:#000;background-color:#ced4da;border-color:#ced4da}.btn-gray-500{color:#000;background-color:#adb5bd;border-color:#adb5bd}.btn-gray-500:hover{color:#000;background-color:#b9c0c7;border-color:#b5bcc4}.btn-check:focus+.btn-gray-500,.btn-gray-500:focus{color:#000;background-color:#b9c0c7;border-color:#b5bcc4;box-shadow:0 0 0 .25rem #939aa180}.btn-check:checked+.btn-gray-500,.btn-check:active+.btn-gray-500,.btn-gray-500:active,.btn-gray-500.active,.show>.btn-gray-500.dropdown-toggle{color:#000;background-color:#bdc4ca;border-color:#b5bcc4}.btn-check:checked+.btn-gray-500:focus,.btn-check:active+.btn-gray-500:focus,.btn-gray-500:active:focus,.btn-gray-500.active:focus,.show>.btn-gray-500.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #939aa180}.btn-gray-500:disabled,.btn-gray-500.disabled{color:#000;background-color:#adb5bd;border-color:#adb5bd}.btn-gray-600{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-gray-600:hover{color:#fff;background-color:#5c636a;border-color:#565e64}.btn-check:focus+.btn-gray-600,.btn-gray-600:focus{color:#fff;background-color:#5c636a;border-color:#565e64;box-shadow:0 0 0 .25rem #828a9180}.btn-check:checked+.btn-gray-600,.btn-check:active+.btn-gray-600,.btn-gray-600:active,.btn-gray-600.active,.show>.btn-gray-600.dropdown-toggle{color:#fff;background-color:#565e64;border-color:#51585e}.btn-check:checked+.btn-gray-600:focus,.btn-check:active+.btn-gray-600:focus,.btn-gray-600:active:focus,.btn-gray-600.active:focus,.show>.btn-gray-600.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #828a9180}.btn-gray-600:disabled,.btn-gray-600.disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-gray-700{color:#fff;background-color:#495057;border-color:#495057}.btn-gray-700:hover{color:#fff;background-color:#3e444a;border-color:#3a4046}.btn-check:focus+.btn-gray-700,.btn-gray-700:focus{color:#fff;background-color:#3e444a;border-color:#3a4046;box-shadow:0 0 0 .25rem #646a7080}.btn-check:checked+.btn-gray-700,.btn-check:active+.btn-gray-700,.btn-gray-700:active,.btn-gray-700.active,.show>.btn-gray-700.dropdown-toggle{color:#fff;background-color:#3a4046;border-color:#373c41}.btn-check:checked+.btn-gray-700:focus,.btn-check:active+.btn-gray-700:focus,.btn-gray-700:active:focus,.btn-gray-700.active:focus,.show>.btn-gray-700.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #646a7080}.btn-gray-700:disabled,.btn-gray-700.disabled{color:#fff;background-color:#495057;border-color:#495057}.btn-gray-800{color:#fff;background-color:#343a40;border-color:#343a40}.btn-gray-800:hover{color:#fff;background-color:#2c3136;border-color:#2a2e33}.btn-check:focus+.btn-gray-800,.btn-gray-800:focus{color:#fff;background-color:#2c3136;border-color:#2a2e33;box-shadow:0 0 0 .25rem #52585d80}.btn-check:checked+.btn-gray-800,.btn-check:active+.btn-gray-800,.btn-gray-800:active,.btn-gray-800.active,.show>.btn-gray-800.dropdown-toggle{color:#fff;background-color:#2a2e33;border-color:#272c30}.btn-check:checked+.btn-gray-800:focus,.btn-check:active+.btn-gray-800:focus,.btn-gray-800:active:focus,.btn-gray-800.active:focus,.show>.btn-gray-800.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #52585d80}.btn-gray-800:disabled,.btn-gray-800.disabled{color:#fff;background-color:#343a40;border-color:#343a40}.btn-gray-900{color:#fff;background-color:#212529;border-color:#212529}.btn-gray-900:hover{color:#fff;background-color:#1c1f23;border-color:#1a1e21}.btn-check:focus+.btn-gray-900,.btn-gray-900:focus{color:#fff;background-color:#1c1f23;border-color:#1a1e21;box-shadow:0 0 0 .25rem #42464980}.btn-check:checked+.btn-gray-900,.btn-check:active+.btn-gray-900,.btn-gray-900:active,.btn-gray-900.active,.show>.btn-gray-900.dropdown-toggle{color:#fff;background-color:#1a1e21;border-color:#191c1f}.btn-check:checked+.btn-gray-900:focus,.btn-check:active+.btn-gray-900:focus,.btn-gray-900:active:focus,.btn-gray-900.active:focus,.show>.btn-gray-900.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #42464980}.btn-gray-900:disabled,.btn-gray-900.disabled{color:#fff;background-color:#212529;border-color:#212529}.btn-red-100{color:#000;background-color:#f8d7da;border-color:#f8d7da}.btn-red-100:hover{color:#000;background-color:#f9dde0;border-color:#f9dbde}.btn-check:focus+.btn-red-100,.btn-red-100:focus{color:#000;background-color:#f9dde0;border-color:#f9dbde;box-shadow:0 0 0 .25rem #d3b7b980}.btn-check:checked+.btn-red-100,.btn-check:active+.btn-red-100,.btn-red-100:active,.btn-red-100.active,.show>.btn-red-100.dropdown-toggle{color:#000;background-color:#f9dfe1;border-color:#f9dbde}.btn-check:checked+.btn-red-100:focus,.btn-check:active+.btn-red-100:focus,.btn-red-100:active:focus,.btn-red-100.active:focus,.show>.btn-red-100.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #d3b7b980}.btn-red-100:disabled,.btn-red-100.disabled{color:#000;background-color:#f8d7da;border-color:#f8d7da}.btn-red-200{color:#000;background-color:#f1aeb5;border-color:#f1aeb5}.btn-red-200:hover{color:#000;background-color:#f3bac0;border-color:#f2b6bc}.btn-check:focus+.btn-red-200,.btn-red-200:focus{color:#000;background-color:#f3bac0;border-color:#f2b6bc;box-shadow:0 0 0 .25rem #cd949a80}.btn-check:checked+.btn-red-200,.btn-check:active+.btn-red-200,.btn-red-200:active,.btn-red-200.active,.show>.btn-red-200.dropdown-toggle{color:#000;background-color:#f4bec4;border-color:#f2b6bc}.btn-check:checked+.btn-red-200:focus,.btn-check:active+.btn-red-200:focus,.btn-red-200:active:focus,.btn-red-200.active:focus,.show>.btn-red-200.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #cd949a80}.btn-red-200:disabled,.btn-red-200.disabled{color:#000;background-color:#f1aeb5;border-color:#f1aeb5}.btn-red-300{color:#000;background-color:#ea868f;border-color:#ea868f}.btn-red-300:hover{color:#000;background-color:#ed98a0;border-color:#ec929a}.btn-check:focus+.btn-red-300,.btn-red-300:focus{color:#000;background-color:#ed98a0;border-color:#ec929a;box-shadow:0 0 0 .25rem #c7727a80}.btn-check:checked+.btn-red-300,.btn-check:active+.btn-red-300,.btn-red-300:active,.btn-red-300.active,.show>.btn-red-300.dropdown-toggle{color:#000;background-color:#ee9ea5;border-color:#ec929a}.btn-check:checked+.btn-red-300:focus,.btn-check:active+.btn-red-300:focus,.btn-red-300:active:focus,.btn-red-300.active:focus,.show>.btn-red-300.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #c7727a80}.btn-red-300:disabled,.btn-red-300.disabled{color:#000;background-color:#ea868f;border-color:#ea868f}.btn-red-400{color:#000;background-color:#e35d6a;border-color:#e35d6a}.btn-red-400:hover{color:#000;background-color:#e77580;border-color:#e66d79}.btn-check:focus+.btn-red-400,.btn-red-400:focus{color:#000;background-color:#e77580;border-color:#e66d79;box-shadow:0 0 0 .25rem #c14f5a80}.btn-check:checked+.btn-red-400,.btn-check:active+.btn-red-400,.btn-red-400:active,.btn-red-400.active,.show>.btn-red-400.dropdown-toggle{color:#000;background-color:#e97d88;border-color:#e66d79}.btn-check:checked+.btn-red-400:focus,.btn-check:active+.btn-red-400:focus,.btn-red-400:active:focus,.btn-red-400.active:focus,.show>.btn-red-400.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #c14f5a80}.btn-red-400:disabled,.btn-red-400.disabled{color:#000;background-color:#e35d6a;border-color:#e35d6a}.btn-red-500{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-red-500:hover{color:#fff;background-color:#bb2d3b;border-color:#b02a37}.btn-check:focus+.btn-red-500,.btn-red-500:focus{color:#fff;background-color:#bb2d3b;border-color:#b02a37;box-shadow:0 0 0 .25rem #e1536180}.btn-check:checked+.btn-red-500,.btn-check:active+.btn-red-500,.btn-red-500:active,.btn-red-500.active,.show>.btn-red-500.dropdown-toggle{color:#fff;background-color:#b02a37;border-color:#a52834}.btn-check:checked+.btn-red-500:focus,.btn-check:active+.btn-red-500:focus,.btn-red-500:active:focus,.btn-red-500.active:focus,.show>.btn-red-500.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #e1536180}.btn-red-500:disabled,.btn-red-500.disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-red-600{color:#fff;background-color:#b02a37;border-color:#b02a37}.btn-red-600:hover{color:#fff;background-color:#96242f;border-color:#8d222c}.btn-check:focus+.btn-red-600,.btn-red-600:focus{color:#fff;background-color:#96242f;border-color:#8d222c;box-shadow:0 0 0 .25rem #bc4a5580}.btn-check:checked+.btn-red-600,.btn-check:active+.btn-red-600,.btn-red-600:active,.btn-red-600.active,.show>.btn-red-600.dropdown-toggle{color:#fff;background-color:#8d222c;border-color:#842029}.btn-check:checked+.btn-red-600:focus,.btn-check:active+.btn-red-600:focus,.btn-red-600:active:focus,.btn-red-600.active:focus,.show>.btn-red-600.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #bc4a5580}.btn-red-600:disabled,.btn-red-600.disabled{color:#fff;background-color:#b02a37;border-color:#b02a37}.btn-red-700{color:#fff;background-color:#842029;border-color:#842029}.btn-red-700:hover{color:#fff;background-color:#701b23;border-color:#6a1a21}.btn-check:focus+.btn-red-700,.btn-red-700:focus{color:#fff;background-color:#701b23;border-color:#6a1a21;box-shadow:0 0 0 .25rem #96414980}.btn-check:checked+.btn-red-700,.btn-check:active+.btn-red-700,.btn-red-700:active,.btn-red-700.active,.show>.btn-red-700.dropdown-toggle{color:#fff;background-color:#6a1a21;border-color:#63181f}.btn-check:checked+.btn-red-700:focus,.btn-check:active+.btn-red-700:focus,.btn-red-700:active:focus,.btn-red-700.active:focus,.show>.btn-red-700.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #96414980}.btn-red-700:disabled,.btn-red-700.disabled{color:#fff;background-color:#842029;border-color:#842029}.btn-red-800{color:#fff;background-color:#58151c;border-color:#58151c}.btn-red-800:hover{color:#fff;background-color:#4b1218;border-color:#461116}.btn-check:focus+.btn-red-800,.btn-red-800:focus{color:#fff;background-color:#4b1218;border-color:#461116;box-shadow:0 0 0 .25rem #71383e80}.btn-check:checked+.btn-red-800,.btn-check:active+.btn-red-800,.btn-red-800:active,.btn-red-800.active,.show>.btn-red-800.dropdown-toggle{color:#fff;background-color:#461116;border-color:#421015}.btn-check:checked+.btn-red-800:focus,.btn-check:active+.btn-red-800:focus,.btn-red-800:active:focus,.btn-red-800.active:focus,.show>.btn-red-800.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #71383e80}.btn-red-800:disabled,.btn-red-800.disabled{color:#fff;background-color:#58151c;border-color:#58151c}.btn-red-900{color:#fff;background-color:#2c0b0e;border-color:#2c0b0e}.btn-red-900:hover{color:#fff;background-color:#25090c;border-color:#23090b}.btn-check:focus+.btn-red-900,.btn-red-900:focus{color:#fff;background-color:#25090c;border-color:#23090b;box-shadow:0 0 0 .25rem #4c303280}.btn-check:checked+.btn-red-900,.btn-check:active+.btn-red-900,.btn-red-900:active,.btn-red-900.active,.show>.btn-red-900.dropdown-toggle{color:#fff;background-color:#23090b;border-color:#21080b}.btn-check:checked+.btn-red-900:focus,.btn-check:active+.btn-red-900:focus,.btn-red-900:active:focus,.btn-red-900.active:focus,.show>.btn-red-900.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #4c303280}.btn-red-900:disabled,.btn-red-900.disabled{color:#fff;background-color:#2c0b0e;border-color:#2c0b0e}.btn-yellow-100{color:#000;background-color:#fff3cd;border-color:#fff3cd}.btn-yellow-100:hover{color:#000;background-color:#fff5d5;border-color:#fff4d2}.btn-check:focus+.btn-yellow-100,.btn-yellow-100:focus{color:#000;background-color:#fff5d5;border-color:#fff4d2;box-shadow:0 0 0 .25rem #d9cfae80}.btn-check:checked+.btn-yellow-100,.btn-check:active+.btn-yellow-100,.btn-yellow-100:active,.btn-yellow-100.active,.show>.btn-yellow-100.dropdown-toggle{color:#000;background-color:#fff5d7;border-color:#fff4d2}.btn-check:checked+.btn-yellow-100:focus,.btn-check:active+.btn-yellow-100:focus,.btn-yellow-100:active:focus,.btn-yellow-100.active:focus,.show>.btn-yellow-100.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #d9cfae80}.btn-yellow-100:disabled,.btn-yellow-100.disabled{color:#000;background-color:#fff3cd;border-color:#fff3cd}.btn-yellow-200{color:#000;background-color:#ffe69c;border-color:#ffe69c}.btn-yellow-200:hover{color:#000;background-color:#ffeaab;border-color:#ffe9a6}.btn-check:focus+.btn-yellow-200,.btn-yellow-200:focus{color:#000;background-color:#ffeaab;border-color:#ffe9a6;box-shadow:0 0 0 .25rem #d9c48580}.btn-check:checked+.btn-yellow-200,.btn-check:active+.btn-yellow-200,.btn-yellow-200:active,.btn-yellow-200.active,.show>.btn-yellow-200.dropdown-toggle{color:#000;background-color:#ffebb0;border-color:#ffe9a6}.btn-check:checked+.btn-yellow-200:focus,.btn-check:active+.btn-yellow-200:focus,.btn-yellow-200:active:focus,.btn-yellow-200.active:focus,.show>.btn-yellow-200.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #d9c48580}.btn-yellow-200:disabled,.btn-yellow-200.disabled{color:#000;background-color:#ffe69c;border-color:#ffe69c}.btn-yellow-300{color:#000;background-color:#ffda6a;border-color:#ffda6a}.btn-yellow-300:hover{color:#000;background-color:#ffe080;border-color:#ffde79}.btn-check:focus+.btn-yellow-300,.btn-yellow-300:focus{color:#000;background-color:#ffe080;border-color:#ffde79;box-shadow:0 0 0 .25rem #d9b95a80}.btn-check:checked+.btn-yellow-300,.btn-check:active+.btn-yellow-300,.btn-yellow-300:active,.btn-yellow-300.active,.show>.btn-yellow-300.dropdown-toggle{color:#000;background-color:#ffe188;border-color:#ffde79}.btn-check:checked+.btn-yellow-300:focus,.btn-check:active+.btn-yellow-300:focus,.btn-yellow-300:active:focus,.btn-yellow-300.active:focus,.show>.btn-yellow-300.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #d9b95a80}.btn-yellow-300:disabled,.btn-yellow-300.disabled{color:#000;background-color:#ffda6a;border-color:#ffda6a}.btn-yellow-400{color:#000;background-color:#ffcd39;border-color:#ffcd39}.btn-yellow-400:hover{color:#000;background-color:#ffd557;border-color:#ffd24d}.btn-check:focus+.btn-yellow-400,.btn-yellow-400:focus{color:#000;background-color:#ffd557;border-color:#ffd24d;box-shadow:0 0 0 .25rem #d9ae3080}.btn-check:checked+.btn-yellow-400,.btn-check:active+.btn-yellow-400,.btn-yellow-400:active,.btn-yellow-400.active,.show>.btn-yellow-400.dropdown-toggle{color:#000;background-color:#ffd761;border-color:#ffd24d}.btn-check:checked+.btn-yellow-400:focus,.btn-check:active+.btn-yellow-400:focus,.btn-yellow-400:active:focus,.btn-yellow-400.active:focus,.show>.btn-yellow-400.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #d9ae3080}.btn-yellow-400:disabled,.btn-yellow-400.disabled{color:#000;background-color:#ffcd39;border-color:#ffcd39}.btn-yellow-500{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-yellow-500:hover{color:#000;background-color:#ffca2c;border-color:#ffc720}.btn-check:focus+.btn-yellow-500,.btn-yellow-500:focus{color:#000;background-color:#ffca2c;border-color:#ffc720;box-shadow:0 0 0 .25rem #d9a40680}.btn-check:checked+.btn-yellow-500,.btn-check:active+.btn-yellow-500,.btn-yellow-500:active,.btn-yellow-500.active,.show>.btn-yellow-500.dropdown-toggle{color:#000;background-color:#ffcd39;border-color:#ffc720}.btn-check:checked+.btn-yellow-500:focus,.btn-check:active+.btn-yellow-500:focus,.btn-yellow-500:active:focus,.btn-yellow-500.active:focus,.show>.btn-yellow-500.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #d9a40680}.btn-yellow-500:disabled,.btn-yellow-500.disabled{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-yellow-600{color:#000;background-color:#cc9a06;border-color:#cc9a06}.btn-yellow-600:hover{color:#000;background-color:#d4a92b;border-color:#d1a41f}.btn-check:focus+.btn-yellow-600,.btn-yellow-600:focus{color:#000;background-color:#d4a92b;border-color:#d1a41f;box-shadow:0 0 0 .25rem #ad830580}.btn-check:checked+.btn-yellow-600,.btn-check:active+.btn-yellow-600,.btn-yellow-600:active,.btn-yellow-600.active,.show>.btn-yellow-600.dropdown-toggle{color:#000;background-color:#d6ae38;border-color:#d1a41f}.btn-check:checked+.btn-yellow-600:focus,.btn-check:active+.btn-yellow-600:focus,.btn-yellow-600:active:focus,.btn-yellow-600.active:focus,.show>.btn-yellow-600.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #ad830580}.btn-yellow-600:disabled,.btn-yellow-600.disabled{color:#000;background-color:#cc9a06;border-color:#cc9a06}.btn-yellow-700{color:#000;background-color:#997404;border-color:#997404}.btn-yellow-700:hover{color:#000;background-color:#a8892a;border-color:#a3821d}.btn-check:focus+.btn-yellow-700,.btn-yellow-700:focus{color:#000;background-color:#a8892a;border-color:#a3821d;box-shadow:0 0 0 .25rem #82630380}.btn-check:checked+.btn-yellow-700,.btn-check:active+.btn-yellow-700,.btn-yellow-700:active,.btn-yellow-700.active,.show>.btn-yellow-700.dropdown-toggle{color:#000;background-color:#ad9036;border-color:#a3821d}.btn-check:checked+.btn-yellow-700:focus,.btn-check:active+.btn-yellow-700:focus,.btn-yellow-700:active:focus,.btn-yellow-700.active:focus,.show>.btn-yellow-700.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #82630380}.btn-yellow-700:disabled,.btn-yellow-700.disabled{color:#000;background-color:#997404;border-color:#997404}.btn-yellow-800{color:#fff;background-color:#664d03;border-color:#664d03}.btn-yellow-800:hover{color:#fff;background-color:#574103;border-color:#523e02}.btn-check:focus+.btn-yellow-800,.btn-yellow-800:focus{color:#fff;background-color:#574103;border-color:#523e02;box-shadow:0 0 0 .25rem #7d682980}.btn-check:checked+.btn-yellow-800,.btn-check:active+.btn-yellow-800,.btn-yellow-800:active,.btn-yellow-800.active,.show>.btn-yellow-800.dropdown-toggle{color:#fff;background-color:#523e02;border-color:#4d3a02}.btn-check:checked+.btn-yellow-800:focus,.btn-check:active+.btn-yellow-800:focus,.btn-yellow-800:active:focus,.btn-yellow-800.active:focus,.show>.btn-yellow-800.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #7d682980}.btn-yellow-800:disabled,.btn-yellow-800.disabled{color:#fff;background-color:#664d03;border-color:#664d03}.btn-yellow-900{color:#fff;background-color:#332701;border-color:#332701}.btn-yellow-900:hover{color:#fff;background-color:#2b2101;border-color:#291f01}.btn-check:focus+.btn-yellow-900,.btn-yellow-900:focus{color:#fff;background-color:#2b2101;border-color:#291f01;box-shadow:0 0 0 .25rem #52472780}.btn-check:checked+.btn-yellow-900,.btn-check:active+.btn-yellow-900,.btn-yellow-900:active,.btn-yellow-900.active,.show>.btn-yellow-900.dropdown-toggle{color:#fff;background-color:#291f01;border-color:#261d01}.btn-check:checked+.btn-yellow-900:focus,.btn-check:active+.btn-yellow-900:focus,.btn-yellow-900:active:focus,.btn-yellow-900.active:focus,.show>.btn-yellow-900.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #52472780}.btn-yellow-900:disabled,.btn-yellow-900.disabled{color:#fff;background-color:#332701;border-color:#332701}.btn-green-100{color:#000;background-color:#d1e7dd;border-color:#d1e7dd}.btn-green-100:hover{color:#000;background-color:#d8ebe2;border-color:#d6e9e0}.btn-check:focus+.btn-green-100,.btn-green-100:focus{color:#000;background-color:#d8ebe2;border-color:#d6e9e0;box-shadow:0 0 0 .25rem #b2c4bc80}.btn-check:checked+.btn-green-100,.btn-check:active+.btn-green-100,.btn-green-100:active,.btn-green-100.active,.show>.btn-green-100.dropdown-toggle{color:#000;background-color:#daece4;border-color:#d6e9e0}.btn-check:checked+.btn-green-100:focus,.btn-check:active+.btn-green-100:focus,.btn-green-100:active:focus,.btn-green-100.active:focus,.show>.btn-green-100.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #b2c4bc80}.btn-green-100:disabled,.btn-green-100.disabled{color:#000;background-color:#d1e7dd;border-color:#d1e7dd}.btn-green-200{color:#000;background-color:#a3cfbb;border-color:#a3cfbb}.btn-green-200:hover{color:#000;background-color:#b1d6c5;border-color:#acd4c2}.btn-check:focus+.btn-green-200,.btn-green-200:focus{color:#000;background-color:#b1d6c5;border-color:#acd4c2;box-shadow:0 0 0 .25rem #8bb09f80}.btn-check:checked+.btn-green-200,.btn-check:active+.btn-green-200,.btn-green-200:active,.btn-green-200.active,.show>.btn-green-200.dropdown-toggle{color:#000;background-color:#b5d9c9;border-color:#acd4c2}.btn-check:checked+.btn-green-200:focus,.btn-check:active+.btn-green-200:focus,.btn-green-200:active:focus,.btn-green-200.active:focus,.show>.btn-green-200.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #8bb09f80}.btn-green-200:disabled,.btn-green-200.disabled{color:#000;background-color:#a3cfbb;border-color:#a3cfbb}.btn-green-300{color:#000;background-color:#75b798;border-color:#75b798}.btn-green-300:hover{color:#000;background-color:#8ac2a7;border-color:#83bea2}.btn-check:focus+.btn-green-300,.btn-green-300:focus{color:#000;background-color:#8ac2a7;border-color:#83bea2;box-shadow:0 0 0 .25rem #639c8180}.btn-check:checked+.btn-green-300,.btn-check:active+.btn-green-300,.btn-green-300:active,.btn-green-300.active,.show>.btn-green-300.dropdown-toggle{color:#000;background-color:#91c5ad;border-color:#83bea2}.btn-check:checked+.btn-green-300:focus,.btn-check:active+.btn-green-300:focus,.btn-green-300:active:focus,.btn-green-300.active:focus,.show>.btn-green-300.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #639c8180}.btn-green-300:disabled,.btn-green-300.disabled{color:#000;background-color:#75b798;border-color:#75b798}.btn-green-400{color:#000;background-color:#479f76;border-color:#479f76}.btn-green-400:hover{color:#000;background-color:#63ad8b;border-color:#59a984}.btn-check:focus+.btn-green-400,.btn-green-400:focus{color:#000;background-color:#63ad8b;border-color:#59a984;box-shadow:0 0 0 .25rem #3c876480}.btn-check:checked+.btn-green-400,.btn-check:active+.btn-green-400,.btn-green-400:active,.btn-green-400.active,.show>.btn-green-400.dropdown-toggle{color:#000;background-color:#6cb291;border-color:#59a984}.btn-check:checked+.btn-green-400:focus,.btn-check:active+.btn-green-400:focus,.btn-green-400:active:focus,.btn-green-400.active:focus,.show>.btn-green-400.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #3c876480}.btn-green-400:disabled,.btn-green-400.disabled{color:#000;background-color:#479f76;border-color:#479f76}.btn-green-500{color:#fff;background-color:#198754;border-color:#198754}.btn-green-500:hover{color:#fff;background-color:#157347;border-color:#146c43}.btn-check:focus+.btn-green-500,.btn-green-500:focus{color:#fff;background-color:#157347;border-color:#146c43;box-shadow:0 0 0 .25rem #3c996e80}.btn-check:checked+.btn-green-500,.btn-check:active+.btn-green-500,.btn-green-500:active,.btn-green-500.active,.show>.btn-green-500.dropdown-toggle{color:#fff;background-color:#146c43;border-color:#13653f}.btn-check:checked+.btn-green-500:focus,.btn-check:active+.btn-green-500:focus,.btn-green-500:active:focus,.btn-green-500.active:focus,.show>.btn-green-500.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #3c996e80}.btn-green-500:disabled,.btn-green-500.disabled{color:#fff;background-color:#198754;border-color:#198754}.btn-green-600{color:#fff;background-color:#146c43;border-color:#146c43}.btn-green-600:hover{color:#fff;background-color:#115c39;border-color:#105636}.btn-check:focus+.btn-green-600,.btn-green-600:focus{color:#fff;background-color:#115c39;border-color:#105636;box-shadow:0 0 0 .25rem #37825f80}.btn-check:checked+.btn-green-600,.btn-check:active+.btn-green-600,.btn-green-600:active,.btn-green-600.active,.show>.btn-green-600.dropdown-toggle{color:#fff;background-color:#105636;border-color:#0f5132}.btn-check:checked+.btn-green-600:focus,.btn-check:active+.btn-green-600:focus,.btn-green-600:active:focus,.btn-green-600.active:focus,.show>.btn-green-600.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #37825f80}.btn-green-600:disabled,.btn-green-600.disabled{color:#fff;background-color:#146c43;border-color:#146c43}.btn-green-700{color:#fff;background-color:#0f5132;border-color:#0f5132}.btn-green-700:hover{color:#fff;background-color:#0d452b;border-color:#0c4128}.btn-check:focus+.btn-green-700,.btn-green-700:focus{color:#fff;background-color:#0d452b;border-color:#0c4128;box-shadow:0 0 0 .25rem #336b5180}.btn-check:checked+.btn-green-700,.btn-check:active+.btn-green-700,.btn-green-700:active,.btn-green-700.active,.show>.btn-green-700.dropdown-toggle{color:#fff;background-color:#0c4128;border-color:#0b3d26}.btn-check:checked+.btn-green-700:focus,.btn-check:active+.btn-green-700:focus,.btn-green-700:active:focus,.btn-green-700.active:focus,.show>.btn-green-700.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #336b5180}.btn-green-700:disabled,.btn-green-700.disabled{color:#fff;background-color:#0f5132;border-color:#0f5132}.btn-green-800{color:#fff;background-color:#0a3622;border-color:#0a3622}.btn-green-800:hover{color:#fff;background-color:#092e1d;border-color:#082b1b}.btn-check:focus+.btn-green-800,.btn-green-800:focus{color:#fff;background-color:#092e1d;border-color:#082b1b;box-shadow:0 0 0 .25rem #2f544380}.btn-check:checked+.btn-green-800,.btn-check:active+.btn-green-800,.btn-green-800:active,.btn-green-800.active,.show>.btn-green-800.dropdown-toggle{color:#fff;background-color:#082b1b;border-color:#08291a}.btn-check:checked+.btn-green-800:focus,.btn-check:active+.btn-green-800:focus,.btn-green-800:active:focus,.btn-green-800.active:focus,.show>.btn-green-800.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #2f544380}.btn-green-800:disabled,.btn-green-800.disabled{color:#fff;background-color:#0a3622;border-color:#0a3622}.btn-green-900{color:#fff;background-color:#051b11;border-color:#051b11}.btn-green-900:hover{color:#fff;background-color:#04170e;border-color:#04160e}.btn-check:focus+.btn-green-900,.btn-green-900:focus{color:#fff;background-color:#04170e;border-color:#04160e;box-shadow:0 0 0 .25rem #2b3d3580}.btn-check:checked+.btn-green-900,.btn-check:active+.btn-green-900,.btn-green-900:active,.btn-green-900.active,.show>.btn-green-900.dropdown-toggle{color:#fff;background-color:#04160e;border-color:#04140d}.btn-check:checked+.btn-green-900:focus,.btn-check:active+.btn-green-900:focus,.btn-green-900:active:focus,.btn-green-900.active:focus,.show>.btn-green-900.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #2b3d3580}.btn-green-900:disabled,.btn-green-900.disabled{color:#fff;background-color:#051b11;border-color:#051b11}.btn-blue-100{color:#000;background-color:#cfe2ff;border-color:#cfe2ff}.btn-blue-100:hover{color:#000;background-color:#d6e6ff;border-color:#d4e5ff}.btn-check:focus+.btn-blue-100,.btn-blue-100:focus{color:#000;background-color:#d6e6ff;border-color:#d4e5ff;box-shadow:0 0 0 .25rem #b0c0d980}.btn-check:checked+.btn-blue-100,.btn-check:active+.btn-blue-100,.btn-blue-100:active,.btn-blue-100.active,.show>.btn-blue-100.dropdown-toggle{color:#000;background-color:#d9e8ff;border-color:#d4e5ff}.btn-check:checked+.btn-blue-100:focus,.btn-check:active+.btn-blue-100:focus,.btn-blue-100:active:focus,.btn-blue-100.active:focus,.show>.btn-blue-100.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #b0c0d980}.btn-blue-100:disabled,.btn-blue-100.disabled{color:#000;background-color:#cfe2ff;border-color:#cfe2ff}.btn-blue-200{color:#000;background-color:#9ec5fe;border-color:#9ec5fe}.btn-blue-200:hover{color:#000;background-color:#adcefe;border-color:#a8cbfe}.btn-check:focus+.btn-blue-200,.btn-blue-200:focus{color:#000;background-color:#adcefe;border-color:#a8cbfe;box-shadow:0 0 0 .25rem #86a7d880}.btn-check:checked+.btn-blue-200,.btn-check:active+.btn-blue-200,.btn-blue-200:active,.btn-blue-200.active,.show>.btn-blue-200.dropdown-toggle{color:#000;background-color:#b1d1fe;border-color:#a8cbfe}.btn-check:checked+.btn-blue-200:focus,.btn-check:active+.btn-blue-200:focus,.btn-blue-200:active:focus,.btn-blue-200.active:focus,.show>.btn-blue-200.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #86a7d880}.btn-blue-200:disabled,.btn-blue-200.disabled{color:#000;background-color:#9ec5fe;border-color:#9ec5fe}.btn-blue-300{color:#000;background-color:#6ea8fe;border-color:#6ea8fe}.btn-blue-300:hover{color:#000;background-color:#84b5fe;border-color:#7db1fe}.btn-check:focus+.btn-blue-300,.btn-blue-300:focus{color:#000;background-color:#84b5fe;border-color:#7db1fe;box-shadow:0 0 0 .25rem #5e8fd880}.btn-check:checked+.btn-blue-300,.btn-check:active+.btn-blue-300,.btn-blue-300:active,.btn-blue-300.active,.show>.btn-blue-300.dropdown-toggle{color:#000;background-color:#8bb9fe;border-color:#7db1fe}.btn-check:checked+.btn-blue-300:focus,.btn-check:active+.btn-blue-300:focus,.btn-blue-300:active:focus,.btn-blue-300.active:focus,.show>.btn-blue-300.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #5e8fd880}.btn-blue-300:disabled,.btn-blue-300.disabled{color:#000;background-color:#6ea8fe;border-color:#6ea8fe}.btn-blue-400{color:#000;background-color:#3d8bfd;border-color:#3d8bfd}.btn-blue-400:hover{color:#000;background-color:#5a9cfd;border-color:#5097fd}.btn-check:focus+.btn-blue-400,.btn-blue-400:focus{color:#000;background-color:#5a9cfd;border-color:#5097fd;box-shadow:0 0 0 .25rem #3476d780}.btn-check:checked+.btn-blue-400,.btn-check:active+.btn-blue-400,.btn-blue-400:active,.btn-blue-400.active,.show>.btn-blue-400.dropdown-toggle{color:#000;background-color:#64a2fd;border-color:#5097fd}.btn-check:checked+.btn-blue-400:focus,.btn-check:active+.btn-blue-400:focus,.btn-blue-400:active:focus,.btn-blue-400.active:focus,.show>.btn-blue-400.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #3476d780}.btn-blue-400:disabled,.btn-blue-400.disabled{color:#000;background-color:#3d8bfd;border-color:#3d8bfd}.btn-blue-500{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-blue-500:hover{color:#fff;background-color:#0b5ed7;border-color:#0a58ca}.btn-check:focus+.btn-blue-500,.btn-blue-500:focus{color:#fff;background-color:#0b5ed7;border-color:#0a58ca;box-shadow:0 0 0 .25rem #3184fd80}.btn-check:checked+.btn-blue-500,.btn-check:active+.btn-blue-500,.btn-blue-500:active,.btn-blue-500.active,.show>.btn-blue-500.dropdown-toggle{color:#fff;background-color:#0a58ca;border-color:#0a53be}.btn-check:checked+.btn-blue-500:focus,.btn-check:active+.btn-blue-500:focus,.btn-blue-500:active:focus,.btn-blue-500.active:focus,.show>.btn-blue-500.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #3184fd80}.btn-blue-500:disabled,.btn-blue-500.disabled{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-blue-600{color:#fff;background-color:#0a58ca;border-color:#0a58ca}.btn-blue-600:hover{color:#fff;background-color:#094bac;border-color:#0846a2}.btn-check:focus+.btn-blue-600,.btn-blue-600:focus{color:#fff;background-color:#094bac;border-color:#0846a2;box-shadow:0 0 0 .25rem #2f71d280}.btn-check:checked+.btn-blue-600,.btn-check:active+.btn-blue-600,.btn-blue-600:active,.btn-blue-600.active,.show>.btn-blue-600.dropdown-toggle{color:#fff;background-color:#0846a2;border-color:#084298}.btn-check:checked+.btn-blue-600:focus,.btn-check:active+.btn-blue-600:focus,.btn-blue-600:active:focus,.btn-blue-600.active:focus,.show>.btn-blue-600.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #2f71d280}.btn-blue-600:disabled,.btn-blue-600.disabled{color:#fff;background-color:#0a58ca;border-color:#0a58ca}.btn-blue-700{color:#fff;background-color:#084298;border-color:#084298}.btn-blue-700:hover{color:#fff;background-color:#073881;border-color:#06357a}.btn-check:focus+.btn-blue-700,.btn-blue-700:focus{color:#fff;background-color:#073881;border-color:#06357a;box-shadow:0 0 0 .25rem #2d5ea780}.btn-check:checked+.btn-blue-700,.btn-check:active+.btn-blue-700,.btn-blue-700:active,.btn-blue-700.active,.show>.btn-blue-700.dropdown-toggle{color:#fff;background-color:#06357a;border-color:#063272}.btn-check:checked+.btn-blue-700:focus,.btn-check:active+.btn-blue-700:focus,.btn-blue-700:active:focus,.btn-blue-700.active:focus,.show>.btn-blue-700.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #2d5ea780}.btn-blue-700:disabled,.btn-blue-700.disabled{color:#fff;background-color:#084298;border-color:#084298}.btn-blue-800{color:#fff;background-color:#052c65;border-color:#052c65}.btn-blue-800:hover{color:#fff;background-color:#042556;border-color:#042351}.btn-check:focus+.btn-blue-800,.btn-blue-800:focus{color:#fff;background-color:#042556;border-color:#042351;box-shadow:0 0 0 .25rem #2b4c7c80}.btn-check:checked+.btn-blue-800,.btn-check:active+.btn-blue-800,.btn-blue-800:active,.btn-blue-800.active,.show>.btn-blue-800.dropdown-toggle{color:#fff;background-color:#042351;border-color:#04214c}.btn-check:checked+.btn-blue-800:focus,.btn-check:active+.btn-blue-800:focus,.btn-blue-800:active:focus,.btn-blue-800.active:focus,.show>.btn-blue-800.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #2b4c7c80}.btn-blue-800:disabled,.btn-blue-800.disabled{color:#fff;background-color:#052c65;border-color:#052c65}.btn-blue-900{color:#fff;background-color:#031633;border-color:#031633}.btn-blue-900:hover{color:#fff;background-color:#03132b;border-color:#021229}.btn-check:focus+.btn-blue-900,.btn-blue-900:focus{color:#fff;background-color:#03132b;border-color:#021229;box-shadow:0 0 0 .25rem #29395280}.btn-check:checked+.btn-blue-900,.btn-check:active+.btn-blue-900,.btn-blue-900:active,.btn-blue-900.active,.show>.btn-blue-900.dropdown-toggle{color:#fff;background-color:#021229;border-color:#021126}.btn-check:checked+.btn-blue-900:focus,.btn-check:active+.btn-blue-900:focus,.btn-blue-900:active:focus,.btn-blue-900.active:focus,.show>.btn-blue-900.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #29395280}.btn-blue-900:disabled,.btn-blue-900.disabled{color:#fff;background-color:#031633;border-color:#031633}.btn-cyan-100{color:#000;background-color:#cff4fc;border-color:#cff4fc}.btn-cyan-100:hover{color:#000;background-color:#d6f6fc;border-color:#d4f5fc}.btn-check:focus+.btn-cyan-100,.btn-cyan-100:focus{color:#000;background-color:#d6f6fc;border-color:#d4f5fc;box-shadow:0 0 0 .25rem #b0cfd680}.btn-check:checked+.btn-cyan-100,.btn-check:active+.btn-cyan-100,.btn-cyan-100:active,.btn-cyan-100.active,.show>.btn-cyan-100.dropdown-toggle{color:#000;background-color:#d9f6fd;border-color:#d4f5fc}.btn-check:checked+.btn-cyan-100:focus,.btn-check:active+.btn-cyan-100:focus,.btn-cyan-100:active:focus,.btn-cyan-100.active:focus,.show>.btn-cyan-100.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #b0cfd680}.btn-cyan-100:disabled,.btn-cyan-100.disabled{color:#000;background-color:#cff4fc;border-color:#cff4fc}.btn-cyan-200{color:#000;background-color:#9eeaf9;border-color:#9eeaf9}.btn-cyan-200:hover{color:#000;background-color:#adedfa;border-color:#a8ecfa}.btn-check:focus+.btn-cyan-200,.btn-cyan-200:focus{color:#000;background-color:#adedfa;border-color:#a8ecfa;box-shadow:0 0 0 .25rem #86c7d480}.btn-check:checked+.btn-cyan-200,.btn-check:active+.btn-cyan-200,.btn-cyan-200:active,.btn-cyan-200.active,.show>.btn-cyan-200.dropdown-toggle{color:#000;background-color:#b1eefa;border-color:#a8ecfa}.btn-check:checked+.btn-cyan-200:focus,.btn-check:active+.btn-cyan-200:focus,.btn-cyan-200:active:focus,.btn-cyan-200.active:focus,.show>.btn-cyan-200.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #86c7d480}.btn-cyan-200:disabled,.btn-cyan-200.disabled{color:#000;background-color:#9eeaf9;border-color:#9eeaf9}.btn-cyan-300{color:#000;background-color:#6edff6;border-color:#6edff6}.btn-cyan-300:hover{color:#000;background-color:#84e4f7;border-color:#7de2f7}.btn-check:focus+.btn-cyan-300,.btn-cyan-300:focus{color:#000;background-color:#84e4f7;border-color:#7de2f7;box-shadow:0 0 0 .25rem #5ebed180}.btn-check:checked+.btn-cyan-300,.btn-check:active+.btn-cyan-300,.btn-cyan-300:active,.btn-cyan-300.active,.show>.btn-cyan-300.dropdown-toggle{color:#000;background-color:#8be5f8;border-color:#7de2f7}.btn-check:checked+.btn-cyan-300:focus,.btn-check:active+.btn-cyan-300:focus,.btn-cyan-300:active:focus,.btn-cyan-300.active:focus,.show>.btn-cyan-300.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #5ebed180}.btn-cyan-300:disabled,.btn-cyan-300.disabled{color:#000;background-color:#6edff6;border-color:#6edff6}.btn-cyan-400{color:#000;background-color:#3dd5f3;border-color:#3dd5f3}.btn-cyan-400:hover{color:#000;background-color:#5adbf5;border-color:#50d9f4}.btn-check:focus+.btn-cyan-400,.btn-cyan-400:focus{color:#000;background-color:#5adbf5;border-color:#50d9f4;box-shadow:0 0 0 .25rem #34b5cf80}.btn-check:checked+.btn-cyan-400,.btn-check:active+.btn-cyan-400,.btn-cyan-400:active,.btn-cyan-400.active,.show>.btn-cyan-400.dropdown-toggle{color:#000;background-color:#64ddf5;border-color:#50d9f4}.btn-check:checked+.btn-cyan-400:focus,.btn-check:active+.btn-cyan-400:focus,.btn-cyan-400:active:focus,.btn-cyan-400.active:focus,.show>.btn-cyan-400.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #34b5cf80}.btn-cyan-400:disabled,.btn-cyan-400.disabled{color:#000;background-color:#3dd5f3;border-color:#3dd5f3}.btn-cyan-500{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-cyan-500:hover{color:#000;background-color:#31d2f2;border-color:#25cff2}.btn-check:focus+.btn-cyan-500,.btn-cyan-500:focus{color:#000;background-color:#31d2f2;border-color:#25cff2;box-shadow:0 0 0 .25rem #0baccc80}.btn-check:checked+.btn-cyan-500,.btn-check:active+.btn-cyan-500,.btn-cyan-500:active,.btn-cyan-500.active,.show>.btn-cyan-500.dropdown-toggle{color:#000;background-color:#3dd5f3;border-color:#25cff2}.btn-check:checked+.btn-cyan-500:focus,.btn-check:active+.btn-cyan-500:focus,.btn-cyan-500:active:focus,.btn-cyan-500.active:focus,.show>.btn-cyan-500.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #0baccc80}.btn-cyan-500:disabled,.btn-cyan-500.disabled{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-cyan-600{color:#000;background-color:#0aa2c0;border-color:#0aa2c0}.btn-cyan-600:hover{color:#000;background-color:#2fb0c9;border-color:#23abc6}.btn-check:focus+.btn-cyan-600,.btn-cyan-600:focus{color:#000;background-color:#2fb0c9;border-color:#23abc6;box-shadow:0 0 0 .25rem #098aa380}.btn-check:checked+.btn-cyan-600,.btn-check:active+.btn-cyan-600,.btn-cyan-600:active,.btn-cyan-600.active,.show>.btn-cyan-600.dropdown-toggle{color:#000;background-color:#3bb5cd;border-color:#23abc6}.btn-check:checked+.btn-cyan-600:focus,.btn-check:active+.btn-cyan-600:focus,.btn-cyan-600:active:focus,.btn-cyan-600.active:focus,.show>.btn-cyan-600.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #098aa380}.btn-cyan-600:disabled,.btn-cyan-600.disabled{color:#000;background-color:#0aa2c0;border-color:#0aa2c0}.btn-cyan-700{color:#fff;background-color:#087990;border-color:#087990}.btn-cyan-700:hover{color:#fff;background-color:#07677a;border-color:#066173}.btn-check:focus+.btn-cyan-700,.btn-cyan-700:focus{color:#fff;background-color:#07677a;border-color:#066173;box-shadow:0 0 0 .25rem #2d8da180}.btn-check:checked+.btn-cyan-700,.btn-check:active+.btn-cyan-700,.btn-cyan-700:active,.btn-cyan-700.active,.show>.btn-cyan-700.dropdown-toggle{color:#fff;background-color:#066173;border-color:#065b6c}.btn-check:checked+.btn-cyan-700:focus,.btn-check:active+.btn-cyan-700:focus,.btn-cyan-700:active:focus,.btn-cyan-700.active:focus,.show>.btn-cyan-700.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #2d8da180}.btn-cyan-700:disabled,.btn-cyan-700.disabled{color:#fff;background-color:#087990;border-color:#087990}.btn-cyan-800{color:#fff;background-color:#055160;border-color:#055160}.btn-cyan-800:hover{color:#fff;background-color:#044552;border-color:#04414d}.btn-check:focus+.btn-cyan-800,.btn-cyan-800:focus{color:#fff;background-color:#044552;border-color:#04414d;box-shadow:0 0 0 .25rem #2b6b7880}.btn-check:checked+.btn-cyan-800,.btn-check:active+.btn-cyan-800,.btn-cyan-800:active,.btn-cyan-800.active,.show>.btn-cyan-800.dropdown-toggle{color:#fff;background-color:#04414d;border-color:#043d48}.btn-check:checked+.btn-cyan-800:focus,.btn-check:active+.btn-cyan-800:focus,.btn-cyan-800:active:focus,.btn-cyan-800.active:focus,.show>.btn-cyan-800.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #2b6b7880}.btn-cyan-800:disabled,.btn-cyan-800.disabled{color:#fff;background-color:#055160;border-color:#055160}.btn-cyan-900{color:#fff;background-color:#032830;border-color:#032830}.btn-cyan-900:hover{color:#fff;background-color:#032229;border-color:#022026}.btn-check:focus+.btn-cyan-900,.btn-cyan-900:focus{color:#fff;background-color:#032229;border-color:#022026;box-shadow:0 0 0 .25rem #29484f80}.btn-check:checked+.btn-cyan-900,.btn-check:active+.btn-cyan-900,.btn-cyan-900:active,.btn-cyan-900.active,.show>.btn-cyan-900.dropdown-toggle{color:#fff;background-color:#022026;border-color:#021e24}.btn-check:checked+.btn-cyan-900:focus,.btn-check:active+.btn-cyan-900:focus,.btn-cyan-900:active:focus,.btn-cyan-900.active:focus,.show>.btn-cyan-900.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #29484f80}.btn-cyan-900:disabled,.btn-cyan-900.disabled{color:#fff;background-color:#032830;border-color:#032830}.btn-indigo-100{color:#000;background-color:#e0cffc;border-color:#e0cffc}.btn-indigo-100:hover{color:#000;background-color:#e5d6fc;border-color:#e3d4fc}.btn-check:focus+.btn-indigo-100,.btn-indigo-100:focus{color:#000;background-color:#e5d6fc;border-color:#e3d4fc;box-shadow:0 0 0 .25rem #beb0d680}.btn-check:checked+.btn-indigo-100,.btn-check:active+.btn-indigo-100,.btn-indigo-100:active,.btn-indigo-100.active,.show>.btn-indigo-100.dropdown-toggle{color:#000;background-color:#e6d9fd;border-color:#e3d4fc}.btn-check:checked+.btn-indigo-100:focus,.btn-check:active+.btn-indigo-100:focus,.btn-indigo-100:active:focus,.btn-indigo-100.active:focus,.show>.btn-indigo-100.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #beb0d680}.btn-indigo-100:disabled,.btn-indigo-100.disabled{color:#000;background-color:#e0cffc;border-color:#e0cffc}.btn-indigo-200{color:#000;background-color:#c29ffa;border-color:#c29ffa}.btn-indigo-200:hover{color:#000;background-color:#cbadfb;border-color:#c8a9fb}.btn-check:focus+.btn-indigo-200,.btn-indigo-200:focus{color:#000;background-color:#cbadfb;border-color:#c8a9fb;box-shadow:0 0 0 .25rem #a587d580}.btn-check:checked+.btn-indigo-200,.btn-check:active+.btn-indigo-200,.btn-indigo-200:active,.btn-indigo-200.active,.show>.btn-indigo-200.dropdown-toggle{color:#000;background-color:#ceb2fb;border-color:#c8a9fb}.btn-check:checked+.btn-indigo-200:focus,.btn-check:active+.btn-indigo-200:focus,.btn-indigo-200:active:focus,.btn-indigo-200.active:focus,.show>.btn-indigo-200.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #a587d580}.btn-indigo-200:disabled,.btn-indigo-200.disabled{color:#000;background-color:#c29ffa;border-color:#c29ffa}.btn-indigo-300{color:#000;background-color:#a370f7;border-color:#a370f7}.btn-indigo-300:hover{color:#000;background-color:#b185f8;border-color:#ac7ef8}.btn-check:focus+.btn-indigo-300,.btn-indigo-300:focus{color:#000;background-color:#b185f8;border-color:#ac7ef8;box-shadow:0 0 0 .25rem #8b5fd280}.btn-check:checked+.btn-indigo-300,.btn-check:active+.btn-indigo-300,.btn-indigo-300:active,.btn-indigo-300.active,.show>.btn-indigo-300.dropdown-toggle{color:#000;background-color:#b58df9;border-color:#ac7ef8}.btn-check:checked+.btn-indigo-300:focus,.btn-check:active+.btn-indigo-300:focus,.btn-indigo-300:active:focus,.btn-indigo-300.active:focus,.show>.btn-indigo-300.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #8b5fd280}.btn-indigo-300:disabled,.btn-indigo-300.disabled{color:#000;background-color:#a370f7;border-color:#a370f7}.btn-indigo-400{color:#fff;background-color:#8540f5;border-color:#8540f5}.btn-indigo-400:hover{color:#fff;background-color:#7136d0;border-color:#6a33c4}.btn-check:focus+.btn-indigo-400,.btn-indigo-400:focus{color:#fff;background-color:#7136d0;border-color:#6a33c4;box-shadow:0 0 0 .25rem #975df780}.btn-check:checked+.btn-indigo-400,.btn-check:active+.btn-indigo-400,.btn-indigo-400:active,.btn-indigo-400.active,.show>.btn-indigo-400.dropdown-toggle{color:#fff;background-color:#6a33c4;border-color:#6430b8}.btn-check:checked+.btn-indigo-400:focus,.btn-check:active+.btn-indigo-400:focus,.btn-indigo-400:active:focus,.btn-indigo-400.active:focus,.show>.btn-indigo-400.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #975df780}.btn-indigo-400:disabled,.btn-indigo-400.disabled{color:#fff;background-color:#8540f5;border-color:#8540f5}.btn-indigo-500{color:#fff;background-color:#6610f2;border-color:#6610f2}.btn-indigo-500:hover{color:#fff;background-color:#570ece;border-color:#520dc2}.btn-check:focus+.btn-indigo-500,.btn-indigo-500:focus{color:#fff;background-color:#570ece;border-color:#520dc2;box-shadow:0 0 0 .25rem #7d34f480}.btn-check:checked+.btn-indigo-500,.btn-check:active+.btn-indigo-500,.btn-indigo-500:active,.btn-indigo-500.active,.show>.btn-indigo-500.dropdown-toggle{color:#fff;background-color:#520dc2;border-color:#4d0cb6}.btn-check:checked+.btn-indigo-500:focus,.btn-check:active+.btn-indigo-500:focus,.btn-indigo-500:active:focus,.btn-indigo-500.active:focus,.show>.btn-indigo-500.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #7d34f480}.btn-indigo-500:disabled,.btn-indigo-500.disabled{color:#fff;background-color:#6610f2;border-color:#6610f2}.btn-indigo-600{color:#fff;background-color:#520dc2;border-color:#520dc2}.btn-indigo-600:hover{color:#fff;background-color:#460ba5;border-color:#420a9b}.btn-check:focus+.btn-indigo-600,.btn-indigo-600:focus{color:#fff;background-color:#460ba5;border-color:#420a9b;box-shadow:0 0 0 .25rem #6c31cb80}.btn-check:checked+.btn-indigo-600,.btn-check:active+.btn-indigo-600,.btn-indigo-600:active,.btn-indigo-600.active,.show>.btn-indigo-600.dropdown-toggle{color:#fff;background-color:#420a9b;border-color:#3e0a92}.btn-check:checked+.btn-indigo-600:focus,.btn-check:active+.btn-indigo-600:focus,.btn-indigo-600:active:focus,.btn-indigo-600.active:focus,.show>.btn-indigo-600.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #6c31cb80}.btn-indigo-600:disabled,.btn-indigo-600.disabled{color:#fff;background-color:#520dc2;border-color:#520dc2}.btn-indigo-700{color:#fff;background-color:#3d0a91;border-color:#3d0a91}.btn-indigo-700:hover{color:#fff;background-color:#34097b;border-color:#310874}.btn-check:focus+.btn-indigo-700,.btn-indigo-700:focus{color:#fff;background-color:#34097b;border-color:#310874;box-shadow:0 0 0 .25rem #5a2fa280}.btn-check:checked+.btn-indigo-700,.btn-check:active+.btn-indigo-700,.btn-indigo-700:active,.btn-indigo-700.active,.show>.btn-indigo-700.dropdown-toggle{color:#fff;background-color:#310874;border-color:#2e086d}.btn-check:checked+.btn-indigo-700:focus,.btn-check:active+.btn-indigo-700:focus,.btn-indigo-700:active:focus,.btn-indigo-700.active:focus,.show>.btn-indigo-700.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #5a2fa280}.btn-indigo-700:disabled,.btn-indigo-700.disabled{color:#fff;background-color:#3d0a91;border-color:#3d0a91}.btn-indigo-800{color:#fff;background-color:#290661;border-color:#290661}.btn-indigo-800:hover{color:#fff;background-color:#230552;border-color:#21054e}.btn-check:focus+.btn-indigo-800,.btn-indigo-800:focus{color:#fff;background-color:#230552;border-color:#21054e;box-shadow:0 0 0 .25rem #492b7980}.btn-check:checked+.btn-indigo-800,.btn-check:active+.btn-indigo-800,.btn-indigo-800:active,.btn-indigo-800.active,.show>.btn-indigo-800.dropdown-toggle{color:#fff;background-color:#21054e;border-color:#1f0549}.btn-check:checked+.btn-indigo-800:focus,.btn-check:active+.btn-indigo-800:focus,.btn-indigo-800:active:focus,.btn-indigo-800.active:focus,.show>.btn-indigo-800.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #492b7980}.btn-indigo-800:disabled,.btn-indigo-800.disabled{color:#fff;background-color:#290661;border-color:#290661}.btn-indigo-900{color:#fff;background-color:#140330;border-color:#140330}.btn-indigo-900:hover{color:#fff;background-color:#110329;border-color:#100226}.btn-check:focus+.btn-indigo-900,.btn-indigo-900:focus{color:#fff;background-color:#110329;border-color:#100226;box-shadow:0 0 0 .25rem #37294f80}.btn-check:checked+.btn-indigo-900,.btn-check:active+.btn-indigo-900,.btn-indigo-900:active,.btn-indigo-900.active,.show>.btn-indigo-900.dropdown-toggle{color:#fff;background-color:#100226;border-color:#0f0224}.btn-check:checked+.btn-indigo-900:focus,.btn-check:active+.btn-indigo-900:focus,.btn-indigo-900:active:focus,.btn-indigo-900.active:focus,.show>.btn-indigo-900.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #37294f80}.btn-indigo-900:disabled,.btn-indigo-900.disabled{color:#fff;background-color:#140330;border-color:#140330}.btn-purple-100{color:#000;background-color:#e2d9f3;border-color:#e2d9f3}.btn-purple-100:hover{color:#000;background-color:#e6dff5;border-color:#e5ddf4}.btn-check:focus+.btn-purple-100,.btn-purple-100:focus{color:#000;background-color:#e6dff5;border-color:#e5ddf4;box-shadow:0 0 0 .25rem #c0b8cf80}.btn-check:checked+.btn-purple-100,.btn-check:active+.btn-purple-100,.btn-purple-100:active,.btn-purple-100.active,.show>.btn-purple-100.dropdown-toggle{color:#000;background-color:#e8e1f5;border-color:#e5ddf4}.btn-check:checked+.btn-purple-100:focus,.btn-check:active+.btn-purple-100:focus,.btn-purple-100:active:focus,.btn-purple-100.active:focus,.show>.btn-purple-100.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #c0b8cf80}.btn-purple-100:disabled,.btn-purple-100.disabled{color:#000;background-color:#e2d9f3;border-color:#e2d9f3}.btn-purple-200{color:#000;background-color:#c5b3e6;border-color:#c5b3e6}.btn-purple-200:hover{color:#000;background-color:#cebeea;border-color:#cbbbe9}.btn-check:focus+.btn-purple-200,.btn-purple-200:focus{color:#000;background-color:#cebeea;border-color:#cbbbe9;box-shadow:0 0 0 .25rem #a798c480}.btn-check:checked+.btn-purple-200,.btn-check:active+.btn-purple-200,.btn-purple-200:active,.btn-purple-200.active,.show>.btn-purple-200.dropdown-toggle{color:#000;background-color:#d1c2eb;border-color:#cbbbe9}.btn-check:checked+.btn-purple-200:focus,.btn-check:active+.btn-purple-200:focus,.btn-purple-200:active:focus,.btn-purple-200.active:focus,.show>.btn-purple-200.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #a798c480}.btn-purple-200:disabled,.btn-purple-200.disabled{color:#000;background-color:#c5b3e6;border-color:#c5b3e6}.btn-purple-300{color:#000;background-color:#a98eda;border-color:#a98eda}.btn-purple-300:hover{color:#000;background-color:#b69fe0;border-color:#b299de}.btn-check:focus+.btn-purple-300,.btn-purple-300:focus{color:#000;background-color:#b69fe0;border-color:#b299de;box-shadow:0 0 0 .25rem #9079b980}.btn-check:checked+.btn-purple-300,.btn-check:active+.btn-purple-300,.btn-purple-300:active,.btn-purple-300.active,.show>.btn-purple-300.dropdown-toggle{color:#000;background-color:#baa5e1;border-color:#b299de}.btn-check:checked+.btn-purple-300:focus,.btn-check:active+.btn-purple-300:focus,.btn-purple-300:active:focus,.btn-purple-300.active:focus,.show>.btn-purple-300.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #9079b980}.btn-purple-300:disabled,.btn-purple-300.disabled{color:#000;background-color:#a98eda;border-color:#a98eda}.btn-purple-400{color:#000;background-color:#8c68cd;border-color:#8c68cd}.btn-purple-400:hover{color:#000;background-color:#9d7fd5;border-color:#9877d2}.btn-check:focus+.btn-purple-400,.btn-purple-400:focus{color:#000;background-color:#9d7fd5;border-color:#9877d2;box-shadow:0 0 0 .25rem #7758ae80}.btn-check:checked+.btn-purple-400,.btn-check:active+.btn-purple-400,.btn-purple-400:active,.btn-purple-400.active,.show>.btn-purple-400.dropdown-toggle{color:#000;background-color:#a386d7;border-color:#9877d2}.btn-check:checked+.btn-purple-400:focus,.btn-check:active+.btn-purple-400:focus,.btn-purple-400:active:focus,.btn-purple-400.active:focus,.show>.btn-purple-400.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #7758ae80}.btn-purple-400:disabled,.btn-purple-400.disabled{color:#000;background-color:#8c68cd;border-color:#8c68cd}.btn-purple-500{color:#fff;background-color:#6f42c1;border-color:#6f42c1}.btn-purple-500:hover{color:#fff;background-color:#5e38a4;border-color:#59359a}.btn-check:focus+.btn-purple-500,.btn-purple-500:focus{color:#fff;background-color:#5e38a4;border-color:#59359a;box-shadow:0 0 0 .25rem #855eca80}.btn-check:checked+.btn-purple-500,.btn-check:active+.btn-purple-500,.btn-purple-500:active,.btn-purple-500.active,.show>.btn-purple-500.dropdown-toggle{color:#fff;background-color:#59359a;border-color:#533291}.btn-check:checked+.btn-purple-500:focus,.btn-check:active+.btn-purple-500:focus,.btn-purple-500:active:focus,.btn-purple-500.active:focus,.show>.btn-purple-500.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #855eca80}.btn-purple-500:disabled,.btn-purple-500.disabled{color:#fff;background-color:#6f42c1;border-color:#6f42c1}.btn-purple-600{color:#fff;background-color:#59359a;border-color:#59359a}.btn-purple-600:hover{color:#fff;background-color:#4c2d83;border-color:#472a7b}.btn-check:focus+.btn-purple-600,.btn-purple-600:focus{color:#fff;background-color:#4c2d83;border-color:#472a7b;box-shadow:0 0 0 .25rem #7253a980}.btn-check:checked+.btn-purple-600,.btn-check:active+.btn-purple-600,.btn-purple-600:active,.btn-purple-600.active,.show>.btn-purple-600.dropdown-toggle{color:#fff;background-color:#472a7b;border-color:#432874}.btn-check:checked+.btn-purple-600:focus,.btn-check:active+.btn-purple-600:focus,.btn-purple-600:active:focus,.btn-purple-600.active:focus,.show>.btn-purple-600.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #7253a980}.btn-purple-600:disabled,.btn-purple-600.disabled{color:#fff;background-color:#59359a;border-color:#59359a}.btn-purple-700{color:#fff;background-color:#432874;border-color:#432874}.btn-purple-700:hover{color:#fff;background-color:#392263;border-color:#36205d}.btn-check:focus+.btn-purple-700,.btn-purple-700:focus{color:#fff;background-color:#392263;border-color:#36205d;box-shadow:0 0 0 .25rem #5f488980}.btn-check:checked+.btn-purple-700,.btn-check:active+.btn-purple-700,.btn-purple-700:active,.btn-purple-700.active,.show>.btn-purple-700.dropdown-toggle{color:#fff;background-color:#36205d;border-color:#321e57}.btn-check:checked+.btn-purple-700:focus,.btn-check:active+.btn-purple-700:focus,.btn-purple-700:active:focus,.btn-purple-700.active:focus,.show>.btn-purple-700.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #5f488980}.btn-purple-700:disabled,.btn-purple-700.disabled{color:#fff;background-color:#432874;border-color:#432874}.btn-purple-800{color:#fff;background-color:#2c1a4d;border-color:#2c1a4d}.btn-purple-800:hover{color:#fff;background-color:#251641;border-color:#23153e}.btn-check:focus+.btn-purple-800,.btn-purple-800:focus{color:#fff;background-color:#251641;border-color:#23153e;box-shadow:0 0 0 .25rem #4c3c6880}.btn-check:checked+.btn-purple-800,.btn-check:active+.btn-purple-800,.btn-purple-800:active,.btn-purple-800.active,.show>.btn-purple-800.dropdown-toggle{color:#fff;background-color:#23153e;border-color:#21143a}.btn-check:checked+.btn-purple-800:focus,.btn-check:active+.btn-purple-800:focus,.btn-purple-800:active:focus,.btn-purple-800.active:focus,.show>.btn-purple-800.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #4c3c6880}.btn-purple-800:disabled,.btn-purple-800.disabled{color:#fff;background-color:#2c1a4d;border-color:#2c1a4d}.btn-purple-900{color:#fff;background-color:#160d27;border-color:#160d27}.btn-purple-900:hover{color:#fff;background-color:#130b21;border-color:#120a1f}.btn-check:focus+.btn-purple-900,.btn-purple-900:focus{color:#fff;background-color:#130b21;border-color:#120a1f;box-shadow:0 0 0 .25rem #39314780}.btn-check:checked+.btn-purple-900,.btn-check:active+.btn-purple-900,.btn-purple-900:active,.btn-purple-900.active,.show>.btn-purple-900.dropdown-toggle{color:#fff;background-color:#120a1f;border-color:#110a1d}.btn-check:checked+.btn-purple-900:focus,.btn-check:active+.btn-purple-900:focus,.btn-purple-900:active:focus,.btn-purple-900.active:focus,.show>.btn-purple-900.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #39314780}.btn-purple-900:disabled,.btn-purple-900.disabled{color:#fff;background-color:#160d27;border-color:#160d27}.btn-pink-100{color:#000;background-color:#f7d6e6;border-color:#f7d6e6}.btn-pink-100:hover{color:#000;background-color:#f8dcea;border-color:#f8dae9}.btn-check:focus+.btn-pink-100,.btn-pink-100:focus{color:#000;background-color:#f8dcea;border-color:#f8dae9;box-shadow:0 0 0 .25rem #d2b6c480}.btn-check:checked+.btn-pink-100,.btn-check:active+.btn-pink-100,.btn-pink-100:active,.btn-pink-100.active,.show>.btn-pink-100.dropdown-toggle{color:#000;background-color:#f9deeb;border-color:#f8dae9}.btn-check:checked+.btn-pink-100:focus,.btn-check:active+.btn-pink-100:focus,.btn-pink-100:active:focus,.btn-pink-100.active:focus,.show>.btn-pink-100.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #d2b6c480}.btn-pink-100:disabled,.btn-pink-100.disabled{color:#000;background-color:#f7d6e6;border-color:#f7d6e6}.btn-pink-200{color:#000;background-color:#efadce;border-color:#efadce}.btn-pink-200:hover{color:#000;background-color:#f1b9d5;border-color:#f1b5d3}.btn-check:focus+.btn-pink-200,.btn-pink-200:focus{color:#000;background-color:#f1b9d5;border-color:#f1b5d3;box-shadow:0 0 0 .25rem #cb93af80}.btn-check:checked+.btn-pink-200,.btn-check:active+.btn-pink-200,.btn-pink-200:active,.btn-pink-200.active,.show>.btn-pink-200.dropdown-toggle{color:#000;background-color:#f2bdd8;border-color:#f1b5d3}.btn-check:checked+.btn-pink-200:focus,.btn-check:active+.btn-pink-200:focus,.btn-pink-200:active:focus,.btn-pink-200.active:focus,.show>.btn-pink-200.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #cb93af80}.btn-pink-200:disabled,.btn-pink-200.disabled{color:#000;background-color:#efadce;border-color:#efadce}.btn-pink-300{color:#000;background-color:#e685b5;border-color:#e685b5}.btn-pink-300:hover{color:#000;background-color:#ea97c0;border-color:#e991bc}.btn-check:focus+.btn-pink-300,.btn-pink-300:focus{color:#000;background-color:#ea97c0;border-color:#e991bc;box-shadow:0 0 0 .25rem #c4719a80}.btn-check:checked+.btn-pink-300,.btn-check:active+.btn-pink-300,.btn-pink-300:active,.btn-pink-300.active,.show>.btn-pink-300.dropdown-toggle{color:#000;background-color:#eb9dc4;border-color:#e991bc}.btn-check:checked+.btn-pink-300:focus,.btn-check:active+.btn-pink-300:focus,.btn-pink-300:active:focus,.btn-pink-300.active:focus,.show>.btn-pink-300.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #c4719a80}.btn-pink-300:disabled,.btn-pink-300.disabled{color:#000;background-color:#e685b5;border-color:#e685b5}.btn-pink-400{color:#000;background-color:#de5c9d;border-color:#de5c9d}.btn-pink-400:hover{color:#000;background-color:#e374ac;border-color:#e16ca7}.btn-check:focus+.btn-pink-400,.btn-pink-400:focus{color:#000;background-color:#e374ac;border-color:#e16ca7;box-shadow:0 0 0 .25rem #bd4e8580}.btn-check:checked+.btn-pink-400,.btn-check:active+.btn-pink-400,.btn-pink-400:active,.btn-pink-400.active,.show>.btn-pink-400.dropdown-toggle{color:#000;background-color:#e57db1;border-color:#e16ca7}.btn-check:checked+.btn-pink-400:focus,.btn-check:active+.btn-pink-400:focus,.btn-pink-400:active:focus,.btn-pink-400.active:focus,.show>.btn-pink-400.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #bd4e8580}.btn-pink-400:disabled,.btn-pink-400.disabled{color:#000;background-color:#de5c9d;border-color:#de5c9d}.btn-pink-500{color:#fff;background-color:#d63384;border-color:#d63384}.btn-pink-500:hover{color:#fff;background-color:#b62b70;border-color:#ab296a}.btn-check:focus+.btn-pink-500,.btn-pink-500:focus{color:#fff;background-color:#b62b70;border-color:#ab296a;box-shadow:0 0 0 .25rem #dc529680}.btn-check:checked+.btn-pink-500,.btn-check:active+.btn-pink-500,.btn-pink-500:active,.btn-pink-500.active,.show>.btn-pink-500.dropdown-toggle{color:#fff;background-color:#ab296a;border-color:#a12663}.btn-check:checked+.btn-pink-500:focus,.btn-check:active+.btn-pink-500:focus,.btn-pink-500:active:focus,.btn-pink-500.active:focus,.show>.btn-pink-500.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #dc529680}.btn-pink-500:disabled,.btn-pink-500.disabled{color:#fff;background-color:#d63384;border-color:#d63384}.btn-pink-600{color:#fff;background-color:#ab296a;border-color:#ab296a}.btn-pink-600:hover{color:#fff;background-color:#91235a;border-color:#892155}.btn-check:focus+.btn-pink-600,.btn-pink-600:focus{color:#fff;background-color:#91235a;border-color:#892155;box-shadow:0 0 0 .25rem #b8498080}.btn-check:checked+.btn-pink-600,.btn-check:active+.btn-pink-600,.btn-pink-600:active,.btn-pink-600.active,.show>.btn-pink-600.dropdown-toggle{color:#fff;background-color:#892155;border-color:#801f50}.btn-check:checked+.btn-pink-600:focus,.btn-check:active+.btn-pink-600:focus,.btn-pink-600:active:focus,.btn-pink-600.active:focus,.show>.btn-pink-600.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #b8498080}.btn-pink-600:disabled,.btn-pink-600.disabled{color:#fff;background-color:#ab296a;border-color:#ab296a}.btn-pink-700{color:#fff;background-color:#801f4f;border-color:#801f4f}.btn-pink-700:hover{color:#fff;background-color:#6d1a43;border-color:#66193f}.btn-check:focus+.btn-pink-700,.btn-pink-700:focus{color:#fff;background-color:#6d1a43;border-color:#66193f;box-shadow:0 0 0 .25rem #93416980}.btn-check:checked+.btn-pink-700,.btn-check:active+.btn-pink-700,.btn-pink-700:active,.btn-pink-700.active,.show>.btn-pink-700.dropdown-toggle{color:#fff;background-color:#66193f;border-color:#60173b}.btn-check:checked+.btn-pink-700:focus,.btn-check:active+.btn-pink-700:focus,.btn-pink-700:active:focus,.btn-pink-700.active:focus,.show>.btn-pink-700.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #93416980}.btn-pink-700:disabled,.btn-pink-700.disabled{color:#fff;background-color:#801f4f;border-color:#801f4f}.btn-pink-800{color:#fff;background-color:#561435;border-color:#561435}.btn-pink-800:hover{color:#fff;background-color:#49112d;border-color:#45102a}.btn-check:focus+.btn-pink-800,.btn-pink-800:focus{color:#fff;background-color:#49112d;border-color:#45102a;box-shadow:0 0 0 .25rem #6f375380}.btn-check:checked+.btn-pink-800,.btn-check:active+.btn-pink-800,.btn-pink-800:active,.btn-pink-800.active,.show>.btn-pink-800.dropdown-toggle{color:#fff;background-color:#45102a;border-color:#410f28}.btn-check:checked+.btn-pink-800:focus,.btn-check:active+.btn-pink-800:focus,.btn-pink-800:active:focus,.btn-pink-800.active:focus,.show>.btn-pink-800.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #6f375380}.btn-pink-800:disabled,.btn-pink-800.disabled{color:#fff;background-color:#561435;border-color:#561435}.btn-pink-900{color:#fff;background-color:#2b0a1a;border-color:#2b0a1a}.btn-pink-900:hover{color:#fff;background-color:#250916;border-color:#220815}.btn-check:focus+.btn-pink-900,.btn-pink-900:focus{color:#fff;background-color:#250916;border-color:#220815;box-shadow:0 0 0 .25rem #4b2f3c80}.btn-check:checked+.btn-pink-900,.btn-check:active+.btn-pink-900,.btn-pink-900:active,.btn-pink-900.active,.show>.btn-pink-900.dropdown-toggle{color:#fff;background-color:#220815;border-color:#200814}.btn-check:checked+.btn-pink-900:focus,.btn-check:active+.btn-pink-900:focus,.btn-pink-900:active:focus,.btn-pink-900.active:focus,.show>.btn-pink-900.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #4b2f3c80}.btn-pink-900:disabled,.btn-pink-900.disabled{color:#fff;background-color:#2b0a1a;border-color:#2b0a1a}.btn-outline-primary{color:#337ab7;border-color:#337ab7}.btn-outline-primary:hover{color:#fff;background-color:#337ab7;border-color:#337ab7}.btn-check:focus+.btn-outline-primary,.btn-outline-primary:focus{box-shadow:0 0 0 .25rem #337ab780}.btn-check:checked+.btn-outline-primary,.btn-check:active+.btn-outline-primary,.btn-outline-primary:active,.btn-outline-primary.active,.btn-outline-primary.dropdown-toggle.show{color:#fff;background-color:#337ab7;border-color:#337ab7}.btn-check:checked+.btn-outline-primary:focus,.btn-check:active+.btn-outline-primary:focus,.btn-outline-primary:active:focus,.btn-outline-primary.active:focus,.btn-outline-primary.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #337ab780}.btn-outline-primary:disabled,.btn-outline-primary.disabled{color:#337ab7;background-color:transparent}.btn-outline-secondary{color:#6c757d;border-color:#6c757d}.btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-check:focus+.btn-outline-secondary,.btn-outline-secondary:focus{box-shadow:0 0 0 .25rem #6c757d80}.btn-check:checked+.btn-outline-secondary,.btn-check:active+.btn-outline-secondary,.btn-outline-secondary:active,.btn-outline-secondary.active,.btn-outline-secondary.dropdown-toggle.show{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-check:checked+.btn-outline-secondary:focus,.btn-check:active+.btn-outline-secondary:focus,.btn-outline-secondary:active:focus,.btn-outline-secondary.active:focus,.btn-outline-secondary.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #6c757d80}.btn-outline-secondary:disabled,.btn-outline-secondary.disabled{color:#6c757d;background-color:transparent}.btn-outline-success{color:#198754;border-color:#198754}.btn-outline-success:hover{color:#fff;background-color:#198754;border-color:#198754}.btn-check:focus+.btn-outline-success,.btn-outline-success:focus{box-shadow:0 0 0 .25rem #19875480}.btn-check:checked+.btn-outline-success,.btn-check:active+.btn-outline-success,.btn-outline-success:active,.btn-outline-success.active,.btn-outline-success.dropdown-toggle.show{color:#fff;background-color:#198754;border-color:#198754}.btn-check:checked+.btn-outline-success:focus,.btn-check:active+.btn-outline-success:focus,.btn-outline-success:active:focus,.btn-outline-success.active:focus,.btn-outline-success.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #19875480}.btn-outline-success:disabled,.btn-outline-success.disabled{color:#198754;background-color:transparent}.btn-outline-info{color:#0dcaf0;border-color:#0dcaf0}.btn-outline-info:hover{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-check:focus+.btn-outline-info,.btn-outline-info:focus{box-shadow:0 0 0 .25rem #0dcaf080}.btn-check:checked+.btn-outline-info,.btn-check:active+.btn-outline-info,.btn-outline-info:active,.btn-outline-info.active,.btn-outline-info.dropdown-toggle.show{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-check:checked+.btn-outline-info:focus,.btn-check:active+.btn-outline-info:focus,.btn-outline-info:active:focus,.btn-outline-info.active:focus,.btn-outline-info.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #0dcaf080}.btn-outline-info:disabled,.btn-outline-info.disabled{color:#0dcaf0;background-color:transparent}.btn-outline-warning{color:#ffc107;border-color:#ffc107}.btn-outline-warning:hover{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-check:focus+.btn-outline-warning,.btn-outline-warning:focus{box-shadow:0 0 0 .25rem #ffc10780}.btn-check:checked+.btn-outline-warning,.btn-check:active+.btn-outline-warning,.btn-outline-warning:active,.btn-outline-warning.active,.btn-outline-warning.dropdown-toggle.show{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-check:checked+.btn-outline-warning:focus,.btn-check:active+.btn-outline-warning:focus,.btn-outline-warning:active:focus,.btn-outline-warning.active:focus,.btn-outline-warning.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #ffc10780}.btn-outline-warning:disabled,.btn-outline-warning.disabled{color:#ffc107;background-color:transparent}.btn-outline-danger{color:#dc3545;border-color:#dc3545}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-check:focus+.btn-outline-danger,.btn-outline-danger:focus{box-shadow:0 0 0 .25rem #dc354580}.btn-check:checked+.btn-outline-danger,.btn-check:active+.btn-outline-danger,.btn-outline-danger:active,.btn-outline-danger.active,.btn-outline-danger.dropdown-toggle.show{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-check:checked+.btn-outline-danger:focus,.btn-check:active+.btn-outline-danger:focus,.btn-outline-danger:active:focus,.btn-outline-danger.active:focus,.btn-outline-danger.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #dc354580}.btn-outline-danger:disabled,.btn-outline-danger.disabled{color:#dc3545;background-color:transparent}.btn-outline-light{color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:hover{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-check:focus+.btn-outline-light,.btn-outline-light:focus{box-shadow:0 0 0 .25rem #f8f9fa80}.btn-check:checked+.btn-outline-light,.btn-check:active+.btn-outline-light,.btn-outline-light:active,.btn-outline-light.active,.btn-outline-light.dropdown-toggle.show{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-check:checked+.btn-outline-light:focus,.btn-check:active+.btn-outline-light:focus,.btn-outline-light:active:focus,.btn-outline-light.active:focus,.btn-outline-light.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #f8f9fa80}.btn-outline-light:disabled,.btn-outline-light.disabled{color:#f8f9fa;background-color:transparent}.btn-outline-dark{color:#212529;border-color:#212529}.btn-outline-dark:hover{color:#fff;background-color:#212529;border-color:#212529}.btn-check:focus+.btn-outline-dark,.btn-outline-dark:focus{box-shadow:0 0 0 .25rem #21252980}.btn-check:checked+.btn-outline-dark,.btn-check:active+.btn-outline-dark,.btn-outline-dark:active,.btn-outline-dark.active,.btn-outline-dark.dropdown-toggle.show{color:#fff;background-color:#212529;border-color:#212529}.btn-check:checked+.btn-outline-dark:focus,.btn-check:active+.btn-outline-dark:focus,.btn-outline-dark:active:focus,.btn-outline-dark.active:focus,.btn-outline-dark.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #21252980}.btn-outline-dark:disabled,.btn-outline-dark.disabled{color:#212529;background-color:transparent}.btn-outline-red{color:#dc3545;border-color:#dc3545}.btn-outline-red:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-check:focus+.btn-outline-red,.btn-outline-red:focus{box-shadow:0 0 0 .25rem #dc354580}.btn-check:checked+.btn-outline-red,.btn-check:active+.btn-outline-red,.btn-outline-red:active,.btn-outline-red.active,.btn-outline-red.dropdown-toggle.show{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-check:checked+.btn-outline-red:focus,.btn-check:active+.btn-outline-red:focus,.btn-outline-red:active:focus,.btn-outline-red.active:focus,.btn-outline-red.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #dc354580}.btn-outline-red:disabled,.btn-outline-red.disabled{color:#dc3545;background-color:transparent}.btn-outline-yellow{color:#ffc107;border-color:#ffc107}.btn-outline-yellow:hover{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-check:focus+.btn-outline-yellow,.btn-outline-yellow:focus{box-shadow:0 0 0 .25rem #ffc10780}.btn-check:checked+.btn-outline-yellow,.btn-check:active+.btn-outline-yellow,.btn-outline-yellow:active,.btn-outline-yellow.active,.btn-outline-yellow.dropdown-toggle.show{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-check:checked+.btn-outline-yellow:focus,.btn-check:active+.btn-outline-yellow:focus,.btn-outline-yellow:active:focus,.btn-outline-yellow.active:focus,.btn-outline-yellow.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #ffc10780}.btn-outline-yellow:disabled,.btn-outline-yellow.disabled{color:#ffc107;background-color:transparent}.btn-outline-green{color:#198754;border-color:#198754}.btn-outline-green:hover{color:#fff;background-color:#198754;border-color:#198754}.btn-check:focus+.btn-outline-green,.btn-outline-green:focus{box-shadow:0 0 0 .25rem #19875480}.btn-check:checked+.btn-outline-green,.btn-check:active+.btn-outline-green,.btn-outline-green:active,.btn-outline-green.active,.btn-outline-green.dropdown-toggle.show{color:#fff;background-color:#198754;border-color:#198754}.btn-check:checked+.btn-outline-green:focus,.btn-check:active+.btn-outline-green:focus,.btn-outline-green:active:focus,.btn-outline-green.active:focus,.btn-outline-green.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #19875480}.btn-outline-green:disabled,.btn-outline-green.disabled{color:#198754;background-color:transparent}.btn-outline-blue{color:#0d6efd;border-color:#0d6efd}.btn-outline-blue:hover{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-check:focus+.btn-outline-blue,.btn-outline-blue:focus{box-shadow:0 0 0 .25rem #0d6efd80}.btn-check:checked+.btn-outline-blue,.btn-check:active+.btn-outline-blue,.btn-outline-blue:active,.btn-outline-blue.active,.btn-outline-blue.dropdown-toggle.show{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-check:checked+.btn-outline-blue:focus,.btn-check:active+.btn-outline-blue:focus,.btn-outline-blue:active:focus,.btn-outline-blue.active:focus,.btn-outline-blue.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #0d6efd80}.btn-outline-blue:disabled,.btn-outline-blue.disabled{color:#0d6efd;background-color:transparent}.btn-outline-cyan{color:#0dcaf0;border-color:#0dcaf0}.btn-outline-cyan:hover{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-check:focus+.btn-outline-cyan,.btn-outline-cyan:focus{box-shadow:0 0 0 .25rem #0dcaf080}.btn-check:checked+.btn-outline-cyan,.btn-check:active+.btn-outline-cyan,.btn-outline-cyan:active,.btn-outline-cyan.active,.btn-outline-cyan.dropdown-toggle.show{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-check:checked+.btn-outline-cyan:focus,.btn-check:active+.btn-outline-cyan:focus,.btn-outline-cyan:active:focus,.btn-outline-cyan.active:focus,.btn-outline-cyan.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #0dcaf080}.btn-outline-cyan:disabled,.btn-outline-cyan.disabled{color:#0dcaf0;background-color:transparent}.btn-outline-indigo{color:#6610f2;border-color:#6610f2}.btn-outline-indigo:hover{color:#fff;background-color:#6610f2;border-color:#6610f2}.btn-check:focus+.btn-outline-indigo,.btn-outline-indigo:focus{box-shadow:0 0 0 .25rem #6610f280}.btn-check:checked+.btn-outline-indigo,.btn-check:active+.btn-outline-indigo,.btn-outline-indigo:active,.btn-outline-indigo.active,.btn-outline-indigo.dropdown-toggle.show{color:#fff;background-color:#6610f2;border-color:#6610f2}.btn-check:checked+.btn-outline-indigo:focus,.btn-check:active+.btn-outline-indigo:focus,.btn-outline-indigo:active:focus,.btn-outline-indigo.active:focus,.btn-outline-indigo.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #6610f280}.btn-outline-indigo:disabled,.btn-outline-indigo.disabled{color:#6610f2;background-color:transparent}.btn-outline-purple{color:#6f42c1;border-color:#6f42c1}.btn-outline-purple:hover{color:#fff;background-color:#6f42c1;border-color:#6f42c1}.btn-check:focus+.btn-outline-purple,.btn-outline-purple:focus{box-shadow:0 0 0 .25rem #6f42c180}.btn-check:checked+.btn-outline-purple,.btn-check:active+.btn-outline-purple,.btn-outline-purple:active,.btn-outline-purple.active,.btn-outline-purple.dropdown-toggle.show{color:#fff;background-color:#6f42c1;border-color:#6f42c1}.btn-check:checked+.btn-outline-purple:focus,.btn-check:active+.btn-outline-purple:focus,.btn-outline-purple:active:focus,.btn-outline-purple.active:focus,.btn-outline-purple.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #6f42c180}.btn-outline-purple:disabled,.btn-outline-purple.disabled{color:#6f42c1;background-color:transparent}.btn-outline-pink{color:#d63384;border-color:#d63384}.btn-outline-pink:hover{color:#fff;background-color:#d63384;border-color:#d63384}.btn-check:focus+.btn-outline-pink,.btn-outline-pink:focus{box-shadow:0 0 0 .25rem #d6338480}.btn-check:checked+.btn-outline-pink,.btn-check:active+.btn-outline-pink,.btn-outline-pink:active,.btn-outline-pink.active,.btn-outline-pink.dropdown-toggle.show{color:#fff;background-color:#d63384;border-color:#d63384}.btn-check:checked+.btn-outline-pink:focus,.btn-check:active+.btn-outline-pink:focus,.btn-outline-pink:active:focus,.btn-outline-pink.active:focus,.btn-outline-pink.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #d6338480}.btn-outline-pink:disabled,.btn-outline-pink.disabled{color:#d63384;background-color:transparent}.btn-outline-darker{color:#1b1f22;border-color:#1b1f22}.btn-outline-darker:hover{color:#fff;background-color:#1b1f22;border-color:#1b1f22}.btn-check:focus+.btn-outline-darker,.btn-outline-darker:focus{box-shadow:0 0 0 .25rem #1b1f2280}.btn-check:checked+.btn-outline-darker,.btn-check:active+.btn-outline-darker,.btn-outline-darker:active,.btn-outline-darker.active,.btn-outline-darker.dropdown-toggle.show{color:#fff;background-color:#1b1f22;border-color:#1b1f22}.btn-check:checked+.btn-outline-darker:focus,.btn-check:active+.btn-outline-darker:focus,.btn-outline-darker:active:focus,.btn-outline-darker.active:focus,.btn-outline-darker.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #1b1f2280}.btn-outline-darker:disabled,.btn-outline-darker.disabled{color:#1b1f22;background-color:transparent}.btn-outline-darkest{color:#171b1d;border-color:#171b1d}.btn-outline-darkest:hover{color:#fff;background-color:#171b1d;border-color:#171b1d}.btn-check:focus+.btn-outline-darkest,.btn-outline-darkest:focus{box-shadow:0 0 0 .25rem #171b1d80}.btn-check:checked+.btn-outline-darkest,.btn-check:active+.btn-outline-darkest,.btn-outline-darkest:active,.btn-outline-darkest.active,.btn-outline-darkest.dropdown-toggle.show{color:#fff;background-color:#171b1d;border-color:#171b1d}.btn-check:checked+.btn-outline-darkest:focus,.btn-check:active+.btn-outline-darkest:focus,.btn-outline-darkest:active:focus,.btn-outline-darkest.active:focus,.btn-outline-darkest.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #171b1d80}.btn-outline-darkest:disabled,.btn-outline-darkest.disabled{color:#171b1d;background-color:transparent}.btn-outline-gray{color:#ced4da;border-color:#ced4da}.btn-outline-gray:hover{color:#000;background-color:#ced4da;border-color:#ced4da}.btn-check:focus+.btn-outline-gray,.btn-outline-gray:focus{box-shadow:0 0 0 .25rem #ced4da80}.btn-check:checked+.btn-outline-gray,.btn-check:active+.btn-outline-gray,.btn-outline-gray:active,.btn-outline-gray.active,.btn-outline-gray.dropdown-toggle.show{color:#000;background-color:#ced4da;border-color:#ced4da}.btn-check:checked+.btn-outline-gray:focus,.btn-check:active+.btn-outline-gray:focus,.btn-outline-gray:active:focus,.btn-outline-gray.active:focus,.btn-outline-gray.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #ced4da80}.btn-outline-gray:disabled,.btn-outline-gray.disabled{color:#ced4da;background-color:transparent}.btn-outline-gray-100{color:#f8f9fa;border-color:#f8f9fa}.btn-outline-gray-100:hover{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-check:focus+.btn-outline-gray-100,.btn-outline-gray-100:focus{box-shadow:0 0 0 .25rem #f8f9fa80}.btn-check:checked+.btn-outline-gray-100,.btn-check:active+.btn-outline-gray-100,.btn-outline-gray-100:active,.btn-outline-gray-100.active,.btn-outline-gray-100.dropdown-toggle.show{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-check:checked+.btn-outline-gray-100:focus,.btn-check:active+.btn-outline-gray-100:focus,.btn-outline-gray-100:active:focus,.btn-outline-gray-100.active:focus,.btn-outline-gray-100.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #f8f9fa80}.btn-outline-gray-100:disabled,.btn-outline-gray-100.disabled{color:#f8f9fa;background-color:transparent}.btn-outline-gray-200{color:#e9ecef;border-color:#e9ecef}.btn-outline-gray-200:hover{color:#000;background-color:#e9ecef;border-color:#e9ecef}.btn-check:focus+.btn-outline-gray-200,.btn-outline-gray-200:focus{box-shadow:0 0 0 .25rem #e9ecef80}.btn-check:checked+.btn-outline-gray-200,.btn-check:active+.btn-outline-gray-200,.btn-outline-gray-200:active,.btn-outline-gray-200.active,.btn-outline-gray-200.dropdown-toggle.show{color:#000;background-color:#e9ecef;border-color:#e9ecef}.btn-check:checked+.btn-outline-gray-200:focus,.btn-check:active+.btn-outline-gray-200:focus,.btn-outline-gray-200:active:focus,.btn-outline-gray-200.active:focus,.btn-outline-gray-200.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #e9ecef80}.btn-outline-gray-200:disabled,.btn-outline-gray-200.disabled{color:#e9ecef;background-color:transparent}.btn-outline-gray-300{color:#dee2e6;border-color:#dee2e6}.btn-outline-gray-300:hover{color:#000;background-color:#dee2e6;border-color:#dee2e6}.btn-check:focus+.btn-outline-gray-300,.btn-outline-gray-300:focus{box-shadow:0 0 0 .25rem #dee2e680}.btn-check:checked+.btn-outline-gray-300,.btn-check:active+.btn-outline-gray-300,.btn-outline-gray-300:active,.btn-outline-gray-300.active,.btn-outline-gray-300.dropdown-toggle.show{color:#000;background-color:#dee2e6;border-color:#dee2e6}.btn-check:checked+.btn-outline-gray-300:focus,.btn-check:active+.btn-outline-gray-300:focus,.btn-outline-gray-300:active:focus,.btn-outline-gray-300.active:focus,.btn-outline-gray-300.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #dee2e680}.btn-outline-gray-300:disabled,.btn-outline-gray-300.disabled{color:#dee2e6;background-color:transparent}.btn-outline-gray-400{color:#ced4da;border-color:#ced4da}.btn-outline-gray-400:hover{color:#000;background-color:#ced4da;border-color:#ced4da}.btn-check:focus+.btn-outline-gray-400,.btn-outline-gray-400:focus{box-shadow:0 0 0 .25rem #ced4da80}.btn-check:checked+.btn-outline-gray-400,.btn-check:active+.btn-outline-gray-400,.btn-outline-gray-400:active,.btn-outline-gray-400.active,.btn-outline-gray-400.dropdown-toggle.show{color:#000;background-color:#ced4da;border-color:#ced4da}.btn-check:checked+.btn-outline-gray-400:focus,.btn-check:active+.btn-outline-gray-400:focus,.btn-outline-gray-400:active:focus,.btn-outline-gray-400.active:focus,.btn-outline-gray-400.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #ced4da80}.btn-outline-gray-400:disabled,.btn-outline-gray-400.disabled{color:#ced4da;background-color:transparent}.btn-outline-gray-500{color:#adb5bd;border-color:#adb5bd}.btn-outline-gray-500:hover{color:#000;background-color:#adb5bd;border-color:#adb5bd}.btn-check:focus+.btn-outline-gray-500,.btn-outline-gray-500:focus{box-shadow:0 0 0 .25rem #adb5bd80}.btn-check:checked+.btn-outline-gray-500,.btn-check:active+.btn-outline-gray-500,.btn-outline-gray-500:active,.btn-outline-gray-500.active,.btn-outline-gray-500.dropdown-toggle.show{color:#000;background-color:#adb5bd;border-color:#adb5bd}.btn-check:checked+.btn-outline-gray-500:focus,.btn-check:active+.btn-outline-gray-500:focus,.btn-outline-gray-500:active:focus,.btn-outline-gray-500.active:focus,.btn-outline-gray-500.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #adb5bd80}.btn-outline-gray-500:disabled,.btn-outline-gray-500.disabled{color:#adb5bd;background-color:transparent}.btn-outline-gray-600{color:#6c757d;border-color:#6c757d}.btn-outline-gray-600:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-check:focus+.btn-outline-gray-600,.btn-outline-gray-600:focus{box-shadow:0 0 0 .25rem #6c757d80}.btn-check:checked+.btn-outline-gray-600,.btn-check:active+.btn-outline-gray-600,.btn-outline-gray-600:active,.btn-outline-gray-600.active,.btn-outline-gray-600.dropdown-toggle.show{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-check:checked+.btn-outline-gray-600:focus,.btn-check:active+.btn-outline-gray-600:focus,.btn-outline-gray-600:active:focus,.btn-outline-gray-600.active:focus,.btn-outline-gray-600.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #6c757d80}.btn-outline-gray-600:disabled,.btn-outline-gray-600.disabled{color:#6c757d;background-color:transparent}.btn-outline-gray-700{color:#495057;border-color:#495057}.btn-outline-gray-700:hover{color:#fff;background-color:#495057;border-color:#495057}.btn-check:focus+.btn-outline-gray-700,.btn-outline-gray-700:focus{box-shadow:0 0 0 .25rem #49505780}.btn-check:checked+.btn-outline-gray-700,.btn-check:active+.btn-outline-gray-700,.btn-outline-gray-700:active,.btn-outline-gray-700.active,.btn-outline-gray-700.dropdown-toggle.show{color:#fff;background-color:#495057;border-color:#495057}.btn-check:checked+.btn-outline-gray-700:focus,.btn-check:active+.btn-outline-gray-700:focus,.btn-outline-gray-700:active:focus,.btn-outline-gray-700.active:focus,.btn-outline-gray-700.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #49505780}.btn-outline-gray-700:disabled,.btn-outline-gray-700.disabled{color:#495057;background-color:transparent}.btn-outline-gray-800{color:#343a40;border-color:#343a40}.btn-outline-gray-800:hover{color:#fff;background-color:#343a40;border-color:#343a40}.btn-check:focus+.btn-outline-gray-800,.btn-outline-gray-800:focus{box-shadow:0 0 0 .25rem #343a4080}.btn-check:checked+.btn-outline-gray-800,.btn-check:active+.btn-outline-gray-800,.btn-outline-gray-800:active,.btn-outline-gray-800.active,.btn-outline-gray-800.dropdown-toggle.show{color:#fff;background-color:#343a40;border-color:#343a40}.btn-check:checked+.btn-outline-gray-800:focus,.btn-check:active+.btn-outline-gray-800:focus,.btn-outline-gray-800:active:focus,.btn-outline-gray-800.active:focus,.btn-outline-gray-800.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #343a4080}.btn-outline-gray-800:disabled,.btn-outline-gray-800.disabled{color:#343a40;background-color:transparent}.btn-outline-gray-900{color:#212529;border-color:#212529}.btn-outline-gray-900:hover{color:#fff;background-color:#212529;border-color:#212529}.btn-check:focus+.btn-outline-gray-900,.btn-outline-gray-900:focus{box-shadow:0 0 0 .25rem #21252980}.btn-check:checked+.btn-outline-gray-900,.btn-check:active+.btn-outline-gray-900,.btn-outline-gray-900:active,.btn-outline-gray-900.active,.btn-outline-gray-900.dropdown-toggle.show{color:#fff;background-color:#212529;border-color:#212529}.btn-check:checked+.btn-outline-gray-900:focus,.btn-check:active+.btn-outline-gray-900:focus,.btn-outline-gray-900:active:focus,.btn-outline-gray-900.active:focus,.btn-outline-gray-900.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #21252980}.btn-outline-gray-900:disabled,.btn-outline-gray-900.disabled{color:#212529;background-color:transparent}.btn-outline-red-100{color:#f8d7da;border-color:#f8d7da}.btn-outline-red-100:hover{color:#000;background-color:#f8d7da;border-color:#f8d7da}.btn-check:focus+.btn-outline-red-100,.btn-outline-red-100:focus{box-shadow:0 0 0 .25rem #f8d7da80}.btn-check:checked+.btn-outline-red-100,.btn-check:active+.btn-outline-red-100,.btn-outline-red-100:active,.btn-outline-red-100.active,.btn-outline-red-100.dropdown-toggle.show{color:#000;background-color:#f8d7da;border-color:#f8d7da}.btn-check:checked+.btn-outline-red-100:focus,.btn-check:active+.btn-outline-red-100:focus,.btn-outline-red-100:active:focus,.btn-outline-red-100.active:focus,.btn-outline-red-100.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #f8d7da80}.btn-outline-red-100:disabled,.btn-outline-red-100.disabled{color:#f8d7da;background-color:transparent}.btn-outline-red-200{color:#f1aeb5;border-color:#f1aeb5}.btn-outline-red-200:hover{color:#000;background-color:#f1aeb5;border-color:#f1aeb5}.btn-check:focus+.btn-outline-red-200,.btn-outline-red-200:focus{box-shadow:0 0 0 .25rem #f1aeb580}.btn-check:checked+.btn-outline-red-200,.btn-check:active+.btn-outline-red-200,.btn-outline-red-200:active,.btn-outline-red-200.active,.btn-outline-red-200.dropdown-toggle.show{color:#000;background-color:#f1aeb5;border-color:#f1aeb5}.btn-check:checked+.btn-outline-red-200:focus,.btn-check:active+.btn-outline-red-200:focus,.btn-outline-red-200:active:focus,.btn-outline-red-200.active:focus,.btn-outline-red-200.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #f1aeb580}.btn-outline-red-200:disabled,.btn-outline-red-200.disabled{color:#f1aeb5;background-color:transparent}.btn-outline-red-300{color:#ea868f;border-color:#ea868f}.btn-outline-red-300:hover{color:#000;background-color:#ea868f;border-color:#ea868f}.btn-check:focus+.btn-outline-red-300,.btn-outline-red-300:focus{box-shadow:0 0 0 .25rem #ea868f80}.btn-check:checked+.btn-outline-red-300,.btn-check:active+.btn-outline-red-300,.btn-outline-red-300:active,.btn-outline-red-300.active,.btn-outline-red-300.dropdown-toggle.show{color:#000;background-color:#ea868f;border-color:#ea868f}.btn-check:checked+.btn-outline-red-300:focus,.btn-check:active+.btn-outline-red-300:focus,.btn-outline-red-300:active:focus,.btn-outline-red-300.active:focus,.btn-outline-red-300.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #ea868f80}.btn-outline-red-300:disabled,.btn-outline-red-300.disabled{color:#ea868f;background-color:transparent}.btn-outline-red-400{color:#e35d6a;border-color:#e35d6a}.btn-outline-red-400:hover{color:#000;background-color:#e35d6a;border-color:#e35d6a}.btn-check:focus+.btn-outline-red-400,.btn-outline-red-400:focus{box-shadow:0 0 0 .25rem #e35d6a80}.btn-check:checked+.btn-outline-red-400,.btn-check:active+.btn-outline-red-400,.btn-outline-red-400:active,.btn-outline-red-400.active,.btn-outline-red-400.dropdown-toggle.show{color:#000;background-color:#e35d6a;border-color:#e35d6a}.btn-check:checked+.btn-outline-red-400:focus,.btn-check:active+.btn-outline-red-400:focus,.btn-outline-red-400:active:focus,.btn-outline-red-400.active:focus,.btn-outline-red-400.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #e35d6a80}.btn-outline-red-400:disabled,.btn-outline-red-400.disabled{color:#e35d6a;background-color:transparent}.btn-outline-red-500{color:#dc3545;border-color:#dc3545}.btn-outline-red-500:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-check:focus+.btn-outline-red-500,.btn-outline-red-500:focus{box-shadow:0 0 0 .25rem #dc354580}.btn-check:checked+.btn-outline-red-500,.btn-check:active+.btn-outline-red-500,.btn-outline-red-500:active,.btn-outline-red-500.active,.btn-outline-red-500.dropdown-toggle.show{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-check:checked+.btn-outline-red-500:focus,.btn-check:active+.btn-outline-red-500:focus,.btn-outline-red-500:active:focus,.btn-outline-red-500.active:focus,.btn-outline-red-500.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #dc354580}.btn-outline-red-500:disabled,.btn-outline-red-500.disabled{color:#dc3545;background-color:transparent}.btn-outline-red-600{color:#b02a37;border-color:#b02a37}.btn-outline-red-600:hover{color:#fff;background-color:#b02a37;border-color:#b02a37}.btn-check:focus+.btn-outline-red-600,.btn-outline-red-600:focus{box-shadow:0 0 0 .25rem #b02a3780}.btn-check:checked+.btn-outline-red-600,.btn-check:active+.btn-outline-red-600,.btn-outline-red-600:active,.btn-outline-red-600.active,.btn-outline-red-600.dropdown-toggle.show{color:#fff;background-color:#b02a37;border-color:#b02a37}.btn-check:checked+.btn-outline-red-600:focus,.btn-check:active+.btn-outline-red-600:focus,.btn-outline-red-600:active:focus,.btn-outline-red-600.active:focus,.btn-outline-red-600.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #b02a3780}.btn-outline-red-600:disabled,.btn-outline-red-600.disabled{color:#b02a37;background-color:transparent}.btn-outline-red-700{color:#842029;border-color:#842029}.btn-outline-red-700:hover{color:#fff;background-color:#842029;border-color:#842029}.btn-check:focus+.btn-outline-red-700,.btn-outline-red-700:focus{box-shadow:0 0 0 .25rem #84202980}.btn-check:checked+.btn-outline-red-700,.btn-check:active+.btn-outline-red-700,.btn-outline-red-700:active,.btn-outline-red-700.active,.btn-outline-red-700.dropdown-toggle.show{color:#fff;background-color:#842029;border-color:#842029}.btn-check:checked+.btn-outline-red-700:focus,.btn-check:active+.btn-outline-red-700:focus,.btn-outline-red-700:active:focus,.btn-outline-red-700.active:focus,.btn-outline-red-700.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #84202980}.btn-outline-red-700:disabled,.btn-outline-red-700.disabled{color:#842029;background-color:transparent}.btn-outline-red-800{color:#58151c;border-color:#58151c}.btn-outline-red-800:hover{color:#fff;background-color:#58151c;border-color:#58151c}.btn-check:focus+.btn-outline-red-800,.btn-outline-red-800:focus{box-shadow:0 0 0 .25rem #58151c80}.btn-check:checked+.btn-outline-red-800,.btn-check:active+.btn-outline-red-800,.btn-outline-red-800:active,.btn-outline-red-800.active,.btn-outline-red-800.dropdown-toggle.show{color:#fff;background-color:#58151c;border-color:#58151c}.btn-check:checked+.btn-outline-red-800:focus,.btn-check:active+.btn-outline-red-800:focus,.btn-outline-red-800:active:focus,.btn-outline-red-800.active:focus,.btn-outline-red-800.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #58151c80}.btn-outline-red-800:disabled,.btn-outline-red-800.disabled{color:#58151c;background-color:transparent}.btn-outline-red-900{color:#2c0b0e;border-color:#2c0b0e}.btn-outline-red-900:hover{color:#fff;background-color:#2c0b0e;border-color:#2c0b0e}.btn-check:focus+.btn-outline-red-900,.btn-outline-red-900:focus{box-shadow:0 0 0 .25rem #2c0b0e80}.btn-check:checked+.btn-outline-red-900,.btn-check:active+.btn-outline-red-900,.btn-outline-red-900:active,.btn-outline-red-900.active,.btn-outline-red-900.dropdown-toggle.show{color:#fff;background-color:#2c0b0e;border-color:#2c0b0e}.btn-check:checked+.btn-outline-red-900:focus,.btn-check:active+.btn-outline-red-900:focus,.btn-outline-red-900:active:focus,.btn-outline-red-900.active:focus,.btn-outline-red-900.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #2c0b0e80}.btn-outline-red-900:disabled,.btn-outline-red-900.disabled{color:#2c0b0e;background-color:transparent}.btn-outline-yellow-100{color:#fff3cd;border-color:#fff3cd}.btn-outline-yellow-100:hover{color:#000;background-color:#fff3cd;border-color:#fff3cd}.btn-check:focus+.btn-outline-yellow-100,.btn-outline-yellow-100:focus{box-shadow:0 0 0 .25rem #fff3cd80}.btn-check:checked+.btn-outline-yellow-100,.btn-check:active+.btn-outline-yellow-100,.btn-outline-yellow-100:active,.btn-outline-yellow-100.active,.btn-outline-yellow-100.dropdown-toggle.show{color:#000;background-color:#fff3cd;border-color:#fff3cd}.btn-check:checked+.btn-outline-yellow-100:focus,.btn-check:active+.btn-outline-yellow-100:focus,.btn-outline-yellow-100:active:focus,.btn-outline-yellow-100.active:focus,.btn-outline-yellow-100.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #fff3cd80}.btn-outline-yellow-100:disabled,.btn-outline-yellow-100.disabled{color:#fff3cd;background-color:transparent}.btn-outline-yellow-200{color:#ffe69c;border-color:#ffe69c}.btn-outline-yellow-200:hover{color:#000;background-color:#ffe69c;border-color:#ffe69c}.btn-check:focus+.btn-outline-yellow-200,.btn-outline-yellow-200:focus{box-shadow:0 0 0 .25rem #ffe69c80}.btn-check:checked+.btn-outline-yellow-200,.btn-check:active+.btn-outline-yellow-200,.btn-outline-yellow-200:active,.btn-outline-yellow-200.active,.btn-outline-yellow-200.dropdown-toggle.show{color:#000;background-color:#ffe69c;border-color:#ffe69c}.btn-check:checked+.btn-outline-yellow-200:focus,.btn-check:active+.btn-outline-yellow-200:focus,.btn-outline-yellow-200:active:focus,.btn-outline-yellow-200.active:focus,.btn-outline-yellow-200.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #ffe69c80}.btn-outline-yellow-200:disabled,.btn-outline-yellow-200.disabled{color:#ffe69c;background-color:transparent}.btn-outline-yellow-300{color:#ffda6a;border-color:#ffda6a}.btn-outline-yellow-300:hover{color:#000;background-color:#ffda6a;border-color:#ffda6a}.btn-check:focus+.btn-outline-yellow-300,.btn-outline-yellow-300:focus{box-shadow:0 0 0 .25rem #ffda6a80}.btn-check:checked+.btn-outline-yellow-300,.btn-check:active+.btn-outline-yellow-300,.btn-outline-yellow-300:active,.btn-outline-yellow-300.active,.btn-outline-yellow-300.dropdown-toggle.show{color:#000;background-color:#ffda6a;border-color:#ffda6a}.btn-check:checked+.btn-outline-yellow-300:focus,.btn-check:active+.btn-outline-yellow-300:focus,.btn-outline-yellow-300:active:focus,.btn-outline-yellow-300.active:focus,.btn-outline-yellow-300.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #ffda6a80}.btn-outline-yellow-300:disabled,.btn-outline-yellow-300.disabled{color:#ffda6a;background-color:transparent}.btn-outline-yellow-400{color:#ffcd39;border-color:#ffcd39}.btn-outline-yellow-400:hover{color:#000;background-color:#ffcd39;border-color:#ffcd39}.btn-check:focus+.btn-outline-yellow-400,.btn-outline-yellow-400:focus{box-shadow:0 0 0 .25rem #ffcd3980}.btn-check:checked+.btn-outline-yellow-400,.btn-check:active+.btn-outline-yellow-400,.btn-outline-yellow-400:active,.btn-outline-yellow-400.active,.btn-outline-yellow-400.dropdown-toggle.show{color:#000;background-color:#ffcd39;border-color:#ffcd39}.btn-check:checked+.btn-outline-yellow-400:focus,.btn-check:active+.btn-outline-yellow-400:focus,.btn-outline-yellow-400:active:focus,.btn-outline-yellow-400.active:focus,.btn-outline-yellow-400.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #ffcd3980}.btn-outline-yellow-400:disabled,.btn-outline-yellow-400.disabled{color:#ffcd39;background-color:transparent}.btn-outline-yellow-500{color:#ffc107;border-color:#ffc107}.btn-outline-yellow-500:hover{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-check:focus+.btn-outline-yellow-500,.btn-outline-yellow-500:focus{box-shadow:0 0 0 .25rem #ffc10780}.btn-check:checked+.btn-outline-yellow-500,.btn-check:active+.btn-outline-yellow-500,.btn-outline-yellow-500:active,.btn-outline-yellow-500.active,.btn-outline-yellow-500.dropdown-toggle.show{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-check:checked+.btn-outline-yellow-500:focus,.btn-check:active+.btn-outline-yellow-500:focus,.btn-outline-yellow-500:active:focus,.btn-outline-yellow-500.active:focus,.btn-outline-yellow-500.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #ffc10780}.btn-outline-yellow-500:disabled,.btn-outline-yellow-500.disabled{color:#ffc107;background-color:transparent}.btn-outline-yellow-600{color:#cc9a06;border-color:#cc9a06}.btn-outline-yellow-600:hover{color:#000;background-color:#cc9a06;border-color:#cc9a06}.btn-check:focus+.btn-outline-yellow-600,.btn-outline-yellow-600:focus{box-shadow:0 0 0 .25rem #cc9a0680}.btn-check:checked+.btn-outline-yellow-600,.btn-check:active+.btn-outline-yellow-600,.btn-outline-yellow-600:active,.btn-outline-yellow-600.active,.btn-outline-yellow-600.dropdown-toggle.show{color:#000;background-color:#cc9a06;border-color:#cc9a06}.btn-check:checked+.btn-outline-yellow-600:focus,.btn-check:active+.btn-outline-yellow-600:focus,.btn-outline-yellow-600:active:focus,.btn-outline-yellow-600.active:focus,.btn-outline-yellow-600.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #cc9a0680}.btn-outline-yellow-600:disabled,.btn-outline-yellow-600.disabled{color:#cc9a06;background-color:transparent}.btn-outline-yellow-700{color:#997404;border-color:#997404}.btn-outline-yellow-700:hover{color:#000;background-color:#997404;border-color:#997404}.btn-check:focus+.btn-outline-yellow-700,.btn-outline-yellow-700:focus{box-shadow:0 0 0 .25rem #99740480}.btn-check:checked+.btn-outline-yellow-700,.btn-check:active+.btn-outline-yellow-700,.btn-outline-yellow-700:active,.btn-outline-yellow-700.active,.btn-outline-yellow-700.dropdown-toggle.show{color:#000;background-color:#997404;border-color:#997404}.btn-check:checked+.btn-outline-yellow-700:focus,.btn-check:active+.btn-outline-yellow-700:focus,.btn-outline-yellow-700:active:focus,.btn-outline-yellow-700.active:focus,.btn-outline-yellow-700.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #99740480}.btn-outline-yellow-700:disabled,.btn-outline-yellow-700.disabled{color:#997404;background-color:transparent}.btn-outline-yellow-800{color:#664d03;border-color:#664d03}.btn-outline-yellow-800:hover{color:#fff;background-color:#664d03;border-color:#664d03}.btn-check:focus+.btn-outline-yellow-800,.btn-outline-yellow-800:focus{box-shadow:0 0 0 .25rem #664d0380}.btn-check:checked+.btn-outline-yellow-800,.btn-check:active+.btn-outline-yellow-800,.btn-outline-yellow-800:active,.btn-outline-yellow-800.active,.btn-outline-yellow-800.dropdown-toggle.show{color:#fff;background-color:#664d03;border-color:#664d03}.btn-check:checked+.btn-outline-yellow-800:focus,.btn-check:active+.btn-outline-yellow-800:focus,.btn-outline-yellow-800:active:focus,.btn-outline-yellow-800.active:focus,.btn-outline-yellow-800.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #664d0380}.btn-outline-yellow-800:disabled,.btn-outline-yellow-800.disabled{color:#664d03;background-color:transparent}.btn-outline-yellow-900{color:#332701;border-color:#332701}.btn-outline-yellow-900:hover{color:#fff;background-color:#332701;border-color:#332701}.btn-check:focus+.btn-outline-yellow-900,.btn-outline-yellow-900:focus{box-shadow:0 0 0 .25rem #33270180}.btn-check:checked+.btn-outline-yellow-900,.btn-check:active+.btn-outline-yellow-900,.btn-outline-yellow-900:active,.btn-outline-yellow-900.active,.btn-outline-yellow-900.dropdown-toggle.show{color:#fff;background-color:#332701;border-color:#332701}.btn-check:checked+.btn-outline-yellow-900:focus,.btn-check:active+.btn-outline-yellow-900:focus,.btn-outline-yellow-900:active:focus,.btn-outline-yellow-900.active:focus,.btn-outline-yellow-900.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #33270180}.btn-outline-yellow-900:disabled,.btn-outline-yellow-900.disabled{color:#332701;background-color:transparent}.btn-outline-green-100{color:#d1e7dd;border-color:#d1e7dd}.btn-outline-green-100:hover{color:#000;background-color:#d1e7dd;border-color:#d1e7dd}.btn-check:focus+.btn-outline-green-100,.btn-outline-green-100:focus{box-shadow:0 0 0 .25rem #d1e7dd80}.btn-check:checked+.btn-outline-green-100,.btn-check:active+.btn-outline-green-100,.btn-outline-green-100:active,.btn-outline-green-100.active,.btn-outline-green-100.dropdown-toggle.show{color:#000;background-color:#d1e7dd;border-color:#d1e7dd}.btn-check:checked+.btn-outline-green-100:focus,.btn-check:active+.btn-outline-green-100:focus,.btn-outline-green-100:active:focus,.btn-outline-green-100.active:focus,.btn-outline-green-100.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #d1e7dd80}.btn-outline-green-100:disabled,.btn-outline-green-100.disabled{color:#d1e7dd;background-color:transparent}.btn-outline-green-200{color:#a3cfbb;border-color:#a3cfbb}.btn-outline-green-200:hover{color:#000;background-color:#a3cfbb;border-color:#a3cfbb}.btn-check:focus+.btn-outline-green-200,.btn-outline-green-200:focus{box-shadow:0 0 0 .25rem #a3cfbb80}.btn-check:checked+.btn-outline-green-200,.btn-check:active+.btn-outline-green-200,.btn-outline-green-200:active,.btn-outline-green-200.active,.btn-outline-green-200.dropdown-toggle.show{color:#000;background-color:#a3cfbb;border-color:#a3cfbb}.btn-check:checked+.btn-outline-green-200:focus,.btn-check:active+.btn-outline-green-200:focus,.btn-outline-green-200:active:focus,.btn-outline-green-200.active:focus,.btn-outline-green-200.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #a3cfbb80}.btn-outline-green-200:disabled,.btn-outline-green-200.disabled{color:#a3cfbb;background-color:transparent}.btn-outline-green-300{color:#75b798;border-color:#75b798}.btn-outline-green-300:hover{color:#000;background-color:#75b798;border-color:#75b798}.btn-check:focus+.btn-outline-green-300,.btn-outline-green-300:focus{box-shadow:0 0 0 .25rem #75b79880}.btn-check:checked+.btn-outline-green-300,.btn-check:active+.btn-outline-green-300,.btn-outline-green-300:active,.btn-outline-green-300.active,.btn-outline-green-300.dropdown-toggle.show{color:#000;background-color:#75b798;border-color:#75b798}.btn-check:checked+.btn-outline-green-300:focus,.btn-check:active+.btn-outline-green-300:focus,.btn-outline-green-300:active:focus,.btn-outline-green-300.active:focus,.btn-outline-green-300.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #75b79880}.btn-outline-green-300:disabled,.btn-outline-green-300.disabled{color:#75b798;background-color:transparent}.btn-outline-green-400{color:#479f76;border-color:#479f76}.btn-outline-green-400:hover{color:#000;background-color:#479f76;border-color:#479f76}.btn-check:focus+.btn-outline-green-400,.btn-outline-green-400:focus{box-shadow:0 0 0 .25rem #479f7680}.btn-check:checked+.btn-outline-green-400,.btn-check:active+.btn-outline-green-400,.btn-outline-green-400:active,.btn-outline-green-400.active,.btn-outline-green-400.dropdown-toggle.show{color:#000;background-color:#479f76;border-color:#479f76}.btn-check:checked+.btn-outline-green-400:focus,.btn-check:active+.btn-outline-green-400:focus,.btn-outline-green-400:active:focus,.btn-outline-green-400.active:focus,.btn-outline-green-400.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #479f7680}.btn-outline-green-400:disabled,.btn-outline-green-400.disabled{color:#479f76;background-color:transparent}.btn-outline-green-500{color:#198754;border-color:#198754}.btn-outline-green-500:hover{color:#fff;background-color:#198754;border-color:#198754}.btn-check:focus+.btn-outline-green-500,.btn-outline-green-500:focus{box-shadow:0 0 0 .25rem #19875480}.btn-check:checked+.btn-outline-green-500,.btn-check:active+.btn-outline-green-500,.btn-outline-green-500:active,.btn-outline-green-500.active,.btn-outline-green-500.dropdown-toggle.show{color:#fff;background-color:#198754;border-color:#198754}.btn-check:checked+.btn-outline-green-500:focus,.btn-check:active+.btn-outline-green-500:focus,.btn-outline-green-500:active:focus,.btn-outline-green-500.active:focus,.btn-outline-green-500.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #19875480}.btn-outline-green-500:disabled,.btn-outline-green-500.disabled{color:#198754;background-color:transparent}.btn-outline-green-600{color:#146c43;border-color:#146c43}.btn-outline-green-600:hover{color:#fff;background-color:#146c43;border-color:#146c43}.btn-check:focus+.btn-outline-green-600,.btn-outline-green-600:focus{box-shadow:0 0 0 .25rem #146c4380}.btn-check:checked+.btn-outline-green-600,.btn-check:active+.btn-outline-green-600,.btn-outline-green-600:active,.btn-outline-green-600.active,.btn-outline-green-600.dropdown-toggle.show{color:#fff;background-color:#146c43;border-color:#146c43}.btn-check:checked+.btn-outline-green-600:focus,.btn-check:active+.btn-outline-green-600:focus,.btn-outline-green-600:active:focus,.btn-outline-green-600.active:focus,.btn-outline-green-600.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #146c4380}.btn-outline-green-600:disabled,.btn-outline-green-600.disabled{color:#146c43;background-color:transparent}.btn-outline-green-700{color:#0f5132;border-color:#0f5132}.btn-outline-green-700:hover{color:#fff;background-color:#0f5132;border-color:#0f5132}.btn-check:focus+.btn-outline-green-700,.btn-outline-green-700:focus{box-shadow:0 0 0 .25rem #0f513280}.btn-check:checked+.btn-outline-green-700,.btn-check:active+.btn-outline-green-700,.btn-outline-green-700:active,.btn-outline-green-700.active,.btn-outline-green-700.dropdown-toggle.show{color:#fff;background-color:#0f5132;border-color:#0f5132}.btn-check:checked+.btn-outline-green-700:focus,.btn-check:active+.btn-outline-green-700:focus,.btn-outline-green-700:active:focus,.btn-outline-green-700.active:focus,.btn-outline-green-700.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #0f513280}.btn-outline-green-700:disabled,.btn-outline-green-700.disabled{color:#0f5132;background-color:transparent}.btn-outline-green-800{color:#0a3622;border-color:#0a3622}.btn-outline-green-800:hover{color:#fff;background-color:#0a3622;border-color:#0a3622}.btn-check:focus+.btn-outline-green-800,.btn-outline-green-800:focus{box-shadow:0 0 0 .25rem #0a362280}.btn-check:checked+.btn-outline-green-800,.btn-check:active+.btn-outline-green-800,.btn-outline-green-800:active,.btn-outline-green-800.active,.btn-outline-green-800.dropdown-toggle.show{color:#fff;background-color:#0a3622;border-color:#0a3622}.btn-check:checked+.btn-outline-green-800:focus,.btn-check:active+.btn-outline-green-800:focus,.btn-outline-green-800:active:focus,.btn-outline-green-800.active:focus,.btn-outline-green-800.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #0a362280}.btn-outline-green-800:disabled,.btn-outline-green-800.disabled{color:#0a3622;background-color:transparent}.btn-outline-green-900{color:#051b11;border-color:#051b11}.btn-outline-green-900:hover{color:#fff;background-color:#051b11;border-color:#051b11}.btn-check:focus+.btn-outline-green-900,.btn-outline-green-900:focus{box-shadow:0 0 0 .25rem #051b1180}.btn-check:checked+.btn-outline-green-900,.btn-check:active+.btn-outline-green-900,.btn-outline-green-900:active,.btn-outline-green-900.active,.btn-outline-green-900.dropdown-toggle.show{color:#fff;background-color:#051b11;border-color:#051b11}.btn-check:checked+.btn-outline-green-900:focus,.btn-check:active+.btn-outline-green-900:focus,.btn-outline-green-900:active:focus,.btn-outline-green-900.active:focus,.btn-outline-green-900.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #051b1180}.btn-outline-green-900:disabled,.btn-outline-green-900.disabled{color:#051b11;background-color:transparent}.btn-outline-blue-100{color:#cfe2ff;border-color:#cfe2ff}.btn-outline-blue-100:hover{color:#000;background-color:#cfe2ff;border-color:#cfe2ff}.btn-check:focus+.btn-outline-blue-100,.btn-outline-blue-100:focus{box-shadow:0 0 0 .25rem #cfe2ff80}.btn-check:checked+.btn-outline-blue-100,.btn-check:active+.btn-outline-blue-100,.btn-outline-blue-100:active,.btn-outline-blue-100.active,.btn-outline-blue-100.dropdown-toggle.show{color:#000;background-color:#cfe2ff;border-color:#cfe2ff}.btn-check:checked+.btn-outline-blue-100:focus,.btn-check:active+.btn-outline-blue-100:focus,.btn-outline-blue-100:active:focus,.btn-outline-blue-100.active:focus,.btn-outline-blue-100.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #cfe2ff80}.btn-outline-blue-100:disabled,.btn-outline-blue-100.disabled{color:#cfe2ff;background-color:transparent}.btn-outline-blue-200{color:#9ec5fe;border-color:#9ec5fe}.btn-outline-blue-200:hover{color:#000;background-color:#9ec5fe;border-color:#9ec5fe}.btn-check:focus+.btn-outline-blue-200,.btn-outline-blue-200:focus{box-shadow:0 0 0 .25rem #9ec5fe80}.btn-check:checked+.btn-outline-blue-200,.btn-check:active+.btn-outline-blue-200,.btn-outline-blue-200:active,.btn-outline-blue-200.active,.btn-outline-blue-200.dropdown-toggle.show{color:#000;background-color:#9ec5fe;border-color:#9ec5fe}.btn-check:checked+.btn-outline-blue-200:focus,.btn-check:active+.btn-outline-blue-200:focus,.btn-outline-blue-200:active:focus,.btn-outline-blue-200.active:focus,.btn-outline-blue-200.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #9ec5fe80}.btn-outline-blue-200:disabled,.btn-outline-blue-200.disabled{color:#9ec5fe;background-color:transparent}.btn-outline-blue-300{color:#6ea8fe;border-color:#6ea8fe}.btn-outline-blue-300:hover{color:#000;background-color:#6ea8fe;border-color:#6ea8fe}.btn-check:focus+.btn-outline-blue-300,.btn-outline-blue-300:focus{box-shadow:0 0 0 .25rem #6ea8fe80}.btn-check:checked+.btn-outline-blue-300,.btn-check:active+.btn-outline-blue-300,.btn-outline-blue-300:active,.btn-outline-blue-300.active,.btn-outline-blue-300.dropdown-toggle.show{color:#000;background-color:#6ea8fe;border-color:#6ea8fe}.btn-check:checked+.btn-outline-blue-300:focus,.btn-check:active+.btn-outline-blue-300:focus,.btn-outline-blue-300:active:focus,.btn-outline-blue-300.active:focus,.btn-outline-blue-300.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #6ea8fe80}.btn-outline-blue-300:disabled,.btn-outline-blue-300.disabled{color:#6ea8fe;background-color:transparent}.btn-outline-blue-400{color:#3d8bfd;border-color:#3d8bfd}.btn-outline-blue-400:hover{color:#000;background-color:#3d8bfd;border-color:#3d8bfd}.btn-check:focus+.btn-outline-blue-400,.btn-outline-blue-400:focus{box-shadow:0 0 0 .25rem #3d8bfd80}.btn-check:checked+.btn-outline-blue-400,.btn-check:active+.btn-outline-blue-400,.btn-outline-blue-400:active,.btn-outline-blue-400.active,.btn-outline-blue-400.dropdown-toggle.show{color:#000;background-color:#3d8bfd;border-color:#3d8bfd}.btn-check:checked+.btn-outline-blue-400:focus,.btn-check:active+.btn-outline-blue-400:focus,.btn-outline-blue-400:active:focus,.btn-outline-blue-400.active:focus,.btn-outline-blue-400.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #3d8bfd80}.btn-outline-blue-400:disabled,.btn-outline-blue-400.disabled{color:#3d8bfd;background-color:transparent}.btn-outline-blue-500{color:#0d6efd;border-color:#0d6efd}.btn-outline-blue-500:hover{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-check:focus+.btn-outline-blue-500,.btn-outline-blue-500:focus{box-shadow:0 0 0 .25rem #0d6efd80}.btn-check:checked+.btn-outline-blue-500,.btn-check:active+.btn-outline-blue-500,.btn-outline-blue-500:active,.btn-outline-blue-500.active,.btn-outline-blue-500.dropdown-toggle.show{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-check:checked+.btn-outline-blue-500:focus,.btn-check:active+.btn-outline-blue-500:focus,.btn-outline-blue-500:active:focus,.btn-outline-blue-500.active:focus,.btn-outline-blue-500.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #0d6efd80}.btn-outline-blue-500:disabled,.btn-outline-blue-500.disabled{color:#0d6efd;background-color:transparent}.btn-outline-blue-600{color:#0a58ca;border-color:#0a58ca}.btn-outline-blue-600:hover{color:#fff;background-color:#0a58ca;border-color:#0a58ca}.btn-check:focus+.btn-outline-blue-600,.btn-outline-blue-600:focus{box-shadow:0 0 0 .25rem #0a58ca80}.btn-check:checked+.btn-outline-blue-600,.btn-check:active+.btn-outline-blue-600,.btn-outline-blue-600:active,.btn-outline-blue-600.active,.btn-outline-blue-600.dropdown-toggle.show{color:#fff;background-color:#0a58ca;border-color:#0a58ca}.btn-check:checked+.btn-outline-blue-600:focus,.btn-check:active+.btn-outline-blue-600:focus,.btn-outline-blue-600:active:focus,.btn-outline-blue-600.active:focus,.btn-outline-blue-600.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #0a58ca80}.btn-outline-blue-600:disabled,.btn-outline-blue-600.disabled{color:#0a58ca;background-color:transparent}.btn-outline-blue-700{color:#084298;border-color:#084298}.btn-outline-blue-700:hover{color:#fff;background-color:#084298;border-color:#084298}.btn-check:focus+.btn-outline-blue-700,.btn-outline-blue-700:focus{box-shadow:0 0 0 .25rem #08429880}.btn-check:checked+.btn-outline-blue-700,.btn-check:active+.btn-outline-blue-700,.btn-outline-blue-700:active,.btn-outline-blue-700.active,.btn-outline-blue-700.dropdown-toggle.show{color:#fff;background-color:#084298;border-color:#084298}.btn-check:checked+.btn-outline-blue-700:focus,.btn-check:active+.btn-outline-blue-700:focus,.btn-outline-blue-700:active:focus,.btn-outline-blue-700.active:focus,.btn-outline-blue-700.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #08429880}.btn-outline-blue-700:disabled,.btn-outline-blue-700.disabled{color:#084298;background-color:transparent}.btn-outline-blue-800{color:#052c65;border-color:#052c65}.btn-outline-blue-800:hover{color:#fff;background-color:#052c65;border-color:#052c65}.btn-check:focus+.btn-outline-blue-800,.btn-outline-blue-800:focus{box-shadow:0 0 0 .25rem #052c6580}.btn-check:checked+.btn-outline-blue-800,.btn-check:active+.btn-outline-blue-800,.btn-outline-blue-800:active,.btn-outline-blue-800.active,.btn-outline-blue-800.dropdown-toggle.show{color:#fff;background-color:#052c65;border-color:#052c65}.btn-check:checked+.btn-outline-blue-800:focus,.btn-check:active+.btn-outline-blue-800:focus,.btn-outline-blue-800:active:focus,.btn-outline-blue-800.active:focus,.btn-outline-blue-800.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #052c6580}.btn-outline-blue-800:disabled,.btn-outline-blue-800.disabled{color:#052c65;background-color:transparent}.btn-outline-blue-900{color:#031633;border-color:#031633}.btn-outline-blue-900:hover{color:#fff;background-color:#031633;border-color:#031633}.btn-check:focus+.btn-outline-blue-900,.btn-outline-blue-900:focus{box-shadow:0 0 0 .25rem #03163380}.btn-check:checked+.btn-outline-blue-900,.btn-check:active+.btn-outline-blue-900,.btn-outline-blue-900:active,.btn-outline-blue-900.active,.btn-outline-blue-900.dropdown-toggle.show{color:#fff;background-color:#031633;border-color:#031633}.btn-check:checked+.btn-outline-blue-900:focus,.btn-check:active+.btn-outline-blue-900:focus,.btn-outline-blue-900:active:focus,.btn-outline-blue-900.active:focus,.btn-outline-blue-900.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #03163380}.btn-outline-blue-900:disabled,.btn-outline-blue-900.disabled{color:#031633;background-color:transparent}.btn-outline-cyan-100{color:#cff4fc;border-color:#cff4fc}.btn-outline-cyan-100:hover{color:#000;background-color:#cff4fc;border-color:#cff4fc}.btn-check:focus+.btn-outline-cyan-100,.btn-outline-cyan-100:focus{box-shadow:0 0 0 .25rem #cff4fc80}.btn-check:checked+.btn-outline-cyan-100,.btn-check:active+.btn-outline-cyan-100,.btn-outline-cyan-100:active,.btn-outline-cyan-100.active,.btn-outline-cyan-100.dropdown-toggle.show{color:#000;background-color:#cff4fc;border-color:#cff4fc}.btn-check:checked+.btn-outline-cyan-100:focus,.btn-check:active+.btn-outline-cyan-100:focus,.btn-outline-cyan-100:active:focus,.btn-outline-cyan-100.active:focus,.btn-outline-cyan-100.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #cff4fc80}.btn-outline-cyan-100:disabled,.btn-outline-cyan-100.disabled{color:#cff4fc;background-color:transparent}.btn-outline-cyan-200{color:#9eeaf9;border-color:#9eeaf9}.btn-outline-cyan-200:hover{color:#000;background-color:#9eeaf9;border-color:#9eeaf9}.btn-check:focus+.btn-outline-cyan-200,.btn-outline-cyan-200:focus{box-shadow:0 0 0 .25rem #9eeaf980}.btn-check:checked+.btn-outline-cyan-200,.btn-check:active+.btn-outline-cyan-200,.btn-outline-cyan-200:active,.btn-outline-cyan-200.active,.btn-outline-cyan-200.dropdown-toggle.show{color:#000;background-color:#9eeaf9;border-color:#9eeaf9}.btn-check:checked+.btn-outline-cyan-200:focus,.btn-check:active+.btn-outline-cyan-200:focus,.btn-outline-cyan-200:active:focus,.btn-outline-cyan-200.active:focus,.btn-outline-cyan-200.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #9eeaf980}.btn-outline-cyan-200:disabled,.btn-outline-cyan-200.disabled{color:#9eeaf9;background-color:transparent}.btn-outline-cyan-300{color:#6edff6;border-color:#6edff6}.btn-outline-cyan-300:hover{color:#000;background-color:#6edff6;border-color:#6edff6}.btn-check:focus+.btn-outline-cyan-300,.btn-outline-cyan-300:focus{box-shadow:0 0 0 .25rem #6edff680}.btn-check:checked+.btn-outline-cyan-300,.btn-check:active+.btn-outline-cyan-300,.btn-outline-cyan-300:active,.btn-outline-cyan-300.active,.btn-outline-cyan-300.dropdown-toggle.show{color:#000;background-color:#6edff6;border-color:#6edff6}.btn-check:checked+.btn-outline-cyan-300:focus,.btn-check:active+.btn-outline-cyan-300:focus,.btn-outline-cyan-300:active:focus,.btn-outline-cyan-300.active:focus,.btn-outline-cyan-300.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #6edff680}.btn-outline-cyan-300:disabled,.btn-outline-cyan-300.disabled{color:#6edff6;background-color:transparent}.btn-outline-cyan-400{color:#3dd5f3;border-color:#3dd5f3}.btn-outline-cyan-400:hover{color:#000;background-color:#3dd5f3;border-color:#3dd5f3}.btn-check:focus+.btn-outline-cyan-400,.btn-outline-cyan-400:focus{box-shadow:0 0 0 .25rem #3dd5f380}.btn-check:checked+.btn-outline-cyan-400,.btn-check:active+.btn-outline-cyan-400,.btn-outline-cyan-400:active,.btn-outline-cyan-400.active,.btn-outline-cyan-400.dropdown-toggle.show{color:#000;background-color:#3dd5f3;border-color:#3dd5f3}.btn-check:checked+.btn-outline-cyan-400:focus,.btn-check:active+.btn-outline-cyan-400:focus,.btn-outline-cyan-400:active:focus,.btn-outline-cyan-400.active:focus,.btn-outline-cyan-400.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #3dd5f380}.btn-outline-cyan-400:disabled,.btn-outline-cyan-400.disabled{color:#3dd5f3;background-color:transparent}.btn-outline-cyan-500{color:#0dcaf0;border-color:#0dcaf0}.btn-outline-cyan-500:hover{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-check:focus+.btn-outline-cyan-500,.btn-outline-cyan-500:focus{box-shadow:0 0 0 .25rem #0dcaf080}.btn-check:checked+.btn-outline-cyan-500,.btn-check:active+.btn-outline-cyan-500,.btn-outline-cyan-500:active,.btn-outline-cyan-500.active,.btn-outline-cyan-500.dropdown-toggle.show{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-check:checked+.btn-outline-cyan-500:focus,.btn-check:active+.btn-outline-cyan-500:focus,.btn-outline-cyan-500:active:focus,.btn-outline-cyan-500.active:focus,.btn-outline-cyan-500.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #0dcaf080}.btn-outline-cyan-500:disabled,.btn-outline-cyan-500.disabled{color:#0dcaf0;background-color:transparent}.btn-outline-cyan-600{color:#0aa2c0;border-color:#0aa2c0}.btn-outline-cyan-600:hover{color:#000;background-color:#0aa2c0;border-color:#0aa2c0}.btn-check:focus+.btn-outline-cyan-600,.btn-outline-cyan-600:focus{box-shadow:0 0 0 .25rem #0aa2c080}.btn-check:checked+.btn-outline-cyan-600,.btn-check:active+.btn-outline-cyan-600,.btn-outline-cyan-600:active,.btn-outline-cyan-600.active,.btn-outline-cyan-600.dropdown-toggle.show{color:#000;background-color:#0aa2c0;border-color:#0aa2c0}.btn-check:checked+.btn-outline-cyan-600:focus,.btn-check:active+.btn-outline-cyan-600:focus,.btn-outline-cyan-600:active:focus,.btn-outline-cyan-600.active:focus,.btn-outline-cyan-600.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #0aa2c080}.btn-outline-cyan-600:disabled,.btn-outline-cyan-600.disabled{color:#0aa2c0;background-color:transparent}.btn-outline-cyan-700{color:#087990;border-color:#087990}.btn-outline-cyan-700:hover{color:#fff;background-color:#087990;border-color:#087990}.btn-check:focus+.btn-outline-cyan-700,.btn-outline-cyan-700:focus{box-shadow:0 0 0 .25rem #08799080}.btn-check:checked+.btn-outline-cyan-700,.btn-check:active+.btn-outline-cyan-700,.btn-outline-cyan-700:active,.btn-outline-cyan-700.active,.btn-outline-cyan-700.dropdown-toggle.show{color:#fff;background-color:#087990;border-color:#087990}.btn-check:checked+.btn-outline-cyan-700:focus,.btn-check:active+.btn-outline-cyan-700:focus,.btn-outline-cyan-700:active:focus,.btn-outline-cyan-700.active:focus,.btn-outline-cyan-700.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #08799080}.btn-outline-cyan-700:disabled,.btn-outline-cyan-700.disabled{color:#087990;background-color:transparent}.btn-outline-cyan-800{color:#055160;border-color:#055160}.btn-outline-cyan-800:hover{color:#fff;background-color:#055160;border-color:#055160}.btn-check:focus+.btn-outline-cyan-800,.btn-outline-cyan-800:focus{box-shadow:0 0 0 .25rem #05516080}.btn-check:checked+.btn-outline-cyan-800,.btn-check:active+.btn-outline-cyan-800,.btn-outline-cyan-800:active,.btn-outline-cyan-800.active,.btn-outline-cyan-800.dropdown-toggle.show{color:#fff;background-color:#055160;border-color:#055160}.btn-check:checked+.btn-outline-cyan-800:focus,.btn-check:active+.btn-outline-cyan-800:focus,.btn-outline-cyan-800:active:focus,.btn-outline-cyan-800.active:focus,.btn-outline-cyan-800.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #05516080}.btn-outline-cyan-800:disabled,.btn-outline-cyan-800.disabled{color:#055160;background-color:transparent}.btn-outline-cyan-900{color:#032830;border-color:#032830}.btn-outline-cyan-900:hover{color:#fff;background-color:#032830;border-color:#032830}.btn-check:focus+.btn-outline-cyan-900,.btn-outline-cyan-900:focus{box-shadow:0 0 0 .25rem #03283080}.btn-check:checked+.btn-outline-cyan-900,.btn-check:active+.btn-outline-cyan-900,.btn-outline-cyan-900:active,.btn-outline-cyan-900.active,.btn-outline-cyan-900.dropdown-toggle.show{color:#fff;background-color:#032830;border-color:#032830}.btn-check:checked+.btn-outline-cyan-900:focus,.btn-check:active+.btn-outline-cyan-900:focus,.btn-outline-cyan-900:active:focus,.btn-outline-cyan-900.active:focus,.btn-outline-cyan-900.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #03283080}.btn-outline-cyan-900:disabled,.btn-outline-cyan-900.disabled{color:#032830;background-color:transparent}.btn-outline-indigo-100{color:#e0cffc;border-color:#e0cffc}.btn-outline-indigo-100:hover{color:#000;background-color:#e0cffc;border-color:#e0cffc}.btn-check:focus+.btn-outline-indigo-100,.btn-outline-indigo-100:focus{box-shadow:0 0 0 .25rem #e0cffc80}.btn-check:checked+.btn-outline-indigo-100,.btn-check:active+.btn-outline-indigo-100,.btn-outline-indigo-100:active,.btn-outline-indigo-100.active,.btn-outline-indigo-100.dropdown-toggle.show{color:#000;background-color:#e0cffc;border-color:#e0cffc}.btn-check:checked+.btn-outline-indigo-100:focus,.btn-check:active+.btn-outline-indigo-100:focus,.btn-outline-indigo-100:active:focus,.btn-outline-indigo-100.active:focus,.btn-outline-indigo-100.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #e0cffc80}.btn-outline-indigo-100:disabled,.btn-outline-indigo-100.disabled{color:#e0cffc;background-color:transparent}.btn-outline-indigo-200{color:#c29ffa;border-color:#c29ffa}.btn-outline-indigo-200:hover{color:#000;background-color:#c29ffa;border-color:#c29ffa}.btn-check:focus+.btn-outline-indigo-200,.btn-outline-indigo-200:focus{box-shadow:0 0 0 .25rem #c29ffa80}.btn-check:checked+.btn-outline-indigo-200,.btn-check:active+.btn-outline-indigo-200,.btn-outline-indigo-200:active,.btn-outline-indigo-200.active,.btn-outline-indigo-200.dropdown-toggle.show{color:#000;background-color:#c29ffa;border-color:#c29ffa}.btn-check:checked+.btn-outline-indigo-200:focus,.btn-check:active+.btn-outline-indigo-200:focus,.btn-outline-indigo-200:active:focus,.btn-outline-indigo-200.active:focus,.btn-outline-indigo-200.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #c29ffa80}.btn-outline-indigo-200:disabled,.btn-outline-indigo-200.disabled{color:#c29ffa;background-color:transparent}.btn-outline-indigo-300{color:#a370f7;border-color:#a370f7}.btn-outline-indigo-300:hover{color:#000;background-color:#a370f7;border-color:#a370f7}.btn-check:focus+.btn-outline-indigo-300,.btn-outline-indigo-300:focus{box-shadow:0 0 0 .25rem #a370f780}.btn-check:checked+.btn-outline-indigo-300,.btn-check:active+.btn-outline-indigo-300,.btn-outline-indigo-300:active,.btn-outline-indigo-300.active,.btn-outline-indigo-300.dropdown-toggle.show{color:#000;background-color:#a370f7;border-color:#a370f7}.btn-check:checked+.btn-outline-indigo-300:focus,.btn-check:active+.btn-outline-indigo-300:focus,.btn-outline-indigo-300:active:focus,.btn-outline-indigo-300.active:focus,.btn-outline-indigo-300.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #a370f780}.btn-outline-indigo-300:disabled,.btn-outline-indigo-300.disabled{color:#a370f7;background-color:transparent}.btn-outline-indigo-400{color:#8540f5;border-color:#8540f5}.btn-outline-indigo-400:hover{color:#fff;background-color:#8540f5;border-color:#8540f5}.btn-check:focus+.btn-outline-indigo-400,.btn-outline-indigo-400:focus{box-shadow:0 0 0 .25rem #8540f580}.btn-check:checked+.btn-outline-indigo-400,.btn-check:active+.btn-outline-indigo-400,.btn-outline-indigo-400:active,.btn-outline-indigo-400.active,.btn-outline-indigo-400.dropdown-toggle.show{color:#fff;background-color:#8540f5;border-color:#8540f5}.btn-check:checked+.btn-outline-indigo-400:focus,.btn-check:active+.btn-outline-indigo-400:focus,.btn-outline-indigo-400:active:focus,.btn-outline-indigo-400.active:focus,.btn-outline-indigo-400.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #8540f580}.btn-outline-indigo-400:disabled,.btn-outline-indigo-400.disabled{color:#8540f5;background-color:transparent}.btn-outline-indigo-500{color:#6610f2;border-color:#6610f2}.btn-outline-indigo-500:hover{color:#fff;background-color:#6610f2;border-color:#6610f2}.btn-check:focus+.btn-outline-indigo-500,.btn-outline-indigo-500:focus{box-shadow:0 0 0 .25rem #6610f280}.btn-check:checked+.btn-outline-indigo-500,.btn-check:active+.btn-outline-indigo-500,.btn-outline-indigo-500:active,.btn-outline-indigo-500.active,.btn-outline-indigo-500.dropdown-toggle.show{color:#fff;background-color:#6610f2;border-color:#6610f2}.btn-check:checked+.btn-outline-indigo-500:focus,.btn-check:active+.btn-outline-indigo-500:focus,.btn-outline-indigo-500:active:focus,.btn-outline-indigo-500.active:focus,.btn-outline-indigo-500.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #6610f280}.btn-outline-indigo-500:disabled,.btn-outline-indigo-500.disabled{color:#6610f2;background-color:transparent}.btn-outline-indigo-600{color:#520dc2;border-color:#520dc2}.btn-outline-indigo-600:hover{color:#fff;background-color:#520dc2;border-color:#520dc2}.btn-check:focus+.btn-outline-indigo-600,.btn-outline-indigo-600:focus{box-shadow:0 0 0 .25rem #520dc280}.btn-check:checked+.btn-outline-indigo-600,.btn-check:active+.btn-outline-indigo-600,.btn-outline-indigo-600:active,.btn-outline-indigo-600.active,.btn-outline-indigo-600.dropdown-toggle.show{color:#fff;background-color:#520dc2;border-color:#520dc2}.btn-check:checked+.btn-outline-indigo-600:focus,.btn-check:active+.btn-outline-indigo-600:focus,.btn-outline-indigo-600:active:focus,.btn-outline-indigo-600.active:focus,.btn-outline-indigo-600.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #520dc280}.btn-outline-indigo-600:disabled,.btn-outline-indigo-600.disabled{color:#520dc2;background-color:transparent}.btn-outline-indigo-700{color:#3d0a91;border-color:#3d0a91}.btn-outline-indigo-700:hover{color:#fff;background-color:#3d0a91;border-color:#3d0a91}.btn-check:focus+.btn-outline-indigo-700,.btn-outline-indigo-700:focus{box-shadow:0 0 0 .25rem #3d0a9180}.btn-check:checked+.btn-outline-indigo-700,.btn-check:active+.btn-outline-indigo-700,.btn-outline-indigo-700:active,.btn-outline-indigo-700.active,.btn-outline-indigo-700.dropdown-toggle.show{color:#fff;background-color:#3d0a91;border-color:#3d0a91}.btn-check:checked+.btn-outline-indigo-700:focus,.btn-check:active+.btn-outline-indigo-700:focus,.btn-outline-indigo-700:active:focus,.btn-outline-indigo-700.active:focus,.btn-outline-indigo-700.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #3d0a9180}.btn-outline-indigo-700:disabled,.btn-outline-indigo-700.disabled{color:#3d0a91;background-color:transparent}.btn-outline-indigo-800{color:#290661;border-color:#290661}.btn-outline-indigo-800:hover{color:#fff;background-color:#290661;border-color:#290661}.btn-check:focus+.btn-outline-indigo-800,.btn-outline-indigo-800:focus{box-shadow:0 0 0 .25rem #29066180}.btn-check:checked+.btn-outline-indigo-800,.btn-check:active+.btn-outline-indigo-800,.btn-outline-indigo-800:active,.btn-outline-indigo-800.active,.btn-outline-indigo-800.dropdown-toggle.show{color:#fff;background-color:#290661;border-color:#290661}.btn-check:checked+.btn-outline-indigo-800:focus,.btn-check:active+.btn-outline-indigo-800:focus,.btn-outline-indigo-800:active:focus,.btn-outline-indigo-800.active:focus,.btn-outline-indigo-800.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #29066180}.btn-outline-indigo-800:disabled,.btn-outline-indigo-800.disabled{color:#290661;background-color:transparent}.btn-outline-indigo-900{color:#140330;border-color:#140330}.btn-outline-indigo-900:hover{color:#fff;background-color:#140330;border-color:#140330}.btn-check:focus+.btn-outline-indigo-900,.btn-outline-indigo-900:focus{box-shadow:0 0 0 .25rem #14033080}.btn-check:checked+.btn-outline-indigo-900,.btn-check:active+.btn-outline-indigo-900,.btn-outline-indigo-900:active,.btn-outline-indigo-900.active,.btn-outline-indigo-900.dropdown-toggle.show{color:#fff;background-color:#140330;border-color:#140330}.btn-check:checked+.btn-outline-indigo-900:focus,.btn-check:active+.btn-outline-indigo-900:focus,.btn-outline-indigo-900:active:focus,.btn-outline-indigo-900.active:focus,.btn-outline-indigo-900.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #14033080}.btn-outline-indigo-900:disabled,.btn-outline-indigo-900.disabled{color:#140330;background-color:transparent}.btn-outline-purple-100{color:#e2d9f3;border-color:#e2d9f3}.btn-outline-purple-100:hover{color:#000;background-color:#e2d9f3;border-color:#e2d9f3}.btn-check:focus+.btn-outline-purple-100,.btn-outline-purple-100:focus{box-shadow:0 0 0 .25rem #e2d9f380}.btn-check:checked+.btn-outline-purple-100,.btn-check:active+.btn-outline-purple-100,.btn-outline-purple-100:active,.btn-outline-purple-100.active,.btn-outline-purple-100.dropdown-toggle.show{color:#000;background-color:#e2d9f3;border-color:#e2d9f3}.btn-check:checked+.btn-outline-purple-100:focus,.btn-check:active+.btn-outline-purple-100:focus,.btn-outline-purple-100:active:focus,.btn-outline-purple-100.active:focus,.btn-outline-purple-100.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #e2d9f380}.btn-outline-purple-100:disabled,.btn-outline-purple-100.disabled{color:#e2d9f3;background-color:transparent}.btn-outline-purple-200{color:#c5b3e6;border-color:#c5b3e6}.btn-outline-purple-200:hover{color:#000;background-color:#c5b3e6;border-color:#c5b3e6}.btn-check:focus+.btn-outline-purple-200,.btn-outline-purple-200:focus{box-shadow:0 0 0 .25rem #c5b3e680}.btn-check:checked+.btn-outline-purple-200,.btn-check:active+.btn-outline-purple-200,.btn-outline-purple-200:active,.btn-outline-purple-200.active,.btn-outline-purple-200.dropdown-toggle.show{color:#000;background-color:#c5b3e6;border-color:#c5b3e6}.btn-check:checked+.btn-outline-purple-200:focus,.btn-check:active+.btn-outline-purple-200:focus,.btn-outline-purple-200:active:focus,.btn-outline-purple-200.active:focus,.btn-outline-purple-200.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #c5b3e680}.btn-outline-purple-200:disabled,.btn-outline-purple-200.disabled{color:#c5b3e6;background-color:transparent}.btn-outline-purple-300{color:#a98eda;border-color:#a98eda}.btn-outline-purple-300:hover{color:#000;background-color:#a98eda;border-color:#a98eda}.btn-check:focus+.btn-outline-purple-300,.btn-outline-purple-300:focus{box-shadow:0 0 0 .25rem #a98eda80}.btn-check:checked+.btn-outline-purple-300,.btn-check:active+.btn-outline-purple-300,.btn-outline-purple-300:active,.btn-outline-purple-300.active,.btn-outline-purple-300.dropdown-toggle.show{color:#000;background-color:#a98eda;border-color:#a98eda}.btn-check:checked+.btn-outline-purple-300:focus,.btn-check:active+.btn-outline-purple-300:focus,.btn-outline-purple-300:active:focus,.btn-outline-purple-300.active:focus,.btn-outline-purple-300.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #a98eda80}.btn-outline-purple-300:disabled,.btn-outline-purple-300.disabled{color:#a98eda;background-color:transparent}.btn-outline-purple-400{color:#8c68cd;border-color:#8c68cd}.btn-outline-purple-400:hover{color:#000;background-color:#8c68cd;border-color:#8c68cd}.btn-check:focus+.btn-outline-purple-400,.btn-outline-purple-400:focus{box-shadow:0 0 0 .25rem #8c68cd80}.btn-check:checked+.btn-outline-purple-400,.btn-check:active+.btn-outline-purple-400,.btn-outline-purple-400:active,.btn-outline-purple-400.active,.btn-outline-purple-400.dropdown-toggle.show{color:#000;background-color:#8c68cd;border-color:#8c68cd}.btn-check:checked+.btn-outline-purple-400:focus,.btn-check:active+.btn-outline-purple-400:focus,.btn-outline-purple-400:active:focus,.btn-outline-purple-400.active:focus,.btn-outline-purple-400.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #8c68cd80}.btn-outline-purple-400:disabled,.btn-outline-purple-400.disabled{color:#8c68cd;background-color:transparent}.btn-outline-purple-500{color:#6f42c1;border-color:#6f42c1}.btn-outline-purple-500:hover{color:#fff;background-color:#6f42c1;border-color:#6f42c1}.btn-check:focus+.btn-outline-purple-500,.btn-outline-purple-500:focus{box-shadow:0 0 0 .25rem #6f42c180}.btn-check:checked+.btn-outline-purple-500,.btn-check:active+.btn-outline-purple-500,.btn-outline-purple-500:active,.btn-outline-purple-500.active,.btn-outline-purple-500.dropdown-toggle.show{color:#fff;background-color:#6f42c1;border-color:#6f42c1}.btn-check:checked+.btn-outline-purple-500:focus,.btn-check:active+.btn-outline-purple-500:focus,.btn-outline-purple-500:active:focus,.btn-outline-purple-500.active:focus,.btn-outline-purple-500.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #6f42c180}.btn-outline-purple-500:disabled,.btn-outline-purple-500.disabled{color:#6f42c1;background-color:transparent}.btn-outline-purple-600{color:#59359a;border-color:#59359a}.btn-outline-purple-600:hover{color:#fff;background-color:#59359a;border-color:#59359a}.btn-check:focus+.btn-outline-purple-600,.btn-outline-purple-600:focus{box-shadow:0 0 0 .25rem #59359a80}.btn-check:checked+.btn-outline-purple-600,.btn-check:active+.btn-outline-purple-600,.btn-outline-purple-600:active,.btn-outline-purple-600.active,.btn-outline-purple-600.dropdown-toggle.show{color:#fff;background-color:#59359a;border-color:#59359a}.btn-check:checked+.btn-outline-purple-600:focus,.btn-check:active+.btn-outline-purple-600:focus,.btn-outline-purple-600:active:focus,.btn-outline-purple-600.active:focus,.btn-outline-purple-600.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #59359a80}.btn-outline-purple-600:disabled,.btn-outline-purple-600.disabled{color:#59359a;background-color:transparent}.btn-outline-purple-700{color:#432874;border-color:#432874}.btn-outline-purple-700:hover{color:#fff;background-color:#432874;border-color:#432874}.btn-check:focus+.btn-outline-purple-700,.btn-outline-purple-700:focus{box-shadow:0 0 0 .25rem #43287480}.btn-check:checked+.btn-outline-purple-700,.btn-check:active+.btn-outline-purple-700,.btn-outline-purple-700:active,.btn-outline-purple-700.active,.btn-outline-purple-700.dropdown-toggle.show{color:#fff;background-color:#432874;border-color:#432874}.btn-check:checked+.btn-outline-purple-700:focus,.btn-check:active+.btn-outline-purple-700:focus,.btn-outline-purple-700:active:focus,.btn-outline-purple-700.active:focus,.btn-outline-purple-700.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #43287480}.btn-outline-purple-700:disabled,.btn-outline-purple-700.disabled{color:#432874;background-color:transparent}.btn-outline-purple-800{color:#2c1a4d;border-color:#2c1a4d}.btn-outline-purple-800:hover{color:#fff;background-color:#2c1a4d;border-color:#2c1a4d}.btn-check:focus+.btn-outline-purple-800,.btn-outline-purple-800:focus{box-shadow:0 0 0 .25rem #2c1a4d80}.btn-check:checked+.btn-outline-purple-800,.btn-check:active+.btn-outline-purple-800,.btn-outline-purple-800:active,.btn-outline-purple-800.active,.btn-outline-purple-800.dropdown-toggle.show{color:#fff;background-color:#2c1a4d;border-color:#2c1a4d}.btn-check:checked+.btn-outline-purple-800:focus,.btn-check:active+.btn-outline-purple-800:focus,.btn-outline-purple-800:active:focus,.btn-outline-purple-800.active:focus,.btn-outline-purple-800.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #2c1a4d80}.btn-outline-purple-800:disabled,.btn-outline-purple-800.disabled{color:#2c1a4d;background-color:transparent}.btn-outline-purple-900{color:#160d27;border-color:#160d27}.btn-outline-purple-900:hover{color:#fff;background-color:#160d27;border-color:#160d27}.btn-check:focus+.btn-outline-purple-900,.btn-outline-purple-900:focus{box-shadow:0 0 0 .25rem #160d2780}.btn-check:checked+.btn-outline-purple-900,.btn-check:active+.btn-outline-purple-900,.btn-outline-purple-900:active,.btn-outline-purple-900.active,.btn-outline-purple-900.dropdown-toggle.show{color:#fff;background-color:#160d27;border-color:#160d27}.btn-check:checked+.btn-outline-purple-900:focus,.btn-check:active+.btn-outline-purple-900:focus,.btn-outline-purple-900:active:focus,.btn-outline-purple-900.active:focus,.btn-outline-purple-900.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #160d2780}.btn-outline-purple-900:disabled,.btn-outline-purple-900.disabled{color:#160d27;background-color:transparent}.btn-outline-pink-100{color:#f7d6e6;border-color:#f7d6e6}.btn-outline-pink-100:hover{color:#000;background-color:#f7d6e6;border-color:#f7d6e6}.btn-check:focus+.btn-outline-pink-100,.btn-outline-pink-100:focus{box-shadow:0 0 0 .25rem #f7d6e680}.btn-check:checked+.btn-outline-pink-100,.btn-check:active+.btn-outline-pink-100,.btn-outline-pink-100:active,.btn-outline-pink-100.active,.btn-outline-pink-100.dropdown-toggle.show{color:#000;background-color:#f7d6e6;border-color:#f7d6e6}.btn-check:checked+.btn-outline-pink-100:focus,.btn-check:active+.btn-outline-pink-100:focus,.btn-outline-pink-100:active:focus,.btn-outline-pink-100.active:focus,.btn-outline-pink-100.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #f7d6e680}.btn-outline-pink-100:disabled,.btn-outline-pink-100.disabled{color:#f7d6e6;background-color:transparent}.btn-outline-pink-200{color:#efadce;border-color:#efadce}.btn-outline-pink-200:hover{color:#000;background-color:#efadce;border-color:#efadce}.btn-check:focus+.btn-outline-pink-200,.btn-outline-pink-200:focus{box-shadow:0 0 0 .25rem #efadce80}.btn-check:checked+.btn-outline-pink-200,.btn-check:active+.btn-outline-pink-200,.btn-outline-pink-200:active,.btn-outline-pink-200.active,.btn-outline-pink-200.dropdown-toggle.show{color:#000;background-color:#efadce;border-color:#efadce}.btn-check:checked+.btn-outline-pink-200:focus,.btn-check:active+.btn-outline-pink-200:focus,.btn-outline-pink-200:active:focus,.btn-outline-pink-200.active:focus,.btn-outline-pink-200.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #efadce80}.btn-outline-pink-200:disabled,.btn-outline-pink-200.disabled{color:#efadce;background-color:transparent}.btn-outline-pink-300{color:#e685b5;border-color:#e685b5}.btn-outline-pink-300:hover{color:#000;background-color:#e685b5;border-color:#e685b5}.btn-check:focus+.btn-outline-pink-300,.btn-outline-pink-300:focus{box-shadow:0 0 0 .25rem #e685b580}.btn-check:checked+.btn-outline-pink-300,.btn-check:active+.btn-outline-pink-300,.btn-outline-pink-300:active,.btn-outline-pink-300.active,.btn-outline-pink-300.dropdown-toggle.show{color:#000;background-color:#e685b5;border-color:#e685b5}.btn-check:checked+.btn-outline-pink-300:focus,.btn-check:active+.btn-outline-pink-300:focus,.btn-outline-pink-300:active:focus,.btn-outline-pink-300.active:focus,.btn-outline-pink-300.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #e685b580}.btn-outline-pink-300:disabled,.btn-outline-pink-300.disabled{color:#e685b5;background-color:transparent}.btn-outline-pink-400{color:#de5c9d;border-color:#de5c9d}.btn-outline-pink-400:hover{color:#000;background-color:#de5c9d;border-color:#de5c9d}.btn-check:focus+.btn-outline-pink-400,.btn-outline-pink-400:focus{box-shadow:0 0 0 .25rem #de5c9d80}.btn-check:checked+.btn-outline-pink-400,.btn-check:active+.btn-outline-pink-400,.btn-outline-pink-400:active,.btn-outline-pink-400.active,.btn-outline-pink-400.dropdown-toggle.show{color:#000;background-color:#de5c9d;border-color:#de5c9d}.btn-check:checked+.btn-outline-pink-400:focus,.btn-check:active+.btn-outline-pink-400:focus,.btn-outline-pink-400:active:focus,.btn-outline-pink-400.active:focus,.btn-outline-pink-400.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #de5c9d80}.btn-outline-pink-400:disabled,.btn-outline-pink-400.disabled{color:#de5c9d;background-color:transparent}.btn-outline-pink-500{color:#d63384;border-color:#d63384}.btn-outline-pink-500:hover{color:#fff;background-color:#d63384;border-color:#d63384}.btn-check:focus+.btn-outline-pink-500,.btn-outline-pink-500:focus{box-shadow:0 0 0 .25rem #d6338480}.btn-check:checked+.btn-outline-pink-500,.btn-check:active+.btn-outline-pink-500,.btn-outline-pink-500:active,.btn-outline-pink-500.active,.btn-outline-pink-500.dropdown-toggle.show{color:#fff;background-color:#d63384;border-color:#d63384}.btn-check:checked+.btn-outline-pink-500:focus,.btn-check:active+.btn-outline-pink-500:focus,.btn-outline-pink-500:active:focus,.btn-outline-pink-500.active:focus,.btn-outline-pink-500.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #d6338480}.btn-outline-pink-500:disabled,.btn-outline-pink-500.disabled{color:#d63384;background-color:transparent}.btn-outline-pink-600{color:#ab296a;border-color:#ab296a}.btn-outline-pink-600:hover{color:#fff;background-color:#ab296a;border-color:#ab296a}.btn-check:focus+.btn-outline-pink-600,.btn-outline-pink-600:focus{box-shadow:0 0 0 .25rem #ab296a80}.btn-check:checked+.btn-outline-pink-600,.btn-check:active+.btn-outline-pink-600,.btn-outline-pink-600:active,.btn-outline-pink-600.active,.btn-outline-pink-600.dropdown-toggle.show{color:#fff;background-color:#ab296a;border-color:#ab296a}.btn-check:checked+.btn-outline-pink-600:focus,.btn-check:active+.btn-outline-pink-600:focus,.btn-outline-pink-600:active:focus,.btn-outline-pink-600.active:focus,.btn-outline-pink-600.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #ab296a80}.btn-outline-pink-600:disabled,.btn-outline-pink-600.disabled{color:#ab296a;background-color:transparent}.btn-outline-pink-700{color:#801f4f;border-color:#801f4f}.btn-outline-pink-700:hover{color:#fff;background-color:#801f4f;border-color:#801f4f}.btn-check:focus+.btn-outline-pink-700,.btn-outline-pink-700:focus{box-shadow:0 0 0 .25rem #801f4f80}.btn-check:checked+.btn-outline-pink-700,.btn-check:active+.btn-outline-pink-700,.btn-outline-pink-700:active,.btn-outline-pink-700.active,.btn-outline-pink-700.dropdown-toggle.show{color:#fff;background-color:#801f4f;border-color:#801f4f}.btn-check:checked+.btn-outline-pink-700:focus,.btn-check:active+.btn-outline-pink-700:focus,.btn-outline-pink-700:active:focus,.btn-outline-pink-700.active:focus,.btn-outline-pink-700.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #801f4f80}.btn-outline-pink-700:disabled,.btn-outline-pink-700.disabled{color:#801f4f;background-color:transparent}.btn-outline-pink-800{color:#561435;border-color:#561435}.btn-outline-pink-800:hover{color:#fff;background-color:#561435;border-color:#561435}.btn-check:focus+.btn-outline-pink-800,.btn-outline-pink-800:focus{box-shadow:0 0 0 .25rem #56143580}.btn-check:checked+.btn-outline-pink-800,.btn-check:active+.btn-outline-pink-800,.btn-outline-pink-800:active,.btn-outline-pink-800.active,.btn-outline-pink-800.dropdown-toggle.show{color:#fff;background-color:#561435;border-color:#561435}.btn-check:checked+.btn-outline-pink-800:focus,.btn-check:active+.btn-outline-pink-800:focus,.btn-outline-pink-800:active:focus,.btn-outline-pink-800.active:focus,.btn-outline-pink-800.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #56143580}.btn-outline-pink-800:disabled,.btn-outline-pink-800.disabled{color:#561435;background-color:transparent}.btn-outline-pink-900{color:#2b0a1a;border-color:#2b0a1a}.btn-outline-pink-900:hover{color:#fff;background-color:#2b0a1a;border-color:#2b0a1a}.btn-check:focus+.btn-outline-pink-900,.btn-outline-pink-900:focus{box-shadow:0 0 0 .25rem #2b0a1a80}.btn-check:checked+.btn-outline-pink-900,.btn-check:active+.btn-outline-pink-900,.btn-outline-pink-900:active,.btn-outline-pink-900.active,.btn-outline-pink-900.dropdown-toggle.show{color:#fff;background-color:#2b0a1a;border-color:#2b0a1a}.btn-check:checked+.btn-outline-pink-900:focus,.btn-check:active+.btn-outline-pink-900:focus,.btn-outline-pink-900:active:focus,.btn-outline-pink-900.active:focus,.btn-outline-pink-900.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #2b0a1a80}.btn-outline-pink-900:disabled,.btn-outline-pink-900.disabled{color:#2b0a1a;background-color:transparent}.btn-link{font-weight:400;color:#0d6efd;text-decoration:underline}.btn-link:hover{color:#0a58ca}.btn-link:disabled,.btn-link.disabled{color:#6c757d}.btn-lg,.btn-group-lg>.btn{padding:.5rem 1rem;font-size:1.25rem;border-radius:.75rem}.btn-sm,.btn-group-sm>.btn{padding:.25rem .5rem;font-size:.875rem;border-radius:.375rem}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion: reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion: reduce){.collapsing{transition:none}}.dropup,.dropend,.dropdown,.dropstart{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty:after{margin-left:0}.dropdown-menu{position:absolute;z-index:1000;display:none;min-width:10rem;padding:.5rem 0;margin:0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.375rem}.dropdown-menu[data-bs-popper]{top:100%;left:0;margin-top:.125rem}.dropdown-menu-start{--bs-position: start}.dropdown-menu-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-end{--bs-position: end}.dropdown-menu-end[data-bs-popper]{right:0;left:auto}@media (min-width: 576px){.dropdown-menu-sm-start{--bs-position: start}.dropdown-menu-sm-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-sm-end{--bs-position: end}.dropdown-menu-sm-end[data-bs-popper]{right:0;left:auto}}@media (min-width: 768px){.dropdown-menu-md-start{--bs-position: start}.dropdown-menu-md-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-md-end{--bs-position: end}.dropdown-menu-md-end[data-bs-popper]{right:0;left:auto}}@media (min-width: 992px){.dropdown-menu-lg-start{--bs-position: start}.dropdown-menu-lg-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-lg-end{--bs-position: end}.dropdown-menu-lg-end[data-bs-popper]{right:0;left:auto}}@media (min-width: 1200px){.dropdown-menu-xl-start{--bs-position: start}.dropdown-menu-xl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xl-end{--bs-position: end}.dropdown-menu-xl-end[data-bs-popper]{right:0;left:auto}}@media (min-width: 1400px){.dropdown-menu-xxl-start{--bs-position: start}.dropdown-menu-xxl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xxl-end{--bs-position: end}.dropdown-menu-xxl-end[data-bs-popper]{right:0;left:auto}}.dropup .dropdown-menu[data-bs-popper]{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty:after{margin-left:0}.dropend .dropdown-menu[data-bs-popper]{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}.dropend .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropend .dropdown-toggle:empty:after{margin-left:0}.dropend .dropdown-toggle:after{vertical-align:0}.dropstart .dropdown-menu[data-bs-popper]{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}.dropstart .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropstart .dropdown-toggle:after{display:none}.dropstart .dropdown-toggle:before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropstart .dropdown-toggle:empty:after{margin-left:0}.dropstart .dropdown-toggle:before{vertical-align:0}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid rgba(0,0,0,.15)}.dropdown-item{display:block;width:100%;padding:.25rem 1rem;clear:both;font-weight:400;color:#212529;text-align:inherit;text-decoration:none;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:hover,.dropdown-item:focus{color:#1e2125;background-color:#e9ecef}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#0d6efd}.dropdown-item.disabled,.dropdown-item:disabled{color:#adb5bd;pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1rem;color:#212529}.dropdown-menu-dark{color:#dee2e6;background-color:#343a40;border-color:#00000026}.dropdown-menu-dark .dropdown-item{color:#dee2e6}.dropdown-menu-dark .dropdown-item:hover,.dropdown-menu-dark .dropdown-item:focus{color:#fff;background-color:#ffffff26}.dropdown-menu-dark .dropdown-item.active,.dropdown-menu-dark .dropdown-item:active{color:#fff;background-color:#0d6efd}.dropdown-menu-dark .dropdown-item.disabled,.dropdown-menu-dark .dropdown-item:disabled{color:#adb5bd}.dropdown-menu-dark .dropdown-divider{border-color:#00000026}.dropdown-menu-dark .dropdown-item-text{color:#dee2e6}.dropdown-menu-dark .dropdown-header{color:#adb5bd}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;flex:1 1 auto}.btn-group>.btn-check:checked+.btn,.btn-group>.btn-check:focus+.btn,.btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn-check:checked+.btn,.btn-group-vertical>.btn-check:focus+.btn,.btn-group-vertical>.btn:hover,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn.active{z-index:1}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn:not(:first-child),.btn-group>.btn-group:not(:first-child){margin-left:-1px}.btn-group>.btn:not(:last-child):not(.dropdown-toggle),.btn-group>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:nth-child(n+3),.btn-group>:not(.btn-check)+.btn,.btn-group>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split:after,.dropup .dropdown-toggle-split:after,.dropend .dropdown-toggle-split:after{margin-left:0}.dropstart .dropdown-toggle-split:before{margin-right:0}.btn-sm+.dropdown-toggle-split,.btn-group-sm>.btn+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-lg+.dropdown-toggle-split,.btn-group-lg>.btn+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn:not(:first-child),.btn-group-vertical>.btn-group:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle),.btn-group-vertical>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn~.btn,.btn-group-vertical>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-top-right-radius:0}.nav{display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem;color:#0d6efd;text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media (prefers-reduced-motion: reduce){.nav-link{transition:none}}.nav-link:hover,.nav-link:focus{color:#0a58ca}.nav-link.disabled{color:#6c757d;pointer-events:none;cursor:default}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-link{margin-bottom:-1px;background:none;border:1px solid transparent;border-top-left-radius:.375rem;border-top-right-radius:.375rem}.nav-tabs .nav-link:hover,.nav-tabs .nav-link:focus{border-color:#e9ecef #e9ecef #dee2e6;isolation:isolate}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.nav-tabs .nav-link.active,.nav-tabs .nav-item.show .nav-link{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{background:none;border:0;border-radius:.375rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#0d6efd}.nav-fill>.nav-link,.nav-fill .nav-item{flex:1 1 auto;text-align:center}.nav-justified>.nav-link,.nav-justified .nav-item{flex-basis:0;flex-grow:1;text-align:center}.nav-fill .nav-item .nav-link,.nav-justified .nav-item .nav-link{width:100%}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding-top:.5rem;padding-bottom:.5rem}.navbar>.container,.navbar>.container-fluid,.navbar>.container-sm,.navbar>.container-md,.navbar>.container-lg,.navbar>.container-xl,.navbar>.container-xxl{display:flex;flex-wrap:inherit;align-items:center;justify-content:space-between}.navbar-brand{padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;text-decoration:none;white-space:nowrap}.navbar-nav{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static}.navbar-text{padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.375rem;transition:box-shadow .15s ease-in-out}@media (prefers-reduced-motion: reduce){.navbar-toggler{transition:none}}.navbar-toggler:hover{text-decoration:none}.navbar-toggler:focus{text-decoration:none;outline:0;box-shadow:0 0 0 .25rem}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;background-repeat:no-repeat;background-position:center;background-size:100%}.navbar-nav-scroll{max-height:var(--bs-scroll-height, 75vh);overflow-y:auto}@media (min-width: 576px){.navbar-expand-sm{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}}@media (min-width: 768px){.navbar-expand-md{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}}@media (min-width: 992px){.navbar-expand-lg{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}}@media (min-width: 1200px){.navbar-expand-xl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}}@media (min-width: 1400px){.navbar-expand-xxl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xxl .navbar-nav{flex-direction:row}.navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xxl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xxl .navbar-nav-scroll{overflow:visible}.navbar-expand-xxl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xxl .navbar-toggler{display:none}}.navbar-expand{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-light .navbar-brand{color:#000000e6}.navbar-light .navbar-brand:hover,.navbar-light .navbar-brand:focus{color:#000000e6}.navbar-light .navbar-nav .nav-link{color:#0000008c}.navbar-light .navbar-nav .nav-link:hover,.navbar-light .navbar-nav .nav-link:focus{color:#000000b3}.navbar-light .navbar-nav .nav-link.disabled{color:#0000004d}.navbar-light .navbar-nav .show>.nav-link,.navbar-light .navbar-nav .nav-link.active{color:#000000e6}.navbar-light .navbar-toggler{color:#0000008c;border-color:#0000001a}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-light .navbar-text{color:#0000008c}.navbar-light .navbar-text a,.navbar-light .navbar-text a:hover,.navbar-light .navbar-text a:focus{color:#000000e6}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:hover,.navbar-dark .navbar-brand:focus{color:#fff}.navbar-dark .navbar-nav .nav-link{color:#ffffff8c}.navbar-dark .navbar-nav .nav-link:hover,.navbar-dark .navbar-nav .nav-link:focus{color:#ffffffbf}.navbar-dark .navbar-nav .nav-link.disabled{color:#ffffff40}.navbar-dark .navbar-nav .show>.nav-link,.navbar-dark .navbar-nav .nav-link.active{color:#fff}.navbar-dark .navbar-toggler{color:#ffffff8c;border-color:#ffffff1a}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-dark .navbar-text{color:#ffffff8c}.navbar-dark .navbar-text a,.navbar-dark .navbar-text a:hover,.navbar-dark .navbar-text a:focus{color:#fff}.card{position:relative;display:flex;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,.125);border-radius:.375rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:calc(.375rem - 1px);border-top-right-radius:calc(.375rem - 1px)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:calc(.375rem - 1px);border-bottom-left-radius:calc(.375rem - 1px)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{flex:1 1 auto;padding:1rem}.card-title{margin-bottom:.5rem}.card-subtitle{margin-top:-.25rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1rem}.card-header{padding:.5rem 1rem;margin-bottom:0;color:#343a40;background-color:"unset";border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(.375rem - 1px) calc(.375rem - 1px) 0 0}.card-footer{padding:.5rem 1rem;color:#343a40;background-color:"unset";border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(.375rem - 1px) calc(.375rem - 1px)}.card-header-tabs{margin-right:-.5rem;margin-bottom:-.5rem;margin-left:-.5rem;border-bottom:0}.card-header-pills{margin-right:-.5rem;margin-left:-.5rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1rem;border-radius:calc(.375rem - 1px)}.card-img,.card-img-top,.card-img-bottom{width:100%}.card-img,.card-img-top{border-top-left-radius:calc(.375rem - 1px);border-top-right-radius:calc(.375rem - 1px)}.card-img,.card-img-bottom{border-bottom-right-radius:calc(.375rem - 1px);border-bottom-left-radius:calc(.375rem - 1px)}.card-group>.card{margin-bottom:.75rem}@media (min-width: 576px){.card-group{display:flex;flex-flow:row wrap}.card-group>.card{flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-img-top,.card-group>.card:not(:last-child) .card-header{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-img-bottom,.card-group>.card:not(:last-child) .card-footer{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-img-top,.card-group>.card:not(:first-child) .card-header{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-img-bottom,.card-group>.card:not(:first-child) .card-footer{border-bottom-left-radius:0}}.accordion-button{position:relative;display:flex;align-items:center;width:100%;padding:1rem 1.25rem;font-size:1rem;color:#212529;text-align:left;background-color:transparent;border:0;border-radius:0;overflow-anchor:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,border-radius .15s ease}@media (prefers-reduced-motion: reduce){.accordion-button{transition:none}}.accordion-button:not(.collapsed){color:#343a40;background-color:#cfe2ff;box-shadow:inset 0 -1px #dee2e6}.accordion-button:not(.collapsed):after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230c63e4'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");transform:rotate(-180deg)}.accordion-button:after{flex-shrink:0;width:1.25rem;height:1.25rem;margin-left:auto;content:"";background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23212529'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-size:1.25rem;transition:transform .2s ease-in-out}@media (prefers-reduced-motion: reduce){.accordion-button:after{transition:none}}.accordion-button:hover{z-index:2}.accordion-button:focus{z-index:3;border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}.accordion-header{margin-bottom:0}.accordion-item{background-color:transparent;border:1px solid #dee2e6}.accordion-item:first-of-type{border-top-left-radius:.375rem;border-top-right-radius:.375rem}.accordion-item:first-of-type .accordion-button{border-top-left-radius:calc(.375rem - 1px);border-top-right-radius:calc(.375rem - 1px)}.accordion-item:not(:first-of-type){border-top:0}.accordion-item:last-of-type{border-bottom-right-radius:.375rem;border-bottom-left-radius:.375rem}.accordion-item:last-of-type .accordion-button.collapsed{border-bottom-right-radius:calc(.375rem - 1px);border-bottom-left-radius:calc(.375rem - 1px)}.accordion-item:last-of-type .accordion-collapse{border-bottom-right-radius:.375rem;border-bottom-left-radius:.375rem}.accordion-body{padding:1rem 1.25rem}.accordion-flush .accordion-collapse{border-width:0}.accordion-flush .accordion-item{border-right:0;border-left:0;border-radius:0}.accordion-flush .accordion-item:first-child{border-top:0}.accordion-flush .accordion-item:last-child{border-bottom:0}.accordion-flush .accordion-item .accordion-button{border-radius:0}.breadcrumb{display:flex;flex-wrap:wrap;padding:0;margin-bottom:1rem;list-style:none}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item:before{float:left;padding-right:.5rem;color:#6c757d;content:var(--bs-breadcrumb-divider, url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8'%3E%3Cpath d='M2.5 0L1 1.5 3.5 4 1 6.5 2.5 8l4-4-4-4z' fill='currentColor'/%3E%3C/svg%3E"))}.breadcrumb-item.active{color:#6c757d}.pagination{display:flex;padding-left:0;list-style:none}.page-link{position:relative;display:block;color:#0d6efd;text-decoration:none;background-color:#fff;border:1px solid #dee2e6;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion: reduce){.page-link{transition:none}}.page-link:hover{z-index:2;color:#0a58ca;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus{z-index:3;color:#0a58ca;background-color:#e9ecef;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}.page-item:not(:first-child) .page-link{margin-left:-1px}.page-item.active .page-link{z-index:3;color:#fff;background-color:#0d6efd;border-color:#0d6efd}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;background-color:#fff;border-color:#dee2e6}.page-link{padding:.375rem .75rem}.page-item:first-child .page-link{border-top-left-radius:.375rem;border-bottom-left-radius:.375rem}.page-item:last-child .page-link{border-top-right-radius:.375rem;border-bottom-right-radius:.375rem}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.75rem;border-bottom-left-radius:.75rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.75rem;border-bottom-right-radius:.75rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.375rem;border-bottom-left-radius:.375rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.375rem;border-bottom-right-radius:.375rem}.badge{display:inline-block;padding:.35em .65em;font-size:.75em;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.375rem}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.alert{position:relative;padding:1rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.375rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:3rem}.alert-dismissible .btn-close{position:absolute;top:0;right:0;z-index:2;padding:1.25rem 1rem}.alert-primary{color:#1f496e;background-color:#d6e4f1;border-color:#c2d7e9}.alert-primary .alert-link{color:#193a58}.alert-secondary{color:#41464b;background-color:#e2e3e5;border-color:#d3d6d8}.alert-secondary .alert-link{color:#34383c}.alert-success{color:#0f5132;background-color:#d1e7dd;border-color:#badbcc}.alert-success .alert-link{color:#0c4128}.alert-info{color:#055160;background-color:#cff4fc;border-color:#b6effb}.alert-info .alert-link{color:#04414d}.alert-warning{color:#664d03;background-color:#fff3cd;border-color:#ffecb5}.alert-warning .alert-link{color:#523e02}.alert-danger{color:#842029;background-color:#f8d7da;border-color:#f5c2c7}.alert-danger .alert-link{color:#6a1a21}.alert-light{color:#636464;background-color:#fefefe;border-color:#fdfdfe}.alert-light .alert-link{color:#4f5050}.alert-dark{color:#141619;background-color:#d3d3d4;border-color:#bcbebf}.alert-dark .alert-link{color:#101214}.alert-red{color:#842029;background-color:#f8d7da;border-color:#f5c2c7}.alert-red .alert-link{color:#6a1a21}.alert-yellow{color:#664d03;background-color:#fff3cd;border-color:#ffecb5}.alert-yellow .alert-link{color:#523e02}.alert-green{color:#0f5132;background-color:#d1e7dd;border-color:#badbcc}.alert-green .alert-link{color:#0c4128}.alert-blue{color:#084298;background-color:#cfe2ff;border-color:#b6d4fe}.alert-blue .alert-link{color:#06357a}.alert-cyan{color:#055160;background-color:#cff4fc;border-color:#b6effb}.alert-cyan .alert-link{color:#04414d}.alert-indigo{color:#3d0a91;background-color:#e0cffc;border-color:#d1b7fb}.alert-indigo .alert-link{color:#310874}.alert-purple{color:#432874;background-color:#e2d9f3;border-color:#d4c6ec}.alert-purple .alert-link{color:#36205d}.alert-pink{color:#801f4f;background-color:#f7d6e6;border-color:#f3c2da}.alert-pink .alert-link{color:#66193f}.alert-darker{color:#101314;background-color:#d1d2d3;border-color:#bbbcbd}.alert-darker .alert-link{color:#0d0f10}.alert-darkest{color:#0e1011;background-color:#d1d1d2;border-color:#b9bbbb}.alert-darkest .alert-link{color:#0b0d0e}.alert-gray{color:#525557;background-color:#f5f6f8;border-color:#f0f2f4}.alert-gray .alert-link{color:#424446}.alert-gray-100{color:#636464;background-color:#fefefe;border-color:#fdfdfe}.alert-gray-100 .alert-link{color:#4f5050}.alert-gray-200{color:#5d5e60;background-color:#fbfbfc;border-color:#f8f9fa}.alert-gray-200 .alert-link{color:#4a4b4d}.alert-gray-300{color:#595a5c;background-color:#f8f9fa;border-color:#f5f6f8}.alert-gray-300 .alert-link{color:#47484a}.alert-gray-400{color:#525557;background-color:#f5f6f8;border-color:#f0f2f4}.alert-gray-400 .alert-link{color:#424446}.alert-gray-500{color:#686d71;background-color:#eff0f2;border-color:#e6e9eb}.alert-gray-500 .alert-link{color:#53575a}.alert-gray-600{color:#41464b;background-color:#e2e3e5;border-color:#d3d6d8}.alert-gray-600 .alert-link{color:#34383c}.alert-gray-700{color:#2c3034;background-color:#dbdcdd;border-color:#c8cbcd}.alert-gray-700 .alert-link{color:#23262a}.alert-gray-800{color:#1f2326;background-color:#d6d8d9;border-color:#c2c4c6}.alert-gray-800 .alert-link{color:#191c1e}.alert-gray-900{color:#141619;background-color:#d3d3d4;border-color:#bcbebf}.alert-gray-900 .alert-link{color:#101214}.alert-red-100{color:#635657;background-color:#fef7f8;border-color:#fdf3f4}.alert-red-100 .alert-link{color:#4f4546}.alert-red-200{color:#604648;background-color:#fceff0;border-color:#fbe7e9}.alert-red-200 .alert-link{color:#4d383a}.alert-red-300{color:#8c5056;background-color:#fbe7e9;border-color:#f9dbdd}.alert-red-300 .alert-link{color:#704045}.alert-red-400{color:#883840;background-color:#f9dfe1;border-color:#f7ced2}.alert-red-400 .alert-link{color:#6d2d33}.alert-red-500{color:#842029;background-color:#f8d7da;border-color:#f5c2c7}.alert-red-500 .alert-link{color:#6a1a21}.alert-red-600{color:#6a1921;background-color:#efd4d7;border-color:#e7bfc3}.alert-red-600 .alert-link{color:#55141a}.alert-red-700{color:#4f1319;background-color:#e6d2d4;border-color:#dabcbf}.alert-red-700 .alert-link{color:#3f0f14}.alert-red-800{color:#350d11;background-color:#ded0d2;border-color:#cdb9bb}.alert-red-800 .alert-link{color:#2a0a0e}.alert-red-900{color:#1a0708;background-color:#d5cecf;border-color:#c0b6b7}.alert-red-900 .alert-link{color:#150606}.alert-yellow-100{color:#666152;background-color:#fffdf5;border-color:#fffbf0}.alert-yellow-100 .alert-link{color:#524e42}.alert-yellow-200{color:#665c3e;background-color:#fffaeb;border-color:#fff8e1}.alert-yellow-200 .alert-link{color:#524a32}.alert-yellow-300{color:#66572a;background-color:#fff8e1;border-color:#fff4d2}.alert-yellow-300 .alert-link{color:#524622}.alert-yellow-400{color:#665217;background-color:#fff5d7;border-color:#fff0c4}.alert-yellow-400 .alert-link{color:#524212}.alert-yellow-500{color:#664d03;background-color:#fff3cd;border-color:#ffecb5}.alert-yellow-500 .alert-link{color:#523e02}.alert-yellow-600{color:#7a5c04;background-color:#f5ebcd;border-color:#f0e1b4}.alert-yellow-600 .alert-link{color:#624a03}.alert-yellow-700{color:#5c4602;background-color:#ebe3cd;border-color:#e0d5b4}.alert-yellow-700 .alert-link{color:#4a3802}.alert-yellow-800{color:#3d2e02;background-color:#e0dbcd;border-color:#d1cab3}.alert-yellow-800 .alert-link{color:#312502}.alert-yellow-900{color:#1f1701;background-color:#d6d4cc;border-color:#c2beb3}.alert-yellow-900 .alert-link{color:#191201}.alert-green-100{color:#545c58;background-color:#f6faf8;border-color:#f1f8f5}.alert-green-100 .alert-link{color:#434a46}.alert-green-200{color:#41534b;background-color:#edf5f1;border-color:#e3f1eb}.alert-green-200 .alert-link{color:#34423c}.alert-green-300{color:#466e5b;background-color:#e3f1ea;border-color:#d6e9e0}.alert-green-300 .alert-link{color:#385849}.alert-green-400{color:#2b5f47;background-color:#daece4;border-color:#c8e2d6}.alert-green-400 .alert-link{color:#224c39}.alert-green-500{color:#0f5132;background-color:#d1e7dd;border-color:#badbcc}.alert-green-500 .alert-link{color:#0c4128}.alert-green-600{color:#0c4128;background-color:#d0e2d9;border-color:#b9d3c7}.alert-green-600 .alert-link{color:#0a3420}.alert-green-700{color:#09311e;background-color:#cfdcd6;border-color:#b7cbc2}.alert-green-700 .alert-link{color:#072718}.alert-green-800{color:#062014;background-color:#ced7d3;border-color:#b6c3bd}.alert-green-800 .alert-link{color:#051a10}.alert-green-900{color:#03100a;background-color:#cdd1cf;border-color:#b4bbb8}.alert-green-900 .alert-link{color:#020d08}.alert-blue-100{color:#535a66;background-color:#f5f9ff;border-color:#f1f6ff}.alert-blue-100 .alert-link{color:#424852}.alert-blue-200{color:#3f4f66;background-color:#ecf3ff;border-color:#e2eeff}.alert-blue-200 .alert-link{color:#323f52}.alert-blue-300{color:#426598;background-color:#e2eeff;border-color:#d4e5ff}.alert-blue-300 .alert-link{color:#35517a}.alert-blue-400{color:#255398;background-color:#d8e8ff;border-color:#c5dcfe}.alert-blue-400 .alert-link{color:#1e427a}.alert-blue-500{color:#084298;background-color:#cfe2ff;border-color:#b6d4fe}.alert-blue-500 .alert-link{color:#06357a}.alert-blue-600{color:#063579;background-color:#cedef4;border-color:#b6cdef}.alert-blue-600 .alert-link{color:#052a61}.alert-blue-700{color:#05285b;background-color:#ced9ea;border-color:#b5c6e0}.alert-blue-700 .alert-link{color:#042049}.alert-blue-800{color:#031a3d;background-color:#cdd5e0;border-color:#b4c0d1}.alert-blue-800 .alert-link{color:#021531}.alert-blue-900{color:#020d1f;background-color:#cdd0d6;border-color:#b3b9c2}.alert-blue-900 .alert-link{color:#020a19}.alert-cyan-100{color:#536265;background-color:#f5fdfe;border-color:#f1fcfe}.alert-cyan-100 .alert-link{color:#424e51}.alert-cyan-200{color:#3f5e64;background-color:#ecfbfe;border-color:#e2f9fd}.alert-cyan-200 .alert-link{color:#324b50}.alert-cyan-300{color:#2c5962;background-color:#e2f9fd;border-color:#d4f5fc}.alert-cyan-300 .alert-link{color:#23474e}.alert-cyan-400{color:#185561;background-color:#d8f7fd;border-color:#c5f2fb}.alert-cyan-400 .alert-link{color:#13444e}.alert-cyan-500{color:#055160;background-color:#cff4fc;border-color:#b6effb}.alert-cyan-500 .alert-link{color:#04414d}.alert-cyan-600{color:#066173;background-color:#ceecf2;border-color:#b6e3ec}.alert-cyan-600 .alert-link{color:#054e5c}.alert-cyan-700{color:#054956;background-color:#cee4e9;border-color:#b5d7de}.alert-cyan-700 .alert-link{color:#043a45}.alert-cyan-800{color:#03313a;background-color:#cddcdf;border-color:#b4cbcf}.alert-cyan-800 .alert-link{color:#02272e}.alert-cyan-900{color:#02181d;background-color:#cdd4d6;border-color:#b3bfc1}.alert-cyan-900 .alert-link{color:#021317}.alert-indigo-100{color:#5a5365;background-color:#f9f5fe;border-color:#f6f1fe}.alert-indigo-100 .alert-link{color:#484251}.alert-indigo-200{color:#745f96;background-color:#f3ecfe;border-color:#ede2fe}.alert-indigo-200 .alert-link{color:#5d4c78}.alert-indigo-300{color:#624394;background-color:#ede2fd;border-color:#e3d4fd}.alert-indigo-300 .alert-link{color:#4e3676}.alert-indigo-400{color:#502693;background-color:#e7d9fd;border-color:#dac6fc}.alert-indigo-400 .alert-link{color:#401e76}.alert-indigo-500{color:#3d0a91;background-color:#e0cffc;border-color:#d1b7fb}.alert-indigo-500 .alert-link{color:#310874}.alert-indigo-600{color:#310874;background-color:#dccff3;border-color:#cbb6ed}.alert-indigo-600 .alert-link{color:#27065d}.alert-indigo-700{color:#250657;background-color:#d8cee9;border-color:#c5b6de}.alert-indigo-700 .alert-link{color:#1e0546}.alert-indigo-800{color:#19043a;background-color:#d4cddf;border-color:#bfb4d0}.alert-indigo-800 .alert-link{color:#14032e}.alert-indigo-900{color:#0c021d;background-color:#d0cdd6;border-color:#b9b3c1}.alert-indigo-900 .alert-link{color:#0a0217}.alert-purple-100{color:#5a5761;background-color:#f9f7fd;border-color:#f6f4fb}.alert-purple-100 .alert-link{color:#48464e}.alert-purple-200{color:#4f485c;background-color:#f3f0fa;border-color:#eee8f8}.alert-purple-200 .alert-link{color:#3f3a4a}.alert-purple-300{color:#655583;background-color:#eee8f8;border-color:#e5ddf4}.alert-purple-300 .alert-link{color:#514469}.alert-purple-400{color:#543e7b;background-color:#e8e1f5;border-color:#ddd2f0}.alert-purple-400 .alert-link{color:#433262}.alert-purple-500{color:#432874;background-color:#e2d9f3;border-color:#d4c6ec}.alert-purple-500 .alert-link{color:#36205d}.alert-purple-600{color:#35205c;background-color:#ded7eb;border-color:#cdc2e1}.alert-purple-600 .alert-link{color:#2a1a4a}.alert-purple-700{color:#281846;background-color:#d9d4e3;border-color:#c7bfd5}.alert-purple-700 .alert-link{color:#201338}.alert-purple-800{color:#1a102e;background-color:#d5d1db;border-color:#c0baca}.alert-purple-800 .alert-link{color:#150d25}.alert-purple-900{color:#0d0817;background-color:#d0cfd4;border-color:#b9b6be}.alert-purple-900 .alert-link{color:#0a0612}.alert-pink-100{color:#63565c;background-color:#fdf7fa;border-color:#fdf3f8}.alert-pink-100 .alert-link{color:#4f454a}.alert-pink-200{color:#604552;background-color:#fceff5;border-color:#fae6f0}.alert-pink-200 .alert-link{color:#4d3742}.alert-pink-300{color:#8a506d;background-color:#fae7f0;border-color:#f8dae9}.alert-pink-300 .alert-link{color:#6e4057}.alert-pink-400{color:#85375e;background-color:#f8deeb;border-color:#f5cee2}.alert-pink-400 .alert-link{color:#6a2c4b}.alert-pink-500{color:#801f4f;background-color:#f7d6e6;border-color:#f3c2da}.alert-pink-500 .alert-link{color:#66193f}.alert-pink-600{color:#671940;background-color:#eed4e1;border-color:#e6bfd2}.alert-pink-600 .alert-link{color:#521433}.alert-pink-700{color:#4d132f;background-color:#e6d2dc;border-color:#d9bcca}.alert-pink-700 .alert-link{color:#3e0f26}.alert-pink-800{color:#340c20;background-color:#ddd0d7;border-color:#ccb9c2}.alert-pink-800 .alert-link{color:#2a0a1a}.alert-pink-900{color:#1a0610;background-color:#d5ced1;border-color:#bfb6ba}.alert-pink-900 .alert-link{color:#15050d}@keyframes progress-bar-stripes{0%{background-position-x:1rem}}.progress{display:flex;height:1rem;overflow:hidden;font-size:.75rem;background-color:#e9ecef;border-radius:.375rem}.progress-bar{display:flex;flex-direction:column;justify-content:center;overflow:hidden;color:#fff;text-align:center;white-space:nowrap;background-color:#0d6efd;transition:width .6s ease}@media (prefers-reduced-motion: reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:1rem 1rem}.progress-bar-animated{animation:1s linear infinite progress-bar-stripes}@media (prefers-reduced-motion: reduce){.progress-bar-animated{animation:none}}.list-group{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:.375rem}.list-group-numbered{list-style-type:none;counter-reset:section}.list-group-numbered>li:before{content:counters(section,".") ". ";counter-increment:section}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:hover,.list-group-item-action:focus{z-index:1;color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.5rem 1rem;color:#495057;text-decoration:none;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:#adb5bd;pointer-events:none;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#0d6efd;border-color:#0d6efd}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:-1px;border-top-width:1px}.list-group-horizontal{flex-direction:row}.list-group-horizontal>.list-group-item:first-child{border-bottom-left-radius:.375rem;border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child{border-top-right-radius:.375rem;border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}@media (min-width: 576px){.list-group-horizontal-sm{flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child{border-bottom-left-radius:.375rem;border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child{border-top-right-radius:.375rem;border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width: 768px){.list-group-horizontal-md{flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child{border-bottom-left-radius:.375rem;border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child{border-top-right-radius:.375rem;border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width: 992px){.list-group-horizontal-lg{flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child{border-bottom-left-radius:.375rem;border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child{border-top-right-radius:.375rem;border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width: 1200px){.list-group-horizontal-xl{flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child{border-bottom-left-radius:.375rem;border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child{border-top-right-radius:.375rem;border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width: 1400px){.list-group-horizontal-xxl{flex-direction:row}.list-group-horizontal-xxl>.list-group-item:first-child{border-bottom-left-radius:.375rem;border-top-right-radius:0}.list-group-horizontal-xxl>.list-group-item:last-child{border-top-right-radius:.375rem;border-bottom-left-radius:0}.list-group-horizontal-xxl>.list-group-item.active{margin-top:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 1px}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{color:#1f496e;background-color:#d6e4f1}.list-group-item-primary.list-group-item-action:hover,.list-group-item-primary.list-group-item-action:focus{color:#1f496e;background-color:#c1cdd9}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#1f496e;border-color:#1f496e}.list-group-item-secondary{color:#41464b;background-color:#e2e3e5}.list-group-item-secondary.list-group-item-action:hover,.list-group-item-secondary.list-group-item-action:focus{color:#41464b;background-color:#cbccce}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#41464b;border-color:#41464b}.list-group-item-success{color:#0f5132;background-color:#d1e7dd}.list-group-item-success.list-group-item-action:hover,.list-group-item-success.list-group-item-action:focus{color:#0f5132;background-color:#bcd0c7}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#0f5132;border-color:#0f5132}.list-group-item-info{color:#055160;background-color:#cff4fc}.list-group-item-info.list-group-item-action:hover,.list-group-item-info.list-group-item-action:focus{color:#055160;background-color:#badce3}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#055160;border-color:#055160}.list-group-item-warning{color:#664d03;background-color:#fff3cd}.list-group-item-warning.list-group-item-action:hover,.list-group-item-warning.list-group-item-action:focus{color:#664d03;background-color:#e6dbb9}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#664d03;border-color:#664d03}.list-group-item-danger{color:#842029;background-color:#f8d7da}.list-group-item-danger.list-group-item-action:hover,.list-group-item-danger.list-group-item-action:focus{color:#842029;background-color:#dfc2c4}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#842029;border-color:#842029}.list-group-item-light{color:#636464;background-color:#fefefe}.list-group-item-light.list-group-item-action:hover,.list-group-item-light.list-group-item-action:focus{color:#636464;background-color:#e5e5e5}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#636464;border-color:#636464}.list-group-item-dark{color:#141619;background-color:#d3d3d4}.list-group-item-dark.list-group-item-action:hover,.list-group-item-dark.list-group-item-action:focus{color:#141619;background-color:#bebebf}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#141619;border-color:#141619}.list-group-item-red{color:#842029;background-color:#f8d7da}.list-group-item-red.list-group-item-action:hover,.list-group-item-red.list-group-item-action:focus{color:#842029;background-color:#dfc2c4}.list-group-item-red.list-group-item-action.active{color:#fff;background-color:#842029;border-color:#842029}.list-group-item-yellow{color:#664d03;background-color:#fff3cd}.list-group-item-yellow.list-group-item-action:hover,.list-group-item-yellow.list-group-item-action:focus{color:#664d03;background-color:#e6dbb9}.list-group-item-yellow.list-group-item-action.active{color:#fff;background-color:#664d03;border-color:#664d03}.list-group-item-green{color:#0f5132;background-color:#d1e7dd}.list-group-item-green.list-group-item-action:hover,.list-group-item-green.list-group-item-action:focus{color:#0f5132;background-color:#bcd0c7}.list-group-item-green.list-group-item-action.active{color:#fff;background-color:#0f5132;border-color:#0f5132}.list-group-item-blue{color:#084298;background-color:#cfe2ff}.list-group-item-blue.list-group-item-action:hover,.list-group-item-blue.list-group-item-action:focus{color:#084298;background-color:#bacbe6}.list-group-item-blue.list-group-item-action.active{color:#fff;background-color:#084298;border-color:#084298}.list-group-item-cyan{color:#055160;background-color:#cff4fc}.list-group-item-cyan.list-group-item-action:hover,.list-group-item-cyan.list-group-item-action:focus{color:#055160;background-color:#badce3}.list-group-item-cyan.list-group-item-action.active{color:#fff;background-color:#055160;border-color:#055160}.list-group-item-indigo{color:#3d0a91;background-color:#e0cffc}.list-group-item-indigo.list-group-item-action:hover,.list-group-item-indigo.list-group-item-action:focus{color:#3d0a91;background-color:#cabae3}.list-group-item-indigo.list-group-item-action.active{color:#fff;background-color:#3d0a91;border-color:#3d0a91}.list-group-item-purple{color:#432874;background-color:#e2d9f3}.list-group-item-purple.list-group-item-action:hover,.list-group-item-purple.list-group-item-action:focus{color:#432874;background-color:#cbc3db}.list-group-item-purple.list-group-item-action.active{color:#fff;background-color:#432874;border-color:#432874}.list-group-item-pink{color:#801f4f;background-color:#f7d6e6}.list-group-item-pink.list-group-item-action:hover,.list-group-item-pink.list-group-item-action:focus{color:#801f4f;background-color:#dec1cf}.list-group-item-pink.list-group-item-action.active{color:#fff;background-color:#801f4f;border-color:#801f4f}.list-group-item-darker{color:#101314;background-color:#d1d2d3}.list-group-item-darker.list-group-item-action:hover,.list-group-item-darker.list-group-item-action:focus{color:#101314;background-color:#bcbdbe}.list-group-item-darker.list-group-item-action.active{color:#fff;background-color:#101314;border-color:#101314}.list-group-item-darkest{color:#0e1011;background-color:#d1d1d2}.list-group-item-darkest.list-group-item-action:hover,.list-group-item-darkest.list-group-item-action:focus{color:#0e1011;background-color:#bcbcbd}.list-group-item-darkest.list-group-item-action.active{color:#fff;background-color:#0e1011;border-color:#0e1011}.list-group-item-gray{color:#525557;background-color:#f5f6f8}.list-group-item-gray.list-group-item-action:hover,.list-group-item-gray.list-group-item-action:focus{color:#525557;background-color:#dddddf}.list-group-item-gray.list-group-item-action.active{color:#fff;background-color:#525557;border-color:#525557}.list-group-item-gray-100{color:#636464;background-color:#fefefe}.list-group-item-gray-100.list-group-item-action:hover,.list-group-item-gray-100.list-group-item-action:focus{color:#636464;background-color:#e5e5e5}.list-group-item-gray-100.list-group-item-action.active{color:#fff;background-color:#636464;border-color:#636464}.list-group-item-gray-200{color:#5d5e60;background-color:#fbfbfc}.list-group-item-gray-200.list-group-item-action:hover,.list-group-item-gray-200.list-group-item-action:focus{color:#5d5e60;background-color:#e2e2e3}.list-group-item-gray-200.list-group-item-action.active{color:#fff;background-color:#5d5e60;border-color:#5d5e60}.list-group-item-gray-300{color:#595a5c;background-color:#f8f9fa}.list-group-item-gray-300.list-group-item-action:hover,.list-group-item-gray-300.list-group-item-action:focus{color:#595a5c;background-color:#dfe0e1}.list-group-item-gray-300.list-group-item-action.active{color:#fff;background-color:#595a5c;border-color:#595a5c}.list-group-item-gray-400{color:#525557;background-color:#f5f6f8}.list-group-item-gray-400.list-group-item-action:hover,.list-group-item-gray-400.list-group-item-action:focus{color:#525557;background-color:#dddddf}.list-group-item-gray-400.list-group-item-action.active{color:#fff;background-color:#525557;border-color:#525557}.list-group-item-gray-500{color:#686d71;background-color:#eff0f2}.list-group-item-gray-500.list-group-item-action:hover,.list-group-item-gray-500.list-group-item-action:focus{color:#686d71;background-color:#d7d8da}.list-group-item-gray-500.list-group-item-action.active{color:#fff;background-color:#686d71;border-color:#686d71}.list-group-item-gray-600{color:#41464b;background-color:#e2e3e5}.list-group-item-gray-600.list-group-item-action:hover,.list-group-item-gray-600.list-group-item-action:focus{color:#41464b;background-color:#cbccce}.list-group-item-gray-600.list-group-item-action.active{color:#fff;background-color:#41464b;border-color:#41464b}.list-group-item-gray-700{color:#2c3034;background-color:#dbdcdd}.list-group-item-gray-700.list-group-item-action:hover,.list-group-item-gray-700.list-group-item-action:focus{color:#2c3034;background-color:#c5c6c7}.list-group-item-gray-700.list-group-item-action.active{color:#fff;background-color:#2c3034;border-color:#2c3034}.list-group-item-gray-800{color:#1f2326;background-color:#d6d8d9}.list-group-item-gray-800.list-group-item-action:hover,.list-group-item-gray-800.list-group-item-action:focus{color:#1f2326;background-color:#c1c2c3}.list-group-item-gray-800.list-group-item-action.active{color:#fff;background-color:#1f2326;border-color:#1f2326}.list-group-item-gray-900{color:#141619;background-color:#d3d3d4}.list-group-item-gray-900.list-group-item-action:hover,.list-group-item-gray-900.list-group-item-action:focus{color:#141619;background-color:#bebebf}.list-group-item-gray-900.list-group-item-action.active{color:#fff;background-color:#141619;border-color:#141619}.list-group-item-red-100{color:#635657;background-color:#fef7f8}.list-group-item-red-100.list-group-item-action:hover,.list-group-item-red-100.list-group-item-action:focus{color:#635657;background-color:#e5dedf}.list-group-item-red-100.list-group-item-action.active{color:#fff;background-color:#635657;border-color:#635657}.list-group-item-red-200{color:#604648;background-color:#fceff0}.list-group-item-red-200.list-group-item-action:hover,.list-group-item-red-200.list-group-item-action:focus{color:#604648;background-color:#e3d7d8}.list-group-item-red-200.list-group-item-action.active{color:#fff;background-color:#604648;border-color:#604648}.list-group-item-red-300{color:#8c5056;background-color:#fbe7e9}.list-group-item-red-300.list-group-item-action:hover,.list-group-item-red-300.list-group-item-action:focus{color:#8c5056;background-color:#e2d0d2}.list-group-item-red-300.list-group-item-action.active{color:#fff;background-color:#8c5056;border-color:#8c5056}.list-group-item-red-400{color:#883840;background-color:#f9dfe1}.list-group-item-red-400.list-group-item-action:hover,.list-group-item-red-400.list-group-item-action:focus{color:#883840;background-color:#e0c9cb}.list-group-item-red-400.list-group-item-action.active{color:#fff;background-color:#883840;border-color:#883840}.list-group-item-red-500{color:#842029;background-color:#f8d7da}.list-group-item-red-500.list-group-item-action:hover,.list-group-item-red-500.list-group-item-action:focus{color:#842029;background-color:#dfc2c4}.list-group-item-red-500.list-group-item-action.active{color:#fff;background-color:#842029;border-color:#842029}.list-group-item-red-600{color:#6a1921;background-color:#efd4d7}.list-group-item-red-600.list-group-item-action:hover,.list-group-item-red-600.list-group-item-action:focus{color:#6a1921;background-color:#d7bfc2}.list-group-item-red-600.list-group-item-action.active{color:#fff;background-color:#6a1921;border-color:#6a1921}.list-group-item-red-700{color:#4f1319;background-color:#e6d2d4}.list-group-item-red-700.list-group-item-action:hover,.list-group-item-red-700.list-group-item-action:focus{color:#4f1319;background-color:#cfbdbf}.list-group-item-red-700.list-group-item-action.active{color:#fff;background-color:#4f1319;border-color:#4f1319}.list-group-item-red-800{color:#350d11;background-color:#ded0d2}.list-group-item-red-800.list-group-item-action:hover,.list-group-item-red-800.list-group-item-action:focus{color:#350d11;background-color:#c8bbbd}.list-group-item-red-800.list-group-item-action.active{color:#fff;background-color:#350d11;border-color:#350d11}.list-group-item-red-900{color:#1a0708;background-color:#d5cecf}.list-group-item-red-900.list-group-item-action:hover,.list-group-item-red-900.list-group-item-action:focus{color:#1a0708;background-color:#c0b9ba}.list-group-item-red-900.list-group-item-action.active{color:#fff;background-color:#1a0708;border-color:#1a0708}.list-group-item-yellow-100{color:#666152;background-color:#fffdf5}.list-group-item-yellow-100.list-group-item-action:hover,.list-group-item-yellow-100.list-group-item-action:focus{color:#666152;background-color:#e6e4dd}.list-group-item-yellow-100.list-group-item-action.active{color:#fff;background-color:#666152;border-color:#666152}.list-group-item-yellow-200{color:#665c3e;background-color:#fffaeb}.list-group-item-yellow-200.list-group-item-action:hover,.list-group-item-yellow-200.list-group-item-action:focus{color:#665c3e;background-color:#e6e1d4}.list-group-item-yellow-200.list-group-item-action.active{color:#fff;background-color:#665c3e;border-color:#665c3e}.list-group-item-yellow-300{color:#66572a;background-color:#fff8e1}.list-group-item-yellow-300.list-group-item-action:hover,.list-group-item-yellow-300.list-group-item-action:focus{color:#66572a;background-color:#e6dfcb}.list-group-item-yellow-300.list-group-item-action.active{color:#fff;background-color:#66572a;border-color:#66572a}.list-group-item-yellow-400{color:#665217;background-color:#fff5d7}.list-group-item-yellow-400.list-group-item-action:hover,.list-group-item-yellow-400.list-group-item-action:focus{color:#665217;background-color:#e6ddc2}.list-group-item-yellow-400.list-group-item-action.active{color:#fff;background-color:#665217;border-color:#665217}.list-group-item-yellow-500{color:#664d03;background-color:#fff3cd}.list-group-item-yellow-500.list-group-item-action:hover,.list-group-item-yellow-500.list-group-item-action:focus{color:#664d03;background-color:#e6dbb9}.list-group-item-yellow-500.list-group-item-action.active{color:#fff;background-color:#664d03;border-color:#664d03}.list-group-item-yellow-600{color:#7a5c04;background-color:#f5ebcd}.list-group-item-yellow-600.list-group-item-action:hover,.list-group-item-yellow-600.list-group-item-action:focus{color:#7a5c04;background-color:#ddd4b9}.list-group-item-yellow-600.list-group-item-action.active{color:#fff;background-color:#7a5c04;border-color:#7a5c04}.list-group-item-yellow-700{color:#5c4602;background-color:#ebe3cd}.list-group-item-yellow-700.list-group-item-action:hover,.list-group-item-yellow-700.list-group-item-action:focus{color:#5c4602;background-color:#d4ccb9}.list-group-item-yellow-700.list-group-item-action.active{color:#fff;background-color:#5c4602;border-color:#5c4602}.list-group-item-yellow-800{color:#3d2e02;background-color:#e0dbcd}.list-group-item-yellow-800.list-group-item-action:hover,.list-group-item-yellow-800.list-group-item-action:focus{color:#3d2e02;background-color:#cac5b9}.list-group-item-yellow-800.list-group-item-action.active{color:#fff;background-color:#3d2e02;border-color:#3d2e02}.list-group-item-yellow-900{color:#1f1701;background-color:#d6d4cc}.list-group-item-yellow-900.list-group-item-action:hover,.list-group-item-yellow-900.list-group-item-action:focus{color:#1f1701;background-color:#c1bfb8}.list-group-item-yellow-900.list-group-item-action.active{color:#fff;background-color:#1f1701;border-color:#1f1701}.list-group-item-green-100{color:#545c58;background-color:#f6faf8}.list-group-item-green-100.list-group-item-action:hover,.list-group-item-green-100.list-group-item-action:focus{color:#545c58;background-color:#dde1df}.list-group-item-green-100.list-group-item-action.active{color:#fff;background-color:#545c58;border-color:#545c58}.list-group-item-green-200{color:#41534b;background-color:#edf5f1}.list-group-item-green-200.list-group-item-action:hover,.list-group-item-green-200.list-group-item-action:focus{color:#41534b;background-color:#d5ddd9}.list-group-item-green-200.list-group-item-action.active{color:#fff;background-color:#41534b;border-color:#41534b}.list-group-item-green-300{color:#466e5b;background-color:#e3f1ea}.list-group-item-green-300.list-group-item-action:hover,.list-group-item-green-300.list-group-item-action:focus{color:#466e5b;background-color:#ccd9d3}.list-group-item-green-300.list-group-item-action.active{color:#fff;background-color:#466e5b;border-color:#466e5b}.list-group-item-green-400{color:#2b5f47;background-color:#daece4}.list-group-item-green-400.list-group-item-action:hover,.list-group-item-green-400.list-group-item-action:focus{color:#2b5f47;background-color:#c4d4cd}.list-group-item-green-400.list-group-item-action.active{color:#fff;background-color:#2b5f47;border-color:#2b5f47}.list-group-item-green-500{color:#0f5132;background-color:#d1e7dd}.list-group-item-green-500.list-group-item-action:hover,.list-group-item-green-500.list-group-item-action:focus{color:#0f5132;background-color:#bcd0c7}.list-group-item-green-500.list-group-item-action.active{color:#fff;background-color:#0f5132;border-color:#0f5132}.list-group-item-green-600{color:#0c4128;background-color:#d0e2d9}.list-group-item-green-600.list-group-item-action:hover,.list-group-item-green-600.list-group-item-action:focus{color:#0c4128;background-color:#bbcbc3}.list-group-item-green-600.list-group-item-action.active{color:#fff;background-color:#0c4128;border-color:#0c4128}.list-group-item-green-700{color:#09311e;background-color:#cfdcd6}.list-group-item-green-700.list-group-item-action:hover,.list-group-item-green-700.list-group-item-action:focus{color:#09311e;background-color:#bac6c1}.list-group-item-green-700.list-group-item-action.active{color:#fff;background-color:#09311e;border-color:#09311e}.list-group-item-green-800{color:#062014;background-color:#ced7d3}.list-group-item-green-800.list-group-item-action:hover,.list-group-item-green-800.list-group-item-action:focus{color:#062014;background-color:#b9c2be}.list-group-item-green-800.list-group-item-action.active{color:#fff;background-color:#062014;border-color:#062014}.list-group-item-green-900{color:#03100a;background-color:#cdd1cf}.list-group-item-green-900.list-group-item-action:hover,.list-group-item-green-900.list-group-item-action:focus{color:#03100a;background-color:#b9bcba}.list-group-item-green-900.list-group-item-action.active{color:#fff;background-color:#03100a;border-color:#03100a}.list-group-item-blue-100{color:#535a66;background-color:#f5f9ff}.list-group-item-blue-100.list-group-item-action:hover,.list-group-item-blue-100.list-group-item-action:focus{color:#535a66;background-color:#dde0e6}.list-group-item-blue-100.list-group-item-action.active{color:#fff;background-color:#535a66;border-color:#535a66}.list-group-item-blue-200{color:#3f4f66;background-color:#ecf3ff}.list-group-item-blue-200.list-group-item-action:hover,.list-group-item-blue-200.list-group-item-action:focus{color:#3f4f66;background-color:#d4dbe6}.list-group-item-blue-200.list-group-item-action.active{color:#fff;background-color:#3f4f66;border-color:#3f4f66}.list-group-item-blue-300{color:#426598;background-color:#e2eeff}.list-group-item-blue-300.list-group-item-action:hover,.list-group-item-blue-300.list-group-item-action:focus{color:#426598;background-color:#cbd6e6}.list-group-item-blue-300.list-group-item-action.active{color:#fff;background-color:#426598;border-color:#426598}.list-group-item-blue-400{color:#255398;background-color:#d8e8ff}.list-group-item-blue-400.list-group-item-action:hover,.list-group-item-blue-400.list-group-item-action:focus{color:#255398;background-color:#c2d1e6}.list-group-item-blue-400.list-group-item-action.active{color:#fff;background-color:#255398;border-color:#255398}.list-group-item-blue-500{color:#084298;background-color:#cfe2ff}.list-group-item-blue-500.list-group-item-action:hover,.list-group-item-blue-500.list-group-item-action:focus{color:#084298;background-color:#bacbe6}.list-group-item-blue-500.list-group-item-action.active{color:#fff;background-color:#084298;border-color:#084298}.list-group-item-blue-600{color:#063579;background-color:#cedef4}.list-group-item-blue-600.list-group-item-action:hover,.list-group-item-blue-600.list-group-item-action:focus{color:#063579;background-color:#b9c8dc}.list-group-item-blue-600.list-group-item-action.active{color:#fff;background-color:#063579;border-color:#063579}.list-group-item-blue-700{color:#05285b;background-color:#ced9ea}.list-group-item-blue-700.list-group-item-action:hover,.list-group-item-blue-700.list-group-item-action:focus{color:#05285b;background-color:#b9c3d3}.list-group-item-blue-700.list-group-item-action.active{color:#fff;background-color:#05285b;border-color:#05285b}.list-group-item-blue-800{color:#031a3d;background-color:#cdd5e0}.list-group-item-blue-800.list-group-item-action:hover,.list-group-item-blue-800.list-group-item-action:focus{color:#031a3d;background-color:#b9c0ca}.list-group-item-blue-800.list-group-item-action.active{color:#fff;background-color:#031a3d;border-color:#031a3d}.list-group-item-blue-900{color:#020d1f;background-color:#cdd0d6}.list-group-item-blue-900.list-group-item-action:hover,.list-group-item-blue-900.list-group-item-action:focus{color:#020d1f;background-color:#b9bbc1}.list-group-item-blue-900.list-group-item-action.active{color:#fff;background-color:#020d1f;border-color:#020d1f}.list-group-item-cyan-100{color:#536265;background-color:#f5fdfe}.list-group-item-cyan-100.list-group-item-action:hover,.list-group-item-cyan-100.list-group-item-action:focus{color:#536265;background-color:#dde4e5}.list-group-item-cyan-100.list-group-item-action.active{color:#fff;background-color:#536265;border-color:#536265}.list-group-item-cyan-200{color:#3f5e64;background-color:#ecfbfe}.list-group-item-cyan-200.list-group-item-action:hover,.list-group-item-cyan-200.list-group-item-action:focus{color:#3f5e64;background-color:#d4e2e5}.list-group-item-cyan-200.list-group-item-action.active{color:#fff;background-color:#3f5e64;border-color:#3f5e64}.list-group-item-cyan-300{color:#2c5962;background-color:#e2f9fd}.list-group-item-cyan-300.list-group-item-action:hover,.list-group-item-cyan-300.list-group-item-action:focus{color:#2c5962;background-color:#cbe0e4}.list-group-item-cyan-300.list-group-item-action.active{color:#fff;background-color:#2c5962;border-color:#2c5962}.list-group-item-cyan-400{color:#185561;background-color:#d8f7fd}.list-group-item-cyan-400.list-group-item-action:hover,.list-group-item-cyan-400.list-group-item-action:focus{color:#185561;background-color:#c2dee4}.list-group-item-cyan-400.list-group-item-action.active{color:#fff;background-color:#185561;border-color:#185561}.list-group-item-cyan-500{color:#055160;background-color:#cff4fc}.list-group-item-cyan-500.list-group-item-action:hover,.list-group-item-cyan-500.list-group-item-action:focus{color:#055160;background-color:#badce3}.list-group-item-cyan-500.list-group-item-action.active{color:#fff;background-color:#055160;border-color:#055160}.list-group-item-cyan-600{color:#066173;background-color:#ceecf2}.list-group-item-cyan-600.list-group-item-action:hover,.list-group-item-cyan-600.list-group-item-action:focus{color:#066173;background-color:#b9d4da}.list-group-item-cyan-600.list-group-item-action.active{color:#fff;background-color:#066173;border-color:#066173}.list-group-item-cyan-700{color:#054956;background-color:#cee4e9}.list-group-item-cyan-700.list-group-item-action:hover,.list-group-item-cyan-700.list-group-item-action:focus{color:#054956;background-color:#b9cdd2}.list-group-item-cyan-700.list-group-item-action.active{color:#fff;background-color:#054956;border-color:#054956}.list-group-item-cyan-800{color:#03313a;background-color:#cddcdf}.list-group-item-cyan-800.list-group-item-action:hover,.list-group-item-cyan-800.list-group-item-action:focus{color:#03313a;background-color:#b9c6c9}.list-group-item-cyan-800.list-group-item-action.active{color:#fff;background-color:#03313a;border-color:#03313a}.list-group-item-cyan-900{color:#02181d;background-color:#cdd4d6}.list-group-item-cyan-900.list-group-item-action:hover,.list-group-item-cyan-900.list-group-item-action:focus{color:#02181d;background-color:#b9bfc1}.list-group-item-cyan-900.list-group-item-action.active{color:#fff;background-color:#02181d;border-color:#02181d}.list-group-item-indigo-100{color:#5a5365;background-color:#f9f5fe}.list-group-item-indigo-100.list-group-item-action:hover,.list-group-item-indigo-100.list-group-item-action:focus{color:#5a5365;background-color:#e0dde5}.list-group-item-indigo-100.list-group-item-action.active{color:#fff;background-color:#5a5365;border-color:#5a5365}.list-group-item-indigo-200{color:#745f96;background-color:#f3ecfe}.list-group-item-indigo-200.list-group-item-action:hover,.list-group-item-indigo-200.list-group-item-action:focus{color:#745f96;background-color:#dbd4e5}.list-group-item-indigo-200.list-group-item-action.active{color:#fff;background-color:#745f96;border-color:#745f96}.list-group-item-indigo-300{color:#624394;background-color:#ede2fd}.list-group-item-indigo-300.list-group-item-action:hover,.list-group-item-indigo-300.list-group-item-action:focus{color:#624394;background-color:#d5cbe4}.list-group-item-indigo-300.list-group-item-action.active{color:#fff;background-color:#624394;border-color:#624394}.list-group-item-indigo-400{color:#502693;background-color:#e7d9fd}.list-group-item-indigo-400.list-group-item-action:hover,.list-group-item-indigo-400.list-group-item-action:focus{color:#502693;background-color:#d0c3e4}.list-group-item-indigo-400.list-group-item-action.active{color:#fff;background-color:#502693;border-color:#502693}.list-group-item-indigo-500{color:#3d0a91;background-color:#e0cffc}.list-group-item-indigo-500.list-group-item-action:hover,.list-group-item-indigo-500.list-group-item-action:focus{color:#3d0a91;background-color:#cabae3}.list-group-item-indigo-500.list-group-item-action.active{color:#fff;background-color:#3d0a91;border-color:#3d0a91}.list-group-item-indigo-600{color:#310874;background-color:#dccff3}.list-group-item-indigo-600.list-group-item-action:hover,.list-group-item-indigo-600.list-group-item-action:focus{color:#310874;background-color:#c6badb}.list-group-item-indigo-600.list-group-item-action.active{color:#fff;background-color:#310874;border-color:#310874}.list-group-item-indigo-700{color:#250657;background-color:#d8cee9}.list-group-item-indigo-700.list-group-item-action:hover,.list-group-item-indigo-700.list-group-item-action:focus{color:#250657;background-color:#c2b9d2}.list-group-item-indigo-700.list-group-item-action.active{color:#fff;background-color:#250657;border-color:#250657}.list-group-item-indigo-800{color:#19043a;background-color:#d4cddf}.list-group-item-indigo-800.list-group-item-action:hover,.list-group-item-indigo-800.list-group-item-action:focus{color:#19043a;background-color:#bfb9c9}.list-group-item-indigo-800.list-group-item-action.active{color:#fff;background-color:#19043a;border-color:#19043a}.list-group-item-indigo-900{color:#0c021d;background-color:#d0cdd6}.list-group-item-indigo-900.list-group-item-action:hover,.list-group-item-indigo-900.list-group-item-action:focus{color:#0c021d;background-color:#bbb9c1}.list-group-item-indigo-900.list-group-item-action.active{color:#fff;background-color:#0c021d;border-color:#0c021d}.list-group-item-purple-100{color:#5a5761;background-color:#f9f7fd}.list-group-item-purple-100.list-group-item-action:hover,.list-group-item-purple-100.list-group-item-action:focus{color:#5a5761;background-color:#e0dee4}.list-group-item-purple-100.list-group-item-action.active{color:#fff;background-color:#5a5761;border-color:#5a5761}.list-group-item-purple-200{color:#4f485c;background-color:#f3f0fa}.list-group-item-purple-200.list-group-item-action:hover,.list-group-item-purple-200.list-group-item-action:focus{color:#4f485c;background-color:#dbd8e1}.list-group-item-purple-200.list-group-item-action.active{color:#fff;background-color:#4f485c;border-color:#4f485c}.list-group-item-purple-300{color:#655583;background-color:#eee8f8}.list-group-item-purple-300.list-group-item-action:hover,.list-group-item-purple-300.list-group-item-action:focus{color:#655583;background-color:#d6d1df}.list-group-item-purple-300.list-group-item-action.active{color:#fff;background-color:#655583;border-color:#655583}.list-group-item-purple-400{color:#543e7b;background-color:#e8e1f5}.list-group-item-purple-400.list-group-item-action:hover,.list-group-item-purple-400.list-group-item-action:focus{color:#543e7b;background-color:#d1cbdd}.list-group-item-purple-400.list-group-item-action.active{color:#fff;background-color:#543e7b;border-color:#543e7b}.list-group-item-purple-500{color:#432874;background-color:#e2d9f3}.list-group-item-purple-500.list-group-item-action:hover,.list-group-item-purple-500.list-group-item-action:focus{color:#432874;background-color:#cbc3db}.list-group-item-purple-500.list-group-item-action.active{color:#fff;background-color:#432874;border-color:#432874}.list-group-item-purple-600{color:#35205c;background-color:#ded7eb}.list-group-item-purple-600.list-group-item-action:hover,.list-group-item-purple-600.list-group-item-action:focus{color:#35205c;background-color:#c8c2d4}.list-group-item-purple-600.list-group-item-action.active{color:#fff;background-color:#35205c;border-color:#35205c}.list-group-item-purple-700{color:#281846;background-color:#d9d4e3}.list-group-item-purple-700.list-group-item-action:hover,.list-group-item-purple-700.list-group-item-action:focus{color:#281846;background-color:#c3bfcc}.list-group-item-purple-700.list-group-item-action.active{color:#fff;background-color:#281846;border-color:#281846}.list-group-item-purple-800{color:#1a102e;background-color:#d5d1db}.list-group-item-purple-800.list-group-item-action:hover,.list-group-item-purple-800.list-group-item-action:focus{color:#1a102e;background-color:#c0bcc5}.list-group-item-purple-800.list-group-item-action.active{color:#fff;background-color:#1a102e;border-color:#1a102e}.list-group-item-purple-900{color:#0d0817;background-color:#d0cfd4}.list-group-item-purple-900.list-group-item-action:hover,.list-group-item-purple-900.list-group-item-action:focus{color:#0d0817;background-color:#bbbabf}.list-group-item-purple-900.list-group-item-action.active{color:#fff;background-color:#0d0817;border-color:#0d0817}.list-group-item-pink-100{color:#63565c;background-color:#fdf7fa}.list-group-item-pink-100.list-group-item-action:hover,.list-group-item-pink-100.list-group-item-action:focus{color:#63565c;background-color:#e4dee1}.list-group-item-pink-100.list-group-item-action.active{color:#fff;background-color:#63565c;border-color:#63565c}.list-group-item-pink-200{color:#604552;background-color:#fceff5}.list-group-item-pink-200.list-group-item-action:hover,.list-group-item-pink-200.list-group-item-action:focus{color:#604552;background-color:#e3d7dd}.list-group-item-pink-200.list-group-item-action.active{color:#fff;background-color:#604552;border-color:#604552}.list-group-item-pink-300{color:#8a506d;background-color:#fae7f0}.list-group-item-pink-300.list-group-item-action:hover,.list-group-item-pink-300.list-group-item-action:focus{color:#8a506d;background-color:#e1d0d8}.list-group-item-pink-300.list-group-item-action.active{color:#fff;background-color:#8a506d;border-color:#8a506d}.list-group-item-pink-400{color:#85375e;background-color:#f8deeb}.list-group-item-pink-400.list-group-item-action:hover,.list-group-item-pink-400.list-group-item-action:focus{color:#85375e;background-color:#dfc8d4}.list-group-item-pink-400.list-group-item-action.active{color:#fff;background-color:#85375e;border-color:#85375e}.list-group-item-pink-500{color:#801f4f;background-color:#f7d6e6}.list-group-item-pink-500.list-group-item-action:hover,.list-group-item-pink-500.list-group-item-action:focus{color:#801f4f;background-color:#dec1cf}.list-group-item-pink-500.list-group-item-action.active{color:#fff;background-color:#801f4f;border-color:#801f4f}.list-group-item-pink-600{color:#671940;background-color:#eed4e1}.list-group-item-pink-600.list-group-item-action:hover,.list-group-item-pink-600.list-group-item-action:focus{color:#671940;background-color:#d6bfcb}.list-group-item-pink-600.list-group-item-action.active{color:#fff;background-color:#671940;border-color:#671940}.list-group-item-pink-700{color:#4d132f;background-color:#e6d2dc}.list-group-item-pink-700.list-group-item-action:hover,.list-group-item-pink-700.list-group-item-action:focus{color:#4d132f;background-color:#cfbdc6}.list-group-item-pink-700.list-group-item-action.active{color:#fff;background-color:#4d132f;border-color:#4d132f}.list-group-item-pink-800{color:#340c20;background-color:#ddd0d7}.list-group-item-pink-800.list-group-item-action:hover,.list-group-item-pink-800.list-group-item-action:focus{color:#340c20;background-color:#c7bbc2}.list-group-item-pink-800.list-group-item-action.active{color:#fff;background-color:#340c20;border-color:#340c20}.list-group-item-pink-900{color:#1a0610;background-color:#d5ced1}.list-group-item-pink-900.list-group-item-action:hover,.list-group-item-pink-900.list-group-item-action:focus{color:#1a0610;background-color:#c0b9bc}.list-group-item-pink-900.list-group-item-action.active{color:#fff;background-color:#1a0610;border-color:#1a0610}.btn-close{box-sizing:content-box;width:1em;height:1em;padding:.25em;color:#000;background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat;border:0;border-radius:.375rem;opacity:.5}.btn-close:hover{color:#000;text-decoration:none;opacity:.75}.btn-close:focus{outline:0;box-shadow:0 0 0 .25rem #0d6efd40;opacity:1}.btn-close:disabled,.btn-close.disabled{pointer-events:none;user-select:none;opacity:.25}.btn-close-white{filter:invert(1) grayscale(100%) brightness(200%)}.toast{width:350px;max-width:100%;font-size:.875rem;pointer-events:auto;background-color:#ffffffd9;background-clip:padding-box;border:1px solid rgba(0,0,0,.1);box-shadow:0 .5rem 1rem #00000026;border-radius:.375rem}.toast:not(.showing):not(.show){opacity:0}.toast.hide{display:none}.toast-container{width:max-content;max-width:100%;pointer-events:none}.toast-container>:not(:last-child){margin-bottom:.75rem}.toast-header{display:flex;align-items:center;padding:.5rem .75rem;color:#6c757d;background-color:#ffffffd9;background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,.05);border-top-left-radius:calc(.375rem - 1px);border-top-right-radius:calc(.375rem - 1px)}.toast-header .btn-close{margin-right:-.375rem;margin-left:.75rem}.toast-body{padding:.75rem;word-wrap:break-word}.modal{position:fixed;top:0;left:0;z-index:1060;display:none;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;outline:0}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:transform .3s ease-out;transform:translateY(-50px)}@media (prefers-reduced-motion: reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{height:calc(100% - 1rem)}.modal-dialog-scrollable .modal-content{max-height:100%;overflow:hidden}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - 1rem)}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.75rem;outline:0}.modal-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:flex;flex-shrink:0;align-items:center;justify-content:space-between;padding:1rem;border-bottom:1px solid #dee2e6;border-top-left-radius:calc(.75rem - 1px);border-top-right-radius:calc(.75rem - 1px)}.modal-header .btn-close{padding:.5rem;margin:-.5rem -.5rem -.5rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;flex:1 1 auto;padding:1rem}.modal-footer{display:flex;flex-wrap:wrap;flex-shrink:0;align-items:center;justify-content:flex-end;padding:.75rem;border-top:1px solid #dee2e6;border-bottom-right-radius:calc(.75rem - 1px);border-bottom-left-radius:calc(.75rem - 1px)}.modal-footer>*{margin:.25rem}@media (min-width: 576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-scrollable{height:calc(100% - 3.5rem)}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-sm{max-width:300px}}@media (min-width: 992px){.modal-lg,.modal-xl{max-width:800px}}@media (min-width: 1200px){.modal-xl{max-width:1140px}}.modal-fullscreen{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen .modal-header{border-radius:0}.modal-fullscreen .modal-body{overflow-y:auto}.modal-fullscreen .modal-footer{border-radius:0}@media (max-width: 575.98px){.modal-fullscreen-sm-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-sm-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-sm-down .modal-header{border-radius:0}.modal-fullscreen-sm-down .modal-body{overflow-y:auto}.modal-fullscreen-sm-down .modal-footer{border-radius:0}}@media (max-width: 767.98px){.modal-fullscreen-md-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-md-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-md-down .modal-header{border-radius:0}.modal-fullscreen-md-down .modal-body{overflow-y:auto}.modal-fullscreen-md-down .modal-footer{border-radius:0}}@media (max-width: 991.98px){.modal-fullscreen-lg-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-lg-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-lg-down .modal-header{border-radius:0}.modal-fullscreen-lg-down .modal-body{overflow-y:auto}.modal-fullscreen-lg-down .modal-footer{border-radius:0}}@media (max-width: 1199.98px){.modal-fullscreen-xl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xl-down .modal-header{border-radius:0}.modal-fullscreen-xl-down .modal-body{overflow-y:auto}.modal-fullscreen-xl-down .modal-footer{border-radius:0}}@media (max-width: 1399.98px){.modal-fullscreen-xxl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xxl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xxl-down .modal-header{border-radius:0}.modal-fullscreen-xxl-down .modal-body{overflow-y:auto}.modal-fullscreen-xxl-down .modal-footer{border-radius:0}}.tooltip{position:absolute;z-index:1080;display:block;margin:0;font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .tooltip-arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .tooltip-arrow:before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-top,.bs-tooltip-auto[data-popper-placement^=top]{padding:.4rem 0}.bs-tooltip-top .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow{bottom:0}.bs-tooltip-top .tooltip-arrow:before,.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow:before{top:-1px;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-end,.bs-tooltip-auto[data-popper-placement^=right]{padding:0 .4rem}.bs-tooltip-end .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-end .tooltip-arrow:before,.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow:before{right:-1px;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-bottom,.bs-tooltip-auto[data-popper-placement^=bottom]{padding:.4rem 0}.bs-tooltip-bottom .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow{top:0}.bs-tooltip-bottom .tooltip-arrow:before,.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow:before{bottom:-1px;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-start,.bs-tooltip-auto[data-popper-placement^=left]{padding:0 .4rem}.bs-tooltip-start .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-start .tooltip-arrow:before,.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow:before{left:-1px;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.375rem}.popover{position:absolute;top:0;left:0;z-index:1070;display:block;max-width:276px;font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.75rem}.popover .popover-arrow{position:absolute;display:block;width:1rem;height:.5rem}.popover .popover-arrow:before,.popover .popover-arrow:after{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-top>.popover-arrow,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow{bottom:calc(-.5rem - 1px)}.bs-popover-top>.popover-arrow:before,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow:before{bottom:0;border-width:.5rem .5rem 0;border-top-color:#00000040}.bs-popover-top>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow:after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-end>.popover-arrow,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow{left:calc(-.5rem - 1px);width:.5rem;height:1rem}.bs-popover-end>.popover-arrow:before,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow:before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:#00000040}.bs-popover-end>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow:after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-bottom>.popover-arrow,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow{top:calc(-.5rem - 1px)}.bs-popover-bottom>.popover-arrow:before,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow:before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:#00000040}.bs-popover-bottom>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow:after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#fff}.bs-popover-bottom .popover-header:before,.bs-popover-auto[data-popper-placement^=bottom] .popover-header:before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f0f0f0}.bs-popover-start>.popover-arrow,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow{right:calc(-.5rem - 1px);width:.5rem;height:1rem}.bs-popover-start>.popover-arrow:before,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow:before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:#00000040}.bs-popover-start>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow:after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem 1rem;margin-bottom:0;font-size:1rem;background-color:#f0f0f0;border-bottom:1px solid rgba(0,0,0,.2);border-top-left-radius:calc(.75rem - 1px);border-top-right-radius:calc(.75rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:1rem;color:#212529}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner:after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;backface-visibility:hidden;transition:transform .6s ease-in-out}@media (prefers-reduced-motion: reduce){.carousel-item{transition:none}}.carousel-item.active,.carousel-item-next,.carousel-item-prev{display:block}.carousel-item-next:not(.carousel-item-start),.active.carousel-item-end{transform:translate(100%)}.carousel-item-prev:not(.carousel-item-end),.active.carousel-item-start{transform:translate(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item.active,.carousel-fade .carousel-item-next.carousel-item-start,.carousel-fade .carousel-item-prev.carousel-item-end{z-index:1;opacity:1}.carousel-fade .active.carousel-item-start,.carousel-fade .active.carousel-item-end{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion: reduce){.carousel-fade .active.carousel-item-start,.carousel-fade .active.carousel-item-end{transition:none}}.carousel-control-prev,.carousel-control-next{position:absolute;top:0;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:none;border:0;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion: reduce){.carousel-control-prev,.carousel-control-next{transition:none}}.carousel-control-prev:hover,.carousel-control-prev:focus,.carousel-control-next:hover,.carousel-control-next:focus{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-prev-icon,.carousel-control-next-icon{display:inline-block;width:2rem;height:2rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:2;display:flex;justify-content:center;padding:0;margin-right:15%;margin-bottom:1rem;margin-left:15%;list-style:none}.carousel-indicators [data-bs-target]{box-sizing:content-box;flex:0 1 auto;width:30px;height:3px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border:0;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion: reduce){.carousel-indicators [data-bs-target]{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:1.25rem;left:15%;padding-top:1.25rem;padding-bottom:1.25rem;color:#fff;text-align:center}.carousel-dark .carousel-control-prev-icon,.carousel-dark .carousel-control-next-icon{filter:invert(1) grayscale(100)}.carousel-dark .carousel-indicators [data-bs-target]{background-color:#000}.carousel-dark .carousel-caption{color:#000}@keyframes spinner-border{to{transform:rotate(360deg)}}.spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:-.125em;border:.25em solid currentColor;border-right-color:transparent;border-radius:50%;animation:.75s linear infinite spinner-border}.spinner-border-sm{width:1rem;height:1rem;border-width:.2em}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:-.125em;background-color:currentColor;border-radius:50%;opacity:0;animation:.75s linear infinite spinner-grow}.spinner-grow-sm{width:1rem;height:1rem}@media (prefers-reduced-motion: reduce){.spinner-border,.spinner-grow{animation-duration:1.5s}}.clearfix:after{display:block;clear:both;content:""}.link-primary{color:#337ab7}.link-primary:hover,.link-primary:focus{color:#296292}.link-secondary{color:#6c757d}.link-secondary:hover,.link-secondary:focus{color:#565e64}.link-success{color:#198754}.link-success:hover,.link-success:focus{color:#146c43}.link-info{color:#0dcaf0}.link-info:hover,.link-info:focus{color:#3dd5f3}.link-warning{color:#ffc107}.link-warning:hover,.link-warning:focus{color:#ffcd39}.link-danger{color:#dc3545}.link-danger:hover,.link-danger:focus{color:#b02a37}.link-light{color:#f8f9fa}.link-light:hover,.link-light:focus{color:#f9fafb}.link-dark{color:#212529}.link-dark:hover,.link-dark:focus{color:#1a1e21}.link-red{color:#dc3545}.link-red:hover,.link-red:focus{color:#b02a37}.link-yellow{color:#ffc107}.link-yellow:hover,.link-yellow:focus{color:#ffcd39}.link-green{color:#198754}.link-green:hover,.link-green:focus{color:#146c43}.link-blue{color:#0d6efd}.link-blue:hover,.link-blue:focus{color:#0a58ca}.link-cyan{color:#0dcaf0}.link-cyan:hover,.link-cyan:focus{color:#3dd5f3}.link-indigo{color:#6610f2}.link-indigo:hover,.link-indigo:focus{color:#520dc2}.link-purple{color:#6f42c1}.link-purple:hover,.link-purple:focus{color:#59359a}.link-pink{color:#d63384}.link-pink:hover,.link-pink:focus{color:#ab296a}.link-darker{color:#1b1f22}.link-darker:hover,.link-darker:focus{color:#16191b}.link-darkest{color:#171b1d}.link-darkest:hover,.link-darkest:focus{color:#121617}.link-gray{color:#ced4da}.link-gray:hover,.link-gray:focus{color:#d8dde1}.link-gray-100{color:#f8f9fa}.link-gray-100:hover,.link-gray-100:focus{color:#f9fafb}.link-gray-200{color:#e9ecef}.link-gray-200:hover,.link-gray-200:focus{color:#edf0f2}.link-gray-300{color:#dee2e6}.link-gray-300:hover,.link-gray-300:focus{color:#e5e8eb}.link-gray-400{color:#ced4da}.link-gray-400:hover,.link-gray-400:focus{color:#d8dde1}.link-gray-500{color:#adb5bd}.link-gray-500:hover,.link-gray-500:focus{color:#bdc4ca}.link-gray-600{color:#6c757d}.link-gray-600:hover,.link-gray-600:focus{color:#565e64}.link-gray-700{color:#495057}.link-gray-700:hover,.link-gray-700:focus{color:#3a4046}.link-gray-800{color:#343a40}.link-gray-800:hover,.link-gray-800:focus{color:#2a2e33}.link-gray-900{color:#212529}.link-gray-900:hover,.link-gray-900:focus{color:#1a1e21}.link-red-100{color:#f8d7da}.link-red-100:hover,.link-red-100:focus{color:#f9dfe1}.link-red-200{color:#f1aeb5}.link-red-200:hover,.link-red-200:focus{color:#f4bec4}.link-red-300{color:#ea868f}.link-red-300:hover,.link-red-300:focus{color:#ee9ea5}.link-red-400{color:#e35d6a}.link-red-400:hover,.link-red-400:focus{color:#e97d88}.link-red-500{color:#dc3545}.link-red-500:hover,.link-red-500:focus{color:#b02a37}.link-red-600{color:#b02a37}.link-red-600:hover,.link-red-600:focus{color:#8d222c}.link-red-700{color:#842029}.link-red-700:hover,.link-red-700:focus{color:#6a1a21}.link-red-800{color:#58151c}.link-red-800:hover,.link-red-800:focus{color:#461116}.link-red-900{color:#2c0b0e}.link-red-900:hover,.link-red-900:focus{color:#23090b}.link-yellow-100{color:#fff3cd}.link-yellow-100:hover,.link-yellow-100:focus{color:#fff5d7}.link-yellow-200{color:#ffe69c}.link-yellow-200:hover,.link-yellow-200:focus{color:#ffebb0}.link-yellow-300{color:#ffda6a}.link-yellow-300:hover,.link-yellow-300:focus{color:#ffe188}.link-yellow-400{color:#ffcd39}.link-yellow-400:hover,.link-yellow-400:focus{color:#ffd761}.link-yellow-500{color:#ffc107}.link-yellow-500:hover,.link-yellow-500:focus{color:#ffcd39}.link-yellow-600{color:#cc9a06}.link-yellow-600:hover,.link-yellow-600:focus{color:#d6ae38}.link-yellow-700{color:#997404}.link-yellow-700:hover,.link-yellow-700:focus{color:#ad9036}.link-yellow-800{color:#664d03}.link-yellow-800:hover,.link-yellow-800:focus{color:#523e02}.link-yellow-900{color:#332701}.link-yellow-900:hover,.link-yellow-900:focus{color:#291f01}.link-green-100{color:#d1e7dd}.link-green-100:hover,.link-green-100:focus{color:#daece4}.link-green-200{color:#a3cfbb}.link-green-200:hover,.link-green-200:focus{color:#b5d9c9}.link-green-300{color:#75b798}.link-green-300:hover,.link-green-300:focus{color:#91c5ad}.link-green-400{color:#479f76}.link-green-400:hover,.link-green-400:focus{color:#6cb291}.link-green-500{color:#198754}.link-green-500:hover,.link-green-500:focus{color:#146c43}.link-green-600{color:#146c43}.link-green-600:hover,.link-green-600:focus{color:#105636}.link-green-700{color:#0f5132}.link-green-700:hover,.link-green-700:focus{color:#0c4128}.link-green-800{color:#0a3622}.link-green-800:hover,.link-green-800:focus{color:#082b1b}.link-green-900{color:#051b11}.link-green-900:hover,.link-green-900:focus{color:#04160e}.link-blue-100{color:#cfe2ff}.link-blue-100:hover,.link-blue-100:focus{color:#d9e8ff}.link-blue-200{color:#9ec5fe}.link-blue-200:hover,.link-blue-200:focus{color:#b1d1fe}.link-blue-300{color:#6ea8fe}.link-blue-300:hover,.link-blue-300:focus{color:#8bb9fe}.link-blue-400{color:#3d8bfd}.link-blue-400:hover,.link-blue-400:focus{color:#64a2fd}.link-blue-500{color:#0d6efd}.link-blue-500:hover,.link-blue-500:focus{color:#0a58ca}.link-blue-600{color:#0a58ca}.link-blue-600:hover,.link-blue-600:focus{color:#0846a2}.link-blue-700{color:#084298}.link-blue-700:hover,.link-blue-700:focus{color:#06357a}.link-blue-800{color:#052c65}.link-blue-800:hover,.link-blue-800:focus{color:#042351}.link-blue-900{color:#031633}.link-blue-900:hover,.link-blue-900:focus{color:#021229}.link-cyan-100{color:#cff4fc}.link-cyan-100:hover,.link-cyan-100:focus{color:#d9f6fd}.link-cyan-200{color:#9eeaf9}.link-cyan-200:hover,.link-cyan-200:focus{color:#b1eefa}.link-cyan-300{color:#6edff6}.link-cyan-300:hover,.link-cyan-300:focus{color:#8be5f8}.link-cyan-400{color:#3dd5f3}.link-cyan-400:hover,.link-cyan-400:focus{color:#64ddf5}.link-cyan-500{color:#0dcaf0}.link-cyan-500:hover,.link-cyan-500:focus{color:#3dd5f3}.link-cyan-600{color:#0aa2c0}.link-cyan-600:hover,.link-cyan-600:focus{color:#3bb5cd}.link-cyan-700{color:#087990}.link-cyan-700:hover,.link-cyan-700:focus{color:#066173}.link-cyan-800{color:#055160}.link-cyan-800:hover,.link-cyan-800:focus{color:#04414d}.link-cyan-900{color:#032830}.link-cyan-900:hover,.link-cyan-900:focus{color:#022026}.link-indigo-100{color:#e0cffc}.link-indigo-100:hover,.link-indigo-100:focus{color:#e6d9fd}.link-indigo-200{color:#c29ffa}.link-indigo-200:hover,.link-indigo-200:focus{color:#ceb2fb}.link-indigo-300{color:#a370f7}.link-indigo-300:hover,.link-indigo-300:focus{color:#b58df9}.link-indigo-400{color:#8540f5}.link-indigo-400:hover,.link-indigo-400:focus{color:#6a33c4}.link-indigo-500{color:#6610f2}.link-indigo-500:hover,.link-indigo-500:focus{color:#520dc2}.link-indigo-600{color:#520dc2}.link-indigo-600:hover,.link-indigo-600:focus{color:#420a9b}.link-indigo-700{color:#3d0a91}.link-indigo-700:hover,.link-indigo-700:focus{color:#310874}.link-indigo-800{color:#290661}.link-indigo-800:hover,.link-indigo-800:focus{color:#21054e}.link-indigo-900{color:#140330}.link-indigo-900:hover,.link-indigo-900:focus{color:#100226}.link-purple-100{color:#e2d9f3}.link-purple-100:hover,.link-purple-100:focus{color:#e8e1f5}.link-purple-200{color:#c5b3e6}.link-purple-200:hover,.link-purple-200:focus{color:#d1c2eb}.link-purple-300{color:#a98eda}.link-purple-300:hover,.link-purple-300:focus{color:#baa5e1}.link-purple-400{color:#8c68cd}.link-purple-400:hover,.link-purple-400:focus{color:#a386d7}.link-purple-500{color:#6f42c1}.link-purple-500:hover,.link-purple-500:focus{color:#59359a}.link-purple-600{color:#59359a}.link-purple-600:hover,.link-purple-600:focus{color:#472a7b}.link-purple-700{color:#432874}.link-purple-700:hover,.link-purple-700:focus{color:#36205d}.link-purple-800{color:#2c1a4d}.link-purple-800:hover,.link-purple-800:focus{color:#23153e}.link-purple-900{color:#160d27}.link-purple-900:hover,.link-purple-900:focus{color:#120a1f}.link-pink-100{color:#f7d6e6}.link-pink-100:hover,.link-pink-100:focus{color:#f9deeb}.link-pink-200{color:#efadce}.link-pink-200:hover,.link-pink-200:focus{color:#f2bdd8}.link-pink-300{color:#e685b5}.link-pink-300:hover,.link-pink-300:focus{color:#eb9dc4}.link-pink-400{color:#de5c9d}.link-pink-400:hover,.link-pink-400:focus{color:#e57db1}.link-pink-500{color:#d63384}.link-pink-500:hover,.link-pink-500:focus{color:#ab296a}.link-pink-600{color:#ab296a}.link-pink-600:hover,.link-pink-600:focus{color:#892155}.link-pink-700{color:#801f4f}.link-pink-700:hover,.link-pink-700:focus{color:#66193f}.link-pink-800{color:#561435}.link-pink-800:hover,.link-pink-800:focus{color:#45102a}.link-pink-900{color:#2b0a1a}.link-pink-900:hover,.link-pink-900:focus{color:#220815}.ratio{position:relative;width:100%}.ratio:before{display:block;padding-top:var(--bs-aspect-ratio);content:""}.ratio>*{position:absolute;top:0;left:0;width:100%;height:100%}.ratio-1x1{--bs-aspect-ratio: 100%}.ratio-4x3{--bs-aspect-ratio: calc(3 / 4 * 100%)}.ratio-16x9{--bs-aspect-ratio: calc(9 / 16 * 100%)}.ratio-21x9{--bs-aspect-ratio: calc(9 / 21 * 100%)}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}.sticky-top{position:sticky;top:0;z-index:1020}@media (min-width: 576px){.sticky-sm-top{position:sticky;top:0;z-index:1020}}@media (min-width: 768px){.sticky-md-top{position:sticky;top:0;z-index:1020}}@media (min-width: 992px){.sticky-lg-top{position:sticky;top:0;z-index:1020}}@media (min-width: 1200px){.sticky-xl-top{position:sticky;top:0;z-index:1020}}@media (min-width: 1400px){.sticky-xxl-top{position:sticky;top:0;z-index:1020}}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.stretched-link:after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;content:""}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.float-start{float:left!important}.float-end{float:right!important}.float-none{float:none!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.overflow-visible{overflow:visible!important}.overflow-scroll{overflow:scroll!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-grid{display:grid!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}.d-none{display:none!important}.shadow{box-shadow:0 .5rem 1rem #00000026!important}.shadow-sm{box-shadow:0 .125rem .25rem #00000013!important}.shadow-lg{box-shadow:0 1rem 3rem #0000002d!important}.shadow-none{box-shadow:none!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:sticky!important}.top-0{top:0!important}.top-50{top:50%!important}.top-100{top:100%!important}.bottom-0{bottom:0!important}.bottom-50{bottom:50%!important}.bottom-100{bottom:100%!important}.start-0{left:0!important}.start-50{left:50%!important}.start-100{left:100%!important}.end-0{right:0!important}.end-50{right:50%!important}.end-100{right:100%!important}.translate-middle{transform:translate(-50%,-50%)!important}.translate-middle-x{transform:translate(-50%)!important}.translate-middle-y{transform:translateY(-50%)!important}.border{border:1px solid #dee2e6!important}.border-0{border:0!important}.border-top{border-top:1px solid #dee2e6!important}.border-top-0{border-top:0!important}.border-end{border-right:1px solid #dee2e6!important}.border-end-0{border-right:0!important}.border-bottom{border-bottom:1px solid #dee2e6!important}.border-bottom-0{border-bottom:0!important}.border-start{border-left:1px solid #dee2e6!important}.border-start-0{border-left:0!important}.border-primary{border-color:#337ab7!important}.border-secondary{border-color:#6c757d!important}.border-success{border-color:#198754!important}.border-info{border-color:#0dcaf0!important}.border-warning{border-color:#ffc107!important}.border-danger{border-color:#dc3545!important}.border-light{border-color:#f8f9fa!important}.border-dark{border-color:#212529!important}.border-red{border-color:#dc3545!important}.border-yellow{border-color:#ffc107!important}.border-green{border-color:#198754!important}.border-blue{border-color:#0d6efd!important}.border-cyan{border-color:#0dcaf0!important}.border-indigo{border-color:#6610f2!important}.border-purple{border-color:#6f42c1!important}.border-pink{border-color:#d63384!important}.border-darker{border-color:#1b1f22!important}.border-darkest{border-color:#171b1d!important}.border-gray{border-color:#ced4da!important}.border-gray-100{border-color:#f8f9fa!important}.border-gray-200{border-color:#e9ecef!important}.border-gray-300{border-color:#dee2e6!important}.border-gray-400{border-color:#ced4da!important}.border-gray-500{border-color:#adb5bd!important}.border-gray-600{border-color:#6c757d!important}.border-gray-700{border-color:#495057!important}.border-gray-800{border-color:#343a40!important}.border-gray-900{border-color:#212529!important}.border-red-100{border-color:#f8d7da!important}.border-red-200{border-color:#f1aeb5!important}.border-red-300{border-color:#ea868f!important}.border-red-400{border-color:#e35d6a!important}.border-red-500{border-color:#dc3545!important}.border-red-600{border-color:#b02a37!important}.border-red-700{border-color:#842029!important}.border-red-800{border-color:#58151c!important}.border-red-900{border-color:#2c0b0e!important}.border-yellow-100{border-color:#fff3cd!important}.border-yellow-200{border-color:#ffe69c!important}.border-yellow-300{border-color:#ffda6a!important}.border-yellow-400{border-color:#ffcd39!important}.border-yellow-500{border-color:#ffc107!important}.border-yellow-600{border-color:#cc9a06!important}.border-yellow-700{border-color:#997404!important}.border-yellow-800{border-color:#664d03!important}.border-yellow-900{border-color:#332701!important}.border-green-100{border-color:#d1e7dd!important}.border-green-200{border-color:#a3cfbb!important}.border-green-300{border-color:#75b798!important}.border-green-400{border-color:#479f76!important}.border-green-500{border-color:#198754!important}.border-green-600{border-color:#146c43!important}.border-green-700{border-color:#0f5132!important}.border-green-800{border-color:#0a3622!important}.border-green-900{border-color:#051b11!important}.border-blue-100{border-color:#cfe2ff!important}.border-blue-200{border-color:#9ec5fe!important}.border-blue-300{border-color:#6ea8fe!important}.border-blue-400{border-color:#3d8bfd!important}.border-blue-500{border-color:#0d6efd!important}.border-blue-600{border-color:#0a58ca!important}.border-blue-700{border-color:#084298!important}.border-blue-800{border-color:#052c65!important}.border-blue-900{border-color:#031633!important}.border-cyan-100{border-color:#cff4fc!important}.border-cyan-200{border-color:#9eeaf9!important}.border-cyan-300{border-color:#6edff6!important}.border-cyan-400{border-color:#3dd5f3!important}.border-cyan-500{border-color:#0dcaf0!important}.border-cyan-600{border-color:#0aa2c0!important}.border-cyan-700{border-color:#087990!important}.border-cyan-800{border-color:#055160!important}.border-cyan-900{border-color:#032830!important}.border-indigo-100{border-color:#e0cffc!important}.border-indigo-200{border-color:#c29ffa!important}.border-indigo-300{border-color:#a370f7!important}.border-indigo-400{border-color:#8540f5!important}.border-indigo-500{border-color:#6610f2!important}.border-indigo-600{border-color:#520dc2!important}.border-indigo-700{border-color:#3d0a91!important}.border-indigo-800{border-color:#290661!important}.border-indigo-900{border-color:#140330!important}.border-purple-100{border-color:#e2d9f3!important}.border-purple-200{border-color:#c5b3e6!important}.border-purple-300{border-color:#a98eda!important}.border-purple-400{border-color:#8c68cd!important}.border-purple-500{border-color:#6f42c1!important}.border-purple-600{border-color:#59359a!important}.border-purple-700{border-color:#432874!important}.border-purple-800{border-color:#2c1a4d!important}.border-purple-900{border-color:#160d27!important}.border-pink-100{border-color:#f7d6e6!important}.border-pink-200{border-color:#efadce!important}.border-pink-300{border-color:#e685b5!important}.border-pink-400{border-color:#de5c9d!important}.border-pink-500{border-color:#d63384!important}.border-pink-600{border-color:#ab296a!important}.border-pink-700{border-color:#801f4f!important}.border-pink-800{border-color:#561435!important}.border-pink-900{border-color:#2b0a1a!important}.border-white{border-color:#fff!important}.border-1{border-width:1px!important}.border-2{border-width:2px!important}.border-3{border-width:3px!important}.border-4{border-width:4px!important}.border-5{border-width:5px!important}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.mw-100{max-width:100%!important}.vw-100{width:100vw!important}.min-vw-100{min-width:100vw!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mh-100{max-height:100%!important}.vh-100{height:100vh!important}.min-vh-100{min-height:100vh!important}.flex-fill{flex:1 1 auto!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-0{gap:0!important}.gap-1{gap:.25rem!important}.gap-2{gap:.5rem!important}.gap-3{gap:1rem!important}.gap-4{gap:1.5rem!important}.gap-5{gap:3rem!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.justify-content-evenly{justify-content:space-evenly!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}.order-first{order:-1!important}.order-0{order:0!important}.order-1{order:1!important}.order-2{order:2!important}.order-3{order:3!important}.order-4{order:4!important}.order-5{order:5!important}.order-last{order:6!important}.m-0{margin:0!important}.m-1{margin:.25rem!important}.m-2{margin:.5rem!important}.m-3{margin:1rem!important}.m-4{margin:1.5rem!important}.m-5{margin:3rem!important}.m-auto{margin:auto!important}.mx-0{margin-right:0!important;margin-left:0!important}.mx-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-3{margin-right:1rem!important;margin-left:1rem!important}.mx-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-5{margin-right:3rem!important;margin-left:3rem!important}.mx-auto{margin-right:auto!important;margin-left:auto!important}.my-0{margin-top:0!important;margin-bottom:0!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-0{margin-top:0!important}.mt-1{margin-top:.25rem!important}.mt-2{margin-top:.5rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mt-5{margin-top:3rem!important}.mt-auto{margin-top:auto!important}.me-0{margin-right:0!important}.me-1{margin-right:.25rem!important}.me-2{margin-right:.5rem!important}.me-3{margin-right:1rem!important}.me-4{margin-right:1.5rem!important}.me-5{margin-right:3rem!important}.me-auto{margin-right:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}.mb-2{margin-bottom:.5rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.mb-5{margin-bottom:3rem!important}.mb-auto{margin-bottom:auto!important}.ms-0{margin-left:0!important}.ms-1{margin-left:.25rem!important}.ms-2{margin-left:.5rem!important}.ms-3{margin-left:1rem!important}.ms-4{margin-left:1.5rem!important}.ms-5{margin-left:3rem!important}.ms-auto{margin-left:auto!important}.p-0{padding:0!important}.p-1{padding:.25rem!important}.p-2{padding:.5rem!important}.p-3{padding:1rem!important}.p-4{padding:1.5rem!important}.p-5{padding:3rem!important}.px-0{padding-right:0!important;padding-left:0!important}.px-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-3{padding-right:1rem!important;padding-left:1rem!important}.px-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-5{padding-right:3rem!important;padding-left:3rem!important}.py-0{padding-top:0!important;padding-bottom:0!important}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-0{padding-top:0!important}.pt-1{padding-top:.25rem!important}.pt-2{padding-top:.5rem!important}.pt-3{padding-top:1rem!important}.pt-4{padding-top:1.5rem!important}.pt-5{padding-top:3rem!important}.pe-0{padding-right:0!important}.pe-1{padding-right:.25rem!important}.pe-2{padding-right:.5rem!important}.pe-3{padding-right:1rem!important}.pe-4{padding-right:1.5rem!important}.pe-5{padding-right:3rem!important}.pb-0{padding-bottom:0!important}.pb-1{padding-bottom:.25rem!important}.pb-2{padding-bottom:.5rem!important}.pb-3{padding-bottom:1rem!important}.pb-4{padding-bottom:1.5rem!important}.pb-5{padding-bottom:3rem!important}.ps-0{padding-left:0!important}.ps-1{padding-left:.25rem!important}.ps-2{padding-left:.5rem!important}.ps-3{padding-left:1rem!important}.ps-4{padding-left:1.5rem!important}.ps-5{padding-left:3rem!important}.font-monospace{font-family:var(--bs-font-monospace)!important}.fs-1{font-size:calc(1.375rem + 1.5vw)!important}.fs-2{font-size:calc(1.325rem + .9vw)!important}.fs-3{font-size:calc(1.3rem + .6vw)!important}.fs-4{font-size:calc(1.275rem + .3vw)!important}.fs-5{font-size:1.25rem!important}.fs-6{font-size:1rem!important}.fst-italic{font-style:italic!important}.fst-normal{font-style:normal!important}.fw-light{font-weight:300!important}.fw-lighter{font-weight:200!important}.fw-normal{font-weight:400!important}.fw-bold{font-weight:700!important}.fw-bolder{font-weight:800!important}.lh-1{line-height:1!important}.lh-sm{line-height:1.25!important}.lh-base{line-height:1.5!important}.lh-lg{line-height:1.75!important}.text-start{text-align:left!important}.text-end{text-align:right!important}.text-center{text-align:center!important}.text-decoration-none{text-decoration:none!important}.text-decoration-underline{text-decoration:underline!important}.text-decoration-line-through{text-decoration:line-through!important}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-break{word-wrap:break-word!important;word-break:break-word!important}.text-primary{color:#337ab7!important}.text-secondary{color:#6c757d!important}.text-success{color:#198754!important}.text-info{color:#0dcaf0!important}.text-warning{color:#ffc107!important}.text-danger{color:#dc3545!important}.text-light{color:#f8f9fa!important}.text-dark{color:#212529!important}.text-red{color:#dc3545!important}.text-yellow{color:#ffc107!important}.text-green{color:#198754!important}.text-blue{color:#0d6efd!important}.text-cyan{color:#0dcaf0!important}.text-indigo{color:#6610f2!important}.text-purple{color:#6f42c1!important}.text-pink{color:#d63384!important}.text-darker{color:#1b1f22!important}.text-darkest{color:#171b1d!important}.text-gray{color:#ced4da!important}.text-gray-100{color:#f8f9fa!important}.text-gray-200{color:#e9ecef!important}.text-gray-300{color:#dee2e6!important}.text-gray-400{color:#ced4da!important}.text-gray-500{color:#adb5bd!important}.text-gray-600{color:#6c757d!important}.text-gray-700{color:#495057!important}.text-gray-800{color:#343a40!important}.text-gray-900{color:#212529!important}.text-red-100{color:#f8d7da!important}.text-red-200{color:#f1aeb5!important}.text-red-300{color:#ea868f!important}.text-red-400{color:#e35d6a!important}.text-red-500{color:#dc3545!important}.text-red-600{color:#b02a37!important}.text-red-700{color:#842029!important}.text-red-800{color:#58151c!important}.text-red-900{color:#2c0b0e!important}.text-yellow-100{color:#fff3cd!important}.text-yellow-200{color:#ffe69c!important}.text-yellow-300{color:#ffda6a!important}.text-yellow-400{color:#ffcd39!important}.text-yellow-500{color:#ffc107!important}.text-yellow-600{color:#cc9a06!important}.text-yellow-700{color:#997404!important}.text-yellow-800{color:#664d03!important}.text-yellow-900{color:#332701!important}.text-green-100{color:#d1e7dd!important}.text-green-200{color:#a3cfbb!important}.text-green-300{color:#75b798!important}.text-green-400{color:#479f76!important}.text-green-500{color:#198754!important}.text-green-600{color:#146c43!important}.text-green-700{color:#0f5132!important}.text-green-800{color:#0a3622!important}.text-green-900{color:#051b11!important}.text-blue-100{color:#cfe2ff!important}.text-blue-200{color:#9ec5fe!important}.text-blue-300{color:#6ea8fe!important}.text-blue-400{color:#3d8bfd!important}.text-blue-500{color:#0d6efd!important}.text-blue-600{color:#0a58ca!important}.text-blue-700{color:#084298!important}.text-blue-800{color:#052c65!important}.text-blue-900{color:#031633!important}.text-cyan-100{color:#cff4fc!important}.text-cyan-200{color:#9eeaf9!important}.text-cyan-300{color:#6edff6!important}.text-cyan-400{color:#3dd5f3!important}.text-cyan-500{color:#0dcaf0!important}.text-cyan-600{color:#0aa2c0!important}.text-cyan-700{color:#087990!important}.text-cyan-800{color:#055160!important}.text-cyan-900{color:#032830!important}.text-indigo-100{color:#e0cffc!important}.text-indigo-200{color:#c29ffa!important}.text-indigo-300{color:#a370f7!important}.text-indigo-400{color:#8540f5!important}.text-indigo-500{color:#6610f2!important}.text-indigo-600{color:#520dc2!important}.text-indigo-700{color:#3d0a91!important}.text-indigo-800{color:#290661!important}.text-indigo-900{color:#140330!important}.text-purple-100{color:#e2d9f3!important}.text-purple-200{color:#c5b3e6!important}.text-purple-300{color:#a98eda!important}.text-purple-400{color:#8c68cd!important}.text-purple-500{color:#6f42c1!important}.text-purple-600{color:#59359a!important}.text-purple-700{color:#432874!important}.text-purple-800{color:#2c1a4d!important}.text-purple-900{color:#160d27!important}.text-pink-100{color:#f7d6e6!important}.text-pink-200{color:#efadce!important}.text-pink-300{color:#e685b5!important}.text-pink-400{color:#de5c9d!important}.text-pink-500{color:#d63384!important}.text-pink-600{color:#ab296a!important}.text-pink-700{color:#801f4f!important}.text-pink-800{color:#561435!important}.text-pink-900{color:#2b0a1a!important}.text-white{color:#fff!important}.text-body{color:#212529!important}.text-muted{color:#6c757d!important}.text-black-50{color:#00000080!important}.text-white-50{color:#ffffff80!important}.text-reset{color:inherit!important}.bg-primary{background-color:#337ab7!important}.bg-secondary{background-color:#6c757d!important}.bg-success{background-color:#198754!important}.bg-info{background-color:#0dcaf0!important}.bg-warning{background-color:#ffc107!important}.bg-danger{background-color:#dc3545!important}.bg-light{background-color:#f8f9fa!important}.bg-dark{background-color:#212529!important}.bg-red{background-color:#dc3545!important}.bg-yellow{background-color:#ffc107!important}.bg-green{background-color:#198754!important}.bg-blue{background-color:#0d6efd!important}.bg-cyan{background-color:#0dcaf0!important}.bg-indigo{background-color:#6610f2!important}.bg-purple{background-color:#6f42c1!important}.bg-pink{background-color:#d63384!important}.bg-darker{background-color:#1b1f22!important}.bg-darkest{background-color:#171b1d!important}.bg-gray{background-color:#ced4da!important}.bg-gray-100{background-color:#f8f9fa!important}.bg-gray-200{background-color:#e9ecef!important}.bg-gray-300{background-color:#dee2e6!important}.bg-gray-400{background-color:#ced4da!important}.bg-gray-500{background-color:#adb5bd!important}.bg-gray-600{background-color:#6c757d!important}.bg-gray-700{background-color:#495057!important}.bg-gray-800{background-color:#343a40!important}.bg-gray-900{background-color:#212529!important}.bg-red-100{background-color:#f8d7da!important}.bg-red-200{background-color:#f1aeb5!important}.bg-red-300{background-color:#ea868f!important}.bg-red-400{background-color:#e35d6a!important}.bg-red-500{background-color:#dc3545!important}.bg-red-600{background-color:#b02a37!important}.bg-red-700{background-color:#842029!important}.bg-red-800{background-color:#58151c!important}.bg-red-900{background-color:#2c0b0e!important}.bg-yellow-100{background-color:#fff3cd!important}.bg-yellow-200{background-color:#ffe69c!important}.bg-yellow-300{background-color:#ffda6a!important}.bg-yellow-400{background-color:#ffcd39!important}.bg-yellow-500{background-color:#ffc107!important}.bg-yellow-600{background-color:#cc9a06!important}.bg-yellow-700{background-color:#997404!important}.bg-yellow-800{background-color:#664d03!important}.bg-yellow-900{background-color:#332701!important}.bg-green-100{background-color:#d1e7dd!important}.bg-green-200{background-color:#a3cfbb!important}.bg-green-300{background-color:#75b798!important}.bg-green-400{background-color:#479f76!important}.bg-green-500{background-color:#198754!important}.bg-green-600{background-color:#146c43!important}.bg-green-700{background-color:#0f5132!important}.bg-green-800{background-color:#0a3622!important}.bg-green-900{background-color:#051b11!important}.bg-blue-100{background-color:#cfe2ff!important}.bg-blue-200{background-color:#9ec5fe!important}.bg-blue-300{background-color:#6ea8fe!important}.bg-blue-400{background-color:#3d8bfd!important}.bg-blue-500{background-color:#0d6efd!important}.bg-blue-600{background-color:#0a58ca!important}.bg-blue-700{background-color:#084298!important}.bg-blue-800{background-color:#052c65!important}.bg-blue-900{background-color:#031633!important}.bg-cyan-100{background-color:#cff4fc!important}.bg-cyan-200{background-color:#9eeaf9!important}.bg-cyan-300{background-color:#6edff6!important}.bg-cyan-400{background-color:#3dd5f3!important}.bg-cyan-500{background-color:#0dcaf0!important}.bg-cyan-600{background-color:#0aa2c0!important}.bg-cyan-700{background-color:#087990!important}.bg-cyan-800{background-color:#055160!important}.bg-cyan-900{background-color:#032830!important}.bg-indigo-100{background-color:#e0cffc!important}.bg-indigo-200{background-color:#c29ffa!important}.bg-indigo-300{background-color:#a370f7!important}.bg-indigo-400{background-color:#8540f5!important}.bg-indigo-500{background-color:#6610f2!important}.bg-indigo-600{background-color:#520dc2!important}.bg-indigo-700{background-color:#3d0a91!important}.bg-indigo-800{background-color:#290661!important}.bg-indigo-900{background-color:#140330!important}.bg-purple-100{background-color:#e2d9f3!important}.bg-purple-200{background-color:#c5b3e6!important}.bg-purple-300{background-color:#a98eda!important}.bg-purple-400{background-color:#8c68cd!important}.bg-purple-500{background-color:#6f42c1!important}.bg-purple-600{background-color:#59359a!important}.bg-purple-700{background-color:#432874!important}.bg-purple-800{background-color:#2c1a4d!important}.bg-purple-900{background-color:#160d27!important}.bg-pink-100{background-color:#f7d6e6!important}.bg-pink-200{background-color:#efadce!important}.bg-pink-300{background-color:#e685b5!important}.bg-pink-400{background-color:#de5c9d!important}.bg-pink-500{background-color:#d63384!important}.bg-pink-600{background-color:#ab296a!important}.bg-pink-700{background-color:#801f4f!important}.bg-pink-800{background-color:#561435!important}.bg-pink-900{background-color:#2b0a1a!important}.bg-body{background-color:#fff!important}.bg-white{background-color:#fff!important}.bg-transparent{background-color:transparent!important}.bg-gradient{background-image:var(--bs-gradient)!important}.user-select-all{user-select:all!important}.user-select-auto{user-select:auto!important}.user-select-none{user-select:none!important}.pe-none{pointer-events:none!important}.pe-auto{pointer-events:auto!important}.rounded{border-radius:.375rem!important}.rounded-0{border-radius:0!important}.rounded-1{border-radius:.375rem!important}.rounded-2{border-radius:.375rem!important}.rounded-3{border-radius:.75rem!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:50rem!important}.rounded-top{border-top-left-radius:.375rem!important;border-top-right-radius:.375rem!important}.rounded-end{border-top-right-radius:.375rem!important;border-bottom-right-radius:.375rem!important}.rounded-bottom{border-bottom-right-radius:.375rem!important;border-bottom-left-radius:.375rem!important}.rounded-start{border-bottom-left-radius:.375rem!important;border-top-left-radius:.375rem!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media (min-width: 576px){.float-sm-start{float:left!important}.float-sm-end{float:right!important}.float-sm-none{float:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-grid{display:grid!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}.d-sm-none{display:none!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-sm-0{gap:0!important}.gap-sm-1{gap:.25rem!important}.gap-sm-2{gap:.5rem!important}.gap-sm-3{gap:1rem!important}.gap-sm-4{gap:1.5rem!important}.gap-sm-5{gap:3rem!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.justify-content-sm-evenly{justify-content:space-evenly!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}.order-sm-first{order:-1!important}.order-sm-0{order:0!important}.order-sm-1{order:1!important}.order-sm-2{order:2!important}.order-sm-3{order:3!important}.order-sm-4{order:4!important}.order-sm-5{order:5!important}.order-sm-last{order:6!important}.m-sm-0{margin:0!important}.m-sm-1{margin:.25rem!important}.m-sm-2{margin:.5rem!important}.m-sm-3{margin:1rem!important}.m-sm-4{margin:1.5rem!important}.m-sm-5{margin:3rem!important}.m-sm-auto{margin:auto!important}.mx-sm-0{margin-right:0!important;margin-left:0!important}.mx-sm-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-sm-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-sm-3{margin-right:1rem!important;margin-left:1rem!important}.mx-sm-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-sm-5{margin-right:3rem!important;margin-left:3rem!important}.mx-sm-auto{margin-right:auto!important;margin-left:auto!important}.my-sm-0{margin-top:0!important;margin-bottom:0!important}.my-sm-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-sm-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-sm-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-sm-0{margin-top:0!important}.mt-sm-1{margin-top:.25rem!important}.mt-sm-2{margin-top:.5rem!important}.mt-sm-3{margin-top:1rem!important}.mt-sm-4{margin-top:1.5rem!important}.mt-sm-5{margin-top:3rem!important}.mt-sm-auto{margin-top:auto!important}.me-sm-0{margin-right:0!important}.me-sm-1{margin-right:.25rem!important}.me-sm-2{margin-right:.5rem!important}.me-sm-3{margin-right:1rem!important}.me-sm-4{margin-right:1.5rem!important}.me-sm-5{margin-right:3rem!important}.me-sm-auto{margin-right:auto!important}.mb-sm-0{margin-bottom:0!important}.mb-sm-1{margin-bottom:.25rem!important}.mb-sm-2{margin-bottom:.5rem!important}.mb-sm-3{margin-bottom:1rem!important}.mb-sm-4{margin-bottom:1.5rem!important}.mb-sm-5{margin-bottom:3rem!important}.mb-sm-auto{margin-bottom:auto!important}.ms-sm-0{margin-left:0!important}.ms-sm-1{margin-left:.25rem!important}.ms-sm-2{margin-left:.5rem!important}.ms-sm-3{margin-left:1rem!important}.ms-sm-4{margin-left:1.5rem!important}.ms-sm-5{margin-left:3rem!important}.ms-sm-auto{margin-left:auto!important}.p-sm-0{padding:0!important}.p-sm-1{padding:.25rem!important}.p-sm-2{padding:.5rem!important}.p-sm-3{padding:1rem!important}.p-sm-4{padding:1.5rem!important}.p-sm-5{padding:3rem!important}.px-sm-0{padding-right:0!important;padding-left:0!important}.px-sm-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-sm-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-sm-3{padding-right:1rem!important;padding-left:1rem!important}.px-sm-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-sm-5{padding-right:3rem!important;padding-left:3rem!important}.py-sm-0{padding-top:0!important;padding-bottom:0!important}.py-sm-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-sm-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-sm-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-sm-0{padding-top:0!important}.pt-sm-1{padding-top:.25rem!important}.pt-sm-2{padding-top:.5rem!important}.pt-sm-3{padding-top:1rem!important}.pt-sm-4{padding-top:1.5rem!important}.pt-sm-5{padding-top:3rem!important}.pe-sm-0{padding-right:0!important}.pe-sm-1{padding-right:.25rem!important}.pe-sm-2{padding-right:.5rem!important}.pe-sm-3{padding-right:1rem!important}.pe-sm-4{padding-right:1.5rem!important}.pe-sm-5{padding-right:3rem!important}.pb-sm-0{padding-bottom:0!important}.pb-sm-1{padding-bottom:.25rem!important}.pb-sm-2{padding-bottom:.5rem!important}.pb-sm-3{padding-bottom:1rem!important}.pb-sm-4{padding-bottom:1.5rem!important}.pb-sm-5{padding-bottom:3rem!important}.ps-sm-0{padding-left:0!important}.ps-sm-1{padding-left:.25rem!important}.ps-sm-2{padding-left:.5rem!important}.ps-sm-3{padding-left:1rem!important}.ps-sm-4{padding-left:1.5rem!important}.ps-sm-5{padding-left:3rem!important}.text-sm-start{text-align:left!important}.text-sm-end{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width: 768px){.float-md-start{float:left!important}.float-md-end{float:right!important}.float-md-none{float:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-grid{display:grid!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}.d-md-none{display:none!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-md-0{gap:0!important}.gap-md-1{gap:.25rem!important}.gap-md-2{gap:.5rem!important}.gap-md-3{gap:1rem!important}.gap-md-4{gap:1.5rem!important}.gap-md-5{gap:3rem!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.justify-content-md-evenly{justify-content:space-evenly!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}.order-md-first{order:-1!important}.order-md-0{order:0!important}.order-md-1{order:1!important}.order-md-2{order:2!important}.order-md-3{order:3!important}.order-md-4{order:4!important}.order-md-5{order:5!important}.order-md-last{order:6!important}.m-md-0{margin:0!important}.m-md-1{margin:.25rem!important}.m-md-2{margin:.5rem!important}.m-md-3{margin:1rem!important}.m-md-4{margin:1.5rem!important}.m-md-5{margin:3rem!important}.m-md-auto{margin:auto!important}.mx-md-0{margin-right:0!important;margin-left:0!important}.mx-md-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-md-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-md-3{margin-right:1rem!important;margin-left:1rem!important}.mx-md-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-md-5{margin-right:3rem!important;margin-left:3rem!important}.mx-md-auto{margin-right:auto!important;margin-left:auto!important}.my-md-0{margin-top:0!important;margin-bottom:0!important}.my-md-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-md-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-md-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-md-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-md-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-md-0{margin-top:0!important}.mt-md-1{margin-top:.25rem!important}.mt-md-2{margin-top:.5rem!important}.mt-md-3{margin-top:1rem!important}.mt-md-4{margin-top:1.5rem!important}.mt-md-5{margin-top:3rem!important}.mt-md-auto{margin-top:auto!important}.me-md-0{margin-right:0!important}.me-md-1{margin-right:.25rem!important}.me-md-2{margin-right:.5rem!important}.me-md-3{margin-right:1rem!important}.me-md-4{margin-right:1.5rem!important}.me-md-5{margin-right:3rem!important}.me-md-auto{margin-right:auto!important}.mb-md-0{margin-bottom:0!important}.mb-md-1{margin-bottom:.25rem!important}.mb-md-2{margin-bottom:.5rem!important}.mb-md-3{margin-bottom:1rem!important}.mb-md-4{margin-bottom:1.5rem!important}.mb-md-5{margin-bottom:3rem!important}.mb-md-auto{margin-bottom:auto!important}.ms-md-0{margin-left:0!important}.ms-md-1{margin-left:.25rem!important}.ms-md-2{margin-left:.5rem!important}.ms-md-3{margin-left:1rem!important}.ms-md-4{margin-left:1.5rem!important}.ms-md-5{margin-left:3rem!important}.ms-md-auto{margin-left:auto!important}.p-md-0{padding:0!important}.p-md-1{padding:.25rem!important}.p-md-2{padding:.5rem!important}.p-md-3{padding:1rem!important}.p-md-4{padding:1.5rem!important}.p-md-5{padding:3rem!important}.px-md-0{padding-right:0!important;padding-left:0!important}.px-md-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-md-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-md-3{padding-right:1rem!important;padding-left:1rem!important}.px-md-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-md-5{padding-right:3rem!important;padding-left:3rem!important}.py-md-0{padding-top:0!important;padding-bottom:0!important}.py-md-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-md-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-md-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-md-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-md-0{padding-top:0!important}.pt-md-1{padding-top:.25rem!important}.pt-md-2{padding-top:.5rem!important}.pt-md-3{padding-top:1rem!important}.pt-md-4{padding-top:1.5rem!important}.pt-md-5{padding-top:3rem!important}.pe-md-0{padding-right:0!important}.pe-md-1{padding-right:.25rem!important}.pe-md-2{padding-right:.5rem!important}.pe-md-3{padding-right:1rem!important}.pe-md-4{padding-right:1.5rem!important}.pe-md-5{padding-right:3rem!important}.pb-md-0{padding-bottom:0!important}.pb-md-1{padding-bottom:.25rem!important}.pb-md-2{padding-bottom:.5rem!important}.pb-md-3{padding-bottom:1rem!important}.pb-md-4{padding-bottom:1.5rem!important}.pb-md-5{padding-bottom:3rem!important}.ps-md-0{padding-left:0!important}.ps-md-1{padding-left:.25rem!important}.ps-md-2{padding-left:.5rem!important}.ps-md-3{padding-left:1rem!important}.ps-md-4{padding-left:1.5rem!important}.ps-md-5{padding-left:3rem!important}.text-md-start{text-align:left!important}.text-md-end{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width: 992px){.float-lg-start{float:left!important}.float-lg-end{float:right!important}.float-lg-none{float:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-grid{display:grid!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}.d-lg-none{display:none!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-lg-0{gap:0!important}.gap-lg-1{gap:.25rem!important}.gap-lg-2{gap:.5rem!important}.gap-lg-3{gap:1rem!important}.gap-lg-4{gap:1.5rem!important}.gap-lg-5{gap:3rem!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.justify-content-lg-evenly{justify-content:space-evenly!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}.order-lg-first{order:-1!important}.order-lg-0{order:0!important}.order-lg-1{order:1!important}.order-lg-2{order:2!important}.order-lg-3{order:3!important}.order-lg-4{order:4!important}.order-lg-5{order:5!important}.order-lg-last{order:6!important}.m-lg-0{margin:0!important}.m-lg-1{margin:.25rem!important}.m-lg-2{margin:.5rem!important}.m-lg-3{margin:1rem!important}.m-lg-4{margin:1.5rem!important}.m-lg-5{margin:3rem!important}.m-lg-auto{margin:auto!important}.mx-lg-0{margin-right:0!important;margin-left:0!important}.mx-lg-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-lg-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-lg-3{margin-right:1rem!important;margin-left:1rem!important}.mx-lg-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-lg-5{margin-right:3rem!important;margin-left:3rem!important}.mx-lg-auto{margin-right:auto!important;margin-left:auto!important}.my-lg-0{margin-top:0!important;margin-bottom:0!important}.my-lg-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-lg-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-lg-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-lg-0{margin-top:0!important}.mt-lg-1{margin-top:.25rem!important}.mt-lg-2{margin-top:.5rem!important}.mt-lg-3{margin-top:1rem!important}.mt-lg-4{margin-top:1.5rem!important}.mt-lg-5{margin-top:3rem!important}.mt-lg-auto{margin-top:auto!important}.me-lg-0{margin-right:0!important}.me-lg-1{margin-right:.25rem!important}.me-lg-2{margin-right:.5rem!important}.me-lg-3{margin-right:1rem!important}.me-lg-4{margin-right:1.5rem!important}.me-lg-5{margin-right:3rem!important}.me-lg-auto{margin-right:auto!important}.mb-lg-0{margin-bottom:0!important}.mb-lg-1{margin-bottom:.25rem!important}.mb-lg-2{margin-bottom:.5rem!important}.mb-lg-3{margin-bottom:1rem!important}.mb-lg-4{margin-bottom:1.5rem!important}.mb-lg-5{margin-bottom:3rem!important}.mb-lg-auto{margin-bottom:auto!important}.ms-lg-0{margin-left:0!important}.ms-lg-1{margin-left:.25rem!important}.ms-lg-2{margin-left:.5rem!important}.ms-lg-3{margin-left:1rem!important}.ms-lg-4{margin-left:1.5rem!important}.ms-lg-5{margin-left:3rem!important}.ms-lg-auto{margin-left:auto!important}.p-lg-0{padding:0!important}.p-lg-1{padding:.25rem!important}.p-lg-2{padding:.5rem!important}.p-lg-3{padding:1rem!important}.p-lg-4{padding:1.5rem!important}.p-lg-5{padding:3rem!important}.px-lg-0{padding-right:0!important;padding-left:0!important}.px-lg-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-lg-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-lg-3{padding-right:1rem!important;padding-left:1rem!important}.px-lg-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-lg-5{padding-right:3rem!important;padding-left:3rem!important}.py-lg-0{padding-top:0!important;padding-bottom:0!important}.py-lg-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-lg-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-lg-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-lg-0{padding-top:0!important}.pt-lg-1{padding-top:.25rem!important}.pt-lg-2{padding-top:.5rem!important}.pt-lg-3{padding-top:1rem!important}.pt-lg-4{padding-top:1.5rem!important}.pt-lg-5{padding-top:3rem!important}.pe-lg-0{padding-right:0!important}.pe-lg-1{padding-right:.25rem!important}.pe-lg-2{padding-right:.5rem!important}.pe-lg-3{padding-right:1rem!important}.pe-lg-4{padding-right:1.5rem!important}.pe-lg-5{padding-right:3rem!important}.pb-lg-0{padding-bottom:0!important}.pb-lg-1{padding-bottom:.25rem!important}.pb-lg-2{padding-bottom:.5rem!important}.pb-lg-3{padding-bottom:1rem!important}.pb-lg-4{padding-bottom:1.5rem!important}.pb-lg-5{padding-bottom:3rem!important}.ps-lg-0{padding-left:0!important}.ps-lg-1{padding-left:.25rem!important}.ps-lg-2{padding-left:.5rem!important}.ps-lg-3{padding-left:1rem!important}.ps-lg-4{padding-left:1.5rem!important}.ps-lg-5{padding-left:3rem!important}.text-lg-start{text-align:left!important}.text-lg-end{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width: 1200px){.float-xl-start{float:left!important}.float-xl-end{float:right!important}.float-xl-none{float:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-grid{display:grid!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}.d-xl-none{display:none!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-xl-0{gap:0!important}.gap-xl-1{gap:.25rem!important}.gap-xl-2{gap:.5rem!important}.gap-xl-3{gap:1rem!important}.gap-xl-4{gap:1.5rem!important}.gap-xl-5{gap:3rem!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.justify-content-xl-evenly{justify-content:space-evenly!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}.order-xl-first{order:-1!important}.order-xl-0{order:0!important}.order-xl-1{order:1!important}.order-xl-2{order:2!important}.order-xl-3{order:3!important}.order-xl-4{order:4!important}.order-xl-5{order:5!important}.order-xl-last{order:6!important}.m-xl-0{margin:0!important}.m-xl-1{margin:.25rem!important}.m-xl-2{margin:.5rem!important}.m-xl-3{margin:1rem!important}.m-xl-4{margin:1.5rem!important}.m-xl-5{margin:3rem!important}.m-xl-auto{margin:auto!important}.mx-xl-0{margin-right:0!important;margin-left:0!important}.mx-xl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xl-auto{margin-right:auto!important;margin-left:auto!important}.my-xl-0{margin-top:0!important;margin-bottom:0!important}.my-xl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xl-0{margin-top:0!important}.mt-xl-1{margin-top:.25rem!important}.mt-xl-2{margin-top:.5rem!important}.mt-xl-3{margin-top:1rem!important}.mt-xl-4{margin-top:1.5rem!important}.mt-xl-5{margin-top:3rem!important}.mt-xl-auto{margin-top:auto!important}.me-xl-0{margin-right:0!important}.me-xl-1{margin-right:.25rem!important}.me-xl-2{margin-right:.5rem!important}.me-xl-3{margin-right:1rem!important}.me-xl-4{margin-right:1.5rem!important}.me-xl-5{margin-right:3rem!important}.me-xl-auto{margin-right:auto!important}.mb-xl-0{margin-bottom:0!important}.mb-xl-1{margin-bottom:.25rem!important}.mb-xl-2{margin-bottom:.5rem!important}.mb-xl-3{margin-bottom:1rem!important}.mb-xl-4{margin-bottom:1.5rem!important}.mb-xl-5{margin-bottom:3rem!important}.mb-xl-auto{margin-bottom:auto!important}.ms-xl-0{margin-left:0!important}.ms-xl-1{margin-left:.25rem!important}.ms-xl-2{margin-left:.5rem!important}.ms-xl-3{margin-left:1rem!important}.ms-xl-4{margin-left:1.5rem!important}.ms-xl-5{margin-left:3rem!important}.ms-xl-auto{margin-left:auto!important}.p-xl-0{padding:0!important}.p-xl-1{padding:.25rem!important}.p-xl-2{padding:.5rem!important}.p-xl-3{padding:1rem!important}.p-xl-4{padding:1.5rem!important}.p-xl-5{padding:3rem!important}.px-xl-0{padding-right:0!important;padding-left:0!important}.px-xl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xl-0{padding-top:0!important;padding-bottom:0!important}.py-xl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xl-0{padding-top:0!important}.pt-xl-1{padding-top:.25rem!important}.pt-xl-2{padding-top:.5rem!important}.pt-xl-3{padding-top:1rem!important}.pt-xl-4{padding-top:1.5rem!important}.pt-xl-5{padding-top:3rem!important}.pe-xl-0{padding-right:0!important}.pe-xl-1{padding-right:.25rem!important}.pe-xl-2{padding-right:.5rem!important}.pe-xl-3{padding-right:1rem!important}.pe-xl-4{padding-right:1.5rem!important}.pe-xl-5{padding-right:3rem!important}.pb-xl-0{padding-bottom:0!important}.pb-xl-1{padding-bottom:.25rem!important}.pb-xl-2{padding-bottom:.5rem!important}.pb-xl-3{padding-bottom:1rem!important}.pb-xl-4{padding-bottom:1.5rem!important}.pb-xl-5{padding-bottom:3rem!important}.ps-xl-0{padding-left:0!important}.ps-xl-1{padding-left:.25rem!important}.ps-xl-2{padding-left:.5rem!important}.ps-xl-3{padding-left:1rem!important}.ps-xl-4{padding-left:1.5rem!important}.ps-xl-5{padding-left:3rem!important}.text-xl-start{text-align:left!important}.text-xl-end{text-align:right!important}.text-xl-center{text-align:center!important}}@media (min-width: 1400px){.float-xxl-start{float:left!important}.float-xxl-end{float:right!important}.float-xxl-none{float:none!important}.d-xxl-inline{display:inline!important}.d-xxl-inline-block{display:inline-block!important}.d-xxl-block{display:block!important}.d-xxl-grid{display:grid!important}.d-xxl-table{display:table!important}.d-xxl-table-row{display:table-row!important}.d-xxl-table-cell{display:table-cell!important}.d-xxl-flex{display:flex!important}.d-xxl-inline-flex{display:inline-flex!important}.d-xxl-none{display:none!important}.flex-xxl-fill{flex:1 1 auto!important}.flex-xxl-row{flex-direction:row!important}.flex-xxl-column{flex-direction:column!important}.flex-xxl-row-reverse{flex-direction:row-reverse!important}.flex-xxl-column-reverse{flex-direction:column-reverse!important}.flex-xxl-grow-0{flex-grow:0!important}.flex-xxl-grow-1{flex-grow:1!important}.flex-xxl-shrink-0{flex-shrink:0!important}.flex-xxl-shrink-1{flex-shrink:1!important}.flex-xxl-wrap{flex-wrap:wrap!important}.flex-xxl-nowrap{flex-wrap:nowrap!important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-xxl-0{gap:0!important}.gap-xxl-1{gap:.25rem!important}.gap-xxl-2{gap:.5rem!important}.gap-xxl-3{gap:1rem!important}.gap-xxl-4{gap:1.5rem!important}.gap-xxl-5{gap:3rem!important}.justify-content-xxl-start{justify-content:flex-start!important}.justify-content-xxl-end{justify-content:flex-end!important}.justify-content-xxl-center{justify-content:center!important}.justify-content-xxl-between{justify-content:space-between!important}.justify-content-xxl-around{justify-content:space-around!important}.justify-content-xxl-evenly{justify-content:space-evenly!important}.align-items-xxl-start{align-items:flex-start!important}.align-items-xxl-end{align-items:flex-end!important}.align-items-xxl-center{align-items:center!important}.align-items-xxl-baseline{align-items:baseline!important}.align-items-xxl-stretch{align-items:stretch!important}.align-content-xxl-start{align-content:flex-start!important}.align-content-xxl-end{align-content:flex-end!important}.align-content-xxl-center{align-content:center!important}.align-content-xxl-between{align-content:space-between!important}.align-content-xxl-around{align-content:space-around!important}.align-content-xxl-stretch{align-content:stretch!important}.align-self-xxl-auto{align-self:auto!important}.align-self-xxl-start{align-self:flex-start!important}.align-self-xxl-end{align-self:flex-end!important}.align-self-xxl-center{align-self:center!important}.align-self-xxl-baseline{align-self:baseline!important}.align-self-xxl-stretch{align-self:stretch!important}.order-xxl-first{order:-1!important}.order-xxl-0{order:0!important}.order-xxl-1{order:1!important}.order-xxl-2{order:2!important}.order-xxl-3{order:3!important}.order-xxl-4{order:4!important}.order-xxl-5{order:5!important}.order-xxl-last{order:6!important}.m-xxl-0{margin:0!important}.m-xxl-1{margin:.25rem!important}.m-xxl-2{margin:.5rem!important}.m-xxl-3{margin:1rem!important}.m-xxl-4{margin:1.5rem!important}.m-xxl-5{margin:3rem!important}.m-xxl-auto{margin:auto!important}.mx-xxl-0{margin-right:0!important;margin-left:0!important}.mx-xxl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xxl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xxl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xxl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xxl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xxl-auto{margin-right:auto!important;margin-left:auto!important}.my-xxl-0{margin-top:0!important;margin-bottom:0!important}.my-xxl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xxl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xxl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xxl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xxl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xxl-0{margin-top:0!important}.mt-xxl-1{margin-top:.25rem!important}.mt-xxl-2{margin-top:.5rem!important}.mt-xxl-3{margin-top:1rem!important}.mt-xxl-4{margin-top:1.5rem!important}.mt-xxl-5{margin-top:3rem!important}.mt-xxl-auto{margin-top:auto!important}.me-xxl-0{margin-right:0!important}.me-xxl-1{margin-right:.25rem!important}.me-xxl-2{margin-right:.5rem!important}.me-xxl-3{margin-right:1rem!important}.me-xxl-4{margin-right:1.5rem!important}.me-xxl-5{margin-right:3rem!important}.me-xxl-auto{margin-right:auto!important}.mb-xxl-0{margin-bottom:0!important}.mb-xxl-1{margin-bottom:.25rem!important}.mb-xxl-2{margin-bottom:.5rem!important}.mb-xxl-3{margin-bottom:1rem!important}.mb-xxl-4{margin-bottom:1.5rem!important}.mb-xxl-5{margin-bottom:3rem!important}.mb-xxl-auto{margin-bottom:auto!important}.ms-xxl-0{margin-left:0!important}.ms-xxl-1{margin-left:.25rem!important}.ms-xxl-2{margin-left:.5rem!important}.ms-xxl-3{margin-left:1rem!important}.ms-xxl-4{margin-left:1.5rem!important}.ms-xxl-5{margin-left:3rem!important}.ms-xxl-auto{margin-left:auto!important}.p-xxl-0{padding:0!important}.p-xxl-1{padding:.25rem!important}.p-xxl-2{padding:.5rem!important}.p-xxl-3{padding:1rem!important}.p-xxl-4{padding:1.5rem!important}.p-xxl-5{padding:3rem!important}.px-xxl-0{padding-right:0!important;padding-left:0!important}.px-xxl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xxl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xxl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xxl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xxl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xxl-0{padding-top:0!important;padding-bottom:0!important}.py-xxl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xxl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xxl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xxl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xxl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xxl-0{padding-top:0!important}.pt-xxl-1{padding-top:.25rem!important}.pt-xxl-2{padding-top:.5rem!important}.pt-xxl-3{padding-top:1rem!important}.pt-xxl-4{padding-top:1.5rem!important}.pt-xxl-5{padding-top:3rem!important}.pe-xxl-0{padding-right:0!important}.pe-xxl-1{padding-right:.25rem!important}.pe-xxl-2{padding-right:.5rem!important}.pe-xxl-3{padding-right:1rem!important}.pe-xxl-4{padding-right:1.5rem!important}.pe-xxl-5{padding-right:3rem!important}.pb-xxl-0{padding-bottom:0!important}.pb-xxl-1{padding-bottom:.25rem!important}.pb-xxl-2{padding-bottom:.5rem!important}.pb-xxl-3{padding-bottom:1rem!important}.pb-xxl-4{padding-bottom:1.5rem!important}.pb-xxl-5{padding-bottom:3rem!important}.ps-xxl-0{padding-left:0!important}.ps-xxl-1{padding-left:.25rem!important}.ps-xxl-2{padding-left:.5rem!important}.ps-xxl-3{padding-left:1rem!important}.ps-xxl-4{padding-left:1.5rem!important}.ps-xxl-5{padding-left:3rem!important}.text-xxl-start{text-align:left!important}.text-xxl-end{text-align:right!important}.text-xxl-center{text-align:center!important}}@media (min-width: 1200px){.fs-1{font-size:2.5rem!important}.fs-2{font-size:2rem!important}.fs-3{font-size:1.75rem!important}.fs-4{font-size:1.5rem!important}}@media print{.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-grid{display:grid!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}.d-print-none{display:none!important}}:root{--nbx-select-content-bg: #fff;--nbx-select-option-selected-bg: #dee2e6;--nbx-select-option-hover-bg: #0d6efd;--nbx-select-option-hover-color: #fff;--nbx-select-placeholder-color: #adb5bd;--nbx-select-value-color: #fff}:root[data-netbox-color-mode=dark]{--nbx-select-content-bg: #212529;--nbx-select-option-selected-bg: #adb5bd;--nbx-select-option-hover-bg: #9ec5fe;--nbx-select-option-hover-color: #000;--nbx-select-placeholder-color: #495057;--nbx-select-value-color: #000}.ss-main{position:relative;display:inline-block;user-select:none;color:#212529;width:100%}.ss-main .ss-single-selected{display:flex;cursor:pointer;width:100%;height:calc(1.5em + (.75rem + 2px));padding:.75rem;border:1px solid #ced4da;border-radius:.375rem;background-color:#fff;outline:0;box-sizing:border-box;transition:background-color .2s}.ss-main .ss-single-selected.ss-disabled{background-color:#ced4da;cursor:not-allowed}.ss-main .ss-single-selected.ss-open-above{border-top-left-radius:0;border-top-right-radius:0}.ss-main .ss-single-selected.ss-open-below{border-bottom-left-radius:0;border-bottom-right-radius:0}.ss-main .ss-single-selected .placeholder{display:flex;flex:1 1 100%;align-items:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:left;width:calc(100% - 30px);line-height:1em;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ss-main .ss-single-selected .placeholder *{display:flex;align-items:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:auto}.ss-main .ss-single-selected .placeholder .ss-disabled{color:#6c757d}.ss-main .ss-single-selected .ss-deselect{display:flex;align-items:center;justify-content:flex-end;flex:0 1 auto;margin:0 .75rem;font-weight:bold}.ss-main .ss-single-selected .ss-deselect.ss-hide{display:none}.ss-main .ss-single-selected .ss-arrow{display:flex;align-items:center;justify-content:flex-end;flex:0 1 auto;margin:0 .75rem}.ss-main .ss-single-selected .ss-arrow span{border:solid #212529;border-width:0 2px 2px 0;display:inline-block;padding:3px;transition:transform .2s,margin .2s}.ss-main .ss-single-selected .ss-arrow span.arrow-up{transform:rotate(-135deg);margin:3px 0 0}.ss-main .ss-single-selected .ss-arrow span.arrow-down{transform:rotate(45deg);margin:-3px 0 0}.ss-main .ss-multi-selected{display:flex;flex-direction:row;cursor:pointer;min-height:calc(1.5em + (.75rem + 2px));width:100%;padding:0 0 0 3px;border:1px solid #ced4da;border-radius:.375rem;background-color:#fff;outline:0;box-sizing:border-box;transition:background-color .2s}.ss-main .ss-multi-selected.ss-disabled{background-color:#ced4da;cursor:not-allowed}.ss-main .ss-multi-selected.ss-disabled .ss-values .ss-disabled{color:#212529}.ss-main .ss-multi-selected.ss-disabled .ss-values .ss-value .ss-value-delete{cursor:not-allowed}.ss-main .ss-multi-selected.ss-open-above{border-top-left-radius:0;border-top-right-radius:0}.ss-main .ss-multi-selected.ss-open-below{border-bottom-left-radius:0;border-bottom-right-radius:0}.ss-main .ss-multi-selected .ss-values{display:flex;flex-wrap:wrap;justify-content:flex-start;flex:1 1 100%;width:calc(100% - 30px)}.ss-main .ss-multi-selected .ss-values .ss-disabled{display:flex;padding:4px 5px;margin:2px 0;line-height:1em;align-items:center;width:100%;color:#6c757d;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@keyframes scaleIn{0%{transform:scale(0);opacity:0}to{transform:scale(1);opacity:1}}@keyframes scaleOut{0%{transform:scale(1);opacity:1}to{transform:scale(0);opacity:0}}.ss-main .ss-multi-selected .ss-values .ss-value{display:flex;user-select:none;align-items:center;font-size:12px;padding:3px 5px;margin:3px 5px 3px 0;color:#fff;background-color:#0d6efd;border-radius:.375rem;animation-name:scaleIn;animation-duration:.2s;animation-timing-function:ease-out;animation-fill-mode:both}.ss-main .ss-multi-selected .ss-values .ss-value.ss-out{animation-name:scaleOut;animation-duration:.2s;animation-timing-function:ease-out}.ss-main .ss-multi-selected .ss-values .ss-value .ss-value-delete{margin:0 0 0 5px;cursor:pointer}.ss-main .ss-multi-selected .ss-add{display:flex;flex:0 1 3px;margin:9px 12px 0 5px}.ss-main .ss-multi-selected .ss-add .ss-plus{display:flex;justify-content:center;align-items:center;background:#212529;position:relative;height:10px;width:2px;transition:transform .2s}.ss-main .ss-multi-selected .ss-add .ss-plus:after{background:#212529;content:"";position:absolute;height:2px;width:10px;left:-4px;top:4px}.ss-main .ss-multi-selected .ss-add .ss-plus.ss-cross{transform:rotate(45deg)}.ss-content{position:absolute;width:100%;margin:-1px 0 0;box-sizing:border-box;border:solid 1px #ced4da;z-index:1010;background-color:#fff;transform-origin:center top;transition:transform .2s,opacity .2s;opacity:0;transform:scaleY(0)}.ss-content.ss-open{display:block;opacity:1;transform:scaleY(1)}.ss-content .ss-search{display:flex;flex-direction:row;padding:.75rem}.ss-content .ss-search.ss-hide{height:0px;opacity:0;padding:0;margin:0}.ss-content .ss-search.ss-hide input{height:0px;opacity:0;padding:0;margin:0}.ss-content .ss-search input{display:inline-flex;font-size:inherit;line-height:inherit;flex:1 1 auto;width:100%;min-width:0px;height:30px;padding:.75rem;margin:0;border:1px solid #ced4da;border-radius:.375rem;background-color:#fff;outline:0;text-align:left;box-sizing:border-box;-webkit-box-sizing:border-box;-webkit-appearance:textfield}.ss-content .ss-search input::placeholder{color:#adb5bd;vertical-align:middle}.ss-content .ss-search input:focus{box-shadow:0 0 5px #0d6efd}.ss-content .ss-search .ss-addable{display:inline-flex;justify-content:center;align-items:center;cursor:pointer;font-size:22px;font-weight:bold;flex:0 0 30px;height:30px;margin:0 0 0 8px;border:1px solid #ced4da;border-radius:.375rem;box-sizing:border-box}.ss-content .ss-addable{padding-top:0}.ss-content .ss-list{max-height:200px;overflow-x:hidden;overflow-y:auto;text-align:left}.ss-content .ss-list .ss-optgroup .ss-optgroup-label{padding:6px 10px;font-weight:bold}.ss-content .ss-list .ss-optgroup .ss-option{padding:6px 6px 6px 25px}.ss-content .ss-list .ss-optgroup-label-selectable{cursor:pointer}.ss-content .ss-list .ss-optgroup-label-selectable:hover{color:#fff;background-color:#0d6efd}.ss-content .ss-list .ss-option{padding:6px 10px;cursor:pointer;user-select:none}.ss-content .ss-list .ss-option *{display:inline-block}.ss-content .ss-list .ss-option:hover,.ss-content .ss-list .ss-option.ss-highlighted{color:#fff;background-color:#0d6efd}.ss-content .ss-list .ss-option.ss-disabled{cursor:not-allowed;color:#6c757d;background-color:#fff}.ss-content .ss-list .ss-option:not(.ss-disabled).ss-option-selected{color:#212529;background-color:#0d6efd1a}.ss-content .ss-list .ss-option.ss-hide{display:none}.ss-content .ss-list .ss-option .ss-search-highlight{background-color:#ffc107}.ss-main{color:#212529}.ss-main.is-invalid .ss-single-selected,.ss-main.is-invalid .ss-multi-selected{border-color:#dc3545}.ss-main.is-valid .ss-single-selected,.ss-main.is-valid .ss-multi-selected{border-color:#198754}.ss-main .ss-single-selected,.ss-main .ss-multi-selected{padding:.375rem .75rem;background-color:#fff;border:1px solid #e9ecef}.ss-main .ss-single-selected[disabled],.ss-main .ss-multi-selected[disabled]{color:#6c757d;background-color:#e9ecef}.ss-main div.ss-multi-selected .ss-values .ss-disabled,.ss-main div.ss-single-selected span.placeholder .ss-disabled{color:var(--nbx-select-placeholder-color)}.ss-main .ss-single-selected span.ss-arrow span.arrow-down,.ss-main .ss-single-selected span.ss-arrow span.arrow-up{border-color:currentColor;color:#6c757d}.ss-main .ss-single-selected .placeholder .depth{display:none}.ss-main .ss-single-selected span.placeholder>*,.ss-main .ss-single-selected span.placeholder{line-height:1.5}.ss-main .ss-multi-selected{align-items:center;padding-right:.75rem;padding-left:.75rem}.ss-main .ss-multi-selected .ss-values .ss-disabled{padding:4px 0}.ss-main .ss-multi-selected .ss-values .ss-value{color:var(--nbx-select-value-color);border-radius:.375rem}.ss-main .ss-multi-selected .ss-values .ss-value .depth{display:none}.ss-main .ss-multi-selected .ss-add{margin:0 .75rem}.ss-main .ss-content{background-color:var(--nbx-select-content-bg);border-bottom-right-radius:.375rem;border-bottom-left-radius:.375rem}.ss-main .ss-content .ss-list .ss-option.ss-option-selected{color:#212529;background-color:var(--nbx-select-option-selected-bg)}.ss-main .ss-content .ss-list .ss-option:hover{color:var(--nbx-select-option-hover-color);background-color:var(--nbx-select-option-hover-bg)}.ss-main .ss-content .ss-list .ss-option:last-child{border-bottom-right-radius:.375rem;border-bottom-left-radius:.375rem}.ss-main .ss-content .ss-list .ss-option.ss-disabled{background-color:unset}.ss-main .ss-content .ss-list .ss-option.ss-disabled:hover{color:#6c757d}.ss-main .ss-content .ss-list .ss-option .depth{opacity:.3}.ss-main .ss-content .ss-list::-webkit-scrollbar{right:0;width:4px}.ss-main .ss-content .ss-list::-webkit-scrollbar:hover{opacity:.8}.ss-main .ss-content .ss-list::-webkit-scrollbar-track{background:transparent}.ss-main .ss-content .ss-list::-webkit-scrollbar-thumb{right:0;width:2px;background-color:var(--nbx-sidebar-scroll)}.ss-main .ss-content .ss-search{padding-right:.5rem}.ss-main .ss-content .ss-search button{margin-left:.75rem}.ss-main .ss-content .ss-search input[type=search]{color:#212529;background-color:#fff;border:1px solid #e9ecef}.ss-main .ss-content .ss-search input[type=search]:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}.sidenav{position:fixed;top:0;bottom:0;left:0;z-index:1050;display:block;width:100%;max-width:3rem;padding-top:0;padding-right:0;padding-left:0;background-color:var(--nbx-sidebar-bg);border-right:1px solid #ced4da;transition:all .1s ease-in-out}@media (max-width: 991.98px){.sidenav{transform:translate(-3rem)}.sidenav+.content-container[class]{margin-left:0}.sidenav .profile-button-container[class]{display:block}}.sidenav .profile-button-container{display:none;padding:.5rem 1rem}.sidenav+.content-container{margin-left:3rem;transition:all .1s ease-in-out}.sidenav .sidenav-brand{margin-right:0;transition:opacity .1s ease-in-out}.sidenav .sidenav-brand-icon{transition:opacity .1s ease-in-out}.sidenav .sidenav-inner{padding-right:1.5rem;padding-left:1.5rem}@media (min-width: 768px){.sidenav .sidenav-inner{padding-right:0;padding-left:0}}.sidenav .sidenav-brand-img,.sidenav .sidenav-brand>img{max-width:100%;max-height:calc(16rem - 1rem)}.sidenav .navbar-heading{padding-top:.5rem;padding-bottom:.5rem;font-size:.75rem;text-transform:uppercase;letter-spacing:.04em}.sidenav .sidenav-header{position:relative;display:flex;align-items:center;justify-content:space-between;height:78px;padding:1rem;transition:all .1s ease-in-out}.sidenav .sidenav-toggle{position:absolute;display:inline-block;opacity:0;transition:opacity 10ms ease-in-out;transition-delay:.1s}.sidenav .sidenav-collapse{display:flex;flex:1;flex-direction:column;align-items:stretch;padding-right:1.5rem;padding-left:1.5rem;margin-right:-1.5rem;margin-left:-1.5rem}.sidenav .sidenav-collapse>*{min-width:100%}@media (min-width: 768px){.sidenav .sidenav-collapse{margin-right:0;margin-left:0}}.sidenav .nav-group-header{padding:.25rem 1rem;margin-top:.5rem;margin-bottom:0}.sidenav .nav .nav-item{display:flex;align-items:center;justify-content:space-between;width:100%}.sidenav .nav .nav-item.no-buttons{padding-right:5rem}.sidenav .collapse .nav .nav-item .nav-link{width:100%;padding:.25rem .25rem .25rem 1rem;margin-top:0;margin-bottom:0;border-top-right-radius:.375rem;border-bottom-right-radius:.375rem}.sidenav .collapse .nav .nav-item .nav-link .sidenav-mini-icon{width:1rem;text-align:center;transition:all .1s ease-in-out}.sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle]{width:unset;height:100%;padding-left:.5rem;font-weight:700;color:var(--nbx-sidenav-parent-color)}.sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle].active{color:#343a40;background:#cfe2ff}.sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle]:after{display:inline-block;margin-left:auto;font-family:"Material Design Icons";font-style:normal;font-weight:700;font-variant:normal;color:#6c757d;text-rendering:auto;-webkit-font-smoothing:antialiased;content:"\f0142";transition:all .1s ease-in-out}.sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle][aria-expanded=true].active:after{color:#343a40}.sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle][aria-expanded=true]:after{color:#0d6efd;transform:rotate(90deg)}.sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle] .nav-link-text{padding-left:.25rem;transition:all .1s ease-in-out}.sidenav .navbar-nav{flex-direction:column;margin-right:-1.5rem;margin-left:-1.5rem}.sidenav .navbar-nav .nav-item{margin-top:2px}.sidenav .navbar-nav .nav-item.disabled{cursor:not-allowed;opacity:.8}.sidenav .navbar-nav .nav-item .nav-link{position:relative;display:flex;align-items:center;width:100%;padding:.5rem 1rem;font-size:.875rem;color:var(--nbx-sidenav-link-color);white-space:nowrap;transition:all .1s ease-in-out}.sidenav .navbar-nav .nav-item .nav-link.active{background-color:var(--nbx-sidebar-link-active-bg)}.sidenav .navbar-nav .nav-item .nav-link:hover:not(.active){color:var(--nbx-body-color);background-color:var(--nbx-sidebar-link-hover-bg)}.sidenav .navbar-nav .nav-item .nav-link>i{min-width:2rem;font-size:calc(45px / 2);text-align:center}.sidenav .navbar-nav .nav-group-label{display:block;font-size:.75rem;font-weight:700;color:var(--nbx-sidenav-group-color);text-transform:uppercase;white-space:nowrap}body[data-sidenav-pinned] .sidenav .sidenav-toggle-icon{color:var(--nbx-sidenav-pin-color);transform:rotate(90deg)}@media (min-width: 1200px){body[data-sidenav-pinned] .sidenav+.content-container{margin-left:16rem}}.g-sidenav-show:not(.g-sidenav-pinned) .sidenav .sidenav-toggle-icon{transform:rotate(0)}body[data-sidenav-show] .sidenav,body[data-sidenav-pinned] .sidenav{max-width:16rem}body[data-sidenav-show] .sidenav .sidenav-brand,body[data-sidenav-show] .sidenav .navbar-heading,body[data-sidenav-pinned] .sidenav .sidenav-brand,body[data-sidenav-pinned] .sidenav .navbar-heading{display:block}body[data-sidenav-show] .sidenav .sidenav-brand,body[data-sidenav-pinned] .sidenav .sidenav-brand{opacity:1;transform:translate(0)}body[data-sidenav-show] .sidenav .sidenav-brand-icon,body[data-sidenav-pinned] .sidenav .sidenav-brand-icon{position:absolute;opacity:0}@media (max-width: 991.98px){body[data-sidenav-show] .sidenav,body[data-sidenav-pinned] .sidenav{transform:translate(0)}}body[data-sidenav-hide] .sidenav .sidenav-header,body[data-sidenav-hidden] .sidenav .sidenav-header{padding:.5rem}body[data-sidenav-hide] .sidenav .sidenav-brand,body[data-sidenav-hidden] .sidenav .sidenav-brand{position:absolute;opacity:0}body[data-sidenav-hide] .sidenav .sidenav-brand-icon,body[data-sidenav-hidden] .sidenav .sidenav-brand-icon{opacity:1}body[data-sidenav-hide] .sidenav .sidenav-toggle,body[data-sidenav-hidden] .sidenav .sidenav-toggle{opacity:0;position:absolute;transition:unset;transition-delay:0ms}body[data-sidenav-hide] .sidenav .navbar-nav>.nav-item>.nav-link:after,body[data-sidenav-hidden] .sidenav .navbar-nav>.nav-item>.nav-link:after{content:""}body[data-sidenav-hide] .sidenav .nav-item .collapse,body[data-sidenav-hidden] .sidenav .nav-item .collapse{display:none}body[data-sidenav-hide] .sidenav .nav-link-text,body[data-sidenav-hidden] .sidenav .nav-link-text{opacity:0}body[data-sidenav-hide] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle].active,body[data-sidenav-hidden] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle].active{margin-right:0;margin-left:0;border-radius:unset}body[data-sidenav-show] .sidenav .sidenav-brand{display:block}body[data-sidenav-show] .sidenav .nav-item .collapse{height:auto;transition:all .1s ease-in-out}body[data-sidenav-show] .sidenav .nav-item .nav-link .nav-link-text{opacity:1}body[data-sidenav-show] .sidenav .nav-item .sidenav-mini-icon{opacity:0}@media (min-width: 992px){body[data-sidenav-show] .sidenav .sidenav-toggle{position:relative;opacity:1}}.simplebar-track.simplebar-vertical{right:0;width:6px;background-color:transparent}.simplebar-track.simplebar-vertical .simplebar-scrollbar{transition:none}.simplebar-track.simplebar-vertical .simplebar-scrollbar:before{right:0;width:3px;background:var(--nbx-sidebar-scroll);border-radius:.375rem}.simplebar-track.simplebar-vertical.simplebar-hover .simplebar-scrollbar:before{width:5px}body{color:var(--nbx-body-color);background-color:var(--nbx-body-bg);font-size:.875rem}pre{padding:1rem;white-space:pre;background-color:var(--nbx-pre-bg);border:1px solid var(--nbx-pre-border-color);border-radius:.375rem}small,.small{font-size:smaller!important}a[type=button]{-webkit-appearance:unset!important}*[data-href]{cursor:pointer}.form-control:not([type=file]){font-size:inherit}.badge{font-size:.75rem}.text-xs{font-size:.75rem!important;line-height:1.25!important}.border-input{border:1px solid #e9ecef!important}.ws-nowrap{white-space:nowrap!important}table tr .vertical-align,table td .vertical-align{vertical-align:middle}@media print{.noprint{display:none!important;visibility:hidden!important}}.printonly{display:none!important;visibility:hidden!important}@media print{.printonly{display:block!important;visibility:visible!important}}:root{--nbx-sidebar-bg: #e9ecef;--nbx-sidebar-scroll: #adb5bd;--nbx-sidebar-link-hover-bg: rgba(108, 117, 125, .15);--nbx-sidebar-link-active-bg: #cfe2ff;--nbx-sidebar-title-color: #6c757d;--nbx-sidebar-shadow: inset 0px -25px 20px -25px rgba(0, 0, 0, .25);--nbx-breadcrumb-bg: #e9ecef;--nbx-body-bg: #fff;--nbx-body-color: #343a40;--nbx-pre-bg: #f8f9fa;--nbx-pre-border-color: #6c757d;--nbx-change-added: rgba(25, 135, 84, .4);--nbx-change-removed: rgba(220, 53, 69, .4);--nbx-cable-node-bg: #f8f9fa;--nbx-cable-node-border-color: #e9ecef;--nbx-cable-termination-bg: #e9ecef;--nbx-cable-termination-border-color: #dee2e6;--nbx-search-filter-border-left-color: #dee2e6;--nbx-color-mode-toggle-color: #0d6efd;--nbx-sidenav-link-color: #343a40;--nbx-sidenav-pin-color: #fd7e14;--nbx-sidenav-parent-color: #343a40;--nbx-sidenav-group-color: #343a40}:root[data-netbox-color-mode=dark]{--nbx-sidebar-bg: #212529;--nbx-sidebar-scroll: #495057;--nbx-sidebar-link-active-bg: rgba(110, 168, 254, .25);--nbx-sidebar-link-hover-bg: rgba(173, 181, 189, .15);--nbx-sidebar-title-color: #6c757d;--nbx-sidebar-shadow: inset 0px -25px 20px -25px rgba(255, 255, 255, .05);--nbx-breadcrumb-bg: #343a40;--nbx-body-bg: #1b1f22;--nbx-body-color: #f8f9fa;--nbx-pre-bg: #495057;--nbx-pre-border-color: #6c757d;--nbx-change-added: rgba(117, 183, 152, .4);--nbx-change-removed: rgba(234, 134, 143, .4);--nbx-cable-node-bg: #495057;--nbx-cable-node-border-color: #6c757d;--nbx-cable-termination-bg: #343a40;--nbx-cable-termination-border-color: #495057;--nbx-search-filter-border-left-color: #6c757d;--nbx-color-mode-toggle-color: #ffda6a;--nbx-sidenav-link-color: #e9ecef;--nbx-sidenav-pin-color: #ffc107;--nbx-sidenav-parent-color: #e9ecef;--nbx-sidenav-group-color: #6c757d}.bg-primary button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%231f496e'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-primary{color:#337ab7}.btn.btn-ghost-primary:hover{background-color:#337ab71f}.alert.alert-primary a:not(.btn),.table-primary a:not(.btn){font-weight:700;color:#1f496e}.alert.alert-primary .btn:not([class*=btn-outline]),.table-primary .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-primary a:not(.btn){font-weight:700;color:#adcae2}.badge.bg-primary,.toast.bg-primary,.toast-header.bg-primary,.progress-bar.bg-primary{color:#fff}.bg-secondary button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%2341464b'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-secondary{color:#6c757d}.btn.btn-ghost-secondary:hover{background-color:#6c757d1f}.alert.alert-secondary a:not(.btn),.table-secondary a:not(.btn){font-weight:700;color:#41464b}.alert.alert-secondary .btn:not([class*=btn-outline]),.table-secondary .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-secondary a:not(.btn){font-weight:700;color:#c4c8cb}.badge.bg-secondary,.toast.bg-secondary,.toast-header.bg-secondary,.progress-bar.bg-secondary{color:#fff}.bg-success button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230f5132'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-success{color:#198754}.btn.btn-ghost-success:hover{background-color:#1987541f}.alert.alert-success a:not(.btn),.table-success a:not(.btn){font-weight:700;color:#0f5132}.alert.alert-success .btn:not([class*=btn-outline]),.table-success .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-success a:not(.btn){font-weight:700;color:#a3cfbb}.badge.bg-success,.toast.bg-success,.toast-header.bg-success,.progress-bar.bg-success{color:#fff}.bg-info button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23055160'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-info{color:#0dcaf0}.btn.btn-ghost-info:hover{background-color:#0dcaf01f}.alert.alert-info a:not(.btn),.table-info a:not(.btn){font-weight:700;color:#055160}.alert.alert-info .btn:not([class*=btn-outline]),.table-info .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-info a:not(.btn){font-weight:700;color:#055160}.badge.bg-info,.toast.bg-info,.toast-header.bg-info,.progress-bar.bg-info{color:#000}.bg-warning button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23664d03'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-warning{color:#ffc107}.btn.btn-ghost-warning:hover{background-color:#ffc1071f}.alert.alert-warning a:not(.btn),.table-warning a:not(.btn){font-weight:700;color:#664d03}.alert.alert-warning .btn:not([class*=btn-outline]),.table-warning .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-warning a:not(.btn){font-weight:700;color:#664d03}.badge.bg-warning,.toast.bg-warning,.toast-header.bg-warning,.progress-bar.bg-warning{color:#000}.bg-danger button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23842029'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-danger{color:#dc3545}.btn.btn-ghost-danger:hover{background-color:#dc35451f}.alert.alert-danger a:not(.btn),.table-danger a:not(.btn){font-weight:700;color:#842029}.alert.alert-danger .btn:not([class*=btn-outline]),.table-danger .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-danger a:not(.btn){font-weight:700;color:#f1aeb5}.badge.bg-danger,.toast.bg-danger,.toast-header.bg-danger,.progress-bar.bg-danger{color:#fff}.bg-light button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23636464'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-light{color:#f8f9fa}.btn.btn-ghost-light:hover{background-color:#f8f9fa1f}.alert.alert-light a:not(.btn),.table-light a:not(.btn){font-weight:700;color:#636464}.alert.alert-light .btn:not([class*=btn-outline]),.table-light .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-light a:not(.btn){font-weight:700;color:#636464}.badge.bg-light,.toast.bg-light,.toast-header.bg-light,.progress-bar.bg-light{color:#000}.bg-dark button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23141619'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-dark{color:#212529}.btn.btn-ghost-dark:hover{background-color:#2125291f}.alert.alert-dark a:not(.btn),.table-dark a:not(.btn){font-weight:700;color:#141619}.alert.alert-dark .btn:not([class*=btn-outline]),.table-dark .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-dark a:not(.btn){font-weight:700;color:#a6a8a9}.badge.bg-dark,.toast.bg-dark,.toast-header.bg-dark,.progress-bar.bg-dark{color:#fff}.bg-red button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23842029'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-red{color:#dc3545}.btn.btn-ghost-red:hover{background-color:#dc35451f}.alert.alert-red a:not(.btn),.table-red a:not(.btn){font-weight:700;color:#842029}.alert.alert-red .btn:not([class*=btn-outline]),.table-red .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-red a:not(.btn){font-weight:700;color:#f1aeb5}.badge.bg-red,.toast.bg-red,.toast-header.bg-red,.progress-bar.bg-red{color:#fff}.bg-yellow button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23664d03'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-yellow{color:#ffc107}.btn.btn-ghost-yellow:hover{background-color:#ffc1071f}.alert.alert-yellow a:not(.btn),.table-yellow a:not(.btn){font-weight:700;color:#664d03}.alert.alert-yellow .btn:not([class*=btn-outline]),.table-yellow .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-yellow a:not(.btn){font-weight:700;color:#664d03}.badge.bg-yellow,.toast.bg-yellow,.toast-header.bg-yellow,.progress-bar.bg-yellow{color:#000}.bg-green button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230f5132'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-green{color:#198754}.btn.btn-ghost-green:hover{background-color:#1987541f}.alert.alert-green a:not(.btn),.table-green a:not(.btn){font-weight:700;color:#0f5132}.alert.alert-green .btn:not([class*=btn-outline]),.table-green .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-green a:not(.btn){font-weight:700;color:#a3cfbb}.badge.bg-green,.toast.bg-green,.toast-header.bg-green,.progress-bar.bg-green{color:#fff}.bg-blue button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23084298'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-blue{color:#0d6efd}.btn.btn-ghost-blue:hover{background-color:#0d6efd1f}.alert.alert-blue a:not(.btn),.table-blue a:not(.btn){font-weight:700;color:#084298}.alert.alert-blue .btn:not([class*=btn-outline]),.table-blue .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-blue a:not(.btn){font-weight:700;color:#9ec5fe}.badge.bg-blue,.toast.bg-blue,.toast-header.bg-blue,.progress-bar.bg-blue{color:#fff}.bg-cyan button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23055160'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-cyan{color:#0dcaf0}.btn.btn-ghost-cyan:hover{background-color:#0dcaf01f}.alert.alert-cyan a:not(.btn),.table-cyan a:not(.btn){font-weight:700;color:#055160}.alert.alert-cyan .btn:not([class*=btn-outline]),.table-cyan .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-cyan a:not(.btn){font-weight:700;color:#055160}.badge.bg-cyan,.toast.bg-cyan,.toast-header.bg-cyan,.progress-bar.bg-cyan{color:#000}.bg-indigo button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%233d0a91'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-indigo{color:#6610f2}.btn.btn-ghost-indigo:hover{background-color:#6610f21f}.alert.alert-indigo a:not(.btn),.table-indigo a:not(.btn){font-weight:700;color:#3d0a91}.alert.alert-indigo .btn:not([class*=btn-outline]),.table-indigo .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-indigo a:not(.btn){font-weight:700;color:#c29ffa}.badge.bg-indigo,.toast.bg-indigo,.toast-header.bg-indigo,.progress-bar.bg-indigo{color:#fff}.bg-purple button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23432874'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-purple{color:#6f42c1}.btn.btn-ghost-purple:hover{background-color:#6f42c11f}.alert.alert-purple a:not(.btn),.table-purple a:not(.btn){font-weight:700;color:#432874}.alert.alert-purple .btn:not([class*=btn-outline]),.table-purple .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-purple a:not(.btn){font-weight:700;color:#c5b3e6}.badge.bg-purple,.toast.bg-purple,.toast-header.bg-purple,.progress-bar.bg-purple{color:#fff}.bg-pink button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23801f4f'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-pink{color:#d63384}.btn.btn-ghost-pink:hover{background-color:#d633841f}.alert.alert-pink a:not(.btn),.table-pink a:not(.btn){font-weight:700;color:#801f4f}.alert.alert-pink .btn:not([class*=btn-outline]),.table-pink .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-pink a:not(.btn){font-weight:700;color:#efadce}.badge.bg-pink,.toast.bg-pink,.toast-header.bg-pink,.progress-bar.bg-pink{color:#fff}.bg-darker button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23101314'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-darker{color:#1b1f22}.btn.btn-ghost-darker:hover{background-color:#1b1f221f}.alert.alert-darker a:not(.btn),.table-darker a:not(.btn){font-weight:700;color:#101314}.alert.alert-darker .btn:not([class*=btn-outline]),.table-darker .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-darker a:not(.btn){font-weight:700;color:#a4a5a7}.badge.bg-darker,.toast.bg-darker,.toast-header.bg-darker,.progress-bar.bg-darker{color:#fff}.bg-darkest button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230e1011'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-darkest{color:#171b1d}.btn.btn-ghost-darkest:hover{background-color:#171b1d1f}.alert.alert-darkest a:not(.btn),.table-darkest a:not(.btn){font-weight:700;color:#0e1011}.alert.alert-darkest .btn:not([class*=btn-outline]),.table-darkest .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-darkest a:not(.btn){font-weight:700;color:#a2a4a5}.badge.bg-darkest,.toast.bg-darkest,.toast-header.bg-darkest,.progress-bar.bg-darkest{color:#fff}.bg-gray button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23525557'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-gray{color:#ced4da}.btn.btn-ghost-gray:hover{background-color:#ced4da1f}.alert.alert-gray a:not(.btn),.table-gray a:not(.btn){font-weight:700;color:#525557}.alert.alert-gray .btn:not([class*=btn-outline]),.table-gray .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-gray a:not(.btn){font-weight:700;color:#525557}.badge.bg-gray,.toast.bg-gray,.toast-header.bg-gray,.progress-bar.bg-gray{color:#000}.bg-gray-100 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23636464'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-gray-100{color:#f8f9fa}.btn.btn-ghost-gray-100:hover{background-color:#f8f9fa1f}.alert.alert-gray-100 a:not(.btn),.table-gray-100 a:not(.btn){font-weight:700;color:#636464}.alert.alert-gray-100 .btn:not([class*=btn-outline]),.table-gray-100 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-gray-100 a:not(.btn){font-weight:700;color:#636464}.badge.bg-gray-100,.toast.bg-gray-100,.toast-header.bg-gray-100,.progress-bar.bg-gray-100{color:#000}.bg-gray-200 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%235d5e60'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-gray-200{color:#e9ecef}.btn.btn-ghost-gray-200:hover{background-color:#e9ecef1f}.alert.alert-gray-200 a:not(.btn),.table-gray-200 a:not(.btn){font-weight:700;color:#5d5e60}.alert.alert-gray-200 .btn:not([class*=btn-outline]),.table-gray-200 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-gray-200 a:not(.btn){font-weight:700;color:#5d5e60}.badge.bg-gray-200,.toast.bg-gray-200,.toast-header.bg-gray-200,.progress-bar.bg-gray-200{color:#000}.bg-gray-300 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23595a5c'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-gray-300{color:#dee2e6}.btn.btn-ghost-gray-300:hover{background-color:#dee2e61f}.alert.alert-gray-300 a:not(.btn),.table-gray-300 a:not(.btn){font-weight:700;color:#595a5c}.alert.alert-gray-300 .btn:not([class*=btn-outline]),.table-gray-300 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-gray-300 a:not(.btn){font-weight:700;color:#595a5c}.badge.bg-gray-300,.toast.bg-gray-300,.toast-header.bg-gray-300,.progress-bar.bg-gray-300{color:#000}.bg-gray-400 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23525557'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-gray-400{color:#ced4da}.btn.btn-ghost-gray-400:hover{background-color:#ced4da1f}.alert.alert-gray-400 a:not(.btn),.table-gray-400 a:not(.btn){font-weight:700;color:#525557}.alert.alert-gray-400 .btn:not([class*=btn-outline]),.table-gray-400 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-gray-400 a:not(.btn){font-weight:700;color:#525557}.badge.bg-gray-400,.toast.bg-gray-400,.toast-header.bg-gray-400,.progress-bar.bg-gray-400{color:#000}.bg-gray-500 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23686d71'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-gray-500{color:#adb5bd}.btn.btn-ghost-gray-500:hover{background-color:#adb5bd1f}.alert.alert-gray-500 a:not(.btn),.table-gray-500 a:not(.btn){font-weight:700;color:#686d71}.alert.alert-gray-500 .btn:not([class*=btn-outline]),.table-gray-500 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-gray-500 a:not(.btn){font-weight:700;color:#45484c}.badge.bg-gray-500,.toast.bg-gray-500,.toast-header.bg-gray-500,.progress-bar.bg-gray-500{color:#000}.bg-gray-600 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%2341464b'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-gray-600{color:#6c757d}.btn.btn-ghost-gray-600:hover{background-color:#6c757d1f}.alert.alert-gray-600 a:not(.btn),.table-gray-600 a:not(.btn){font-weight:700;color:#41464b}.alert.alert-gray-600 .btn:not([class*=btn-outline]),.table-gray-600 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-gray-600 a:not(.btn){font-weight:700;color:#c4c8cb}.badge.bg-gray-600,.toast.bg-gray-600,.toast-header.bg-gray-600,.progress-bar.bg-gray-600{color:#fff}.bg-gray-700 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%232c3034'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-gray-700{color:#495057}.btn.btn-ghost-gray-700:hover{background-color:#4950571f}.alert.alert-gray-700 a:not(.btn),.table-gray-700 a:not(.btn){font-weight:700;color:#2c3034}.alert.alert-gray-700 .btn:not([class*=btn-outline]),.table-gray-700 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-gray-700 a:not(.btn){font-weight:700;color:#b6b9bc}.badge.bg-gray-700,.toast.bg-gray-700,.toast-header.bg-gray-700,.progress-bar.bg-gray-700{color:#fff}.bg-gray-800 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%231f2326'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-gray-800{color:#343a40}.btn.btn-ghost-gray-800:hover{background-color:#343a401f}.alert.alert-gray-800 a:not(.btn),.table-gray-800 a:not(.btn){font-weight:700;color:#1f2326}.alert.alert-gray-800 .btn:not([class*=btn-outline]),.table-gray-800 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-gray-800 a:not(.btn){font-weight:700;color:#aeb0b3}.badge.bg-gray-800,.toast.bg-gray-800,.toast-header.bg-gray-800,.progress-bar.bg-gray-800{color:#fff}.bg-gray-900 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23141619'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-gray-900{color:#212529}.btn.btn-ghost-gray-900:hover{background-color:#2125291f}.alert.alert-gray-900 a:not(.btn),.table-gray-900 a:not(.btn){font-weight:700;color:#141619}.alert.alert-gray-900 .btn:not([class*=btn-outline]),.table-gray-900 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-gray-900 a:not(.btn){font-weight:700;color:#a6a8a9}.badge.bg-gray-900,.toast.bg-gray-900,.toast-header.bg-gray-900,.progress-bar.bg-gray-900{color:#fff}.bg-red-100 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23635657'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-red-100{color:#f8d7da}.btn.btn-ghost-red-100:hover{background-color:#f8d7da1f}.alert.alert-red-100 a:not(.btn),.table-red-100 a:not(.btn){font-weight:700;color:#635657}.alert.alert-red-100 .btn:not([class*=btn-outline]),.table-red-100 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-red-100 a:not(.btn){font-weight:700;color:#635657}.badge.bg-red-100,.toast.bg-red-100,.toast-header.bg-red-100,.progress-bar.bg-red-100{color:#000}.bg-red-200 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23604648'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-red-200{color:#f1aeb5}.btn.btn-ghost-red-200:hover{background-color:#f1aeb51f}.alert.alert-red-200 a:not(.btn),.table-red-200 a:not(.btn){font-weight:700;color:#604648}.alert.alert-red-200 .btn:not([class*=btn-outline]),.table-red-200 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-red-200 a:not(.btn){font-weight:700;color:#604648}.badge.bg-red-200,.toast.bg-red-200,.toast-header.bg-red-200,.progress-bar.bg-red-200{color:#000}.bg-red-300 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%238c5056'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-red-300{color:#ea868f}.btn.btn-ghost-red-300:hover{background-color:#ea868f1f}.alert.alert-red-300 a:not(.btn),.table-red-300 a:not(.btn){font-weight:700;color:#8c5056}.alert.alert-red-300 .btn:not([class*=btn-outline]),.table-red-300 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-red-300 a:not(.btn){font-weight:700;color:#5e3639}.badge.bg-red-300,.toast.bg-red-300,.toast-header.bg-red-300,.progress-bar.bg-red-300{color:#000}.bg-red-400 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23883840'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-red-400{color:#e35d6a}.btn.btn-ghost-red-400:hover{background-color:#e35d6a1f}.alert.alert-red-400 a:not(.btn),.table-red-400 a:not(.btn){font-weight:700;color:#883840}.alert.alert-red-400 .btn:not([class*=btn-outline]),.table-red-400 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-red-400 a:not(.btn){font-weight:700;color:#5b252a}.badge.bg-red-400,.toast.bg-red-400,.toast-header.bg-red-400,.progress-bar.bg-red-400{color:#000}.bg-red-500 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23842029'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-red-500{color:#dc3545}.btn.btn-ghost-red-500:hover{background-color:#dc35451f}.alert.alert-red-500 a:not(.btn),.table-red-500 a:not(.btn){font-weight:700;color:#842029}.alert.alert-red-500 .btn:not([class*=btn-outline]),.table-red-500 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-red-500 a:not(.btn){font-weight:700;color:#f1aeb5}.badge.bg-red-500,.toast.bg-red-500,.toast-header.bg-red-500,.progress-bar.bg-red-500{color:#fff}.bg-red-600 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236a1921'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-red-600{color:#b02a37}.btn.btn-ghost-red-600:hover{background-color:#b02a371f}.alert.alert-red-600 a:not(.btn),.table-red-600 a:not(.btn){font-weight:700;color:#6a1921}.alert.alert-red-600 .btn:not([class*=btn-outline]),.table-red-600 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-red-600 a:not(.btn){font-weight:700;color:#dfaaaf}.badge.bg-red-600,.toast.bg-red-600,.toast-header.bg-red-600,.progress-bar.bg-red-600{color:#fff}.bg-red-700 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%234f1319'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-red-700{color:#842029}.btn.btn-ghost-red-700:hover{background-color:#8420291f}.alert.alert-red-700 a:not(.btn),.table-red-700 a:not(.btn){font-weight:700;color:#4f1319}.alert.alert-red-700 .btn:not([class*=btn-outline]),.table-red-700 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-red-700 a:not(.btn){font-weight:700;color:#cea6a9}.badge.bg-red-700,.toast.bg-red-700,.toast-header.bg-red-700,.progress-bar.bg-red-700{color:#fff}.bg-red-800 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23350d11'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-red-800{color:#58151c}.btn.btn-ghost-red-800:hover{background-color:#58151c1f}.alert.alert-red-800 a:not(.btn),.table-red-800 a:not(.btn){font-weight:700;color:#350d11}.alert.alert-red-800 .btn:not([class*=btn-outline]),.table-red-800 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-red-800 a:not(.btn){font-weight:700;color:#bca1a4}.badge.bg-red-800,.toast.bg-red-800,.toast-header.bg-red-800,.progress-bar.bg-red-800{color:#fff}.bg-red-900 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%231a0708'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-red-900{color:#2c0b0e}.btn.btn-ghost-red-900:hover{background-color:#2c0b0e1f}.alert.alert-red-900 a:not(.btn),.table-red-900 a:not(.btn){font-weight:700;color:#1a0708}.alert.alert-red-900 .btn:not([class*=btn-outline]),.table-red-900 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-red-900 a:not(.btn){font-weight:700;color:#ab9d9f}.badge.bg-red-900,.toast.bg-red-900,.toast-header.bg-red-900,.progress-bar.bg-red-900{color:#fff}.bg-yellow-100 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23666152'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-yellow-100{color:#fff3cd}.btn.btn-ghost-yellow-100:hover{background-color:#fff3cd1f}.alert.alert-yellow-100 a:not(.btn),.table-yellow-100 a:not(.btn){font-weight:700;color:#666152}.alert.alert-yellow-100 .btn:not([class*=btn-outline]),.table-yellow-100 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-yellow-100 a:not(.btn){font-weight:700;color:#666152}.badge.bg-yellow-100,.toast.bg-yellow-100,.toast-header.bg-yellow-100,.progress-bar.bg-yellow-100{color:#000}.bg-yellow-200 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23665c3e'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-yellow-200{color:#ffe69c}.btn.btn-ghost-yellow-200:hover{background-color:#ffe69c1f}.alert.alert-yellow-200 a:not(.btn),.table-yellow-200 a:not(.btn){font-weight:700;color:#665c3e}.alert.alert-yellow-200 .btn:not([class*=btn-outline]),.table-yellow-200 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-yellow-200 a:not(.btn){font-weight:700;color:#665c3e}.badge.bg-yellow-200,.toast.bg-yellow-200,.toast-header.bg-yellow-200,.progress-bar.bg-yellow-200{color:#000}.bg-yellow-300 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%2366572a'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-yellow-300{color:#ffda6a}.btn.btn-ghost-yellow-300:hover{background-color:#ffda6a1f}.alert.alert-yellow-300 a:not(.btn),.table-yellow-300 a:not(.btn){font-weight:700;color:#66572a}.alert.alert-yellow-300 .btn:not([class*=btn-outline]),.table-yellow-300 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-yellow-300 a:not(.btn){font-weight:700;color:#66572a}.badge.bg-yellow-300,.toast.bg-yellow-300,.toast-header.bg-yellow-300,.progress-bar.bg-yellow-300{color:#000}.bg-yellow-400 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23665217'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-yellow-400{color:#ffcd39}.btn.btn-ghost-yellow-400:hover{background-color:#ffcd391f}.alert.alert-yellow-400 a:not(.btn),.table-yellow-400 a:not(.btn){font-weight:700;color:#665217}.alert.alert-yellow-400 .btn:not([class*=btn-outline]),.table-yellow-400 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-yellow-400 a:not(.btn){font-weight:700;color:#665217}.badge.bg-yellow-400,.toast.bg-yellow-400,.toast-header.bg-yellow-400,.progress-bar.bg-yellow-400{color:#000}.bg-yellow-500 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23664d03'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-yellow-500{color:#ffc107}.btn.btn-ghost-yellow-500:hover{background-color:#ffc1071f}.alert.alert-yellow-500 a:not(.btn),.table-yellow-500 a:not(.btn){font-weight:700;color:#664d03}.alert.alert-yellow-500 .btn:not([class*=btn-outline]),.table-yellow-500 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-yellow-500 a:not(.btn){font-weight:700;color:#664d03}.badge.bg-yellow-500,.toast.bg-yellow-500,.toast-header.bg-yellow-500,.progress-bar.bg-yellow-500{color:#000}.bg-yellow-600 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%237a5c04'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-yellow-600{color:#cc9a06}.btn.btn-ghost-yellow-600:hover{background-color:#cc9a061f}.alert.alert-yellow-600 a:not(.btn),.table-yellow-600 a:not(.btn){font-weight:700;color:#7a5c04}.alert.alert-yellow-600 .btn:not([class*=btn-outline]),.table-yellow-600 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-yellow-600 a:not(.btn){font-weight:700;color:#523e02}.badge.bg-yellow-600,.toast.bg-yellow-600,.toast-header.bg-yellow-600,.progress-bar.bg-yellow-600{color:#000}.bg-yellow-700 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%235c4602'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-yellow-700{color:#997404}.btn.btn-ghost-yellow-700:hover{background-color:#9974041f}.alert.alert-yellow-700 a:not(.btn),.table-yellow-700 a:not(.btn){font-weight:700;color:#5c4602}.alert.alert-yellow-700 .btn:not([class*=btn-outline]),.table-yellow-700 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-yellow-700 a:not(.btn){font-weight:700;color:#3d2e02}.badge.bg-yellow-700,.toast.bg-yellow-700,.toast-header.bg-yellow-700,.progress-bar.bg-yellow-700{color:#000}.bg-yellow-800 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%233d2e02'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-yellow-800{color:#664d03}.btn.btn-ghost-yellow-800:hover{background-color:#664d031f}.alert.alert-yellow-800 a:not(.btn),.table-yellow-800 a:not(.btn){font-weight:700;color:#3d2e02}.alert.alert-yellow-800 .btn:not([class*=btn-outline]),.table-yellow-800 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-yellow-800 a:not(.btn){font-weight:700;color:#c2b89a}.badge.bg-yellow-800,.toast.bg-yellow-800,.toast-header.bg-yellow-800,.progress-bar.bg-yellow-800{color:#fff}.bg-yellow-900 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%231f1701'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-yellow-900{color:#332701}.btn.btn-ghost-yellow-900:hover{background-color:#3327011f}.alert.alert-yellow-900 a:not(.btn),.table-yellow-900 a:not(.btn){font-weight:700;color:#1f1701}.alert.alert-yellow-900 .btn:not([class*=btn-outline]),.table-yellow-900 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-yellow-900 a:not(.btn){font-weight:700;color:#ada999}.badge.bg-yellow-900,.toast.bg-yellow-900,.toast-header.bg-yellow-900,.progress-bar.bg-yellow-900{color:#fff}.bg-green-100 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23545c58'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-green-100{color:#d1e7dd}.btn.btn-ghost-green-100:hover{background-color:#d1e7dd1f}.alert.alert-green-100 a:not(.btn),.table-green-100 a:not(.btn){font-weight:700;color:#545c58}.alert.alert-green-100 .btn:not([class*=btn-outline]),.table-green-100 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-green-100 a:not(.btn){font-weight:700;color:#545c58}.badge.bg-green-100,.toast.bg-green-100,.toast-header.bg-green-100,.progress-bar.bg-green-100{color:#000}.bg-green-200 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%2341534b'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-green-200{color:#a3cfbb}.btn.btn-ghost-green-200:hover{background-color:#a3cfbb1f}.alert.alert-green-200 a:not(.btn),.table-green-200 a:not(.btn){font-weight:700;color:#41534b}.alert.alert-green-200 .btn:not([class*=btn-outline]),.table-green-200 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-green-200 a:not(.btn){font-weight:700;color:#41534b}.badge.bg-green-200,.toast.bg-green-200,.toast-header.bg-green-200,.progress-bar.bg-green-200{color:#000}.bg-green-300 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23466e5b'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-green-300{color:#75b798}.btn.btn-ghost-green-300:hover{background-color:#75b7981f}.alert.alert-green-300 a:not(.btn),.table-green-300 a:not(.btn){font-weight:700;color:#466e5b}.alert.alert-green-300 .btn:not([class*=btn-outline]),.table-green-300 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-green-300 a:not(.btn){font-weight:700;color:#2f493d}.badge.bg-green-300,.toast.bg-green-300,.toast-header.bg-green-300,.progress-bar.bg-green-300{color:#000}.bg-green-400 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%232b5f47'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-green-400{color:#479f76}.btn.btn-ghost-green-400:hover{background-color:#479f761f}.alert.alert-green-400 a:not(.btn),.table-green-400 a:not(.btn){font-weight:700;color:#2b5f47}.alert.alert-green-400 .btn:not([class*=btn-outline]),.table-green-400 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-green-400 a:not(.btn){font-weight:700;color:#1c402f}.badge.bg-green-400,.toast.bg-green-400,.toast-header.bg-green-400,.progress-bar.bg-green-400{color:#000}.bg-green-500 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230f5132'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-green-500{color:#198754}.btn.btn-ghost-green-500:hover{background-color:#1987541f}.alert.alert-green-500 a:not(.btn),.table-green-500 a:not(.btn){font-weight:700;color:#0f5132}.alert.alert-green-500 .btn:not([class*=btn-outline]),.table-green-500 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-green-500 a:not(.btn){font-weight:700;color:#a3cfbb}.badge.bg-green-500,.toast.bg-green-500,.toast-header.bg-green-500,.progress-bar.bg-green-500{color:#fff}.bg-green-600 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230c4128'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-green-600{color:#146c43}.btn.btn-ghost-green-600:hover{background-color:#146c431f}.alert.alert-green-600 a:not(.btn),.table-green-600 a:not(.btn){font-weight:700;color:#0c4128}.alert.alert-green-600 .btn:not([class*=btn-outline]),.table-green-600 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-green-600 a:not(.btn){font-weight:700;color:#a1c4b4}.badge.bg-green-600,.toast.bg-green-600,.toast-header.bg-green-600,.progress-bar.bg-green-600{color:#fff}.bg-green-700 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%2309311e'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-green-700{color:#0f5132}.btn.btn-ghost-green-700:hover{background-color:#0f51321f}.alert.alert-green-700 a:not(.btn),.table-green-700 a:not(.btn){font-weight:700;color:#09311e}.alert.alert-green-700 .btn:not([class*=btn-outline]),.table-green-700 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-green-700 a:not(.btn){font-weight:700;color:#9fb9ad}.badge.bg-green-700,.toast.bg-green-700,.toast-header.bg-green-700,.progress-bar.bg-green-700{color:#fff}.bg-green-800 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23062014'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-green-800{color:#0a3622}.btn.btn-ghost-green-800:hover{background-color:#0a36221f}.alert.alert-green-800 a:not(.btn),.table-green-800 a:not(.btn){font-weight:700;color:#062014}.alert.alert-green-800 .btn:not([class*=btn-outline]),.table-green-800 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-green-800 a:not(.btn){font-weight:700;color:#9dafa7}.badge.bg-green-800,.toast.bg-green-800,.toast-header.bg-green-800,.progress-bar.bg-green-800{color:#fff}.bg-green-900 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%2303100a'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-green-900{color:#051b11}.btn.btn-ghost-green-900:hover{background-color:#051b111f}.alert.alert-green-900 a:not(.btn),.table-green-900 a:not(.btn){font-weight:700;color:#03100a}.alert.alert-green-900 .btn:not([class*=btn-outline]),.table-green-900 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-green-900 a:not(.btn){font-weight:700;color:#9ba4a0}.badge.bg-green-900,.toast.bg-green-900,.toast-header.bg-green-900,.progress-bar.bg-green-900{color:#fff}.bg-blue-100 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23535a66'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-blue-100{color:#cfe2ff}.btn.btn-ghost-blue-100:hover{background-color:#cfe2ff1f}.alert.alert-blue-100 a:not(.btn),.table-blue-100 a:not(.btn){font-weight:700;color:#535a66}.alert.alert-blue-100 .btn:not([class*=btn-outline]),.table-blue-100 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-blue-100 a:not(.btn){font-weight:700;color:#535a66}.badge.bg-blue-100,.toast.bg-blue-100,.toast-header.bg-blue-100,.progress-bar.bg-blue-100{color:#000}.bg-blue-200 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%233f4f66'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-blue-200{color:#9ec5fe}.btn.btn-ghost-blue-200:hover{background-color:#9ec5fe1f}.alert.alert-blue-200 a:not(.btn),.table-blue-200 a:not(.btn){font-weight:700;color:#3f4f66}.alert.alert-blue-200 .btn:not([class*=btn-outline]),.table-blue-200 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-blue-200 a:not(.btn){font-weight:700;color:#3f4f66}.badge.bg-blue-200,.toast.bg-blue-200,.toast-header.bg-blue-200,.progress-bar.bg-blue-200{color:#000}.bg-blue-300 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23426598'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-blue-300{color:#6ea8fe}.btn.btn-ghost-blue-300:hover{background-color:#6ea8fe1f}.alert.alert-blue-300 a:not(.btn),.table-blue-300 a:not(.btn){font-weight:700;color:#426598}.alert.alert-blue-300 .btn:not([class*=btn-outline]),.table-blue-300 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-blue-300 a:not(.btn){font-weight:700;color:#2c4366}.badge.bg-blue-300,.toast.bg-blue-300,.toast-header.bg-blue-300,.progress-bar.bg-blue-300{color:#000}.bg-blue-400 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23255398'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-blue-400{color:#3d8bfd}.btn.btn-ghost-blue-400:hover{background-color:#3d8bfd1f}.alert.alert-blue-400 a:not(.btn),.table-blue-400 a:not(.btn){font-weight:700;color:#255398}.alert.alert-blue-400 .btn:not([class*=btn-outline]),.table-blue-400 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-blue-400 a:not(.btn){font-weight:700;color:#183865}.badge.bg-blue-400,.toast.bg-blue-400,.toast-header.bg-blue-400,.progress-bar.bg-blue-400{color:#000}.bg-blue-500 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23084298'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-blue-500{color:#0d6efd}.btn.btn-ghost-blue-500:hover{background-color:#0d6efd1f}.alert.alert-blue-500 a:not(.btn),.table-blue-500 a:not(.btn){font-weight:700;color:#084298}.alert.alert-blue-500 .btn:not([class*=btn-outline]),.table-blue-500 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-blue-500 a:not(.btn){font-weight:700;color:#9ec5fe}.badge.bg-blue-500,.toast.bg-blue-500,.toast-header.bg-blue-500,.progress-bar.bg-blue-500{color:#fff}.bg-blue-600 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23063579'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-blue-600{color:#0a58ca}.btn.btn-ghost-blue-600:hover{background-color:#0a58ca1f}.alert.alert-blue-600 a:not(.btn),.table-blue-600 a:not(.btn){font-weight:700;color:#063579}.alert.alert-blue-600 .btn:not([class*=btn-outline]),.table-blue-600 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-blue-600 a:not(.btn){font-weight:700;color:#9dbcea}.badge.bg-blue-600,.toast.bg-blue-600,.toast-header.bg-blue-600,.progress-bar.bg-blue-600{color:#fff}.bg-blue-700 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%2305285b'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-blue-700{color:#084298}.btn.btn-ghost-blue-700:hover{background-color:#0842981f}.alert.alert-blue-700 a:not(.btn),.table-blue-700 a:not(.btn){font-weight:700;color:#05285b}.alert.alert-blue-700 .btn:not([class*=btn-outline]),.table-blue-700 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-blue-700 a:not(.btn){font-weight:700;color:#9cb3d6}.badge.bg-blue-700,.toast.bg-blue-700,.toast-header.bg-blue-700,.progress-bar.bg-blue-700{color:#fff}.bg-blue-800 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23031a3d'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-blue-800{color:#052c65}.btn.btn-ghost-blue-800:hover{background-color:#052c651f}.alert.alert-blue-800 a:not(.btn),.table-blue-800 a:not(.btn){font-weight:700;color:#031a3d}.alert.alert-blue-800 .btn:not([class*=btn-outline]),.table-blue-800 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-blue-800 a:not(.btn){font-weight:700;color:#9babc1}.badge.bg-blue-800,.toast.bg-blue-800,.toast-header.bg-blue-800,.progress-bar.bg-blue-800{color:#fff}.bg-blue-900 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23020d1f'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-blue-900{color:#031633}.btn.btn-ghost-blue-900:hover{background-color:#0316331f}.alert.alert-blue-900 a:not(.btn),.table-blue-900 a:not(.btn){font-weight:700;color:#020d1f}.alert.alert-blue-900 .btn:not([class*=btn-outline]),.table-blue-900 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-blue-900 a:not(.btn){font-weight:700;color:#9aa2ad}.badge.bg-blue-900,.toast.bg-blue-900,.toast-header.bg-blue-900,.progress-bar.bg-blue-900{color:#fff}.bg-cyan-100 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23536265'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-cyan-100{color:#cff4fc}.btn.btn-ghost-cyan-100:hover{background-color:#cff4fc1f}.alert.alert-cyan-100 a:not(.btn),.table-cyan-100 a:not(.btn){font-weight:700;color:#536265}.alert.alert-cyan-100 .btn:not([class*=btn-outline]),.table-cyan-100 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-cyan-100 a:not(.btn){font-weight:700;color:#536265}.badge.bg-cyan-100,.toast.bg-cyan-100,.toast-header.bg-cyan-100,.progress-bar.bg-cyan-100{color:#000}.bg-cyan-200 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%233f5e64'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-cyan-200{color:#9eeaf9}.btn.btn-ghost-cyan-200:hover{background-color:#9eeaf91f}.alert.alert-cyan-200 a:not(.btn),.table-cyan-200 a:not(.btn){font-weight:700;color:#3f5e64}.alert.alert-cyan-200 .btn:not([class*=btn-outline]),.table-cyan-200 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-cyan-200 a:not(.btn){font-weight:700;color:#3f5e64}.badge.bg-cyan-200,.toast.bg-cyan-200,.toast-header.bg-cyan-200,.progress-bar.bg-cyan-200{color:#000}.bg-cyan-300 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%232c5962'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-cyan-300{color:#6edff6}.btn.btn-ghost-cyan-300:hover{background-color:#6edff61f}.alert.alert-cyan-300 a:not(.btn),.table-cyan-300 a:not(.btn){font-weight:700;color:#2c5962}.alert.alert-cyan-300 .btn:not([class*=btn-outline]),.table-cyan-300 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-cyan-300 a:not(.btn){font-weight:700;color:#2c5962}.badge.bg-cyan-300,.toast.bg-cyan-300,.toast-header.bg-cyan-300,.progress-bar.bg-cyan-300{color:#000}.bg-cyan-400 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23185561'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-cyan-400{color:#3dd5f3}.btn.btn-ghost-cyan-400:hover{background-color:#3dd5f31f}.alert.alert-cyan-400 a:not(.btn),.table-cyan-400 a:not(.btn){font-weight:700;color:#185561}.alert.alert-cyan-400 .btn:not([class*=btn-outline]),.table-cyan-400 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-cyan-400 a:not(.btn){font-weight:700;color:#185561}.badge.bg-cyan-400,.toast.bg-cyan-400,.toast-header.bg-cyan-400,.progress-bar.bg-cyan-400{color:#000}.bg-cyan-500 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23055160'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-cyan-500{color:#0dcaf0}.btn.btn-ghost-cyan-500:hover{background-color:#0dcaf01f}.alert.alert-cyan-500 a:not(.btn),.table-cyan-500 a:not(.btn){font-weight:700;color:#055160}.alert.alert-cyan-500 .btn:not([class*=btn-outline]),.table-cyan-500 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-cyan-500 a:not(.btn){font-weight:700;color:#055160}.badge.bg-cyan-500,.toast.bg-cyan-500,.toast-header.bg-cyan-500,.progress-bar.bg-cyan-500{color:#000}.bg-cyan-600 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23066173'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-cyan-600{color:#0aa2c0}.btn.btn-ghost-cyan-600:hover{background-color:#0aa2c01f}.alert.alert-cyan-600 a:not(.btn),.table-cyan-600 a:not(.btn){font-weight:700;color:#066173}.alert.alert-cyan-600 .btn:not([class*=btn-outline]),.table-cyan-600 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-cyan-600 a:not(.btn){font-weight:700;color:#04414d}.badge.bg-cyan-600,.toast.bg-cyan-600,.toast-header.bg-cyan-600,.progress-bar.bg-cyan-600{color:#000}.bg-cyan-700 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23054956'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-cyan-700{color:#087990}.btn.btn-ghost-cyan-700:hover{background-color:#0879901f}.alert.alert-cyan-700 a:not(.btn),.table-cyan-700 a:not(.btn){font-weight:700;color:#054956}.alert.alert-cyan-700 .btn:not([class*=btn-outline]),.table-cyan-700 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-cyan-700 a:not(.btn){font-weight:700;color:#9cc9d3}.badge.bg-cyan-700,.toast.bg-cyan-700,.toast-header.bg-cyan-700,.progress-bar.bg-cyan-700{color:#fff}.bg-cyan-800 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%2303313a'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-cyan-800{color:#055160}.btn.btn-ghost-cyan-800:hover{background-color:#0551601f}.alert.alert-cyan-800 a:not(.btn),.table-cyan-800 a:not(.btn){font-weight:700;color:#03313a}.alert.alert-cyan-800 .btn:not([class*=btn-outline]),.table-cyan-800 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-cyan-800 a:not(.btn){font-weight:700;color:#9bb9bf}.badge.bg-cyan-800,.toast.bg-cyan-800,.toast-header.bg-cyan-800,.progress-bar.bg-cyan-800{color:#fff}.bg-cyan-900 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%2302181d'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-cyan-900{color:#032830}.btn.btn-ghost-cyan-900:hover{background-color:#0328301f}.alert.alert-cyan-900 a:not(.btn),.table-cyan-900 a:not(.btn){font-weight:700;color:#02181d}.alert.alert-cyan-900 .btn:not([class*=btn-outline]),.table-cyan-900 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-cyan-900 a:not(.btn){font-weight:700;color:#9aa9ac}.badge.bg-cyan-900,.toast.bg-cyan-900,.toast-header.bg-cyan-900,.progress-bar.bg-cyan-900{color:#fff}.bg-indigo-100 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%235a5365'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-indigo-100{color:#e0cffc}.btn.btn-ghost-indigo-100:hover{background-color:#e0cffc1f}.alert.alert-indigo-100 a:not(.btn),.table-indigo-100 a:not(.btn){font-weight:700;color:#5a5365}.alert.alert-indigo-100 .btn:not([class*=btn-outline]),.table-indigo-100 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-indigo-100 a:not(.btn){font-weight:700;color:#5a5365}.badge.bg-indigo-100,.toast.bg-indigo-100,.toast-header.bg-indigo-100,.progress-bar.bg-indigo-100{color:#000}.bg-indigo-200 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23745f96'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-indigo-200{color:#c29ffa}.btn.btn-ghost-indigo-200:hover{background-color:#c29ffa1f}.alert.alert-indigo-200 a:not(.btn),.table-indigo-200 a:not(.btn){font-weight:700;color:#745f96}.alert.alert-indigo-200 .btn:not([class*=btn-outline]),.table-indigo-200 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-indigo-200 a:not(.btn){font-weight:700;color:#4e4064}.badge.bg-indigo-200,.toast.bg-indigo-200,.toast-header.bg-indigo-200,.progress-bar.bg-indigo-200{color:#000}.bg-indigo-300 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23624394'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-indigo-300{color:#a370f7}.btn.btn-ghost-indigo-300:hover{background-color:#a370f71f}.alert.alert-indigo-300 a:not(.btn),.table-indigo-300 a:not(.btn){font-weight:700;color:#624394}.alert.alert-indigo-300 .btn:not([class*=btn-outline]),.table-indigo-300 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-indigo-300 a:not(.btn){font-weight:700;color:#412d63}.badge.bg-indigo-300,.toast.bg-indigo-300,.toast-header.bg-indigo-300,.progress-bar.bg-indigo-300{color:#000}.bg-indigo-400 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23502693'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-indigo-400{color:#8540f5}.btn.btn-ghost-indigo-400:hover{background-color:#8540f51f}.alert.alert-indigo-400 a:not(.btn),.table-indigo-400 a:not(.btn){font-weight:700;color:#502693}.alert.alert-indigo-400 .btn:not([class*=btn-outline]),.table-indigo-400 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-indigo-400 a:not(.btn){font-weight:700;color:#ceb3fb}.badge.bg-indigo-400,.toast.bg-indigo-400,.toast-header.bg-indigo-400,.progress-bar.bg-indigo-400{color:#fff}.bg-indigo-500 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%233d0a91'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-indigo-500{color:#6610f2}.btn.btn-ghost-indigo-500:hover{background-color:#6610f21f}.alert.alert-indigo-500 a:not(.btn),.table-indigo-500 a:not(.btn){font-weight:700;color:#3d0a91}.alert.alert-indigo-500 .btn:not([class*=btn-outline]),.table-indigo-500 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-indigo-500 a:not(.btn){font-weight:700;color:#c29ffa}.badge.bg-indigo-500,.toast.bg-indigo-500,.toast-header.bg-indigo-500,.progress-bar.bg-indigo-500{color:#fff}.bg-indigo-600 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23310874'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-indigo-600{color:#520dc2}.btn.btn-ghost-indigo-600:hover{background-color:#520dc21f}.alert.alert-indigo-600 a:not(.btn),.table-indigo-600 a:not(.btn){font-weight:700;color:#310874}.alert.alert-indigo-600 .btn:not([class*=btn-outline]),.table-indigo-600 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-indigo-600 a:not(.btn){font-weight:700;color:#ba9ee7}.badge.bg-indigo-600,.toast.bg-indigo-600,.toast-header.bg-indigo-600,.progress-bar.bg-indigo-600{color:#fff}.bg-indigo-700 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23250657'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-indigo-700{color:#3d0a91}.btn.btn-ghost-indigo-700:hover{background-color:#3d0a911f}.alert.alert-indigo-700 a:not(.btn),.table-indigo-700 a:not(.btn){font-weight:700;color:#250657}.alert.alert-indigo-700 .btn:not([class*=btn-outline]),.table-indigo-700 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-indigo-700 a:not(.btn){font-weight:700;color:#b19dd3}.badge.bg-indigo-700,.toast.bg-indigo-700,.toast-header.bg-indigo-700,.progress-bar.bg-indigo-700{color:#fff}.bg-indigo-800 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%2319043a'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-indigo-800{color:#290661}.btn.btn-ghost-indigo-800:hover{background-color:#2906611f}.alert.alert-indigo-800 a:not(.btn),.table-indigo-800 a:not(.btn){font-weight:700;color:#19043a}.alert.alert-indigo-800 .btn:not([class*=btn-outline]),.table-indigo-800 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-indigo-800 a:not(.btn){font-weight:700;color:#a99bc0}.badge.bg-indigo-800,.toast.bg-indigo-800,.toast-header.bg-indigo-800,.progress-bar.bg-indigo-800{color:#fff}.bg-indigo-900 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230c021d'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-indigo-900{color:#140330}.btn.btn-ghost-indigo-900:hover{background-color:#1403301f}.alert.alert-indigo-900 a:not(.btn),.table-indigo-900 a:not(.btn){font-weight:700;color:#0c021d}.alert.alert-indigo-900 .btn:not([class*=btn-outline]),.table-indigo-900 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-indigo-900 a:not(.btn){font-weight:700;color:#a19aac}.badge.bg-indigo-900,.toast.bg-indigo-900,.toast-header.bg-indigo-900,.progress-bar.bg-indigo-900{color:#fff}.bg-purple-100 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%235a5761'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-purple-100{color:#e2d9f3}.btn.btn-ghost-purple-100:hover{background-color:#e2d9f31f}.alert.alert-purple-100 a:not(.btn),.table-purple-100 a:not(.btn){font-weight:700;color:#5a5761}.alert.alert-purple-100 .btn:not([class*=btn-outline]),.table-purple-100 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-purple-100 a:not(.btn){font-weight:700;color:#5a5761}.badge.bg-purple-100,.toast.bg-purple-100,.toast-header.bg-purple-100,.progress-bar.bg-purple-100{color:#000}.bg-purple-200 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%234f485c'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-purple-200{color:#c5b3e6}.btn.btn-ghost-purple-200:hover{background-color:#c5b3e61f}.alert.alert-purple-200 a:not(.btn),.table-purple-200 a:not(.btn){font-weight:700;color:#4f485c}.alert.alert-purple-200 .btn:not([class*=btn-outline]),.table-purple-200 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-purple-200 a:not(.btn){font-weight:700;color:#4f485c}.badge.bg-purple-200,.toast.bg-purple-200,.toast-header.bg-purple-200,.progress-bar.bg-purple-200{color:#000}.bg-purple-300 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23655583'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-purple-300{color:#a98eda}.btn.btn-ghost-purple-300:hover{background-color:#a98eda1f}.alert.alert-purple-300 a:not(.btn),.table-purple-300 a:not(.btn){font-weight:700;color:#655583}.alert.alert-purple-300 .btn:not([class*=btn-outline]),.table-purple-300 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-purple-300 a:not(.btn){font-weight:700;color:#443957}.badge.bg-purple-300,.toast.bg-purple-300,.toast-header.bg-purple-300,.progress-bar.bg-purple-300{color:#000}.bg-purple-400 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23543e7b'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-purple-400{color:#8c68cd}.btn.btn-ghost-purple-400:hover{background-color:#8c68cd1f}.alert.alert-purple-400 a:not(.btn),.table-purple-400 a:not(.btn){font-weight:700;color:#543e7b}.alert.alert-purple-400 .btn:not([class*=btn-outline]),.table-purple-400 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-purple-400 a:not(.btn){font-weight:700;color:#382a52}.badge.bg-purple-400,.toast.bg-purple-400,.toast-header.bg-purple-400,.progress-bar.bg-purple-400{color:#000}.bg-purple-500 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23432874'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-purple-500{color:#6f42c1}.btn.btn-ghost-purple-500:hover{background-color:#6f42c11f}.alert.alert-purple-500 a:not(.btn),.table-purple-500 a:not(.btn){font-weight:700;color:#432874}.alert.alert-purple-500 .btn:not([class*=btn-outline]),.table-purple-500 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-purple-500 a:not(.btn){font-weight:700;color:#c5b3e6}.badge.bg-purple-500,.toast.bg-purple-500,.toast-header.bg-purple-500,.progress-bar.bg-purple-500{color:#fff}.bg-purple-600 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%2335205c'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-purple-600{color:#59359a}.btn.btn-ghost-purple-600:hover{background-color:#59359a1f}.alert.alert-purple-600 a:not(.btn),.table-purple-600 a:not(.btn){font-weight:700;color:#35205c}.alert.alert-purple-600 .btn:not([class*=btn-outline]),.table-purple-600 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-purple-600 a:not(.btn){font-weight:700;color:#bdaed7}.badge.bg-purple-600,.toast.bg-purple-600,.toast-header.bg-purple-600,.progress-bar.bg-purple-600{color:#fff}.bg-purple-700 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23281846'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-purple-700{color:#432874}.btn.btn-ghost-purple-700:hover{background-color:#4328741f}.alert.alert-purple-700 a:not(.btn),.table-purple-700 a:not(.btn){font-weight:700;color:#281846}.alert.alert-purple-700 .btn:not([class*=btn-outline]),.table-purple-700 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-purple-700 a:not(.btn){font-weight:700;color:#b4a9c7}.badge.bg-purple-700,.toast.bg-purple-700,.toast-header.bg-purple-700,.progress-bar.bg-purple-700{color:#fff}.bg-purple-800 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%231a102e'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-purple-800{color:#2c1a4d}.btn.btn-ghost-purple-800:hover{background-color:#2c1a4d1f}.alert.alert-purple-800 a:not(.btn),.table-purple-800 a:not(.btn){font-weight:700;color:#1a102e}.alert.alert-purple-800 .btn:not([class*=btn-outline]),.table-purple-800 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-purple-800 a:not(.btn){font-weight:700;color:#aba3b8}.badge.bg-purple-800,.toast.bg-purple-800,.toast-header.bg-purple-800,.progress-bar.bg-purple-800{color:#fff}.bg-purple-900 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230d0817'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-purple-900{color:#160d27}.btn.btn-ghost-purple-900:hover{background-color:#160d271f}.alert.alert-purple-900 a:not(.btn),.table-purple-900 a:not(.btn){font-weight:700;color:#0d0817}.alert.alert-purple-900 .btn:not([class*=btn-outline]),.table-purple-900 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-purple-900 a:not(.btn){font-weight:700;color:#a29ea9}.badge.bg-purple-900,.toast.bg-purple-900,.toast-header.bg-purple-900,.progress-bar.bg-purple-900{color:#fff}.bg-pink-100 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%2363565c'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-pink-100{color:#f7d6e6}.btn.btn-ghost-pink-100:hover{background-color:#f7d6e61f}.alert.alert-pink-100 a:not(.btn),.table-pink-100 a:not(.btn){font-weight:700;color:#63565c}.alert.alert-pink-100 .btn:not([class*=btn-outline]),.table-pink-100 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-pink-100 a:not(.btn){font-weight:700;color:#63565c}.badge.bg-pink-100,.toast.bg-pink-100,.toast-header.bg-pink-100,.progress-bar.bg-pink-100{color:#000}.bg-pink-200 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23604552'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-pink-200{color:#efadce}.btn.btn-ghost-pink-200:hover{background-color:#efadce1f}.alert.alert-pink-200 a:not(.btn),.table-pink-200 a:not(.btn){font-weight:700;color:#604552}.alert.alert-pink-200 .btn:not([class*=btn-outline]),.table-pink-200 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-pink-200 a:not(.btn){font-weight:700;color:#604552}.badge.bg-pink-200,.toast.bg-pink-200,.toast-header.bg-pink-200,.progress-bar.bg-pink-200{color:#000}.bg-pink-300 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%238a506d'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-pink-300{color:#e685b5}.btn.btn-ghost-pink-300:hover{background-color:#e685b51f}.alert.alert-pink-300 a:not(.btn),.table-pink-300 a:not(.btn){font-weight:700;color:#8a506d}.alert.alert-pink-300 .btn:not([class*=btn-outline]),.table-pink-300 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-pink-300 a:not(.btn){font-weight:700;color:#5c3548}.badge.bg-pink-300,.toast.bg-pink-300,.toast-header.bg-pink-300,.progress-bar.bg-pink-300{color:#000}.bg-pink-400 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%2385375e'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-pink-400{color:#de5c9d}.btn.btn-ghost-pink-400:hover{background-color:#de5c9d1f}.alert.alert-pink-400 a:not(.btn),.table-pink-400 a:not(.btn){font-weight:700;color:#85375e}.alert.alert-pink-400 .btn:not([class*=btn-outline]),.table-pink-400 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-pink-400 a:not(.btn){font-weight:700;color:#59253f}.badge.bg-pink-400,.toast.bg-pink-400,.toast-header.bg-pink-400,.progress-bar.bg-pink-400{color:#000}.bg-pink-500 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23801f4f'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-pink-500{color:#d63384}.btn.btn-ghost-pink-500:hover{background-color:#d633841f}.alert.alert-pink-500 a:not(.btn),.table-pink-500 a:not(.btn){font-weight:700;color:#801f4f}.alert.alert-pink-500 .btn:not([class*=btn-outline]),.table-pink-500 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-pink-500 a:not(.btn){font-weight:700;color:#efadce}.badge.bg-pink-500,.toast.bg-pink-500,.toast-header.bg-pink-500,.progress-bar.bg-pink-500{color:#fff}.bg-pink-600 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23671940'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-pink-600{color:#ab296a}.btn.btn-ghost-pink-600:hover{background-color:#ab296a1f}.alert.alert-pink-600 a:not(.btn),.table-pink-600 a:not(.btn){font-weight:700;color:#671940}.alert.alert-pink-600 .btn:not([class*=btn-outline]),.table-pink-600 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-pink-600 a:not(.btn){font-weight:700;color:#dda9c3}.badge.bg-pink-600,.toast.bg-pink-600,.toast-header.bg-pink-600,.progress-bar.bg-pink-600{color:#fff}.bg-pink-700 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%234d132f'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-pink-700{color:#801f4f}.btn.btn-ghost-pink-700:hover{background-color:#801f4f1f}.alert.alert-pink-700 a:not(.btn),.table-pink-700 a:not(.btn){font-weight:700;color:#4d132f}.alert.alert-pink-700 .btn:not([class*=btn-outline]),.table-pink-700 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-pink-700 a:not(.btn){font-weight:700;color:#cca5b9}.badge.bg-pink-700,.toast.bg-pink-700,.toast-header.bg-pink-700,.progress-bar.bg-pink-700{color:#fff}.bg-pink-800 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23340c20'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-pink-800{color:#561435}.btn.btn-ghost-pink-800:hover{background-color:#5614351f}.alert.alert-pink-800 a:not(.btn),.table-pink-800 a:not(.btn){font-weight:700;color:#340c20}.alert.alert-pink-800 .btn:not([class*=btn-outline]),.table-pink-800 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-pink-800 a:not(.btn){font-weight:700;color:#bba1ae}.badge.bg-pink-800,.toast.bg-pink-800,.toast-header.bg-pink-800,.progress-bar.bg-pink-800{color:#fff}.bg-pink-900 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%231a0610'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-pink-900{color:#2b0a1a}.btn.btn-ghost-pink-900:hover{background-color:#2b0a1a1f}.alert.alert-pink-900 a:not(.btn),.table-pink-900 a:not(.btn){font-weight:700;color:#1a0610}.alert.alert-pink-900 .btn:not([class*=btn-outline]),.table-pink-900 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-pink-900 a:not(.btn){font-weight:700;color:#aa9da3}.badge.bg-pink-900,.toast.bg-pink-900,.toast-header.bg-pink-900,.progress-bar.bg-pink-900{color:#fff}table td>.progress{min-width:6rem}.small .form-control{font-size:.875rem}:not(.card-body)>.col:not(:last-child):not(:only-child){margin-bottom:1rem}.nav-mobile{display:none;flex-direction:column;align-items:center;justify-content:space-between;width:100%}@media (max-width: 991.98px){.nav-mobile{display:flex}}.nav-mobile .nav-mobile-top{display:flex;align-items:center;justify-content:space-between;width:100%}.card>.table.table-flush{margin-bottom:0;overflow:hidden;border-bottom-right-radius:.375rem;border-bottom-left-radius:.375rem}.card>.table.table-flush thead th[scope=col]{padding-top:1rem;padding-bottom:1rem;text-transform:uppercase;vertical-align:middle;background-color:#f8f9fa;border-top:1px solid rgba(0,0,0,.125);border-bottom-color:#00000020}.card>.table.table-flush th,.card>.table.table-flush td{padding-right:1.5rem!important;padding-left:1.5rem!important;border-right:0;border-left:0}.card>.table.table-flush tr[class]{border-color:#00000020!important}.card>.table.table-flush tr[class]:last-of-type{border-bottom-color:transparent!important;border-bottom-right-radius:.375rem;border-bottom-left-radius:.375rem}.header-alert-container{display:flex;align-items:center;justify-content:center;padding:0 1rem}.header-alert-container .alert{width:100%}@media (min-width: 768px){.header-alert-container .alert{max-width:75%}}@media (min-width: 992px){.header-alert-container .alert{max-width:50%}}span.profile-button .dropdown-menu{right:0;left:auto;display:block!important;margin-top:.5rem;box-shadow:0 .5rem 1rem #00000026;transition:opacity .2s ease-in-out}span.profile-button .dropdown-menu:not(.show){pointer-events:none;opacity:0}span.profile-button .dropdown-menu.show{pointer-events:auto;opacity:1}div#advanced-search-content div.card div.card-body div.col:not(:last-child){margin-right:1rem}table td a{text-decoration:none}table td a:hover{text-decoration:underline}table td .dropdown{position:static}table th a,table th a:hover{color:#212529;text-decoration:none}table td,table th{font-size:.875rem;line-height:1.25;vertical-align:middle}table td.min-width,table th.min-width{width:1%}table td .form-check-input,table th .form-check-input{margin-top:.125em;font-size:1rem}table td .btn-sm,table td .btn-group-sm>.btn,table th .btn-sm,table th .btn-group-sm>.btn{line-height:1}table td p,table th p{margin-bottom:0}table.table>:not(caption)>*>*{padding-right:.25rem!important;padding-left:.25rem!important}table.object-list th{font-size:.75rem;line-height:1;vertical-align:bottom}table.attr-table th{font-weight:normal;width:25%}div.title-container{display:flex;flex-direction:column;flex-wrap:wrap;justify-content:space-between}@media (min-width: 992px){div.title-container{flex-direction:row}}div.title-container #content-title{display:flex;flex:1 0;flex-direction:column;padding-bottom:.5rem}.controls{margin-bottom:.5rem}@media print{.controls{display:none!important}}.controls .control-group{display:flex;flex-wrap:wrap;justify-content:flex-start}@media (min-width: 992px){.controls .control-group{justify-content:flex-end}}.controls .control-group>*{margin:.25rem}.controls .control-group>*:first-child{margin-left:0}.controls .control-group>*:last-child{margin-right:0}.object-subtitle{display:block;font-size:.875rem;color:#6c757d}@media (min-width: 768px){.object-subtitle{display:inline-block}}.object-subtitle>span{display:block}.object-subtitle>span.separator{display:none}@media (min-width: 768px){.object-subtitle>span,.object-subtitle>span.separator{display:inline-block}}nav.search{z-index:999;justify-content:center;background-color:var(--nbx-body-bg)}nav.search .search-container{display:flex;width:100%}@media (max-width: 991.98px){nav.search .search-container{display:none}}nav.search .input-group .search-obj-selected{border-color:#e9ecef}nav.search .input-group .dropdown-toggle{color:#000;border-color:#e9ecef;margin-left:0;font-weight:400;line-height:1.5;color:#212529;background-color:#e9ecef;border:1px solid #e9ecef;border-radius:.375rem;border-left:1px solid var(--nbx-search-filter-border-left-color)}nav.search .input-group .dropdown-toggle:hover{color:#000;background-color:#eceff1;border-color:#ebeef1}.btn-check:focus+nav.search .input-group .dropdown-toggle,nav.search .input-group .dropdown-toggle:focus{color:#000;background-color:#eceff1;border-color:#ebeef1;box-shadow:0 0 0 .25rem #c6c9cb80}.btn-check:checked+nav.search .input-group .dropdown-toggle,.btn-check:active+nav.search .input-group .dropdown-toggle,nav.search .input-group .dropdown-toggle:active,nav.search .input-group .dropdown-toggle.active,.show>nav.search .input-group .dropdown-toggle.dropdown-toggle{color:#000;background-color:#edf0f2;border-color:#ebeef1}.btn-check:checked+nav.search .input-group .dropdown-toggle:focus,.btn-check:active+nav.search .input-group .dropdown-toggle:focus,nav.search .input-group .dropdown-toggle:active:focus,nav.search .input-group .dropdown-toggle.active:focus,.show>nav.search .input-group .dropdown-toggle.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #c6c9cb80}nav.search .input-group .dropdown-toggle:disabled,nav.search .input-group .dropdown-toggle.disabled{color:#000;background-color:#e9ecef;border-color:#e9ecef}nav.search .input-group .dropdown-toggle:focus{box-shadow:unset!important}nav.search .input-group .dropdown-toggle:after{display:none}nav.search .input-group .search-obj-selector{max-height:70vh;overflow-y:auto}nav.search .input-group .search-obj-selector .dropdown-item,nav.search .input-group .search-obj-selector .dropdown-header{font-size:.875rem}nav.search .input-group .search-obj-selector .dropdown-header{text-transform:uppercase}main.layout{display:flex;flex-wrap:nowrap;height:100vh;height:-webkit-fill-available;max-height:100vh;overflow-x:auto;overflow-y:hidden}@media print{main.layout{position:static!important;display:block!important;height:100%;overflow-x:visible!important;overflow-y:visible!important}}main.login-container{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;max-width:100vw;height:calc(100vh - 4rem);padding-top:40px;padding-bottom:40px}main.login-container+footer.footer button.color-mode-toggle{color:var(--nbx-color-mode-toggle-color)}.footer{padding:0}.footer .nav-link{padding:.5rem}@media (max-width: 767.98px){.footer{margin-bottom:8rem}}footer.login-footer{height:4rem;margin-top:auto}footer.login-footer .container-fluid,footer.login-footer .container-sm,footer.login-footer .container-md,footer.login-footer .container-lg,footer.login-footer .container-xl,footer.login-footer .container-xxl{display:flex;justify-content:flex-end;padding:.75rem 1.5rem}h1.accordion-item-title,.accordion-item-title.h1,h2.accordion-item-title,.accordion-item-title.h2,h3.accordion-item-title,.accordion-item-title.h3,h4.accordion-item-title,.accordion-item-title.h4,h5.accordion-item-title,.accordion-item-title.h5,h6.accordion-item-title,.accordion-item-title.h6{padding:.25rem .5rem;font-size:.875rem;font-weight:700;color:var(--nbx-sidebar-title-color);text-transform:uppercase}.form-login{width:100%;max-width:330px;padding:15px}.form-login input:focus{z-index:1}.form-login input[type=text]{margin-bottom:-1px;border-bottom-right-radius:0;border-bottom-left-radius:0}.form-login input[type=password]{margin-bottom:10px;border-top-left-radius:0;border-top-right-radius:0}.form-login .form-control{position:relative;box-sizing:border-box;height:auto;padding:10px;font-size:16px}.navbar-brand{padding-top:.75rem;padding-bottom:.75rem;font-size:1rem}nav.nav.nav-pills .nav-item.nav-link{padding:.25rem .5rem;font-size:.875rem;border-radius:.375rem}nav.nav.nav-pills .nav-item.nav-link:hover{color:#343a40;background-color:#cfe2ff}div.content-container{position:relative;display:flex;flex-direction:column;width:calc(100% - 3rem);min-height:100vh;overflow-x:hidden;overflow-y:auto}div.content-container:focus,div.content-container:focus-visible{outline:0}div.content-container div.content{flex:1}@media (max-width: 991.98px){div.content-container{width:100%}}@media print{div.content-container{width:100%!important;margin-left:0!important}}@media (max-width: 768px){.sidebar.collapse.show~.content-container>.content{position:fixed;top:0;left:0;overflow-y:hidden}}.tooltip{pointer-events:none}span.color-label{display:block;width:5rem;height:1rem;padding:.35em .65em;border:1px solid #303030;border-radius:.375rem;box-shadow:0 .125rem .25rem #00000013}.btn{white-space:nowrap}.card{box-shadow:0 .125rem .25rem #00000013}.card .card-header{padding:1rem;color:var(--nbx-body-color);border-bottom:none}.card .card-header+.card-body{padding-top:0}.card .card-body.small .form-control,.card .card-body.small .form-select{font-size:.875rem}.card .card-divider{width:100%;height:1px;margin:1rem 0;border-top:1px solid rgba(0,0,0,.125);opacity:.25}@media print{.card{box-shadow:unset!important}}.form-floating{position:relative}.form-floating>.input-group>.form-control,.form-floating>.input-group>.form-select{height:calc(3.5rem + 2px);padding:1rem .75rem}.form-floating>.input-group>label{position:absolute;top:0;left:0;height:100%;padding:1rem .75rem;pointer-events:none;border:1px solid transparent;transform-origin:0 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out}@media (prefers-reduced-motion: reduce){.form-floating>.input-group>label{transition:none}}.form-floating>.input-group>.form-control::placeholder{color:transparent}.form-floating>.input-group>.form-control:focus,.form-floating>.input-group>.form-control:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.input-group>.form-control:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.input-group>.form-select,.form-floating>.choices>.choices__inner,.form-floating>.ss-main span.placeholder,.form-floating>.ss-main div.ss-values{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.input-group>.form-control:focus~label,.form-floating>.input-group>.form-control:not(:placeholder-shown)~label,.form-floating>.input-group>.form-select~label,.form-floating>.choices~label,.form-floating>.ss-main~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translate(.15rem);z-index:4}.form-floating>.input-group>.form-control:-webkit-autofill~label{z-index:4;opacity:.65;transform:scale(.85) translateY(-.5rem) translate(.15rem)}.form-object-edit{margin:0 auto;max-width:800px}textarea.form-control[rows="10"]{height:18rem}textarea#id_local_context_data,textarea.markdown,textarea#id_public_key,textarea.form-control[name=csv],textarea.form-control[name=data]{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}.card:not(:only-of-type){margin-bottom:1rem}.stat-btn{min-width:3rem}nav.breadcrumb-container{width:fit-content;padding:.35em .65em;font-size:.875rem}nav.breadcrumb-container ol.breadcrumb{margin-bottom:0}nav.breadcrumb-container ol.breadcrumb li.breadcrumb-item>a{text-decoration:none}nav.breadcrumb-container ol.breadcrumb li.breadcrumb-item>a:hover{text-decoration:underline}div.paginator>form>div.input-group{width:fit-content}label.required{font-weight:700}label.required:after{position:absolute;display:inline-block;margin:0 0 0 2px;font-family:"Material Design Icons";font-size:8px;font-style:normal;font-weight:600;text-decoration:none;content:"\f06c4"}div.bulk-buttons{display:flex;justify-content:space-between;margin:.5rem 0}div.bulk-buttons>div.bulk-button-group{display:flex;flex-wrap:wrap;align-items:flex-start}div.bulk-buttons>div.bulk-button-group:first-of-type:not(:last-of-type)>*:first-child{margin-left:0}div.bulk-buttons>div.bulk-button-group:last-of-type:not(:first-of-type)>*:last-child{margin-right:0}div.bulk-buttons>div.bulk-button-group>*{margin:.25rem}table tbody tr.primary{background-color:#337ab726;border-color:#adb5bd}table tbody tr.secondary{background-color:#6c757d26;border-color:#adb5bd}table tbody tr.success{background-color:#19875426;border-color:#adb5bd}table tbody tr.info{background-color:#0dcaf026;border-color:#adb5bd}table tbody tr.warning{background-color:#ffc10726;border-color:#adb5bd}table tbody tr.danger{background-color:#dc354526;border-color:#adb5bd}table tbody tr.light{background-color:#f8f9fa26;border-color:#adb5bd}table tbody tr.dark{background-color:#21252926;border-color:#adb5bd}table tbody tr.red{background-color:#dc354526;border-color:#adb5bd}table tbody tr.yellow{background-color:#ffc10726;border-color:#adb5bd}table tbody tr.green{background-color:#19875426;border-color:#adb5bd}table tbody tr.blue{background-color:#0d6efd26;border-color:#adb5bd}table tbody tr.cyan{background-color:#0dcaf026;border-color:#adb5bd}table tbody tr.indigo{background-color:#6610f226;border-color:#adb5bd}table tbody tr.purple{background-color:#6f42c126;border-color:#adb5bd}table tbody tr.pink{background-color:#d6338426;border-color:#adb5bd}table tbody tr.darker{background-color:#1b1f2226;border-color:#adb5bd}table tbody tr.darkest{background-color:#171b1d26;border-color:#adb5bd}table tbody tr.gray{background-color:#ced4da26;border-color:#adb5bd}table tbody tr.gray-100{background-color:#f8f9fa26;border-color:#adb5bd}table tbody tr.gray-200{background-color:#e9ecef26;border-color:#adb5bd}table tbody tr.gray-300{background-color:#dee2e626;border-color:#adb5bd}table tbody tr.gray-400{background-color:#ced4da26;border-color:#adb5bd}table tbody tr.gray-500{background-color:#adb5bd26;border-color:#adb5bd}table tbody tr.gray-600{background-color:#6c757d26;border-color:#adb5bd}table tbody tr.gray-700{background-color:#49505726;border-color:#adb5bd}table tbody tr.gray-800{background-color:#343a4026;border-color:#adb5bd}table tbody tr.gray-900{background-color:#21252926;border-color:#adb5bd}table tbody tr.red-100{background-color:#f8d7da26;border-color:#adb5bd}table tbody tr.red-200{background-color:#f1aeb526;border-color:#adb5bd}table tbody tr.red-300{background-color:#ea868f26;border-color:#adb5bd}table tbody tr.red-400{background-color:#e35d6a26;border-color:#adb5bd}table tbody tr.red-500{background-color:#dc354526;border-color:#adb5bd}table tbody tr.red-600{background-color:#b02a3726;border-color:#adb5bd}table tbody tr.red-700{background-color:#84202926;border-color:#adb5bd}table tbody tr.red-800{background-color:#58151c26;border-color:#adb5bd}table tbody tr.red-900{background-color:#2c0b0e26;border-color:#adb5bd}table tbody tr.yellow-100{background-color:#fff3cd26;border-color:#adb5bd}table tbody tr.yellow-200{background-color:#ffe69c26;border-color:#adb5bd}table tbody tr.yellow-300{background-color:#ffda6a26;border-color:#adb5bd}table tbody tr.yellow-400{background-color:#ffcd3926;border-color:#adb5bd}table tbody tr.yellow-500{background-color:#ffc10726;border-color:#adb5bd}table tbody tr.yellow-600{background-color:#cc9a0626;border-color:#adb5bd}table tbody tr.yellow-700{background-color:#99740426;border-color:#adb5bd}table tbody tr.yellow-800{background-color:#664d0326;border-color:#adb5bd}table tbody tr.yellow-900{background-color:#33270126;border-color:#adb5bd}table tbody tr.green-100{background-color:#d1e7dd26;border-color:#adb5bd}table tbody tr.green-200{background-color:#a3cfbb26;border-color:#adb5bd}table tbody tr.green-300{background-color:#75b79826;border-color:#adb5bd}table tbody tr.green-400{background-color:#479f7626;border-color:#adb5bd}table tbody tr.green-500{background-color:#19875426;border-color:#adb5bd}table tbody tr.green-600{background-color:#146c4326;border-color:#adb5bd}table tbody tr.green-700{background-color:#0f513226;border-color:#adb5bd}table tbody tr.green-800{background-color:#0a362226;border-color:#adb5bd}table tbody tr.green-900{background-color:#051b1126;border-color:#adb5bd}table tbody tr.blue-100{background-color:#cfe2ff26;border-color:#adb5bd}table tbody tr.blue-200{background-color:#9ec5fe26;border-color:#adb5bd}table tbody tr.blue-300{background-color:#6ea8fe26;border-color:#adb5bd}table tbody tr.blue-400{background-color:#3d8bfd26;border-color:#adb5bd}table tbody tr.blue-500{background-color:#0d6efd26;border-color:#adb5bd}table tbody tr.blue-600{background-color:#0a58ca26;border-color:#adb5bd}table tbody tr.blue-700{background-color:#08429826;border-color:#adb5bd}table tbody tr.blue-800{background-color:#052c6526;border-color:#adb5bd}table tbody tr.blue-900{background-color:#03163326;border-color:#adb5bd}table tbody tr.cyan-100{background-color:#cff4fc26;border-color:#adb5bd}table tbody tr.cyan-200{background-color:#9eeaf926;border-color:#adb5bd}table tbody tr.cyan-300{background-color:#6edff626;border-color:#adb5bd}table tbody tr.cyan-400{background-color:#3dd5f326;border-color:#adb5bd}table tbody tr.cyan-500{background-color:#0dcaf026;border-color:#adb5bd}table tbody tr.cyan-600{background-color:#0aa2c026;border-color:#adb5bd}table tbody tr.cyan-700{background-color:#08799026;border-color:#adb5bd}table tbody tr.cyan-800{background-color:#05516026;border-color:#adb5bd}table tbody tr.cyan-900{background-color:#03283026;border-color:#adb5bd}table tbody tr.indigo-100{background-color:#e0cffc26;border-color:#adb5bd}table tbody tr.indigo-200{background-color:#c29ffa26;border-color:#adb5bd}table tbody tr.indigo-300{background-color:#a370f726;border-color:#adb5bd}table tbody tr.indigo-400{background-color:#8540f526;border-color:#adb5bd}table tbody tr.indigo-500{background-color:#6610f226;border-color:#adb5bd}table tbody tr.indigo-600{background-color:#520dc226;border-color:#adb5bd}table tbody tr.indigo-700{background-color:#3d0a9126;border-color:#adb5bd}table tbody tr.indigo-800{background-color:#29066126;border-color:#adb5bd}table tbody tr.indigo-900{background-color:#14033026;border-color:#adb5bd}table tbody tr.purple-100{background-color:#e2d9f326;border-color:#adb5bd}table tbody tr.purple-200{background-color:#c5b3e626;border-color:#adb5bd}table tbody tr.purple-300{background-color:#a98eda26;border-color:#adb5bd}table tbody tr.purple-400{background-color:#8c68cd26;border-color:#adb5bd}table tbody tr.purple-500{background-color:#6f42c126;border-color:#adb5bd}table tbody tr.purple-600{background-color:#59359a26;border-color:#adb5bd}table tbody tr.purple-700{background-color:#43287426;border-color:#adb5bd}table tbody tr.purple-800{background-color:#2c1a4d26;border-color:#adb5bd}table tbody tr.purple-900{background-color:#160d2726;border-color:#adb5bd}table tbody tr.pink-100{background-color:#f7d6e626;border-color:#adb5bd}table tbody tr.pink-200{background-color:#efadce26;border-color:#adb5bd}table tbody tr.pink-300{background-color:#e685b526;border-color:#adb5bd}table tbody tr.pink-400{background-color:#de5c9d26;border-color:#adb5bd}table tbody tr.pink-500{background-color:#d6338426;border-color:#adb5bd}table tbody tr.pink-600{background-color:#ab296a26;border-color:#adb5bd}table tbody tr.pink-700{background-color:#801f4f26;border-color:#adb5bd}table tbody tr.pink-800{background-color:#56143526;border-color:#adb5bd}table tbody tr.pink-900{background-color:#2b0a1a26;border-color:#adb5bd}table .table-badge-group .table-badge{display:block;width:min-content;font-size:.875rem;font-weight:400}table .table-badge-group .table-badge:not(.badge){padding:0 .65em}table .table-badge-group .table-badge.badge:not(:last-of-type):not(:only-child){margin-bottom:.5rem}pre.change-data{padding-right:0;padding-left:0}pre.change-data>span{display:block;padding-right:1rem;padding-left:1rem}pre.change-data>span.added{background-color:var(--nbx-change-added)}pre.change-data>span.removed{background-color:var(--nbx-change-removed)}pre.change-diff{border-color:transparent}pre.change-diff.change-removed{background-color:var(--nbx-change-removed)}pre.change-diff.change-added{background-color:var(--nbx-change-added)}div.card-overlay{position:absolute;display:flex;align-items:center;justify-content:center;width:100%;height:100%;background-color:#ffffffbf;border-radius:.375rem}div.card-overlay>div.spinner-border{width:6rem;height:6rem;color:#6c757d}.table-controls{display:flex}@media (min-width: 768px){.table-controls{margin-top:0!important;margin-bottom:0!important}}.table-controls .table-configure{justify-content:flex-start}@media (min-width: 768px){.table-controls .table-configure{justify-content:flex-end}}.table-controls .form-switch.form-check-inline{flex:1 0 auto;font-size:.875rem}.paginator{display:flex;flex-direction:column;align-items:flex-end;padding:1rem 0}.nav-tabs .nav-link:hover{border-bottom-color:transparent}.nav-tabs .nav-link.active{background-color:#f8f9fa;border-bottom-color:#f8f9fa;transform:translateY(1px)}.tab-content{display:flex;flex-direction:column;padding:1rem;background-color:#f8f9fa;border-bottom:1px solid #dee2e6}@media print{.tab-content{background-color:var(--nbx-body-bg)!important;border-bottom:none!important}}@media print{.masonry{position:static!important;display:block!important;height:unset!important}}@media print{.masonry .masonry-item{position:static!important;top:unset!important;left:unset!important;display:block!important}}.record-depth{display:inline;font-size:1rem;user-select:none;opacity:.33}.record-depth span:only-of-type,.record-depth span:last-of-type{margin-right:.25rem}.popover.image-preview-popover{max-width:unset}#django-messages{position:fixed;right:1rem;bottom:0;margin:1rem}html[data-netbox-url-name=home] .content-container,html[data-netbox-url-name=home] .search{background-color:#f8f9fa!important}html[data-netbox-url-name=home][data-netbox-color-mode=dark] .content-container,html[data-netbox-url-name=home][data-netbox-color-mode=dark] .search{background-color:#171b1d!important}html[data-netbox-url-name=login] #django-messages{display:none} +:root{--bs-orange: #fd7e14;--bs-teal: #20c997;--bs-white: #fff;--bs-gray: #6c757d;--bs-gray-dark: #343a40;--bs-primary: #337ab7;--bs-secondary: #6c757d;--bs-success: #198754;--bs-info: #0dcaf0;--bs-warning: #ffc107;--bs-danger: #dc3545;--bs-light: #f8f9fa;--bs-dark: #212529;--bs-red: #dc3545;--bs-yellow: #ffc107;--bs-green: #198754;--bs-blue: #0d6efd;--bs-cyan: #0dcaf0;--bs-indigo: #6610f2;--bs-purple: #6f42c1;--bs-pink: #d63384;--bs-darker: #1b1f22;--bs-darkest: #171b1d;--bs-gray: #ced4da;--bs-gray-100: #f8f9fa;--bs-gray-200: #e9ecef;--bs-gray-300: #dee2e6;--bs-gray-400: #ced4da;--bs-gray-500: #adb5bd;--bs-gray-600: #6c757d;--bs-gray-700: #495057;--bs-gray-800: #343a40;--bs-gray-900: #212529;--bs-red-100: #f8d7da;--bs-red-200: #f1aeb5;--bs-red-300: #ea868f;--bs-red-400: #e35d6a;--bs-red-500: #dc3545;--bs-red-600: #b02a37;--bs-red-700: #842029;--bs-red-800: #58151c;--bs-red-900: #2c0b0e;--bs-yellow-100: #fff3cd;--bs-yellow-200: #ffe69c;--bs-yellow-300: #ffda6a;--bs-yellow-400: #ffcd39;--bs-yellow-500: #ffc107;--bs-yellow-600: #cc9a06;--bs-yellow-700: #997404;--bs-yellow-800: #664d03;--bs-yellow-900: #332701;--bs-green-100: #d1e7dd;--bs-green-200: #a3cfbb;--bs-green-300: #75b798;--bs-green-400: #479f76;--bs-green-500: #198754;--bs-green-600: #146c43;--bs-green-700: #0f5132;--bs-green-800: #0a3622;--bs-green-900: #051b11;--bs-blue-100: #cfe2ff;--bs-blue-200: #9ec5fe;--bs-blue-300: #6ea8fe;--bs-blue-400: #3d8bfd;--bs-blue-500: #0d6efd;--bs-blue-600: #0a58ca;--bs-blue-700: #084298;--bs-blue-800: #052c65;--bs-blue-900: #031633;--bs-cyan-100: #cff4fc;--bs-cyan-200: #9eeaf9;--bs-cyan-300: #6edff6;--bs-cyan-400: #3dd5f3;--bs-cyan-500: #0dcaf0;--bs-cyan-600: #0aa2c0;--bs-cyan-700: #087990;--bs-cyan-800: #055160;--bs-cyan-900: #032830;--bs-indigo-100: #e0cffc;--bs-indigo-200: #c29ffa;--bs-indigo-300: #a370f7;--bs-indigo-400: #8540f5;--bs-indigo-500: #6610f2;--bs-indigo-600: #520dc2;--bs-indigo-700: #3d0a91;--bs-indigo-800: #290661;--bs-indigo-900: #140330;--bs-purple-100: #e2d9f3;--bs-purple-200: #c5b3e6;--bs-purple-300: #a98eda;--bs-purple-400: #8c68cd;--bs-purple-500: #6f42c1;--bs-purple-600: #59359a;--bs-purple-700: #432874;--bs-purple-800: #2c1a4d;--bs-purple-900: #160d27;--bs-pink-100: #f7d6e6;--bs-pink-200: #efadce;--bs-pink-300: #e685b5;--bs-pink-400: #de5c9d;--bs-pink-500: #d63384;--bs-pink-600: #ab296a;--bs-pink-700: #801f4f;--bs-pink-800: #561435;--bs-pink-900: #2b0a1a;--bs-font-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, .15), rgba(255, 255, 255, 0))}*,*:before,*:after{box-sizing:border-box}@media (prefers-reduced-motion: no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:var(--bs-font-sans-serif);font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0)}hr{margin:1rem 0;color:inherit;background-color:currentColor;border:0;opacity:.25}hr:not([size]){height:1px}h6,.h6,h5,.h5,h4,.h4,h3,.h3,h2,.h2,h1,.h1{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2}h1,.h1{font-size:calc(1.375rem + 1.5vw)}@media (min-width: 1200px){h1,.h1{font-size:2.5rem}}h2,.h2{font-size:calc(1.325rem + .9vw)}@media (min-width: 1200px){h2,.h2{font-size:2rem}}h3,.h3{font-size:calc(1.3rem + .6vw)}@media (min-width: 1200px){h3,.h3{font-size:1.75rem}}h4,.h4{font-size:calc(1.275rem + .3vw)}@media (min-width: 1200px){h4,.h4{font-size:1.5rem}}h5,.h5{font-size:1.25rem}h6,.h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[title],abbr[data-bs-original-title]{text-decoration:underline dotted;cursor:help;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}ol,ul,dl{margin-top:0;margin-bottom:1rem}ol ol,ul ul,ol ul,ul ol{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:800}small,.small{font-size:.875em}mark,.mark{padding:.2em;background-color:#fcf8e3}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#0d6efd;text-decoration:underline}a:hover{color:#0a58ca}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}pre,code,kbd,samp{font-family:var(--bs-font-monospace);font-size:1em;direction:ltr;unicode-bidi:bidi-override}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:.875em;color:#212529;word-wrap:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:.875em;color:#fff;background-color:#212529;border-radius:.375rem}kbd kbd{padding:0;font-size:1em;font-weight:700}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:#6c757d;text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}thead,tbody,tfoot,tr,td,th{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}input,button,select,optgroup,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]::-webkit-calendar-picker-indicator{display:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button:not(:disabled),[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + .3vw);line-height:inherit}@media (min-width: 1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-text,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:textfield}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{font:inherit}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none!important}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:calc(1.625rem + 4.5vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){.display-1{font-size:5rem}}.display-2{font-size:calc(1.575rem + 3.9vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){.display-2{font-size:4.5rem}}.display-3{font-size:calc(1.525rem + 3.3vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){.display-3{font-size:4rem}}.display-4{font-size:calc(1.475rem + 2.7vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){.display-4{font-size:3.5rem}}.display-5{font-size:calc(1.425rem + 2.1vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){.display-5{font-size:3rem}}.display-6{font-size:calc(1.375rem + 1.5vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){.display-6{font-size:2.5rem}}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:.875em;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{margin-top:-1rem;margin-bottom:1rem;font-size:.875em;color:#6c757d}.blockquote-footer:before{content:"\2014\a0"}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.375rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:.875em;color:#6c757d}.container,.container-fluid,.container-xxl,.container-xl,.container-lg,.container-md,.container-sm{width:100%;padding-right:var(--bs-gutter-x, .75rem);padding-left:var(--bs-gutter-x, .75rem);margin-right:auto;margin-left:auto}@media (min-width: 576px){.container-sm,.container{max-width:540px}}@media (min-width: 768px){.container-md,.container-sm,.container{max-width:720px}}@media (min-width: 992px){.container-lg,.container-md,.container-sm,.container{max-width:960px}}@media (min-width: 1200px){.container-xl,.container-lg,.container-md,.container-sm,.container{max-width:1140px}}@media (min-width: 1400px){.container-xxl,.container-xl,.container-lg,.container-md,.container-sm,.container{max-width:1320px}}.row{--bs-gutter-x: 1.5rem;--bs-gutter-y: 0;display:flex;flex-wrap:wrap;margin-top:calc(var(--bs-gutter-y) * -1);margin-right:calc(var(--bs-gutter-x) * -.5);margin-left:calc(var(--bs-gutter-x) * -.5)}.row>*{flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-top:var(--bs-gutter-y)}.col{flex:1 0 0%}.row-cols-auto>*{flex:0 0 auto;width:auto}.row-cols-1>*{flex:0 0 auto;width:100%}.row-cols-2>*{flex:0 0 auto;width:50%}.row-cols-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-4>*{flex:0 0 auto;width:25%}.row-cols-5>*{flex:0 0 auto;width:20%}.row-cols-6>*{flex:0 0 auto;width:16.6666666667%}@media (min-width: 576px){.col-sm{flex:1 0 0%}.row-cols-sm-auto>*{flex:0 0 auto;width:auto}.row-cols-sm-1>*{flex:0 0 auto;width:100%}.row-cols-sm-2>*{flex:0 0 auto;width:50%}.row-cols-sm-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-sm-4>*{flex:0 0 auto;width:25%}.row-cols-sm-5>*{flex:0 0 auto;width:20%}.row-cols-sm-6>*{flex:0 0 auto;width:16.6666666667%}}@media (min-width: 768px){.col-md{flex:1 0 0%}.row-cols-md-auto>*{flex:0 0 auto;width:auto}.row-cols-md-1>*{flex:0 0 auto;width:100%}.row-cols-md-2>*{flex:0 0 auto;width:50%}.row-cols-md-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-md-4>*{flex:0 0 auto;width:25%}.row-cols-md-5>*{flex:0 0 auto;width:20%}.row-cols-md-6>*{flex:0 0 auto;width:16.6666666667%}}@media (min-width: 992px){.col-lg{flex:1 0 0%}.row-cols-lg-auto>*{flex:0 0 auto;width:auto}.row-cols-lg-1>*{flex:0 0 auto;width:100%}.row-cols-lg-2>*{flex:0 0 auto;width:50%}.row-cols-lg-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-lg-4>*{flex:0 0 auto;width:25%}.row-cols-lg-5>*{flex:0 0 auto;width:20%}.row-cols-lg-6>*{flex:0 0 auto;width:16.6666666667%}}@media (min-width: 1200px){.col-xl{flex:1 0 0%}.row-cols-xl-auto>*{flex:0 0 auto;width:auto}.row-cols-xl-1>*{flex:0 0 auto;width:100%}.row-cols-xl-2>*{flex:0 0 auto;width:50%}.row-cols-xl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xl-4>*{flex:0 0 auto;width:25%}.row-cols-xl-5>*{flex:0 0 auto;width:20%}.row-cols-xl-6>*{flex:0 0 auto;width:16.6666666667%}}@media (min-width: 1400px){.col-xxl{flex:1 0 0%}.row-cols-xxl-auto>*{flex:0 0 auto;width:auto}.row-cols-xxl-1>*{flex:0 0 auto;width:100%}.row-cols-xxl-2>*{flex:0 0 auto;width:50%}.row-cols-xxl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xxl-4>*{flex:0 0 auto;width:25%}.row-cols-xxl-5>*{flex:0 0 auto;width:20%}.row-cols-xxl-6>*{flex:0 0 auto;width:16.6666666667%}}.col-auto{flex:0 0 auto;width:auto}.col-1{flex:0 0 auto;width:8.33333333%}.col-2{flex:0 0 auto;width:16.66666667%}.col-3{flex:0 0 auto;width:25%}.col-4{flex:0 0 auto;width:33.33333333%}.col-5{flex:0 0 auto;width:41.66666667%}.col-6{flex:0 0 auto;width:50%}.col-7{flex:0 0 auto;width:58.33333333%}.col-8{flex:0 0 auto;width:66.66666667%}.col-9{flex:0 0 auto;width:75%}.col-10{flex:0 0 auto;width:83.33333333%}.col-11{flex:0 0 auto;width:91.66666667%}.col-12{flex:0 0 auto;width:100%}.offset-1{margin-left:8.33333333%}.offset-2{margin-left:16.66666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333333%}.offset-5{margin-left:41.66666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333333%}.offset-8{margin-left:66.66666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333333%}.offset-11{margin-left:91.66666667%}.g-0,.gx-0{--bs-gutter-x: 0}.g-0,.gy-0{--bs-gutter-y: 0}.g-1,.gx-1{--bs-gutter-x: .25rem}.g-1,.gy-1{--bs-gutter-y: .25rem}.g-2,.gx-2{--bs-gutter-x: .5rem}.g-2,.gy-2{--bs-gutter-y: .5rem}.g-3,.gx-3{--bs-gutter-x: 1rem}.g-3,.gy-3{--bs-gutter-y: 1rem}.g-4,.gx-4{--bs-gutter-x: 1.5rem}.g-4,.gy-4{--bs-gutter-y: 1.5rem}.g-5,.gx-5{--bs-gutter-x: 3rem}.g-5,.gy-5{--bs-gutter-y: 3rem}@media (min-width: 576px){.col-sm-auto{flex:0 0 auto;width:auto}.col-sm-1{flex:0 0 auto;width:8.33333333%}.col-sm-2{flex:0 0 auto;width:16.66666667%}.col-sm-3{flex:0 0 auto;width:25%}.col-sm-4{flex:0 0 auto;width:33.33333333%}.col-sm-5{flex:0 0 auto;width:41.66666667%}.col-sm-6{flex:0 0 auto;width:50%}.col-sm-7{flex:0 0 auto;width:58.33333333%}.col-sm-8{flex:0 0 auto;width:66.66666667%}.col-sm-9{flex:0 0 auto;width:75%}.col-sm-10{flex:0 0 auto;width:83.33333333%}.col-sm-11{flex:0 0 auto;width:91.66666667%}.col-sm-12{flex:0 0 auto;width:100%}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333333%}.offset-sm-2{margin-left:16.66666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333333%}.offset-sm-5{margin-left:41.66666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333333%}.offset-sm-8{margin-left:66.66666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333333%}.offset-sm-11{margin-left:91.66666667%}.g-sm-0,.gx-sm-0{--bs-gutter-x: 0}.g-sm-0,.gy-sm-0{--bs-gutter-y: 0}.g-sm-1,.gx-sm-1{--bs-gutter-x: .25rem}.g-sm-1,.gy-sm-1{--bs-gutter-y: .25rem}.g-sm-2,.gx-sm-2{--bs-gutter-x: .5rem}.g-sm-2,.gy-sm-2{--bs-gutter-y: .5rem}.g-sm-3,.gx-sm-3{--bs-gutter-x: 1rem}.g-sm-3,.gy-sm-3{--bs-gutter-y: 1rem}.g-sm-4,.gx-sm-4{--bs-gutter-x: 1.5rem}.g-sm-4,.gy-sm-4{--bs-gutter-y: 1.5rem}.g-sm-5,.gx-sm-5{--bs-gutter-x: 3rem}.g-sm-5,.gy-sm-5{--bs-gutter-y: 3rem}}@media (min-width: 768px){.col-md-auto{flex:0 0 auto;width:auto}.col-md-1{flex:0 0 auto;width:8.33333333%}.col-md-2{flex:0 0 auto;width:16.66666667%}.col-md-3{flex:0 0 auto;width:25%}.col-md-4{flex:0 0 auto;width:33.33333333%}.col-md-5{flex:0 0 auto;width:41.66666667%}.col-md-6{flex:0 0 auto;width:50%}.col-md-7{flex:0 0 auto;width:58.33333333%}.col-md-8{flex:0 0 auto;width:66.66666667%}.col-md-9{flex:0 0 auto;width:75%}.col-md-10{flex:0 0 auto;width:83.33333333%}.col-md-11{flex:0 0 auto;width:91.66666667%}.col-md-12{flex:0 0 auto;width:100%}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333333%}.offset-md-2{margin-left:16.66666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333333%}.offset-md-5{margin-left:41.66666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333333%}.offset-md-8{margin-left:66.66666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333333%}.offset-md-11{margin-left:91.66666667%}.g-md-0,.gx-md-0{--bs-gutter-x: 0}.g-md-0,.gy-md-0{--bs-gutter-y: 0}.g-md-1,.gx-md-1{--bs-gutter-x: .25rem}.g-md-1,.gy-md-1{--bs-gutter-y: .25rem}.g-md-2,.gx-md-2{--bs-gutter-x: .5rem}.g-md-2,.gy-md-2{--bs-gutter-y: .5rem}.g-md-3,.gx-md-3{--bs-gutter-x: 1rem}.g-md-3,.gy-md-3{--bs-gutter-y: 1rem}.g-md-4,.gx-md-4{--bs-gutter-x: 1.5rem}.g-md-4,.gy-md-4{--bs-gutter-y: 1.5rem}.g-md-5,.gx-md-5{--bs-gutter-x: 3rem}.g-md-5,.gy-md-5{--bs-gutter-y: 3rem}}@media (min-width: 992px){.col-lg-auto{flex:0 0 auto;width:auto}.col-lg-1{flex:0 0 auto;width:8.33333333%}.col-lg-2{flex:0 0 auto;width:16.66666667%}.col-lg-3{flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;width:33.33333333%}.col-lg-5{flex:0 0 auto;width:41.66666667%}.col-lg-6{flex:0 0 auto;width:50%}.col-lg-7{flex:0 0 auto;width:58.33333333%}.col-lg-8{flex:0 0 auto;width:66.66666667%}.col-lg-9{flex:0 0 auto;width:75%}.col-lg-10{flex:0 0 auto;width:83.33333333%}.col-lg-11{flex:0 0 auto;width:91.66666667%}.col-lg-12{flex:0 0 auto;width:100%}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333333%}.offset-lg-2{margin-left:16.66666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333333%}.offset-lg-5{margin-left:41.66666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333333%}.offset-lg-8{margin-left:66.66666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333333%}.offset-lg-11{margin-left:91.66666667%}.g-lg-0,.gx-lg-0{--bs-gutter-x: 0}.g-lg-0,.gy-lg-0{--bs-gutter-y: 0}.g-lg-1,.gx-lg-1{--bs-gutter-x: .25rem}.g-lg-1,.gy-lg-1{--bs-gutter-y: .25rem}.g-lg-2,.gx-lg-2{--bs-gutter-x: .5rem}.g-lg-2,.gy-lg-2{--bs-gutter-y: .5rem}.g-lg-3,.gx-lg-3{--bs-gutter-x: 1rem}.g-lg-3,.gy-lg-3{--bs-gutter-y: 1rem}.g-lg-4,.gx-lg-4{--bs-gutter-x: 1.5rem}.g-lg-4,.gy-lg-4{--bs-gutter-y: 1.5rem}.g-lg-5,.gx-lg-5{--bs-gutter-x: 3rem}.g-lg-5,.gy-lg-5{--bs-gutter-y: 3rem}}@media (min-width: 1200px){.col-xl-auto{flex:0 0 auto;width:auto}.col-xl-1{flex:0 0 auto;width:8.33333333%}.col-xl-2{flex:0 0 auto;width:16.66666667%}.col-xl-3{flex:0 0 auto;width:25%}.col-xl-4{flex:0 0 auto;width:33.33333333%}.col-xl-5{flex:0 0 auto;width:41.66666667%}.col-xl-6{flex:0 0 auto;width:50%}.col-xl-7{flex:0 0 auto;width:58.33333333%}.col-xl-8{flex:0 0 auto;width:66.66666667%}.col-xl-9{flex:0 0 auto;width:75%}.col-xl-10{flex:0 0 auto;width:83.33333333%}.col-xl-11{flex:0 0 auto;width:91.66666667%}.col-xl-12{flex:0 0 auto;width:100%}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333333%}.offset-xl-2{margin-left:16.66666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333333%}.offset-xl-5{margin-left:41.66666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333333%}.offset-xl-8{margin-left:66.66666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333333%}.offset-xl-11{margin-left:91.66666667%}.g-xl-0,.gx-xl-0{--bs-gutter-x: 0}.g-xl-0,.gy-xl-0{--bs-gutter-y: 0}.g-xl-1,.gx-xl-1{--bs-gutter-x: .25rem}.g-xl-1,.gy-xl-1{--bs-gutter-y: .25rem}.g-xl-2,.gx-xl-2{--bs-gutter-x: .5rem}.g-xl-2,.gy-xl-2{--bs-gutter-y: .5rem}.g-xl-3,.gx-xl-3{--bs-gutter-x: 1rem}.g-xl-3,.gy-xl-3{--bs-gutter-y: 1rem}.g-xl-4,.gx-xl-4{--bs-gutter-x: 1.5rem}.g-xl-4,.gy-xl-4{--bs-gutter-y: 1.5rem}.g-xl-5,.gx-xl-5{--bs-gutter-x: 3rem}.g-xl-5,.gy-xl-5{--bs-gutter-y: 3rem}}@media (min-width: 1400px){.col-xxl-auto{flex:0 0 auto;width:auto}.col-xxl-1{flex:0 0 auto;width:8.33333333%}.col-xxl-2{flex:0 0 auto;width:16.66666667%}.col-xxl-3{flex:0 0 auto;width:25%}.col-xxl-4{flex:0 0 auto;width:33.33333333%}.col-xxl-5{flex:0 0 auto;width:41.66666667%}.col-xxl-6{flex:0 0 auto;width:50%}.col-xxl-7{flex:0 0 auto;width:58.33333333%}.col-xxl-8{flex:0 0 auto;width:66.66666667%}.col-xxl-9{flex:0 0 auto;width:75%}.col-xxl-10{flex:0 0 auto;width:83.33333333%}.col-xxl-11{flex:0 0 auto;width:91.66666667%}.col-xxl-12{flex:0 0 auto;width:100%}.offset-xxl-0{margin-left:0}.offset-xxl-1{margin-left:8.33333333%}.offset-xxl-2{margin-left:16.66666667%}.offset-xxl-3{margin-left:25%}.offset-xxl-4{margin-left:33.33333333%}.offset-xxl-5{margin-left:41.66666667%}.offset-xxl-6{margin-left:50%}.offset-xxl-7{margin-left:58.33333333%}.offset-xxl-8{margin-left:66.66666667%}.offset-xxl-9{margin-left:75%}.offset-xxl-10{margin-left:83.33333333%}.offset-xxl-11{margin-left:91.66666667%}.g-xxl-0,.gx-xxl-0{--bs-gutter-x: 0}.g-xxl-0,.gy-xxl-0{--bs-gutter-y: 0}.g-xxl-1,.gx-xxl-1{--bs-gutter-x: .25rem}.g-xxl-1,.gy-xxl-1{--bs-gutter-y: .25rem}.g-xxl-2,.gx-xxl-2{--bs-gutter-x: .5rem}.g-xxl-2,.gy-xxl-2{--bs-gutter-y: .5rem}.g-xxl-3,.gx-xxl-3{--bs-gutter-x: 1rem}.g-xxl-3,.gy-xxl-3{--bs-gutter-y: 1rem}.g-xxl-4,.gx-xxl-4{--bs-gutter-x: 1.5rem}.g-xxl-4,.gy-xxl-4{--bs-gutter-y: 1.5rem}.g-xxl-5,.gx-xxl-5{--bs-gutter-x: 3rem}.g-xxl-5,.gy-xxl-5{--bs-gutter-y: 3rem}}.table{--bs-table-bg: transparent;--bs-table-accent-bg: transparent;--bs-table-striped-color: #212529;--bs-table-striped-bg: rgba(0, 0, 0, .05);--bs-table-active-color: #212529;--bs-table-active-bg: rgba(0, 0, 0, .1);--bs-table-hover-color: #212529;--bs-table-hover-bg: rgba(0, 0, 0, .075);width:100%;margin-bottom:1rem;color:#212529;vertical-align:top;border-color:#dee2e6}.table>:not(caption)>*>*{padding:.5rem;background-color:var(--bs-table-bg);border-bottom-width:1px;box-shadow:inset 0 0 0 9999px var(--bs-table-accent-bg)}.table>tbody{vertical-align:inherit}.table>thead{vertical-align:bottom}.table>:not(:last-child)>:last-child>*{border-bottom-color:currentColor}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*{padding:.25rem}.table-bordered>:not(caption)>*{border-width:1px 0}.table-bordered>:not(caption)>*>*{border-width:0 1px}.table-borderless>:not(caption)>*>*{border-bottom-width:0}.table-striped>tbody>tr:nth-of-type(odd){--bs-table-accent-bg: var(--bs-table-striped-bg);color:var(--bs-table-striped-color)}.table-active{--bs-table-accent-bg: var(--bs-table-active-bg);color:var(--bs-table-active-color)}.table-hover>tbody>tr:hover{--bs-table-accent-bg: var(--bs-table-hover-bg);color:var(--bs-table-hover-color)}.table-primary{--bs-table-bg: #cfe2ff;--bs-table-striped-bg: #c5d7f2;--bs-table-striped-color: #000;--bs-table-active-bg: #bacbe6;--bs-table-active-color: #000;--bs-table-hover-bg: #bfd1ec;--bs-table-hover-color: #000;color:#000;border-color:#bacbe6}.table-secondary{--bs-table-bg: #e2e3e5;--bs-table-striped-bg: #d7d8da;--bs-table-striped-color: #000;--bs-table-active-bg: #cbccce;--bs-table-active-color: #000;--bs-table-hover-bg: #d1d2d4;--bs-table-hover-color: #000;color:#000;border-color:#cbccce}.table-success{--bs-table-bg: #d1e7dd;--bs-table-striped-bg: #c7dbd2;--bs-table-striped-color: #000;--bs-table-active-bg: #bcd0c7;--bs-table-active-color: #000;--bs-table-hover-bg: #c1d6cc;--bs-table-hover-color: #000;color:#000;border-color:#bcd0c7}.table-info{--bs-table-bg: #cff4fc;--bs-table-striped-bg: #c5e8ef;--bs-table-striped-color: #000;--bs-table-active-bg: #badce3;--bs-table-active-color: #000;--bs-table-hover-bg: #bfe2e9;--bs-table-hover-color: #000;color:#000;border-color:#badce3}.table-warning{--bs-table-bg: #fff3cd;--bs-table-striped-bg: #f2e7c3;--bs-table-striped-color: #000;--bs-table-active-bg: #e6dbb9;--bs-table-active-color: #000;--bs-table-hover-bg: #ece1be;--bs-table-hover-color: #000;color:#000;border-color:#e6dbb9}.table-danger{--bs-table-bg: #f8d7da;--bs-table-striped-bg: #eccccf;--bs-table-striped-color: #000;--bs-table-active-bg: #dfc2c4;--bs-table-active-color: #000;--bs-table-hover-bg: #e5c7ca;--bs-table-hover-color: #000;color:#000;border-color:#dfc2c4}.table-light{--bs-table-bg: #f8f9fa;--bs-table-striped-bg: #ecedee;--bs-table-striped-color: #000;--bs-table-active-bg: #dfe0e1;--bs-table-active-color: #000;--bs-table-hover-bg: #e5e6e7;--bs-table-hover-color: #000;color:#000;border-color:#dfe0e1}.table-dark{--bs-table-bg: #212529;--bs-table-striped-bg: #2c3034;--bs-table-striped-color: #fff;--bs-table-active-bg: #373b3e;--bs-table-active-color: #fff;--bs-table-hover-bg: #323539;--bs-table-hover-color: #fff;color:#fff;border-color:#373b3e}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}@media (max-width: 575.98px){.table-responsive-sm{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width: 767.98px){.table-responsive-md{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width: 991.98px){.table-responsive-lg{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width: 1199.98px){.table-responsive-xl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width: 1399.98px){.table-responsive-xxl{overflow-x:auto;-webkit-overflow-scrolling:touch}}.form-label{margin-bottom:.5rem}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem}.form-text{margin-top:.25rem;font-size:.875em;color:#6c757d}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;background-clip:padding-box;border:1px solid #e9ecef;appearance:none;border-radius:.375rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion: reduce){.form-control{transition:none}}.form-control[type=file]{overflow:hidden}.form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}.form-control:focus{color:#212529;background-color:#fff;border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}.form-control::-webkit-date-and-time-value{height:1.5em}.form-control::placeholder{color:#adb5bd;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}.form-control::file-selector-button{padding:.375rem .75rem;margin:-.375rem -.75rem;margin-inline-end:.75rem;color:#212529;background-color:#e9ecef;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion: reduce){.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:#dde0e3}.form-control::-webkit-file-upload-button{padding:.375rem .75rem;margin:-.375rem -.75rem;margin-inline-end:.75rem;color:#212529;background-color:#e9ecef;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion: reduce){.form-control::-webkit-file-upload-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button{background-color:#dde0e3}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;line-height:1.5;color:#212529;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-sm,.form-control-plaintext.form-control-lg{padding-right:0;padding-left:0}.form-control-sm{min-height:calc(1.5em + (.5rem + 2px));padding:.25rem .5rem;font-size:.875rem;border-radius:.375rem}.form-control-sm::file-selector-button{padding:.25rem .5rem;margin:-.25rem -.5rem;margin-inline-end:.5rem}.form-control-sm::-webkit-file-upload-button{padding:.25rem .5rem;margin:-.25rem -.5rem;margin-inline-end:.5rem}.form-control-lg{min-height:calc(1.5em + (1rem + 2px));padding:.5rem 1rem;font-size:1.25rem;border-radius:.75rem}.form-control-lg::file-selector-button{padding:.5rem 1rem;margin:-.5rem -1rem;margin-inline-end:1rem}.form-control-lg::-webkit-file-upload-button{padding:.5rem 1rem;margin:-.5rem -1rem;margin-inline-end:1rem}textarea.form-control{min-height:calc(1.5em + (.75rem + 2px))}textarea.form-control-sm{min-height:calc(1.5em + (.5rem + 2px))}textarea.form-control-lg{min-height:calc(1.5em + (1rem + 2px))}.form-control-color{max-width:3rem;height:auto;padding:.375rem}.form-control-color:not(:disabled):not([readonly]){cursor:pointer}.form-control-color::-moz-color-swatch{height:1.5em;border-radius:.375rem}.form-control-color::-webkit-color-swatch{height:1.5em;border-radius:.375rem}.form-select{display:block;width:100%;padding:.375rem 2.25rem .375rem .75rem;-moz-padding-start:calc(.75rem - 3px);font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right .75rem center;background-size:16px 12px;border:1px solid #ced4da;border-radius:.375rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion: reduce){.form-select{transition:none}}.form-select:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}.form-select[multiple],.form-select[size]:not([size="1"]){padding-right:.75rem;background-image:none}.form-select:disabled{color:#6c757d;background-color:#e9ecef}.form-select:-moz-focusring{color:transparent;text-shadow:0 0 0 #212529}.form-select-sm{padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem}.form-select-lg{padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}.form-check{display:block;min-height:1.5rem;padding-left:1.5em;margin-bottom:.125rem}.form-check .form-check-input{float:left;margin-left:-1.5em}.form-check-input{width:1em;height:1em;margin-top:.25em;vertical-align:top;background-color:#fff;background-repeat:no-repeat;background-position:center;background-size:contain;border:1px solid rgba(0,0,0,.25);appearance:none;color-adjust:exact}.form-check-input[type=checkbox]{border-radius:.25em}.form-check-input[type=radio]{border-radius:50%}.form-check-input:active{filter:brightness(90%)}.form-check-input:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}.form-check-input:checked{background-color:#0d6efd;border-color:#0d6efd}.form-check-input:checked[type=checkbox]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10l3 3l6-6'/%3e%3c/svg%3e")}.form-check-input:checked[type=radio]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e")}.form-check-input[type=checkbox]:indeterminate{background-color:#0d6efd;border-color:#0d6efd;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e")}.form-check-input:disabled{pointer-events:none;filter:none;opacity:.5}.form-check-input[disabled]~.form-check-label,.form-check-input:disabled~.form-check-label{opacity:.5}.form-switch{padding-left:2.5em}.form-switch .form-check-input{width:2em;margin-left:-2.5em;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e");background-position:left center;border-radius:2em;transition:background-position .15s ease-in-out}@media (prefers-reduced-motion: reduce){.form-switch .form-check-input{transition:none}}.form-switch .form-check-input:focus{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2386b7fe'/%3e%3c/svg%3e")}.form-switch .form-check-input:checked{background-position:right center;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.form-check-inline{display:inline-block;margin-right:1rem}.btn-check{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.btn-check[disabled]+.btn,.btn-check:disabled+.btn{pointer-events:none;filter:none;opacity:.65}.form-range{width:100%;height:1.5rem;padding:0;background-color:transparent;appearance:none}.form-range:focus{outline:0}.form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem #0d6efd40}.form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem #0d6efd40}.form-range::-moz-focus-outer{border:0}.form-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#0d6efd;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion: reduce){.form-range::-webkit-slider-thumb{transition:none}}.form-range::-webkit-slider-thumb:active{background-color:#b6d4fe}.form-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.form-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#0d6efd;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion: reduce){.form-range::-moz-range-thumb{transition:none}}.form-range::-moz-range-thumb:active{background-color:#b6d4fe}.form-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.form-range:disabled{pointer-events:none}.form-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.form-range:disabled::-moz-range-thumb{background-color:#adb5bd}.form-floating>.form-control,.form-floating>.form-select{height:calc(3.5rem + 2px);line-height:1.25}.form-floating>label{position:absolute;top:0;left:0;height:100%;padding:1rem .75rem;pointer-events:none;border:1px solid transparent;transform-origin:0 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out}@media (prefers-reduced-motion: reduce){.form-floating>label{transition:none}}.form-floating>.form-control{padding:1rem .75rem}.form-floating>.form-control::placeholder{color:transparent}.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:focus~label,.form-floating>.form-control:not(:placeholder-shown)~label,.form-floating>.form-select~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translate(.15rem)}.form-floating>.form-control:-webkit-autofill~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translate(.15rem)}.input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}.input-group>.form-control,.input-group>.form-select{position:relative;flex:1 1 auto;width:1%;min-width:0}.input-group>.form-control:focus,.input-group>.form-select:focus{z-index:3}.input-group .btn{position:relative;z-index:2}.input-group .btn:focus{z-index:3}.input-group-text{display:flex;align-items:center;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.375rem}.input-group-lg>.form-control,.input-group-lg>.form-select,.input-group-lg>.input-group-text,.input-group-lg>.btn{padding:.5rem 1rem;font-size:1.25rem;border-radius:.75rem}.input-group-sm>.form-control,.input-group-sm>.form-select,.input-group-sm>.input-group-text,.input-group-sm>.btn{padding:.25rem .5rem;font-size:.875rem;border-radius:.375rem}.input-group-lg>.form-select,.input-group-sm>.form-select{padding-right:3rem}.input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu),.input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3){border-top-right-radius:0;border-bottom-right-radius:0}.input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu),.input-group.has-validation>.dropdown-toggle:nth-last-child(n+4){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-left:-1px;border-top-left-radius:0;border-bottom-left-radius:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#198754}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:#198754e6;border-radius:.375rem}.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip,.is-valid~.valid-feedback,.is-valid~.valid-tooltip{display:block}.was-validated .form-control:valid,.form-control.is-valid{border-color:#198754;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.was-validated .form-control:valid:focus,.form-control.is-valid:focus{border-color:#198754;box-shadow:0 0 0 .25rem #19875440}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.was-validated .form-select:valid,.form-select.is-valid{border-color:#198754}.was-validated .form-select:valid:not([multiple]):not([size]),.was-validated .form-select:valid:not([multiple])[size="1"],.form-select.is-valid:not([multiple]):not([size]),.form-select.is-valid:not([multiple])[size="1"]{padding-right:4.125rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.was-validated .form-select:valid:focus,.form-select.is-valid:focus{border-color:#198754;box-shadow:0 0 0 .25rem #19875440}.was-validated .form-check-input:valid,.form-check-input.is-valid{border-color:#198754}.was-validated .form-check-input:valid:checked,.form-check-input.is-valid:checked{background-color:#198754}.was-validated .form-check-input:valid:focus,.form-check-input.is-valid:focus{box-shadow:0 0 0 .25rem #19875440}.was-validated .form-check-input:valid~.form-check-label,.form-check-input.is-valid~.form-check-label{color:#198754}.form-check-inline .form-check-input~.valid-feedback{margin-left:.5em}.was-validated .input-group .form-control:valid,.input-group .form-control.is-valid,.was-validated .input-group .form-select:valid,.input-group .form-select.is-valid{z-index:1}.was-validated .input-group .form-control:valid:focus,.input-group .form-control.is-valid:focus,.was-validated .input-group .form-select:valid:focus,.input-group .form-select.is-valid:focus{z-index:3}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:#dc3545e6;border-radius:.375rem}.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip,.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip{display:block}.was-validated .form-control:invalid,.form-control.is-invalid{border-color:#dc3545;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.was-validated .form-control:invalid:focus,.form-control.is-invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .25rem #dc354540}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.was-validated .form-select:invalid,.form-select.is-invalid{border-color:#dc3545}.was-validated .form-select:invalid:not([multiple]):not([size]),.was-validated .form-select:invalid:not([multiple])[size="1"],.form-select.is-invalid:not([multiple]):not([size]),.form-select.is-invalid:not([multiple])[size="1"]{padding-right:4.125rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.was-validated .form-select:invalid:focus,.form-select.is-invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .25rem #dc354540}.was-validated .form-check-input:invalid,.form-check-input.is-invalid{border-color:#dc3545}.was-validated .form-check-input:invalid:checked,.form-check-input.is-invalid:checked{background-color:#dc3545}.was-validated .form-check-input:invalid:focus,.form-check-input.is-invalid:focus{box-shadow:0 0 0 .25rem #dc354540}.was-validated .form-check-input:invalid~.form-check-label,.form-check-input.is-invalid~.form-check-label{color:#dc3545}.form-check-inline .form-check-input~.invalid-feedback{margin-left:.5em}.was-validated .input-group .form-control:invalid,.input-group .form-control.is-invalid,.was-validated .input-group .form-select:invalid,.input-group .form-select.is-invalid{z-index:2}.was-validated .input-group .form-control:invalid:focus,.input-group .form-control.is-invalid:focus,.was-validated .input-group .form-select:invalid:focus,.input-group .form-select.is-invalid:focus{z-index:3}.btn{display:inline-block;font-weight:400;line-height:1.5;color:#212529;text-align:center;text-decoration:none;vertical-align:middle;cursor:pointer;user-select:none;background-color:transparent;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;border-radius:.375rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion: reduce){.btn{transition:none}}.btn:hover{color:#212529}.btn-check:focus+.btn,.btn:focus{outline:0;box-shadow:0 0 0 .25rem #0d6efd40}.btn:disabled,.btn.disabled,fieldset:disabled .btn{pointer-events:none;opacity:.65}.btn-primary{color:#fff;background-color:#337ab7;border-color:#337ab7}.btn-primary:hover{color:#fff;background-color:#2b689c;border-color:#296292}.btn-check:focus+.btn-primary,.btn-primary:focus{color:#fff;background-color:#2b689c;border-color:#296292;box-shadow:0 0 0 .25rem #528ec280}.btn-check:checked+.btn-primary,.btn-check:active+.btn-primary,.btn-primary:active,.btn-primary.active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#296292;border-color:#265c89}.btn-check:checked+.btn-primary:focus,.btn-check:active+.btn-primary:focus,.btn-primary:active:focus,.btn-primary.active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #528ec280}.btn-primary:disabled,.btn-primary.disabled{color:#fff;background-color:#337ab7;border-color:#337ab7}.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:hover{color:#fff;background-color:#5c636a;border-color:#565e64}.btn-check:focus+.btn-secondary,.btn-secondary:focus{color:#fff;background-color:#5c636a;border-color:#565e64;box-shadow:0 0 0 .25rem #828a9180}.btn-check:checked+.btn-secondary,.btn-check:active+.btn-secondary,.btn-secondary:active,.btn-secondary.active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#565e64;border-color:#51585e}.btn-check:checked+.btn-secondary:focus,.btn-check:active+.btn-secondary:focus,.btn-secondary:active:focus,.btn-secondary.active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #828a9180}.btn-secondary:disabled,.btn-secondary.disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-success{color:#fff;background-color:#198754;border-color:#198754}.btn-success:hover{color:#fff;background-color:#157347;border-color:#146c43}.btn-check:focus+.btn-success,.btn-success:focus{color:#fff;background-color:#157347;border-color:#146c43;box-shadow:0 0 0 .25rem #3c996e80}.btn-check:checked+.btn-success,.btn-check:active+.btn-success,.btn-success:active,.btn-success.active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#146c43;border-color:#13653f}.btn-check:checked+.btn-success:focus,.btn-check:active+.btn-success:focus,.btn-success:active:focus,.btn-success.active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #3c996e80}.btn-success:disabled,.btn-success.disabled{color:#fff;background-color:#198754;border-color:#198754}.btn-info{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-info:hover{color:#000;background-color:#31d2f2;border-color:#25cff2}.btn-check:focus+.btn-info,.btn-info:focus{color:#000;background-color:#31d2f2;border-color:#25cff2;box-shadow:0 0 0 .25rem #0baccc80}.btn-check:checked+.btn-info,.btn-check:active+.btn-info,.btn-info:active,.btn-info.active,.show>.btn-info.dropdown-toggle{color:#000;background-color:#3dd5f3;border-color:#25cff2}.btn-check:checked+.btn-info:focus,.btn-check:active+.btn-info:focus,.btn-info:active:focus,.btn-info.active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #0baccc80}.btn-info:disabled,.btn-info.disabled{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-warning{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-warning:hover{color:#000;background-color:#ffca2c;border-color:#ffc720}.btn-check:focus+.btn-warning,.btn-warning:focus{color:#000;background-color:#ffca2c;border-color:#ffc720;box-shadow:0 0 0 .25rem #d9a40680}.btn-check:checked+.btn-warning,.btn-check:active+.btn-warning,.btn-warning:active,.btn-warning.active,.show>.btn-warning.dropdown-toggle{color:#000;background-color:#ffcd39;border-color:#ffc720}.btn-check:checked+.btn-warning:focus,.btn-check:active+.btn-warning:focus,.btn-warning:active:focus,.btn-warning.active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #d9a40680}.btn-warning:disabled,.btn-warning.disabled{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:hover{color:#fff;background-color:#bb2d3b;border-color:#b02a37}.btn-check:focus+.btn-danger,.btn-danger:focus{color:#fff;background-color:#bb2d3b;border-color:#b02a37;box-shadow:0 0 0 .25rem #e1536180}.btn-check:checked+.btn-danger,.btn-check:active+.btn-danger,.btn-danger:active,.btn-danger.active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#b02a37;border-color:#a52834}.btn-check:checked+.btn-danger:focus,.btn-check:active+.btn-danger:focus,.btn-danger:active:focus,.btn-danger.active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #e1536180}.btn-danger:disabled,.btn-danger.disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-light{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:hover{color:#000;background-color:#f9fafb;border-color:#f9fafb}.btn-check:focus+.btn-light,.btn-light:focus{color:#000;background-color:#f9fafb;border-color:#f9fafb;box-shadow:0 0 0 .25rem #d3d4d580}.btn-check:checked+.btn-light,.btn-check:active+.btn-light,.btn-light:active,.btn-light.active,.show>.btn-light.dropdown-toggle{color:#000;background-color:#f9fafb;border-color:#f9fafb}.btn-check:checked+.btn-light:focus,.btn-check:active+.btn-light:focus,.btn-light:active:focus,.btn-light.active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #d3d4d580}.btn-light:disabled,.btn-light.disabled{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-dark{color:#fff;background-color:#212529;border-color:#212529}.btn-dark:hover{color:#fff;background-color:#1c1f23;border-color:#1a1e21}.btn-check:focus+.btn-dark,.btn-dark:focus{color:#fff;background-color:#1c1f23;border-color:#1a1e21;box-shadow:0 0 0 .25rem #42464980}.btn-check:checked+.btn-dark,.btn-check:active+.btn-dark,.btn-dark:active,.btn-dark.active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#1a1e21;border-color:#191c1f}.btn-check:checked+.btn-dark:focus,.btn-check:active+.btn-dark:focus,.btn-dark:active:focus,.btn-dark.active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #42464980}.btn-dark:disabled,.btn-dark.disabled{color:#fff;background-color:#212529;border-color:#212529}.btn-red{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-red:hover{color:#fff;background-color:#bb2d3b;border-color:#b02a37}.btn-check:focus+.btn-red,.btn-red:focus{color:#fff;background-color:#bb2d3b;border-color:#b02a37;box-shadow:0 0 0 .25rem #e1536180}.btn-check:checked+.btn-red,.btn-check:active+.btn-red,.btn-red:active,.btn-red.active,.show>.btn-red.dropdown-toggle{color:#fff;background-color:#b02a37;border-color:#a52834}.btn-check:checked+.btn-red:focus,.btn-check:active+.btn-red:focus,.btn-red:active:focus,.btn-red.active:focus,.show>.btn-red.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #e1536180}.btn-red:disabled,.btn-red.disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-yellow{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-yellow:hover{color:#000;background-color:#ffca2c;border-color:#ffc720}.btn-check:focus+.btn-yellow,.btn-yellow:focus{color:#000;background-color:#ffca2c;border-color:#ffc720;box-shadow:0 0 0 .25rem #d9a40680}.btn-check:checked+.btn-yellow,.btn-check:active+.btn-yellow,.btn-yellow:active,.btn-yellow.active,.show>.btn-yellow.dropdown-toggle{color:#000;background-color:#ffcd39;border-color:#ffc720}.btn-check:checked+.btn-yellow:focus,.btn-check:active+.btn-yellow:focus,.btn-yellow:active:focus,.btn-yellow.active:focus,.show>.btn-yellow.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #d9a40680}.btn-yellow:disabled,.btn-yellow.disabled{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-green{color:#fff;background-color:#198754;border-color:#198754}.btn-green:hover{color:#fff;background-color:#157347;border-color:#146c43}.btn-check:focus+.btn-green,.btn-green:focus{color:#fff;background-color:#157347;border-color:#146c43;box-shadow:0 0 0 .25rem #3c996e80}.btn-check:checked+.btn-green,.btn-check:active+.btn-green,.btn-green:active,.btn-green.active,.show>.btn-green.dropdown-toggle{color:#fff;background-color:#146c43;border-color:#13653f}.btn-check:checked+.btn-green:focus,.btn-check:active+.btn-green:focus,.btn-green:active:focus,.btn-green.active:focus,.show>.btn-green.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #3c996e80}.btn-green:disabled,.btn-green.disabled{color:#fff;background-color:#198754;border-color:#198754}.btn-blue{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-blue:hover{color:#fff;background-color:#0b5ed7;border-color:#0a58ca}.btn-check:focus+.btn-blue,.btn-blue:focus{color:#fff;background-color:#0b5ed7;border-color:#0a58ca;box-shadow:0 0 0 .25rem #3184fd80}.btn-check:checked+.btn-blue,.btn-check:active+.btn-blue,.btn-blue:active,.btn-blue.active,.show>.btn-blue.dropdown-toggle{color:#fff;background-color:#0a58ca;border-color:#0a53be}.btn-check:checked+.btn-blue:focus,.btn-check:active+.btn-blue:focus,.btn-blue:active:focus,.btn-blue.active:focus,.show>.btn-blue.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #3184fd80}.btn-blue:disabled,.btn-blue.disabled{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-cyan{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-cyan:hover{color:#000;background-color:#31d2f2;border-color:#25cff2}.btn-check:focus+.btn-cyan,.btn-cyan:focus{color:#000;background-color:#31d2f2;border-color:#25cff2;box-shadow:0 0 0 .25rem #0baccc80}.btn-check:checked+.btn-cyan,.btn-check:active+.btn-cyan,.btn-cyan:active,.btn-cyan.active,.show>.btn-cyan.dropdown-toggle{color:#000;background-color:#3dd5f3;border-color:#25cff2}.btn-check:checked+.btn-cyan:focus,.btn-check:active+.btn-cyan:focus,.btn-cyan:active:focus,.btn-cyan.active:focus,.show>.btn-cyan.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #0baccc80}.btn-cyan:disabled,.btn-cyan.disabled{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-indigo{color:#fff;background-color:#6610f2;border-color:#6610f2}.btn-indigo:hover{color:#fff;background-color:#570ece;border-color:#520dc2}.btn-check:focus+.btn-indigo,.btn-indigo:focus{color:#fff;background-color:#570ece;border-color:#520dc2;box-shadow:0 0 0 .25rem #7d34f480}.btn-check:checked+.btn-indigo,.btn-check:active+.btn-indigo,.btn-indigo:active,.btn-indigo.active,.show>.btn-indigo.dropdown-toggle{color:#fff;background-color:#520dc2;border-color:#4d0cb6}.btn-check:checked+.btn-indigo:focus,.btn-check:active+.btn-indigo:focus,.btn-indigo:active:focus,.btn-indigo.active:focus,.show>.btn-indigo.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #7d34f480}.btn-indigo:disabled,.btn-indigo.disabled{color:#fff;background-color:#6610f2;border-color:#6610f2}.btn-purple{color:#fff;background-color:#6f42c1;border-color:#6f42c1}.btn-purple:hover{color:#fff;background-color:#5e38a4;border-color:#59359a}.btn-check:focus+.btn-purple,.btn-purple:focus{color:#fff;background-color:#5e38a4;border-color:#59359a;box-shadow:0 0 0 .25rem #855eca80}.btn-check:checked+.btn-purple,.btn-check:active+.btn-purple,.btn-purple:active,.btn-purple.active,.show>.btn-purple.dropdown-toggle{color:#fff;background-color:#59359a;border-color:#533291}.btn-check:checked+.btn-purple:focus,.btn-check:active+.btn-purple:focus,.btn-purple:active:focus,.btn-purple.active:focus,.show>.btn-purple.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #855eca80}.btn-purple:disabled,.btn-purple.disabled{color:#fff;background-color:#6f42c1;border-color:#6f42c1}.btn-pink{color:#fff;background-color:#d63384;border-color:#d63384}.btn-pink:hover{color:#fff;background-color:#b62b70;border-color:#ab296a}.btn-check:focus+.btn-pink,.btn-pink:focus{color:#fff;background-color:#b62b70;border-color:#ab296a;box-shadow:0 0 0 .25rem #dc529680}.btn-check:checked+.btn-pink,.btn-check:active+.btn-pink,.btn-pink:active,.btn-pink.active,.show>.btn-pink.dropdown-toggle{color:#fff;background-color:#ab296a;border-color:#a12663}.btn-check:checked+.btn-pink:focus,.btn-check:active+.btn-pink:focus,.btn-pink:active:focus,.btn-pink.active:focus,.show>.btn-pink.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #dc529680}.btn-pink:disabled,.btn-pink.disabled{color:#fff;background-color:#d63384;border-color:#d63384}.btn-darker{color:#fff;background-color:#1b1f22;border-color:#1b1f22}.btn-darker:hover{color:#fff;background-color:#171a1d;border-color:#16191b}.btn-check:focus+.btn-darker,.btn-darker:focus{color:#fff;background-color:#171a1d;border-color:#16191b;box-shadow:0 0 0 .25rem #3d414380}.btn-check:checked+.btn-darker,.btn-check:active+.btn-darker,.btn-darker:active,.btn-darker.active,.show>.btn-darker.dropdown-toggle{color:#fff;background-color:#16191b;border-color:#14171a}.btn-check:checked+.btn-darker:focus,.btn-check:active+.btn-darker:focus,.btn-darker:active:focus,.btn-darker.active:focus,.show>.btn-darker.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #3d414380}.btn-darker:disabled,.btn-darker.disabled{color:#fff;background-color:#1b1f22;border-color:#1b1f22}.btn-darkest{color:#fff;background-color:#171b1d;border-color:#171b1d}.btn-darkest:hover{color:#fff;background-color:#141719;border-color:#121617}.btn-check:focus+.btn-darkest,.btn-darkest:focus{color:#fff;background-color:#141719;border-color:#121617;box-shadow:0 0 0 .25rem #3a3d3f80}.btn-check:checked+.btn-darkest,.btn-check:active+.btn-darkest,.btn-darkest:active,.btn-darkest.active,.show>.btn-darkest.dropdown-toggle{color:#fff;background-color:#121617;border-color:#111416}.btn-check:checked+.btn-darkest:focus,.btn-check:active+.btn-darkest:focus,.btn-darkest:active:focus,.btn-darkest.active:focus,.show>.btn-darkest.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #3a3d3f80}.btn-darkest:disabled,.btn-darkest.disabled{color:#fff;background-color:#171b1d;border-color:#171b1d}.btn-gray{color:#000;background-color:#ced4da;border-color:#ced4da}.btn-gray:hover{color:#000;background-color:#d5dae0;border-color:#d3d8de}.btn-check:focus+.btn-gray,.btn-gray:focus{color:#000;background-color:#d5dae0;border-color:#d3d8de;box-shadow:0 0 0 .25rem #afb4b980}.btn-check:checked+.btn-gray,.btn-check:active+.btn-gray,.btn-gray:active,.btn-gray.active,.show>.btn-gray.dropdown-toggle{color:#000;background-color:#d8dde1;border-color:#d3d8de}.btn-check:checked+.btn-gray:focus,.btn-check:active+.btn-gray:focus,.btn-gray:active:focus,.btn-gray.active:focus,.show>.btn-gray.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #afb4b980}.btn-gray:disabled,.btn-gray.disabled{color:#000;background-color:#ced4da;border-color:#ced4da}.btn-gray-100{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-gray-100:hover{color:#000;background-color:#f9fafb;border-color:#f9fafb}.btn-check:focus+.btn-gray-100,.btn-gray-100:focus{color:#000;background-color:#f9fafb;border-color:#f9fafb;box-shadow:0 0 0 .25rem #d3d4d580}.btn-check:checked+.btn-gray-100,.btn-check:active+.btn-gray-100,.btn-gray-100:active,.btn-gray-100.active,.show>.btn-gray-100.dropdown-toggle{color:#000;background-color:#f9fafb;border-color:#f9fafb}.btn-check:checked+.btn-gray-100:focus,.btn-check:active+.btn-gray-100:focus,.btn-gray-100:active:focus,.btn-gray-100.active:focus,.show>.btn-gray-100.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #d3d4d580}.btn-gray-100:disabled,.btn-gray-100.disabled{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-gray-200{color:#000;background-color:#e9ecef;border-color:#e9ecef}.btn-gray-200:hover{color:#000;background-color:#eceff1;border-color:#ebeef1}.btn-check:focus+.btn-gray-200,.btn-gray-200:focus{color:#000;background-color:#eceff1;border-color:#ebeef1;box-shadow:0 0 0 .25rem #c6c9cb80}.btn-check:checked+.btn-gray-200,.btn-check:active+.btn-gray-200,.btn-gray-200:active,.btn-gray-200.active,.show>.btn-gray-200.dropdown-toggle{color:#000;background-color:#edf0f2;border-color:#ebeef1}.btn-check:checked+.btn-gray-200:focus,.btn-check:active+.btn-gray-200:focus,.btn-gray-200:active:focus,.btn-gray-200.active:focus,.show>.btn-gray-200.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #c6c9cb80}.btn-gray-200:disabled,.btn-gray-200.disabled{color:#000;background-color:#e9ecef;border-color:#e9ecef}.btn-gray-300{color:#000;background-color:#dee2e6;border-color:#dee2e6}.btn-gray-300:hover{color:#000;background-color:#e3e6ea;border-color:#e1e5e9}.btn-check:focus+.btn-gray-300,.btn-gray-300:focus{color:#000;background-color:#e3e6ea;border-color:#e1e5e9;box-shadow:0 0 0 .25rem #bdc0c480}.btn-check:checked+.btn-gray-300,.btn-check:active+.btn-gray-300,.btn-gray-300:active,.btn-gray-300.active,.show>.btn-gray-300.dropdown-toggle{color:#000;background-color:#e5e8eb;border-color:#e1e5e9}.btn-check:checked+.btn-gray-300:focus,.btn-check:active+.btn-gray-300:focus,.btn-gray-300:active:focus,.btn-gray-300.active:focus,.show>.btn-gray-300.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #bdc0c480}.btn-gray-300:disabled,.btn-gray-300.disabled{color:#000;background-color:#dee2e6;border-color:#dee2e6}.btn-gray-400{color:#000;background-color:#ced4da;border-color:#ced4da}.btn-gray-400:hover{color:#000;background-color:#d5dae0;border-color:#d3d8de}.btn-check:focus+.btn-gray-400,.btn-gray-400:focus{color:#000;background-color:#d5dae0;border-color:#d3d8de;box-shadow:0 0 0 .25rem #afb4b980}.btn-check:checked+.btn-gray-400,.btn-check:active+.btn-gray-400,.btn-gray-400:active,.btn-gray-400.active,.show>.btn-gray-400.dropdown-toggle{color:#000;background-color:#d8dde1;border-color:#d3d8de}.btn-check:checked+.btn-gray-400:focus,.btn-check:active+.btn-gray-400:focus,.btn-gray-400:active:focus,.btn-gray-400.active:focus,.show>.btn-gray-400.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #afb4b980}.btn-gray-400:disabled,.btn-gray-400.disabled{color:#000;background-color:#ced4da;border-color:#ced4da}.btn-gray-500{color:#000;background-color:#adb5bd;border-color:#adb5bd}.btn-gray-500:hover{color:#000;background-color:#b9c0c7;border-color:#b5bcc4}.btn-check:focus+.btn-gray-500,.btn-gray-500:focus{color:#000;background-color:#b9c0c7;border-color:#b5bcc4;box-shadow:0 0 0 .25rem #939aa180}.btn-check:checked+.btn-gray-500,.btn-check:active+.btn-gray-500,.btn-gray-500:active,.btn-gray-500.active,.show>.btn-gray-500.dropdown-toggle{color:#000;background-color:#bdc4ca;border-color:#b5bcc4}.btn-check:checked+.btn-gray-500:focus,.btn-check:active+.btn-gray-500:focus,.btn-gray-500:active:focus,.btn-gray-500.active:focus,.show>.btn-gray-500.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #939aa180}.btn-gray-500:disabled,.btn-gray-500.disabled{color:#000;background-color:#adb5bd;border-color:#adb5bd}.btn-gray-600{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-gray-600:hover{color:#fff;background-color:#5c636a;border-color:#565e64}.btn-check:focus+.btn-gray-600,.btn-gray-600:focus{color:#fff;background-color:#5c636a;border-color:#565e64;box-shadow:0 0 0 .25rem #828a9180}.btn-check:checked+.btn-gray-600,.btn-check:active+.btn-gray-600,.btn-gray-600:active,.btn-gray-600.active,.show>.btn-gray-600.dropdown-toggle{color:#fff;background-color:#565e64;border-color:#51585e}.btn-check:checked+.btn-gray-600:focus,.btn-check:active+.btn-gray-600:focus,.btn-gray-600:active:focus,.btn-gray-600.active:focus,.show>.btn-gray-600.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #828a9180}.btn-gray-600:disabled,.btn-gray-600.disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-gray-700{color:#fff;background-color:#495057;border-color:#495057}.btn-gray-700:hover{color:#fff;background-color:#3e444a;border-color:#3a4046}.btn-check:focus+.btn-gray-700,.btn-gray-700:focus{color:#fff;background-color:#3e444a;border-color:#3a4046;box-shadow:0 0 0 .25rem #646a7080}.btn-check:checked+.btn-gray-700,.btn-check:active+.btn-gray-700,.btn-gray-700:active,.btn-gray-700.active,.show>.btn-gray-700.dropdown-toggle{color:#fff;background-color:#3a4046;border-color:#373c41}.btn-check:checked+.btn-gray-700:focus,.btn-check:active+.btn-gray-700:focus,.btn-gray-700:active:focus,.btn-gray-700.active:focus,.show>.btn-gray-700.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #646a7080}.btn-gray-700:disabled,.btn-gray-700.disabled{color:#fff;background-color:#495057;border-color:#495057}.btn-gray-800{color:#fff;background-color:#343a40;border-color:#343a40}.btn-gray-800:hover{color:#fff;background-color:#2c3136;border-color:#2a2e33}.btn-check:focus+.btn-gray-800,.btn-gray-800:focus{color:#fff;background-color:#2c3136;border-color:#2a2e33;box-shadow:0 0 0 .25rem #52585d80}.btn-check:checked+.btn-gray-800,.btn-check:active+.btn-gray-800,.btn-gray-800:active,.btn-gray-800.active,.show>.btn-gray-800.dropdown-toggle{color:#fff;background-color:#2a2e33;border-color:#272c30}.btn-check:checked+.btn-gray-800:focus,.btn-check:active+.btn-gray-800:focus,.btn-gray-800:active:focus,.btn-gray-800.active:focus,.show>.btn-gray-800.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #52585d80}.btn-gray-800:disabled,.btn-gray-800.disabled{color:#fff;background-color:#343a40;border-color:#343a40}.btn-gray-900{color:#fff;background-color:#212529;border-color:#212529}.btn-gray-900:hover{color:#fff;background-color:#1c1f23;border-color:#1a1e21}.btn-check:focus+.btn-gray-900,.btn-gray-900:focus{color:#fff;background-color:#1c1f23;border-color:#1a1e21;box-shadow:0 0 0 .25rem #42464980}.btn-check:checked+.btn-gray-900,.btn-check:active+.btn-gray-900,.btn-gray-900:active,.btn-gray-900.active,.show>.btn-gray-900.dropdown-toggle{color:#fff;background-color:#1a1e21;border-color:#191c1f}.btn-check:checked+.btn-gray-900:focus,.btn-check:active+.btn-gray-900:focus,.btn-gray-900:active:focus,.btn-gray-900.active:focus,.show>.btn-gray-900.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #42464980}.btn-gray-900:disabled,.btn-gray-900.disabled{color:#fff;background-color:#212529;border-color:#212529}.btn-red-100{color:#000;background-color:#f8d7da;border-color:#f8d7da}.btn-red-100:hover{color:#000;background-color:#f9dde0;border-color:#f9dbde}.btn-check:focus+.btn-red-100,.btn-red-100:focus{color:#000;background-color:#f9dde0;border-color:#f9dbde;box-shadow:0 0 0 .25rem #d3b7b980}.btn-check:checked+.btn-red-100,.btn-check:active+.btn-red-100,.btn-red-100:active,.btn-red-100.active,.show>.btn-red-100.dropdown-toggle{color:#000;background-color:#f9dfe1;border-color:#f9dbde}.btn-check:checked+.btn-red-100:focus,.btn-check:active+.btn-red-100:focus,.btn-red-100:active:focus,.btn-red-100.active:focus,.show>.btn-red-100.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #d3b7b980}.btn-red-100:disabled,.btn-red-100.disabled{color:#000;background-color:#f8d7da;border-color:#f8d7da}.btn-red-200{color:#000;background-color:#f1aeb5;border-color:#f1aeb5}.btn-red-200:hover{color:#000;background-color:#f3bac0;border-color:#f2b6bc}.btn-check:focus+.btn-red-200,.btn-red-200:focus{color:#000;background-color:#f3bac0;border-color:#f2b6bc;box-shadow:0 0 0 .25rem #cd949a80}.btn-check:checked+.btn-red-200,.btn-check:active+.btn-red-200,.btn-red-200:active,.btn-red-200.active,.show>.btn-red-200.dropdown-toggle{color:#000;background-color:#f4bec4;border-color:#f2b6bc}.btn-check:checked+.btn-red-200:focus,.btn-check:active+.btn-red-200:focus,.btn-red-200:active:focus,.btn-red-200.active:focus,.show>.btn-red-200.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #cd949a80}.btn-red-200:disabled,.btn-red-200.disabled{color:#000;background-color:#f1aeb5;border-color:#f1aeb5}.btn-red-300{color:#000;background-color:#ea868f;border-color:#ea868f}.btn-red-300:hover{color:#000;background-color:#ed98a0;border-color:#ec929a}.btn-check:focus+.btn-red-300,.btn-red-300:focus{color:#000;background-color:#ed98a0;border-color:#ec929a;box-shadow:0 0 0 .25rem #c7727a80}.btn-check:checked+.btn-red-300,.btn-check:active+.btn-red-300,.btn-red-300:active,.btn-red-300.active,.show>.btn-red-300.dropdown-toggle{color:#000;background-color:#ee9ea5;border-color:#ec929a}.btn-check:checked+.btn-red-300:focus,.btn-check:active+.btn-red-300:focus,.btn-red-300:active:focus,.btn-red-300.active:focus,.show>.btn-red-300.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #c7727a80}.btn-red-300:disabled,.btn-red-300.disabled{color:#000;background-color:#ea868f;border-color:#ea868f}.btn-red-400{color:#000;background-color:#e35d6a;border-color:#e35d6a}.btn-red-400:hover{color:#000;background-color:#e77580;border-color:#e66d79}.btn-check:focus+.btn-red-400,.btn-red-400:focus{color:#000;background-color:#e77580;border-color:#e66d79;box-shadow:0 0 0 .25rem #c14f5a80}.btn-check:checked+.btn-red-400,.btn-check:active+.btn-red-400,.btn-red-400:active,.btn-red-400.active,.show>.btn-red-400.dropdown-toggle{color:#000;background-color:#e97d88;border-color:#e66d79}.btn-check:checked+.btn-red-400:focus,.btn-check:active+.btn-red-400:focus,.btn-red-400:active:focus,.btn-red-400.active:focus,.show>.btn-red-400.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #c14f5a80}.btn-red-400:disabled,.btn-red-400.disabled{color:#000;background-color:#e35d6a;border-color:#e35d6a}.btn-red-500{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-red-500:hover{color:#fff;background-color:#bb2d3b;border-color:#b02a37}.btn-check:focus+.btn-red-500,.btn-red-500:focus{color:#fff;background-color:#bb2d3b;border-color:#b02a37;box-shadow:0 0 0 .25rem #e1536180}.btn-check:checked+.btn-red-500,.btn-check:active+.btn-red-500,.btn-red-500:active,.btn-red-500.active,.show>.btn-red-500.dropdown-toggle{color:#fff;background-color:#b02a37;border-color:#a52834}.btn-check:checked+.btn-red-500:focus,.btn-check:active+.btn-red-500:focus,.btn-red-500:active:focus,.btn-red-500.active:focus,.show>.btn-red-500.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #e1536180}.btn-red-500:disabled,.btn-red-500.disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-red-600{color:#fff;background-color:#b02a37;border-color:#b02a37}.btn-red-600:hover{color:#fff;background-color:#96242f;border-color:#8d222c}.btn-check:focus+.btn-red-600,.btn-red-600:focus{color:#fff;background-color:#96242f;border-color:#8d222c;box-shadow:0 0 0 .25rem #bc4a5580}.btn-check:checked+.btn-red-600,.btn-check:active+.btn-red-600,.btn-red-600:active,.btn-red-600.active,.show>.btn-red-600.dropdown-toggle{color:#fff;background-color:#8d222c;border-color:#842029}.btn-check:checked+.btn-red-600:focus,.btn-check:active+.btn-red-600:focus,.btn-red-600:active:focus,.btn-red-600.active:focus,.show>.btn-red-600.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #bc4a5580}.btn-red-600:disabled,.btn-red-600.disabled{color:#fff;background-color:#b02a37;border-color:#b02a37}.btn-red-700{color:#fff;background-color:#842029;border-color:#842029}.btn-red-700:hover{color:#fff;background-color:#701b23;border-color:#6a1a21}.btn-check:focus+.btn-red-700,.btn-red-700:focus{color:#fff;background-color:#701b23;border-color:#6a1a21;box-shadow:0 0 0 .25rem #96414980}.btn-check:checked+.btn-red-700,.btn-check:active+.btn-red-700,.btn-red-700:active,.btn-red-700.active,.show>.btn-red-700.dropdown-toggle{color:#fff;background-color:#6a1a21;border-color:#63181f}.btn-check:checked+.btn-red-700:focus,.btn-check:active+.btn-red-700:focus,.btn-red-700:active:focus,.btn-red-700.active:focus,.show>.btn-red-700.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #96414980}.btn-red-700:disabled,.btn-red-700.disabled{color:#fff;background-color:#842029;border-color:#842029}.btn-red-800{color:#fff;background-color:#58151c;border-color:#58151c}.btn-red-800:hover{color:#fff;background-color:#4b1218;border-color:#461116}.btn-check:focus+.btn-red-800,.btn-red-800:focus{color:#fff;background-color:#4b1218;border-color:#461116;box-shadow:0 0 0 .25rem #71383e80}.btn-check:checked+.btn-red-800,.btn-check:active+.btn-red-800,.btn-red-800:active,.btn-red-800.active,.show>.btn-red-800.dropdown-toggle{color:#fff;background-color:#461116;border-color:#421015}.btn-check:checked+.btn-red-800:focus,.btn-check:active+.btn-red-800:focus,.btn-red-800:active:focus,.btn-red-800.active:focus,.show>.btn-red-800.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #71383e80}.btn-red-800:disabled,.btn-red-800.disabled{color:#fff;background-color:#58151c;border-color:#58151c}.btn-red-900{color:#fff;background-color:#2c0b0e;border-color:#2c0b0e}.btn-red-900:hover{color:#fff;background-color:#25090c;border-color:#23090b}.btn-check:focus+.btn-red-900,.btn-red-900:focus{color:#fff;background-color:#25090c;border-color:#23090b;box-shadow:0 0 0 .25rem #4c303280}.btn-check:checked+.btn-red-900,.btn-check:active+.btn-red-900,.btn-red-900:active,.btn-red-900.active,.show>.btn-red-900.dropdown-toggle{color:#fff;background-color:#23090b;border-color:#21080b}.btn-check:checked+.btn-red-900:focus,.btn-check:active+.btn-red-900:focus,.btn-red-900:active:focus,.btn-red-900.active:focus,.show>.btn-red-900.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #4c303280}.btn-red-900:disabled,.btn-red-900.disabled{color:#fff;background-color:#2c0b0e;border-color:#2c0b0e}.btn-yellow-100{color:#000;background-color:#fff3cd;border-color:#fff3cd}.btn-yellow-100:hover{color:#000;background-color:#fff5d5;border-color:#fff4d2}.btn-check:focus+.btn-yellow-100,.btn-yellow-100:focus{color:#000;background-color:#fff5d5;border-color:#fff4d2;box-shadow:0 0 0 .25rem #d9cfae80}.btn-check:checked+.btn-yellow-100,.btn-check:active+.btn-yellow-100,.btn-yellow-100:active,.btn-yellow-100.active,.show>.btn-yellow-100.dropdown-toggle{color:#000;background-color:#fff5d7;border-color:#fff4d2}.btn-check:checked+.btn-yellow-100:focus,.btn-check:active+.btn-yellow-100:focus,.btn-yellow-100:active:focus,.btn-yellow-100.active:focus,.show>.btn-yellow-100.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #d9cfae80}.btn-yellow-100:disabled,.btn-yellow-100.disabled{color:#000;background-color:#fff3cd;border-color:#fff3cd}.btn-yellow-200{color:#000;background-color:#ffe69c;border-color:#ffe69c}.btn-yellow-200:hover{color:#000;background-color:#ffeaab;border-color:#ffe9a6}.btn-check:focus+.btn-yellow-200,.btn-yellow-200:focus{color:#000;background-color:#ffeaab;border-color:#ffe9a6;box-shadow:0 0 0 .25rem #d9c48580}.btn-check:checked+.btn-yellow-200,.btn-check:active+.btn-yellow-200,.btn-yellow-200:active,.btn-yellow-200.active,.show>.btn-yellow-200.dropdown-toggle{color:#000;background-color:#ffebb0;border-color:#ffe9a6}.btn-check:checked+.btn-yellow-200:focus,.btn-check:active+.btn-yellow-200:focus,.btn-yellow-200:active:focus,.btn-yellow-200.active:focus,.show>.btn-yellow-200.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #d9c48580}.btn-yellow-200:disabled,.btn-yellow-200.disabled{color:#000;background-color:#ffe69c;border-color:#ffe69c}.btn-yellow-300{color:#000;background-color:#ffda6a;border-color:#ffda6a}.btn-yellow-300:hover{color:#000;background-color:#ffe080;border-color:#ffde79}.btn-check:focus+.btn-yellow-300,.btn-yellow-300:focus{color:#000;background-color:#ffe080;border-color:#ffde79;box-shadow:0 0 0 .25rem #d9b95a80}.btn-check:checked+.btn-yellow-300,.btn-check:active+.btn-yellow-300,.btn-yellow-300:active,.btn-yellow-300.active,.show>.btn-yellow-300.dropdown-toggle{color:#000;background-color:#ffe188;border-color:#ffde79}.btn-check:checked+.btn-yellow-300:focus,.btn-check:active+.btn-yellow-300:focus,.btn-yellow-300:active:focus,.btn-yellow-300.active:focus,.show>.btn-yellow-300.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #d9b95a80}.btn-yellow-300:disabled,.btn-yellow-300.disabled{color:#000;background-color:#ffda6a;border-color:#ffda6a}.btn-yellow-400{color:#000;background-color:#ffcd39;border-color:#ffcd39}.btn-yellow-400:hover{color:#000;background-color:#ffd557;border-color:#ffd24d}.btn-check:focus+.btn-yellow-400,.btn-yellow-400:focus{color:#000;background-color:#ffd557;border-color:#ffd24d;box-shadow:0 0 0 .25rem #d9ae3080}.btn-check:checked+.btn-yellow-400,.btn-check:active+.btn-yellow-400,.btn-yellow-400:active,.btn-yellow-400.active,.show>.btn-yellow-400.dropdown-toggle{color:#000;background-color:#ffd761;border-color:#ffd24d}.btn-check:checked+.btn-yellow-400:focus,.btn-check:active+.btn-yellow-400:focus,.btn-yellow-400:active:focus,.btn-yellow-400.active:focus,.show>.btn-yellow-400.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #d9ae3080}.btn-yellow-400:disabled,.btn-yellow-400.disabled{color:#000;background-color:#ffcd39;border-color:#ffcd39}.btn-yellow-500{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-yellow-500:hover{color:#000;background-color:#ffca2c;border-color:#ffc720}.btn-check:focus+.btn-yellow-500,.btn-yellow-500:focus{color:#000;background-color:#ffca2c;border-color:#ffc720;box-shadow:0 0 0 .25rem #d9a40680}.btn-check:checked+.btn-yellow-500,.btn-check:active+.btn-yellow-500,.btn-yellow-500:active,.btn-yellow-500.active,.show>.btn-yellow-500.dropdown-toggle{color:#000;background-color:#ffcd39;border-color:#ffc720}.btn-check:checked+.btn-yellow-500:focus,.btn-check:active+.btn-yellow-500:focus,.btn-yellow-500:active:focus,.btn-yellow-500.active:focus,.show>.btn-yellow-500.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #d9a40680}.btn-yellow-500:disabled,.btn-yellow-500.disabled{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-yellow-600{color:#000;background-color:#cc9a06;border-color:#cc9a06}.btn-yellow-600:hover{color:#000;background-color:#d4a92b;border-color:#d1a41f}.btn-check:focus+.btn-yellow-600,.btn-yellow-600:focus{color:#000;background-color:#d4a92b;border-color:#d1a41f;box-shadow:0 0 0 .25rem #ad830580}.btn-check:checked+.btn-yellow-600,.btn-check:active+.btn-yellow-600,.btn-yellow-600:active,.btn-yellow-600.active,.show>.btn-yellow-600.dropdown-toggle{color:#000;background-color:#d6ae38;border-color:#d1a41f}.btn-check:checked+.btn-yellow-600:focus,.btn-check:active+.btn-yellow-600:focus,.btn-yellow-600:active:focus,.btn-yellow-600.active:focus,.show>.btn-yellow-600.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #ad830580}.btn-yellow-600:disabled,.btn-yellow-600.disabled{color:#000;background-color:#cc9a06;border-color:#cc9a06}.btn-yellow-700{color:#000;background-color:#997404;border-color:#997404}.btn-yellow-700:hover{color:#000;background-color:#a8892a;border-color:#a3821d}.btn-check:focus+.btn-yellow-700,.btn-yellow-700:focus{color:#000;background-color:#a8892a;border-color:#a3821d;box-shadow:0 0 0 .25rem #82630380}.btn-check:checked+.btn-yellow-700,.btn-check:active+.btn-yellow-700,.btn-yellow-700:active,.btn-yellow-700.active,.show>.btn-yellow-700.dropdown-toggle{color:#000;background-color:#ad9036;border-color:#a3821d}.btn-check:checked+.btn-yellow-700:focus,.btn-check:active+.btn-yellow-700:focus,.btn-yellow-700:active:focus,.btn-yellow-700.active:focus,.show>.btn-yellow-700.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #82630380}.btn-yellow-700:disabled,.btn-yellow-700.disabled{color:#000;background-color:#997404;border-color:#997404}.btn-yellow-800{color:#fff;background-color:#664d03;border-color:#664d03}.btn-yellow-800:hover{color:#fff;background-color:#574103;border-color:#523e02}.btn-check:focus+.btn-yellow-800,.btn-yellow-800:focus{color:#fff;background-color:#574103;border-color:#523e02;box-shadow:0 0 0 .25rem #7d682980}.btn-check:checked+.btn-yellow-800,.btn-check:active+.btn-yellow-800,.btn-yellow-800:active,.btn-yellow-800.active,.show>.btn-yellow-800.dropdown-toggle{color:#fff;background-color:#523e02;border-color:#4d3a02}.btn-check:checked+.btn-yellow-800:focus,.btn-check:active+.btn-yellow-800:focus,.btn-yellow-800:active:focus,.btn-yellow-800.active:focus,.show>.btn-yellow-800.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #7d682980}.btn-yellow-800:disabled,.btn-yellow-800.disabled{color:#fff;background-color:#664d03;border-color:#664d03}.btn-yellow-900{color:#fff;background-color:#332701;border-color:#332701}.btn-yellow-900:hover{color:#fff;background-color:#2b2101;border-color:#291f01}.btn-check:focus+.btn-yellow-900,.btn-yellow-900:focus{color:#fff;background-color:#2b2101;border-color:#291f01;box-shadow:0 0 0 .25rem #52472780}.btn-check:checked+.btn-yellow-900,.btn-check:active+.btn-yellow-900,.btn-yellow-900:active,.btn-yellow-900.active,.show>.btn-yellow-900.dropdown-toggle{color:#fff;background-color:#291f01;border-color:#261d01}.btn-check:checked+.btn-yellow-900:focus,.btn-check:active+.btn-yellow-900:focus,.btn-yellow-900:active:focus,.btn-yellow-900.active:focus,.show>.btn-yellow-900.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #52472780}.btn-yellow-900:disabled,.btn-yellow-900.disabled{color:#fff;background-color:#332701;border-color:#332701}.btn-green-100{color:#000;background-color:#d1e7dd;border-color:#d1e7dd}.btn-green-100:hover{color:#000;background-color:#d8ebe2;border-color:#d6e9e0}.btn-check:focus+.btn-green-100,.btn-green-100:focus{color:#000;background-color:#d8ebe2;border-color:#d6e9e0;box-shadow:0 0 0 .25rem #b2c4bc80}.btn-check:checked+.btn-green-100,.btn-check:active+.btn-green-100,.btn-green-100:active,.btn-green-100.active,.show>.btn-green-100.dropdown-toggle{color:#000;background-color:#daece4;border-color:#d6e9e0}.btn-check:checked+.btn-green-100:focus,.btn-check:active+.btn-green-100:focus,.btn-green-100:active:focus,.btn-green-100.active:focus,.show>.btn-green-100.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #b2c4bc80}.btn-green-100:disabled,.btn-green-100.disabled{color:#000;background-color:#d1e7dd;border-color:#d1e7dd}.btn-green-200{color:#000;background-color:#a3cfbb;border-color:#a3cfbb}.btn-green-200:hover{color:#000;background-color:#b1d6c5;border-color:#acd4c2}.btn-check:focus+.btn-green-200,.btn-green-200:focus{color:#000;background-color:#b1d6c5;border-color:#acd4c2;box-shadow:0 0 0 .25rem #8bb09f80}.btn-check:checked+.btn-green-200,.btn-check:active+.btn-green-200,.btn-green-200:active,.btn-green-200.active,.show>.btn-green-200.dropdown-toggle{color:#000;background-color:#b5d9c9;border-color:#acd4c2}.btn-check:checked+.btn-green-200:focus,.btn-check:active+.btn-green-200:focus,.btn-green-200:active:focus,.btn-green-200.active:focus,.show>.btn-green-200.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #8bb09f80}.btn-green-200:disabled,.btn-green-200.disabled{color:#000;background-color:#a3cfbb;border-color:#a3cfbb}.btn-green-300{color:#000;background-color:#75b798;border-color:#75b798}.btn-green-300:hover{color:#000;background-color:#8ac2a7;border-color:#83bea2}.btn-check:focus+.btn-green-300,.btn-green-300:focus{color:#000;background-color:#8ac2a7;border-color:#83bea2;box-shadow:0 0 0 .25rem #639c8180}.btn-check:checked+.btn-green-300,.btn-check:active+.btn-green-300,.btn-green-300:active,.btn-green-300.active,.show>.btn-green-300.dropdown-toggle{color:#000;background-color:#91c5ad;border-color:#83bea2}.btn-check:checked+.btn-green-300:focus,.btn-check:active+.btn-green-300:focus,.btn-green-300:active:focus,.btn-green-300.active:focus,.show>.btn-green-300.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #639c8180}.btn-green-300:disabled,.btn-green-300.disabled{color:#000;background-color:#75b798;border-color:#75b798}.btn-green-400{color:#000;background-color:#479f76;border-color:#479f76}.btn-green-400:hover{color:#000;background-color:#63ad8b;border-color:#59a984}.btn-check:focus+.btn-green-400,.btn-green-400:focus{color:#000;background-color:#63ad8b;border-color:#59a984;box-shadow:0 0 0 .25rem #3c876480}.btn-check:checked+.btn-green-400,.btn-check:active+.btn-green-400,.btn-green-400:active,.btn-green-400.active,.show>.btn-green-400.dropdown-toggle{color:#000;background-color:#6cb291;border-color:#59a984}.btn-check:checked+.btn-green-400:focus,.btn-check:active+.btn-green-400:focus,.btn-green-400:active:focus,.btn-green-400.active:focus,.show>.btn-green-400.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #3c876480}.btn-green-400:disabled,.btn-green-400.disabled{color:#000;background-color:#479f76;border-color:#479f76}.btn-green-500{color:#fff;background-color:#198754;border-color:#198754}.btn-green-500:hover{color:#fff;background-color:#157347;border-color:#146c43}.btn-check:focus+.btn-green-500,.btn-green-500:focus{color:#fff;background-color:#157347;border-color:#146c43;box-shadow:0 0 0 .25rem #3c996e80}.btn-check:checked+.btn-green-500,.btn-check:active+.btn-green-500,.btn-green-500:active,.btn-green-500.active,.show>.btn-green-500.dropdown-toggle{color:#fff;background-color:#146c43;border-color:#13653f}.btn-check:checked+.btn-green-500:focus,.btn-check:active+.btn-green-500:focus,.btn-green-500:active:focus,.btn-green-500.active:focus,.show>.btn-green-500.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #3c996e80}.btn-green-500:disabled,.btn-green-500.disabled{color:#fff;background-color:#198754;border-color:#198754}.btn-green-600{color:#fff;background-color:#146c43;border-color:#146c43}.btn-green-600:hover{color:#fff;background-color:#115c39;border-color:#105636}.btn-check:focus+.btn-green-600,.btn-green-600:focus{color:#fff;background-color:#115c39;border-color:#105636;box-shadow:0 0 0 .25rem #37825f80}.btn-check:checked+.btn-green-600,.btn-check:active+.btn-green-600,.btn-green-600:active,.btn-green-600.active,.show>.btn-green-600.dropdown-toggle{color:#fff;background-color:#105636;border-color:#0f5132}.btn-check:checked+.btn-green-600:focus,.btn-check:active+.btn-green-600:focus,.btn-green-600:active:focus,.btn-green-600.active:focus,.show>.btn-green-600.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #37825f80}.btn-green-600:disabled,.btn-green-600.disabled{color:#fff;background-color:#146c43;border-color:#146c43}.btn-green-700{color:#fff;background-color:#0f5132;border-color:#0f5132}.btn-green-700:hover{color:#fff;background-color:#0d452b;border-color:#0c4128}.btn-check:focus+.btn-green-700,.btn-green-700:focus{color:#fff;background-color:#0d452b;border-color:#0c4128;box-shadow:0 0 0 .25rem #336b5180}.btn-check:checked+.btn-green-700,.btn-check:active+.btn-green-700,.btn-green-700:active,.btn-green-700.active,.show>.btn-green-700.dropdown-toggle{color:#fff;background-color:#0c4128;border-color:#0b3d26}.btn-check:checked+.btn-green-700:focus,.btn-check:active+.btn-green-700:focus,.btn-green-700:active:focus,.btn-green-700.active:focus,.show>.btn-green-700.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #336b5180}.btn-green-700:disabled,.btn-green-700.disabled{color:#fff;background-color:#0f5132;border-color:#0f5132}.btn-green-800{color:#fff;background-color:#0a3622;border-color:#0a3622}.btn-green-800:hover{color:#fff;background-color:#092e1d;border-color:#082b1b}.btn-check:focus+.btn-green-800,.btn-green-800:focus{color:#fff;background-color:#092e1d;border-color:#082b1b;box-shadow:0 0 0 .25rem #2f544380}.btn-check:checked+.btn-green-800,.btn-check:active+.btn-green-800,.btn-green-800:active,.btn-green-800.active,.show>.btn-green-800.dropdown-toggle{color:#fff;background-color:#082b1b;border-color:#08291a}.btn-check:checked+.btn-green-800:focus,.btn-check:active+.btn-green-800:focus,.btn-green-800:active:focus,.btn-green-800.active:focus,.show>.btn-green-800.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #2f544380}.btn-green-800:disabled,.btn-green-800.disabled{color:#fff;background-color:#0a3622;border-color:#0a3622}.btn-green-900{color:#fff;background-color:#051b11;border-color:#051b11}.btn-green-900:hover{color:#fff;background-color:#04170e;border-color:#04160e}.btn-check:focus+.btn-green-900,.btn-green-900:focus{color:#fff;background-color:#04170e;border-color:#04160e;box-shadow:0 0 0 .25rem #2b3d3580}.btn-check:checked+.btn-green-900,.btn-check:active+.btn-green-900,.btn-green-900:active,.btn-green-900.active,.show>.btn-green-900.dropdown-toggle{color:#fff;background-color:#04160e;border-color:#04140d}.btn-check:checked+.btn-green-900:focus,.btn-check:active+.btn-green-900:focus,.btn-green-900:active:focus,.btn-green-900.active:focus,.show>.btn-green-900.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #2b3d3580}.btn-green-900:disabled,.btn-green-900.disabled{color:#fff;background-color:#051b11;border-color:#051b11}.btn-blue-100{color:#000;background-color:#cfe2ff;border-color:#cfe2ff}.btn-blue-100:hover{color:#000;background-color:#d6e6ff;border-color:#d4e5ff}.btn-check:focus+.btn-blue-100,.btn-blue-100:focus{color:#000;background-color:#d6e6ff;border-color:#d4e5ff;box-shadow:0 0 0 .25rem #b0c0d980}.btn-check:checked+.btn-blue-100,.btn-check:active+.btn-blue-100,.btn-blue-100:active,.btn-blue-100.active,.show>.btn-blue-100.dropdown-toggle{color:#000;background-color:#d9e8ff;border-color:#d4e5ff}.btn-check:checked+.btn-blue-100:focus,.btn-check:active+.btn-blue-100:focus,.btn-blue-100:active:focus,.btn-blue-100.active:focus,.show>.btn-blue-100.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #b0c0d980}.btn-blue-100:disabled,.btn-blue-100.disabled{color:#000;background-color:#cfe2ff;border-color:#cfe2ff}.btn-blue-200{color:#000;background-color:#9ec5fe;border-color:#9ec5fe}.btn-blue-200:hover{color:#000;background-color:#adcefe;border-color:#a8cbfe}.btn-check:focus+.btn-blue-200,.btn-blue-200:focus{color:#000;background-color:#adcefe;border-color:#a8cbfe;box-shadow:0 0 0 .25rem #86a7d880}.btn-check:checked+.btn-blue-200,.btn-check:active+.btn-blue-200,.btn-blue-200:active,.btn-blue-200.active,.show>.btn-blue-200.dropdown-toggle{color:#000;background-color:#b1d1fe;border-color:#a8cbfe}.btn-check:checked+.btn-blue-200:focus,.btn-check:active+.btn-blue-200:focus,.btn-blue-200:active:focus,.btn-blue-200.active:focus,.show>.btn-blue-200.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #86a7d880}.btn-blue-200:disabled,.btn-blue-200.disabled{color:#000;background-color:#9ec5fe;border-color:#9ec5fe}.btn-blue-300{color:#000;background-color:#6ea8fe;border-color:#6ea8fe}.btn-blue-300:hover{color:#000;background-color:#84b5fe;border-color:#7db1fe}.btn-check:focus+.btn-blue-300,.btn-blue-300:focus{color:#000;background-color:#84b5fe;border-color:#7db1fe;box-shadow:0 0 0 .25rem #5e8fd880}.btn-check:checked+.btn-blue-300,.btn-check:active+.btn-blue-300,.btn-blue-300:active,.btn-blue-300.active,.show>.btn-blue-300.dropdown-toggle{color:#000;background-color:#8bb9fe;border-color:#7db1fe}.btn-check:checked+.btn-blue-300:focus,.btn-check:active+.btn-blue-300:focus,.btn-blue-300:active:focus,.btn-blue-300.active:focus,.show>.btn-blue-300.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #5e8fd880}.btn-blue-300:disabled,.btn-blue-300.disabled{color:#000;background-color:#6ea8fe;border-color:#6ea8fe}.btn-blue-400{color:#000;background-color:#3d8bfd;border-color:#3d8bfd}.btn-blue-400:hover{color:#000;background-color:#5a9cfd;border-color:#5097fd}.btn-check:focus+.btn-blue-400,.btn-blue-400:focus{color:#000;background-color:#5a9cfd;border-color:#5097fd;box-shadow:0 0 0 .25rem #3476d780}.btn-check:checked+.btn-blue-400,.btn-check:active+.btn-blue-400,.btn-blue-400:active,.btn-blue-400.active,.show>.btn-blue-400.dropdown-toggle{color:#000;background-color:#64a2fd;border-color:#5097fd}.btn-check:checked+.btn-blue-400:focus,.btn-check:active+.btn-blue-400:focus,.btn-blue-400:active:focus,.btn-blue-400.active:focus,.show>.btn-blue-400.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #3476d780}.btn-blue-400:disabled,.btn-blue-400.disabled{color:#000;background-color:#3d8bfd;border-color:#3d8bfd}.btn-blue-500{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-blue-500:hover{color:#fff;background-color:#0b5ed7;border-color:#0a58ca}.btn-check:focus+.btn-blue-500,.btn-blue-500:focus{color:#fff;background-color:#0b5ed7;border-color:#0a58ca;box-shadow:0 0 0 .25rem #3184fd80}.btn-check:checked+.btn-blue-500,.btn-check:active+.btn-blue-500,.btn-blue-500:active,.btn-blue-500.active,.show>.btn-blue-500.dropdown-toggle{color:#fff;background-color:#0a58ca;border-color:#0a53be}.btn-check:checked+.btn-blue-500:focus,.btn-check:active+.btn-blue-500:focus,.btn-blue-500:active:focus,.btn-blue-500.active:focus,.show>.btn-blue-500.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #3184fd80}.btn-blue-500:disabled,.btn-blue-500.disabled{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-blue-600{color:#fff;background-color:#0a58ca;border-color:#0a58ca}.btn-blue-600:hover{color:#fff;background-color:#094bac;border-color:#0846a2}.btn-check:focus+.btn-blue-600,.btn-blue-600:focus{color:#fff;background-color:#094bac;border-color:#0846a2;box-shadow:0 0 0 .25rem #2f71d280}.btn-check:checked+.btn-blue-600,.btn-check:active+.btn-blue-600,.btn-blue-600:active,.btn-blue-600.active,.show>.btn-blue-600.dropdown-toggle{color:#fff;background-color:#0846a2;border-color:#084298}.btn-check:checked+.btn-blue-600:focus,.btn-check:active+.btn-blue-600:focus,.btn-blue-600:active:focus,.btn-blue-600.active:focus,.show>.btn-blue-600.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #2f71d280}.btn-blue-600:disabled,.btn-blue-600.disabled{color:#fff;background-color:#0a58ca;border-color:#0a58ca}.btn-blue-700{color:#fff;background-color:#084298;border-color:#084298}.btn-blue-700:hover{color:#fff;background-color:#073881;border-color:#06357a}.btn-check:focus+.btn-blue-700,.btn-blue-700:focus{color:#fff;background-color:#073881;border-color:#06357a;box-shadow:0 0 0 .25rem #2d5ea780}.btn-check:checked+.btn-blue-700,.btn-check:active+.btn-blue-700,.btn-blue-700:active,.btn-blue-700.active,.show>.btn-blue-700.dropdown-toggle{color:#fff;background-color:#06357a;border-color:#063272}.btn-check:checked+.btn-blue-700:focus,.btn-check:active+.btn-blue-700:focus,.btn-blue-700:active:focus,.btn-blue-700.active:focus,.show>.btn-blue-700.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #2d5ea780}.btn-blue-700:disabled,.btn-blue-700.disabled{color:#fff;background-color:#084298;border-color:#084298}.btn-blue-800{color:#fff;background-color:#052c65;border-color:#052c65}.btn-blue-800:hover{color:#fff;background-color:#042556;border-color:#042351}.btn-check:focus+.btn-blue-800,.btn-blue-800:focus{color:#fff;background-color:#042556;border-color:#042351;box-shadow:0 0 0 .25rem #2b4c7c80}.btn-check:checked+.btn-blue-800,.btn-check:active+.btn-blue-800,.btn-blue-800:active,.btn-blue-800.active,.show>.btn-blue-800.dropdown-toggle{color:#fff;background-color:#042351;border-color:#04214c}.btn-check:checked+.btn-blue-800:focus,.btn-check:active+.btn-blue-800:focus,.btn-blue-800:active:focus,.btn-blue-800.active:focus,.show>.btn-blue-800.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #2b4c7c80}.btn-blue-800:disabled,.btn-blue-800.disabled{color:#fff;background-color:#052c65;border-color:#052c65}.btn-blue-900{color:#fff;background-color:#031633;border-color:#031633}.btn-blue-900:hover{color:#fff;background-color:#03132b;border-color:#021229}.btn-check:focus+.btn-blue-900,.btn-blue-900:focus{color:#fff;background-color:#03132b;border-color:#021229;box-shadow:0 0 0 .25rem #29395280}.btn-check:checked+.btn-blue-900,.btn-check:active+.btn-blue-900,.btn-blue-900:active,.btn-blue-900.active,.show>.btn-blue-900.dropdown-toggle{color:#fff;background-color:#021229;border-color:#021126}.btn-check:checked+.btn-blue-900:focus,.btn-check:active+.btn-blue-900:focus,.btn-blue-900:active:focus,.btn-blue-900.active:focus,.show>.btn-blue-900.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #29395280}.btn-blue-900:disabled,.btn-blue-900.disabled{color:#fff;background-color:#031633;border-color:#031633}.btn-cyan-100{color:#000;background-color:#cff4fc;border-color:#cff4fc}.btn-cyan-100:hover{color:#000;background-color:#d6f6fc;border-color:#d4f5fc}.btn-check:focus+.btn-cyan-100,.btn-cyan-100:focus{color:#000;background-color:#d6f6fc;border-color:#d4f5fc;box-shadow:0 0 0 .25rem #b0cfd680}.btn-check:checked+.btn-cyan-100,.btn-check:active+.btn-cyan-100,.btn-cyan-100:active,.btn-cyan-100.active,.show>.btn-cyan-100.dropdown-toggle{color:#000;background-color:#d9f6fd;border-color:#d4f5fc}.btn-check:checked+.btn-cyan-100:focus,.btn-check:active+.btn-cyan-100:focus,.btn-cyan-100:active:focus,.btn-cyan-100.active:focus,.show>.btn-cyan-100.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #b0cfd680}.btn-cyan-100:disabled,.btn-cyan-100.disabled{color:#000;background-color:#cff4fc;border-color:#cff4fc}.btn-cyan-200{color:#000;background-color:#9eeaf9;border-color:#9eeaf9}.btn-cyan-200:hover{color:#000;background-color:#adedfa;border-color:#a8ecfa}.btn-check:focus+.btn-cyan-200,.btn-cyan-200:focus{color:#000;background-color:#adedfa;border-color:#a8ecfa;box-shadow:0 0 0 .25rem #86c7d480}.btn-check:checked+.btn-cyan-200,.btn-check:active+.btn-cyan-200,.btn-cyan-200:active,.btn-cyan-200.active,.show>.btn-cyan-200.dropdown-toggle{color:#000;background-color:#b1eefa;border-color:#a8ecfa}.btn-check:checked+.btn-cyan-200:focus,.btn-check:active+.btn-cyan-200:focus,.btn-cyan-200:active:focus,.btn-cyan-200.active:focus,.show>.btn-cyan-200.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #86c7d480}.btn-cyan-200:disabled,.btn-cyan-200.disabled{color:#000;background-color:#9eeaf9;border-color:#9eeaf9}.btn-cyan-300{color:#000;background-color:#6edff6;border-color:#6edff6}.btn-cyan-300:hover{color:#000;background-color:#84e4f7;border-color:#7de2f7}.btn-check:focus+.btn-cyan-300,.btn-cyan-300:focus{color:#000;background-color:#84e4f7;border-color:#7de2f7;box-shadow:0 0 0 .25rem #5ebed180}.btn-check:checked+.btn-cyan-300,.btn-check:active+.btn-cyan-300,.btn-cyan-300:active,.btn-cyan-300.active,.show>.btn-cyan-300.dropdown-toggle{color:#000;background-color:#8be5f8;border-color:#7de2f7}.btn-check:checked+.btn-cyan-300:focus,.btn-check:active+.btn-cyan-300:focus,.btn-cyan-300:active:focus,.btn-cyan-300.active:focus,.show>.btn-cyan-300.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #5ebed180}.btn-cyan-300:disabled,.btn-cyan-300.disabled{color:#000;background-color:#6edff6;border-color:#6edff6}.btn-cyan-400{color:#000;background-color:#3dd5f3;border-color:#3dd5f3}.btn-cyan-400:hover{color:#000;background-color:#5adbf5;border-color:#50d9f4}.btn-check:focus+.btn-cyan-400,.btn-cyan-400:focus{color:#000;background-color:#5adbf5;border-color:#50d9f4;box-shadow:0 0 0 .25rem #34b5cf80}.btn-check:checked+.btn-cyan-400,.btn-check:active+.btn-cyan-400,.btn-cyan-400:active,.btn-cyan-400.active,.show>.btn-cyan-400.dropdown-toggle{color:#000;background-color:#64ddf5;border-color:#50d9f4}.btn-check:checked+.btn-cyan-400:focus,.btn-check:active+.btn-cyan-400:focus,.btn-cyan-400:active:focus,.btn-cyan-400.active:focus,.show>.btn-cyan-400.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #34b5cf80}.btn-cyan-400:disabled,.btn-cyan-400.disabled{color:#000;background-color:#3dd5f3;border-color:#3dd5f3}.btn-cyan-500{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-cyan-500:hover{color:#000;background-color:#31d2f2;border-color:#25cff2}.btn-check:focus+.btn-cyan-500,.btn-cyan-500:focus{color:#000;background-color:#31d2f2;border-color:#25cff2;box-shadow:0 0 0 .25rem #0baccc80}.btn-check:checked+.btn-cyan-500,.btn-check:active+.btn-cyan-500,.btn-cyan-500:active,.btn-cyan-500.active,.show>.btn-cyan-500.dropdown-toggle{color:#000;background-color:#3dd5f3;border-color:#25cff2}.btn-check:checked+.btn-cyan-500:focus,.btn-check:active+.btn-cyan-500:focus,.btn-cyan-500:active:focus,.btn-cyan-500.active:focus,.show>.btn-cyan-500.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #0baccc80}.btn-cyan-500:disabled,.btn-cyan-500.disabled{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-cyan-600{color:#000;background-color:#0aa2c0;border-color:#0aa2c0}.btn-cyan-600:hover{color:#000;background-color:#2fb0c9;border-color:#23abc6}.btn-check:focus+.btn-cyan-600,.btn-cyan-600:focus{color:#000;background-color:#2fb0c9;border-color:#23abc6;box-shadow:0 0 0 .25rem #098aa380}.btn-check:checked+.btn-cyan-600,.btn-check:active+.btn-cyan-600,.btn-cyan-600:active,.btn-cyan-600.active,.show>.btn-cyan-600.dropdown-toggle{color:#000;background-color:#3bb5cd;border-color:#23abc6}.btn-check:checked+.btn-cyan-600:focus,.btn-check:active+.btn-cyan-600:focus,.btn-cyan-600:active:focus,.btn-cyan-600.active:focus,.show>.btn-cyan-600.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #098aa380}.btn-cyan-600:disabled,.btn-cyan-600.disabled{color:#000;background-color:#0aa2c0;border-color:#0aa2c0}.btn-cyan-700{color:#fff;background-color:#087990;border-color:#087990}.btn-cyan-700:hover{color:#fff;background-color:#07677a;border-color:#066173}.btn-check:focus+.btn-cyan-700,.btn-cyan-700:focus{color:#fff;background-color:#07677a;border-color:#066173;box-shadow:0 0 0 .25rem #2d8da180}.btn-check:checked+.btn-cyan-700,.btn-check:active+.btn-cyan-700,.btn-cyan-700:active,.btn-cyan-700.active,.show>.btn-cyan-700.dropdown-toggle{color:#fff;background-color:#066173;border-color:#065b6c}.btn-check:checked+.btn-cyan-700:focus,.btn-check:active+.btn-cyan-700:focus,.btn-cyan-700:active:focus,.btn-cyan-700.active:focus,.show>.btn-cyan-700.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #2d8da180}.btn-cyan-700:disabled,.btn-cyan-700.disabled{color:#fff;background-color:#087990;border-color:#087990}.btn-cyan-800{color:#fff;background-color:#055160;border-color:#055160}.btn-cyan-800:hover{color:#fff;background-color:#044552;border-color:#04414d}.btn-check:focus+.btn-cyan-800,.btn-cyan-800:focus{color:#fff;background-color:#044552;border-color:#04414d;box-shadow:0 0 0 .25rem #2b6b7880}.btn-check:checked+.btn-cyan-800,.btn-check:active+.btn-cyan-800,.btn-cyan-800:active,.btn-cyan-800.active,.show>.btn-cyan-800.dropdown-toggle{color:#fff;background-color:#04414d;border-color:#043d48}.btn-check:checked+.btn-cyan-800:focus,.btn-check:active+.btn-cyan-800:focus,.btn-cyan-800:active:focus,.btn-cyan-800.active:focus,.show>.btn-cyan-800.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #2b6b7880}.btn-cyan-800:disabled,.btn-cyan-800.disabled{color:#fff;background-color:#055160;border-color:#055160}.btn-cyan-900{color:#fff;background-color:#032830;border-color:#032830}.btn-cyan-900:hover{color:#fff;background-color:#032229;border-color:#022026}.btn-check:focus+.btn-cyan-900,.btn-cyan-900:focus{color:#fff;background-color:#032229;border-color:#022026;box-shadow:0 0 0 .25rem #29484f80}.btn-check:checked+.btn-cyan-900,.btn-check:active+.btn-cyan-900,.btn-cyan-900:active,.btn-cyan-900.active,.show>.btn-cyan-900.dropdown-toggle{color:#fff;background-color:#022026;border-color:#021e24}.btn-check:checked+.btn-cyan-900:focus,.btn-check:active+.btn-cyan-900:focus,.btn-cyan-900:active:focus,.btn-cyan-900.active:focus,.show>.btn-cyan-900.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #29484f80}.btn-cyan-900:disabled,.btn-cyan-900.disabled{color:#fff;background-color:#032830;border-color:#032830}.btn-indigo-100{color:#000;background-color:#e0cffc;border-color:#e0cffc}.btn-indigo-100:hover{color:#000;background-color:#e5d6fc;border-color:#e3d4fc}.btn-check:focus+.btn-indigo-100,.btn-indigo-100:focus{color:#000;background-color:#e5d6fc;border-color:#e3d4fc;box-shadow:0 0 0 .25rem #beb0d680}.btn-check:checked+.btn-indigo-100,.btn-check:active+.btn-indigo-100,.btn-indigo-100:active,.btn-indigo-100.active,.show>.btn-indigo-100.dropdown-toggle{color:#000;background-color:#e6d9fd;border-color:#e3d4fc}.btn-check:checked+.btn-indigo-100:focus,.btn-check:active+.btn-indigo-100:focus,.btn-indigo-100:active:focus,.btn-indigo-100.active:focus,.show>.btn-indigo-100.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #beb0d680}.btn-indigo-100:disabled,.btn-indigo-100.disabled{color:#000;background-color:#e0cffc;border-color:#e0cffc}.btn-indigo-200{color:#000;background-color:#c29ffa;border-color:#c29ffa}.btn-indigo-200:hover{color:#000;background-color:#cbadfb;border-color:#c8a9fb}.btn-check:focus+.btn-indigo-200,.btn-indigo-200:focus{color:#000;background-color:#cbadfb;border-color:#c8a9fb;box-shadow:0 0 0 .25rem #a587d580}.btn-check:checked+.btn-indigo-200,.btn-check:active+.btn-indigo-200,.btn-indigo-200:active,.btn-indigo-200.active,.show>.btn-indigo-200.dropdown-toggle{color:#000;background-color:#ceb2fb;border-color:#c8a9fb}.btn-check:checked+.btn-indigo-200:focus,.btn-check:active+.btn-indigo-200:focus,.btn-indigo-200:active:focus,.btn-indigo-200.active:focus,.show>.btn-indigo-200.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #a587d580}.btn-indigo-200:disabled,.btn-indigo-200.disabled{color:#000;background-color:#c29ffa;border-color:#c29ffa}.btn-indigo-300{color:#000;background-color:#a370f7;border-color:#a370f7}.btn-indigo-300:hover{color:#000;background-color:#b185f8;border-color:#ac7ef8}.btn-check:focus+.btn-indigo-300,.btn-indigo-300:focus{color:#000;background-color:#b185f8;border-color:#ac7ef8;box-shadow:0 0 0 .25rem #8b5fd280}.btn-check:checked+.btn-indigo-300,.btn-check:active+.btn-indigo-300,.btn-indigo-300:active,.btn-indigo-300.active,.show>.btn-indigo-300.dropdown-toggle{color:#000;background-color:#b58df9;border-color:#ac7ef8}.btn-check:checked+.btn-indigo-300:focus,.btn-check:active+.btn-indigo-300:focus,.btn-indigo-300:active:focus,.btn-indigo-300.active:focus,.show>.btn-indigo-300.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #8b5fd280}.btn-indigo-300:disabled,.btn-indigo-300.disabled{color:#000;background-color:#a370f7;border-color:#a370f7}.btn-indigo-400{color:#fff;background-color:#8540f5;border-color:#8540f5}.btn-indigo-400:hover{color:#fff;background-color:#7136d0;border-color:#6a33c4}.btn-check:focus+.btn-indigo-400,.btn-indigo-400:focus{color:#fff;background-color:#7136d0;border-color:#6a33c4;box-shadow:0 0 0 .25rem #975df780}.btn-check:checked+.btn-indigo-400,.btn-check:active+.btn-indigo-400,.btn-indigo-400:active,.btn-indigo-400.active,.show>.btn-indigo-400.dropdown-toggle{color:#fff;background-color:#6a33c4;border-color:#6430b8}.btn-check:checked+.btn-indigo-400:focus,.btn-check:active+.btn-indigo-400:focus,.btn-indigo-400:active:focus,.btn-indigo-400.active:focus,.show>.btn-indigo-400.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #975df780}.btn-indigo-400:disabled,.btn-indigo-400.disabled{color:#fff;background-color:#8540f5;border-color:#8540f5}.btn-indigo-500{color:#fff;background-color:#6610f2;border-color:#6610f2}.btn-indigo-500:hover{color:#fff;background-color:#570ece;border-color:#520dc2}.btn-check:focus+.btn-indigo-500,.btn-indigo-500:focus{color:#fff;background-color:#570ece;border-color:#520dc2;box-shadow:0 0 0 .25rem #7d34f480}.btn-check:checked+.btn-indigo-500,.btn-check:active+.btn-indigo-500,.btn-indigo-500:active,.btn-indigo-500.active,.show>.btn-indigo-500.dropdown-toggle{color:#fff;background-color:#520dc2;border-color:#4d0cb6}.btn-check:checked+.btn-indigo-500:focus,.btn-check:active+.btn-indigo-500:focus,.btn-indigo-500:active:focus,.btn-indigo-500.active:focus,.show>.btn-indigo-500.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #7d34f480}.btn-indigo-500:disabled,.btn-indigo-500.disabled{color:#fff;background-color:#6610f2;border-color:#6610f2}.btn-indigo-600{color:#fff;background-color:#520dc2;border-color:#520dc2}.btn-indigo-600:hover{color:#fff;background-color:#460ba5;border-color:#420a9b}.btn-check:focus+.btn-indigo-600,.btn-indigo-600:focus{color:#fff;background-color:#460ba5;border-color:#420a9b;box-shadow:0 0 0 .25rem #6c31cb80}.btn-check:checked+.btn-indigo-600,.btn-check:active+.btn-indigo-600,.btn-indigo-600:active,.btn-indigo-600.active,.show>.btn-indigo-600.dropdown-toggle{color:#fff;background-color:#420a9b;border-color:#3e0a92}.btn-check:checked+.btn-indigo-600:focus,.btn-check:active+.btn-indigo-600:focus,.btn-indigo-600:active:focus,.btn-indigo-600.active:focus,.show>.btn-indigo-600.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #6c31cb80}.btn-indigo-600:disabled,.btn-indigo-600.disabled{color:#fff;background-color:#520dc2;border-color:#520dc2}.btn-indigo-700{color:#fff;background-color:#3d0a91;border-color:#3d0a91}.btn-indigo-700:hover{color:#fff;background-color:#34097b;border-color:#310874}.btn-check:focus+.btn-indigo-700,.btn-indigo-700:focus{color:#fff;background-color:#34097b;border-color:#310874;box-shadow:0 0 0 .25rem #5a2fa280}.btn-check:checked+.btn-indigo-700,.btn-check:active+.btn-indigo-700,.btn-indigo-700:active,.btn-indigo-700.active,.show>.btn-indigo-700.dropdown-toggle{color:#fff;background-color:#310874;border-color:#2e086d}.btn-check:checked+.btn-indigo-700:focus,.btn-check:active+.btn-indigo-700:focus,.btn-indigo-700:active:focus,.btn-indigo-700.active:focus,.show>.btn-indigo-700.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #5a2fa280}.btn-indigo-700:disabled,.btn-indigo-700.disabled{color:#fff;background-color:#3d0a91;border-color:#3d0a91}.btn-indigo-800{color:#fff;background-color:#290661;border-color:#290661}.btn-indigo-800:hover{color:#fff;background-color:#230552;border-color:#21054e}.btn-check:focus+.btn-indigo-800,.btn-indigo-800:focus{color:#fff;background-color:#230552;border-color:#21054e;box-shadow:0 0 0 .25rem #492b7980}.btn-check:checked+.btn-indigo-800,.btn-check:active+.btn-indigo-800,.btn-indigo-800:active,.btn-indigo-800.active,.show>.btn-indigo-800.dropdown-toggle{color:#fff;background-color:#21054e;border-color:#1f0549}.btn-check:checked+.btn-indigo-800:focus,.btn-check:active+.btn-indigo-800:focus,.btn-indigo-800:active:focus,.btn-indigo-800.active:focus,.show>.btn-indigo-800.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #492b7980}.btn-indigo-800:disabled,.btn-indigo-800.disabled{color:#fff;background-color:#290661;border-color:#290661}.btn-indigo-900{color:#fff;background-color:#140330;border-color:#140330}.btn-indigo-900:hover{color:#fff;background-color:#110329;border-color:#100226}.btn-check:focus+.btn-indigo-900,.btn-indigo-900:focus{color:#fff;background-color:#110329;border-color:#100226;box-shadow:0 0 0 .25rem #37294f80}.btn-check:checked+.btn-indigo-900,.btn-check:active+.btn-indigo-900,.btn-indigo-900:active,.btn-indigo-900.active,.show>.btn-indigo-900.dropdown-toggle{color:#fff;background-color:#100226;border-color:#0f0224}.btn-check:checked+.btn-indigo-900:focus,.btn-check:active+.btn-indigo-900:focus,.btn-indigo-900:active:focus,.btn-indigo-900.active:focus,.show>.btn-indigo-900.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #37294f80}.btn-indigo-900:disabled,.btn-indigo-900.disabled{color:#fff;background-color:#140330;border-color:#140330}.btn-purple-100{color:#000;background-color:#e2d9f3;border-color:#e2d9f3}.btn-purple-100:hover{color:#000;background-color:#e6dff5;border-color:#e5ddf4}.btn-check:focus+.btn-purple-100,.btn-purple-100:focus{color:#000;background-color:#e6dff5;border-color:#e5ddf4;box-shadow:0 0 0 .25rem #c0b8cf80}.btn-check:checked+.btn-purple-100,.btn-check:active+.btn-purple-100,.btn-purple-100:active,.btn-purple-100.active,.show>.btn-purple-100.dropdown-toggle{color:#000;background-color:#e8e1f5;border-color:#e5ddf4}.btn-check:checked+.btn-purple-100:focus,.btn-check:active+.btn-purple-100:focus,.btn-purple-100:active:focus,.btn-purple-100.active:focus,.show>.btn-purple-100.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #c0b8cf80}.btn-purple-100:disabled,.btn-purple-100.disabled{color:#000;background-color:#e2d9f3;border-color:#e2d9f3}.btn-purple-200{color:#000;background-color:#c5b3e6;border-color:#c5b3e6}.btn-purple-200:hover{color:#000;background-color:#cebeea;border-color:#cbbbe9}.btn-check:focus+.btn-purple-200,.btn-purple-200:focus{color:#000;background-color:#cebeea;border-color:#cbbbe9;box-shadow:0 0 0 .25rem #a798c480}.btn-check:checked+.btn-purple-200,.btn-check:active+.btn-purple-200,.btn-purple-200:active,.btn-purple-200.active,.show>.btn-purple-200.dropdown-toggle{color:#000;background-color:#d1c2eb;border-color:#cbbbe9}.btn-check:checked+.btn-purple-200:focus,.btn-check:active+.btn-purple-200:focus,.btn-purple-200:active:focus,.btn-purple-200.active:focus,.show>.btn-purple-200.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #a798c480}.btn-purple-200:disabled,.btn-purple-200.disabled{color:#000;background-color:#c5b3e6;border-color:#c5b3e6}.btn-purple-300{color:#000;background-color:#a98eda;border-color:#a98eda}.btn-purple-300:hover{color:#000;background-color:#b69fe0;border-color:#b299de}.btn-check:focus+.btn-purple-300,.btn-purple-300:focus{color:#000;background-color:#b69fe0;border-color:#b299de;box-shadow:0 0 0 .25rem #9079b980}.btn-check:checked+.btn-purple-300,.btn-check:active+.btn-purple-300,.btn-purple-300:active,.btn-purple-300.active,.show>.btn-purple-300.dropdown-toggle{color:#000;background-color:#baa5e1;border-color:#b299de}.btn-check:checked+.btn-purple-300:focus,.btn-check:active+.btn-purple-300:focus,.btn-purple-300:active:focus,.btn-purple-300.active:focus,.show>.btn-purple-300.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #9079b980}.btn-purple-300:disabled,.btn-purple-300.disabled{color:#000;background-color:#a98eda;border-color:#a98eda}.btn-purple-400{color:#000;background-color:#8c68cd;border-color:#8c68cd}.btn-purple-400:hover{color:#000;background-color:#9d7fd5;border-color:#9877d2}.btn-check:focus+.btn-purple-400,.btn-purple-400:focus{color:#000;background-color:#9d7fd5;border-color:#9877d2;box-shadow:0 0 0 .25rem #7758ae80}.btn-check:checked+.btn-purple-400,.btn-check:active+.btn-purple-400,.btn-purple-400:active,.btn-purple-400.active,.show>.btn-purple-400.dropdown-toggle{color:#000;background-color:#a386d7;border-color:#9877d2}.btn-check:checked+.btn-purple-400:focus,.btn-check:active+.btn-purple-400:focus,.btn-purple-400:active:focus,.btn-purple-400.active:focus,.show>.btn-purple-400.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #7758ae80}.btn-purple-400:disabled,.btn-purple-400.disabled{color:#000;background-color:#8c68cd;border-color:#8c68cd}.btn-purple-500{color:#fff;background-color:#6f42c1;border-color:#6f42c1}.btn-purple-500:hover{color:#fff;background-color:#5e38a4;border-color:#59359a}.btn-check:focus+.btn-purple-500,.btn-purple-500:focus{color:#fff;background-color:#5e38a4;border-color:#59359a;box-shadow:0 0 0 .25rem #855eca80}.btn-check:checked+.btn-purple-500,.btn-check:active+.btn-purple-500,.btn-purple-500:active,.btn-purple-500.active,.show>.btn-purple-500.dropdown-toggle{color:#fff;background-color:#59359a;border-color:#533291}.btn-check:checked+.btn-purple-500:focus,.btn-check:active+.btn-purple-500:focus,.btn-purple-500:active:focus,.btn-purple-500.active:focus,.show>.btn-purple-500.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #855eca80}.btn-purple-500:disabled,.btn-purple-500.disabled{color:#fff;background-color:#6f42c1;border-color:#6f42c1}.btn-purple-600{color:#fff;background-color:#59359a;border-color:#59359a}.btn-purple-600:hover{color:#fff;background-color:#4c2d83;border-color:#472a7b}.btn-check:focus+.btn-purple-600,.btn-purple-600:focus{color:#fff;background-color:#4c2d83;border-color:#472a7b;box-shadow:0 0 0 .25rem #7253a980}.btn-check:checked+.btn-purple-600,.btn-check:active+.btn-purple-600,.btn-purple-600:active,.btn-purple-600.active,.show>.btn-purple-600.dropdown-toggle{color:#fff;background-color:#472a7b;border-color:#432874}.btn-check:checked+.btn-purple-600:focus,.btn-check:active+.btn-purple-600:focus,.btn-purple-600:active:focus,.btn-purple-600.active:focus,.show>.btn-purple-600.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #7253a980}.btn-purple-600:disabled,.btn-purple-600.disabled{color:#fff;background-color:#59359a;border-color:#59359a}.btn-purple-700{color:#fff;background-color:#432874;border-color:#432874}.btn-purple-700:hover{color:#fff;background-color:#392263;border-color:#36205d}.btn-check:focus+.btn-purple-700,.btn-purple-700:focus{color:#fff;background-color:#392263;border-color:#36205d;box-shadow:0 0 0 .25rem #5f488980}.btn-check:checked+.btn-purple-700,.btn-check:active+.btn-purple-700,.btn-purple-700:active,.btn-purple-700.active,.show>.btn-purple-700.dropdown-toggle{color:#fff;background-color:#36205d;border-color:#321e57}.btn-check:checked+.btn-purple-700:focus,.btn-check:active+.btn-purple-700:focus,.btn-purple-700:active:focus,.btn-purple-700.active:focus,.show>.btn-purple-700.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #5f488980}.btn-purple-700:disabled,.btn-purple-700.disabled{color:#fff;background-color:#432874;border-color:#432874}.btn-purple-800{color:#fff;background-color:#2c1a4d;border-color:#2c1a4d}.btn-purple-800:hover{color:#fff;background-color:#251641;border-color:#23153e}.btn-check:focus+.btn-purple-800,.btn-purple-800:focus{color:#fff;background-color:#251641;border-color:#23153e;box-shadow:0 0 0 .25rem #4c3c6880}.btn-check:checked+.btn-purple-800,.btn-check:active+.btn-purple-800,.btn-purple-800:active,.btn-purple-800.active,.show>.btn-purple-800.dropdown-toggle{color:#fff;background-color:#23153e;border-color:#21143a}.btn-check:checked+.btn-purple-800:focus,.btn-check:active+.btn-purple-800:focus,.btn-purple-800:active:focus,.btn-purple-800.active:focus,.show>.btn-purple-800.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #4c3c6880}.btn-purple-800:disabled,.btn-purple-800.disabled{color:#fff;background-color:#2c1a4d;border-color:#2c1a4d}.btn-purple-900{color:#fff;background-color:#160d27;border-color:#160d27}.btn-purple-900:hover{color:#fff;background-color:#130b21;border-color:#120a1f}.btn-check:focus+.btn-purple-900,.btn-purple-900:focus{color:#fff;background-color:#130b21;border-color:#120a1f;box-shadow:0 0 0 .25rem #39314780}.btn-check:checked+.btn-purple-900,.btn-check:active+.btn-purple-900,.btn-purple-900:active,.btn-purple-900.active,.show>.btn-purple-900.dropdown-toggle{color:#fff;background-color:#120a1f;border-color:#110a1d}.btn-check:checked+.btn-purple-900:focus,.btn-check:active+.btn-purple-900:focus,.btn-purple-900:active:focus,.btn-purple-900.active:focus,.show>.btn-purple-900.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #39314780}.btn-purple-900:disabled,.btn-purple-900.disabled{color:#fff;background-color:#160d27;border-color:#160d27}.btn-pink-100{color:#000;background-color:#f7d6e6;border-color:#f7d6e6}.btn-pink-100:hover{color:#000;background-color:#f8dcea;border-color:#f8dae9}.btn-check:focus+.btn-pink-100,.btn-pink-100:focus{color:#000;background-color:#f8dcea;border-color:#f8dae9;box-shadow:0 0 0 .25rem #d2b6c480}.btn-check:checked+.btn-pink-100,.btn-check:active+.btn-pink-100,.btn-pink-100:active,.btn-pink-100.active,.show>.btn-pink-100.dropdown-toggle{color:#000;background-color:#f9deeb;border-color:#f8dae9}.btn-check:checked+.btn-pink-100:focus,.btn-check:active+.btn-pink-100:focus,.btn-pink-100:active:focus,.btn-pink-100.active:focus,.show>.btn-pink-100.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #d2b6c480}.btn-pink-100:disabled,.btn-pink-100.disabled{color:#000;background-color:#f7d6e6;border-color:#f7d6e6}.btn-pink-200{color:#000;background-color:#efadce;border-color:#efadce}.btn-pink-200:hover{color:#000;background-color:#f1b9d5;border-color:#f1b5d3}.btn-check:focus+.btn-pink-200,.btn-pink-200:focus{color:#000;background-color:#f1b9d5;border-color:#f1b5d3;box-shadow:0 0 0 .25rem #cb93af80}.btn-check:checked+.btn-pink-200,.btn-check:active+.btn-pink-200,.btn-pink-200:active,.btn-pink-200.active,.show>.btn-pink-200.dropdown-toggle{color:#000;background-color:#f2bdd8;border-color:#f1b5d3}.btn-check:checked+.btn-pink-200:focus,.btn-check:active+.btn-pink-200:focus,.btn-pink-200:active:focus,.btn-pink-200.active:focus,.show>.btn-pink-200.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #cb93af80}.btn-pink-200:disabled,.btn-pink-200.disabled{color:#000;background-color:#efadce;border-color:#efadce}.btn-pink-300{color:#000;background-color:#e685b5;border-color:#e685b5}.btn-pink-300:hover{color:#000;background-color:#ea97c0;border-color:#e991bc}.btn-check:focus+.btn-pink-300,.btn-pink-300:focus{color:#000;background-color:#ea97c0;border-color:#e991bc;box-shadow:0 0 0 .25rem #c4719a80}.btn-check:checked+.btn-pink-300,.btn-check:active+.btn-pink-300,.btn-pink-300:active,.btn-pink-300.active,.show>.btn-pink-300.dropdown-toggle{color:#000;background-color:#eb9dc4;border-color:#e991bc}.btn-check:checked+.btn-pink-300:focus,.btn-check:active+.btn-pink-300:focus,.btn-pink-300:active:focus,.btn-pink-300.active:focus,.show>.btn-pink-300.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #c4719a80}.btn-pink-300:disabled,.btn-pink-300.disabled{color:#000;background-color:#e685b5;border-color:#e685b5}.btn-pink-400{color:#000;background-color:#de5c9d;border-color:#de5c9d}.btn-pink-400:hover{color:#000;background-color:#e374ac;border-color:#e16ca7}.btn-check:focus+.btn-pink-400,.btn-pink-400:focus{color:#000;background-color:#e374ac;border-color:#e16ca7;box-shadow:0 0 0 .25rem #bd4e8580}.btn-check:checked+.btn-pink-400,.btn-check:active+.btn-pink-400,.btn-pink-400:active,.btn-pink-400.active,.show>.btn-pink-400.dropdown-toggle{color:#000;background-color:#e57db1;border-color:#e16ca7}.btn-check:checked+.btn-pink-400:focus,.btn-check:active+.btn-pink-400:focus,.btn-pink-400:active:focus,.btn-pink-400.active:focus,.show>.btn-pink-400.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #bd4e8580}.btn-pink-400:disabled,.btn-pink-400.disabled{color:#000;background-color:#de5c9d;border-color:#de5c9d}.btn-pink-500{color:#fff;background-color:#d63384;border-color:#d63384}.btn-pink-500:hover{color:#fff;background-color:#b62b70;border-color:#ab296a}.btn-check:focus+.btn-pink-500,.btn-pink-500:focus{color:#fff;background-color:#b62b70;border-color:#ab296a;box-shadow:0 0 0 .25rem #dc529680}.btn-check:checked+.btn-pink-500,.btn-check:active+.btn-pink-500,.btn-pink-500:active,.btn-pink-500.active,.show>.btn-pink-500.dropdown-toggle{color:#fff;background-color:#ab296a;border-color:#a12663}.btn-check:checked+.btn-pink-500:focus,.btn-check:active+.btn-pink-500:focus,.btn-pink-500:active:focus,.btn-pink-500.active:focus,.show>.btn-pink-500.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #dc529680}.btn-pink-500:disabled,.btn-pink-500.disabled{color:#fff;background-color:#d63384;border-color:#d63384}.btn-pink-600{color:#fff;background-color:#ab296a;border-color:#ab296a}.btn-pink-600:hover{color:#fff;background-color:#91235a;border-color:#892155}.btn-check:focus+.btn-pink-600,.btn-pink-600:focus{color:#fff;background-color:#91235a;border-color:#892155;box-shadow:0 0 0 .25rem #b8498080}.btn-check:checked+.btn-pink-600,.btn-check:active+.btn-pink-600,.btn-pink-600:active,.btn-pink-600.active,.show>.btn-pink-600.dropdown-toggle{color:#fff;background-color:#892155;border-color:#801f50}.btn-check:checked+.btn-pink-600:focus,.btn-check:active+.btn-pink-600:focus,.btn-pink-600:active:focus,.btn-pink-600.active:focus,.show>.btn-pink-600.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #b8498080}.btn-pink-600:disabled,.btn-pink-600.disabled{color:#fff;background-color:#ab296a;border-color:#ab296a}.btn-pink-700{color:#fff;background-color:#801f4f;border-color:#801f4f}.btn-pink-700:hover{color:#fff;background-color:#6d1a43;border-color:#66193f}.btn-check:focus+.btn-pink-700,.btn-pink-700:focus{color:#fff;background-color:#6d1a43;border-color:#66193f;box-shadow:0 0 0 .25rem #93416980}.btn-check:checked+.btn-pink-700,.btn-check:active+.btn-pink-700,.btn-pink-700:active,.btn-pink-700.active,.show>.btn-pink-700.dropdown-toggle{color:#fff;background-color:#66193f;border-color:#60173b}.btn-check:checked+.btn-pink-700:focus,.btn-check:active+.btn-pink-700:focus,.btn-pink-700:active:focus,.btn-pink-700.active:focus,.show>.btn-pink-700.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #93416980}.btn-pink-700:disabled,.btn-pink-700.disabled{color:#fff;background-color:#801f4f;border-color:#801f4f}.btn-pink-800{color:#fff;background-color:#561435;border-color:#561435}.btn-pink-800:hover{color:#fff;background-color:#49112d;border-color:#45102a}.btn-check:focus+.btn-pink-800,.btn-pink-800:focus{color:#fff;background-color:#49112d;border-color:#45102a;box-shadow:0 0 0 .25rem #6f375380}.btn-check:checked+.btn-pink-800,.btn-check:active+.btn-pink-800,.btn-pink-800:active,.btn-pink-800.active,.show>.btn-pink-800.dropdown-toggle{color:#fff;background-color:#45102a;border-color:#410f28}.btn-check:checked+.btn-pink-800:focus,.btn-check:active+.btn-pink-800:focus,.btn-pink-800:active:focus,.btn-pink-800.active:focus,.show>.btn-pink-800.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #6f375380}.btn-pink-800:disabled,.btn-pink-800.disabled{color:#fff;background-color:#561435;border-color:#561435}.btn-pink-900{color:#fff;background-color:#2b0a1a;border-color:#2b0a1a}.btn-pink-900:hover{color:#fff;background-color:#250916;border-color:#220815}.btn-check:focus+.btn-pink-900,.btn-pink-900:focus{color:#fff;background-color:#250916;border-color:#220815;box-shadow:0 0 0 .25rem #4b2f3c80}.btn-check:checked+.btn-pink-900,.btn-check:active+.btn-pink-900,.btn-pink-900:active,.btn-pink-900.active,.show>.btn-pink-900.dropdown-toggle{color:#fff;background-color:#220815;border-color:#200814}.btn-check:checked+.btn-pink-900:focus,.btn-check:active+.btn-pink-900:focus,.btn-pink-900:active:focus,.btn-pink-900.active:focus,.show>.btn-pink-900.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #4b2f3c80}.btn-pink-900:disabled,.btn-pink-900.disabled{color:#fff;background-color:#2b0a1a;border-color:#2b0a1a}.btn-outline-primary{color:#337ab7;border-color:#337ab7}.btn-outline-primary:hover{color:#fff;background-color:#337ab7;border-color:#337ab7}.btn-check:focus+.btn-outline-primary,.btn-outline-primary:focus{box-shadow:0 0 0 .25rem #337ab780}.btn-check:checked+.btn-outline-primary,.btn-check:active+.btn-outline-primary,.btn-outline-primary:active,.btn-outline-primary.active,.btn-outline-primary.dropdown-toggle.show{color:#fff;background-color:#337ab7;border-color:#337ab7}.btn-check:checked+.btn-outline-primary:focus,.btn-check:active+.btn-outline-primary:focus,.btn-outline-primary:active:focus,.btn-outline-primary.active:focus,.btn-outline-primary.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #337ab780}.btn-outline-primary:disabled,.btn-outline-primary.disabled{color:#337ab7;background-color:transparent}.btn-outline-secondary{color:#6c757d;border-color:#6c757d}.btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-check:focus+.btn-outline-secondary,.btn-outline-secondary:focus{box-shadow:0 0 0 .25rem #6c757d80}.btn-check:checked+.btn-outline-secondary,.btn-check:active+.btn-outline-secondary,.btn-outline-secondary:active,.btn-outline-secondary.active,.btn-outline-secondary.dropdown-toggle.show{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-check:checked+.btn-outline-secondary:focus,.btn-check:active+.btn-outline-secondary:focus,.btn-outline-secondary:active:focus,.btn-outline-secondary.active:focus,.btn-outline-secondary.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #6c757d80}.btn-outline-secondary:disabled,.btn-outline-secondary.disabled{color:#6c757d;background-color:transparent}.btn-outline-success{color:#198754;border-color:#198754}.btn-outline-success:hover{color:#fff;background-color:#198754;border-color:#198754}.btn-check:focus+.btn-outline-success,.btn-outline-success:focus{box-shadow:0 0 0 .25rem #19875480}.btn-check:checked+.btn-outline-success,.btn-check:active+.btn-outline-success,.btn-outline-success:active,.btn-outline-success.active,.btn-outline-success.dropdown-toggle.show{color:#fff;background-color:#198754;border-color:#198754}.btn-check:checked+.btn-outline-success:focus,.btn-check:active+.btn-outline-success:focus,.btn-outline-success:active:focus,.btn-outline-success.active:focus,.btn-outline-success.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #19875480}.btn-outline-success:disabled,.btn-outline-success.disabled{color:#198754;background-color:transparent}.btn-outline-info{color:#0dcaf0;border-color:#0dcaf0}.btn-outline-info:hover{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-check:focus+.btn-outline-info,.btn-outline-info:focus{box-shadow:0 0 0 .25rem #0dcaf080}.btn-check:checked+.btn-outline-info,.btn-check:active+.btn-outline-info,.btn-outline-info:active,.btn-outline-info.active,.btn-outline-info.dropdown-toggle.show{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-check:checked+.btn-outline-info:focus,.btn-check:active+.btn-outline-info:focus,.btn-outline-info:active:focus,.btn-outline-info.active:focus,.btn-outline-info.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #0dcaf080}.btn-outline-info:disabled,.btn-outline-info.disabled{color:#0dcaf0;background-color:transparent}.btn-outline-warning{color:#ffc107;border-color:#ffc107}.btn-outline-warning:hover{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-check:focus+.btn-outline-warning,.btn-outline-warning:focus{box-shadow:0 0 0 .25rem #ffc10780}.btn-check:checked+.btn-outline-warning,.btn-check:active+.btn-outline-warning,.btn-outline-warning:active,.btn-outline-warning.active,.btn-outline-warning.dropdown-toggle.show{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-check:checked+.btn-outline-warning:focus,.btn-check:active+.btn-outline-warning:focus,.btn-outline-warning:active:focus,.btn-outline-warning.active:focus,.btn-outline-warning.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #ffc10780}.btn-outline-warning:disabled,.btn-outline-warning.disabled{color:#ffc107;background-color:transparent}.btn-outline-danger{color:#dc3545;border-color:#dc3545}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-check:focus+.btn-outline-danger,.btn-outline-danger:focus{box-shadow:0 0 0 .25rem #dc354580}.btn-check:checked+.btn-outline-danger,.btn-check:active+.btn-outline-danger,.btn-outline-danger:active,.btn-outline-danger.active,.btn-outline-danger.dropdown-toggle.show{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-check:checked+.btn-outline-danger:focus,.btn-check:active+.btn-outline-danger:focus,.btn-outline-danger:active:focus,.btn-outline-danger.active:focus,.btn-outline-danger.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #dc354580}.btn-outline-danger:disabled,.btn-outline-danger.disabled{color:#dc3545;background-color:transparent}.btn-outline-light{color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:hover{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-check:focus+.btn-outline-light,.btn-outline-light:focus{box-shadow:0 0 0 .25rem #f8f9fa80}.btn-check:checked+.btn-outline-light,.btn-check:active+.btn-outline-light,.btn-outline-light:active,.btn-outline-light.active,.btn-outline-light.dropdown-toggle.show{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-check:checked+.btn-outline-light:focus,.btn-check:active+.btn-outline-light:focus,.btn-outline-light:active:focus,.btn-outline-light.active:focus,.btn-outline-light.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #f8f9fa80}.btn-outline-light:disabled,.btn-outline-light.disabled{color:#f8f9fa;background-color:transparent}.btn-outline-dark{color:#212529;border-color:#212529}.btn-outline-dark:hover{color:#fff;background-color:#212529;border-color:#212529}.btn-check:focus+.btn-outline-dark,.btn-outline-dark:focus{box-shadow:0 0 0 .25rem #21252980}.btn-check:checked+.btn-outline-dark,.btn-check:active+.btn-outline-dark,.btn-outline-dark:active,.btn-outline-dark.active,.btn-outline-dark.dropdown-toggle.show{color:#fff;background-color:#212529;border-color:#212529}.btn-check:checked+.btn-outline-dark:focus,.btn-check:active+.btn-outline-dark:focus,.btn-outline-dark:active:focus,.btn-outline-dark.active:focus,.btn-outline-dark.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #21252980}.btn-outline-dark:disabled,.btn-outline-dark.disabled{color:#212529;background-color:transparent}.btn-outline-red{color:#dc3545;border-color:#dc3545}.btn-outline-red:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-check:focus+.btn-outline-red,.btn-outline-red:focus{box-shadow:0 0 0 .25rem #dc354580}.btn-check:checked+.btn-outline-red,.btn-check:active+.btn-outline-red,.btn-outline-red:active,.btn-outline-red.active,.btn-outline-red.dropdown-toggle.show{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-check:checked+.btn-outline-red:focus,.btn-check:active+.btn-outline-red:focus,.btn-outline-red:active:focus,.btn-outline-red.active:focus,.btn-outline-red.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #dc354580}.btn-outline-red:disabled,.btn-outline-red.disabled{color:#dc3545;background-color:transparent}.btn-outline-yellow{color:#ffc107;border-color:#ffc107}.btn-outline-yellow:hover{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-check:focus+.btn-outline-yellow,.btn-outline-yellow:focus{box-shadow:0 0 0 .25rem #ffc10780}.btn-check:checked+.btn-outline-yellow,.btn-check:active+.btn-outline-yellow,.btn-outline-yellow:active,.btn-outline-yellow.active,.btn-outline-yellow.dropdown-toggle.show{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-check:checked+.btn-outline-yellow:focus,.btn-check:active+.btn-outline-yellow:focus,.btn-outline-yellow:active:focus,.btn-outline-yellow.active:focus,.btn-outline-yellow.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #ffc10780}.btn-outline-yellow:disabled,.btn-outline-yellow.disabled{color:#ffc107;background-color:transparent}.btn-outline-green{color:#198754;border-color:#198754}.btn-outline-green:hover{color:#fff;background-color:#198754;border-color:#198754}.btn-check:focus+.btn-outline-green,.btn-outline-green:focus{box-shadow:0 0 0 .25rem #19875480}.btn-check:checked+.btn-outline-green,.btn-check:active+.btn-outline-green,.btn-outline-green:active,.btn-outline-green.active,.btn-outline-green.dropdown-toggle.show{color:#fff;background-color:#198754;border-color:#198754}.btn-check:checked+.btn-outline-green:focus,.btn-check:active+.btn-outline-green:focus,.btn-outline-green:active:focus,.btn-outline-green.active:focus,.btn-outline-green.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #19875480}.btn-outline-green:disabled,.btn-outline-green.disabled{color:#198754;background-color:transparent}.btn-outline-blue{color:#0d6efd;border-color:#0d6efd}.btn-outline-blue:hover{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-check:focus+.btn-outline-blue,.btn-outline-blue:focus{box-shadow:0 0 0 .25rem #0d6efd80}.btn-check:checked+.btn-outline-blue,.btn-check:active+.btn-outline-blue,.btn-outline-blue:active,.btn-outline-blue.active,.btn-outline-blue.dropdown-toggle.show{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-check:checked+.btn-outline-blue:focus,.btn-check:active+.btn-outline-blue:focus,.btn-outline-blue:active:focus,.btn-outline-blue.active:focus,.btn-outline-blue.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #0d6efd80}.btn-outline-blue:disabled,.btn-outline-blue.disabled{color:#0d6efd;background-color:transparent}.btn-outline-cyan{color:#0dcaf0;border-color:#0dcaf0}.btn-outline-cyan:hover{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-check:focus+.btn-outline-cyan,.btn-outline-cyan:focus{box-shadow:0 0 0 .25rem #0dcaf080}.btn-check:checked+.btn-outline-cyan,.btn-check:active+.btn-outline-cyan,.btn-outline-cyan:active,.btn-outline-cyan.active,.btn-outline-cyan.dropdown-toggle.show{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-check:checked+.btn-outline-cyan:focus,.btn-check:active+.btn-outline-cyan:focus,.btn-outline-cyan:active:focus,.btn-outline-cyan.active:focus,.btn-outline-cyan.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #0dcaf080}.btn-outline-cyan:disabled,.btn-outline-cyan.disabled{color:#0dcaf0;background-color:transparent}.btn-outline-indigo{color:#6610f2;border-color:#6610f2}.btn-outline-indigo:hover{color:#fff;background-color:#6610f2;border-color:#6610f2}.btn-check:focus+.btn-outline-indigo,.btn-outline-indigo:focus{box-shadow:0 0 0 .25rem #6610f280}.btn-check:checked+.btn-outline-indigo,.btn-check:active+.btn-outline-indigo,.btn-outline-indigo:active,.btn-outline-indigo.active,.btn-outline-indigo.dropdown-toggle.show{color:#fff;background-color:#6610f2;border-color:#6610f2}.btn-check:checked+.btn-outline-indigo:focus,.btn-check:active+.btn-outline-indigo:focus,.btn-outline-indigo:active:focus,.btn-outline-indigo.active:focus,.btn-outline-indigo.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #6610f280}.btn-outline-indigo:disabled,.btn-outline-indigo.disabled{color:#6610f2;background-color:transparent}.btn-outline-purple{color:#6f42c1;border-color:#6f42c1}.btn-outline-purple:hover{color:#fff;background-color:#6f42c1;border-color:#6f42c1}.btn-check:focus+.btn-outline-purple,.btn-outline-purple:focus{box-shadow:0 0 0 .25rem #6f42c180}.btn-check:checked+.btn-outline-purple,.btn-check:active+.btn-outline-purple,.btn-outline-purple:active,.btn-outline-purple.active,.btn-outline-purple.dropdown-toggle.show{color:#fff;background-color:#6f42c1;border-color:#6f42c1}.btn-check:checked+.btn-outline-purple:focus,.btn-check:active+.btn-outline-purple:focus,.btn-outline-purple:active:focus,.btn-outline-purple.active:focus,.btn-outline-purple.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #6f42c180}.btn-outline-purple:disabled,.btn-outline-purple.disabled{color:#6f42c1;background-color:transparent}.btn-outline-pink{color:#d63384;border-color:#d63384}.btn-outline-pink:hover{color:#fff;background-color:#d63384;border-color:#d63384}.btn-check:focus+.btn-outline-pink,.btn-outline-pink:focus{box-shadow:0 0 0 .25rem #d6338480}.btn-check:checked+.btn-outline-pink,.btn-check:active+.btn-outline-pink,.btn-outline-pink:active,.btn-outline-pink.active,.btn-outline-pink.dropdown-toggle.show{color:#fff;background-color:#d63384;border-color:#d63384}.btn-check:checked+.btn-outline-pink:focus,.btn-check:active+.btn-outline-pink:focus,.btn-outline-pink:active:focus,.btn-outline-pink.active:focus,.btn-outline-pink.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #d6338480}.btn-outline-pink:disabled,.btn-outline-pink.disabled{color:#d63384;background-color:transparent}.btn-outline-darker{color:#1b1f22;border-color:#1b1f22}.btn-outline-darker:hover{color:#fff;background-color:#1b1f22;border-color:#1b1f22}.btn-check:focus+.btn-outline-darker,.btn-outline-darker:focus{box-shadow:0 0 0 .25rem #1b1f2280}.btn-check:checked+.btn-outline-darker,.btn-check:active+.btn-outline-darker,.btn-outline-darker:active,.btn-outline-darker.active,.btn-outline-darker.dropdown-toggle.show{color:#fff;background-color:#1b1f22;border-color:#1b1f22}.btn-check:checked+.btn-outline-darker:focus,.btn-check:active+.btn-outline-darker:focus,.btn-outline-darker:active:focus,.btn-outline-darker.active:focus,.btn-outline-darker.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #1b1f2280}.btn-outline-darker:disabled,.btn-outline-darker.disabled{color:#1b1f22;background-color:transparent}.btn-outline-darkest{color:#171b1d;border-color:#171b1d}.btn-outline-darkest:hover{color:#fff;background-color:#171b1d;border-color:#171b1d}.btn-check:focus+.btn-outline-darkest,.btn-outline-darkest:focus{box-shadow:0 0 0 .25rem #171b1d80}.btn-check:checked+.btn-outline-darkest,.btn-check:active+.btn-outline-darkest,.btn-outline-darkest:active,.btn-outline-darkest.active,.btn-outline-darkest.dropdown-toggle.show{color:#fff;background-color:#171b1d;border-color:#171b1d}.btn-check:checked+.btn-outline-darkest:focus,.btn-check:active+.btn-outline-darkest:focus,.btn-outline-darkest:active:focus,.btn-outline-darkest.active:focus,.btn-outline-darkest.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #171b1d80}.btn-outline-darkest:disabled,.btn-outline-darkest.disabled{color:#171b1d;background-color:transparent}.btn-outline-gray{color:#ced4da;border-color:#ced4da}.btn-outline-gray:hover{color:#000;background-color:#ced4da;border-color:#ced4da}.btn-check:focus+.btn-outline-gray,.btn-outline-gray:focus{box-shadow:0 0 0 .25rem #ced4da80}.btn-check:checked+.btn-outline-gray,.btn-check:active+.btn-outline-gray,.btn-outline-gray:active,.btn-outline-gray.active,.btn-outline-gray.dropdown-toggle.show{color:#000;background-color:#ced4da;border-color:#ced4da}.btn-check:checked+.btn-outline-gray:focus,.btn-check:active+.btn-outline-gray:focus,.btn-outline-gray:active:focus,.btn-outline-gray.active:focus,.btn-outline-gray.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #ced4da80}.btn-outline-gray:disabled,.btn-outline-gray.disabled{color:#ced4da;background-color:transparent}.btn-outline-gray-100{color:#f8f9fa;border-color:#f8f9fa}.btn-outline-gray-100:hover{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-check:focus+.btn-outline-gray-100,.btn-outline-gray-100:focus{box-shadow:0 0 0 .25rem #f8f9fa80}.btn-check:checked+.btn-outline-gray-100,.btn-check:active+.btn-outline-gray-100,.btn-outline-gray-100:active,.btn-outline-gray-100.active,.btn-outline-gray-100.dropdown-toggle.show{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-check:checked+.btn-outline-gray-100:focus,.btn-check:active+.btn-outline-gray-100:focus,.btn-outline-gray-100:active:focus,.btn-outline-gray-100.active:focus,.btn-outline-gray-100.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #f8f9fa80}.btn-outline-gray-100:disabled,.btn-outline-gray-100.disabled{color:#f8f9fa;background-color:transparent}.btn-outline-gray-200{color:#e9ecef;border-color:#e9ecef}.btn-outline-gray-200:hover{color:#000;background-color:#e9ecef;border-color:#e9ecef}.btn-check:focus+.btn-outline-gray-200,.btn-outline-gray-200:focus{box-shadow:0 0 0 .25rem #e9ecef80}.btn-check:checked+.btn-outline-gray-200,.btn-check:active+.btn-outline-gray-200,.btn-outline-gray-200:active,.btn-outline-gray-200.active,.btn-outline-gray-200.dropdown-toggle.show{color:#000;background-color:#e9ecef;border-color:#e9ecef}.btn-check:checked+.btn-outline-gray-200:focus,.btn-check:active+.btn-outline-gray-200:focus,.btn-outline-gray-200:active:focus,.btn-outline-gray-200.active:focus,.btn-outline-gray-200.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #e9ecef80}.btn-outline-gray-200:disabled,.btn-outline-gray-200.disabled{color:#e9ecef;background-color:transparent}.btn-outline-gray-300{color:#dee2e6;border-color:#dee2e6}.btn-outline-gray-300:hover{color:#000;background-color:#dee2e6;border-color:#dee2e6}.btn-check:focus+.btn-outline-gray-300,.btn-outline-gray-300:focus{box-shadow:0 0 0 .25rem #dee2e680}.btn-check:checked+.btn-outline-gray-300,.btn-check:active+.btn-outline-gray-300,.btn-outline-gray-300:active,.btn-outline-gray-300.active,.btn-outline-gray-300.dropdown-toggle.show{color:#000;background-color:#dee2e6;border-color:#dee2e6}.btn-check:checked+.btn-outline-gray-300:focus,.btn-check:active+.btn-outline-gray-300:focus,.btn-outline-gray-300:active:focus,.btn-outline-gray-300.active:focus,.btn-outline-gray-300.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #dee2e680}.btn-outline-gray-300:disabled,.btn-outline-gray-300.disabled{color:#dee2e6;background-color:transparent}.btn-outline-gray-400{color:#ced4da;border-color:#ced4da}.btn-outline-gray-400:hover{color:#000;background-color:#ced4da;border-color:#ced4da}.btn-check:focus+.btn-outline-gray-400,.btn-outline-gray-400:focus{box-shadow:0 0 0 .25rem #ced4da80}.btn-check:checked+.btn-outline-gray-400,.btn-check:active+.btn-outline-gray-400,.btn-outline-gray-400:active,.btn-outline-gray-400.active,.btn-outline-gray-400.dropdown-toggle.show{color:#000;background-color:#ced4da;border-color:#ced4da}.btn-check:checked+.btn-outline-gray-400:focus,.btn-check:active+.btn-outline-gray-400:focus,.btn-outline-gray-400:active:focus,.btn-outline-gray-400.active:focus,.btn-outline-gray-400.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #ced4da80}.btn-outline-gray-400:disabled,.btn-outline-gray-400.disabled{color:#ced4da;background-color:transparent}.btn-outline-gray-500{color:#adb5bd;border-color:#adb5bd}.btn-outline-gray-500:hover{color:#000;background-color:#adb5bd;border-color:#adb5bd}.btn-check:focus+.btn-outline-gray-500,.btn-outline-gray-500:focus{box-shadow:0 0 0 .25rem #adb5bd80}.btn-check:checked+.btn-outline-gray-500,.btn-check:active+.btn-outline-gray-500,.btn-outline-gray-500:active,.btn-outline-gray-500.active,.btn-outline-gray-500.dropdown-toggle.show{color:#000;background-color:#adb5bd;border-color:#adb5bd}.btn-check:checked+.btn-outline-gray-500:focus,.btn-check:active+.btn-outline-gray-500:focus,.btn-outline-gray-500:active:focus,.btn-outline-gray-500.active:focus,.btn-outline-gray-500.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #adb5bd80}.btn-outline-gray-500:disabled,.btn-outline-gray-500.disabled{color:#adb5bd;background-color:transparent}.btn-outline-gray-600{color:#6c757d;border-color:#6c757d}.btn-outline-gray-600:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-check:focus+.btn-outline-gray-600,.btn-outline-gray-600:focus{box-shadow:0 0 0 .25rem #6c757d80}.btn-check:checked+.btn-outline-gray-600,.btn-check:active+.btn-outline-gray-600,.btn-outline-gray-600:active,.btn-outline-gray-600.active,.btn-outline-gray-600.dropdown-toggle.show{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-check:checked+.btn-outline-gray-600:focus,.btn-check:active+.btn-outline-gray-600:focus,.btn-outline-gray-600:active:focus,.btn-outline-gray-600.active:focus,.btn-outline-gray-600.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #6c757d80}.btn-outline-gray-600:disabled,.btn-outline-gray-600.disabled{color:#6c757d;background-color:transparent}.btn-outline-gray-700{color:#495057;border-color:#495057}.btn-outline-gray-700:hover{color:#fff;background-color:#495057;border-color:#495057}.btn-check:focus+.btn-outline-gray-700,.btn-outline-gray-700:focus{box-shadow:0 0 0 .25rem #49505780}.btn-check:checked+.btn-outline-gray-700,.btn-check:active+.btn-outline-gray-700,.btn-outline-gray-700:active,.btn-outline-gray-700.active,.btn-outline-gray-700.dropdown-toggle.show{color:#fff;background-color:#495057;border-color:#495057}.btn-check:checked+.btn-outline-gray-700:focus,.btn-check:active+.btn-outline-gray-700:focus,.btn-outline-gray-700:active:focus,.btn-outline-gray-700.active:focus,.btn-outline-gray-700.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #49505780}.btn-outline-gray-700:disabled,.btn-outline-gray-700.disabled{color:#495057;background-color:transparent}.btn-outline-gray-800{color:#343a40;border-color:#343a40}.btn-outline-gray-800:hover{color:#fff;background-color:#343a40;border-color:#343a40}.btn-check:focus+.btn-outline-gray-800,.btn-outline-gray-800:focus{box-shadow:0 0 0 .25rem #343a4080}.btn-check:checked+.btn-outline-gray-800,.btn-check:active+.btn-outline-gray-800,.btn-outline-gray-800:active,.btn-outline-gray-800.active,.btn-outline-gray-800.dropdown-toggle.show{color:#fff;background-color:#343a40;border-color:#343a40}.btn-check:checked+.btn-outline-gray-800:focus,.btn-check:active+.btn-outline-gray-800:focus,.btn-outline-gray-800:active:focus,.btn-outline-gray-800.active:focus,.btn-outline-gray-800.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #343a4080}.btn-outline-gray-800:disabled,.btn-outline-gray-800.disabled{color:#343a40;background-color:transparent}.btn-outline-gray-900{color:#212529;border-color:#212529}.btn-outline-gray-900:hover{color:#fff;background-color:#212529;border-color:#212529}.btn-check:focus+.btn-outline-gray-900,.btn-outline-gray-900:focus{box-shadow:0 0 0 .25rem #21252980}.btn-check:checked+.btn-outline-gray-900,.btn-check:active+.btn-outline-gray-900,.btn-outline-gray-900:active,.btn-outline-gray-900.active,.btn-outline-gray-900.dropdown-toggle.show{color:#fff;background-color:#212529;border-color:#212529}.btn-check:checked+.btn-outline-gray-900:focus,.btn-check:active+.btn-outline-gray-900:focus,.btn-outline-gray-900:active:focus,.btn-outline-gray-900.active:focus,.btn-outline-gray-900.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #21252980}.btn-outline-gray-900:disabled,.btn-outline-gray-900.disabled{color:#212529;background-color:transparent}.btn-outline-red-100{color:#f8d7da;border-color:#f8d7da}.btn-outline-red-100:hover{color:#000;background-color:#f8d7da;border-color:#f8d7da}.btn-check:focus+.btn-outline-red-100,.btn-outline-red-100:focus{box-shadow:0 0 0 .25rem #f8d7da80}.btn-check:checked+.btn-outline-red-100,.btn-check:active+.btn-outline-red-100,.btn-outline-red-100:active,.btn-outline-red-100.active,.btn-outline-red-100.dropdown-toggle.show{color:#000;background-color:#f8d7da;border-color:#f8d7da}.btn-check:checked+.btn-outline-red-100:focus,.btn-check:active+.btn-outline-red-100:focus,.btn-outline-red-100:active:focus,.btn-outline-red-100.active:focus,.btn-outline-red-100.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #f8d7da80}.btn-outline-red-100:disabled,.btn-outline-red-100.disabled{color:#f8d7da;background-color:transparent}.btn-outline-red-200{color:#f1aeb5;border-color:#f1aeb5}.btn-outline-red-200:hover{color:#000;background-color:#f1aeb5;border-color:#f1aeb5}.btn-check:focus+.btn-outline-red-200,.btn-outline-red-200:focus{box-shadow:0 0 0 .25rem #f1aeb580}.btn-check:checked+.btn-outline-red-200,.btn-check:active+.btn-outline-red-200,.btn-outline-red-200:active,.btn-outline-red-200.active,.btn-outline-red-200.dropdown-toggle.show{color:#000;background-color:#f1aeb5;border-color:#f1aeb5}.btn-check:checked+.btn-outline-red-200:focus,.btn-check:active+.btn-outline-red-200:focus,.btn-outline-red-200:active:focus,.btn-outline-red-200.active:focus,.btn-outline-red-200.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #f1aeb580}.btn-outline-red-200:disabled,.btn-outline-red-200.disabled{color:#f1aeb5;background-color:transparent}.btn-outline-red-300{color:#ea868f;border-color:#ea868f}.btn-outline-red-300:hover{color:#000;background-color:#ea868f;border-color:#ea868f}.btn-check:focus+.btn-outline-red-300,.btn-outline-red-300:focus{box-shadow:0 0 0 .25rem #ea868f80}.btn-check:checked+.btn-outline-red-300,.btn-check:active+.btn-outline-red-300,.btn-outline-red-300:active,.btn-outline-red-300.active,.btn-outline-red-300.dropdown-toggle.show{color:#000;background-color:#ea868f;border-color:#ea868f}.btn-check:checked+.btn-outline-red-300:focus,.btn-check:active+.btn-outline-red-300:focus,.btn-outline-red-300:active:focus,.btn-outline-red-300.active:focus,.btn-outline-red-300.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #ea868f80}.btn-outline-red-300:disabled,.btn-outline-red-300.disabled{color:#ea868f;background-color:transparent}.btn-outline-red-400{color:#e35d6a;border-color:#e35d6a}.btn-outline-red-400:hover{color:#000;background-color:#e35d6a;border-color:#e35d6a}.btn-check:focus+.btn-outline-red-400,.btn-outline-red-400:focus{box-shadow:0 0 0 .25rem #e35d6a80}.btn-check:checked+.btn-outline-red-400,.btn-check:active+.btn-outline-red-400,.btn-outline-red-400:active,.btn-outline-red-400.active,.btn-outline-red-400.dropdown-toggle.show{color:#000;background-color:#e35d6a;border-color:#e35d6a}.btn-check:checked+.btn-outline-red-400:focus,.btn-check:active+.btn-outline-red-400:focus,.btn-outline-red-400:active:focus,.btn-outline-red-400.active:focus,.btn-outline-red-400.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #e35d6a80}.btn-outline-red-400:disabled,.btn-outline-red-400.disabled{color:#e35d6a;background-color:transparent}.btn-outline-red-500{color:#dc3545;border-color:#dc3545}.btn-outline-red-500:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-check:focus+.btn-outline-red-500,.btn-outline-red-500:focus{box-shadow:0 0 0 .25rem #dc354580}.btn-check:checked+.btn-outline-red-500,.btn-check:active+.btn-outline-red-500,.btn-outline-red-500:active,.btn-outline-red-500.active,.btn-outline-red-500.dropdown-toggle.show{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-check:checked+.btn-outline-red-500:focus,.btn-check:active+.btn-outline-red-500:focus,.btn-outline-red-500:active:focus,.btn-outline-red-500.active:focus,.btn-outline-red-500.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #dc354580}.btn-outline-red-500:disabled,.btn-outline-red-500.disabled{color:#dc3545;background-color:transparent}.btn-outline-red-600{color:#b02a37;border-color:#b02a37}.btn-outline-red-600:hover{color:#fff;background-color:#b02a37;border-color:#b02a37}.btn-check:focus+.btn-outline-red-600,.btn-outline-red-600:focus{box-shadow:0 0 0 .25rem #b02a3780}.btn-check:checked+.btn-outline-red-600,.btn-check:active+.btn-outline-red-600,.btn-outline-red-600:active,.btn-outline-red-600.active,.btn-outline-red-600.dropdown-toggle.show{color:#fff;background-color:#b02a37;border-color:#b02a37}.btn-check:checked+.btn-outline-red-600:focus,.btn-check:active+.btn-outline-red-600:focus,.btn-outline-red-600:active:focus,.btn-outline-red-600.active:focus,.btn-outline-red-600.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #b02a3780}.btn-outline-red-600:disabled,.btn-outline-red-600.disabled{color:#b02a37;background-color:transparent}.btn-outline-red-700{color:#842029;border-color:#842029}.btn-outline-red-700:hover{color:#fff;background-color:#842029;border-color:#842029}.btn-check:focus+.btn-outline-red-700,.btn-outline-red-700:focus{box-shadow:0 0 0 .25rem #84202980}.btn-check:checked+.btn-outline-red-700,.btn-check:active+.btn-outline-red-700,.btn-outline-red-700:active,.btn-outline-red-700.active,.btn-outline-red-700.dropdown-toggle.show{color:#fff;background-color:#842029;border-color:#842029}.btn-check:checked+.btn-outline-red-700:focus,.btn-check:active+.btn-outline-red-700:focus,.btn-outline-red-700:active:focus,.btn-outline-red-700.active:focus,.btn-outline-red-700.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #84202980}.btn-outline-red-700:disabled,.btn-outline-red-700.disabled{color:#842029;background-color:transparent}.btn-outline-red-800{color:#58151c;border-color:#58151c}.btn-outline-red-800:hover{color:#fff;background-color:#58151c;border-color:#58151c}.btn-check:focus+.btn-outline-red-800,.btn-outline-red-800:focus{box-shadow:0 0 0 .25rem #58151c80}.btn-check:checked+.btn-outline-red-800,.btn-check:active+.btn-outline-red-800,.btn-outline-red-800:active,.btn-outline-red-800.active,.btn-outline-red-800.dropdown-toggle.show{color:#fff;background-color:#58151c;border-color:#58151c}.btn-check:checked+.btn-outline-red-800:focus,.btn-check:active+.btn-outline-red-800:focus,.btn-outline-red-800:active:focus,.btn-outline-red-800.active:focus,.btn-outline-red-800.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #58151c80}.btn-outline-red-800:disabled,.btn-outline-red-800.disabled{color:#58151c;background-color:transparent}.btn-outline-red-900{color:#2c0b0e;border-color:#2c0b0e}.btn-outline-red-900:hover{color:#fff;background-color:#2c0b0e;border-color:#2c0b0e}.btn-check:focus+.btn-outline-red-900,.btn-outline-red-900:focus{box-shadow:0 0 0 .25rem #2c0b0e80}.btn-check:checked+.btn-outline-red-900,.btn-check:active+.btn-outline-red-900,.btn-outline-red-900:active,.btn-outline-red-900.active,.btn-outline-red-900.dropdown-toggle.show{color:#fff;background-color:#2c0b0e;border-color:#2c0b0e}.btn-check:checked+.btn-outline-red-900:focus,.btn-check:active+.btn-outline-red-900:focus,.btn-outline-red-900:active:focus,.btn-outline-red-900.active:focus,.btn-outline-red-900.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #2c0b0e80}.btn-outline-red-900:disabled,.btn-outline-red-900.disabled{color:#2c0b0e;background-color:transparent}.btn-outline-yellow-100{color:#fff3cd;border-color:#fff3cd}.btn-outline-yellow-100:hover{color:#000;background-color:#fff3cd;border-color:#fff3cd}.btn-check:focus+.btn-outline-yellow-100,.btn-outline-yellow-100:focus{box-shadow:0 0 0 .25rem #fff3cd80}.btn-check:checked+.btn-outline-yellow-100,.btn-check:active+.btn-outline-yellow-100,.btn-outline-yellow-100:active,.btn-outline-yellow-100.active,.btn-outline-yellow-100.dropdown-toggle.show{color:#000;background-color:#fff3cd;border-color:#fff3cd}.btn-check:checked+.btn-outline-yellow-100:focus,.btn-check:active+.btn-outline-yellow-100:focus,.btn-outline-yellow-100:active:focus,.btn-outline-yellow-100.active:focus,.btn-outline-yellow-100.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #fff3cd80}.btn-outline-yellow-100:disabled,.btn-outline-yellow-100.disabled{color:#fff3cd;background-color:transparent}.btn-outline-yellow-200{color:#ffe69c;border-color:#ffe69c}.btn-outline-yellow-200:hover{color:#000;background-color:#ffe69c;border-color:#ffe69c}.btn-check:focus+.btn-outline-yellow-200,.btn-outline-yellow-200:focus{box-shadow:0 0 0 .25rem #ffe69c80}.btn-check:checked+.btn-outline-yellow-200,.btn-check:active+.btn-outline-yellow-200,.btn-outline-yellow-200:active,.btn-outline-yellow-200.active,.btn-outline-yellow-200.dropdown-toggle.show{color:#000;background-color:#ffe69c;border-color:#ffe69c}.btn-check:checked+.btn-outline-yellow-200:focus,.btn-check:active+.btn-outline-yellow-200:focus,.btn-outline-yellow-200:active:focus,.btn-outline-yellow-200.active:focus,.btn-outline-yellow-200.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #ffe69c80}.btn-outline-yellow-200:disabled,.btn-outline-yellow-200.disabled{color:#ffe69c;background-color:transparent}.btn-outline-yellow-300{color:#ffda6a;border-color:#ffda6a}.btn-outline-yellow-300:hover{color:#000;background-color:#ffda6a;border-color:#ffda6a}.btn-check:focus+.btn-outline-yellow-300,.btn-outline-yellow-300:focus{box-shadow:0 0 0 .25rem #ffda6a80}.btn-check:checked+.btn-outline-yellow-300,.btn-check:active+.btn-outline-yellow-300,.btn-outline-yellow-300:active,.btn-outline-yellow-300.active,.btn-outline-yellow-300.dropdown-toggle.show{color:#000;background-color:#ffda6a;border-color:#ffda6a}.btn-check:checked+.btn-outline-yellow-300:focus,.btn-check:active+.btn-outline-yellow-300:focus,.btn-outline-yellow-300:active:focus,.btn-outline-yellow-300.active:focus,.btn-outline-yellow-300.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #ffda6a80}.btn-outline-yellow-300:disabled,.btn-outline-yellow-300.disabled{color:#ffda6a;background-color:transparent}.btn-outline-yellow-400{color:#ffcd39;border-color:#ffcd39}.btn-outline-yellow-400:hover{color:#000;background-color:#ffcd39;border-color:#ffcd39}.btn-check:focus+.btn-outline-yellow-400,.btn-outline-yellow-400:focus{box-shadow:0 0 0 .25rem #ffcd3980}.btn-check:checked+.btn-outline-yellow-400,.btn-check:active+.btn-outline-yellow-400,.btn-outline-yellow-400:active,.btn-outline-yellow-400.active,.btn-outline-yellow-400.dropdown-toggle.show{color:#000;background-color:#ffcd39;border-color:#ffcd39}.btn-check:checked+.btn-outline-yellow-400:focus,.btn-check:active+.btn-outline-yellow-400:focus,.btn-outline-yellow-400:active:focus,.btn-outline-yellow-400.active:focus,.btn-outline-yellow-400.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #ffcd3980}.btn-outline-yellow-400:disabled,.btn-outline-yellow-400.disabled{color:#ffcd39;background-color:transparent}.btn-outline-yellow-500{color:#ffc107;border-color:#ffc107}.btn-outline-yellow-500:hover{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-check:focus+.btn-outline-yellow-500,.btn-outline-yellow-500:focus{box-shadow:0 0 0 .25rem #ffc10780}.btn-check:checked+.btn-outline-yellow-500,.btn-check:active+.btn-outline-yellow-500,.btn-outline-yellow-500:active,.btn-outline-yellow-500.active,.btn-outline-yellow-500.dropdown-toggle.show{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-check:checked+.btn-outline-yellow-500:focus,.btn-check:active+.btn-outline-yellow-500:focus,.btn-outline-yellow-500:active:focus,.btn-outline-yellow-500.active:focus,.btn-outline-yellow-500.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #ffc10780}.btn-outline-yellow-500:disabled,.btn-outline-yellow-500.disabled{color:#ffc107;background-color:transparent}.btn-outline-yellow-600{color:#cc9a06;border-color:#cc9a06}.btn-outline-yellow-600:hover{color:#000;background-color:#cc9a06;border-color:#cc9a06}.btn-check:focus+.btn-outline-yellow-600,.btn-outline-yellow-600:focus{box-shadow:0 0 0 .25rem #cc9a0680}.btn-check:checked+.btn-outline-yellow-600,.btn-check:active+.btn-outline-yellow-600,.btn-outline-yellow-600:active,.btn-outline-yellow-600.active,.btn-outline-yellow-600.dropdown-toggle.show{color:#000;background-color:#cc9a06;border-color:#cc9a06}.btn-check:checked+.btn-outline-yellow-600:focus,.btn-check:active+.btn-outline-yellow-600:focus,.btn-outline-yellow-600:active:focus,.btn-outline-yellow-600.active:focus,.btn-outline-yellow-600.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #cc9a0680}.btn-outline-yellow-600:disabled,.btn-outline-yellow-600.disabled{color:#cc9a06;background-color:transparent}.btn-outline-yellow-700{color:#997404;border-color:#997404}.btn-outline-yellow-700:hover{color:#000;background-color:#997404;border-color:#997404}.btn-check:focus+.btn-outline-yellow-700,.btn-outline-yellow-700:focus{box-shadow:0 0 0 .25rem #99740480}.btn-check:checked+.btn-outline-yellow-700,.btn-check:active+.btn-outline-yellow-700,.btn-outline-yellow-700:active,.btn-outline-yellow-700.active,.btn-outline-yellow-700.dropdown-toggle.show{color:#000;background-color:#997404;border-color:#997404}.btn-check:checked+.btn-outline-yellow-700:focus,.btn-check:active+.btn-outline-yellow-700:focus,.btn-outline-yellow-700:active:focus,.btn-outline-yellow-700.active:focus,.btn-outline-yellow-700.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #99740480}.btn-outline-yellow-700:disabled,.btn-outline-yellow-700.disabled{color:#997404;background-color:transparent}.btn-outline-yellow-800{color:#664d03;border-color:#664d03}.btn-outline-yellow-800:hover{color:#fff;background-color:#664d03;border-color:#664d03}.btn-check:focus+.btn-outline-yellow-800,.btn-outline-yellow-800:focus{box-shadow:0 0 0 .25rem #664d0380}.btn-check:checked+.btn-outline-yellow-800,.btn-check:active+.btn-outline-yellow-800,.btn-outline-yellow-800:active,.btn-outline-yellow-800.active,.btn-outline-yellow-800.dropdown-toggle.show{color:#fff;background-color:#664d03;border-color:#664d03}.btn-check:checked+.btn-outline-yellow-800:focus,.btn-check:active+.btn-outline-yellow-800:focus,.btn-outline-yellow-800:active:focus,.btn-outline-yellow-800.active:focus,.btn-outline-yellow-800.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #664d0380}.btn-outline-yellow-800:disabled,.btn-outline-yellow-800.disabled{color:#664d03;background-color:transparent}.btn-outline-yellow-900{color:#332701;border-color:#332701}.btn-outline-yellow-900:hover{color:#fff;background-color:#332701;border-color:#332701}.btn-check:focus+.btn-outline-yellow-900,.btn-outline-yellow-900:focus{box-shadow:0 0 0 .25rem #33270180}.btn-check:checked+.btn-outline-yellow-900,.btn-check:active+.btn-outline-yellow-900,.btn-outline-yellow-900:active,.btn-outline-yellow-900.active,.btn-outline-yellow-900.dropdown-toggle.show{color:#fff;background-color:#332701;border-color:#332701}.btn-check:checked+.btn-outline-yellow-900:focus,.btn-check:active+.btn-outline-yellow-900:focus,.btn-outline-yellow-900:active:focus,.btn-outline-yellow-900.active:focus,.btn-outline-yellow-900.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #33270180}.btn-outline-yellow-900:disabled,.btn-outline-yellow-900.disabled{color:#332701;background-color:transparent}.btn-outline-green-100{color:#d1e7dd;border-color:#d1e7dd}.btn-outline-green-100:hover{color:#000;background-color:#d1e7dd;border-color:#d1e7dd}.btn-check:focus+.btn-outline-green-100,.btn-outline-green-100:focus{box-shadow:0 0 0 .25rem #d1e7dd80}.btn-check:checked+.btn-outline-green-100,.btn-check:active+.btn-outline-green-100,.btn-outline-green-100:active,.btn-outline-green-100.active,.btn-outline-green-100.dropdown-toggle.show{color:#000;background-color:#d1e7dd;border-color:#d1e7dd}.btn-check:checked+.btn-outline-green-100:focus,.btn-check:active+.btn-outline-green-100:focus,.btn-outline-green-100:active:focus,.btn-outline-green-100.active:focus,.btn-outline-green-100.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #d1e7dd80}.btn-outline-green-100:disabled,.btn-outline-green-100.disabled{color:#d1e7dd;background-color:transparent}.btn-outline-green-200{color:#a3cfbb;border-color:#a3cfbb}.btn-outline-green-200:hover{color:#000;background-color:#a3cfbb;border-color:#a3cfbb}.btn-check:focus+.btn-outline-green-200,.btn-outline-green-200:focus{box-shadow:0 0 0 .25rem #a3cfbb80}.btn-check:checked+.btn-outline-green-200,.btn-check:active+.btn-outline-green-200,.btn-outline-green-200:active,.btn-outline-green-200.active,.btn-outline-green-200.dropdown-toggle.show{color:#000;background-color:#a3cfbb;border-color:#a3cfbb}.btn-check:checked+.btn-outline-green-200:focus,.btn-check:active+.btn-outline-green-200:focus,.btn-outline-green-200:active:focus,.btn-outline-green-200.active:focus,.btn-outline-green-200.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #a3cfbb80}.btn-outline-green-200:disabled,.btn-outline-green-200.disabled{color:#a3cfbb;background-color:transparent}.btn-outline-green-300{color:#75b798;border-color:#75b798}.btn-outline-green-300:hover{color:#000;background-color:#75b798;border-color:#75b798}.btn-check:focus+.btn-outline-green-300,.btn-outline-green-300:focus{box-shadow:0 0 0 .25rem #75b79880}.btn-check:checked+.btn-outline-green-300,.btn-check:active+.btn-outline-green-300,.btn-outline-green-300:active,.btn-outline-green-300.active,.btn-outline-green-300.dropdown-toggle.show{color:#000;background-color:#75b798;border-color:#75b798}.btn-check:checked+.btn-outline-green-300:focus,.btn-check:active+.btn-outline-green-300:focus,.btn-outline-green-300:active:focus,.btn-outline-green-300.active:focus,.btn-outline-green-300.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #75b79880}.btn-outline-green-300:disabled,.btn-outline-green-300.disabled{color:#75b798;background-color:transparent}.btn-outline-green-400{color:#479f76;border-color:#479f76}.btn-outline-green-400:hover{color:#000;background-color:#479f76;border-color:#479f76}.btn-check:focus+.btn-outline-green-400,.btn-outline-green-400:focus{box-shadow:0 0 0 .25rem #479f7680}.btn-check:checked+.btn-outline-green-400,.btn-check:active+.btn-outline-green-400,.btn-outline-green-400:active,.btn-outline-green-400.active,.btn-outline-green-400.dropdown-toggle.show{color:#000;background-color:#479f76;border-color:#479f76}.btn-check:checked+.btn-outline-green-400:focus,.btn-check:active+.btn-outline-green-400:focus,.btn-outline-green-400:active:focus,.btn-outline-green-400.active:focus,.btn-outline-green-400.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #479f7680}.btn-outline-green-400:disabled,.btn-outline-green-400.disabled{color:#479f76;background-color:transparent}.btn-outline-green-500{color:#198754;border-color:#198754}.btn-outline-green-500:hover{color:#fff;background-color:#198754;border-color:#198754}.btn-check:focus+.btn-outline-green-500,.btn-outline-green-500:focus{box-shadow:0 0 0 .25rem #19875480}.btn-check:checked+.btn-outline-green-500,.btn-check:active+.btn-outline-green-500,.btn-outline-green-500:active,.btn-outline-green-500.active,.btn-outline-green-500.dropdown-toggle.show{color:#fff;background-color:#198754;border-color:#198754}.btn-check:checked+.btn-outline-green-500:focus,.btn-check:active+.btn-outline-green-500:focus,.btn-outline-green-500:active:focus,.btn-outline-green-500.active:focus,.btn-outline-green-500.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #19875480}.btn-outline-green-500:disabled,.btn-outline-green-500.disabled{color:#198754;background-color:transparent}.btn-outline-green-600{color:#146c43;border-color:#146c43}.btn-outline-green-600:hover{color:#fff;background-color:#146c43;border-color:#146c43}.btn-check:focus+.btn-outline-green-600,.btn-outline-green-600:focus{box-shadow:0 0 0 .25rem #146c4380}.btn-check:checked+.btn-outline-green-600,.btn-check:active+.btn-outline-green-600,.btn-outline-green-600:active,.btn-outline-green-600.active,.btn-outline-green-600.dropdown-toggle.show{color:#fff;background-color:#146c43;border-color:#146c43}.btn-check:checked+.btn-outline-green-600:focus,.btn-check:active+.btn-outline-green-600:focus,.btn-outline-green-600:active:focus,.btn-outline-green-600.active:focus,.btn-outline-green-600.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #146c4380}.btn-outline-green-600:disabled,.btn-outline-green-600.disabled{color:#146c43;background-color:transparent}.btn-outline-green-700{color:#0f5132;border-color:#0f5132}.btn-outline-green-700:hover{color:#fff;background-color:#0f5132;border-color:#0f5132}.btn-check:focus+.btn-outline-green-700,.btn-outline-green-700:focus{box-shadow:0 0 0 .25rem #0f513280}.btn-check:checked+.btn-outline-green-700,.btn-check:active+.btn-outline-green-700,.btn-outline-green-700:active,.btn-outline-green-700.active,.btn-outline-green-700.dropdown-toggle.show{color:#fff;background-color:#0f5132;border-color:#0f5132}.btn-check:checked+.btn-outline-green-700:focus,.btn-check:active+.btn-outline-green-700:focus,.btn-outline-green-700:active:focus,.btn-outline-green-700.active:focus,.btn-outline-green-700.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #0f513280}.btn-outline-green-700:disabled,.btn-outline-green-700.disabled{color:#0f5132;background-color:transparent}.btn-outline-green-800{color:#0a3622;border-color:#0a3622}.btn-outline-green-800:hover{color:#fff;background-color:#0a3622;border-color:#0a3622}.btn-check:focus+.btn-outline-green-800,.btn-outline-green-800:focus{box-shadow:0 0 0 .25rem #0a362280}.btn-check:checked+.btn-outline-green-800,.btn-check:active+.btn-outline-green-800,.btn-outline-green-800:active,.btn-outline-green-800.active,.btn-outline-green-800.dropdown-toggle.show{color:#fff;background-color:#0a3622;border-color:#0a3622}.btn-check:checked+.btn-outline-green-800:focus,.btn-check:active+.btn-outline-green-800:focus,.btn-outline-green-800:active:focus,.btn-outline-green-800.active:focus,.btn-outline-green-800.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #0a362280}.btn-outline-green-800:disabled,.btn-outline-green-800.disabled{color:#0a3622;background-color:transparent}.btn-outline-green-900{color:#051b11;border-color:#051b11}.btn-outline-green-900:hover{color:#fff;background-color:#051b11;border-color:#051b11}.btn-check:focus+.btn-outline-green-900,.btn-outline-green-900:focus{box-shadow:0 0 0 .25rem #051b1180}.btn-check:checked+.btn-outline-green-900,.btn-check:active+.btn-outline-green-900,.btn-outline-green-900:active,.btn-outline-green-900.active,.btn-outline-green-900.dropdown-toggle.show{color:#fff;background-color:#051b11;border-color:#051b11}.btn-check:checked+.btn-outline-green-900:focus,.btn-check:active+.btn-outline-green-900:focus,.btn-outline-green-900:active:focus,.btn-outline-green-900.active:focus,.btn-outline-green-900.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #051b1180}.btn-outline-green-900:disabled,.btn-outline-green-900.disabled{color:#051b11;background-color:transparent}.btn-outline-blue-100{color:#cfe2ff;border-color:#cfe2ff}.btn-outline-blue-100:hover{color:#000;background-color:#cfe2ff;border-color:#cfe2ff}.btn-check:focus+.btn-outline-blue-100,.btn-outline-blue-100:focus{box-shadow:0 0 0 .25rem #cfe2ff80}.btn-check:checked+.btn-outline-blue-100,.btn-check:active+.btn-outline-blue-100,.btn-outline-blue-100:active,.btn-outline-blue-100.active,.btn-outline-blue-100.dropdown-toggle.show{color:#000;background-color:#cfe2ff;border-color:#cfe2ff}.btn-check:checked+.btn-outline-blue-100:focus,.btn-check:active+.btn-outline-blue-100:focus,.btn-outline-blue-100:active:focus,.btn-outline-blue-100.active:focus,.btn-outline-blue-100.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #cfe2ff80}.btn-outline-blue-100:disabled,.btn-outline-blue-100.disabled{color:#cfe2ff;background-color:transparent}.btn-outline-blue-200{color:#9ec5fe;border-color:#9ec5fe}.btn-outline-blue-200:hover{color:#000;background-color:#9ec5fe;border-color:#9ec5fe}.btn-check:focus+.btn-outline-blue-200,.btn-outline-blue-200:focus{box-shadow:0 0 0 .25rem #9ec5fe80}.btn-check:checked+.btn-outline-blue-200,.btn-check:active+.btn-outline-blue-200,.btn-outline-blue-200:active,.btn-outline-blue-200.active,.btn-outline-blue-200.dropdown-toggle.show{color:#000;background-color:#9ec5fe;border-color:#9ec5fe}.btn-check:checked+.btn-outline-blue-200:focus,.btn-check:active+.btn-outline-blue-200:focus,.btn-outline-blue-200:active:focus,.btn-outline-blue-200.active:focus,.btn-outline-blue-200.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #9ec5fe80}.btn-outline-blue-200:disabled,.btn-outline-blue-200.disabled{color:#9ec5fe;background-color:transparent}.btn-outline-blue-300{color:#6ea8fe;border-color:#6ea8fe}.btn-outline-blue-300:hover{color:#000;background-color:#6ea8fe;border-color:#6ea8fe}.btn-check:focus+.btn-outline-blue-300,.btn-outline-blue-300:focus{box-shadow:0 0 0 .25rem #6ea8fe80}.btn-check:checked+.btn-outline-blue-300,.btn-check:active+.btn-outline-blue-300,.btn-outline-blue-300:active,.btn-outline-blue-300.active,.btn-outline-blue-300.dropdown-toggle.show{color:#000;background-color:#6ea8fe;border-color:#6ea8fe}.btn-check:checked+.btn-outline-blue-300:focus,.btn-check:active+.btn-outline-blue-300:focus,.btn-outline-blue-300:active:focus,.btn-outline-blue-300.active:focus,.btn-outline-blue-300.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #6ea8fe80}.btn-outline-blue-300:disabled,.btn-outline-blue-300.disabled{color:#6ea8fe;background-color:transparent}.btn-outline-blue-400{color:#3d8bfd;border-color:#3d8bfd}.btn-outline-blue-400:hover{color:#000;background-color:#3d8bfd;border-color:#3d8bfd}.btn-check:focus+.btn-outline-blue-400,.btn-outline-blue-400:focus{box-shadow:0 0 0 .25rem #3d8bfd80}.btn-check:checked+.btn-outline-blue-400,.btn-check:active+.btn-outline-blue-400,.btn-outline-blue-400:active,.btn-outline-blue-400.active,.btn-outline-blue-400.dropdown-toggle.show{color:#000;background-color:#3d8bfd;border-color:#3d8bfd}.btn-check:checked+.btn-outline-blue-400:focus,.btn-check:active+.btn-outline-blue-400:focus,.btn-outline-blue-400:active:focus,.btn-outline-blue-400.active:focus,.btn-outline-blue-400.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #3d8bfd80}.btn-outline-blue-400:disabled,.btn-outline-blue-400.disabled{color:#3d8bfd;background-color:transparent}.btn-outline-blue-500{color:#0d6efd;border-color:#0d6efd}.btn-outline-blue-500:hover{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-check:focus+.btn-outline-blue-500,.btn-outline-blue-500:focus{box-shadow:0 0 0 .25rem #0d6efd80}.btn-check:checked+.btn-outline-blue-500,.btn-check:active+.btn-outline-blue-500,.btn-outline-blue-500:active,.btn-outline-blue-500.active,.btn-outline-blue-500.dropdown-toggle.show{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-check:checked+.btn-outline-blue-500:focus,.btn-check:active+.btn-outline-blue-500:focus,.btn-outline-blue-500:active:focus,.btn-outline-blue-500.active:focus,.btn-outline-blue-500.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #0d6efd80}.btn-outline-blue-500:disabled,.btn-outline-blue-500.disabled{color:#0d6efd;background-color:transparent}.btn-outline-blue-600{color:#0a58ca;border-color:#0a58ca}.btn-outline-blue-600:hover{color:#fff;background-color:#0a58ca;border-color:#0a58ca}.btn-check:focus+.btn-outline-blue-600,.btn-outline-blue-600:focus{box-shadow:0 0 0 .25rem #0a58ca80}.btn-check:checked+.btn-outline-blue-600,.btn-check:active+.btn-outline-blue-600,.btn-outline-blue-600:active,.btn-outline-blue-600.active,.btn-outline-blue-600.dropdown-toggle.show{color:#fff;background-color:#0a58ca;border-color:#0a58ca}.btn-check:checked+.btn-outline-blue-600:focus,.btn-check:active+.btn-outline-blue-600:focus,.btn-outline-blue-600:active:focus,.btn-outline-blue-600.active:focus,.btn-outline-blue-600.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #0a58ca80}.btn-outline-blue-600:disabled,.btn-outline-blue-600.disabled{color:#0a58ca;background-color:transparent}.btn-outline-blue-700{color:#084298;border-color:#084298}.btn-outline-blue-700:hover{color:#fff;background-color:#084298;border-color:#084298}.btn-check:focus+.btn-outline-blue-700,.btn-outline-blue-700:focus{box-shadow:0 0 0 .25rem #08429880}.btn-check:checked+.btn-outline-blue-700,.btn-check:active+.btn-outline-blue-700,.btn-outline-blue-700:active,.btn-outline-blue-700.active,.btn-outline-blue-700.dropdown-toggle.show{color:#fff;background-color:#084298;border-color:#084298}.btn-check:checked+.btn-outline-blue-700:focus,.btn-check:active+.btn-outline-blue-700:focus,.btn-outline-blue-700:active:focus,.btn-outline-blue-700.active:focus,.btn-outline-blue-700.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #08429880}.btn-outline-blue-700:disabled,.btn-outline-blue-700.disabled{color:#084298;background-color:transparent}.btn-outline-blue-800{color:#052c65;border-color:#052c65}.btn-outline-blue-800:hover{color:#fff;background-color:#052c65;border-color:#052c65}.btn-check:focus+.btn-outline-blue-800,.btn-outline-blue-800:focus{box-shadow:0 0 0 .25rem #052c6580}.btn-check:checked+.btn-outline-blue-800,.btn-check:active+.btn-outline-blue-800,.btn-outline-blue-800:active,.btn-outline-blue-800.active,.btn-outline-blue-800.dropdown-toggle.show{color:#fff;background-color:#052c65;border-color:#052c65}.btn-check:checked+.btn-outline-blue-800:focus,.btn-check:active+.btn-outline-blue-800:focus,.btn-outline-blue-800:active:focus,.btn-outline-blue-800.active:focus,.btn-outline-blue-800.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #052c6580}.btn-outline-blue-800:disabled,.btn-outline-blue-800.disabled{color:#052c65;background-color:transparent}.btn-outline-blue-900{color:#031633;border-color:#031633}.btn-outline-blue-900:hover{color:#fff;background-color:#031633;border-color:#031633}.btn-check:focus+.btn-outline-blue-900,.btn-outline-blue-900:focus{box-shadow:0 0 0 .25rem #03163380}.btn-check:checked+.btn-outline-blue-900,.btn-check:active+.btn-outline-blue-900,.btn-outline-blue-900:active,.btn-outline-blue-900.active,.btn-outline-blue-900.dropdown-toggle.show{color:#fff;background-color:#031633;border-color:#031633}.btn-check:checked+.btn-outline-blue-900:focus,.btn-check:active+.btn-outline-blue-900:focus,.btn-outline-blue-900:active:focus,.btn-outline-blue-900.active:focus,.btn-outline-blue-900.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #03163380}.btn-outline-blue-900:disabled,.btn-outline-blue-900.disabled{color:#031633;background-color:transparent}.btn-outline-cyan-100{color:#cff4fc;border-color:#cff4fc}.btn-outline-cyan-100:hover{color:#000;background-color:#cff4fc;border-color:#cff4fc}.btn-check:focus+.btn-outline-cyan-100,.btn-outline-cyan-100:focus{box-shadow:0 0 0 .25rem #cff4fc80}.btn-check:checked+.btn-outline-cyan-100,.btn-check:active+.btn-outline-cyan-100,.btn-outline-cyan-100:active,.btn-outline-cyan-100.active,.btn-outline-cyan-100.dropdown-toggle.show{color:#000;background-color:#cff4fc;border-color:#cff4fc}.btn-check:checked+.btn-outline-cyan-100:focus,.btn-check:active+.btn-outline-cyan-100:focus,.btn-outline-cyan-100:active:focus,.btn-outline-cyan-100.active:focus,.btn-outline-cyan-100.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #cff4fc80}.btn-outline-cyan-100:disabled,.btn-outline-cyan-100.disabled{color:#cff4fc;background-color:transparent}.btn-outline-cyan-200{color:#9eeaf9;border-color:#9eeaf9}.btn-outline-cyan-200:hover{color:#000;background-color:#9eeaf9;border-color:#9eeaf9}.btn-check:focus+.btn-outline-cyan-200,.btn-outline-cyan-200:focus{box-shadow:0 0 0 .25rem #9eeaf980}.btn-check:checked+.btn-outline-cyan-200,.btn-check:active+.btn-outline-cyan-200,.btn-outline-cyan-200:active,.btn-outline-cyan-200.active,.btn-outline-cyan-200.dropdown-toggle.show{color:#000;background-color:#9eeaf9;border-color:#9eeaf9}.btn-check:checked+.btn-outline-cyan-200:focus,.btn-check:active+.btn-outline-cyan-200:focus,.btn-outline-cyan-200:active:focus,.btn-outline-cyan-200.active:focus,.btn-outline-cyan-200.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #9eeaf980}.btn-outline-cyan-200:disabled,.btn-outline-cyan-200.disabled{color:#9eeaf9;background-color:transparent}.btn-outline-cyan-300{color:#6edff6;border-color:#6edff6}.btn-outline-cyan-300:hover{color:#000;background-color:#6edff6;border-color:#6edff6}.btn-check:focus+.btn-outline-cyan-300,.btn-outline-cyan-300:focus{box-shadow:0 0 0 .25rem #6edff680}.btn-check:checked+.btn-outline-cyan-300,.btn-check:active+.btn-outline-cyan-300,.btn-outline-cyan-300:active,.btn-outline-cyan-300.active,.btn-outline-cyan-300.dropdown-toggle.show{color:#000;background-color:#6edff6;border-color:#6edff6}.btn-check:checked+.btn-outline-cyan-300:focus,.btn-check:active+.btn-outline-cyan-300:focus,.btn-outline-cyan-300:active:focus,.btn-outline-cyan-300.active:focus,.btn-outline-cyan-300.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #6edff680}.btn-outline-cyan-300:disabled,.btn-outline-cyan-300.disabled{color:#6edff6;background-color:transparent}.btn-outline-cyan-400{color:#3dd5f3;border-color:#3dd5f3}.btn-outline-cyan-400:hover{color:#000;background-color:#3dd5f3;border-color:#3dd5f3}.btn-check:focus+.btn-outline-cyan-400,.btn-outline-cyan-400:focus{box-shadow:0 0 0 .25rem #3dd5f380}.btn-check:checked+.btn-outline-cyan-400,.btn-check:active+.btn-outline-cyan-400,.btn-outline-cyan-400:active,.btn-outline-cyan-400.active,.btn-outline-cyan-400.dropdown-toggle.show{color:#000;background-color:#3dd5f3;border-color:#3dd5f3}.btn-check:checked+.btn-outline-cyan-400:focus,.btn-check:active+.btn-outline-cyan-400:focus,.btn-outline-cyan-400:active:focus,.btn-outline-cyan-400.active:focus,.btn-outline-cyan-400.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #3dd5f380}.btn-outline-cyan-400:disabled,.btn-outline-cyan-400.disabled{color:#3dd5f3;background-color:transparent}.btn-outline-cyan-500{color:#0dcaf0;border-color:#0dcaf0}.btn-outline-cyan-500:hover{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-check:focus+.btn-outline-cyan-500,.btn-outline-cyan-500:focus{box-shadow:0 0 0 .25rem #0dcaf080}.btn-check:checked+.btn-outline-cyan-500,.btn-check:active+.btn-outline-cyan-500,.btn-outline-cyan-500:active,.btn-outline-cyan-500.active,.btn-outline-cyan-500.dropdown-toggle.show{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-check:checked+.btn-outline-cyan-500:focus,.btn-check:active+.btn-outline-cyan-500:focus,.btn-outline-cyan-500:active:focus,.btn-outline-cyan-500.active:focus,.btn-outline-cyan-500.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #0dcaf080}.btn-outline-cyan-500:disabled,.btn-outline-cyan-500.disabled{color:#0dcaf0;background-color:transparent}.btn-outline-cyan-600{color:#0aa2c0;border-color:#0aa2c0}.btn-outline-cyan-600:hover{color:#000;background-color:#0aa2c0;border-color:#0aa2c0}.btn-check:focus+.btn-outline-cyan-600,.btn-outline-cyan-600:focus{box-shadow:0 0 0 .25rem #0aa2c080}.btn-check:checked+.btn-outline-cyan-600,.btn-check:active+.btn-outline-cyan-600,.btn-outline-cyan-600:active,.btn-outline-cyan-600.active,.btn-outline-cyan-600.dropdown-toggle.show{color:#000;background-color:#0aa2c0;border-color:#0aa2c0}.btn-check:checked+.btn-outline-cyan-600:focus,.btn-check:active+.btn-outline-cyan-600:focus,.btn-outline-cyan-600:active:focus,.btn-outline-cyan-600.active:focus,.btn-outline-cyan-600.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #0aa2c080}.btn-outline-cyan-600:disabled,.btn-outline-cyan-600.disabled{color:#0aa2c0;background-color:transparent}.btn-outline-cyan-700{color:#087990;border-color:#087990}.btn-outline-cyan-700:hover{color:#fff;background-color:#087990;border-color:#087990}.btn-check:focus+.btn-outline-cyan-700,.btn-outline-cyan-700:focus{box-shadow:0 0 0 .25rem #08799080}.btn-check:checked+.btn-outline-cyan-700,.btn-check:active+.btn-outline-cyan-700,.btn-outline-cyan-700:active,.btn-outline-cyan-700.active,.btn-outline-cyan-700.dropdown-toggle.show{color:#fff;background-color:#087990;border-color:#087990}.btn-check:checked+.btn-outline-cyan-700:focus,.btn-check:active+.btn-outline-cyan-700:focus,.btn-outline-cyan-700:active:focus,.btn-outline-cyan-700.active:focus,.btn-outline-cyan-700.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #08799080}.btn-outline-cyan-700:disabled,.btn-outline-cyan-700.disabled{color:#087990;background-color:transparent}.btn-outline-cyan-800{color:#055160;border-color:#055160}.btn-outline-cyan-800:hover{color:#fff;background-color:#055160;border-color:#055160}.btn-check:focus+.btn-outline-cyan-800,.btn-outline-cyan-800:focus{box-shadow:0 0 0 .25rem #05516080}.btn-check:checked+.btn-outline-cyan-800,.btn-check:active+.btn-outline-cyan-800,.btn-outline-cyan-800:active,.btn-outline-cyan-800.active,.btn-outline-cyan-800.dropdown-toggle.show{color:#fff;background-color:#055160;border-color:#055160}.btn-check:checked+.btn-outline-cyan-800:focus,.btn-check:active+.btn-outline-cyan-800:focus,.btn-outline-cyan-800:active:focus,.btn-outline-cyan-800.active:focus,.btn-outline-cyan-800.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #05516080}.btn-outline-cyan-800:disabled,.btn-outline-cyan-800.disabled{color:#055160;background-color:transparent}.btn-outline-cyan-900{color:#032830;border-color:#032830}.btn-outline-cyan-900:hover{color:#fff;background-color:#032830;border-color:#032830}.btn-check:focus+.btn-outline-cyan-900,.btn-outline-cyan-900:focus{box-shadow:0 0 0 .25rem #03283080}.btn-check:checked+.btn-outline-cyan-900,.btn-check:active+.btn-outline-cyan-900,.btn-outline-cyan-900:active,.btn-outline-cyan-900.active,.btn-outline-cyan-900.dropdown-toggle.show{color:#fff;background-color:#032830;border-color:#032830}.btn-check:checked+.btn-outline-cyan-900:focus,.btn-check:active+.btn-outline-cyan-900:focus,.btn-outline-cyan-900:active:focus,.btn-outline-cyan-900.active:focus,.btn-outline-cyan-900.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #03283080}.btn-outline-cyan-900:disabled,.btn-outline-cyan-900.disabled{color:#032830;background-color:transparent}.btn-outline-indigo-100{color:#e0cffc;border-color:#e0cffc}.btn-outline-indigo-100:hover{color:#000;background-color:#e0cffc;border-color:#e0cffc}.btn-check:focus+.btn-outline-indigo-100,.btn-outline-indigo-100:focus{box-shadow:0 0 0 .25rem #e0cffc80}.btn-check:checked+.btn-outline-indigo-100,.btn-check:active+.btn-outline-indigo-100,.btn-outline-indigo-100:active,.btn-outline-indigo-100.active,.btn-outline-indigo-100.dropdown-toggle.show{color:#000;background-color:#e0cffc;border-color:#e0cffc}.btn-check:checked+.btn-outline-indigo-100:focus,.btn-check:active+.btn-outline-indigo-100:focus,.btn-outline-indigo-100:active:focus,.btn-outline-indigo-100.active:focus,.btn-outline-indigo-100.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #e0cffc80}.btn-outline-indigo-100:disabled,.btn-outline-indigo-100.disabled{color:#e0cffc;background-color:transparent}.btn-outline-indigo-200{color:#c29ffa;border-color:#c29ffa}.btn-outline-indigo-200:hover{color:#000;background-color:#c29ffa;border-color:#c29ffa}.btn-check:focus+.btn-outline-indigo-200,.btn-outline-indigo-200:focus{box-shadow:0 0 0 .25rem #c29ffa80}.btn-check:checked+.btn-outline-indigo-200,.btn-check:active+.btn-outline-indigo-200,.btn-outline-indigo-200:active,.btn-outline-indigo-200.active,.btn-outline-indigo-200.dropdown-toggle.show{color:#000;background-color:#c29ffa;border-color:#c29ffa}.btn-check:checked+.btn-outline-indigo-200:focus,.btn-check:active+.btn-outline-indigo-200:focus,.btn-outline-indigo-200:active:focus,.btn-outline-indigo-200.active:focus,.btn-outline-indigo-200.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #c29ffa80}.btn-outline-indigo-200:disabled,.btn-outline-indigo-200.disabled{color:#c29ffa;background-color:transparent}.btn-outline-indigo-300{color:#a370f7;border-color:#a370f7}.btn-outline-indigo-300:hover{color:#000;background-color:#a370f7;border-color:#a370f7}.btn-check:focus+.btn-outline-indigo-300,.btn-outline-indigo-300:focus{box-shadow:0 0 0 .25rem #a370f780}.btn-check:checked+.btn-outline-indigo-300,.btn-check:active+.btn-outline-indigo-300,.btn-outline-indigo-300:active,.btn-outline-indigo-300.active,.btn-outline-indigo-300.dropdown-toggle.show{color:#000;background-color:#a370f7;border-color:#a370f7}.btn-check:checked+.btn-outline-indigo-300:focus,.btn-check:active+.btn-outline-indigo-300:focus,.btn-outline-indigo-300:active:focus,.btn-outline-indigo-300.active:focus,.btn-outline-indigo-300.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #a370f780}.btn-outline-indigo-300:disabled,.btn-outline-indigo-300.disabled{color:#a370f7;background-color:transparent}.btn-outline-indigo-400{color:#8540f5;border-color:#8540f5}.btn-outline-indigo-400:hover{color:#fff;background-color:#8540f5;border-color:#8540f5}.btn-check:focus+.btn-outline-indigo-400,.btn-outline-indigo-400:focus{box-shadow:0 0 0 .25rem #8540f580}.btn-check:checked+.btn-outline-indigo-400,.btn-check:active+.btn-outline-indigo-400,.btn-outline-indigo-400:active,.btn-outline-indigo-400.active,.btn-outline-indigo-400.dropdown-toggle.show{color:#fff;background-color:#8540f5;border-color:#8540f5}.btn-check:checked+.btn-outline-indigo-400:focus,.btn-check:active+.btn-outline-indigo-400:focus,.btn-outline-indigo-400:active:focus,.btn-outline-indigo-400.active:focus,.btn-outline-indigo-400.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #8540f580}.btn-outline-indigo-400:disabled,.btn-outline-indigo-400.disabled{color:#8540f5;background-color:transparent}.btn-outline-indigo-500{color:#6610f2;border-color:#6610f2}.btn-outline-indigo-500:hover{color:#fff;background-color:#6610f2;border-color:#6610f2}.btn-check:focus+.btn-outline-indigo-500,.btn-outline-indigo-500:focus{box-shadow:0 0 0 .25rem #6610f280}.btn-check:checked+.btn-outline-indigo-500,.btn-check:active+.btn-outline-indigo-500,.btn-outline-indigo-500:active,.btn-outline-indigo-500.active,.btn-outline-indigo-500.dropdown-toggle.show{color:#fff;background-color:#6610f2;border-color:#6610f2}.btn-check:checked+.btn-outline-indigo-500:focus,.btn-check:active+.btn-outline-indigo-500:focus,.btn-outline-indigo-500:active:focus,.btn-outline-indigo-500.active:focus,.btn-outline-indigo-500.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #6610f280}.btn-outline-indigo-500:disabled,.btn-outline-indigo-500.disabled{color:#6610f2;background-color:transparent}.btn-outline-indigo-600{color:#520dc2;border-color:#520dc2}.btn-outline-indigo-600:hover{color:#fff;background-color:#520dc2;border-color:#520dc2}.btn-check:focus+.btn-outline-indigo-600,.btn-outline-indigo-600:focus{box-shadow:0 0 0 .25rem #520dc280}.btn-check:checked+.btn-outline-indigo-600,.btn-check:active+.btn-outline-indigo-600,.btn-outline-indigo-600:active,.btn-outline-indigo-600.active,.btn-outline-indigo-600.dropdown-toggle.show{color:#fff;background-color:#520dc2;border-color:#520dc2}.btn-check:checked+.btn-outline-indigo-600:focus,.btn-check:active+.btn-outline-indigo-600:focus,.btn-outline-indigo-600:active:focus,.btn-outline-indigo-600.active:focus,.btn-outline-indigo-600.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #520dc280}.btn-outline-indigo-600:disabled,.btn-outline-indigo-600.disabled{color:#520dc2;background-color:transparent}.btn-outline-indigo-700{color:#3d0a91;border-color:#3d0a91}.btn-outline-indigo-700:hover{color:#fff;background-color:#3d0a91;border-color:#3d0a91}.btn-check:focus+.btn-outline-indigo-700,.btn-outline-indigo-700:focus{box-shadow:0 0 0 .25rem #3d0a9180}.btn-check:checked+.btn-outline-indigo-700,.btn-check:active+.btn-outline-indigo-700,.btn-outline-indigo-700:active,.btn-outline-indigo-700.active,.btn-outline-indigo-700.dropdown-toggle.show{color:#fff;background-color:#3d0a91;border-color:#3d0a91}.btn-check:checked+.btn-outline-indigo-700:focus,.btn-check:active+.btn-outline-indigo-700:focus,.btn-outline-indigo-700:active:focus,.btn-outline-indigo-700.active:focus,.btn-outline-indigo-700.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #3d0a9180}.btn-outline-indigo-700:disabled,.btn-outline-indigo-700.disabled{color:#3d0a91;background-color:transparent}.btn-outline-indigo-800{color:#290661;border-color:#290661}.btn-outline-indigo-800:hover{color:#fff;background-color:#290661;border-color:#290661}.btn-check:focus+.btn-outline-indigo-800,.btn-outline-indigo-800:focus{box-shadow:0 0 0 .25rem #29066180}.btn-check:checked+.btn-outline-indigo-800,.btn-check:active+.btn-outline-indigo-800,.btn-outline-indigo-800:active,.btn-outline-indigo-800.active,.btn-outline-indigo-800.dropdown-toggle.show{color:#fff;background-color:#290661;border-color:#290661}.btn-check:checked+.btn-outline-indigo-800:focus,.btn-check:active+.btn-outline-indigo-800:focus,.btn-outline-indigo-800:active:focus,.btn-outline-indigo-800.active:focus,.btn-outline-indigo-800.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #29066180}.btn-outline-indigo-800:disabled,.btn-outline-indigo-800.disabled{color:#290661;background-color:transparent}.btn-outline-indigo-900{color:#140330;border-color:#140330}.btn-outline-indigo-900:hover{color:#fff;background-color:#140330;border-color:#140330}.btn-check:focus+.btn-outline-indigo-900,.btn-outline-indigo-900:focus{box-shadow:0 0 0 .25rem #14033080}.btn-check:checked+.btn-outline-indigo-900,.btn-check:active+.btn-outline-indigo-900,.btn-outline-indigo-900:active,.btn-outline-indigo-900.active,.btn-outline-indigo-900.dropdown-toggle.show{color:#fff;background-color:#140330;border-color:#140330}.btn-check:checked+.btn-outline-indigo-900:focus,.btn-check:active+.btn-outline-indigo-900:focus,.btn-outline-indigo-900:active:focus,.btn-outline-indigo-900.active:focus,.btn-outline-indigo-900.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #14033080}.btn-outline-indigo-900:disabled,.btn-outline-indigo-900.disabled{color:#140330;background-color:transparent}.btn-outline-purple-100{color:#e2d9f3;border-color:#e2d9f3}.btn-outline-purple-100:hover{color:#000;background-color:#e2d9f3;border-color:#e2d9f3}.btn-check:focus+.btn-outline-purple-100,.btn-outline-purple-100:focus{box-shadow:0 0 0 .25rem #e2d9f380}.btn-check:checked+.btn-outline-purple-100,.btn-check:active+.btn-outline-purple-100,.btn-outline-purple-100:active,.btn-outline-purple-100.active,.btn-outline-purple-100.dropdown-toggle.show{color:#000;background-color:#e2d9f3;border-color:#e2d9f3}.btn-check:checked+.btn-outline-purple-100:focus,.btn-check:active+.btn-outline-purple-100:focus,.btn-outline-purple-100:active:focus,.btn-outline-purple-100.active:focus,.btn-outline-purple-100.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #e2d9f380}.btn-outline-purple-100:disabled,.btn-outline-purple-100.disabled{color:#e2d9f3;background-color:transparent}.btn-outline-purple-200{color:#c5b3e6;border-color:#c5b3e6}.btn-outline-purple-200:hover{color:#000;background-color:#c5b3e6;border-color:#c5b3e6}.btn-check:focus+.btn-outline-purple-200,.btn-outline-purple-200:focus{box-shadow:0 0 0 .25rem #c5b3e680}.btn-check:checked+.btn-outline-purple-200,.btn-check:active+.btn-outline-purple-200,.btn-outline-purple-200:active,.btn-outline-purple-200.active,.btn-outline-purple-200.dropdown-toggle.show{color:#000;background-color:#c5b3e6;border-color:#c5b3e6}.btn-check:checked+.btn-outline-purple-200:focus,.btn-check:active+.btn-outline-purple-200:focus,.btn-outline-purple-200:active:focus,.btn-outline-purple-200.active:focus,.btn-outline-purple-200.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #c5b3e680}.btn-outline-purple-200:disabled,.btn-outline-purple-200.disabled{color:#c5b3e6;background-color:transparent}.btn-outline-purple-300{color:#a98eda;border-color:#a98eda}.btn-outline-purple-300:hover{color:#000;background-color:#a98eda;border-color:#a98eda}.btn-check:focus+.btn-outline-purple-300,.btn-outline-purple-300:focus{box-shadow:0 0 0 .25rem #a98eda80}.btn-check:checked+.btn-outline-purple-300,.btn-check:active+.btn-outline-purple-300,.btn-outline-purple-300:active,.btn-outline-purple-300.active,.btn-outline-purple-300.dropdown-toggle.show{color:#000;background-color:#a98eda;border-color:#a98eda}.btn-check:checked+.btn-outline-purple-300:focus,.btn-check:active+.btn-outline-purple-300:focus,.btn-outline-purple-300:active:focus,.btn-outline-purple-300.active:focus,.btn-outline-purple-300.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #a98eda80}.btn-outline-purple-300:disabled,.btn-outline-purple-300.disabled{color:#a98eda;background-color:transparent}.btn-outline-purple-400{color:#8c68cd;border-color:#8c68cd}.btn-outline-purple-400:hover{color:#000;background-color:#8c68cd;border-color:#8c68cd}.btn-check:focus+.btn-outline-purple-400,.btn-outline-purple-400:focus{box-shadow:0 0 0 .25rem #8c68cd80}.btn-check:checked+.btn-outline-purple-400,.btn-check:active+.btn-outline-purple-400,.btn-outline-purple-400:active,.btn-outline-purple-400.active,.btn-outline-purple-400.dropdown-toggle.show{color:#000;background-color:#8c68cd;border-color:#8c68cd}.btn-check:checked+.btn-outline-purple-400:focus,.btn-check:active+.btn-outline-purple-400:focus,.btn-outline-purple-400:active:focus,.btn-outline-purple-400.active:focus,.btn-outline-purple-400.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #8c68cd80}.btn-outline-purple-400:disabled,.btn-outline-purple-400.disabled{color:#8c68cd;background-color:transparent}.btn-outline-purple-500{color:#6f42c1;border-color:#6f42c1}.btn-outline-purple-500:hover{color:#fff;background-color:#6f42c1;border-color:#6f42c1}.btn-check:focus+.btn-outline-purple-500,.btn-outline-purple-500:focus{box-shadow:0 0 0 .25rem #6f42c180}.btn-check:checked+.btn-outline-purple-500,.btn-check:active+.btn-outline-purple-500,.btn-outline-purple-500:active,.btn-outline-purple-500.active,.btn-outline-purple-500.dropdown-toggle.show{color:#fff;background-color:#6f42c1;border-color:#6f42c1}.btn-check:checked+.btn-outline-purple-500:focus,.btn-check:active+.btn-outline-purple-500:focus,.btn-outline-purple-500:active:focus,.btn-outline-purple-500.active:focus,.btn-outline-purple-500.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #6f42c180}.btn-outline-purple-500:disabled,.btn-outline-purple-500.disabled{color:#6f42c1;background-color:transparent}.btn-outline-purple-600{color:#59359a;border-color:#59359a}.btn-outline-purple-600:hover{color:#fff;background-color:#59359a;border-color:#59359a}.btn-check:focus+.btn-outline-purple-600,.btn-outline-purple-600:focus{box-shadow:0 0 0 .25rem #59359a80}.btn-check:checked+.btn-outline-purple-600,.btn-check:active+.btn-outline-purple-600,.btn-outline-purple-600:active,.btn-outline-purple-600.active,.btn-outline-purple-600.dropdown-toggle.show{color:#fff;background-color:#59359a;border-color:#59359a}.btn-check:checked+.btn-outline-purple-600:focus,.btn-check:active+.btn-outline-purple-600:focus,.btn-outline-purple-600:active:focus,.btn-outline-purple-600.active:focus,.btn-outline-purple-600.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #59359a80}.btn-outline-purple-600:disabled,.btn-outline-purple-600.disabled{color:#59359a;background-color:transparent}.btn-outline-purple-700{color:#432874;border-color:#432874}.btn-outline-purple-700:hover{color:#fff;background-color:#432874;border-color:#432874}.btn-check:focus+.btn-outline-purple-700,.btn-outline-purple-700:focus{box-shadow:0 0 0 .25rem #43287480}.btn-check:checked+.btn-outline-purple-700,.btn-check:active+.btn-outline-purple-700,.btn-outline-purple-700:active,.btn-outline-purple-700.active,.btn-outline-purple-700.dropdown-toggle.show{color:#fff;background-color:#432874;border-color:#432874}.btn-check:checked+.btn-outline-purple-700:focus,.btn-check:active+.btn-outline-purple-700:focus,.btn-outline-purple-700:active:focus,.btn-outline-purple-700.active:focus,.btn-outline-purple-700.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #43287480}.btn-outline-purple-700:disabled,.btn-outline-purple-700.disabled{color:#432874;background-color:transparent}.btn-outline-purple-800{color:#2c1a4d;border-color:#2c1a4d}.btn-outline-purple-800:hover{color:#fff;background-color:#2c1a4d;border-color:#2c1a4d}.btn-check:focus+.btn-outline-purple-800,.btn-outline-purple-800:focus{box-shadow:0 0 0 .25rem #2c1a4d80}.btn-check:checked+.btn-outline-purple-800,.btn-check:active+.btn-outline-purple-800,.btn-outline-purple-800:active,.btn-outline-purple-800.active,.btn-outline-purple-800.dropdown-toggle.show{color:#fff;background-color:#2c1a4d;border-color:#2c1a4d}.btn-check:checked+.btn-outline-purple-800:focus,.btn-check:active+.btn-outline-purple-800:focus,.btn-outline-purple-800:active:focus,.btn-outline-purple-800.active:focus,.btn-outline-purple-800.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #2c1a4d80}.btn-outline-purple-800:disabled,.btn-outline-purple-800.disabled{color:#2c1a4d;background-color:transparent}.btn-outline-purple-900{color:#160d27;border-color:#160d27}.btn-outline-purple-900:hover{color:#fff;background-color:#160d27;border-color:#160d27}.btn-check:focus+.btn-outline-purple-900,.btn-outline-purple-900:focus{box-shadow:0 0 0 .25rem #160d2780}.btn-check:checked+.btn-outline-purple-900,.btn-check:active+.btn-outline-purple-900,.btn-outline-purple-900:active,.btn-outline-purple-900.active,.btn-outline-purple-900.dropdown-toggle.show{color:#fff;background-color:#160d27;border-color:#160d27}.btn-check:checked+.btn-outline-purple-900:focus,.btn-check:active+.btn-outline-purple-900:focus,.btn-outline-purple-900:active:focus,.btn-outline-purple-900.active:focus,.btn-outline-purple-900.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #160d2780}.btn-outline-purple-900:disabled,.btn-outline-purple-900.disabled{color:#160d27;background-color:transparent}.btn-outline-pink-100{color:#f7d6e6;border-color:#f7d6e6}.btn-outline-pink-100:hover{color:#000;background-color:#f7d6e6;border-color:#f7d6e6}.btn-check:focus+.btn-outline-pink-100,.btn-outline-pink-100:focus{box-shadow:0 0 0 .25rem #f7d6e680}.btn-check:checked+.btn-outline-pink-100,.btn-check:active+.btn-outline-pink-100,.btn-outline-pink-100:active,.btn-outline-pink-100.active,.btn-outline-pink-100.dropdown-toggle.show{color:#000;background-color:#f7d6e6;border-color:#f7d6e6}.btn-check:checked+.btn-outline-pink-100:focus,.btn-check:active+.btn-outline-pink-100:focus,.btn-outline-pink-100:active:focus,.btn-outline-pink-100.active:focus,.btn-outline-pink-100.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #f7d6e680}.btn-outline-pink-100:disabled,.btn-outline-pink-100.disabled{color:#f7d6e6;background-color:transparent}.btn-outline-pink-200{color:#efadce;border-color:#efadce}.btn-outline-pink-200:hover{color:#000;background-color:#efadce;border-color:#efadce}.btn-check:focus+.btn-outline-pink-200,.btn-outline-pink-200:focus{box-shadow:0 0 0 .25rem #efadce80}.btn-check:checked+.btn-outline-pink-200,.btn-check:active+.btn-outline-pink-200,.btn-outline-pink-200:active,.btn-outline-pink-200.active,.btn-outline-pink-200.dropdown-toggle.show{color:#000;background-color:#efadce;border-color:#efadce}.btn-check:checked+.btn-outline-pink-200:focus,.btn-check:active+.btn-outline-pink-200:focus,.btn-outline-pink-200:active:focus,.btn-outline-pink-200.active:focus,.btn-outline-pink-200.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #efadce80}.btn-outline-pink-200:disabled,.btn-outline-pink-200.disabled{color:#efadce;background-color:transparent}.btn-outline-pink-300{color:#e685b5;border-color:#e685b5}.btn-outline-pink-300:hover{color:#000;background-color:#e685b5;border-color:#e685b5}.btn-check:focus+.btn-outline-pink-300,.btn-outline-pink-300:focus{box-shadow:0 0 0 .25rem #e685b580}.btn-check:checked+.btn-outline-pink-300,.btn-check:active+.btn-outline-pink-300,.btn-outline-pink-300:active,.btn-outline-pink-300.active,.btn-outline-pink-300.dropdown-toggle.show{color:#000;background-color:#e685b5;border-color:#e685b5}.btn-check:checked+.btn-outline-pink-300:focus,.btn-check:active+.btn-outline-pink-300:focus,.btn-outline-pink-300:active:focus,.btn-outline-pink-300.active:focus,.btn-outline-pink-300.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #e685b580}.btn-outline-pink-300:disabled,.btn-outline-pink-300.disabled{color:#e685b5;background-color:transparent}.btn-outline-pink-400{color:#de5c9d;border-color:#de5c9d}.btn-outline-pink-400:hover{color:#000;background-color:#de5c9d;border-color:#de5c9d}.btn-check:focus+.btn-outline-pink-400,.btn-outline-pink-400:focus{box-shadow:0 0 0 .25rem #de5c9d80}.btn-check:checked+.btn-outline-pink-400,.btn-check:active+.btn-outline-pink-400,.btn-outline-pink-400:active,.btn-outline-pink-400.active,.btn-outline-pink-400.dropdown-toggle.show{color:#000;background-color:#de5c9d;border-color:#de5c9d}.btn-check:checked+.btn-outline-pink-400:focus,.btn-check:active+.btn-outline-pink-400:focus,.btn-outline-pink-400:active:focus,.btn-outline-pink-400.active:focus,.btn-outline-pink-400.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #de5c9d80}.btn-outline-pink-400:disabled,.btn-outline-pink-400.disabled{color:#de5c9d;background-color:transparent}.btn-outline-pink-500{color:#d63384;border-color:#d63384}.btn-outline-pink-500:hover{color:#fff;background-color:#d63384;border-color:#d63384}.btn-check:focus+.btn-outline-pink-500,.btn-outline-pink-500:focus{box-shadow:0 0 0 .25rem #d6338480}.btn-check:checked+.btn-outline-pink-500,.btn-check:active+.btn-outline-pink-500,.btn-outline-pink-500:active,.btn-outline-pink-500.active,.btn-outline-pink-500.dropdown-toggle.show{color:#fff;background-color:#d63384;border-color:#d63384}.btn-check:checked+.btn-outline-pink-500:focus,.btn-check:active+.btn-outline-pink-500:focus,.btn-outline-pink-500:active:focus,.btn-outline-pink-500.active:focus,.btn-outline-pink-500.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #d6338480}.btn-outline-pink-500:disabled,.btn-outline-pink-500.disabled{color:#d63384;background-color:transparent}.btn-outline-pink-600{color:#ab296a;border-color:#ab296a}.btn-outline-pink-600:hover{color:#fff;background-color:#ab296a;border-color:#ab296a}.btn-check:focus+.btn-outline-pink-600,.btn-outline-pink-600:focus{box-shadow:0 0 0 .25rem #ab296a80}.btn-check:checked+.btn-outline-pink-600,.btn-check:active+.btn-outline-pink-600,.btn-outline-pink-600:active,.btn-outline-pink-600.active,.btn-outline-pink-600.dropdown-toggle.show{color:#fff;background-color:#ab296a;border-color:#ab296a}.btn-check:checked+.btn-outline-pink-600:focus,.btn-check:active+.btn-outline-pink-600:focus,.btn-outline-pink-600:active:focus,.btn-outline-pink-600.active:focus,.btn-outline-pink-600.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #ab296a80}.btn-outline-pink-600:disabled,.btn-outline-pink-600.disabled{color:#ab296a;background-color:transparent}.btn-outline-pink-700{color:#801f4f;border-color:#801f4f}.btn-outline-pink-700:hover{color:#fff;background-color:#801f4f;border-color:#801f4f}.btn-check:focus+.btn-outline-pink-700,.btn-outline-pink-700:focus{box-shadow:0 0 0 .25rem #801f4f80}.btn-check:checked+.btn-outline-pink-700,.btn-check:active+.btn-outline-pink-700,.btn-outline-pink-700:active,.btn-outline-pink-700.active,.btn-outline-pink-700.dropdown-toggle.show{color:#fff;background-color:#801f4f;border-color:#801f4f}.btn-check:checked+.btn-outline-pink-700:focus,.btn-check:active+.btn-outline-pink-700:focus,.btn-outline-pink-700:active:focus,.btn-outline-pink-700.active:focus,.btn-outline-pink-700.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #801f4f80}.btn-outline-pink-700:disabled,.btn-outline-pink-700.disabled{color:#801f4f;background-color:transparent}.btn-outline-pink-800{color:#561435;border-color:#561435}.btn-outline-pink-800:hover{color:#fff;background-color:#561435;border-color:#561435}.btn-check:focus+.btn-outline-pink-800,.btn-outline-pink-800:focus{box-shadow:0 0 0 .25rem #56143580}.btn-check:checked+.btn-outline-pink-800,.btn-check:active+.btn-outline-pink-800,.btn-outline-pink-800:active,.btn-outline-pink-800.active,.btn-outline-pink-800.dropdown-toggle.show{color:#fff;background-color:#561435;border-color:#561435}.btn-check:checked+.btn-outline-pink-800:focus,.btn-check:active+.btn-outline-pink-800:focus,.btn-outline-pink-800:active:focus,.btn-outline-pink-800.active:focus,.btn-outline-pink-800.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #56143580}.btn-outline-pink-800:disabled,.btn-outline-pink-800.disabled{color:#561435;background-color:transparent}.btn-outline-pink-900{color:#2b0a1a;border-color:#2b0a1a}.btn-outline-pink-900:hover{color:#fff;background-color:#2b0a1a;border-color:#2b0a1a}.btn-check:focus+.btn-outline-pink-900,.btn-outline-pink-900:focus{box-shadow:0 0 0 .25rem #2b0a1a80}.btn-check:checked+.btn-outline-pink-900,.btn-check:active+.btn-outline-pink-900,.btn-outline-pink-900:active,.btn-outline-pink-900.active,.btn-outline-pink-900.dropdown-toggle.show{color:#fff;background-color:#2b0a1a;border-color:#2b0a1a}.btn-check:checked+.btn-outline-pink-900:focus,.btn-check:active+.btn-outline-pink-900:focus,.btn-outline-pink-900:active:focus,.btn-outline-pink-900.active:focus,.btn-outline-pink-900.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #2b0a1a80}.btn-outline-pink-900:disabled,.btn-outline-pink-900.disabled{color:#2b0a1a;background-color:transparent}.btn-link{font-weight:400;color:#0d6efd;text-decoration:underline}.btn-link:hover{color:#0a58ca}.btn-link:disabled,.btn-link.disabled{color:#6c757d}.btn-lg,.btn-group-lg>.btn{padding:.5rem 1rem;font-size:1.25rem;border-radius:.75rem}.btn-sm,.btn-group-sm>.btn{padding:.25rem .5rem;font-size:.875rem;border-radius:.375rem}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion: reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion: reduce){.collapsing{transition:none}}.dropup,.dropend,.dropdown,.dropstart{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty:after{margin-left:0}.dropdown-menu{position:absolute;z-index:1000;display:none;min-width:10rem;padding:.5rem 0;margin:0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.375rem}.dropdown-menu[data-bs-popper]{top:100%;left:0;margin-top:.125rem}.dropdown-menu-start{--bs-position: start}.dropdown-menu-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-end{--bs-position: end}.dropdown-menu-end[data-bs-popper]{right:0;left:auto}@media (min-width: 576px){.dropdown-menu-sm-start{--bs-position: start}.dropdown-menu-sm-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-sm-end{--bs-position: end}.dropdown-menu-sm-end[data-bs-popper]{right:0;left:auto}}@media (min-width: 768px){.dropdown-menu-md-start{--bs-position: start}.dropdown-menu-md-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-md-end{--bs-position: end}.dropdown-menu-md-end[data-bs-popper]{right:0;left:auto}}@media (min-width: 992px){.dropdown-menu-lg-start{--bs-position: start}.dropdown-menu-lg-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-lg-end{--bs-position: end}.dropdown-menu-lg-end[data-bs-popper]{right:0;left:auto}}@media (min-width: 1200px){.dropdown-menu-xl-start{--bs-position: start}.dropdown-menu-xl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xl-end{--bs-position: end}.dropdown-menu-xl-end[data-bs-popper]{right:0;left:auto}}@media (min-width: 1400px){.dropdown-menu-xxl-start{--bs-position: start}.dropdown-menu-xxl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xxl-end{--bs-position: end}.dropdown-menu-xxl-end[data-bs-popper]{right:0;left:auto}}.dropup .dropdown-menu[data-bs-popper]{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty:after{margin-left:0}.dropend .dropdown-menu[data-bs-popper]{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}.dropend .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropend .dropdown-toggle:empty:after{margin-left:0}.dropend .dropdown-toggle:after{vertical-align:0}.dropstart .dropdown-menu[data-bs-popper]{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}.dropstart .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropstart .dropdown-toggle:after{display:none}.dropstart .dropdown-toggle:before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropstart .dropdown-toggle:empty:after{margin-left:0}.dropstart .dropdown-toggle:before{vertical-align:0}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid rgba(0,0,0,.15)}.dropdown-item{display:block;width:100%;padding:.25rem 1rem;clear:both;font-weight:400;color:#212529;text-align:inherit;text-decoration:none;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:hover,.dropdown-item:focus{color:#1e2125;background-color:#e9ecef}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#0d6efd}.dropdown-item.disabled,.dropdown-item:disabled{color:#adb5bd;pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1rem;color:#212529}.dropdown-menu-dark{color:#dee2e6;background-color:#343a40;border-color:#00000026}.dropdown-menu-dark .dropdown-item{color:#dee2e6}.dropdown-menu-dark .dropdown-item:hover,.dropdown-menu-dark .dropdown-item:focus{color:#fff;background-color:#ffffff26}.dropdown-menu-dark .dropdown-item.active,.dropdown-menu-dark .dropdown-item:active{color:#fff;background-color:#0d6efd}.dropdown-menu-dark .dropdown-item.disabled,.dropdown-menu-dark .dropdown-item:disabled{color:#adb5bd}.dropdown-menu-dark .dropdown-divider{border-color:#00000026}.dropdown-menu-dark .dropdown-item-text{color:#dee2e6}.dropdown-menu-dark .dropdown-header{color:#adb5bd}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;flex:1 1 auto}.btn-group>.btn-check:checked+.btn,.btn-group>.btn-check:focus+.btn,.btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn-check:checked+.btn,.btn-group-vertical>.btn-check:focus+.btn,.btn-group-vertical>.btn:hover,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn.active{z-index:1}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn:not(:first-child),.btn-group>.btn-group:not(:first-child){margin-left:-1px}.btn-group>.btn:not(:last-child):not(.dropdown-toggle),.btn-group>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:nth-child(n+3),.btn-group>:not(.btn-check)+.btn,.btn-group>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split:after,.dropup .dropdown-toggle-split:after,.dropend .dropdown-toggle-split:after{margin-left:0}.dropstart .dropdown-toggle-split:before{margin-right:0}.btn-sm+.dropdown-toggle-split,.btn-group-sm>.btn+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-lg+.dropdown-toggle-split,.btn-group-lg>.btn+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn:not(:first-child),.btn-group-vertical>.btn-group:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle),.btn-group-vertical>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn~.btn,.btn-group-vertical>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-top-right-radius:0}.nav{display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem;color:#0d6efd;text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media (prefers-reduced-motion: reduce){.nav-link{transition:none}}.nav-link:hover,.nav-link:focus{color:#0a58ca}.nav-link.disabled{color:#6c757d;pointer-events:none;cursor:default}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-link{margin-bottom:-1px;background:none;border:1px solid transparent;border-top-left-radius:.375rem;border-top-right-radius:.375rem}.nav-tabs .nav-link:hover,.nav-tabs .nav-link:focus{border-color:#e9ecef #e9ecef #dee2e6;isolation:isolate}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.nav-tabs .nav-link.active,.nav-tabs .nav-item.show .nav-link{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{background:none;border:0;border-radius:.375rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#0d6efd}.nav-fill>.nav-link,.nav-fill .nav-item{flex:1 1 auto;text-align:center}.nav-justified>.nav-link,.nav-justified .nav-item{flex-basis:0;flex-grow:1;text-align:center}.nav-fill .nav-item .nav-link,.nav-justified .nav-item .nav-link{width:100%}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding-top:.5rem;padding-bottom:.5rem}.navbar>.container,.navbar>.container-fluid,.navbar>.container-sm,.navbar>.container-md,.navbar>.container-lg,.navbar>.container-xl,.navbar>.container-xxl{display:flex;flex-wrap:inherit;align-items:center;justify-content:space-between}.navbar-brand{padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;text-decoration:none;white-space:nowrap}.navbar-nav{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static}.navbar-text{padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.375rem;transition:box-shadow .15s ease-in-out}@media (prefers-reduced-motion: reduce){.navbar-toggler{transition:none}}.navbar-toggler:hover{text-decoration:none}.navbar-toggler:focus{text-decoration:none;outline:0;box-shadow:0 0 0 .25rem}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;background-repeat:no-repeat;background-position:center;background-size:100%}.navbar-nav-scroll{max-height:var(--bs-scroll-height, 75vh);overflow-y:auto}@media (min-width: 576px){.navbar-expand-sm{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}}@media (min-width: 768px){.navbar-expand-md{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}}@media (min-width: 992px){.navbar-expand-lg{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}}@media (min-width: 1200px){.navbar-expand-xl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}}@media (min-width: 1400px){.navbar-expand-xxl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xxl .navbar-nav{flex-direction:row}.navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xxl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xxl .navbar-nav-scroll{overflow:visible}.navbar-expand-xxl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xxl .navbar-toggler{display:none}}.navbar-expand{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-light .navbar-brand{color:#000000e6}.navbar-light .navbar-brand:hover,.navbar-light .navbar-brand:focus{color:#000000e6}.navbar-light .navbar-nav .nav-link{color:#0000008c}.navbar-light .navbar-nav .nav-link:hover,.navbar-light .navbar-nav .nav-link:focus{color:#000000b3}.navbar-light .navbar-nav .nav-link.disabled{color:#0000004d}.navbar-light .navbar-nav .show>.nav-link,.navbar-light .navbar-nav .nav-link.active{color:#000000e6}.navbar-light .navbar-toggler{color:#0000008c;border-color:#0000001a}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-light .navbar-text{color:#0000008c}.navbar-light .navbar-text a,.navbar-light .navbar-text a:hover,.navbar-light .navbar-text a:focus{color:#000000e6}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:hover,.navbar-dark .navbar-brand:focus{color:#fff}.navbar-dark .navbar-nav .nav-link{color:#ffffff8c}.navbar-dark .navbar-nav .nav-link:hover,.navbar-dark .navbar-nav .nav-link:focus{color:#ffffffbf}.navbar-dark .navbar-nav .nav-link.disabled{color:#ffffff40}.navbar-dark .navbar-nav .show>.nav-link,.navbar-dark .navbar-nav .nav-link.active{color:#fff}.navbar-dark .navbar-toggler{color:#ffffff8c;border-color:#ffffff1a}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-dark .navbar-text{color:#ffffff8c}.navbar-dark .navbar-text a,.navbar-dark .navbar-text a:hover,.navbar-dark .navbar-text a:focus{color:#fff}.card{position:relative;display:flex;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,.125);border-radius:.375rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:calc(.375rem - 1px);border-top-right-radius:calc(.375rem - 1px)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:calc(.375rem - 1px);border-bottom-left-radius:calc(.375rem - 1px)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{flex:1 1 auto;padding:1rem}.card-title{margin-bottom:.5rem}.card-subtitle{margin-top:-.25rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1rem}.card-header{padding:.5rem 1rem;margin-bottom:0;color:#343a40;background-color:"unset";border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(.375rem - 1px) calc(.375rem - 1px) 0 0}.card-footer{padding:.5rem 1rem;color:#343a40;background-color:"unset";border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(.375rem - 1px) calc(.375rem - 1px)}.card-header-tabs{margin-right:-.5rem;margin-bottom:-.5rem;margin-left:-.5rem;border-bottom:0}.card-header-pills{margin-right:-.5rem;margin-left:-.5rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1rem;border-radius:calc(.375rem - 1px)}.card-img,.card-img-top,.card-img-bottom{width:100%}.card-img,.card-img-top{border-top-left-radius:calc(.375rem - 1px);border-top-right-radius:calc(.375rem - 1px)}.card-img,.card-img-bottom{border-bottom-right-radius:calc(.375rem - 1px);border-bottom-left-radius:calc(.375rem - 1px)}.card-group>.card{margin-bottom:.75rem}@media (min-width: 576px){.card-group{display:flex;flex-flow:row wrap}.card-group>.card{flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-img-top,.card-group>.card:not(:last-child) .card-header{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-img-bottom,.card-group>.card:not(:last-child) .card-footer{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-img-top,.card-group>.card:not(:first-child) .card-header{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-img-bottom,.card-group>.card:not(:first-child) .card-footer{border-bottom-left-radius:0}}.accordion-button{position:relative;display:flex;align-items:center;width:100%;padding:1rem 1.25rem;font-size:1rem;color:#212529;text-align:left;background-color:transparent;border:0;border-radius:0;overflow-anchor:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,border-radius .15s ease}@media (prefers-reduced-motion: reduce){.accordion-button{transition:none}}.accordion-button:not(.collapsed){color:#343a40;background-color:#cfe2ff;box-shadow:inset 0 -1px #dee2e6}.accordion-button:not(.collapsed):after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230c63e4'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");transform:rotate(-180deg)}.accordion-button:after{flex-shrink:0;width:1.25rem;height:1.25rem;margin-left:auto;content:"";background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23212529'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-size:1.25rem;transition:transform .2s ease-in-out}@media (prefers-reduced-motion: reduce){.accordion-button:after{transition:none}}.accordion-button:hover{z-index:2}.accordion-button:focus{z-index:3;border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}.accordion-header{margin-bottom:0}.accordion-item{background-color:transparent;border:1px solid #dee2e6}.accordion-item:first-of-type{border-top-left-radius:.375rem;border-top-right-radius:.375rem}.accordion-item:first-of-type .accordion-button{border-top-left-radius:calc(.375rem - 1px);border-top-right-radius:calc(.375rem - 1px)}.accordion-item:not(:first-of-type){border-top:0}.accordion-item:last-of-type{border-bottom-right-radius:.375rem;border-bottom-left-radius:.375rem}.accordion-item:last-of-type .accordion-button.collapsed{border-bottom-right-radius:calc(.375rem - 1px);border-bottom-left-radius:calc(.375rem - 1px)}.accordion-item:last-of-type .accordion-collapse{border-bottom-right-radius:.375rem;border-bottom-left-radius:.375rem}.accordion-body{padding:1rem 1.25rem}.accordion-flush .accordion-collapse{border-width:0}.accordion-flush .accordion-item{border-right:0;border-left:0;border-radius:0}.accordion-flush .accordion-item:first-child{border-top:0}.accordion-flush .accordion-item:last-child{border-bottom:0}.accordion-flush .accordion-item .accordion-button{border-radius:0}.breadcrumb{display:flex;flex-wrap:wrap;padding:0;margin-bottom:1rem;list-style:none}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item:before{float:left;padding-right:.5rem;color:#6c757d;content:var(--bs-breadcrumb-divider, url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8'%3E%3Cpath d='M2.5 0L1 1.5 3.5 4 1 6.5 2.5 8l4-4-4-4z' fill='currentColor'/%3E%3C/svg%3E"))}.breadcrumb-item.active{color:#6c757d}.pagination{display:flex;padding-left:0;list-style:none}.page-link{position:relative;display:block;color:#0d6efd;text-decoration:none;background-color:#fff;border:1px solid #dee2e6;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion: reduce){.page-link{transition:none}}.page-link:hover{z-index:2;color:#0a58ca;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus{z-index:3;color:#0a58ca;background-color:#e9ecef;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}.page-item:not(:first-child) .page-link{margin-left:-1px}.page-item.active .page-link{z-index:3;color:#fff;background-color:#0d6efd;border-color:#0d6efd}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;background-color:#fff;border-color:#dee2e6}.page-link{padding:.375rem .75rem}.page-item:first-child .page-link{border-top-left-radius:.375rem;border-bottom-left-radius:.375rem}.page-item:last-child .page-link{border-top-right-radius:.375rem;border-bottom-right-radius:.375rem}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.75rem;border-bottom-left-radius:.75rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.75rem;border-bottom-right-radius:.75rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.375rem;border-bottom-left-radius:.375rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.375rem;border-bottom-right-radius:.375rem}.badge{display:inline-block;padding:.35em .65em;font-size:.75em;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.375rem}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.alert{position:relative;padding:1rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.375rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:3rem}.alert-dismissible .btn-close{position:absolute;top:0;right:0;z-index:2;padding:1.25rem 1rem}.alert-primary{color:#1f496e;background-color:#d6e4f1;border-color:#c2d7e9}.alert-primary .alert-link{color:#193a58}.alert-secondary{color:#41464b;background-color:#e2e3e5;border-color:#d3d6d8}.alert-secondary .alert-link{color:#34383c}.alert-success{color:#0f5132;background-color:#d1e7dd;border-color:#badbcc}.alert-success .alert-link{color:#0c4128}.alert-info{color:#055160;background-color:#cff4fc;border-color:#b6effb}.alert-info .alert-link{color:#04414d}.alert-warning{color:#664d03;background-color:#fff3cd;border-color:#ffecb5}.alert-warning .alert-link{color:#523e02}.alert-danger{color:#842029;background-color:#f8d7da;border-color:#f5c2c7}.alert-danger .alert-link{color:#6a1a21}.alert-light{color:#636464;background-color:#fefefe;border-color:#fdfdfe}.alert-light .alert-link{color:#4f5050}.alert-dark{color:#141619;background-color:#d3d3d4;border-color:#bcbebf}.alert-dark .alert-link{color:#101214}.alert-red{color:#842029;background-color:#f8d7da;border-color:#f5c2c7}.alert-red .alert-link{color:#6a1a21}.alert-yellow{color:#664d03;background-color:#fff3cd;border-color:#ffecb5}.alert-yellow .alert-link{color:#523e02}.alert-green{color:#0f5132;background-color:#d1e7dd;border-color:#badbcc}.alert-green .alert-link{color:#0c4128}.alert-blue{color:#084298;background-color:#cfe2ff;border-color:#b6d4fe}.alert-blue .alert-link{color:#06357a}.alert-cyan{color:#055160;background-color:#cff4fc;border-color:#b6effb}.alert-cyan .alert-link{color:#04414d}.alert-indigo{color:#3d0a91;background-color:#e0cffc;border-color:#d1b7fb}.alert-indigo .alert-link{color:#310874}.alert-purple{color:#432874;background-color:#e2d9f3;border-color:#d4c6ec}.alert-purple .alert-link{color:#36205d}.alert-pink{color:#801f4f;background-color:#f7d6e6;border-color:#f3c2da}.alert-pink .alert-link{color:#66193f}.alert-darker{color:#101314;background-color:#d1d2d3;border-color:#bbbcbd}.alert-darker .alert-link{color:#0d0f10}.alert-darkest{color:#0e1011;background-color:#d1d1d2;border-color:#b9bbbb}.alert-darkest .alert-link{color:#0b0d0e}.alert-gray{color:#525557;background-color:#f5f6f8;border-color:#f0f2f4}.alert-gray .alert-link{color:#424446}.alert-gray-100{color:#636464;background-color:#fefefe;border-color:#fdfdfe}.alert-gray-100 .alert-link{color:#4f5050}.alert-gray-200{color:#5d5e60;background-color:#fbfbfc;border-color:#f8f9fa}.alert-gray-200 .alert-link{color:#4a4b4d}.alert-gray-300{color:#595a5c;background-color:#f8f9fa;border-color:#f5f6f8}.alert-gray-300 .alert-link{color:#47484a}.alert-gray-400{color:#525557;background-color:#f5f6f8;border-color:#f0f2f4}.alert-gray-400 .alert-link{color:#424446}.alert-gray-500{color:#686d71;background-color:#eff0f2;border-color:#e6e9eb}.alert-gray-500 .alert-link{color:#53575a}.alert-gray-600{color:#41464b;background-color:#e2e3e5;border-color:#d3d6d8}.alert-gray-600 .alert-link{color:#34383c}.alert-gray-700{color:#2c3034;background-color:#dbdcdd;border-color:#c8cbcd}.alert-gray-700 .alert-link{color:#23262a}.alert-gray-800{color:#1f2326;background-color:#d6d8d9;border-color:#c2c4c6}.alert-gray-800 .alert-link{color:#191c1e}.alert-gray-900{color:#141619;background-color:#d3d3d4;border-color:#bcbebf}.alert-gray-900 .alert-link{color:#101214}.alert-red-100{color:#635657;background-color:#fef7f8;border-color:#fdf3f4}.alert-red-100 .alert-link{color:#4f4546}.alert-red-200{color:#604648;background-color:#fceff0;border-color:#fbe7e9}.alert-red-200 .alert-link{color:#4d383a}.alert-red-300{color:#8c5056;background-color:#fbe7e9;border-color:#f9dbdd}.alert-red-300 .alert-link{color:#704045}.alert-red-400{color:#883840;background-color:#f9dfe1;border-color:#f7ced2}.alert-red-400 .alert-link{color:#6d2d33}.alert-red-500{color:#842029;background-color:#f8d7da;border-color:#f5c2c7}.alert-red-500 .alert-link{color:#6a1a21}.alert-red-600{color:#6a1921;background-color:#efd4d7;border-color:#e7bfc3}.alert-red-600 .alert-link{color:#55141a}.alert-red-700{color:#4f1319;background-color:#e6d2d4;border-color:#dabcbf}.alert-red-700 .alert-link{color:#3f0f14}.alert-red-800{color:#350d11;background-color:#ded0d2;border-color:#cdb9bb}.alert-red-800 .alert-link{color:#2a0a0e}.alert-red-900{color:#1a0708;background-color:#d5cecf;border-color:#c0b6b7}.alert-red-900 .alert-link{color:#150606}.alert-yellow-100{color:#666152;background-color:#fffdf5;border-color:#fffbf0}.alert-yellow-100 .alert-link{color:#524e42}.alert-yellow-200{color:#665c3e;background-color:#fffaeb;border-color:#fff8e1}.alert-yellow-200 .alert-link{color:#524a32}.alert-yellow-300{color:#66572a;background-color:#fff8e1;border-color:#fff4d2}.alert-yellow-300 .alert-link{color:#524622}.alert-yellow-400{color:#665217;background-color:#fff5d7;border-color:#fff0c4}.alert-yellow-400 .alert-link{color:#524212}.alert-yellow-500{color:#664d03;background-color:#fff3cd;border-color:#ffecb5}.alert-yellow-500 .alert-link{color:#523e02}.alert-yellow-600{color:#7a5c04;background-color:#f5ebcd;border-color:#f0e1b4}.alert-yellow-600 .alert-link{color:#624a03}.alert-yellow-700{color:#5c4602;background-color:#ebe3cd;border-color:#e0d5b4}.alert-yellow-700 .alert-link{color:#4a3802}.alert-yellow-800{color:#3d2e02;background-color:#e0dbcd;border-color:#d1cab3}.alert-yellow-800 .alert-link{color:#312502}.alert-yellow-900{color:#1f1701;background-color:#d6d4cc;border-color:#c2beb3}.alert-yellow-900 .alert-link{color:#191201}.alert-green-100{color:#545c58;background-color:#f6faf8;border-color:#f1f8f5}.alert-green-100 .alert-link{color:#434a46}.alert-green-200{color:#41534b;background-color:#edf5f1;border-color:#e3f1eb}.alert-green-200 .alert-link{color:#34423c}.alert-green-300{color:#466e5b;background-color:#e3f1ea;border-color:#d6e9e0}.alert-green-300 .alert-link{color:#385849}.alert-green-400{color:#2b5f47;background-color:#daece4;border-color:#c8e2d6}.alert-green-400 .alert-link{color:#224c39}.alert-green-500{color:#0f5132;background-color:#d1e7dd;border-color:#badbcc}.alert-green-500 .alert-link{color:#0c4128}.alert-green-600{color:#0c4128;background-color:#d0e2d9;border-color:#b9d3c7}.alert-green-600 .alert-link{color:#0a3420}.alert-green-700{color:#09311e;background-color:#cfdcd6;border-color:#b7cbc2}.alert-green-700 .alert-link{color:#072718}.alert-green-800{color:#062014;background-color:#ced7d3;border-color:#b6c3bd}.alert-green-800 .alert-link{color:#051a10}.alert-green-900{color:#03100a;background-color:#cdd1cf;border-color:#b4bbb8}.alert-green-900 .alert-link{color:#020d08}.alert-blue-100{color:#535a66;background-color:#f5f9ff;border-color:#f1f6ff}.alert-blue-100 .alert-link{color:#424852}.alert-blue-200{color:#3f4f66;background-color:#ecf3ff;border-color:#e2eeff}.alert-blue-200 .alert-link{color:#323f52}.alert-blue-300{color:#426598;background-color:#e2eeff;border-color:#d4e5ff}.alert-blue-300 .alert-link{color:#35517a}.alert-blue-400{color:#255398;background-color:#d8e8ff;border-color:#c5dcfe}.alert-blue-400 .alert-link{color:#1e427a}.alert-blue-500{color:#084298;background-color:#cfe2ff;border-color:#b6d4fe}.alert-blue-500 .alert-link{color:#06357a}.alert-blue-600{color:#063579;background-color:#cedef4;border-color:#b6cdef}.alert-blue-600 .alert-link{color:#052a61}.alert-blue-700{color:#05285b;background-color:#ced9ea;border-color:#b5c6e0}.alert-blue-700 .alert-link{color:#042049}.alert-blue-800{color:#031a3d;background-color:#cdd5e0;border-color:#b4c0d1}.alert-blue-800 .alert-link{color:#021531}.alert-blue-900{color:#020d1f;background-color:#cdd0d6;border-color:#b3b9c2}.alert-blue-900 .alert-link{color:#020a19}.alert-cyan-100{color:#536265;background-color:#f5fdfe;border-color:#f1fcfe}.alert-cyan-100 .alert-link{color:#424e51}.alert-cyan-200{color:#3f5e64;background-color:#ecfbfe;border-color:#e2f9fd}.alert-cyan-200 .alert-link{color:#324b50}.alert-cyan-300{color:#2c5962;background-color:#e2f9fd;border-color:#d4f5fc}.alert-cyan-300 .alert-link{color:#23474e}.alert-cyan-400{color:#185561;background-color:#d8f7fd;border-color:#c5f2fb}.alert-cyan-400 .alert-link{color:#13444e}.alert-cyan-500{color:#055160;background-color:#cff4fc;border-color:#b6effb}.alert-cyan-500 .alert-link{color:#04414d}.alert-cyan-600{color:#066173;background-color:#ceecf2;border-color:#b6e3ec}.alert-cyan-600 .alert-link{color:#054e5c}.alert-cyan-700{color:#054956;background-color:#cee4e9;border-color:#b5d7de}.alert-cyan-700 .alert-link{color:#043a45}.alert-cyan-800{color:#03313a;background-color:#cddcdf;border-color:#b4cbcf}.alert-cyan-800 .alert-link{color:#02272e}.alert-cyan-900{color:#02181d;background-color:#cdd4d6;border-color:#b3bfc1}.alert-cyan-900 .alert-link{color:#021317}.alert-indigo-100{color:#5a5365;background-color:#f9f5fe;border-color:#f6f1fe}.alert-indigo-100 .alert-link{color:#484251}.alert-indigo-200{color:#745f96;background-color:#f3ecfe;border-color:#ede2fe}.alert-indigo-200 .alert-link{color:#5d4c78}.alert-indigo-300{color:#624394;background-color:#ede2fd;border-color:#e3d4fd}.alert-indigo-300 .alert-link{color:#4e3676}.alert-indigo-400{color:#502693;background-color:#e7d9fd;border-color:#dac6fc}.alert-indigo-400 .alert-link{color:#401e76}.alert-indigo-500{color:#3d0a91;background-color:#e0cffc;border-color:#d1b7fb}.alert-indigo-500 .alert-link{color:#310874}.alert-indigo-600{color:#310874;background-color:#dccff3;border-color:#cbb6ed}.alert-indigo-600 .alert-link{color:#27065d}.alert-indigo-700{color:#250657;background-color:#d8cee9;border-color:#c5b6de}.alert-indigo-700 .alert-link{color:#1e0546}.alert-indigo-800{color:#19043a;background-color:#d4cddf;border-color:#bfb4d0}.alert-indigo-800 .alert-link{color:#14032e}.alert-indigo-900{color:#0c021d;background-color:#d0cdd6;border-color:#b9b3c1}.alert-indigo-900 .alert-link{color:#0a0217}.alert-purple-100{color:#5a5761;background-color:#f9f7fd;border-color:#f6f4fb}.alert-purple-100 .alert-link{color:#48464e}.alert-purple-200{color:#4f485c;background-color:#f3f0fa;border-color:#eee8f8}.alert-purple-200 .alert-link{color:#3f3a4a}.alert-purple-300{color:#655583;background-color:#eee8f8;border-color:#e5ddf4}.alert-purple-300 .alert-link{color:#514469}.alert-purple-400{color:#543e7b;background-color:#e8e1f5;border-color:#ddd2f0}.alert-purple-400 .alert-link{color:#433262}.alert-purple-500{color:#432874;background-color:#e2d9f3;border-color:#d4c6ec}.alert-purple-500 .alert-link{color:#36205d}.alert-purple-600{color:#35205c;background-color:#ded7eb;border-color:#cdc2e1}.alert-purple-600 .alert-link{color:#2a1a4a}.alert-purple-700{color:#281846;background-color:#d9d4e3;border-color:#c7bfd5}.alert-purple-700 .alert-link{color:#201338}.alert-purple-800{color:#1a102e;background-color:#d5d1db;border-color:#c0baca}.alert-purple-800 .alert-link{color:#150d25}.alert-purple-900{color:#0d0817;background-color:#d0cfd4;border-color:#b9b6be}.alert-purple-900 .alert-link{color:#0a0612}.alert-pink-100{color:#63565c;background-color:#fdf7fa;border-color:#fdf3f8}.alert-pink-100 .alert-link{color:#4f454a}.alert-pink-200{color:#604552;background-color:#fceff5;border-color:#fae6f0}.alert-pink-200 .alert-link{color:#4d3742}.alert-pink-300{color:#8a506d;background-color:#fae7f0;border-color:#f8dae9}.alert-pink-300 .alert-link{color:#6e4057}.alert-pink-400{color:#85375e;background-color:#f8deeb;border-color:#f5cee2}.alert-pink-400 .alert-link{color:#6a2c4b}.alert-pink-500{color:#801f4f;background-color:#f7d6e6;border-color:#f3c2da}.alert-pink-500 .alert-link{color:#66193f}.alert-pink-600{color:#671940;background-color:#eed4e1;border-color:#e6bfd2}.alert-pink-600 .alert-link{color:#521433}.alert-pink-700{color:#4d132f;background-color:#e6d2dc;border-color:#d9bcca}.alert-pink-700 .alert-link{color:#3e0f26}.alert-pink-800{color:#340c20;background-color:#ddd0d7;border-color:#ccb9c2}.alert-pink-800 .alert-link{color:#2a0a1a}.alert-pink-900{color:#1a0610;background-color:#d5ced1;border-color:#bfb6ba}.alert-pink-900 .alert-link{color:#15050d}@keyframes progress-bar-stripes{0%{background-position-x:1rem}}.progress{display:flex;height:1rem;overflow:hidden;font-size:.75rem;background-color:#e9ecef;border-radius:.375rem}.progress-bar{display:flex;flex-direction:column;justify-content:center;overflow:hidden;color:#fff;text-align:center;white-space:nowrap;background-color:#0d6efd;transition:width .6s ease}@media (prefers-reduced-motion: reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:1rem 1rem}.progress-bar-animated{animation:1s linear infinite progress-bar-stripes}@media (prefers-reduced-motion: reduce){.progress-bar-animated{animation:none}}.list-group{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:.375rem}.list-group-numbered{list-style-type:none;counter-reset:section}.list-group-numbered>li:before{content:counters(section,".") ". ";counter-increment:section}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:hover,.list-group-item-action:focus{z-index:1;color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.5rem 1rem;color:#495057;text-decoration:none;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:#adb5bd;pointer-events:none;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#0d6efd;border-color:#0d6efd}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:-1px;border-top-width:1px}.list-group-horizontal{flex-direction:row}.list-group-horizontal>.list-group-item:first-child{border-bottom-left-radius:.375rem;border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child{border-top-right-radius:.375rem;border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}@media (min-width: 576px){.list-group-horizontal-sm{flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child{border-bottom-left-radius:.375rem;border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child{border-top-right-radius:.375rem;border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width: 768px){.list-group-horizontal-md{flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child{border-bottom-left-radius:.375rem;border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child{border-top-right-radius:.375rem;border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width: 992px){.list-group-horizontal-lg{flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child{border-bottom-left-radius:.375rem;border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child{border-top-right-radius:.375rem;border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width: 1200px){.list-group-horizontal-xl{flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child{border-bottom-left-radius:.375rem;border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child{border-top-right-radius:.375rem;border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width: 1400px){.list-group-horizontal-xxl{flex-direction:row}.list-group-horizontal-xxl>.list-group-item:first-child{border-bottom-left-radius:.375rem;border-top-right-radius:0}.list-group-horizontal-xxl>.list-group-item:last-child{border-top-right-radius:.375rem;border-bottom-left-radius:0}.list-group-horizontal-xxl>.list-group-item.active{margin-top:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 1px}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{color:#1f496e;background-color:#d6e4f1}.list-group-item-primary.list-group-item-action:hover,.list-group-item-primary.list-group-item-action:focus{color:#1f496e;background-color:#c1cdd9}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#1f496e;border-color:#1f496e}.list-group-item-secondary{color:#41464b;background-color:#e2e3e5}.list-group-item-secondary.list-group-item-action:hover,.list-group-item-secondary.list-group-item-action:focus{color:#41464b;background-color:#cbccce}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#41464b;border-color:#41464b}.list-group-item-success{color:#0f5132;background-color:#d1e7dd}.list-group-item-success.list-group-item-action:hover,.list-group-item-success.list-group-item-action:focus{color:#0f5132;background-color:#bcd0c7}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#0f5132;border-color:#0f5132}.list-group-item-info{color:#055160;background-color:#cff4fc}.list-group-item-info.list-group-item-action:hover,.list-group-item-info.list-group-item-action:focus{color:#055160;background-color:#badce3}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#055160;border-color:#055160}.list-group-item-warning{color:#664d03;background-color:#fff3cd}.list-group-item-warning.list-group-item-action:hover,.list-group-item-warning.list-group-item-action:focus{color:#664d03;background-color:#e6dbb9}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#664d03;border-color:#664d03}.list-group-item-danger{color:#842029;background-color:#f8d7da}.list-group-item-danger.list-group-item-action:hover,.list-group-item-danger.list-group-item-action:focus{color:#842029;background-color:#dfc2c4}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#842029;border-color:#842029}.list-group-item-light{color:#636464;background-color:#fefefe}.list-group-item-light.list-group-item-action:hover,.list-group-item-light.list-group-item-action:focus{color:#636464;background-color:#e5e5e5}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#636464;border-color:#636464}.list-group-item-dark{color:#141619;background-color:#d3d3d4}.list-group-item-dark.list-group-item-action:hover,.list-group-item-dark.list-group-item-action:focus{color:#141619;background-color:#bebebf}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#141619;border-color:#141619}.list-group-item-red{color:#842029;background-color:#f8d7da}.list-group-item-red.list-group-item-action:hover,.list-group-item-red.list-group-item-action:focus{color:#842029;background-color:#dfc2c4}.list-group-item-red.list-group-item-action.active{color:#fff;background-color:#842029;border-color:#842029}.list-group-item-yellow{color:#664d03;background-color:#fff3cd}.list-group-item-yellow.list-group-item-action:hover,.list-group-item-yellow.list-group-item-action:focus{color:#664d03;background-color:#e6dbb9}.list-group-item-yellow.list-group-item-action.active{color:#fff;background-color:#664d03;border-color:#664d03}.list-group-item-green{color:#0f5132;background-color:#d1e7dd}.list-group-item-green.list-group-item-action:hover,.list-group-item-green.list-group-item-action:focus{color:#0f5132;background-color:#bcd0c7}.list-group-item-green.list-group-item-action.active{color:#fff;background-color:#0f5132;border-color:#0f5132}.list-group-item-blue{color:#084298;background-color:#cfe2ff}.list-group-item-blue.list-group-item-action:hover,.list-group-item-blue.list-group-item-action:focus{color:#084298;background-color:#bacbe6}.list-group-item-blue.list-group-item-action.active{color:#fff;background-color:#084298;border-color:#084298}.list-group-item-cyan{color:#055160;background-color:#cff4fc}.list-group-item-cyan.list-group-item-action:hover,.list-group-item-cyan.list-group-item-action:focus{color:#055160;background-color:#badce3}.list-group-item-cyan.list-group-item-action.active{color:#fff;background-color:#055160;border-color:#055160}.list-group-item-indigo{color:#3d0a91;background-color:#e0cffc}.list-group-item-indigo.list-group-item-action:hover,.list-group-item-indigo.list-group-item-action:focus{color:#3d0a91;background-color:#cabae3}.list-group-item-indigo.list-group-item-action.active{color:#fff;background-color:#3d0a91;border-color:#3d0a91}.list-group-item-purple{color:#432874;background-color:#e2d9f3}.list-group-item-purple.list-group-item-action:hover,.list-group-item-purple.list-group-item-action:focus{color:#432874;background-color:#cbc3db}.list-group-item-purple.list-group-item-action.active{color:#fff;background-color:#432874;border-color:#432874}.list-group-item-pink{color:#801f4f;background-color:#f7d6e6}.list-group-item-pink.list-group-item-action:hover,.list-group-item-pink.list-group-item-action:focus{color:#801f4f;background-color:#dec1cf}.list-group-item-pink.list-group-item-action.active{color:#fff;background-color:#801f4f;border-color:#801f4f}.list-group-item-darker{color:#101314;background-color:#d1d2d3}.list-group-item-darker.list-group-item-action:hover,.list-group-item-darker.list-group-item-action:focus{color:#101314;background-color:#bcbdbe}.list-group-item-darker.list-group-item-action.active{color:#fff;background-color:#101314;border-color:#101314}.list-group-item-darkest{color:#0e1011;background-color:#d1d1d2}.list-group-item-darkest.list-group-item-action:hover,.list-group-item-darkest.list-group-item-action:focus{color:#0e1011;background-color:#bcbcbd}.list-group-item-darkest.list-group-item-action.active{color:#fff;background-color:#0e1011;border-color:#0e1011}.list-group-item-gray{color:#525557;background-color:#f5f6f8}.list-group-item-gray.list-group-item-action:hover,.list-group-item-gray.list-group-item-action:focus{color:#525557;background-color:#dddddf}.list-group-item-gray.list-group-item-action.active{color:#fff;background-color:#525557;border-color:#525557}.list-group-item-gray-100{color:#636464;background-color:#fefefe}.list-group-item-gray-100.list-group-item-action:hover,.list-group-item-gray-100.list-group-item-action:focus{color:#636464;background-color:#e5e5e5}.list-group-item-gray-100.list-group-item-action.active{color:#fff;background-color:#636464;border-color:#636464}.list-group-item-gray-200{color:#5d5e60;background-color:#fbfbfc}.list-group-item-gray-200.list-group-item-action:hover,.list-group-item-gray-200.list-group-item-action:focus{color:#5d5e60;background-color:#e2e2e3}.list-group-item-gray-200.list-group-item-action.active{color:#fff;background-color:#5d5e60;border-color:#5d5e60}.list-group-item-gray-300{color:#595a5c;background-color:#f8f9fa}.list-group-item-gray-300.list-group-item-action:hover,.list-group-item-gray-300.list-group-item-action:focus{color:#595a5c;background-color:#dfe0e1}.list-group-item-gray-300.list-group-item-action.active{color:#fff;background-color:#595a5c;border-color:#595a5c}.list-group-item-gray-400{color:#525557;background-color:#f5f6f8}.list-group-item-gray-400.list-group-item-action:hover,.list-group-item-gray-400.list-group-item-action:focus{color:#525557;background-color:#dddddf}.list-group-item-gray-400.list-group-item-action.active{color:#fff;background-color:#525557;border-color:#525557}.list-group-item-gray-500{color:#686d71;background-color:#eff0f2}.list-group-item-gray-500.list-group-item-action:hover,.list-group-item-gray-500.list-group-item-action:focus{color:#686d71;background-color:#d7d8da}.list-group-item-gray-500.list-group-item-action.active{color:#fff;background-color:#686d71;border-color:#686d71}.list-group-item-gray-600{color:#41464b;background-color:#e2e3e5}.list-group-item-gray-600.list-group-item-action:hover,.list-group-item-gray-600.list-group-item-action:focus{color:#41464b;background-color:#cbccce}.list-group-item-gray-600.list-group-item-action.active{color:#fff;background-color:#41464b;border-color:#41464b}.list-group-item-gray-700{color:#2c3034;background-color:#dbdcdd}.list-group-item-gray-700.list-group-item-action:hover,.list-group-item-gray-700.list-group-item-action:focus{color:#2c3034;background-color:#c5c6c7}.list-group-item-gray-700.list-group-item-action.active{color:#fff;background-color:#2c3034;border-color:#2c3034}.list-group-item-gray-800{color:#1f2326;background-color:#d6d8d9}.list-group-item-gray-800.list-group-item-action:hover,.list-group-item-gray-800.list-group-item-action:focus{color:#1f2326;background-color:#c1c2c3}.list-group-item-gray-800.list-group-item-action.active{color:#fff;background-color:#1f2326;border-color:#1f2326}.list-group-item-gray-900{color:#141619;background-color:#d3d3d4}.list-group-item-gray-900.list-group-item-action:hover,.list-group-item-gray-900.list-group-item-action:focus{color:#141619;background-color:#bebebf}.list-group-item-gray-900.list-group-item-action.active{color:#fff;background-color:#141619;border-color:#141619}.list-group-item-red-100{color:#635657;background-color:#fef7f8}.list-group-item-red-100.list-group-item-action:hover,.list-group-item-red-100.list-group-item-action:focus{color:#635657;background-color:#e5dedf}.list-group-item-red-100.list-group-item-action.active{color:#fff;background-color:#635657;border-color:#635657}.list-group-item-red-200{color:#604648;background-color:#fceff0}.list-group-item-red-200.list-group-item-action:hover,.list-group-item-red-200.list-group-item-action:focus{color:#604648;background-color:#e3d7d8}.list-group-item-red-200.list-group-item-action.active{color:#fff;background-color:#604648;border-color:#604648}.list-group-item-red-300{color:#8c5056;background-color:#fbe7e9}.list-group-item-red-300.list-group-item-action:hover,.list-group-item-red-300.list-group-item-action:focus{color:#8c5056;background-color:#e2d0d2}.list-group-item-red-300.list-group-item-action.active{color:#fff;background-color:#8c5056;border-color:#8c5056}.list-group-item-red-400{color:#883840;background-color:#f9dfe1}.list-group-item-red-400.list-group-item-action:hover,.list-group-item-red-400.list-group-item-action:focus{color:#883840;background-color:#e0c9cb}.list-group-item-red-400.list-group-item-action.active{color:#fff;background-color:#883840;border-color:#883840}.list-group-item-red-500{color:#842029;background-color:#f8d7da}.list-group-item-red-500.list-group-item-action:hover,.list-group-item-red-500.list-group-item-action:focus{color:#842029;background-color:#dfc2c4}.list-group-item-red-500.list-group-item-action.active{color:#fff;background-color:#842029;border-color:#842029}.list-group-item-red-600{color:#6a1921;background-color:#efd4d7}.list-group-item-red-600.list-group-item-action:hover,.list-group-item-red-600.list-group-item-action:focus{color:#6a1921;background-color:#d7bfc2}.list-group-item-red-600.list-group-item-action.active{color:#fff;background-color:#6a1921;border-color:#6a1921}.list-group-item-red-700{color:#4f1319;background-color:#e6d2d4}.list-group-item-red-700.list-group-item-action:hover,.list-group-item-red-700.list-group-item-action:focus{color:#4f1319;background-color:#cfbdbf}.list-group-item-red-700.list-group-item-action.active{color:#fff;background-color:#4f1319;border-color:#4f1319}.list-group-item-red-800{color:#350d11;background-color:#ded0d2}.list-group-item-red-800.list-group-item-action:hover,.list-group-item-red-800.list-group-item-action:focus{color:#350d11;background-color:#c8bbbd}.list-group-item-red-800.list-group-item-action.active{color:#fff;background-color:#350d11;border-color:#350d11}.list-group-item-red-900{color:#1a0708;background-color:#d5cecf}.list-group-item-red-900.list-group-item-action:hover,.list-group-item-red-900.list-group-item-action:focus{color:#1a0708;background-color:#c0b9ba}.list-group-item-red-900.list-group-item-action.active{color:#fff;background-color:#1a0708;border-color:#1a0708}.list-group-item-yellow-100{color:#666152;background-color:#fffdf5}.list-group-item-yellow-100.list-group-item-action:hover,.list-group-item-yellow-100.list-group-item-action:focus{color:#666152;background-color:#e6e4dd}.list-group-item-yellow-100.list-group-item-action.active{color:#fff;background-color:#666152;border-color:#666152}.list-group-item-yellow-200{color:#665c3e;background-color:#fffaeb}.list-group-item-yellow-200.list-group-item-action:hover,.list-group-item-yellow-200.list-group-item-action:focus{color:#665c3e;background-color:#e6e1d4}.list-group-item-yellow-200.list-group-item-action.active{color:#fff;background-color:#665c3e;border-color:#665c3e}.list-group-item-yellow-300{color:#66572a;background-color:#fff8e1}.list-group-item-yellow-300.list-group-item-action:hover,.list-group-item-yellow-300.list-group-item-action:focus{color:#66572a;background-color:#e6dfcb}.list-group-item-yellow-300.list-group-item-action.active{color:#fff;background-color:#66572a;border-color:#66572a}.list-group-item-yellow-400{color:#665217;background-color:#fff5d7}.list-group-item-yellow-400.list-group-item-action:hover,.list-group-item-yellow-400.list-group-item-action:focus{color:#665217;background-color:#e6ddc2}.list-group-item-yellow-400.list-group-item-action.active{color:#fff;background-color:#665217;border-color:#665217}.list-group-item-yellow-500{color:#664d03;background-color:#fff3cd}.list-group-item-yellow-500.list-group-item-action:hover,.list-group-item-yellow-500.list-group-item-action:focus{color:#664d03;background-color:#e6dbb9}.list-group-item-yellow-500.list-group-item-action.active{color:#fff;background-color:#664d03;border-color:#664d03}.list-group-item-yellow-600{color:#7a5c04;background-color:#f5ebcd}.list-group-item-yellow-600.list-group-item-action:hover,.list-group-item-yellow-600.list-group-item-action:focus{color:#7a5c04;background-color:#ddd4b9}.list-group-item-yellow-600.list-group-item-action.active{color:#fff;background-color:#7a5c04;border-color:#7a5c04}.list-group-item-yellow-700{color:#5c4602;background-color:#ebe3cd}.list-group-item-yellow-700.list-group-item-action:hover,.list-group-item-yellow-700.list-group-item-action:focus{color:#5c4602;background-color:#d4ccb9}.list-group-item-yellow-700.list-group-item-action.active{color:#fff;background-color:#5c4602;border-color:#5c4602}.list-group-item-yellow-800{color:#3d2e02;background-color:#e0dbcd}.list-group-item-yellow-800.list-group-item-action:hover,.list-group-item-yellow-800.list-group-item-action:focus{color:#3d2e02;background-color:#cac5b9}.list-group-item-yellow-800.list-group-item-action.active{color:#fff;background-color:#3d2e02;border-color:#3d2e02}.list-group-item-yellow-900{color:#1f1701;background-color:#d6d4cc}.list-group-item-yellow-900.list-group-item-action:hover,.list-group-item-yellow-900.list-group-item-action:focus{color:#1f1701;background-color:#c1bfb8}.list-group-item-yellow-900.list-group-item-action.active{color:#fff;background-color:#1f1701;border-color:#1f1701}.list-group-item-green-100{color:#545c58;background-color:#f6faf8}.list-group-item-green-100.list-group-item-action:hover,.list-group-item-green-100.list-group-item-action:focus{color:#545c58;background-color:#dde1df}.list-group-item-green-100.list-group-item-action.active{color:#fff;background-color:#545c58;border-color:#545c58}.list-group-item-green-200{color:#41534b;background-color:#edf5f1}.list-group-item-green-200.list-group-item-action:hover,.list-group-item-green-200.list-group-item-action:focus{color:#41534b;background-color:#d5ddd9}.list-group-item-green-200.list-group-item-action.active{color:#fff;background-color:#41534b;border-color:#41534b}.list-group-item-green-300{color:#466e5b;background-color:#e3f1ea}.list-group-item-green-300.list-group-item-action:hover,.list-group-item-green-300.list-group-item-action:focus{color:#466e5b;background-color:#ccd9d3}.list-group-item-green-300.list-group-item-action.active{color:#fff;background-color:#466e5b;border-color:#466e5b}.list-group-item-green-400{color:#2b5f47;background-color:#daece4}.list-group-item-green-400.list-group-item-action:hover,.list-group-item-green-400.list-group-item-action:focus{color:#2b5f47;background-color:#c4d4cd}.list-group-item-green-400.list-group-item-action.active{color:#fff;background-color:#2b5f47;border-color:#2b5f47}.list-group-item-green-500{color:#0f5132;background-color:#d1e7dd}.list-group-item-green-500.list-group-item-action:hover,.list-group-item-green-500.list-group-item-action:focus{color:#0f5132;background-color:#bcd0c7}.list-group-item-green-500.list-group-item-action.active{color:#fff;background-color:#0f5132;border-color:#0f5132}.list-group-item-green-600{color:#0c4128;background-color:#d0e2d9}.list-group-item-green-600.list-group-item-action:hover,.list-group-item-green-600.list-group-item-action:focus{color:#0c4128;background-color:#bbcbc3}.list-group-item-green-600.list-group-item-action.active{color:#fff;background-color:#0c4128;border-color:#0c4128}.list-group-item-green-700{color:#09311e;background-color:#cfdcd6}.list-group-item-green-700.list-group-item-action:hover,.list-group-item-green-700.list-group-item-action:focus{color:#09311e;background-color:#bac6c1}.list-group-item-green-700.list-group-item-action.active{color:#fff;background-color:#09311e;border-color:#09311e}.list-group-item-green-800{color:#062014;background-color:#ced7d3}.list-group-item-green-800.list-group-item-action:hover,.list-group-item-green-800.list-group-item-action:focus{color:#062014;background-color:#b9c2be}.list-group-item-green-800.list-group-item-action.active{color:#fff;background-color:#062014;border-color:#062014}.list-group-item-green-900{color:#03100a;background-color:#cdd1cf}.list-group-item-green-900.list-group-item-action:hover,.list-group-item-green-900.list-group-item-action:focus{color:#03100a;background-color:#b9bcba}.list-group-item-green-900.list-group-item-action.active{color:#fff;background-color:#03100a;border-color:#03100a}.list-group-item-blue-100{color:#535a66;background-color:#f5f9ff}.list-group-item-blue-100.list-group-item-action:hover,.list-group-item-blue-100.list-group-item-action:focus{color:#535a66;background-color:#dde0e6}.list-group-item-blue-100.list-group-item-action.active{color:#fff;background-color:#535a66;border-color:#535a66}.list-group-item-blue-200{color:#3f4f66;background-color:#ecf3ff}.list-group-item-blue-200.list-group-item-action:hover,.list-group-item-blue-200.list-group-item-action:focus{color:#3f4f66;background-color:#d4dbe6}.list-group-item-blue-200.list-group-item-action.active{color:#fff;background-color:#3f4f66;border-color:#3f4f66}.list-group-item-blue-300{color:#426598;background-color:#e2eeff}.list-group-item-blue-300.list-group-item-action:hover,.list-group-item-blue-300.list-group-item-action:focus{color:#426598;background-color:#cbd6e6}.list-group-item-blue-300.list-group-item-action.active{color:#fff;background-color:#426598;border-color:#426598}.list-group-item-blue-400{color:#255398;background-color:#d8e8ff}.list-group-item-blue-400.list-group-item-action:hover,.list-group-item-blue-400.list-group-item-action:focus{color:#255398;background-color:#c2d1e6}.list-group-item-blue-400.list-group-item-action.active{color:#fff;background-color:#255398;border-color:#255398}.list-group-item-blue-500{color:#084298;background-color:#cfe2ff}.list-group-item-blue-500.list-group-item-action:hover,.list-group-item-blue-500.list-group-item-action:focus{color:#084298;background-color:#bacbe6}.list-group-item-blue-500.list-group-item-action.active{color:#fff;background-color:#084298;border-color:#084298}.list-group-item-blue-600{color:#063579;background-color:#cedef4}.list-group-item-blue-600.list-group-item-action:hover,.list-group-item-blue-600.list-group-item-action:focus{color:#063579;background-color:#b9c8dc}.list-group-item-blue-600.list-group-item-action.active{color:#fff;background-color:#063579;border-color:#063579}.list-group-item-blue-700{color:#05285b;background-color:#ced9ea}.list-group-item-blue-700.list-group-item-action:hover,.list-group-item-blue-700.list-group-item-action:focus{color:#05285b;background-color:#b9c3d3}.list-group-item-blue-700.list-group-item-action.active{color:#fff;background-color:#05285b;border-color:#05285b}.list-group-item-blue-800{color:#031a3d;background-color:#cdd5e0}.list-group-item-blue-800.list-group-item-action:hover,.list-group-item-blue-800.list-group-item-action:focus{color:#031a3d;background-color:#b9c0ca}.list-group-item-blue-800.list-group-item-action.active{color:#fff;background-color:#031a3d;border-color:#031a3d}.list-group-item-blue-900{color:#020d1f;background-color:#cdd0d6}.list-group-item-blue-900.list-group-item-action:hover,.list-group-item-blue-900.list-group-item-action:focus{color:#020d1f;background-color:#b9bbc1}.list-group-item-blue-900.list-group-item-action.active{color:#fff;background-color:#020d1f;border-color:#020d1f}.list-group-item-cyan-100{color:#536265;background-color:#f5fdfe}.list-group-item-cyan-100.list-group-item-action:hover,.list-group-item-cyan-100.list-group-item-action:focus{color:#536265;background-color:#dde4e5}.list-group-item-cyan-100.list-group-item-action.active{color:#fff;background-color:#536265;border-color:#536265}.list-group-item-cyan-200{color:#3f5e64;background-color:#ecfbfe}.list-group-item-cyan-200.list-group-item-action:hover,.list-group-item-cyan-200.list-group-item-action:focus{color:#3f5e64;background-color:#d4e2e5}.list-group-item-cyan-200.list-group-item-action.active{color:#fff;background-color:#3f5e64;border-color:#3f5e64}.list-group-item-cyan-300{color:#2c5962;background-color:#e2f9fd}.list-group-item-cyan-300.list-group-item-action:hover,.list-group-item-cyan-300.list-group-item-action:focus{color:#2c5962;background-color:#cbe0e4}.list-group-item-cyan-300.list-group-item-action.active{color:#fff;background-color:#2c5962;border-color:#2c5962}.list-group-item-cyan-400{color:#185561;background-color:#d8f7fd}.list-group-item-cyan-400.list-group-item-action:hover,.list-group-item-cyan-400.list-group-item-action:focus{color:#185561;background-color:#c2dee4}.list-group-item-cyan-400.list-group-item-action.active{color:#fff;background-color:#185561;border-color:#185561}.list-group-item-cyan-500{color:#055160;background-color:#cff4fc}.list-group-item-cyan-500.list-group-item-action:hover,.list-group-item-cyan-500.list-group-item-action:focus{color:#055160;background-color:#badce3}.list-group-item-cyan-500.list-group-item-action.active{color:#fff;background-color:#055160;border-color:#055160}.list-group-item-cyan-600{color:#066173;background-color:#ceecf2}.list-group-item-cyan-600.list-group-item-action:hover,.list-group-item-cyan-600.list-group-item-action:focus{color:#066173;background-color:#b9d4da}.list-group-item-cyan-600.list-group-item-action.active{color:#fff;background-color:#066173;border-color:#066173}.list-group-item-cyan-700{color:#054956;background-color:#cee4e9}.list-group-item-cyan-700.list-group-item-action:hover,.list-group-item-cyan-700.list-group-item-action:focus{color:#054956;background-color:#b9cdd2}.list-group-item-cyan-700.list-group-item-action.active{color:#fff;background-color:#054956;border-color:#054956}.list-group-item-cyan-800{color:#03313a;background-color:#cddcdf}.list-group-item-cyan-800.list-group-item-action:hover,.list-group-item-cyan-800.list-group-item-action:focus{color:#03313a;background-color:#b9c6c9}.list-group-item-cyan-800.list-group-item-action.active{color:#fff;background-color:#03313a;border-color:#03313a}.list-group-item-cyan-900{color:#02181d;background-color:#cdd4d6}.list-group-item-cyan-900.list-group-item-action:hover,.list-group-item-cyan-900.list-group-item-action:focus{color:#02181d;background-color:#b9bfc1}.list-group-item-cyan-900.list-group-item-action.active{color:#fff;background-color:#02181d;border-color:#02181d}.list-group-item-indigo-100{color:#5a5365;background-color:#f9f5fe}.list-group-item-indigo-100.list-group-item-action:hover,.list-group-item-indigo-100.list-group-item-action:focus{color:#5a5365;background-color:#e0dde5}.list-group-item-indigo-100.list-group-item-action.active{color:#fff;background-color:#5a5365;border-color:#5a5365}.list-group-item-indigo-200{color:#745f96;background-color:#f3ecfe}.list-group-item-indigo-200.list-group-item-action:hover,.list-group-item-indigo-200.list-group-item-action:focus{color:#745f96;background-color:#dbd4e5}.list-group-item-indigo-200.list-group-item-action.active{color:#fff;background-color:#745f96;border-color:#745f96}.list-group-item-indigo-300{color:#624394;background-color:#ede2fd}.list-group-item-indigo-300.list-group-item-action:hover,.list-group-item-indigo-300.list-group-item-action:focus{color:#624394;background-color:#d5cbe4}.list-group-item-indigo-300.list-group-item-action.active{color:#fff;background-color:#624394;border-color:#624394}.list-group-item-indigo-400{color:#502693;background-color:#e7d9fd}.list-group-item-indigo-400.list-group-item-action:hover,.list-group-item-indigo-400.list-group-item-action:focus{color:#502693;background-color:#d0c3e4}.list-group-item-indigo-400.list-group-item-action.active{color:#fff;background-color:#502693;border-color:#502693}.list-group-item-indigo-500{color:#3d0a91;background-color:#e0cffc}.list-group-item-indigo-500.list-group-item-action:hover,.list-group-item-indigo-500.list-group-item-action:focus{color:#3d0a91;background-color:#cabae3}.list-group-item-indigo-500.list-group-item-action.active{color:#fff;background-color:#3d0a91;border-color:#3d0a91}.list-group-item-indigo-600{color:#310874;background-color:#dccff3}.list-group-item-indigo-600.list-group-item-action:hover,.list-group-item-indigo-600.list-group-item-action:focus{color:#310874;background-color:#c6badb}.list-group-item-indigo-600.list-group-item-action.active{color:#fff;background-color:#310874;border-color:#310874}.list-group-item-indigo-700{color:#250657;background-color:#d8cee9}.list-group-item-indigo-700.list-group-item-action:hover,.list-group-item-indigo-700.list-group-item-action:focus{color:#250657;background-color:#c2b9d2}.list-group-item-indigo-700.list-group-item-action.active{color:#fff;background-color:#250657;border-color:#250657}.list-group-item-indigo-800{color:#19043a;background-color:#d4cddf}.list-group-item-indigo-800.list-group-item-action:hover,.list-group-item-indigo-800.list-group-item-action:focus{color:#19043a;background-color:#bfb9c9}.list-group-item-indigo-800.list-group-item-action.active{color:#fff;background-color:#19043a;border-color:#19043a}.list-group-item-indigo-900{color:#0c021d;background-color:#d0cdd6}.list-group-item-indigo-900.list-group-item-action:hover,.list-group-item-indigo-900.list-group-item-action:focus{color:#0c021d;background-color:#bbb9c1}.list-group-item-indigo-900.list-group-item-action.active{color:#fff;background-color:#0c021d;border-color:#0c021d}.list-group-item-purple-100{color:#5a5761;background-color:#f9f7fd}.list-group-item-purple-100.list-group-item-action:hover,.list-group-item-purple-100.list-group-item-action:focus{color:#5a5761;background-color:#e0dee4}.list-group-item-purple-100.list-group-item-action.active{color:#fff;background-color:#5a5761;border-color:#5a5761}.list-group-item-purple-200{color:#4f485c;background-color:#f3f0fa}.list-group-item-purple-200.list-group-item-action:hover,.list-group-item-purple-200.list-group-item-action:focus{color:#4f485c;background-color:#dbd8e1}.list-group-item-purple-200.list-group-item-action.active{color:#fff;background-color:#4f485c;border-color:#4f485c}.list-group-item-purple-300{color:#655583;background-color:#eee8f8}.list-group-item-purple-300.list-group-item-action:hover,.list-group-item-purple-300.list-group-item-action:focus{color:#655583;background-color:#d6d1df}.list-group-item-purple-300.list-group-item-action.active{color:#fff;background-color:#655583;border-color:#655583}.list-group-item-purple-400{color:#543e7b;background-color:#e8e1f5}.list-group-item-purple-400.list-group-item-action:hover,.list-group-item-purple-400.list-group-item-action:focus{color:#543e7b;background-color:#d1cbdd}.list-group-item-purple-400.list-group-item-action.active{color:#fff;background-color:#543e7b;border-color:#543e7b}.list-group-item-purple-500{color:#432874;background-color:#e2d9f3}.list-group-item-purple-500.list-group-item-action:hover,.list-group-item-purple-500.list-group-item-action:focus{color:#432874;background-color:#cbc3db}.list-group-item-purple-500.list-group-item-action.active{color:#fff;background-color:#432874;border-color:#432874}.list-group-item-purple-600{color:#35205c;background-color:#ded7eb}.list-group-item-purple-600.list-group-item-action:hover,.list-group-item-purple-600.list-group-item-action:focus{color:#35205c;background-color:#c8c2d4}.list-group-item-purple-600.list-group-item-action.active{color:#fff;background-color:#35205c;border-color:#35205c}.list-group-item-purple-700{color:#281846;background-color:#d9d4e3}.list-group-item-purple-700.list-group-item-action:hover,.list-group-item-purple-700.list-group-item-action:focus{color:#281846;background-color:#c3bfcc}.list-group-item-purple-700.list-group-item-action.active{color:#fff;background-color:#281846;border-color:#281846}.list-group-item-purple-800{color:#1a102e;background-color:#d5d1db}.list-group-item-purple-800.list-group-item-action:hover,.list-group-item-purple-800.list-group-item-action:focus{color:#1a102e;background-color:#c0bcc5}.list-group-item-purple-800.list-group-item-action.active{color:#fff;background-color:#1a102e;border-color:#1a102e}.list-group-item-purple-900{color:#0d0817;background-color:#d0cfd4}.list-group-item-purple-900.list-group-item-action:hover,.list-group-item-purple-900.list-group-item-action:focus{color:#0d0817;background-color:#bbbabf}.list-group-item-purple-900.list-group-item-action.active{color:#fff;background-color:#0d0817;border-color:#0d0817}.list-group-item-pink-100{color:#63565c;background-color:#fdf7fa}.list-group-item-pink-100.list-group-item-action:hover,.list-group-item-pink-100.list-group-item-action:focus{color:#63565c;background-color:#e4dee1}.list-group-item-pink-100.list-group-item-action.active{color:#fff;background-color:#63565c;border-color:#63565c}.list-group-item-pink-200{color:#604552;background-color:#fceff5}.list-group-item-pink-200.list-group-item-action:hover,.list-group-item-pink-200.list-group-item-action:focus{color:#604552;background-color:#e3d7dd}.list-group-item-pink-200.list-group-item-action.active{color:#fff;background-color:#604552;border-color:#604552}.list-group-item-pink-300{color:#8a506d;background-color:#fae7f0}.list-group-item-pink-300.list-group-item-action:hover,.list-group-item-pink-300.list-group-item-action:focus{color:#8a506d;background-color:#e1d0d8}.list-group-item-pink-300.list-group-item-action.active{color:#fff;background-color:#8a506d;border-color:#8a506d}.list-group-item-pink-400{color:#85375e;background-color:#f8deeb}.list-group-item-pink-400.list-group-item-action:hover,.list-group-item-pink-400.list-group-item-action:focus{color:#85375e;background-color:#dfc8d4}.list-group-item-pink-400.list-group-item-action.active{color:#fff;background-color:#85375e;border-color:#85375e}.list-group-item-pink-500{color:#801f4f;background-color:#f7d6e6}.list-group-item-pink-500.list-group-item-action:hover,.list-group-item-pink-500.list-group-item-action:focus{color:#801f4f;background-color:#dec1cf}.list-group-item-pink-500.list-group-item-action.active{color:#fff;background-color:#801f4f;border-color:#801f4f}.list-group-item-pink-600{color:#671940;background-color:#eed4e1}.list-group-item-pink-600.list-group-item-action:hover,.list-group-item-pink-600.list-group-item-action:focus{color:#671940;background-color:#d6bfcb}.list-group-item-pink-600.list-group-item-action.active{color:#fff;background-color:#671940;border-color:#671940}.list-group-item-pink-700{color:#4d132f;background-color:#e6d2dc}.list-group-item-pink-700.list-group-item-action:hover,.list-group-item-pink-700.list-group-item-action:focus{color:#4d132f;background-color:#cfbdc6}.list-group-item-pink-700.list-group-item-action.active{color:#fff;background-color:#4d132f;border-color:#4d132f}.list-group-item-pink-800{color:#340c20;background-color:#ddd0d7}.list-group-item-pink-800.list-group-item-action:hover,.list-group-item-pink-800.list-group-item-action:focus{color:#340c20;background-color:#c7bbc2}.list-group-item-pink-800.list-group-item-action.active{color:#fff;background-color:#340c20;border-color:#340c20}.list-group-item-pink-900{color:#1a0610;background-color:#d5ced1}.list-group-item-pink-900.list-group-item-action:hover,.list-group-item-pink-900.list-group-item-action:focus{color:#1a0610;background-color:#c0b9bc}.list-group-item-pink-900.list-group-item-action.active{color:#fff;background-color:#1a0610;border-color:#1a0610}.btn-close{box-sizing:content-box;width:1em;height:1em;padding:.25em;color:#000;background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat;border:0;border-radius:.375rem;opacity:.5}.btn-close:hover{color:#000;text-decoration:none;opacity:.75}.btn-close:focus{outline:0;box-shadow:0 0 0 .25rem #0d6efd40;opacity:1}.btn-close:disabled,.btn-close.disabled{pointer-events:none;user-select:none;opacity:.25}.btn-close-white{filter:invert(1) grayscale(100%) brightness(200%)}.toast{width:350px;max-width:100%;font-size:.875rem;pointer-events:auto;background-color:#ffffffd9;background-clip:padding-box;border:1px solid rgba(0,0,0,.1);box-shadow:0 .5rem 1rem #00000026;border-radius:.375rem}.toast:not(.showing):not(.show){opacity:0}.toast.hide{display:none}.toast-container{width:max-content;max-width:100%;pointer-events:none}.toast-container>:not(:last-child){margin-bottom:.75rem}.toast-header{display:flex;align-items:center;padding:.5rem .75rem;color:#6c757d;background-color:#ffffffd9;background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,.05);border-top-left-radius:calc(.375rem - 1px);border-top-right-radius:calc(.375rem - 1px)}.toast-header .btn-close{margin-right:-.375rem;margin-left:.75rem}.toast-body{padding:.75rem;word-wrap:break-word}.modal{position:fixed;top:0;left:0;z-index:1060;display:none;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;outline:0}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:transform .3s ease-out;transform:translateY(-50px)}@media (prefers-reduced-motion: reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{height:calc(100% - 1rem)}.modal-dialog-scrollable .modal-content{max-height:100%;overflow:hidden}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - 1rem)}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.75rem;outline:0}.modal-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:flex;flex-shrink:0;align-items:center;justify-content:space-between;padding:1rem;border-bottom:1px solid #dee2e6;border-top-left-radius:calc(.75rem - 1px);border-top-right-radius:calc(.75rem - 1px)}.modal-header .btn-close{padding:.5rem;margin:-.5rem -.5rem -.5rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;flex:1 1 auto;padding:1rem}.modal-footer{display:flex;flex-wrap:wrap;flex-shrink:0;align-items:center;justify-content:flex-end;padding:.75rem;border-top:1px solid #dee2e6;border-bottom-right-radius:calc(.75rem - 1px);border-bottom-left-radius:calc(.75rem - 1px)}.modal-footer>*{margin:.25rem}@media (min-width: 576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-scrollable{height:calc(100% - 3.5rem)}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-sm{max-width:300px}}@media (min-width: 992px){.modal-lg,.modal-xl{max-width:800px}}@media (min-width: 1200px){.modal-xl{max-width:1140px}}.modal-fullscreen{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen .modal-header{border-radius:0}.modal-fullscreen .modal-body{overflow-y:auto}.modal-fullscreen .modal-footer{border-radius:0}@media (max-width: 575.98px){.modal-fullscreen-sm-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-sm-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-sm-down .modal-header{border-radius:0}.modal-fullscreen-sm-down .modal-body{overflow-y:auto}.modal-fullscreen-sm-down .modal-footer{border-radius:0}}@media (max-width: 767.98px){.modal-fullscreen-md-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-md-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-md-down .modal-header{border-radius:0}.modal-fullscreen-md-down .modal-body{overflow-y:auto}.modal-fullscreen-md-down .modal-footer{border-radius:0}}@media (max-width: 991.98px){.modal-fullscreen-lg-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-lg-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-lg-down .modal-header{border-radius:0}.modal-fullscreen-lg-down .modal-body{overflow-y:auto}.modal-fullscreen-lg-down .modal-footer{border-radius:0}}@media (max-width: 1199.98px){.modal-fullscreen-xl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xl-down .modal-header{border-radius:0}.modal-fullscreen-xl-down .modal-body{overflow-y:auto}.modal-fullscreen-xl-down .modal-footer{border-radius:0}}@media (max-width: 1399.98px){.modal-fullscreen-xxl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xxl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xxl-down .modal-header{border-radius:0}.modal-fullscreen-xxl-down .modal-body{overflow-y:auto}.modal-fullscreen-xxl-down .modal-footer{border-radius:0}}.tooltip{position:absolute;z-index:1080;display:block;margin:0;font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .tooltip-arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .tooltip-arrow:before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-top,.bs-tooltip-auto[data-popper-placement^=top]{padding:.4rem 0}.bs-tooltip-top .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow{bottom:0}.bs-tooltip-top .tooltip-arrow:before,.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow:before{top:-1px;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-end,.bs-tooltip-auto[data-popper-placement^=right]{padding:0 .4rem}.bs-tooltip-end .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-end .tooltip-arrow:before,.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow:before{right:-1px;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-bottom,.bs-tooltip-auto[data-popper-placement^=bottom]{padding:.4rem 0}.bs-tooltip-bottom .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow{top:0}.bs-tooltip-bottom .tooltip-arrow:before,.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow:before{bottom:-1px;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-start,.bs-tooltip-auto[data-popper-placement^=left]{padding:0 .4rem}.bs-tooltip-start .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-start .tooltip-arrow:before,.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow:before{left:-1px;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.375rem}.popover{position:absolute;top:0;left:0;z-index:1070;display:block;max-width:276px;font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.75rem}.popover .popover-arrow{position:absolute;display:block;width:1rem;height:.5rem}.popover .popover-arrow:before,.popover .popover-arrow:after{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-top>.popover-arrow,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow{bottom:calc(-.5rem - 1px)}.bs-popover-top>.popover-arrow:before,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow:before{bottom:0;border-width:.5rem .5rem 0;border-top-color:#00000040}.bs-popover-top>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow:after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-end>.popover-arrow,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow{left:calc(-.5rem - 1px);width:.5rem;height:1rem}.bs-popover-end>.popover-arrow:before,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow:before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:#00000040}.bs-popover-end>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow:after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-bottom>.popover-arrow,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow{top:calc(-.5rem - 1px)}.bs-popover-bottom>.popover-arrow:before,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow:before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:#00000040}.bs-popover-bottom>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow:after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#fff}.bs-popover-bottom .popover-header:before,.bs-popover-auto[data-popper-placement^=bottom] .popover-header:before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f0f0f0}.bs-popover-start>.popover-arrow,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow{right:calc(-.5rem - 1px);width:.5rem;height:1rem}.bs-popover-start>.popover-arrow:before,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow:before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:#00000040}.bs-popover-start>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow:after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem 1rem;margin-bottom:0;font-size:1rem;background-color:#f0f0f0;border-bottom:1px solid rgba(0,0,0,.2);border-top-left-radius:calc(.75rem - 1px);border-top-right-radius:calc(.75rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:1rem;color:#212529}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner:after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;backface-visibility:hidden;transition:transform .6s ease-in-out}@media (prefers-reduced-motion: reduce){.carousel-item{transition:none}}.carousel-item.active,.carousel-item-next,.carousel-item-prev{display:block}.carousel-item-next:not(.carousel-item-start),.active.carousel-item-end{transform:translate(100%)}.carousel-item-prev:not(.carousel-item-end),.active.carousel-item-start{transform:translate(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item.active,.carousel-fade .carousel-item-next.carousel-item-start,.carousel-fade .carousel-item-prev.carousel-item-end{z-index:1;opacity:1}.carousel-fade .active.carousel-item-start,.carousel-fade .active.carousel-item-end{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion: reduce){.carousel-fade .active.carousel-item-start,.carousel-fade .active.carousel-item-end{transition:none}}.carousel-control-prev,.carousel-control-next{position:absolute;top:0;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:none;border:0;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion: reduce){.carousel-control-prev,.carousel-control-next{transition:none}}.carousel-control-prev:hover,.carousel-control-prev:focus,.carousel-control-next:hover,.carousel-control-next:focus{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-prev-icon,.carousel-control-next-icon{display:inline-block;width:2rem;height:2rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:2;display:flex;justify-content:center;padding:0;margin-right:15%;margin-bottom:1rem;margin-left:15%;list-style:none}.carousel-indicators [data-bs-target]{box-sizing:content-box;flex:0 1 auto;width:30px;height:3px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border:0;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion: reduce){.carousel-indicators [data-bs-target]{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:1.25rem;left:15%;padding-top:1.25rem;padding-bottom:1.25rem;color:#fff;text-align:center}.carousel-dark .carousel-control-prev-icon,.carousel-dark .carousel-control-next-icon{filter:invert(1) grayscale(100)}.carousel-dark .carousel-indicators [data-bs-target]{background-color:#000}.carousel-dark .carousel-caption{color:#000}@keyframes spinner-border{to{transform:rotate(360deg)}}.spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:-.125em;border:.25em solid currentColor;border-right-color:transparent;border-radius:50%;animation:.75s linear infinite spinner-border}.spinner-border-sm{width:1rem;height:1rem;border-width:.2em}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:-.125em;background-color:currentColor;border-radius:50%;opacity:0;animation:.75s linear infinite spinner-grow}.spinner-grow-sm{width:1rem;height:1rem}@media (prefers-reduced-motion: reduce){.spinner-border,.spinner-grow{animation-duration:1.5s}}.clearfix:after{display:block;clear:both;content:""}.link-primary{color:#337ab7}.link-primary:hover,.link-primary:focus{color:#296292}.link-secondary{color:#6c757d}.link-secondary:hover,.link-secondary:focus{color:#565e64}.link-success{color:#198754}.link-success:hover,.link-success:focus{color:#146c43}.link-info{color:#0dcaf0}.link-info:hover,.link-info:focus{color:#3dd5f3}.link-warning{color:#ffc107}.link-warning:hover,.link-warning:focus{color:#ffcd39}.link-danger{color:#dc3545}.link-danger:hover,.link-danger:focus{color:#b02a37}.link-light{color:#f8f9fa}.link-light:hover,.link-light:focus{color:#f9fafb}.link-dark{color:#212529}.link-dark:hover,.link-dark:focus{color:#1a1e21}.link-red{color:#dc3545}.link-red:hover,.link-red:focus{color:#b02a37}.link-yellow{color:#ffc107}.link-yellow:hover,.link-yellow:focus{color:#ffcd39}.link-green{color:#198754}.link-green:hover,.link-green:focus{color:#146c43}.link-blue{color:#0d6efd}.link-blue:hover,.link-blue:focus{color:#0a58ca}.link-cyan{color:#0dcaf0}.link-cyan:hover,.link-cyan:focus{color:#3dd5f3}.link-indigo{color:#6610f2}.link-indigo:hover,.link-indigo:focus{color:#520dc2}.link-purple{color:#6f42c1}.link-purple:hover,.link-purple:focus{color:#59359a}.link-pink{color:#d63384}.link-pink:hover,.link-pink:focus{color:#ab296a}.link-darker{color:#1b1f22}.link-darker:hover,.link-darker:focus{color:#16191b}.link-darkest{color:#171b1d}.link-darkest:hover,.link-darkest:focus{color:#121617}.link-gray{color:#ced4da}.link-gray:hover,.link-gray:focus{color:#d8dde1}.link-gray-100{color:#f8f9fa}.link-gray-100:hover,.link-gray-100:focus{color:#f9fafb}.link-gray-200{color:#e9ecef}.link-gray-200:hover,.link-gray-200:focus{color:#edf0f2}.link-gray-300{color:#dee2e6}.link-gray-300:hover,.link-gray-300:focus{color:#e5e8eb}.link-gray-400{color:#ced4da}.link-gray-400:hover,.link-gray-400:focus{color:#d8dde1}.link-gray-500{color:#adb5bd}.link-gray-500:hover,.link-gray-500:focus{color:#bdc4ca}.link-gray-600{color:#6c757d}.link-gray-600:hover,.link-gray-600:focus{color:#565e64}.link-gray-700{color:#495057}.link-gray-700:hover,.link-gray-700:focus{color:#3a4046}.link-gray-800{color:#343a40}.link-gray-800:hover,.link-gray-800:focus{color:#2a2e33}.link-gray-900{color:#212529}.link-gray-900:hover,.link-gray-900:focus{color:#1a1e21}.link-red-100{color:#f8d7da}.link-red-100:hover,.link-red-100:focus{color:#f9dfe1}.link-red-200{color:#f1aeb5}.link-red-200:hover,.link-red-200:focus{color:#f4bec4}.link-red-300{color:#ea868f}.link-red-300:hover,.link-red-300:focus{color:#ee9ea5}.link-red-400{color:#e35d6a}.link-red-400:hover,.link-red-400:focus{color:#e97d88}.link-red-500{color:#dc3545}.link-red-500:hover,.link-red-500:focus{color:#b02a37}.link-red-600{color:#b02a37}.link-red-600:hover,.link-red-600:focus{color:#8d222c}.link-red-700{color:#842029}.link-red-700:hover,.link-red-700:focus{color:#6a1a21}.link-red-800{color:#58151c}.link-red-800:hover,.link-red-800:focus{color:#461116}.link-red-900{color:#2c0b0e}.link-red-900:hover,.link-red-900:focus{color:#23090b}.link-yellow-100{color:#fff3cd}.link-yellow-100:hover,.link-yellow-100:focus{color:#fff5d7}.link-yellow-200{color:#ffe69c}.link-yellow-200:hover,.link-yellow-200:focus{color:#ffebb0}.link-yellow-300{color:#ffda6a}.link-yellow-300:hover,.link-yellow-300:focus{color:#ffe188}.link-yellow-400{color:#ffcd39}.link-yellow-400:hover,.link-yellow-400:focus{color:#ffd761}.link-yellow-500{color:#ffc107}.link-yellow-500:hover,.link-yellow-500:focus{color:#ffcd39}.link-yellow-600{color:#cc9a06}.link-yellow-600:hover,.link-yellow-600:focus{color:#d6ae38}.link-yellow-700{color:#997404}.link-yellow-700:hover,.link-yellow-700:focus{color:#ad9036}.link-yellow-800{color:#664d03}.link-yellow-800:hover,.link-yellow-800:focus{color:#523e02}.link-yellow-900{color:#332701}.link-yellow-900:hover,.link-yellow-900:focus{color:#291f01}.link-green-100{color:#d1e7dd}.link-green-100:hover,.link-green-100:focus{color:#daece4}.link-green-200{color:#a3cfbb}.link-green-200:hover,.link-green-200:focus{color:#b5d9c9}.link-green-300{color:#75b798}.link-green-300:hover,.link-green-300:focus{color:#91c5ad}.link-green-400{color:#479f76}.link-green-400:hover,.link-green-400:focus{color:#6cb291}.link-green-500{color:#198754}.link-green-500:hover,.link-green-500:focus{color:#146c43}.link-green-600{color:#146c43}.link-green-600:hover,.link-green-600:focus{color:#105636}.link-green-700{color:#0f5132}.link-green-700:hover,.link-green-700:focus{color:#0c4128}.link-green-800{color:#0a3622}.link-green-800:hover,.link-green-800:focus{color:#082b1b}.link-green-900{color:#051b11}.link-green-900:hover,.link-green-900:focus{color:#04160e}.link-blue-100{color:#cfe2ff}.link-blue-100:hover,.link-blue-100:focus{color:#d9e8ff}.link-blue-200{color:#9ec5fe}.link-blue-200:hover,.link-blue-200:focus{color:#b1d1fe}.link-blue-300{color:#6ea8fe}.link-blue-300:hover,.link-blue-300:focus{color:#8bb9fe}.link-blue-400{color:#3d8bfd}.link-blue-400:hover,.link-blue-400:focus{color:#64a2fd}.link-blue-500{color:#0d6efd}.link-blue-500:hover,.link-blue-500:focus{color:#0a58ca}.link-blue-600{color:#0a58ca}.link-blue-600:hover,.link-blue-600:focus{color:#0846a2}.link-blue-700{color:#084298}.link-blue-700:hover,.link-blue-700:focus{color:#06357a}.link-blue-800{color:#052c65}.link-blue-800:hover,.link-blue-800:focus{color:#042351}.link-blue-900{color:#031633}.link-blue-900:hover,.link-blue-900:focus{color:#021229}.link-cyan-100{color:#cff4fc}.link-cyan-100:hover,.link-cyan-100:focus{color:#d9f6fd}.link-cyan-200{color:#9eeaf9}.link-cyan-200:hover,.link-cyan-200:focus{color:#b1eefa}.link-cyan-300{color:#6edff6}.link-cyan-300:hover,.link-cyan-300:focus{color:#8be5f8}.link-cyan-400{color:#3dd5f3}.link-cyan-400:hover,.link-cyan-400:focus{color:#64ddf5}.link-cyan-500{color:#0dcaf0}.link-cyan-500:hover,.link-cyan-500:focus{color:#3dd5f3}.link-cyan-600{color:#0aa2c0}.link-cyan-600:hover,.link-cyan-600:focus{color:#3bb5cd}.link-cyan-700{color:#087990}.link-cyan-700:hover,.link-cyan-700:focus{color:#066173}.link-cyan-800{color:#055160}.link-cyan-800:hover,.link-cyan-800:focus{color:#04414d}.link-cyan-900{color:#032830}.link-cyan-900:hover,.link-cyan-900:focus{color:#022026}.link-indigo-100{color:#e0cffc}.link-indigo-100:hover,.link-indigo-100:focus{color:#e6d9fd}.link-indigo-200{color:#c29ffa}.link-indigo-200:hover,.link-indigo-200:focus{color:#ceb2fb}.link-indigo-300{color:#a370f7}.link-indigo-300:hover,.link-indigo-300:focus{color:#b58df9}.link-indigo-400{color:#8540f5}.link-indigo-400:hover,.link-indigo-400:focus{color:#6a33c4}.link-indigo-500{color:#6610f2}.link-indigo-500:hover,.link-indigo-500:focus{color:#520dc2}.link-indigo-600{color:#520dc2}.link-indigo-600:hover,.link-indigo-600:focus{color:#420a9b}.link-indigo-700{color:#3d0a91}.link-indigo-700:hover,.link-indigo-700:focus{color:#310874}.link-indigo-800{color:#290661}.link-indigo-800:hover,.link-indigo-800:focus{color:#21054e}.link-indigo-900{color:#140330}.link-indigo-900:hover,.link-indigo-900:focus{color:#100226}.link-purple-100{color:#e2d9f3}.link-purple-100:hover,.link-purple-100:focus{color:#e8e1f5}.link-purple-200{color:#c5b3e6}.link-purple-200:hover,.link-purple-200:focus{color:#d1c2eb}.link-purple-300{color:#a98eda}.link-purple-300:hover,.link-purple-300:focus{color:#baa5e1}.link-purple-400{color:#8c68cd}.link-purple-400:hover,.link-purple-400:focus{color:#a386d7}.link-purple-500{color:#6f42c1}.link-purple-500:hover,.link-purple-500:focus{color:#59359a}.link-purple-600{color:#59359a}.link-purple-600:hover,.link-purple-600:focus{color:#472a7b}.link-purple-700{color:#432874}.link-purple-700:hover,.link-purple-700:focus{color:#36205d}.link-purple-800{color:#2c1a4d}.link-purple-800:hover,.link-purple-800:focus{color:#23153e}.link-purple-900{color:#160d27}.link-purple-900:hover,.link-purple-900:focus{color:#120a1f}.link-pink-100{color:#f7d6e6}.link-pink-100:hover,.link-pink-100:focus{color:#f9deeb}.link-pink-200{color:#efadce}.link-pink-200:hover,.link-pink-200:focus{color:#f2bdd8}.link-pink-300{color:#e685b5}.link-pink-300:hover,.link-pink-300:focus{color:#eb9dc4}.link-pink-400{color:#de5c9d}.link-pink-400:hover,.link-pink-400:focus{color:#e57db1}.link-pink-500{color:#d63384}.link-pink-500:hover,.link-pink-500:focus{color:#ab296a}.link-pink-600{color:#ab296a}.link-pink-600:hover,.link-pink-600:focus{color:#892155}.link-pink-700{color:#801f4f}.link-pink-700:hover,.link-pink-700:focus{color:#66193f}.link-pink-800{color:#561435}.link-pink-800:hover,.link-pink-800:focus{color:#45102a}.link-pink-900{color:#2b0a1a}.link-pink-900:hover,.link-pink-900:focus{color:#220815}.ratio{position:relative;width:100%}.ratio:before{display:block;padding-top:var(--bs-aspect-ratio);content:""}.ratio>*{position:absolute;top:0;left:0;width:100%;height:100%}.ratio-1x1{--bs-aspect-ratio: 100%}.ratio-4x3{--bs-aspect-ratio: calc(3 / 4 * 100%)}.ratio-16x9{--bs-aspect-ratio: calc(9 / 16 * 100%)}.ratio-21x9{--bs-aspect-ratio: calc(9 / 21 * 100%)}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}.sticky-top{position:sticky;top:0;z-index:1020}@media (min-width: 576px){.sticky-sm-top{position:sticky;top:0;z-index:1020}}@media (min-width: 768px){.sticky-md-top{position:sticky;top:0;z-index:1020}}@media (min-width: 992px){.sticky-lg-top{position:sticky;top:0;z-index:1020}}@media (min-width: 1200px){.sticky-xl-top{position:sticky;top:0;z-index:1020}}@media (min-width: 1400px){.sticky-xxl-top{position:sticky;top:0;z-index:1020}}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.stretched-link:after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;content:""}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.float-start{float:left!important}.float-end{float:right!important}.float-none{float:none!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.overflow-visible{overflow:visible!important}.overflow-scroll{overflow:scroll!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-grid{display:grid!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}.d-none{display:none!important}.shadow{box-shadow:0 .5rem 1rem #00000026!important}.shadow-sm{box-shadow:0 .125rem .25rem #00000013!important}.shadow-lg{box-shadow:0 1rem 3rem #0000002d!important}.shadow-none{box-shadow:none!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:sticky!important}.top-0{top:0!important}.top-50{top:50%!important}.top-100{top:100%!important}.bottom-0{bottom:0!important}.bottom-50{bottom:50%!important}.bottom-100{bottom:100%!important}.start-0{left:0!important}.start-50{left:50%!important}.start-100{left:100%!important}.end-0{right:0!important}.end-50{right:50%!important}.end-100{right:100%!important}.translate-middle{transform:translate(-50%,-50%)!important}.translate-middle-x{transform:translate(-50%)!important}.translate-middle-y{transform:translateY(-50%)!important}.border{border:1px solid #dee2e6!important}.border-0{border:0!important}.border-top{border-top:1px solid #dee2e6!important}.border-top-0{border-top:0!important}.border-end{border-right:1px solid #dee2e6!important}.border-end-0{border-right:0!important}.border-bottom{border-bottom:1px solid #dee2e6!important}.border-bottom-0{border-bottom:0!important}.border-start{border-left:1px solid #dee2e6!important}.border-start-0{border-left:0!important}.border-primary{border-color:#337ab7!important}.border-secondary{border-color:#6c757d!important}.border-success{border-color:#198754!important}.border-info{border-color:#0dcaf0!important}.border-warning{border-color:#ffc107!important}.border-danger{border-color:#dc3545!important}.border-light{border-color:#f8f9fa!important}.border-dark{border-color:#212529!important}.border-red{border-color:#dc3545!important}.border-yellow{border-color:#ffc107!important}.border-green{border-color:#198754!important}.border-blue{border-color:#0d6efd!important}.border-cyan{border-color:#0dcaf0!important}.border-indigo{border-color:#6610f2!important}.border-purple{border-color:#6f42c1!important}.border-pink{border-color:#d63384!important}.border-darker{border-color:#1b1f22!important}.border-darkest{border-color:#171b1d!important}.border-gray{border-color:#ced4da!important}.border-gray-100{border-color:#f8f9fa!important}.border-gray-200{border-color:#e9ecef!important}.border-gray-300{border-color:#dee2e6!important}.border-gray-400{border-color:#ced4da!important}.border-gray-500{border-color:#adb5bd!important}.border-gray-600{border-color:#6c757d!important}.border-gray-700{border-color:#495057!important}.border-gray-800{border-color:#343a40!important}.border-gray-900{border-color:#212529!important}.border-red-100{border-color:#f8d7da!important}.border-red-200{border-color:#f1aeb5!important}.border-red-300{border-color:#ea868f!important}.border-red-400{border-color:#e35d6a!important}.border-red-500{border-color:#dc3545!important}.border-red-600{border-color:#b02a37!important}.border-red-700{border-color:#842029!important}.border-red-800{border-color:#58151c!important}.border-red-900{border-color:#2c0b0e!important}.border-yellow-100{border-color:#fff3cd!important}.border-yellow-200{border-color:#ffe69c!important}.border-yellow-300{border-color:#ffda6a!important}.border-yellow-400{border-color:#ffcd39!important}.border-yellow-500{border-color:#ffc107!important}.border-yellow-600{border-color:#cc9a06!important}.border-yellow-700{border-color:#997404!important}.border-yellow-800{border-color:#664d03!important}.border-yellow-900{border-color:#332701!important}.border-green-100{border-color:#d1e7dd!important}.border-green-200{border-color:#a3cfbb!important}.border-green-300{border-color:#75b798!important}.border-green-400{border-color:#479f76!important}.border-green-500{border-color:#198754!important}.border-green-600{border-color:#146c43!important}.border-green-700{border-color:#0f5132!important}.border-green-800{border-color:#0a3622!important}.border-green-900{border-color:#051b11!important}.border-blue-100{border-color:#cfe2ff!important}.border-blue-200{border-color:#9ec5fe!important}.border-blue-300{border-color:#6ea8fe!important}.border-blue-400{border-color:#3d8bfd!important}.border-blue-500{border-color:#0d6efd!important}.border-blue-600{border-color:#0a58ca!important}.border-blue-700{border-color:#084298!important}.border-blue-800{border-color:#052c65!important}.border-blue-900{border-color:#031633!important}.border-cyan-100{border-color:#cff4fc!important}.border-cyan-200{border-color:#9eeaf9!important}.border-cyan-300{border-color:#6edff6!important}.border-cyan-400{border-color:#3dd5f3!important}.border-cyan-500{border-color:#0dcaf0!important}.border-cyan-600{border-color:#0aa2c0!important}.border-cyan-700{border-color:#087990!important}.border-cyan-800{border-color:#055160!important}.border-cyan-900{border-color:#032830!important}.border-indigo-100{border-color:#e0cffc!important}.border-indigo-200{border-color:#c29ffa!important}.border-indigo-300{border-color:#a370f7!important}.border-indigo-400{border-color:#8540f5!important}.border-indigo-500{border-color:#6610f2!important}.border-indigo-600{border-color:#520dc2!important}.border-indigo-700{border-color:#3d0a91!important}.border-indigo-800{border-color:#290661!important}.border-indigo-900{border-color:#140330!important}.border-purple-100{border-color:#e2d9f3!important}.border-purple-200{border-color:#c5b3e6!important}.border-purple-300{border-color:#a98eda!important}.border-purple-400{border-color:#8c68cd!important}.border-purple-500{border-color:#6f42c1!important}.border-purple-600{border-color:#59359a!important}.border-purple-700{border-color:#432874!important}.border-purple-800{border-color:#2c1a4d!important}.border-purple-900{border-color:#160d27!important}.border-pink-100{border-color:#f7d6e6!important}.border-pink-200{border-color:#efadce!important}.border-pink-300{border-color:#e685b5!important}.border-pink-400{border-color:#de5c9d!important}.border-pink-500{border-color:#d63384!important}.border-pink-600{border-color:#ab296a!important}.border-pink-700{border-color:#801f4f!important}.border-pink-800{border-color:#561435!important}.border-pink-900{border-color:#2b0a1a!important}.border-white{border-color:#fff!important}.border-1{border-width:1px!important}.border-2{border-width:2px!important}.border-3{border-width:3px!important}.border-4{border-width:4px!important}.border-5{border-width:5px!important}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.mw-100{max-width:100%!important}.vw-100{width:100vw!important}.min-vw-100{min-width:100vw!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mh-100{max-height:100%!important}.vh-100{height:100vh!important}.min-vh-100{min-height:100vh!important}.flex-fill{flex:1 1 auto!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-0{gap:0!important}.gap-1{gap:.25rem!important}.gap-2{gap:.5rem!important}.gap-3{gap:1rem!important}.gap-4{gap:1.5rem!important}.gap-5{gap:3rem!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.justify-content-evenly{justify-content:space-evenly!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}.order-first{order:-1!important}.order-0{order:0!important}.order-1{order:1!important}.order-2{order:2!important}.order-3{order:3!important}.order-4{order:4!important}.order-5{order:5!important}.order-last{order:6!important}.m-0{margin:0!important}.m-1{margin:.25rem!important}.m-2{margin:.5rem!important}.m-3{margin:1rem!important}.m-4{margin:1.5rem!important}.m-5{margin:3rem!important}.m-auto{margin:auto!important}.mx-0{margin-right:0!important;margin-left:0!important}.mx-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-3{margin-right:1rem!important;margin-left:1rem!important}.mx-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-5{margin-right:3rem!important;margin-left:3rem!important}.mx-auto{margin-right:auto!important;margin-left:auto!important}.my-0{margin-top:0!important;margin-bottom:0!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-0{margin-top:0!important}.mt-1{margin-top:.25rem!important}.mt-2{margin-top:.5rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mt-5{margin-top:3rem!important}.mt-auto{margin-top:auto!important}.me-0{margin-right:0!important}.me-1{margin-right:.25rem!important}.me-2{margin-right:.5rem!important}.me-3{margin-right:1rem!important}.me-4{margin-right:1.5rem!important}.me-5{margin-right:3rem!important}.me-auto{margin-right:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}.mb-2{margin-bottom:.5rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.mb-5{margin-bottom:3rem!important}.mb-auto{margin-bottom:auto!important}.ms-0{margin-left:0!important}.ms-1{margin-left:.25rem!important}.ms-2{margin-left:.5rem!important}.ms-3{margin-left:1rem!important}.ms-4{margin-left:1.5rem!important}.ms-5{margin-left:3rem!important}.ms-auto{margin-left:auto!important}.p-0{padding:0!important}.p-1{padding:.25rem!important}.p-2{padding:.5rem!important}.p-3{padding:1rem!important}.p-4{padding:1.5rem!important}.p-5{padding:3rem!important}.px-0{padding-right:0!important;padding-left:0!important}.px-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-3{padding-right:1rem!important;padding-left:1rem!important}.px-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-5{padding-right:3rem!important;padding-left:3rem!important}.py-0{padding-top:0!important;padding-bottom:0!important}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-0{padding-top:0!important}.pt-1{padding-top:.25rem!important}.pt-2{padding-top:.5rem!important}.pt-3{padding-top:1rem!important}.pt-4{padding-top:1.5rem!important}.pt-5{padding-top:3rem!important}.pe-0{padding-right:0!important}.pe-1{padding-right:.25rem!important}.pe-2{padding-right:.5rem!important}.pe-3{padding-right:1rem!important}.pe-4{padding-right:1.5rem!important}.pe-5{padding-right:3rem!important}.pb-0{padding-bottom:0!important}.pb-1{padding-bottom:.25rem!important}.pb-2{padding-bottom:.5rem!important}.pb-3{padding-bottom:1rem!important}.pb-4{padding-bottom:1.5rem!important}.pb-5{padding-bottom:3rem!important}.ps-0{padding-left:0!important}.ps-1{padding-left:.25rem!important}.ps-2{padding-left:.5rem!important}.ps-3{padding-left:1rem!important}.ps-4{padding-left:1.5rem!important}.ps-5{padding-left:3rem!important}.font-monospace{font-family:var(--bs-font-monospace)!important}.fs-1{font-size:calc(1.375rem + 1.5vw)!important}.fs-2{font-size:calc(1.325rem + .9vw)!important}.fs-3{font-size:calc(1.3rem + .6vw)!important}.fs-4{font-size:calc(1.275rem + .3vw)!important}.fs-5{font-size:1.25rem!important}.fs-6{font-size:1rem!important}.fst-italic{font-style:italic!important}.fst-normal{font-style:normal!important}.fw-light{font-weight:300!important}.fw-lighter{font-weight:200!important}.fw-normal{font-weight:400!important}.fw-bold{font-weight:700!important}.fw-bolder{font-weight:800!important}.lh-1{line-height:1!important}.lh-sm{line-height:1.25!important}.lh-base{line-height:1.5!important}.lh-lg{line-height:1.75!important}.text-start{text-align:left!important}.text-end{text-align:right!important}.text-center{text-align:center!important}.text-decoration-none{text-decoration:none!important}.text-decoration-underline{text-decoration:underline!important}.text-decoration-line-through{text-decoration:line-through!important}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-break{word-wrap:break-word!important;word-break:break-word!important}.text-primary{color:#337ab7!important}.text-secondary{color:#6c757d!important}.text-success{color:#198754!important}.text-info{color:#0dcaf0!important}.text-warning{color:#ffc107!important}.text-danger{color:#dc3545!important}.text-light{color:#f8f9fa!important}.text-dark{color:#212529!important}.text-red{color:#dc3545!important}.text-yellow{color:#ffc107!important}.text-green{color:#198754!important}.text-blue{color:#0d6efd!important}.text-cyan{color:#0dcaf0!important}.text-indigo{color:#6610f2!important}.text-purple{color:#6f42c1!important}.text-pink{color:#d63384!important}.text-darker{color:#1b1f22!important}.text-darkest{color:#171b1d!important}.text-gray{color:#ced4da!important}.text-gray-100{color:#f8f9fa!important}.text-gray-200{color:#e9ecef!important}.text-gray-300{color:#dee2e6!important}.text-gray-400{color:#ced4da!important}.text-gray-500{color:#adb5bd!important}.text-gray-600{color:#6c757d!important}.text-gray-700{color:#495057!important}.text-gray-800{color:#343a40!important}.text-gray-900{color:#212529!important}.text-red-100{color:#f8d7da!important}.text-red-200{color:#f1aeb5!important}.text-red-300{color:#ea868f!important}.text-red-400{color:#e35d6a!important}.text-red-500{color:#dc3545!important}.text-red-600{color:#b02a37!important}.text-red-700{color:#842029!important}.text-red-800{color:#58151c!important}.text-red-900{color:#2c0b0e!important}.text-yellow-100{color:#fff3cd!important}.text-yellow-200{color:#ffe69c!important}.text-yellow-300{color:#ffda6a!important}.text-yellow-400{color:#ffcd39!important}.text-yellow-500{color:#ffc107!important}.text-yellow-600{color:#cc9a06!important}.text-yellow-700{color:#997404!important}.text-yellow-800{color:#664d03!important}.text-yellow-900{color:#332701!important}.text-green-100{color:#d1e7dd!important}.text-green-200{color:#a3cfbb!important}.text-green-300{color:#75b798!important}.text-green-400{color:#479f76!important}.text-green-500{color:#198754!important}.text-green-600{color:#146c43!important}.text-green-700{color:#0f5132!important}.text-green-800{color:#0a3622!important}.text-green-900{color:#051b11!important}.text-blue-100{color:#cfe2ff!important}.text-blue-200{color:#9ec5fe!important}.text-blue-300{color:#6ea8fe!important}.text-blue-400{color:#3d8bfd!important}.text-blue-500{color:#0d6efd!important}.text-blue-600{color:#0a58ca!important}.text-blue-700{color:#084298!important}.text-blue-800{color:#052c65!important}.text-blue-900{color:#031633!important}.text-cyan-100{color:#cff4fc!important}.text-cyan-200{color:#9eeaf9!important}.text-cyan-300{color:#6edff6!important}.text-cyan-400{color:#3dd5f3!important}.text-cyan-500{color:#0dcaf0!important}.text-cyan-600{color:#0aa2c0!important}.text-cyan-700{color:#087990!important}.text-cyan-800{color:#055160!important}.text-cyan-900{color:#032830!important}.text-indigo-100{color:#e0cffc!important}.text-indigo-200{color:#c29ffa!important}.text-indigo-300{color:#a370f7!important}.text-indigo-400{color:#8540f5!important}.text-indigo-500{color:#6610f2!important}.text-indigo-600{color:#520dc2!important}.text-indigo-700{color:#3d0a91!important}.text-indigo-800{color:#290661!important}.text-indigo-900{color:#140330!important}.text-purple-100{color:#e2d9f3!important}.text-purple-200{color:#c5b3e6!important}.text-purple-300{color:#a98eda!important}.text-purple-400{color:#8c68cd!important}.text-purple-500{color:#6f42c1!important}.text-purple-600{color:#59359a!important}.text-purple-700{color:#432874!important}.text-purple-800{color:#2c1a4d!important}.text-purple-900{color:#160d27!important}.text-pink-100{color:#f7d6e6!important}.text-pink-200{color:#efadce!important}.text-pink-300{color:#e685b5!important}.text-pink-400{color:#de5c9d!important}.text-pink-500{color:#d63384!important}.text-pink-600{color:#ab296a!important}.text-pink-700{color:#801f4f!important}.text-pink-800{color:#561435!important}.text-pink-900{color:#2b0a1a!important}.text-white{color:#fff!important}.text-body{color:#212529!important}.text-muted{color:#6c757d!important}.text-black-50{color:#00000080!important}.text-white-50{color:#ffffff80!important}.text-reset{color:inherit!important}.bg-primary{background-color:#337ab7!important}.bg-secondary{background-color:#6c757d!important}.bg-success{background-color:#198754!important}.bg-info{background-color:#0dcaf0!important}.bg-warning{background-color:#ffc107!important}.bg-danger{background-color:#dc3545!important}.bg-light{background-color:#f8f9fa!important}.bg-dark{background-color:#212529!important}.bg-red{background-color:#dc3545!important}.bg-yellow{background-color:#ffc107!important}.bg-green{background-color:#198754!important}.bg-blue{background-color:#0d6efd!important}.bg-cyan{background-color:#0dcaf0!important}.bg-indigo{background-color:#6610f2!important}.bg-purple{background-color:#6f42c1!important}.bg-pink{background-color:#d63384!important}.bg-darker{background-color:#1b1f22!important}.bg-darkest{background-color:#171b1d!important}.bg-gray{background-color:#ced4da!important}.bg-gray-100{background-color:#f8f9fa!important}.bg-gray-200{background-color:#e9ecef!important}.bg-gray-300{background-color:#dee2e6!important}.bg-gray-400{background-color:#ced4da!important}.bg-gray-500{background-color:#adb5bd!important}.bg-gray-600{background-color:#6c757d!important}.bg-gray-700{background-color:#495057!important}.bg-gray-800{background-color:#343a40!important}.bg-gray-900{background-color:#212529!important}.bg-red-100{background-color:#f8d7da!important}.bg-red-200{background-color:#f1aeb5!important}.bg-red-300{background-color:#ea868f!important}.bg-red-400{background-color:#e35d6a!important}.bg-red-500{background-color:#dc3545!important}.bg-red-600{background-color:#b02a37!important}.bg-red-700{background-color:#842029!important}.bg-red-800{background-color:#58151c!important}.bg-red-900{background-color:#2c0b0e!important}.bg-yellow-100{background-color:#fff3cd!important}.bg-yellow-200{background-color:#ffe69c!important}.bg-yellow-300{background-color:#ffda6a!important}.bg-yellow-400{background-color:#ffcd39!important}.bg-yellow-500{background-color:#ffc107!important}.bg-yellow-600{background-color:#cc9a06!important}.bg-yellow-700{background-color:#997404!important}.bg-yellow-800{background-color:#664d03!important}.bg-yellow-900{background-color:#332701!important}.bg-green-100{background-color:#d1e7dd!important}.bg-green-200{background-color:#a3cfbb!important}.bg-green-300{background-color:#75b798!important}.bg-green-400{background-color:#479f76!important}.bg-green-500{background-color:#198754!important}.bg-green-600{background-color:#146c43!important}.bg-green-700{background-color:#0f5132!important}.bg-green-800{background-color:#0a3622!important}.bg-green-900{background-color:#051b11!important}.bg-blue-100{background-color:#cfe2ff!important}.bg-blue-200{background-color:#9ec5fe!important}.bg-blue-300{background-color:#6ea8fe!important}.bg-blue-400{background-color:#3d8bfd!important}.bg-blue-500{background-color:#0d6efd!important}.bg-blue-600{background-color:#0a58ca!important}.bg-blue-700{background-color:#084298!important}.bg-blue-800{background-color:#052c65!important}.bg-blue-900{background-color:#031633!important}.bg-cyan-100{background-color:#cff4fc!important}.bg-cyan-200{background-color:#9eeaf9!important}.bg-cyan-300{background-color:#6edff6!important}.bg-cyan-400{background-color:#3dd5f3!important}.bg-cyan-500{background-color:#0dcaf0!important}.bg-cyan-600{background-color:#0aa2c0!important}.bg-cyan-700{background-color:#087990!important}.bg-cyan-800{background-color:#055160!important}.bg-cyan-900{background-color:#032830!important}.bg-indigo-100{background-color:#e0cffc!important}.bg-indigo-200{background-color:#c29ffa!important}.bg-indigo-300{background-color:#a370f7!important}.bg-indigo-400{background-color:#8540f5!important}.bg-indigo-500{background-color:#6610f2!important}.bg-indigo-600{background-color:#520dc2!important}.bg-indigo-700{background-color:#3d0a91!important}.bg-indigo-800{background-color:#290661!important}.bg-indigo-900{background-color:#140330!important}.bg-purple-100{background-color:#e2d9f3!important}.bg-purple-200{background-color:#c5b3e6!important}.bg-purple-300{background-color:#a98eda!important}.bg-purple-400{background-color:#8c68cd!important}.bg-purple-500{background-color:#6f42c1!important}.bg-purple-600{background-color:#59359a!important}.bg-purple-700{background-color:#432874!important}.bg-purple-800{background-color:#2c1a4d!important}.bg-purple-900{background-color:#160d27!important}.bg-pink-100{background-color:#f7d6e6!important}.bg-pink-200{background-color:#efadce!important}.bg-pink-300{background-color:#e685b5!important}.bg-pink-400{background-color:#de5c9d!important}.bg-pink-500{background-color:#d63384!important}.bg-pink-600{background-color:#ab296a!important}.bg-pink-700{background-color:#801f4f!important}.bg-pink-800{background-color:#561435!important}.bg-pink-900{background-color:#2b0a1a!important}.bg-body{background-color:#fff!important}.bg-white{background-color:#fff!important}.bg-transparent{background-color:transparent!important}.bg-gradient{background-image:var(--bs-gradient)!important}.user-select-all{user-select:all!important}.user-select-auto{user-select:auto!important}.user-select-none{user-select:none!important}.pe-none{pointer-events:none!important}.pe-auto{pointer-events:auto!important}.rounded{border-radius:.375rem!important}.rounded-0{border-radius:0!important}.rounded-1{border-radius:.375rem!important}.rounded-2{border-radius:.375rem!important}.rounded-3{border-radius:.75rem!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:50rem!important}.rounded-top{border-top-left-radius:.375rem!important;border-top-right-radius:.375rem!important}.rounded-end{border-top-right-radius:.375rem!important;border-bottom-right-radius:.375rem!important}.rounded-bottom{border-bottom-right-radius:.375rem!important;border-bottom-left-radius:.375rem!important}.rounded-start{border-bottom-left-radius:.375rem!important;border-top-left-radius:.375rem!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media (min-width: 576px){.float-sm-start{float:left!important}.float-sm-end{float:right!important}.float-sm-none{float:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-grid{display:grid!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}.d-sm-none{display:none!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-sm-0{gap:0!important}.gap-sm-1{gap:.25rem!important}.gap-sm-2{gap:.5rem!important}.gap-sm-3{gap:1rem!important}.gap-sm-4{gap:1.5rem!important}.gap-sm-5{gap:3rem!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.justify-content-sm-evenly{justify-content:space-evenly!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}.order-sm-first{order:-1!important}.order-sm-0{order:0!important}.order-sm-1{order:1!important}.order-sm-2{order:2!important}.order-sm-3{order:3!important}.order-sm-4{order:4!important}.order-sm-5{order:5!important}.order-sm-last{order:6!important}.m-sm-0{margin:0!important}.m-sm-1{margin:.25rem!important}.m-sm-2{margin:.5rem!important}.m-sm-3{margin:1rem!important}.m-sm-4{margin:1.5rem!important}.m-sm-5{margin:3rem!important}.m-sm-auto{margin:auto!important}.mx-sm-0{margin-right:0!important;margin-left:0!important}.mx-sm-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-sm-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-sm-3{margin-right:1rem!important;margin-left:1rem!important}.mx-sm-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-sm-5{margin-right:3rem!important;margin-left:3rem!important}.mx-sm-auto{margin-right:auto!important;margin-left:auto!important}.my-sm-0{margin-top:0!important;margin-bottom:0!important}.my-sm-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-sm-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-sm-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-sm-0{margin-top:0!important}.mt-sm-1{margin-top:.25rem!important}.mt-sm-2{margin-top:.5rem!important}.mt-sm-3{margin-top:1rem!important}.mt-sm-4{margin-top:1.5rem!important}.mt-sm-5{margin-top:3rem!important}.mt-sm-auto{margin-top:auto!important}.me-sm-0{margin-right:0!important}.me-sm-1{margin-right:.25rem!important}.me-sm-2{margin-right:.5rem!important}.me-sm-3{margin-right:1rem!important}.me-sm-4{margin-right:1.5rem!important}.me-sm-5{margin-right:3rem!important}.me-sm-auto{margin-right:auto!important}.mb-sm-0{margin-bottom:0!important}.mb-sm-1{margin-bottom:.25rem!important}.mb-sm-2{margin-bottom:.5rem!important}.mb-sm-3{margin-bottom:1rem!important}.mb-sm-4{margin-bottom:1.5rem!important}.mb-sm-5{margin-bottom:3rem!important}.mb-sm-auto{margin-bottom:auto!important}.ms-sm-0{margin-left:0!important}.ms-sm-1{margin-left:.25rem!important}.ms-sm-2{margin-left:.5rem!important}.ms-sm-3{margin-left:1rem!important}.ms-sm-4{margin-left:1.5rem!important}.ms-sm-5{margin-left:3rem!important}.ms-sm-auto{margin-left:auto!important}.p-sm-0{padding:0!important}.p-sm-1{padding:.25rem!important}.p-sm-2{padding:.5rem!important}.p-sm-3{padding:1rem!important}.p-sm-4{padding:1.5rem!important}.p-sm-5{padding:3rem!important}.px-sm-0{padding-right:0!important;padding-left:0!important}.px-sm-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-sm-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-sm-3{padding-right:1rem!important;padding-left:1rem!important}.px-sm-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-sm-5{padding-right:3rem!important;padding-left:3rem!important}.py-sm-0{padding-top:0!important;padding-bottom:0!important}.py-sm-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-sm-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-sm-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-sm-0{padding-top:0!important}.pt-sm-1{padding-top:.25rem!important}.pt-sm-2{padding-top:.5rem!important}.pt-sm-3{padding-top:1rem!important}.pt-sm-4{padding-top:1.5rem!important}.pt-sm-5{padding-top:3rem!important}.pe-sm-0{padding-right:0!important}.pe-sm-1{padding-right:.25rem!important}.pe-sm-2{padding-right:.5rem!important}.pe-sm-3{padding-right:1rem!important}.pe-sm-4{padding-right:1.5rem!important}.pe-sm-5{padding-right:3rem!important}.pb-sm-0{padding-bottom:0!important}.pb-sm-1{padding-bottom:.25rem!important}.pb-sm-2{padding-bottom:.5rem!important}.pb-sm-3{padding-bottom:1rem!important}.pb-sm-4{padding-bottom:1.5rem!important}.pb-sm-5{padding-bottom:3rem!important}.ps-sm-0{padding-left:0!important}.ps-sm-1{padding-left:.25rem!important}.ps-sm-2{padding-left:.5rem!important}.ps-sm-3{padding-left:1rem!important}.ps-sm-4{padding-left:1.5rem!important}.ps-sm-5{padding-left:3rem!important}.text-sm-start{text-align:left!important}.text-sm-end{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width: 768px){.float-md-start{float:left!important}.float-md-end{float:right!important}.float-md-none{float:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-grid{display:grid!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}.d-md-none{display:none!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-md-0{gap:0!important}.gap-md-1{gap:.25rem!important}.gap-md-2{gap:.5rem!important}.gap-md-3{gap:1rem!important}.gap-md-4{gap:1.5rem!important}.gap-md-5{gap:3rem!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.justify-content-md-evenly{justify-content:space-evenly!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}.order-md-first{order:-1!important}.order-md-0{order:0!important}.order-md-1{order:1!important}.order-md-2{order:2!important}.order-md-3{order:3!important}.order-md-4{order:4!important}.order-md-5{order:5!important}.order-md-last{order:6!important}.m-md-0{margin:0!important}.m-md-1{margin:.25rem!important}.m-md-2{margin:.5rem!important}.m-md-3{margin:1rem!important}.m-md-4{margin:1.5rem!important}.m-md-5{margin:3rem!important}.m-md-auto{margin:auto!important}.mx-md-0{margin-right:0!important;margin-left:0!important}.mx-md-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-md-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-md-3{margin-right:1rem!important;margin-left:1rem!important}.mx-md-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-md-5{margin-right:3rem!important;margin-left:3rem!important}.mx-md-auto{margin-right:auto!important;margin-left:auto!important}.my-md-0{margin-top:0!important;margin-bottom:0!important}.my-md-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-md-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-md-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-md-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-md-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-md-0{margin-top:0!important}.mt-md-1{margin-top:.25rem!important}.mt-md-2{margin-top:.5rem!important}.mt-md-3{margin-top:1rem!important}.mt-md-4{margin-top:1.5rem!important}.mt-md-5{margin-top:3rem!important}.mt-md-auto{margin-top:auto!important}.me-md-0{margin-right:0!important}.me-md-1{margin-right:.25rem!important}.me-md-2{margin-right:.5rem!important}.me-md-3{margin-right:1rem!important}.me-md-4{margin-right:1.5rem!important}.me-md-5{margin-right:3rem!important}.me-md-auto{margin-right:auto!important}.mb-md-0{margin-bottom:0!important}.mb-md-1{margin-bottom:.25rem!important}.mb-md-2{margin-bottom:.5rem!important}.mb-md-3{margin-bottom:1rem!important}.mb-md-4{margin-bottom:1.5rem!important}.mb-md-5{margin-bottom:3rem!important}.mb-md-auto{margin-bottom:auto!important}.ms-md-0{margin-left:0!important}.ms-md-1{margin-left:.25rem!important}.ms-md-2{margin-left:.5rem!important}.ms-md-3{margin-left:1rem!important}.ms-md-4{margin-left:1.5rem!important}.ms-md-5{margin-left:3rem!important}.ms-md-auto{margin-left:auto!important}.p-md-0{padding:0!important}.p-md-1{padding:.25rem!important}.p-md-2{padding:.5rem!important}.p-md-3{padding:1rem!important}.p-md-4{padding:1.5rem!important}.p-md-5{padding:3rem!important}.px-md-0{padding-right:0!important;padding-left:0!important}.px-md-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-md-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-md-3{padding-right:1rem!important;padding-left:1rem!important}.px-md-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-md-5{padding-right:3rem!important;padding-left:3rem!important}.py-md-0{padding-top:0!important;padding-bottom:0!important}.py-md-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-md-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-md-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-md-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-md-0{padding-top:0!important}.pt-md-1{padding-top:.25rem!important}.pt-md-2{padding-top:.5rem!important}.pt-md-3{padding-top:1rem!important}.pt-md-4{padding-top:1.5rem!important}.pt-md-5{padding-top:3rem!important}.pe-md-0{padding-right:0!important}.pe-md-1{padding-right:.25rem!important}.pe-md-2{padding-right:.5rem!important}.pe-md-3{padding-right:1rem!important}.pe-md-4{padding-right:1.5rem!important}.pe-md-5{padding-right:3rem!important}.pb-md-0{padding-bottom:0!important}.pb-md-1{padding-bottom:.25rem!important}.pb-md-2{padding-bottom:.5rem!important}.pb-md-3{padding-bottom:1rem!important}.pb-md-4{padding-bottom:1.5rem!important}.pb-md-5{padding-bottom:3rem!important}.ps-md-0{padding-left:0!important}.ps-md-1{padding-left:.25rem!important}.ps-md-2{padding-left:.5rem!important}.ps-md-3{padding-left:1rem!important}.ps-md-4{padding-left:1.5rem!important}.ps-md-5{padding-left:3rem!important}.text-md-start{text-align:left!important}.text-md-end{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width: 992px){.float-lg-start{float:left!important}.float-lg-end{float:right!important}.float-lg-none{float:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-grid{display:grid!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}.d-lg-none{display:none!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-lg-0{gap:0!important}.gap-lg-1{gap:.25rem!important}.gap-lg-2{gap:.5rem!important}.gap-lg-3{gap:1rem!important}.gap-lg-4{gap:1.5rem!important}.gap-lg-5{gap:3rem!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.justify-content-lg-evenly{justify-content:space-evenly!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}.order-lg-first{order:-1!important}.order-lg-0{order:0!important}.order-lg-1{order:1!important}.order-lg-2{order:2!important}.order-lg-3{order:3!important}.order-lg-4{order:4!important}.order-lg-5{order:5!important}.order-lg-last{order:6!important}.m-lg-0{margin:0!important}.m-lg-1{margin:.25rem!important}.m-lg-2{margin:.5rem!important}.m-lg-3{margin:1rem!important}.m-lg-4{margin:1.5rem!important}.m-lg-5{margin:3rem!important}.m-lg-auto{margin:auto!important}.mx-lg-0{margin-right:0!important;margin-left:0!important}.mx-lg-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-lg-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-lg-3{margin-right:1rem!important;margin-left:1rem!important}.mx-lg-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-lg-5{margin-right:3rem!important;margin-left:3rem!important}.mx-lg-auto{margin-right:auto!important;margin-left:auto!important}.my-lg-0{margin-top:0!important;margin-bottom:0!important}.my-lg-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-lg-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-lg-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-lg-0{margin-top:0!important}.mt-lg-1{margin-top:.25rem!important}.mt-lg-2{margin-top:.5rem!important}.mt-lg-3{margin-top:1rem!important}.mt-lg-4{margin-top:1.5rem!important}.mt-lg-5{margin-top:3rem!important}.mt-lg-auto{margin-top:auto!important}.me-lg-0{margin-right:0!important}.me-lg-1{margin-right:.25rem!important}.me-lg-2{margin-right:.5rem!important}.me-lg-3{margin-right:1rem!important}.me-lg-4{margin-right:1.5rem!important}.me-lg-5{margin-right:3rem!important}.me-lg-auto{margin-right:auto!important}.mb-lg-0{margin-bottom:0!important}.mb-lg-1{margin-bottom:.25rem!important}.mb-lg-2{margin-bottom:.5rem!important}.mb-lg-3{margin-bottom:1rem!important}.mb-lg-4{margin-bottom:1.5rem!important}.mb-lg-5{margin-bottom:3rem!important}.mb-lg-auto{margin-bottom:auto!important}.ms-lg-0{margin-left:0!important}.ms-lg-1{margin-left:.25rem!important}.ms-lg-2{margin-left:.5rem!important}.ms-lg-3{margin-left:1rem!important}.ms-lg-4{margin-left:1.5rem!important}.ms-lg-5{margin-left:3rem!important}.ms-lg-auto{margin-left:auto!important}.p-lg-0{padding:0!important}.p-lg-1{padding:.25rem!important}.p-lg-2{padding:.5rem!important}.p-lg-3{padding:1rem!important}.p-lg-4{padding:1.5rem!important}.p-lg-5{padding:3rem!important}.px-lg-0{padding-right:0!important;padding-left:0!important}.px-lg-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-lg-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-lg-3{padding-right:1rem!important;padding-left:1rem!important}.px-lg-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-lg-5{padding-right:3rem!important;padding-left:3rem!important}.py-lg-0{padding-top:0!important;padding-bottom:0!important}.py-lg-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-lg-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-lg-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-lg-0{padding-top:0!important}.pt-lg-1{padding-top:.25rem!important}.pt-lg-2{padding-top:.5rem!important}.pt-lg-3{padding-top:1rem!important}.pt-lg-4{padding-top:1.5rem!important}.pt-lg-5{padding-top:3rem!important}.pe-lg-0{padding-right:0!important}.pe-lg-1{padding-right:.25rem!important}.pe-lg-2{padding-right:.5rem!important}.pe-lg-3{padding-right:1rem!important}.pe-lg-4{padding-right:1.5rem!important}.pe-lg-5{padding-right:3rem!important}.pb-lg-0{padding-bottom:0!important}.pb-lg-1{padding-bottom:.25rem!important}.pb-lg-2{padding-bottom:.5rem!important}.pb-lg-3{padding-bottom:1rem!important}.pb-lg-4{padding-bottom:1.5rem!important}.pb-lg-5{padding-bottom:3rem!important}.ps-lg-0{padding-left:0!important}.ps-lg-1{padding-left:.25rem!important}.ps-lg-2{padding-left:.5rem!important}.ps-lg-3{padding-left:1rem!important}.ps-lg-4{padding-left:1.5rem!important}.ps-lg-5{padding-left:3rem!important}.text-lg-start{text-align:left!important}.text-lg-end{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width: 1200px){.float-xl-start{float:left!important}.float-xl-end{float:right!important}.float-xl-none{float:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-grid{display:grid!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}.d-xl-none{display:none!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-xl-0{gap:0!important}.gap-xl-1{gap:.25rem!important}.gap-xl-2{gap:.5rem!important}.gap-xl-3{gap:1rem!important}.gap-xl-4{gap:1.5rem!important}.gap-xl-5{gap:3rem!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.justify-content-xl-evenly{justify-content:space-evenly!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}.order-xl-first{order:-1!important}.order-xl-0{order:0!important}.order-xl-1{order:1!important}.order-xl-2{order:2!important}.order-xl-3{order:3!important}.order-xl-4{order:4!important}.order-xl-5{order:5!important}.order-xl-last{order:6!important}.m-xl-0{margin:0!important}.m-xl-1{margin:.25rem!important}.m-xl-2{margin:.5rem!important}.m-xl-3{margin:1rem!important}.m-xl-4{margin:1.5rem!important}.m-xl-5{margin:3rem!important}.m-xl-auto{margin:auto!important}.mx-xl-0{margin-right:0!important;margin-left:0!important}.mx-xl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xl-auto{margin-right:auto!important;margin-left:auto!important}.my-xl-0{margin-top:0!important;margin-bottom:0!important}.my-xl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xl-0{margin-top:0!important}.mt-xl-1{margin-top:.25rem!important}.mt-xl-2{margin-top:.5rem!important}.mt-xl-3{margin-top:1rem!important}.mt-xl-4{margin-top:1.5rem!important}.mt-xl-5{margin-top:3rem!important}.mt-xl-auto{margin-top:auto!important}.me-xl-0{margin-right:0!important}.me-xl-1{margin-right:.25rem!important}.me-xl-2{margin-right:.5rem!important}.me-xl-3{margin-right:1rem!important}.me-xl-4{margin-right:1.5rem!important}.me-xl-5{margin-right:3rem!important}.me-xl-auto{margin-right:auto!important}.mb-xl-0{margin-bottom:0!important}.mb-xl-1{margin-bottom:.25rem!important}.mb-xl-2{margin-bottom:.5rem!important}.mb-xl-3{margin-bottom:1rem!important}.mb-xl-4{margin-bottom:1.5rem!important}.mb-xl-5{margin-bottom:3rem!important}.mb-xl-auto{margin-bottom:auto!important}.ms-xl-0{margin-left:0!important}.ms-xl-1{margin-left:.25rem!important}.ms-xl-2{margin-left:.5rem!important}.ms-xl-3{margin-left:1rem!important}.ms-xl-4{margin-left:1.5rem!important}.ms-xl-5{margin-left:3rem!important}.ms-xl-auto{margin-left:auto!important}.p-xl-0{padding:0!important}.p-xl-1{padding:.25rem!important}.p-xl-2{padding:.5rem!important}.p-xl-3{padding:1rem!important}.p-xl-4{padding:1.5rem!important}.p-xl-5{padding:3rem!important}.px-xl-0{padding-right:0!important;padding-left:0!important}.px-xl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xl-0{padding-top:0!important;padding-bottom:0!important}.py-xl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xl-0{padding-top:0!important}.pt-xl-1{padding-top:.25rem!important}.pt-xl-2{padding-top:.5rem!important}.pt-xl-3{padding-top:1rem!important}.pt-xl-4{padding-top:1.5rem!important}.pt-xl-5{padding-top:3rem!important}.pe-xl-0{padding-right:0!important}.pe-xl-1{padding-right:.25rem!important}.pe-xl-2{padding-right:.5rem!important}.pe-xl-3{padding-right:1rem!important}.pe-xl-4{padding-right:1.5rem!important}.pe-xl-5{padding-right:3rem!important}.pb-xl-0{padding-bottom:0!important}.pb-xl-1{padding-bottom:.25rem!important}.pb-xl-2{padding-bottom:.5rem!important}.pb-xl-3{padding-bottom:1rem!important}.pb-xl-4{padding-bottom:1.5rem!important}.pb-xl-5{padding-bottom:3rem!important}.ps-xl-0{padding-left:0!important}.ps-xl-1{padding-left:.25rem!important}.ps-xl-2{padding-left:.5rem!important}.ps-xl-3{padding-left:1rem!important}.ps-xl-4{padding-left:1.5rem!important}.ps-xl-5{padding-left:3rem!important}.text-xl-start{text-align:left!important}.text-xl-end{text-align:right!important}.text-xl-center{text-align:center!important}}@media (min-width: 1400px){.float-xxl-start{float:left!important}.float-xxl-end{float:right!important}.float-xxl-none{float:none!important}.d-xxl-inline{display:inline!important}.d-xxl-inline-block{display:inline-block!important}.d-xxl-block{display:block!important}.d-xxl-grid{display:grid!important}.d-xxl-table{display:table!important}.d-xxl-table-row{display:table-row!important}.d-xxl-table-cell{display:table-cell!important}.d-xxl-flex{display:flex!important}.d-xxl-inline-flex{display:inline-flex!important}.d-xxl-none{display:none!important}.flex-xxl-fill{flex:1 1 auto!important}.flex-xxl-row{flex-direction:row!important}.flex-xxl-column{flex-direction:column!important}.flex-xxl-row-reverse{flex-direction:row-reverse!important}.flex-xxl-column-reverse{flex-direction:column-reverse!important}.flex-xxl-grow-0{flex-grow:0!important}.flex-xxl-grow-1{flex-grow:1!important}.flex-xxl-shrink-0{flex-shrink:0!important}.flex-xxl-shrink-1{flex-shrink:1!important}.flex-xxl-wrap{flex-wrap:wrap!important}.flex-xxl-nowrap{flex-wrap:nowrap!important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-xxl-0{gap:0!important}.gap-xxl-1{gap:.25rem!important}.gap-xxl-2{gap:.5rem!important}.gap-xxl-3{gap:1rem!important}.gap-xxl-4{gap:1.5rem!important}.gap-xxl-5{gap:3rem!important}.justify-content-xxl-start{justify-content:flex-start!important}.justify-content-xxl-end{justify-content:flex-end!important}.justify-content-xxl-center{justify-content:center!important}.justify-content-xxl-between{justify-content:space-between!important}.justify-content-xxl-around{justify-content:space-around!important}.justify-content-xxl-evenly{justify-content:space-evenly!important}.align-items-xxl-start{align-items:flex-start!important}.align-items-xxl-end{align-items:flex-end!important}.align-items-xxl-center{align-items:center!important}.align-items-xxl-baseline{align-items:baseline!important}.align-items-xxl-stretch{align-items:stretch!important}.align-content-xxl-start{align-content:flex-start!important}.align-content-xxl-end{align-content:flex-end!important}.align-content-xxl-center{align-content:center!important}.align-content-xxl-between{align-content:space-between!important}.align-content-xxl-around{align-content:space-around!important}.align-content-xxl-stretch{align-content:stretch!important}.align-self-xxl-auto{align-self:auto!important}.align-self-xxl-start{align-self:flex-start!important}.align-self-xxl-end{align-self:flex-end!important}.align-self-xxl-center{align-self:center!important}.align-self-xxl-baseline{align-self:baseline!important}.align-self-xxl-stretch{align-self:stretch!important}.order-xxl-first{order:-1!important}.order-xxl-0{order:0!important}.order-xxl-1{order:1!important}.order-xxl-2{order:2!important}.order-xxl-3{order:3!important}.order-xxl-4{order:4!important}.order-xxl-5{order:5!important}.order-xxl-last{order:6!important}.m-xxl-0{margin:0!important}.m-xxl-1{margin:.25rem!important}.m-xxl-2{margin:.5rem!important}.m-xxl-3{margin:1rem!important}.m-xxl-4{margin:1.5rem!important}.m-xxl-5{margin:3rem!important}.m-xxl-auto{margin:auto!important}.mx-xxl-0{margin-right:0!important;margin-left:0!important}.mx-xxl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xxl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xxl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xxl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xxl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xxl-auto{margin-right:auto!important;margin-left:auto!important}.my-xxl-0{margin-top:0!important;margin-bottom:0!important}.my-xxl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xxl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xxl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xxl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xxl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xxl-0{margin-top:0!important}.mt-xxl-1{margin-top:.25rem!important}.mt-xxl-2{margin-top:.5rem!important}.mt-xxl-3{margin-top:1rem!important}.mt-xxl-4{margin-top:1.5rem!important}.mt-xxl-5{margin-top:3rem!important}.mt-xxl-auto{margin-top:auto!important}.me-xxl-0{margin-right:0!important}.me-xxl-1{margin-right:.25rem!important}.me-xxl-2{margin-right:.5rem!important}.me-xxl-3{margin-right:1rem!important}.me-xxl-4{margin-right:1.5rem!important}.me-xxl-5{margin-right:3rem!important}.me-xxl-auto{margin-right:auto!important}.mb-xxl-0{margin-bottom:0!important}.mb-xxl-1{margin-bottom:.25rem!important}.mb-xxl-2{margin-bottom:.5rem!important}.mb-xxl-3{margin-bottom:1rem!important}.mb-xxl-4{margin-bottom:1.5rem!important}.mb-xxl-5{margin-bottom:3rem!important}.mb-xxl-auto{margin-bottom:auto!important}.ms-xxl-0{margin-left:0!important}.ms-xxl-1{margin-left:.25rem!important}.ms-xxl-2{margin-left:.5rem!important}.ms-xxl-3{margin-left:1rem!important}.ms-xxl-4{margin-left:1.5rem!important}.ms-xxl-5{margin-left:3rem!important}.ms-xxl-auto{margin-left:auto!important}.p-xxl-0{padding:0!important}.p-xxl-1{padding:.25rem!important}.p-xxl-2{padding:.5rem!important}.p-xxl-3{padding:1rem!important}.p-xxl-4{padding:1.5rem!important}.p-xxl-5{padding:3rem!important}.px-xxl-0{padding-right:0!important;padding-left:0!important}.px-xxl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xxl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xxl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xxl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xxl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xxl-0{padding-top:0!important;padding-bottom:0!important}.py-xxl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xxl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xxl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xxl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xxl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xxl-0{padding-top:0!important}.pt-xxl-1{padding-top:.25rem!important}.pt-xxl-2{padding-top:.5rem!important}.pt-xxl-3{padding-top:1rem!important}.pt-xxl-4{padding-top:1.5rem!important}.pt-xxl-5{padding-top:3rem!important}.pe-xxl-0{padding-right:0!important}.pe-xxl-1{padding-right:.25rem!important}.pe-xxl-2{padding-right:.5rem!important}.pe-xxl-3{padding-right:1rem!important}.pe-xxl-4{padding-right:1.5rem!important}.pe-xxl-5{padding-right:3rem!important}.pb-xxl-0{padding-bottom:0!important}.pb-xxl-1{padding-bottom:.25rem!important}.pb-xxl-2{padding-bottom:.5rem!important}.pb-xxl-3{padding-bottom:1rem!important}.pb-xxl-4{padding-bottom:1.5rem!important}.pb-xxl-5{padding-bottom:3rem!important}.ps-xxl-0{padding-left:0!important}.ps-xxl-1{padding-left:.25rem!important}.ps-xxl-2{padding-left:.5rem!important}.ps-xxl-3{padding-left:1rem!important}.ps-xxl-4{padding-left:1.5rem!important}.ps-xxl-5{padding-left:3rem!important}.text-xxl-start{text-align:left!important}.text-xxl-end{text-align:right!important}.text-xxl-center{text-align:center!important}}@media (min-width: 1200px){.fs-1{font-size:2.5rem!important}.fs-2{font-size:2rem!important}.fs-3{font-size:1.75rem!important}.fs-4{font-size:1.5rem!important}}@media print{.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-grid{display:grid!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}.d-print-none{display:none!important}}:root{--nbx-select-content-bg: #fff;--nbx-select-option-selected-bg: #dee2e6;--nbx-select-option-hover-bg: #0d6efd;--nbx-select-option-hover-color: #fff;--nbx-select-placeholder-color: #adb5bd;--nbx-select-value-color: #fff}:root[data-netbox-color-mode=dark]{--nbx-select-content-bg: #212529;--nbx-select-option-selected-bg: #adb5bd;--nbx-select-option-hover-bg: #9ec5fe;--nbx-select-option-hover-color: #000;--nbx-select-placeholder-color: #495057;--nbx-select-value-color: #000}.ss-main{position:relative;display:inline-block;user-select:none;color:#212529;width:100%}.ss-main .ss-single-selected{display:flex;cursor:pointer;width:100%;height:calc(1.5em + (.75rem + 2px));padding:.75rem;border:1px solid #ced4da;border-radius:.375rem;background-color:#fff;outline:0;box-sizing:border-box;transition:background-color .2s}.ss-main .ss-single-selected.ss-disabled{background-color:#ced4da;cursor:not-allowed}.ss-main .ss-single-selected.ss-open-above{border-top-left-radius:0;border-top-right-radius:0}.ss-main .ss-single-selected.ss-open-below{border-bottom-left-radius:0;border-bottom-right-radius:0}.ss-main .ss-single-selected .placeholder{display:flex;flex:1 1 100%;align-items:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:left;width:calc(100% - 30px);line-height:1em;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ss-main .ss-single-selected .placeholder *{display:flex;align-items:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:auto}.ss-main .ss-single-selected .placeholder .ss-disabled{color:#6c757d}.ss-main .ss-single-selected .ss-deselect{display:flex;align-items:center;justify-content:flex-end;flex:0 1 auto;margin:0 .75rem;font-weight:bold}.ss-main .ss-single-selected .ss-deselect.ss-hide{display:none}.ss-main .ss-single-selected .ss-arrow{display:flex;align-items:center;justify-content:flex-end;flex:0 1 auto;margin:0 .75rem}.ss-main .ss-single-selected .ss-arrow span{border:solid #212529;border-width:0 2px 2px 0;display:inline-block;padding:3px;transition:transform .2s,margin .2s}.ss-main .ss-single-selected .ss-arrow span.arrow-up{transform:rotate(-135deg);margin:3px 0 0}.ss-main .ss-single-selected .ss-arrow span.arrow-down{transform:rotate(45deg);margin:-3px 0 0}.ss-main .ss-multi-selected{display:flex;flex-direction:row;cursor:pointer;min-height:calc(1.5em + (.75rem + 2px));width:100%;padding:0 0 0 3px;border:1px solid #ced4da;border-radius:.375rem;background-color:#fff;outline:0;box-sizing:border-box;transition:background-color .2s}.ss-main .ss-multi-selected.ss-disabled{background-color:#ced4da;cursor:not-allowed}.ss-main .ss-multi-selected.ss-disabled .ss-values .ss-disabled{color:#212529}.ss-main .ss-multi-selected.ss-disabled .ss-values .ss-value .ss-value-delete{cursor:not-allowed}.ss-main .ss-multi-selected.ss-open-above{border-top-left-radius:0;border-top-right-radius:0}.ss-main .ss-multi-selected.ss-open-below{border-bottom-left-radius:0;border-bottom-right-radius:0}.ss-main .ss-multi-selected .ss-values{display:flex;flex-wrap:wrap;justify-content:flex-start;flex:1 1 100%;width:calc(100% - 30px)}.ss-main .ss-multi-selected .ss-values .ss-disabled{display:flex;padding:4px 5px;margin:2px 0;line-height:1em;align-items:center;width:100%;color:#6c757d;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@keyframes scaleIn{0%{transform:scale(0);opacity:0}to{transform:scale(1);opacity:1}}@keyframes scaleOut{0%{transform:scale(1);opacity:1}to{transform:scale(0);opacity:0}}.ss-main .ss-multi-selected .ss-values .ss-value{display:flex;user-select:none;align-items:center;font-size:12px;padding:3px 5px;margin:3px 5px 3px 0;color:#fff;background-color:#0d6efd;border-radius:.375rem;animation-name:scaleIn;animation-duration:.2s;animation-timing-function:ease-out;animation-fill-mode:both}.ss-main .ss-multi-selected .ss-values .ss-value.ss-out{animation-name:scaleOut;animation-duration:.2s;animation-timing-function:ease-out}.ss-main .ss-multi-selected .ss-values .ss-value .ss-value-delete{margin:0 0 0 5px;cursor:pointer}.ss-main .ss-multi-selected .ss-add{display:flex;flex:0 1 3px;margin:9px 12px 0 5px}.ss-main .ss-multi-selected .ss-add .ss-plus{display:flex;justify-content:center;align-items:center;background:#212529;position:relative;height:10px;width:2px;transition:transform .2s}.ss-main .ss-multi-selected .ss-add .ss-plus:after{background:#212529;content:"";position:absolute;height:2px;width:10px;left:-4px;top:4px}.ss-main .ss-multi-selected .ss-add .ss-plus.ss-cross{transform:rotate(45deg)}.ss-content{position:absolute;width:100%;margin:-1px 0 0;box-sizing:border-box;border:solid 1px #ced4da;z-index:1010;background-color:#fff;transform-origin:center top;transition:transform .2s,opacity .2s;opacity:0;transform:scaleY(0)}.ss-content.ss-open{display:block;opacity:1;transform:scaleY(1)}.ss-content .ss-search{display:flex;flex-direction:row;padding:.75rem}.ss-content .ss-search.ss-hide{height:0px;opacity:0;padding:0;margin:0}.ss-content .ss-search.ss-hide input{height:0px;opacity:0;padding:0;margin:0}.ss-content .ss-search input{display:inline-flex;font-size:inherit;line-height:inherit;flex:1 1 auto;width:100%;min-width:0px;height:30px;padding:.75rem;margin:0;border:1px solid #ced4da;border-radius:.375rem;background-color:#fff;outline:0;text-align:left;box-sizing:border-box;-webkit-box-sizing:border-box;-webkit-appearance:textfield}.ss-content .ss-search input::placeholder{color:#adb5bd;vertical-align:middle}.ss-content .ss-search input:focus{box-shadow:0 0 5px #0d6efd}.ss-content .ss-search .ss-addable{display:inline-flex;justify-content:center;align-items:center;cursor:pointer;font-size:22px;font-weight:bold;flex:0 0 30px;height:30px;margin:0 0 0 8px;border:1px solid #ced4da;border-radius:.375rem;box-sizing:border-box}.ss-content .ss-addable{padding-top:0}.ss-content .ss-list{max-height:200px;overflow-x:hidden;overflow-y:auto;text-align:left}.ss-content .ss-list .ss-optgroup .ss-optgroup-label{padding:6px 10px;font-weight:bold}.ss-content .ss-list .ss-optgroup .ss-option{padding:6px 6px 6px 25px}.ss-content .ss-list .ss-optgroup-label-selectable{cursor:pointer}.ss-content .ss-list .ss-optgroup-label-selectable:hover{color:#fff;background-color:#0d6efd}.ss-content .ss-list .ss-option{padding:6px 10px;cursor:pointer;user-select:none}.ss-content .ss-list .ss-option *{display:inline-block}.ss-content .ss-list .ss-option:hover,.ss-content .ss-list .ss-option.ss-highlighted{color:#fff;background-color:#0d6efd}.ss-content .ss-list .ss-option.ss-disabled{cursor:not-allowed;color:#6c757d;background-color:#fff}.ss-content .ss-list .ss-option:not(.ss-disabled).ss-option-selected{color:#212529;background-color:#0d6efd1a}.ss-content .ss-list .ss-option.ss-hide{display:none}.ss-content .ss-list .ss-option .ss-search-highlight{background-color:#ffc107}.ss-main{color:#212529}.ss-main.is-invalid .ss-single-selected,.ss-main.is-invalid .ss-multi-selected{border-color:#dc3545}.ss-main.is-valid .ss-single-selected,.ss-main.is-valid .ss-multi-selected{border-color:#198754}.ss-main .ss-single-selected,.ss-main .ss-multi-selected{padding:.375rem .75rem;background-color:#fff;border:1px solid #e9ecef}.ss-main .ss-single-selected[disabled],.ss-main .ss-multi-selected[disabled]{color:#6c757d;background-color:#e9ecef}.ss-main div.ss-multi-selected .ss-values .ss-disabled,.ss-main div.ss-single-selected span.placeholder .ss-disabled{color:var(--nbx-select-placeholder-color)}.ss-main .ss-single-selected span.ss-arrow span.arrow-down,.ss-main .ss-single-selected span.ss-arrow span.arrow-up{border-color:currentColor;color:#6c757d}.ss-main .ss-single-selected .placeholder .depth{display:none}.ss-main .ss-single-selected span.placeholder>*,.ss-main .ss-single-selected span.placeholder{line-height:1.5}.ss-main .ss-multi-selected{align-items:center;padding-right:.75rem;padding-left:.75rem}.ss-main .ss-multi-selected .ss-values .ss-disabled{padding:4px 0}.ss-main .ss-multi-selected .ss-values .ss-value{color:var(--nbx-select-value-color);border-radius:.375rem}.ss-main .ss-multi-selected .ss-values .ss-value .depth{display:none}.ss-main .ss-multi-selected .ss-add{margin:0 .75rem}.ss-main .ss-content{background-color:var(--nbx-select-content-bg);border-bottom-right-radius:.375rem;border-bottom-left-radius:.375rem}.ss-main .ss-content .ss-list .ss-option.ss-option-selected{color:#212529;background-color:var(--nbx-select-option-selected-bg)}.ss-main .ss-content .ss-list .ss-option:hover{color:var(--nbx-select-option-hover-color);background-color:var(--nbx-select-option-hover-bg)}.ss-main .ss-content .ss-list .ss-option:last-child{border-bottom-right-radius:.375rem;border-bottom-left-radius:.375rem}.ss-main .ss-content .ss-list .ss-option.ss-disabled{background-color:unset}.ss-main .ss-content .ss-list .ss-option.ss-disabled:hover{color:#6c757d}.ss-main .ss-content .ss-list .ss-option .depth{opacity:.3}.ss-main .ss-content .ss-list::-webkit-scrollbar{right:0;width:4px}.ss-main .ss-content .ss-list::-webkit-scrollbar:hover{opacity:.8}.ss-main .ss-content .ss-list::-webkit-scrollbar-track{background:transparent}.ss-main .ss-content .ss-list::-webkit-scrollbar-thumb{right:0;width:2px;background-color:var(--nbx-sidebar-scroll)}.ss-main .ss-content .ss-search{padding-right:.5rem}.ss-main .ss-content .ss-search button{margin-left:.75rem}.ss-main .ss-content .ss-search input[type=search]{color:#212529;background-color:#fff;border:1px solid #e9ecef}.ss-main .ss-content .ss-search input[type=search]:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}.sidenav{position:fixed;top:0;bottom:0;left:0;z-index:1050;display:block;width:100%;max-width:3rem;padding-top:0;padding-right:0;padding-left:0;background-color:var(--nbx-sidebar-bg);border-right:1px solid #ced4da;transition:all .1s ease-in-out}@media (max-width: 991.98px){.sidenav{transform:translate(-3rem)}.sidenav+.content-container[class]{margin-left:0}.sidenav .profile-button-container[class]{display:block}}.sidenav .profile-button-container{display:none;padding:.5rem 1rem}.sidenav+.content-container{margin-left:3rem;transition:all .1s ease-in-out}.sidenav .sidenav-brand{margin-right:0;transition:opacity .1s ease-in-out}.sidenav .sidenav-brand-icon{transition:opacity .1s ease-in-out}.sidenav .sidenav-inner{padding-right:1.5rem;padding-left:1.5rem}@media (min-width: 768px){.sidenav .sidenav-inner{padding-right:0;padding-left:0}}.sidenav .sidenav-brand-img,.sidenav .sidenav-brand>img{max-width:100%;max-height:calc(16rem - 1rem)}.sidenav .navbar-heading{padding-top:.5rem;padding-bottom:.5rem;font-size:.75rem;text-transform:uppercase;letter-spacing:.04em}.sidenav .sidenav-header{position:relative;display:flex;align-items:center;justify-content:space-between;height:78px;padding:1rem;transition:all .1s ease-in-out}.sidenav .sidenav-toggle{position:absolute;display:inline-block;opacity:0;transition:opacity 10ms ease-in-out;transition-delay:.1s}.sidenav .sidenav-collapse{display:flex;flex:1;flex-direction:column;align-items:stretch;padding-right:1.5rem;padding-left:1.5rem;margin-right:-1.5rem;margin-left:-1.5rem}.sidenav .sidenav-collapse>*{min-width:100%}@media (min-width: 768px){.sidenav .sidenav-collapse{margin-right:0;margin-left:0}}.sidenav .nav-group-header{padding:.25rem 1rem;margin-top:.5rem;margin-bottom:0}.sidenav .nav .nav-item{display:flex;align-items:center;justify-content:space-between;width:100%}.sidenav .nav .nav-item.no-buttons{padding-right:5rem}.sidenav .collapse .nav .nav-item .nav-link{width:100%;padding:.25rem .25rem .25rem 1rem;margin-top:0;margin-bottom:0;border-top-right-radius:.375rem;border-bottom-right-radius:.375rem}.sidenav .collapse .nav .nav-item .nav-link .sidenav-mini-icon{width:1rem;text-align:center;transition:all .1s ease-in-out}.sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle]{width:unset;height:100%;padding-left:.5rem;font-weight:700;color:var(--nbx-sidenav-parent-color)}.sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle].active{color:#343a40;background:#cfe2ff}.sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle]:after{display:inline-block;margin-left:auto;font-family:"Material Design Icons";font-style:normal;font-weight:700;font-variant:normal;color:#6c757d;text-rendering:auto;-webkit-font-smoothing:antialiased;content:"\f0142";transition:all .1s ease-in-out}.sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle][aria-expanded=true].active:after{color:#343a40}.sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle][aria-expanded=true]:after{color:#0d6efd;transform:rotate(90deg)}.sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle] .nav-link-text{padding-left:.25rem;transition:all .1s ease-in-out}.sidenav .navbar-nav{flex-direction:column;margin-right:-1.5rem;margin-left:-1.5rem}.sidenav .navbar-nav .nav-item{margin-top:2px}.sidenav .navbar-nav .nav-item.disabled{cursor:not-allowed;opacity:.8}.sidenav .navbar-nav .nav-item .nav-link{position:relative;display:flex;align-items:center;width:100%;padding:.5rem 1rem;font-size:.875rem;color:var(--nbx-sidenav-link-color);white-space:nowrap;transition:all .1s ease-in-out}.sidenav .navbar-nav .nav-item .nav-link.active{background-color:var(--nbx-sidebar-link-active-bg)}.sidenav .navbar-nav .nav-item .nav-link:hover:not(.active){color:var(--nbx-body-color);background-color:var(--nbx-sidebar-link-hover-bg)}.sidenav .navbar-nav .nav-item .nav-link>i{min-width:2rem;font-size:calc(45px / 2);text-align:center}.sidenav .navbar-nav .nav-group-label{display:block;font-size:.75rem;font-weight:700;color:var(--nbx-sidenav-group-color);text-transform:uppercase;white-space:nowrap}body[data-sidenav-pinned] .sidenav .sidenav-toggle-icon{color:var(--nbx-sidenav-pin-color);transform:rotate(90deg)}@media (min-width: 1200px){body[data-sidenav-pinned] .sidenav+.content-container{margin-left:16rem}}.g-sidenav-show:not(.g-sidenav-pinned) .sidenav .sidenav-toggle-icon{transform:rotate(0)}body[data-sidenav-show] .sidenav,body[data-sidenav-pinned] .sidenav{max-width:16rem}body[data-sidenav-show] .sidenav .sidenav-brand,body[data-sidenav-show] .sidenav .navbar-heading,body[data-sidenav-pinned] .sidenav .sidenav-brand,body[data-sidenav-pinned] .sidenav .navbar-heading{display:block}body[data-sidenav-show] .sidenav .sidenav-brand,body[data-sidenav-pinned] .sidenav .sidenav-brand{opacity:1;transform:translate(0)}body[data-sidenav-show] .sidenav .sidenav-brand-icon,body[data-sidenav-pinned] .sidenav .sidenav-brand-icon{position:absolute;opacity:0}@media (max-width: 991.98px){body[data-sidenav-show] .sidenav,body[data-sidenav-pinned] .sidenav{transform:translate(0)}}body[data-sidenav-hide] .sidenav .sidenav-header,body[data-sidenav-hidden] .sidenav .sidenav-header{padding:.5rem}body[data-sidenav-hide] .sidenav .sidenav-brand,body[data-sidenav-hidden] .sidenav .sidenav-brand{position:absolute;opacity:0}body[data-sidenav-hide] .sidenav .sidenav-brand-icon,body[data-sidenav-hidden] .sidenav .sidenav-brand-icon{opacity:1}body[data-sidenav-hide] .sidenav .sidenav-toggle,body[data-sidenav-hidden] .sidenav .sidenav-toggle{opacity:0;position:absolute;transition:unset;transition-delay:0ms}body[data-sidenav-hide] .sidenav .navbar-nav>.nav-item>.nav-link:after,body[data-sidenav-hidden] .sidenav .navbar-nav>.nav-item>.nav-link:after{content:""}body[data-sidenav-hide] .sidenav .nav-item .collapse,body[data-sidenav-hidden] .sidenav .nav-item .collapse{display:none}body[data-sidenav-hide] .sidenav .nav-link-text,body[data-sidenav-hidden] .sidenav .nav-link-text{opacity:0}body[data-sidenav-hide] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle].active,body[data-sidenav-hidden] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle].active{margin-right:0;margin-left:0;border-radius:unset}body[data-sidenav-show] .sidenav .sidenav-brand{display:block}body[data-sidenav-show] .sidenav .nav-item .collapse{height:auto;transition:all .1s ease-in-out}body[data-sidenav-show] .sidenav .nav-item .nav-link .nav-link-text{opacity:1}body[data-sidenav-show] .sidenav .nav-item .sidenav-mini-icon{opacity:0}@media (min-width: 992px){body[data-sidenav-show] .sidenav .sidenav-toggle{position:relative;opacity:1}}.simplebar-track.simplebar-vertical{right:0;width:6px;background-color:transparent}.simplebar-track.simplebar-vertical .simplebar-scrollbar{transition:none}.simplebar-track.simplebar-vertical .simplebar-scrollbar:before{right:0;width:3px;background:var(--nbx-sidebar-scroll);border-radius:.375rem}.simplebar-track.simplebar-vertical.simplebar-hover .simplebar-scrollbar:before{width:5px}body{color:var(--nbx-body-color);background-color:var(--nbx-body-bg);font-size:.875rem}pre{padding:1rem;white-space:pre;background-color:var(--nbx-pre-bg);border:1px solid var(--nbx-pre-border-color);border-radius:.375rem}small,.small{font-size:smaller!important}a[type=button]{-webkit-appearance:unset!important}*[data-href]{cursor:pointer}.form-control:not([type=file]){font-size:inherit}.badge{font-size:.75rem}.text-xs{font-size:.75rem!important;line-height:1.25!important}.border-input{border:1px solid #e9ecef!important}.ws-nowrap{white-space:nowrap!important}table tr .vertical-align,table td .vertical-align{vertical-align:middle}@media print{.noprint{display:none!important;visibility:hidden!important}}.printonly{display:none!important;visibility:hidden!important}@media print{.printonly{display:block!important;visibility:visible!important}}:root{--nbx-sidebar-bg: #e9ecef;--nbx-sidebar-scroll: #adb5bd;--nbx-sidebar-link-hover-bg: rgba(108, 117, 125, .15);--nbx-sidebar-link-active-bg: #cfe2ff;--nbx-sidebar-title-color: #6c757d;--nbx-sidebar-shadow: inset 0px -25px 20px -25px rgba(0, 0, 0, .25);--nbx-breadcrumb-bg: #e9ecef;--nbx-body-bg: #fff;--nbx-body-color: #343a40;--nbx-pre-bg: #f8f9fa;--nbx-pre-border-color: #6c757d;--nbx-change-added: rgba(25, 135, 84, .4);--nbx-change-removed: rgba(220, 53, 69, .4);--nbx-cable-node-bg: #f8f9fa;--nbx-cable-node-border-color: #e9ecef;--nbx-cable-termination-bg: #e9ecef;--nbx-cable-termination-border-color: #dee2e6;--nbx-search-filter-border-left-color: #dee2e6;--nbx-color-mode-toggle-color: #0d6efd;--nbx-sidenav-link-color: #343a40;--nbx-sidenav-pin-color: #fd7e14;--nbx-sidenav-parent-color: #343a40;--nbx-sidenav-group-color: #343a40}:root[data-netbox-color-mode=dark]{--nbx-sidebar-bg: #212529;--nbx-sidebar-scroll: #495057;--nbx-sidebar-link-active-bg: rgba(110, 168, 254, .25);--nbx-sidebar-link-hover-bg: rgba(173, 181, 189, .15);--nbx-sidebar-title-color: #6c757d;--nbx-sidebar-shadow: inset 0px -25px 20px -25px rgba(255, 255, 255, .05);--nbx-breadcrumb-bg: #343a40;--nbx-body-bg: #1b1f22;--nbx-body-color: #f8f9fa;--nbx-pre-bg: #495057;--nbx-pre-border-color: #6c757d;--nbx-change-added: rgba(117, 183, 152, .4);--nbx-change-removed: rgba(234, 134, 143, .4);--nbx-cable-node-bg: #495057;--nbx-cable-node-border-color: #6c757d;--nbx-cable-termination-bg: #343a40;--nbx-cable-termination-border-color: #495057;--nbx-search-filter-border-left-color: #6c757d;--nbx-color-mode-toggle-color: #ffda6a;--nbx-sidenav-link-color: #e9ecef;--nbx-sidenav-pin-color: #ffc107;--nbx-sidenav-parent-color: #e9ecef;--nbx-sidenav-group-color: #6c757d}.bg-primary button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%231f496e'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-primary{color:#337ab7}.btn.btn-ghost-primary:hover{background-color:#337ab71f}.alert.alert-primary a:not(.btn),.table-primary a:not(.btn){font-weight:700;color:#1f496e}.alert.alert-primary .btn:not([class*=btn-outline]),.table-primary .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-primary a:not(.btn){font-weight:700;color:#adcae2}.badge.bg-primary,.toast.bg-primary,.toast-header.bg-primary,.progress-bar.bg-primary{color:#fff}.bg-secondary button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%2341464b'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-secondary{color:#6c757d}.btn.btn-ghost-secondary:hover{background-color:#6c757d1f}.alert.alert-secondary a:not(.btn),.table-secondary a:not(.btn){font-weight:700;color:#41464b}.alert.alert-secondary .btn:not([class*=btn-outline]),.table-secondary .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-secondary a:not(.btn){font-weight:700;color:#c4c8cb}.badge.bg-secondary,.toast.bg-secondary,.toast-header.bg-secondary,.progress-bar.bg-secondary{color:#fff}.bg-success button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230f5132'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-success{color:#198754}.btn.btn-ghost-success:hover{background-color:#1987541f}.alert.alert-success a:not(.btn),.table-success a:not(.btn){font-weight:700;color:#0f5132}.alert.alert-success .btn:not([class*=btn-outline]),.table-success .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-success a:not(.btn){font-weight:700;color:#a3cfbb}.badge.bg-success,.toast.bg-success,.toast-header.bg-success,.progress-bar.bg-success{color:#fff}.bg-info button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23055160'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-info{color:#0dcaf0}.btn.btn-ghost-info:hover{background-color:#0dcaf01f}.alert.alert-info a:not(.btn),.table-info a:not(.btn){font-weight:700;color:#055160}.alert.alert-info .btn:not([class*=btn-outline]),.table-info .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-info a:not(.btn){font-weight:700;color:#055160}.badge.bg-info,.toast.bg-info,.toast-header.bg-info,.progress-bar.bg-info{color:#000}.bg-warning button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23664d03'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-warning{color:#ffc107}.btn.btn-ghost-warning:hover{background-color:#ffc1071f}.alert.alert-warning a:not(.btn),.table-warning a:not(.btn){font-weight:700;color:#664d03}.alert.alert-warning .btn:not([class*=btn-outline]),.table-warning .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-warning a:not(.btn){font-weight:700;color:#664d03}.badge.bg-warning,.toast.bg-warning,.toast-header.bg-warning,.progress-bar.bg-warning{color:#000}.bg-danger button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23842029'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-danger{color:#dc3545}.btn.btn-ghost-danger:hover{background-color:#dc35451f}.alert.alert-danger a:not(.btn),.table-danger a:not(.btn){font-weight:700;color:#842029}.alert.alert-danger .btn:not([class*=btn-outline]),.table-danger .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-danger a:not(.btn){font-weight:700;color:#f1aeb5}.badge.bg-danger,.toast.bg-danger,.toast-header.bg-danger,.progress-bar.bg-danger{color:#fff}.bg-light button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23636464'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-light{color:#f8f9fa}.btn.btn-ghost-light:hover{background-color:#f8f9fa1f}.alert.alert-light a:not(.btn),.table-light a:not(.btn){font-weight:700;color:#636464}.alert.alert-light .btn:not([class*=btn-outline]),.table-light .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-light a:not(.btn){font-weight:700;color:#636464}.badge.bg-light,.toast.bg-light,.toast-header.bg-light,.progress-bar.bg-light{color:#000}.bg-dark button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23141619'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-dark{color:#212529}.btn.btn-ghost-dark:hover{background-color:#2125291f}.alert.alert-dark a:not(.btn),.table-dark a:not(.btn){font-weight:700;color:#141619}.alert.alert-dark .btn:not([class*=btn-outline]),.table-dark .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-dark a:not(.btn){font-weight:700;color:#a6a8a9}.badge.bg-dark,.toast.bg-dark,.toast-header.bg-dark,.progress-bar.bg-dark{color:#fff}.bg-red button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23842029'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-red{color:#dc3545}.btn.btn-ghost-red:hover{background-color:#dc35451f}.alert.alert-red a:not(.btn),.table-red a:not(.btn){font-weight:700;color:#842029}.alert.alert-red .btn:not([class*=btn-outline]),.table-red .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-red a:not(.btn){font-weight:700;color:#f1aeb5}.badge.bg-red,.toast.bg-red,.toast-header.bg-red,.progress-bar.bg-red{color:#fff}.bg-yellow button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23664d03'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-yellow{color:#ffc107}.btn.btn-ghost-yellow:hover{background-color:#ffc1071f}.alert.alert-yellow a:not(.btn),.table-yellow a:not(.btn){font-weight:700;color:#664d03}.alert.alert-yellow .btn:not([class*=btn-outline]),.table-yellow .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-yellow a:not(.btn){font-weight:700;color:#664d03}.badge.bg-yellow,.toast.bg-yellow,.toast-header.bg-yellow,.progress-bar.bg-yellow{color:#000}.bg-green button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230f5132'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-green{color:#198754}.btn.btn-ghost-green:hover{background-color:#1987541f}.alert.alert-green a:not(.btn),.table-green a:not(.btn){font-weight:700;color:#0f5132}.alert.alert-green .btn:not([class*=btn-outline]),.table-green .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-green a:not(.btn){font-weight:700;color:#a3cfbb}.badge.bg-green,.toast.bg-green,.toast-header.bg-green,.progress-bar.bg-green{color:#fff}.bg-blue button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23084298'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-blue{color:#0d6efd}.btn.btn-ghost-blue:hover{background-color:#0d6efd1f}.alert.alert-blue a:not(.btn),.table-blue a:not(.btn){font-weight:700;color:#084298}.alert.alert-blue .btn:not([class*=btn-outline]),.table-blue .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-blue a:not(.btn){font-weight:700;color:#9ec5fe}.badge.bg-blue,.toast.bg-blue,.toast-header.bg-blue,.progress-bar.bg-blue{color:#fff}.bg-cyan button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23055160'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-cyan{color:#0dcaf0}.btn.btn-ghost-cyan:hover{background-color:#0dcaf01f}.alert.alert-cyan a:not(.btn),.table-cyan a:not(.btn){font-weight:700;color:#055160}.alert.alert-cyan .btn:not([class*=btn-outline]),.table-cyan .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-cyan a:not(.btn){font-weight:700;color:#055160}.badge.bg-cyan,.toast.bg-cyan,.toast-header.bg-cyan,.progress-bar.bg-cyan{color:#000}.bg-indigo button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%233d0a91'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-indigo{color:#6610f2}.btn.btn-ghost-indigo:hover{background-color:#6610f21f}.alert.alert-indigo a:not(.btn),.table-indigo a:not(.btn){font-weight:700;color:#3d0a91}.alert.alert-indigo .btn:not([class*=btn-outline]),.table-indigo .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-indigo a:not(.btn){font-weight:700;color:#c29ffa}.badge.bg-indigo,.toast.bg-indigo,.toast-header.bg-indigo,.progress-bar.bg-indigo{color:#fff}.bg-purple button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23432874'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-purple{color:#6f42c1}.btn.btn-ghost-purple:hover{background-color:#6f42c11f}.alert.alert-purple a:not(.btn),.table-purple a:not(.btn){font-weight:700;color:#432874}.alert.alert-purple .btn:not([class*=btn-outline]),.table-purple .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-purple a:not(.btn){font-weight:700;color:#c5b3e6}.badge.bg-purple,.toast.bg-purple,.toast-header.bg-purple,.progress-bar.bg-purple{color:#fff}.bg-pink button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23801f4f'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-pink{color:#d63384}.btn.btn-ghost-pink:hover{background-color:#d633841f}.alert.alert-pink a:not(.btn),.table-pink a:not(.btn){font-weight:700;color:#801f4f}.alert.alert-pink .btn:not([class*=btn-outline]),.table-pink .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-pink a:not(.btn){font-weight:700;color:#efadce}.badge.bg-pink,.toast.bg-pink,.toast-header.bg-pink,.progress-bar.bg-pink{color:#fff}.bg-darker button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23101314'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-darker{color:#1b1f22}.btn.btn-ghost-darker:hover{background-color:#1b1f221f}.alert.alert-darker a:not(.btn),.table-darker a:not(.btn){font-weight:700;color:#101314}.alert.alert-darker .btn:not([class*=btn-outline]),.table-darker .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-darker a:not(.btn){font-weight:700;color:#a4a5a7}.badge.bg-darker,.toast.bg-darker,.toast-header.bg-darker,.progress-bar.bg-darker{color:#fff}.bg-darkest button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230e1011'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-darkest{color:#171b1d}.btn.btn-ghost-darkest:hover{background-color:#171b1d1f}.alert.alert-darkest a:not(.btn),.table-darkest a:not(.btn){font-weight:700;color:#0e1011}.alert.alert-darkest .btn:not([class*=btn-outline]),.table-darkest .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-darkest a:not(.btn){font-weight:700;color:#a2a4a5}.badge.bg-darkest,.toast.bg-darkest,.toast-header.bg-darkest,.progress-bar.bg-darkest{color:#fff}.bg-gray button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23525557'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-gray{color:#ced4da}.btn.btn-ghost-gray:hover{background-color:#ced4da1f}.alert.alert-gray a:not(.btn),.table-gray a:not(.btn){font-weight:700;color:#525557}.alert.alert-gray .btn:not([class*=btn-outline]),.table-gray .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-gray a:not(.btn){font-weight:700;color:#525557}.badge.bg-gray,.toast.bg-gray,.toast-header.bg-gray,.progress-bar.bg-gray{color:#000}.bg-gray-100 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23636464'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-gray-100{color:#f8f9fa}.btn.btn-ghost-gray-100:hover{background-color:#f8f9fa1f}.alert.alert-gray-100 a:not(.btn),.table-gray-100 a:not(.btn){font-weight:700;color:#636464}.alert.alert-gray-100 .btn:not([class*=btn-outline]),.table-gray-100 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-gray-100 a:not(.btn){font-weight:700;color:#636464}.badge.bg-gray-100,.toast.bg-gray-100,.toast-header.bg-gray-100,.progress-bar.bg-gray-100{color:#000}.bg-gray-200 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%235d5e60'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-gray-200{color:#e9ecef}.btn.btn-ghost-gray-200:hover{background-color:#e9ecef1f}.alert.alert-gray-200 a:not(.btn),.table-gray-200 a:not(.btn){font-weight:700;color:#5d5e60}.alert.alert-gray-200 .btn:not([class*=btn-outline]),.table-gray-200 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-gray-200 a:not(.btn){font-weight:700;color:#5d5e60}.badge.bg-gray-200,.toast.bg-gray-200,.toast-header.bg-gray-200,.progress-bar.bg-gray-200{color:#000}.bg-gray-300 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23595a5c'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-gray-300{color:#dee2e6}.btn.btn-ghost-gray-300:hover{background-color:#dee2e61f}.alert.alert-gray-300 a:not(.btn),.table-gray-300 a:not(.btn){font-weight:700;color:#595a5c}.alert.alert-gray-300 .btn:not([class*=btn-outline]),.table-gray-300 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-gray-300 a:not(.btn){font-weight:700;color:#595a5c}.badge.bg-gray-300,.toast.bg-gray-300,.toast-header.bg-gray-300,.progress-bar.bg-gray-300{color:#000}.bg-gray-400 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23525557'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-gray-400{color:#ced4da}.btn.btn-ghost-gray-400:hover{background-color:#ced4da1f}.alert.alert-gray-400 a:not(.btn),.table-gray-400 a:not(.btn){font-weight:700;color:#525557}.alert.alert-gray-400 .btn:not([class*=btn-outline]),.table-gray-400 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-gray-400 a:not(.btn){font-weight:700;color:#525557}.badge.bg-gray-400,.toast.bg-gray-400,.toast-header.bg-gray-400,.progress-bar.bg-gray-400{color:#000}.bg-gray-500 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23686d71'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-gray-500{color:#adb5bd}.btn.btn-ghost-gray-500:hover{background-color:#adb5bd1f}.alert.alert-gray-500 a:not(.btn),.table-gray-500 a:not(.btn){font-weight:700;color:#686d71}.alert.alert-gray-500 .btn:not([class*=btn-outline]),.table-gray-500 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-gray-500 a:not(.btn){font-weight:700;color:#45484c}.badge.bg-gray-500,.toast.bg-gray-500,.toast-header.bg-gray-500,.progress-bar.bg-gray-500{color:#000}.bg-gray-600 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%2341464b'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-gray-600{color:#6c757d}.btn.btn-ghost-gray-600:hover{background-color:#6c757d1f}.alert.alert-gray-600 a:not(.btn),.table-gray-600 a:not(.btn){font-weight:700;color:#41464b}.alert.alert-gray-600 .btn:not([class*=btn-outline]),.table-gray-600 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-gray-600 a:not(.btn){font-weight:700;color:#c4c8cb}.badge.bg-gray-600,.toast.bg-gray-600,.toast-header.bg-gray-600,.progress-bar.bg-gray-600{color:#fff}.bg-gray-700 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%232c3034'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-gray-700{color:#495057}.btn.btn-ghost-gray-700:hover{background-color:#4950571f}.alert.alert-gray-700 a:not(.btn),.table-gray-700 a:not(.btn){font-weight:700;color:#2c3034}.alert.alert-gray-700 .btn:not([class*=btn-outline]),.table-gray-700 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-gray-700 a:not(.btn){font-weight:700;color:#b6b9bc}.badge.bg-gray-700,.toast.bg-gray-700,.toast-header.bg-gray-700,.progress-bar.bg-gray-700{color:#fff}.bg-gray-800 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%231f2326'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-gray-800{color:#343a40}.btn.btn-ghost-gray-800:hover{background-color:#343a401f}.alert.alert-gray-800 a:not(.btn),.table-gray-800 a:not(.btn){font-weight:700;color:#1f2326}.alert.alert-gray-800 .btn:not([class*=btn-outline]),.table-gray-800 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-gray-800 a:not(.btn){font-weight:700;color:#aeb0b3}.badge.bg-gray-800,.toast.bg-gray-800,.toast-header.bg-gray-800,.progress-bar.bg-gray-800{color:#fff}.bg-gray-900 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23141619'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-gray-900{color:#212529}.btn.btn-ghost-gray-900:hover{background-color:#2125291f}.alert.alert-gray-900 a:not(.btn),.table-gray-900 a:not(.btn){font-weight:700;color:#141619}.alert.alert-gray-900 .btn:not([class*=btn-outline]),.table-gray-900 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-gray-900 a:not(.btn){font-weight:700;color:#a6a8a9}.badge.bg-gray-900,.toast.bg-gray-900,.toast-header.bg-gray-900,.progress-bar.bg-gray-900{color:#fff}.bg-red-100 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23635657'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-red-100{color:#f8d7da}.btn.btn-ghost-red-100:hover{background-color:#f8d7da1f}.alert.alert-red-100 a:not(.btn),.table-red-100 a:not(.btn){font-weight:700;color:#635657}.alert.alert-red-100 .btn:not([class*=btn-outline]),.table-red-100 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-red-100 a:not(.btn){font-weight:700;color:#635657}.badge.bg-red-100,.toast.bg-red-100,.toast-header.bg-red-100,.progress-bar.bg-red-100{color:#000}.bg-red-200 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23604648'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-red-200{color:#f1aeb5}.btn.btn-ghost-red-200:hover{background-color:#f1aeb51f}.alert.alert-red-200 a:not(.btn),.table-red-200 a:not(.btn){font-weight:700;color:#604648}.alert.alert-red-200 .btn:not([class*=btn-outline]),.table-red-200 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-red-200 a:not(.btn){font-weight:700;color:#604648}.badge.bg-red-200,.toast.bg-red-200,.toast-header.bg-red-200,.progress-bar.bg-red-200{color:#000}.bg-red-300 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%238c5056'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-red-300{color:#ea868f}.btn.btn-ghost-red-300:hover{background-color:#ea868f1f}.alert.alert-red-300 a:not(.btn),.table-red-300 a:not(.btn){font-weight:700;color:#8c5056}.alert.alert-red-300 .btn:not([class*=btn-outline]),.table-red-300 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-red-300 a:not(.btn){font-weight:700;color:#5e3639}.badge.bg-red-300,.toast.bg-red-300,.toast-header.bg-red-300,.progress-bar.bg-red-300{color:#000}.bg-red-400 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23883840'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-red-400{color:#e35d6a}.btn.btn-ghost-red-400:hover{background-color:#e35d6a1f}.alert.alert-red-400 a:not(.btn),.table-red-400 a:not(.btn){font-weight:700;color:#883840}.alert.alert-red-400 .btn:not([class*=btn-outline]),.table-red-400 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-red-400 a:not(.btn){font-weight:700;color:#5b252a}.badge.bg-red-400,.toast.bg-red-400,.toast-header.bg-red-400,.progress-bar.bg-red-400{color:#000}.bg-red-500 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23842029'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-red-500{color:#dc3545}.btn.btn-ghost-red-500:hover{background-color:#dc35451f}.alert.alert-red-500 a:not(.btn),.table-red-500 a:not(.btn){font-weight:700;color:#842029}.alert.alert-red-500 .btn:not([class*=btn-outline]),.table-red-500 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-red-500 a:not(.btn){font-weight:700;color:#f1aeb5}.badge.bg-red-500,.toast.bg-red-500,.toast-header.bg-red-500,.progress-bar.bg-red-500{color:#fff}.bg-red-600 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236a1921'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-red-600{color:#b02a37}.btn.btn-ghost-red-600:hover{background-color:#b02a371f}.alert.alert-red-600 a:not(.btn),.table-red-600 a:not(.btn){font-weight:700;color:#6a1921}.alert.alert-red-600 .btn:not([class*=btn-outline]),.table-red-600 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-red-600 a:not(.btn){font-weight:700;color:#dfaaaf}.badge.bg-red-600,.toast.bg-red-600,.toast-header.bg-red-600,.progress-bar.bg-red-600{color:#fff}.bg-red-700 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%234f1319'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-red-700{color:#842029}.btn.btn-ghost-red-700:hover{background-color:#8420291f}.alert.alert-red-700 a:not(.btn),.table-red-700 a:not(.btn){font-weight:700;color:#4f1319}.alert.alert-red-700 .btn:not([class*=btn-outline]),.table-red-700 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-red-700 a:not(.btn){font-weight:700;color:#cea6a9}.badge.bg-red-700,.toast.bg-red-700,.toast-header.bg-red-700,.progress-bar.bg-red-700{color:#fff}.bg-red-800 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23350d11'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-red-800{color:#58151c}.btn.btn-ghost-red-800:hover{background-color:#58151c1f}.alert.alert-red-800 a:not(.btn),.table-red-800 a:not(.btn){font-weight:700;color:#350d11}.alert.alert-red-800 .btn:not([class*=btn-outline]),.table-red-800 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-red-800 a:not(.btn){font-weight:700;color:#bca1a4}.badge.bg-red-800,.toast.bg-red-800,.toast-header.bg-red-800,.progress-bar.bg-red-800{color:#fff}.bg-red-900 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%231a0708'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-red-900{color:#2c0b0e}.btn.btn-ghost-red-900:hover{background-color:#2c0b0e1f}.alert.alert-red-900 a:not(.btn),.table-red-900 a:not(.btn){font-weight:700;color:#1a0708}.alert.alert-red-900 .btn:not([class*=btn-outline]),.table-red-900 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-red-900 a:not(.btn){font-weight:700;color:#ab9d9f}.badge.bg-red-900,.toast.bg-red-900,.toast-header.bg-red-900,.progress-bar.bg-red-900{color:#fff}.bg-yellow-100 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23666152'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-yellow-100{color:#fff3cd}.btn.btn-ghost-yellow-100:hover{background-color:#fff3cd1f}.alert.alert-yellow-100 a:not(.btn),.table-yellow-100 a:not(.btn){font-weight:700;color:#666152}.alert.alert-yellow-100 .btn:not([class*=btn-outline]),.table-yellow-100 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-yellow-100 a:not(.btn){font-weight:700;color:#666152}.badge.bg-yellow-100,.toast.bg-yellow-100,.toast-header.bg-yellow-100,.progress-bar.bg-yellow-100{color:#000}.bg-yellow-200 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23665c3e'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-yellow-200{color:#ffe69c}.btn.btn-ghost-yellow-200:hover{background-color:#ffe69c1f}.alert.alert-yellow-200 a:not(.btn),.table-yellow-200 a:not(.btn){font-weight:700;color:#665c3e}.alert.alert-yellow-200 .btn:not([class*=btn-outline]),.table-yellow-200 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-yellow-200 a:not(.btn){font-weight:700;color:#665c3e}.badge.bg-yellow-200,.toast.bg-yellow-200,.toast-header.bg-yellow-200,.progress-bar.bg-yellow-200{color:#000}.bg-yellow-300 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%2366572a'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-yellow-300{color:#ffda6a}.btn.btn-ghost-yellow-300:hover{background-color:#ffda6a1f}.alert.alert-yellow-300 a:not(.btn),.table-yellow-300 a:not(.btn){font-weight:700;color:#66572a}.alert.alert-yellow-300 .btn:not([class*=btn-outline]),.table-yellow-300 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-yellow-300 a:not(.btn){font-weight:700;color:#66572a}.badge.bg-yellow-300,.toast.bg-yellow-300,.toast-header.bg-yellow-300,.progress-bar.bg-yellow-300{color:#000}.bg-yellow-400 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23665217'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-yellow-400{color:#ffcd39}.btn.btn-ghost-yellow-400:hover{background-color:#ffcd391f}.alert.alert-yellow-400 a:not(.btn),.table-yellow-400 a:not(.btn){font-weight:700;color:#665217}.alert.alert-yellow-400 .btn:not([class*=btn-outline]),.table-yellow-400 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-yellow-400 a:not(.btn){font-weight:700;color:#665217}.badge.bg-yellow-400,.toast.bg-yellow-400,.toast-header.bg-yellow-400,.progress-bar.bg-yellow-400{color:#000}.bg-yellow-500 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23664d03'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-yellow-500{color:#ffc107}.btn.btn-ghost-yellow-500:hover{background-color:#ffc1071f}.alert.alert-yellow-500 a:not(.btn),.table-yellow-500 a:not(.btn){font-weight:700;color:#664d03}.alert.alert-yellow-500 .btn:not([class*=btn-outline]),.table-yellow-500 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-yellow-500 a:not(.btn){font-weight:700;color:#664d03}.badge.bg-yellow-500,.toast.bg-yellow-500,.toast-header.bg-yellow-500,.progress-bar.bg-yellow-500{color:#000}.bg-yellow-600 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%237a5c04'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-yellow-600{color:#cc9a06}.btn.btn-ghost-yellow-600:hover{background-color:#cc9a061f}.alert.alert-yellow-600 a:not(.btn),.table-yellow-600 a:not(.btn){font-weight:700;color:#7a5c04}.alert.alert-yellow-600 .btn:not([class*=btn-outline]),.table-yellow-600 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-yellow-600 a:not(.btn){font-weight:700;color:#523e02}.badge.bg-yellow-600,.toast.bg-yellow-600,.toast-header.bg-yellow-600,.progress-bar.bg-yellow-600{color:#000}.bg-yellow-700 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%235c4602'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-yellow-700{color:#997404}.btn.btn-ghost-yellow-700:hover{background-color:#9974041f}.alert.alert-yellow-700 a:not(.btn),.table-yellow-700 a:not(.btn){font-weight:700;color:#5c4602}.alert.alert-yellow-700 .btn:not([class*=btn-outline]),.table-yellow-700 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-yellow-700 a:not(.btn){font-weight:700;color:#3d2e02}.badge.bg-yellow-700,.toast.bg-yellow-700,.toast-header.bg-yellow-700,.progress-bar.bg-yellow-700{color:#000}.bg-yellow-800 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%233d2e02'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-yellow-800{color:#664d03}.btn.btn-ghost-yellow-800:hover{background-color:#664d031f}.alert.alert-yellow-800 a:not(.btn),.table-yellow-800 a:not(.btn){font-weight:700;color:#3d2e02}.alert.alert-yellow-800 .btn:not([class*=btn-outline]),.table-yellow-800 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-yellow-800 a:not(.btn){font-weight:700;color:#c2b89a}.badge.bg-yellow-800,.toast.bg-yellow-800,.toast-header.bg-yellow-800,.progress-bar.bg-yellow-800{color:#fff}.bg-yellow-900 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%231f1701'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-yellow-900{color:#332701}.btn.btn-ghost-yellow-900:hover{background-color:#3327011f}.alert.alert-yellow-900 a:not(.btn),.table-yellow-900 a:not(.btn){font-weight:700;color:#1f1701}.alert.alert-yellow-900 .btn:not([class*=btn-outline]),.table-yellow-900 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-yellow-900 a:not(.btn){font-weight:700;color:#ada999}.badge.bg-yellow-900,.toast.bg-yellow-900,.toast-header.bg-yellow-900,.progress-bar.bg-yellow-900{color:#fff}.bg-green-100 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23545c58'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-green-100{color:#d1e7dd}.btn.btn-ghost-green-100:hover{background-color:#d1e7dd1f}.alert.alert-green-100 a:not(.btn),.table-green-100 a:not(.btn){font-weight:700;color:#545c58}.alert.alert-green-100 .btn:not([class*=btn-outline]),.table-green-100 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-green-100 a:not(.btn){font-weight:700;color:#545c58}.badge.bg-green-100,.toast.bg-green-100,.toast-header.bg-green-100,.progress-bar.bg-green-100{color:#000}.bg-green-200 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%2341534b'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-green-200{color:#a3cfbb}.btn.btn-ghost-green-200:hover{background-color:#a3cfbb1f}.alert.alert-green-200 a:not(.btn),.table-green-200 a:not(.btn){font-weight:700;color:#41534b}.alert.alert-green-200 .btn:not([class*=btn-outline]),.table-green-200 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-green-200 a:not(.btn){font-weight:700;color:#41534b}.badge.bg-green-200,.toast.bg-green-200,.toast-header.bg-green-200,.progress-bar.bg-green-200{color:#000}.bg-green-300 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23466e5b'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-green-300{color:#75b798}.btn.btn-ghost-green-300:hover{background-color:#75b7981f}.alert.alert-green-300 a:not(.btn),.table-green-300 a:not(.btn){font-weight:700;color:#466e5b}.alert.alert-green-300 .btn:not([class*=btn-outline]),.table-green-300 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-green-300 a:not(.btn){font-weight:700;color:#2f493d}.badge.bg-green-300,.toast.bg-green-300,.toast-header.bg-green-300,.progress-bar.bg-green-300{color:#000}.bg-green-400 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%232b5f47'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-green-400{color:#479f76}.btn.btn-ghost-green-400:hover{background-color:#479f761f}.alert.alert-green-400 a:not(.btn),.table-green-400 a:not(.btn){font-weight:700;color:#2b5f47}.alert.alert-green-400 .btn:not([class*=btn-outline]),.table-green-400 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-green-400 a:not(.btn){font-weight:700;color:#1c402f}.badge.bg-green-400,.toast.bg-green-400,.toast-header.bg-green-400,.progress-bar.bg-green-400{color:#000}.bg-green-500 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230f5132'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-green-500{color:#198754}.btn.btn-ghost-green-500:hover{background-color:#1987541f}.alert.alert-green-500 a:not(.btn),.table-green-500 a:not(.btn){font-weight:700;color:#0f5132}.alert.alert-green-500 .btn:not([class*=btn-outline]),.table-green-500 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-green-500 a:not(.btn){font-weight:700;color:#a3cfbb}.badge.bg-green-500,.toast.bg-green-500,.toast-header.bg-green-500,.progress-bar.bg-green-500{color:#fff}.bg-green-600 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230c4128'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-green-600{color:#146c43}.btn.btn-ghost-green-600:hover{background-color:#146c431f}.alert.alert-green-600 a:not(.btn),.table-green-600 a:not(.btn){font-weight:700;color:#0c4128}.alert.alert-green-600 .btn:not([class*=btn-outline]),.table-green-600 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-green-600 a:not(.btn){font-weight:700;color:#a1c4b4}.badge.bg-green-600,.toast.bg-green-600,.toast-header.bg-green-600,.progress-bar.bg-green-600{color:#fff}.bg-green-700 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%2309311e'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-green-700{color:#0f5132}.btn.btn-ghost-green-700:hover{background-color:#0f51321f}.alert.alert-green-700 a:not(.btn),.table-green-700 a:not(.btn){font-weight:700;color:#09311e}.alert.alert-green-700 .btn:not([class*=btn-outline]),.table-green-700 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-green-700 a:not(.btn){font-weight:700;color:#9fb9ad}.badge.bg-green-700,.toast.bg-green-700,.toast-header.bg-green-700,.progress-bar.bg-green-700{color:#fff}.bg-green-800 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23062014'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-green-800{color:#0a3622}.btn.btn-ghost-green-800:hover{background-color:#0a36221f}.alert.alert-green-800 a:not(.btn),.table-green-800 a:not(.btn){font-weight:700;color:#062014}.alert.alert-green-800 .btn:not([class*=btn-outline]),.table-green-800 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-green-800 a:not(.btn){font-weight:700;color:#9dafa7}.badge.bg-green-800,.toast.bg-green-800,.toast-header.bg-green-800,.progress-bar.bg-green-800{color:#fff}.bg-green-900 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%2303100a'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-green-900{color:#051b11}.btn.btn-ghost-green-900:hover{background-color:#051b111f}.alert.alert-green-900 a:not(.btn),.table-green-900 a:not(.btn){font-weight:700;color:#03100a}.alert.alert-green-900 .btn:not([class*=btn-outline]),.table-green-900 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-green-900 a:not(.btn){font-weight:700;color:#9ba4a0}.badge.bg-green-900,.toast.bg-green-900,.toast-header.bg-green-900,.progress-bar.bg-green-900{color:#fff}.bg-blue-100 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23535a66'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-blue-100{color:#cfe2ff}.btn.btn-ghost-blue-100:hover{background-color:#cfe2ff1f}.alert.alert-blue-100 a:not(.btn),.table-blue-100 a:not(.btn){font-weight:700;color:#535a66}.alert.alert-blue-100 .btn:not([class*=btn-outline]),.table-blue-100 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-blue-100 a:not(.btn){font-weight:700;color:#535a66}.badge.bg-blue-100,.toast.bg-blue-100,.toast-header.bg-blue-100,.progress-bar.bg-blue-100{color:#000}.bg-blue-200 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%233f4f66'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-blue-200{color:#9ec5fe}.btn.btn-ghost-blue-200:hover{background-color:#9ec5fe1f}.alert.alert-blue-200 a:not(.btn),.table-blue-200 a:not(.btn){font-weight:700;color:#3f4f66}.alert.alert-blue-200 .btn:not([class*=btn-outline]),.table-blue-200 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-blue-200 a:not(.btn){font-weight:700;color:#3f4f66}.badge.bg-blue-200,.toast.bg-blue-200,.toast-header.bg-blue-200,.progress-bar.bg-blue-200{color:#000}.bg-blue-300 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23426598'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-blue-300{color:#6ea8fe}.btn.btn-ghost-blue-300:hover{background-color:#6ea8fe1f}.alert.alert-blue-300 a:not(.btn),.table-blue-300 a:not(.btn){font-weight:700;color:#426598}.alert.alert-blue-300 .btn:not([class*=btn-outline]),.table-blue-300 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-blue-300 a:not(.btn){font-weight:700;color:#2c4366}.badge.bg-blue-300,.toast.bg-blue-300,.toast-header.bg-blue-300,.progress-bar.bg-blue-300{color:#000}.bg-blue-400 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23255398'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-blue-400{color:#3d8bfd}.btn.btn-ghost-blue-400:hover{background-color:#3d8bfd1f}.alert.alert-blue-400 a:not(.btn),.table-blue-400 a:not(.btn){font-weight:700;color:#255398}.alert.alert-blue-400 .btn:not([class*=btn-outline]),.table-blue-400 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-blue-400 a:not(.btn){font-weight:700;color:#183865}.badge.bg-blue-400,.toast.bg-blue-400,.toast-header.bg-blue-400,.progress-bar.bg-blue-400{color:#000}.bg-blue-500 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23084298'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-blue-500{color:#0d6efd}.btn.btn-ghost-blue-500:hover{background-color:#0d6efd1f}.alert.alert-blue-500 a:not(.btn),.table-blue-500 a:not(.btn){font-weight:700;color:#084298}.alert.alert-blue-500 .btn:not([class*=btn-outline]),.table-blue-500 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-blue-500 a:not(.btn){font-weight:700;color:#9ec5fe}.badge.bg-blue-500,.toast.bg-blue-500,.toast-header.bg-blue-500,.progress-bar.bg-blue-500{color:#fff}.bg-blue-600 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23063579'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-blue-600{color:#0a58ca}.btn.btn-ghost-blue-600:hover{background-color:#0a58ca1f}.alert.alert-blue-600 a:not(.btn),.table-blue-600 a:not(.btn){font-weight:700;color:#063579}.alert.alert-blue-600 .btn:not([class*=btn-outline]),.table-blue-600 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-blue-600 a:not(.btn){font-weight:700;color:#9dbcea}.badge.bg-blue-600,.toast.bg-blue-600,.toast-header.bg-blue-600,.progress-bar.bg-blue-600{color:#fff}.bg-blue-700 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%2305285b'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-blue-700{color:#084298}.btn.btn-ghost-blue-700:hover{background-color:#0842981f}.alert.alert-blue-700 a:not(.btn),.table-blue-700 a:not(.btn){font-weight:700;color:#05285b}.alert.alert-blue-700 .btn:not([class*=btn-outline]),.table-blue-700 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-blue-700 a:not(.btn){font-weight:700;color:#9cb3d6}.badge.bg-blue-700,.toast.bg-blue-700,.toast-header.bg-blue-700,.progress-bar.bg-blue-700{color:#fff}.bg-blue-800 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23031a3d'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-blue-800{color:#052c65}.btn.btn-ghost-blue-800:hover{background-color:#052c651f}.alert.alert-blue-800 a:not(.btn),.table-blue-800 a:not(.btn){font-weight:700;color:#031a3d}.alert.alert-blue-800 .btn:not([class*=btn-outline]),.table-blue-800 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-blue-800 a:not(.btn){font-weight:700;color:#9babc1}.badge.bg-blue-800,.toast.bg-blue-800,.toast-header.bg-blue-800,.progress-bar.bg-blue-800{color:#fff}.bg-blue-900 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23020d1f'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-blue-900{color:#031633}.btn.btn-ghost-blue-900:hover{background-color:#0316331f}.alert.alert-blue-900 a:not(.btn),.table-blue-900 a:not(.btn){font-weight:700;color:#020d1f}.alert.alert-blue-900 .btn:not([class*=btn-outline]),.table-blue-900 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-blue-900 a:not(.btn){font-weight:700;color:#9aa2ad}.badge.bg-blue-900,.toast.bg-blue-900,.toast-header.bg-blue-900,.progress-bar.bg-blue-900{color:#fff}.bg-cyan-100 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23536265'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-cyan-100{color:#cff4fc}.btn.btn-ghost-cyan-100:hover{background-color:#cff4fc1f}.alert.alert-cyan-100 a:not(.btn),.table-cyan-100 a:not(.btn){font-weight:700;color:#536265}.alert.alert-cyan-100 .btn:not([class*=btn-outline]),.table-cyan-100 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-cyan-100 a:not(.btn){font-weight:700;color:#536265}.badge.bg-cyan-100,.toast.bg-cyan-100,.toast-header.bg-cyan-100,.progress-bar.bg-cyan-100{color:#000}.bg-cyan-200 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%233f5e64'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-cyan-200{color:#9eeaf9}.btn.btn-ghost-cyan-200:hover{background-color:#9eeaf91f}.alert.alert-cyan-200 a:not(.btn),.table-cyan-200 a:not(.btn){font-weight:700;color:#3f5e64}.alert.alert-cyan-200 .btn:not([class*=btn-outline]),.table-cyan-200 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-cyan-200 a:not(.btn){font-weight:700;color:#3f5e64}.badge.bg-cyan-200,.toast.bg-cyan-200,.toast-header.bg-cyan-200,.progress-bar.bg-cyan-200{color:#000}.bg-cyan-300 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%232c5962'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-cyan-300{color:#6edff6}.btn.btn-ghost-cyan-300:hover{background-color:#6edff61f}.alert.alert-cyan-300 a:not(.btn),.table-cyan-300 a:not(.btn){font-weight:700;color:#2c5962}.alert.alert-cyan-300 .btn:not([class*=btn-outline]),.table-cyan-300 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-cyan-300 a:not(.btn){font-weight:700;color:#2c5962}.badge.bg-cyan-300,.toast.bg-cyan-300,.toast-header.bg-cyan-300,.progress-bar.bg-cyan-300{color:#000}.bg-cyan-400 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23185561'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-cyan-400{color:#3dd5f3}.btn.btn-ghost-cyan-400:hover{background-color:#3dd5f31f}.alert.alert-cyan-400 a:not(.btn),.table-cyan-400 a:not(.btn){font-weight:700;color:#185561}.alert.alert-cyan-400 .btn:not([class*=btn-outline]),.table-cyan-400 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-cyan-400 a:not(.btn){font-weight:700;color:#185561}.badge.bg-cyan-400,.toast.bg-cyan-400,.toast-header.bg-cyan-400,.progress-bar.bg-cyan-400{color:#000}.bg-cyan-500 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23055160'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-cyan-500{color:#0dcaf0}.btn.btn-ghost-cyan-500:hover{background-color:#0dcaf01f}.alert.alert-cyan-500 a:not(.btn),.table-cyan-500 a:not(.btn){font-weight:700;color:#055160}.alert.alert-cyan-500 .btn:not([class*=btn-outline]),.table-cyan-500 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-cyan-500 a:not(.btn){font-weight:700;color:#055160}.badge.bg-cyan-500,.toast.bg-cyan-500,.toast-header.bg-cyan-500,.progress-bar.bg-cyan-500{color:#000}.bg-cyan-600 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23066173'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-cyan-600{color:#0aa2c0}.btn.btn-ghost-cyan-600:hover{background-color:#0aa2c01f}.alert.alert-cyan-600 a:not(.btn),.table-cyan-600 a:not(.btn){font-weight:700;color:#066173}.alert.alert-cyan-600 .btn:not([class*=btn-outline]),.table-cyan-600 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-cyan-600 a:not(.btn){font-weight:700;color:#04414d}.badge.bg-cyan-600,.toast.bg-cyan-600,.toast-header.bg-cyan-600,.progress-bar.bg-cyan-600{color:#000}.bg-cyan-700 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23054956'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-cyan-700{color:#087990}.btn.btn-ghost-cyan-700:hover{background-color:#0879901f}.alert.alert-cyan-700 a:not(.btn),.table-cyan-700 a:not(.btn){font-weight:700;color:#054956}.alert.alert-cyan-700 .btn:not([class*=btn-outline]),.table-cyan-700 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-cyan-700 a:not(.btn){font-weight:700;color:#9cc9d3}.badge.bg-cyan-700,.toast.bg-cyan-700,.toast-header.bg-cyan-700,.progress-bar.bg-cyan-700{color:#fff}.bg-cyan-800 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%2303313a'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-cyan-800{color:#055160}.btn.btn-ghost-cyan-800:hover{background-color:#0551601f}.alert.alert-cyan-800 a:not(.btn),.table-cyan-800 a:not(.btn){font-weight:700;color:#03313a}.alert.alert-cyan-800 .btn:not([class*=btn-outline]),.table-cyan-800 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-cyan-800 a:not(.btn){font-weight:700;color:#9bb9bf}.badge.bg-cyan-800,.toast.bg-cyan-800,.toast-header.bg-cyan-800,.progress-bar.bg-cyan-800{color:#fff}.bg-cyan-900 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%2302181d'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-cyan-900{color:#032830}.btn.btn-ghost-cyan-900:hover{background-color:#0328301f}.alert.alert-cyan-900 a:not(.btn),.table-cyan-900 a:not(.btn){font-weight:700;color:#02181d}.alert.alert-cyan-900 .btn:not([class*=btn-outline]),.table-cyan-900 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-cyan-900 a:not(.btn){font-weight:700;color:#9aa9ac}.badge.bg-cyan-900,.toast.bg-cyan-900,.toast-header.bg-cyan-900,.progress-bar.bg-cyan-900{color:#fff}.bg-indigo-100 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%235a5365'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-indigo-100{color:#e0cffc}.btn.btn-ghost-indigo-100:hover{background-color:#e0cffc1f}.alert.alert-indigo-100 a:not(.btn),.table-indigo-100 a:not(.btn){font-weight:700;color:#5a5365}.alert.alert-indigo-100 .btn:not([class*=btn-outline]),.table-indigo-100 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-indigo-100 a:not(.btn){font-weight:700;color:#5a5365}.badge.bg-indigo-100,.toast.bg-indigo-100,.toast-header.bg-indigo-100,.progress-bar.bg-indigo-100{color:#000}.bg-indigo-200 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23745f96'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-indigo-200{color:#c29ffa}.btn.btn-ghost-indigo-200:hover{background-color:#c29ffa1f}.alert.alert-indigo-200 a:not(.btn),.table-indigo-200 a:not(.btn){font-weight:700;color:#745f96}.alert.alert-indigo-200 .btn:not([class*=btn-outline]),.table-indigo-200 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-indigo-200 a:not(.btn){font-weight:700;color:#4e4064}.badge.bg-indigo-200,.toast.bg-indigo-200,.toast-header.bg-indigo-200,.progress-bar.bg-indigo-200{color:#000}.bg-indigo-300 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23624394'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-indigo-300{color:#a370f7}.btn.btn-ghost-indigo-300:hover{background-color:#a370f71f}.alert.alert-indigo-300 a:not(.btn),.table-indigo-300 a:not(.btn){font-weight:700;color:#624394}.alert.alert-indigo-300 .btn:not([class*=btn-outline]),.table-indigo-300 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-indigo-300 a:not(.btn){font-weight:700;color:#412d63}.badge.bg-indigo-300,.toast.bg-indigo-300,.toast-header.bg-indigo-300,.progress-bar.bg-indigo-300{color:#000}.bg-indigo-400 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23502693'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-indigo-400{color:#8540f5}.btn.btn-ghost-indigo-400:hover{background-color:#8540f51f}.alert.alert-indigo-400 a:not(.btn),.table-indigo-400 a:not(.btn){font-weight:700;color:#502693}.alert.alert-indigo-400 .btn:not([class*=btn-outline]),.table-indigo-400 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-indigo-400 a:not(.btn){font-weight:700;color:#ceb3fb}.badge.bg-indigo-400,.toast.bg-indigo-400,.toast-header.bg-indigo-400,.progress-bar.bg-indigo-400{color:#fff}.bg-indigo-500 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%233d0a91'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-indigo-500{color:#6610f2}.btn.btn-ghost-indigo-500:hover{background-color:#6610f21f}.alert.alert-indigo-500 a:not(.btn),.table-indigo-500 a:not(.btn){font-weight:700;color:#3d0a91}.alert.alert-indigo-500 .btn:not([class*=btn-outline]),.table-indigo-500 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-indigo-500 a:not(.btn){font-weight:700;color:#c29ffa}.badge.bg-indigo-500,.toast.bg-indigo-500,.toast-header.bg-indigo-500,.progress-bar.bg-indigo-500{color:#fff}.bg-indigo-600 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23310874'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-indigo-600{color:#520dc2}.btn.btn-ghost-indigo-600:hover{background-color:#520dc21f}.alert.alert-indigo-600 a:not(.btn),.table-indigo-600 a:not(.btn){font-weight:700;color:#310874}.alert.alert-indigo-600 .btn:not([class*=btn-outline]),.table-indigo-600 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-indigo-600 a:not(.btn){font-weight:700;color:#ba9ee7}.badge.bg-indigo-600,.toast.bg-indigo-600,.toast-header.bg-indigo-600,.progress-bar.bg-indigo-600{color:#fff}.bg-indigo-700 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23250657'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-indigo-700{color:#3d0a91}.btn.btn-ghost-indigo-700:hover{background-color:#3d0a911f}.alert.alert-indigo-700 a:not(.btn),.table-indigo-700 a:not(.btn){font-weight:700;color:#250657}.alert.alert-indigo-700 .btn:not([class*=btn-outline]),.table-indigo-700 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-indigo-700 a:not(.btn){font-weight:700;color:#b19dd3}.badge.bg-indigo-700,.toast.bg-indigo-700,.toast-header.bg-indigo-700,.progress-bar.bg-indigo-700{color:#fff}.bg-indigo-800 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%2319043a'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-indigo-800{color:#290661}.btn.btn-ghost-indigo-800:hover{background-color:#2906611f}.alert.alert-indigo-800 a:not(.btn),.table-indigo-800 a:not(.btn){font-weight:700;color:#19043a}.alert.alert-indigo-800 .btn:not([class*=btn-outline]),.table-indigo-800 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-indigo-800 a:not(.btn){font-weight:700;color:#a99bc0}.badge.bg-indigo-800,.toast.bg-indigo-800,.toast-header.bg-indigo-800,.progress-bar.bg-indigo-800{color:#fff}.bg-indigo-900 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230c021d'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-indigo-900{color:#140330}.btn.btn-ghost-indigo-900:hover{background-color:#1403301f}.alert.alert-indigo-900 a:not(.btn),.table-indigo-900 a:not(.btn){font-weight:700;color:#0c021d}.alert.alert-indigo-900 .btn:not([class*=btn-outline]),.table-indigo-900 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-indigo-900 a:not(.btn){font-weight:700;color:#a19aac}.badge.bg-indigo-900,.toast.bg-indigo-900,.toast-header.bg-indigo-900,.progress-bar.bg-indigo-900{color:#fff}.bg-purple-100 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%235a5761'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-purple-100{color:#e2d9f3}.btn.btn-ghost-purple-100:hover{background-color:#e2d9f31f}.alert.alert-purple-100 a:not(.btn),.table-purple-100 a:not(.btn){font-weight:700;color:#5a5761}.alert.alert-purple-100 .btn:not([class*=btn-outline]),.table-purple-100 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-purple-100 a:not(.btn){font-weight:700;color:#5a5761}.badge.bg-purple-100,.toast.bg-purple-100,.toast-header.bg-purple-100,.progress-bar.bg-purple-100{color:#000}.bg-purple-200 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%234f485c'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-purple-200{color:#c5b3e6}.btn.btn-ghost-purple-200:hover{background-color:#c5b3e61f}.alert.alert-purple-200 a:not(.btn),.table-purple-200 a:not(.btn){font-weight:700;color:#4f485c}.alert.alert-purple-200 .btn:not([class*=btn-outline]),.table-purple-200 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-purple-200 a:not(.btn){font-weight:700;color:#4f485c}.badge.bg-purple-200,.toast.bg-purple-200,.toast-header.bg-purple-200,.progress-bar.bg-purple-200{color:#000}.bg-purple-300 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23655583'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-purple-300{color:#a98eda}.btn.btn-ghost-purple-300:hover{background-color:#a98eda1f}.alert.alert-purple-300 a:not(.btn),.table-purple-300 a:not(.btn){font-weight:700;color:#655583}.alert.alert-purple-300 .btn:not([class*=btn-outline]),.table-purple-300 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-purple-300 a:not(.btn){font-weight:700;color:#443957}.badge.bg-purple-300,.toast.bg-purple-300,.toast-header.bg-purple-300,.progress-bar.bg-purple-300{color:#000}.bg-purple-400 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23543e7b'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-purple-400{color:#8c68cd}.btn.btn-ghost-purple-400:hover{background-color:#8c68cd1f}.alert.alert-purple-400 a:not(.btn),.table-purple-400 a:not(.btn){font-weight:700;color:#543e7b}.alert.alert-purple-400 .btn:not([class*=btn-outline]),.table-purple-400 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-purple-400 a:not(.btn){font-weight:700;color:#382a52}.badge.bg-purple-400,.toast.bg-purple-400,.toast-header.bg-purple-400,.progress-bar.bg-purple-400{color:#000}.bg-purple-500 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23432874'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-purple-500{color:#6f42c1}.btn.btn-ghost-purple-500:hover{background-color:#6f42c11f}.alert.alert-purple-500 a:not(.btn),.table-purple-500 a:not(.btn){font-weight:700;color:#432874}.alert.alert-purple-500 .btn:not([class*=btn-outline]),.table-purple-500 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-purple-500 a:not(.btn){font-weight:700;color:#c5b3e6}.badge.bg-purple-500,.toast.bg-purple-500,.toast-header.bg-purple-500,.progress-bar.bg-purple-500{color:#fff}.bg-purple-600 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%2335205c'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-purple-600{color:#59359a}.btn.btn-ghost-purple-600:hover{background-color:#59359a1f}.alert.alert-purple-600 a:not(.btn),.table-purple-600 a:not(.btn){font-weight:700;color:#35205c}.alert.alert-purple-600 .btn:not([class*=btn-outline]),.table-purple-600 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-purple-600 a:not(.btn){font-weight:700;color:#bdaed7}.badge.bg-purple-600,.toast.bg-purple-600,.toast-header.bg-purple-600,.progress-bar.bg-purple-600{color:#fff}.bg-purple-700 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23281846'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-purple-700{color:#432874}.btn.btn-ghost-purple-700:hover{background-color:#4328741f}.alert.alert-purple-700 a:not(.btn),.table-purple-700 a:not(.btn){font-weight:700;color:#281846}.alert.alert-purple-700 .btn:not([class*=btn-outline]),.table-purple-700 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-purple-700 a:not(.btn){font-weight:700;color:#b4a9c7}.badge.bg-purple-700,.toast.bg-purple-700,.toast-header.bg-purple-700,.progress-bar.bg-purple-700{color:#fff}.bg-purple-800 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%231a102e'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-purple-800{color:#2c1a4d}.btn.btn-ghost-purple-800:hover{background-color:#2c1a4d1f}.alert.alert-purple-800 a:not(.btn),.table-purple-800 a:not(.btn){font-weight:700;color:#1a102e}.alert.alert-purple-800 .btn:not([class*=btn-outline]),.table-purple-800 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-purple-800 a:not(.btn){font-weight:700;color:#aba3b8}.badge.bg-purple-800,.toast.bg-purple-800,.toast-header.bg-purple-800,.progress-bar.bg-purple-800{color:#fff}.bg-purple-900 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230d0817'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-purple-900{color:#160d27}.btn.btn-ghost-purple-900:hover{background-color:#160d271f}.alert.alert-purple-900 a:not(.btn),.table-purple-900 a:not(.btn){font-weight:700;color:#0d0817}.alert.alert-purple-900 .btn:not([class*=btn-outline]),.table-purple-900 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-purple-900 a:not(.btn){font-weight:700;color:#a29ea9}.badge.bg-purple-900,.toast.bg-purple-900,.toast-header.bg-purple-900,.progress-bar.bg-purple-900{color:#fff}.bg-pink-100 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%2363565c'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-pink-100{color:#f7d6e6}.btn.btn-ghost-pink-100:hover{background-color:#f7d6e61f}.alert.alert-pink-100 a:not(.btn),.table-pink-100 a:not(.btn){font-weight:700;color:#63565c}.alert.alert-pink-100 .btn:not([class*=btn-outline]),.table-pink-100 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-pink-100 a:not(.btn){font-weight:700;color:#63565c}.badge.bg-pink-100,.toast.bg-pink-100,.toast-header.bg-pink-100,.progress-bar.bg-pink-100{color:#000}.bg-pink-200 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23604552'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-pink-200{color:#efadce}.btn.btn-ghost-pink-200:hover{background-color:#efadce1f}.alert.alert-pink-200 a:not(.btn),.table-pink-200 a:not(.btn){font-weight:700;color:#604552}.alert.alert-pink-200 .btn:not([class*=btn-outline]),.table-pink-200 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-pink-200 a:not(.btn){font-weight:700;color:#604552}.badge.bg-pink-200,.toast.bg-pink-200,.toast-header.bg-pink-200,.progress-bar.bg-pink-200{color:#000}.bg-pink-300 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%238a506d'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-pink-300{color:#e685b5}.btn.btn-ghost-pink-300:hover{background-color:#e685b51f}.alert.alert-pink-300 a:not(.btn),.table-pink-300 a:not(.btn){font-weight:700;color:#8a506d}.alert.alert-pink-300 .btn:not([class*=btn-outline]),.table-pink-300 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-pink-300 a:not(.btn){font-weight:700;color:#5c3548}.badge.bg-pink-300,.toast.bg-pink-300,.toast-header.bg-pink-300,.progress-bar.bg-pink-300{color:#000}.bg-pink-400 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%2385375e'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-pink-400{color:#de5c9d}.btn.btn-ghost-pink-400:hover{background-color:#de5c9d1f}.alert.alert-pink-400 a:not(.btn),.table-pink-400 a:not(.btn){font-weight:700;color:#85375e}.alert.alert-pink-400 .btn:not([class*=btn-outline]),.table-pink-400 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-pink-400 a:not(.btn){font-weight:700;color:#59253f}.badge.bg-pink-400,.toast.bg-pink-400,.toast-header.bg-pink-400,.progress-bar.bg-pink-400{color:#000}.bg-pink-500 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23801f4f'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-pink-500{color:#d63384}.btn.btn-ghost-pink-500:hover{background-color:#d633841f}.alert.alert-pink-500 a:not(.btn),.table-pink-500 a:not(.btn){font-weight:700;color:#801f4f}.alert.alert-pink-500 .btn:not([class*=btn-outline]),.table-pink-500 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-pink-500 a:not(.btn){font-weight:700;color:#efadce}.badge.bg-pink-500,.toast.bg-pink-500,.toast-header.bg-pink-500,.progress-bar.bg-pink-500{color:#fff}.bg-pink-600 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23671940'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-pink-600{color:#ab296a}.btn.btn-ghost-pink-600:hover{background-color:#ab296a1f}.alert.alert-pink-600 a:not(.btn),.table-pink-600 a:not(.btn){font-weight:700;color:#671940}.alert.alert-pink-600 .btn:not([class*=btn-outline]),.table-pink-600 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-pink-600 a:not(.btn){font-weight:700;color:#dda9c3}.badge.bg-pink-600,.toast.bg-pink-600,.toast-header.bg-pink-600,.progress-bar.bg-pink-600{color:#fff}.bg-pink-700 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%234d132f'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-pink-700{color:#801f4f}.btn.btn-ghost-pink-700:hover{background-color:#801f4f1f}.alert.alert-pink-700 a:not(.btn),.table-pink-700 a:not(.btn){font-weight:700;color:#4d132f}.alert.alert-pink-700 .btn:not([class*=btn-outline]),.table-pink-700 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-pink-700 a:not(.btn){font-weight:700;color:#cca5b9}.badge.bg-pink-700,.toast.bg-pink-700,.toast-header.bg-pink-700,.progress-bar.bg-pink-700{color:#fff}.bg-pink-800 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23340c20'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-pink-800{color:#561435}.btn.btn-ghost-pink-800:hover{background-color:#5614351f}.alert.alert-pink-800 a:not(.btn),.table-pink-800 a:not(.btn){font-weight:700;color:#340c20}.alert.alert-pink-800 .btn:not([class*=btn-outline]),.table-pink-800 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-pink-800 a:not(.btn){font-weight:700;color:#bba1ae}.badge.bg-pink-800,.toast.bg-pink-800,.toast-header.bg-pink-800,.progress-bar.bg-pink-800{color:#fff}.bg-pink-900 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%231a0610'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-pink-900{color:#2b0a1a}.btn.btn-ghost-pink-900:hover{background-color:#2b0a1a1f}.alert.alert-pink-900 a:not(.btn),.table-pink-900 a:not(.btn){font-weight:700;color:#1a0610}.alert.alert-pink-900 .btn:not([class*=btn-outline]),.table-pink-900 .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-pink-900 a:not(.btn){font-weight:700;color:#aa9da3}.badge.bg-pink-900,.toast.bg-pink-900,.toast-header.bg-pink-900,.progress-bar.bg-pink-900{color:#fff}table td>.progress{min-width:6rem}.small .form-control{font-size:.875rem}:not(.card-body)>.col:not(:last-child):not(:only-child){margin-bottom:1rem}.nav-mobile{display:none;flex-direction:column;align-items:center;justify-content:space-between;width:100%}@media (max-width: 991.98px){.nav-mobile{display:flex}}.nav-mobile .nav-mobile-top{display:flex;align-items:center;justify-content:space-between;width:100%}.card>.table.table-flush{margin-bottom:0;overflow:hidden;border-bottom-right-radius:.375rem;border-bottom-left-radius:.375rem}.card>.table.table-flush thead th[scope=col]{padding-top:1rem;padding-bottom:1rem;text-transform:uppercase;vertical-align:middle;background-color:#f8f9fa;border-top:1px solid rgba(0,0,0,.125);border-bottom-color:#00000020}.card>.table.table-flush th,.card>.table.table-flush td{padding-right:1.5rem!important;padding-left:1.5rem!important;border-right:0;border-left:0}.card>.table.table-flush tr[class]{border-color:#00000020!important}.card>.table.table-flush tr[class]:last-of-type{border-bottom-color:transparent!important;border-bottom-right-radius:.375rem;border-bottom-left-radius:.375rem}.header-alert-container{display:flex;align-items:center;justify-content:center;padding:0 1rem}.header-alert-container .alert{width:100%}@media (min-width: 768px){.header-alert-container .alert{max-width:75%}}@media (min-width: 992px){.header-alert-container .alert{max-width:50%}}span.profile-button .dropdown-menu{right:0;left:auto;display:block!important;margin-top:.5rem;box-shadow:0 .5rem 1rem #00000026;transition:opacity .2s ease-in-out}span.profile-button .dropdown-menu:not(.show){pointer-events:none;opacity:0}span.profile-button .dropdown-menu.show{pointer-events:auto;opacity:1}div#advanced-search-content div.card div.card-body div.col:not(:last-child){margin-right:1rem}table td a{text-decoration:none}table td a:hover{text-decoration:underline}table td .dropdown{position:static}table th a,table th a:hover{color:#212529;text-decoration:none}table td,table th{font-size:.875rem;line-height:1.25;vertical-align:middle}table td.min-width,table th.min-width{width:1%}table td .form-check-input,table th .form-check-input{margin-top:.125em;font-size:1rem}table td .btn-sm,table td .btn-group-sm>.btn,table th .btn-sm,table th .btn-group-sm>.btn{line-height:1}table td p,table th p{margin-bottom:0}table.table>:not(caption)>*>*{padding-right:.25rem!important;padding-left:.25rem!important}table.object-list th{font-size:.75rem;line-height:1;vertical-align:bottom}table.attr-table th{font-weight:normal;width:25%}div.title-container{display:flex;flex-direction:column;flex-wrap:wrap;justify-content:space-between}@media (min-width: 992px){div.title-container{flex-direction:row}}div.title-container #content-title{display:flex;flex:1 0;flex-direction:column;padding-bottom:.5rem}.controls{margin-bottom:.5rem}@media print{.controls{display:none!important}}.controls .control-group{display:flex;flex-wrap:wrap;justify-content:flex-start}@media (min-width: 992px){.controls .control-group{justify-content:flex-end}}.controls .control-group>*{margin:.25rem}.controls .control-group>*:first-child{margin-left:0}.controls .control-group>*:last-child{margin-right:0}.object-subtitle{display:block;font-size:.875rem;color:#6c757d}@media (min-width: 768px){.object-subtitle{display:inline-block}}.object-subtitle>span{display:block}.object-subtitle>span.separator{display:none}@media (min-width: 768px){.object-subtitle>span,.object-subtitle>span.separator{display:inline-block}}nav.search{z-index:999;justify-content:center;background-color:var(--nbx-body-bg)}nav.search .search-container{display:flex;width:100%}@media (max-width: 991.98px){nav.search .search-container{display:none}}nav.search .input-group .search-obj-selected{border-color:#e9ecef}nav.search .input-group .dropdown-toggle{color:#000;border-color:#e9ecef;margin-left:0;font-weight:400;line-height:1.5;color:#212529;background-color:#e9ecef;border:1px solid #e9ecef;border-radius:.375rem;border-left:1px solid var(--nbx-search-filter-border-left-color)}nav.search .input-group .dropdown-toggle:hover{color:#000;background-color:#eceff1;border-color:#ebeef1}.btn-check:focus+nav.search .input-group .dropdown-toggle,nav.search .input-group .dropdown-toggle:focus{color:#000;background-color:#eceff1;border-color:#ebeef1;box-shadow:0 0 0 .25rem #c6c9cb80}.btn-check:checked+nav.search .input-group .dropdown-toggle,.btn-check:active+nav.search .input-group .dropdown-toggle,nav.search .input-group .dropdown-toggle:active,nav.search .input-group .dropdown-toggle.active,.show>nav.search .input-group .dropdown-toggle.dropdown-toggle{color:#000;background-color:#edf0f2;border-color:#ebeef1}.btn-check:checked+nav.search .input-group .dropdown-toggle:focus,.btn-check:active+nav.search .input-group .dropdown-toggle:focus,nav.search .input-group .dropdown-toggle:active:focus,nav.search .input-group .dropdown-toggle.active:focus,.show>nav.search .input-group .dropdown-toggle.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #c6c9cb80}nav.search .input-group .dropdown-toggle:disabled,nav.search .input-group .dropdown-toggle.disabled{color:#000;background-color:#e9ecef;border-color:#e9ecef}nav.search .input-group .dropdown-toggle:focus{box-shadow:unset!important}nav.search .input-group .dropdown-toggle:after{display:none}nav.search .input-group .search-obj-selector{max-height:70vh;overflow-y:auto}nav.search .input-group .search-obj-selector .dropdown-item,nav.search .input-group .search-obj-selector .dropdown-header{font-size:.875rem}nav.search .input-group .search-obj-selector .dropdown-header{text-transform:uppercase}main.layout{display:flex;flex-wrap:nowrap;height:100vh;height:-webkit-fill-available;max-height:100vh;overflow-x:auto;overflow-y:hidden}@media print{main.layout{position:static!important;display:block!important;height:100%;overflow-x:visible!important;overflow-y:visible!important}}main.login-container{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;max-width:100vw;height:calc(100vh - 4rem);padding-top:40px;padding-bottom:40px}main.login-container+footer.footer button.color-mode-toggle{color:var(--nbx-color-mode-toggle-color)}.footer{padding:0}.footer .nav-link{padding:.5rem}@media (max-width: 767.98px){.footer{margin-bottom:8rem}}footer.login-footer{height:4rem;margin-top:auto}footer.login-footer .container-fluid,footer.login-footer .container-sm,footer.login-footer .container-md,footer.login-footer .container-lg,footer.login-footer .container-xl,footer.login-footer .container-xxl{display:flex;justify-content:flex-end;padding:.75rem 1.5rem}h1.accordion-item-title,.accordion-item-title.h1,h2.accordion-item-title,.accordion-item-title.h2,h3.accordion-item-title,.accordion-item-title.h3,h4.accordion-item-title,.accordion-item-title.h4,h5.accordion-item-title,.accordion-item-title.h5,h6.accordion-item-title,.accordion-item-title.h6{padding:.25rem .5rem;font-size:.875rem;font-weight:700;color:var(--nbx-sidebar-title-color);text-transform:uppercase}.form-login{width:100%;max-width:330px;padding:15px}.form-login input:focus{z-index:1}.form-login input[type=text]{margin-bottom:-1px;border-bottom-right-radius:0;border-bottom-left-radius:0}.form-login input[type=password]{margin-bottom:10px;border-top-left-radius:0;border-top-right-radius:0}.form-login .form-control{position:relative;box-sizing:border-box;height:auto;padding:10px;font-size:16px}.navbar-brand{padding-top:.75rem;padding-bottom:.75rem;font-size:1rem}nav.nav.nav-pills .nav-item.nav-link{padding:.25rem .5rem;font-size:.875rem;border-radius:.375rem}nav.nav.nav-pills .nav-item.nav-link:hover{color:#343a40;background-color:#cfe2ff}div.content-container{position:relative;display:flex;flex-direction:column;width:calc(100% - 3rem);min-height:100vh;overflow-x:hidden;overflow-y:auto}div.content-container:focus,div.content-container:focus-visible{outline:0}div.content-container div.content{flex:1}@media (max-width: 991.98px){div.content-container{width:100%}}@media print{div.content-container{width:100%!important;margin-left:0!important}}@media (max-width: 768px){.sidebar.collapse.show~.content-container>.content{position:fixed;top:0;left:0;overflow-y:hidden}}.tooltip{pointer-events:none}span.color-label{display:block;width:5rem;height:1rem;padding:.35em .65em;border:1px solid #303030;border-radius:.375rem;box-shadow:0 .125rem .25rem #00000013}.btn{white-space:nowrap}.card{box-shadow:0 .125rem .25rem #00000013}.card .card-header{padding:1rem;color:var(--nbx-body-color);border-bottom:none}.card .card-header+.card-body{padding-top:0}.card .card-body.small .form-control,.card .card-body.small .form-select{font-size:.875rem}.card .card-divider{width:100%;height:1px;margin:1rem 0;border-top:1px solid rgba(0,0,0,.125);opacity:.25}@media print{.card{box-shadow:unset!important}}.form-floating{position:relative}.form-floating>.input-group>.form-control,.form-floating>.input-group>.form-select{height:calc(3.5rem + 2px);padding:1rem .75rem}.form-floating>.input-group>label{position:absolute;top:0;left:0;height:100%;padding:1rem .75rem;pointer-events:none;border:1px solid transparent;transform-origin:0 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out}@media (prefers-reduced-motion: reduce){.form-floating>.input-group>label{transition:none}}.form-floating>.input-group>.form-control::placeholder{color:transparent}.form-floating>.input-group>.form-control:focus,.form-floating>.input-group>.form-control:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.input-group>.form-control:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.input-group>.form-select,.form-floating>.choices>.choices__inner,.form-floating>.ss-main span.placeholder,.form-floating>.ss-main div.ss-values{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.input-group>.form-control:focus~label,.form-floating>.input-group>.form-control:not(:placeholder-shown)~label,.form-floating>.input-group>.form-select~label,.form-floating>.choices~label,.form-floating>.ss-main~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translate(.15rem);z-index:4}.form-floating>.input-group>.form-control:-webkit-autofill~label{z-index:4;opacity:.65;transform:scale(.85) translateY(-.5rem) translate(.15rem)}.form-object-edit{margin:0 auto;max-width:800px}textarea.form-control[rows="10"]{height:18rem}textarea#id_local_context_data,textarea.markdown,textarea#id_public_key,textarea.form-control[name=csv],textarea.form-control[name=data]{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}.card:not(:only-of-type){margin-bottom:1rem}.stat-btn{min-width:3rem}nav.breadcrumb-container{width:fit-content;padding:.35em .65em;font-size:.875rem}nav.breadcrumb-container ol.breadcrumb{margin-bottom:0}nav.breadcrumb-container ol.breadcrumb li.breadcrumb-item>a{text-decoration:none}nav.breadcrumb-container ol.breadcrumb li.breadcrumb-item>a:hover{text-decoration:underline}div.paginator>form>div.input-group{width:fit-content}label.required{font-weight:700}label.required:after{position:absolute;display:inline-block;margin:0 0 0 2px;font-family:"Material Design Icons";font-size:8px;font-style:normal;font-weight:600;text-decoration:none;content:"\f06c4"}div.bulk-buttons{display:flex;justify-content:space-between;margin:.5rem 0}div.bulk-buttons>div.bulk-button-group{display:flex;flex-wrap:wrap;align-items:flex-start}div.bulk-buttons>div.bulk-button-group:first-of-type:not(:last-of-type)>*:first-child{margin-left:0}div.bulk-buttons>div.bulk-button-group:last-of-type:not(:first-of-type)>*:last-child{margin-right:0}div.bulk-buttons>div.bulk-button-group>*{margin:.25rem}table tbody tr.primary{background-color:#337ab726;border-color:#adb5bd}table tbody tr.secondary{background-color:#6c757d26;border-color:#adb5bd}table tbody tr.success{background-color:#19875426;border-color:#adb5bd}table tbody tr.info{background-color:#0dcaf026;border-color:#adb5bd}table tbody tr.warning{background-color:#ffc10726;border-color:#adb5bd}table tbody tr.danger{background-color:#dc354526;border-color:#adb5bd}table tbody tr.light{background-color:#f8f9fa26;border-color:#adb5bd}table tbody tr.dark{background-color:#21252926;border-color:#adb5bd}table tbody tr.red{background-color:#dc354526;border-color:#adb5bd}table tbody tr.yellow{background-color:#ffc10726;border-color:#adb5bd}table tbody tr.green{background-color:#19875426;border-color:#adb5bd}table tbody tr.blue{background-color:#0d6efd26;border-color:#adb5bd}table tbody tr.cyan{background-color:#0dcaf026;border-color:#adb5bd}table tbody tr.indigo{background-color:#6610f226;border-color:#adb5bd}table tbody tr.purple{background-color:#6f42c126;border-color:#adb5bd}table tbody tr.pink{background-color:#d6338426;border-color:#adb5bd}table tbody tr.darker{background-color:#1b1f2226;border-color:#adb5bd}table tbody tr.darkest{background-color:#171b1d26;border-color:#adb5bd}table tbody tr.gray{background-color:#ced4da26;border-color:#adb5bd}table tbody tr.gray-100{background-color:#f8f9fa26;border-color:#adb5bd}table tbody tr.gray-200{background-color:#e9ecef26;border-color:#adb5bd}table tbody tr.gray-300{background-color:#dee2e626;border-color:#adb5bd}table tbody tr.gray-400{background-color:#ced4da26;border-color:#adb5bd}table tbody tr.gray-500{background-color:#adb5bd26;border-color:#adb5bd}table tbody tr.gray-600{background-color:#6c757d26;border-color:#adb5bd}table tbody tr.gray-700{background-color:#49505726;border-color:#adb5bd}table tbody tr.gray-800{background-color:#343a4026;border-color:#adb5bd}table tbody tr.gray-900{background-color:#21252926;border-color:#adb5bd}table tbody tr.red-100{background-color:#f8d7da26;border-color:#adb5bd}table tbody tr.red-200{background-color:#f1aeb526;border-color:#adb5bd}table tbody tr.red-300{background-color:#ea868f26;border-color:#adb5bd}table tbody tr.red-400{background-color:#e35d6a26;border-color:#adb5bd}table tbody tr.red-500{background-color:#dc354526;border-color:#adb5bd}table tbody tr.red-600{background-color:#b02a3726;border-color:#adb5bd}table tbody tr.red-700{background-color:#84202926;border-color:#adb5bd}table tbody tr.red-800{background-color:#58151c26;border-color:#adb5bd}table tbody tr.red-900{background-color:#2c0b0e26;border-color:#adb5bd}table tbody tr.yellow-100{background-color:#fff3cd26;border-color:#adb5bd}table tbody tr.yellow-200{background-color:#ffe69c26;border-color:#adb5bd}table tbody tr.yellow-300{background-color:#ffda6a26;border-color:#adb5bd}table tbody tr.yellow-400{background-color:#ffcd3926;border-color:#adb5bd}table tbody tr.yellow-500{background-color:#ffc10726;border-color:#adb5bd}table tbody tr.yellow-600{background-color:#cc9a0626;border-color:#adb5bd}table tbody tr.yellow-700{background-color:#99740426;border-color:#adb5bd}table tbody tr.yellow-800{background-color:#664d0326;border-color:#adb5bd}table tbody tr.yellow-900{background-color:#33270126;border-color:#adb5bd}table tbody tr.green-100{background-color:#d1e7dd26;border-color:#adb5bd}table tbody tr.green-200{background-color:#a3cfbb26;border-color:#adb5bd}table tbody tr.green-300{background-color:#75b79826;border-color:#adb5bd}table tbody tr.green-400{background-color:#479f7626;border-color:#adb5bd}table tbody tr.green-500{background-color:#19875426;border-color:#adb5bd}table tbody tr.green-600{background-color:#146c4326;border-color:#adb5bd}table tbody tr.green-700{background-color:#0f513226;border-color:#adb5bd}table tbody tr.green-800{background-color:#0a362226;border-color:#adb5bd}table tbody tr.green-900{background-color:#051b1126;border-color:#adb5bd}table tbody tr.blue-100{background-color:#cfe2ff26;border-color:#adb5bd}table tbody tr.blue-200{background-color:#9ec5fe26;border-color:#adb5bd}table tbody tr.blue-300{background-color:#6ea8fe26;border-color:#adb5bd}table tbody tr.blue-400{background-color:#3d8bfd26;border-color:#adb5bd}table tbody tr.blue-500{background-color:#0d6efd26;border-color:#adb5bd}table tbody tr.blue-600{background-color:#0a58ca26;border-color:#adb5bd}table tbody tr.blue-700{background-color:#08429826;border-color:#adb5bd}table tbody tr.blue-800{background-color:#052c6526;border-color:#adb5bd}table tbody tr.blue-900{background-color:#03163326;border-color:#adb5bd}table tbody tr.cyan-100{background-color:#cff4fc26;border-color:#adb5bd}table tbody tr.cyan-200{background-color:#9eeaf926;border-color:#adb5bd}table tbody tr.cyan-300{background-color:#6edff626;border-color:#adb5bd}table tbody tr.cyan-400{background-color:#3dd5f326;border-color:#adb5bd}table tbody tr.cyan-500{background-color:#0dcaf026;border-color:#adb5bd}table tbody tr.cyan-600{background-color:#0aa2c026;border-color:#adb5bd}table tbody tr.cyan-700{background-color:#08799026;border-color:#adb5bd}table tbody tr.cyan-800{background-color:#05516026;border-color:#adb5bd}table tbody tr.cyan-900{background-color:#03283026;border-color:#adb5bd}table tbody tr.indigo-100{background-color:#e0cffc26;border-color:#adb5bd}table tbody tr.indigo-200{background-color:#c29ffa26;border-color:#adb5bd}table tbody tr.indigo-300{background-color:#a370f726;border-color:#adb5bd}table tbody tr.indigo-400{background-color:#8540f526;border-color:#adb5bd}table tbody tr.indigo-500{background-color:#6610f226;border-color:#adb5bd}table tbody tr.indigo-600{background-color:#520dc226;border-color:#adb5bd}table tbody tr.indigo-700{background-color:#3d0a9126;border-color:#adb5bd}table tbody tr.indigo-800{background-color:#29066126;border-color:#adb5bd}table tbody tr.indigo-900{background-color:#14033026;border-color:#adb5bd}table tbody tr.purple-100{background-color:#e2d9f326;border-color:#adb5bd}table tbody tr.purple-200{background-color:#c5b3e626;border-color:#adb5bd}table tbody tr.purple-300{background-color:#a98eda26;border-color:#adb5bd}table tbody tr.purple-400{background-color:#8c68cd26;border-color:#adb5bd}table tbody tr.purple-500{background-color:#6f42c126;border-color:#adb5bd}table tbody tr.purple-600{background-color:#59359a26;border-color:#adb5bd}table tbody tr.purple-700{background-color:#43287426;border-color:#adb5bd}table tbody tr.purple-800{background-color:#2c1a4d26;border-color:#adb5bd}table tbody tr.purple-900{background-color:#160d2726;border-color:#adb5bd}table tbody tr.pink-100{background-color:#f7d6e626;border-color:#adb5bd}table tbody tr.pink-200{background-color:#efadce26;border-color:#adb5bd}table tbody tr.pink-300{background-color:#e685b526;border-color:#adb5bd}table tbody tr.pink-400{background-color:#de5c9d26;border-color:#adb5bd}table tbody tr.pink-500{background-color:#d6338426;border-color:#adb5bd}table tbody tr.pink-600{background-color:#ab296a26;border-color:#adb5bd}table tbody tr.pink-700{background-color:#801f4f26;border-color:#adb5bd}table tbody tr.pink-800{background-color:#56143526;border-color:#adb5bd}table tbody tr.pink-900{background-color:#2b0a1a26;border-color:#adb5bd}table .table-badge-group .table-badge{display:block;width:min-content;font-size:.875rem;font-weight:400}table .table-badge-group .table-badge:not(.badge){padding:0 .65em}table .table-badge-group .table-badge.badge:not(:last-of-type):not(:only-child){margin-bottom:.25rem}pre.change-data{padding-right:0;padding-left:0}pre.change-data>span{display:block;padding-right:1rem;padding-left:1rem}pre.change-data>span.added{background-color:var(--nbx-change-added)}pre.change-data>span.removed{background-color:var(--nbx-change-removed)}pre.change-diff{border-color:transparent}pre.change-diff.change-removed{background-color:var(--nbx-change-removed)}pre.change-diff.change-added{background-color:var(--nbx-change-added)}div.card-overlay{position:absolute;display:flex;align-items:center;justify-content:center;width:100%;height:100%;background-color:#ffffffbf;border-radius:.375rem}div.card-overlay>div.spinner-border{width:6rem;height:6rem;color:#6c757d}.table-controls{display:flex}@media (min-width: 768px){.table-controls{margin-top:0!important;margin-bottom:0!important}}.table-controls .table-configure{justify-content:flex-start}@media (min-width: 768px){.table-controls .table-configure{justify-content:flex-end}}.table-controls .form-switch.form-check-inline{flex:1 0 auto;font-size:.875rem}.paginator{display:flex;flex-direction:column;align-items:flex-end;padding:1rem 0}.nav-tabs .nav-link:hover{border-bottom-color:transparent}.nav-tabs .nav-link.active{background-color:#f8f9fa;border-bottom-color:#f8f9fa;transform:translateY(1px)}.tab-content{display:flex;flex-direction:column;padding:1rem;background-color:#f8f9fa;border-bottom:1px solid #dee2e6}@media print{.tab-content{background-color:var(--nbx-body-bg)!important;border-bottom:none!important}}@media print{.masonry{position:static!important;display:block!important;height:unset!important}}@media print{.masonry .masonry-item{position:static!important;top:unset!important;left:unset!important;display:block!important}}.record-depth{display:inline;font-size:1rem;user-select:none;opacity:.33}.record-depth span:only-of-type,.record-depth span:last-of-type{margin-right:.25rem}.popover.image-preview-popover{max-width:unset}#django-messages{position:fixed;right:1rem;bottom:0;margin:1rem}html[data-netbox-url-name=home] .content-container,html[data-netbox-url-name=home] .search{background-color:#f8f9fa!important}html[data-netbox-url-name=home][data-netbox-color-mode=dark] .content-container,html[data-netbox-url-name=home][data-netbox-color-mode=dark] .search{background-color:#171b1d!important}html[data-netbox-url-name=login] #django-messages{display:none} diff --git a/netbox/project-static/dist/netbox-print.css b/netbox/project-static/dist/netbox-print.css index 7e565c3d5..7974e338d 100644 --- a/netbox/project-static/dist/netbox-print.css +++ b/netbox/project-static/dist/netbox-print.css @@ -1 +1 @@ -@media print{:root{--nbx-body-bg: #fff !important;--nbx-body-color: #000 !important}html :root,html[data-netbox-color-mode=dark] :root,html[data-netbox-color-mode=light] :root{--bs-orange: #fd7e14;--bs-teal: #20c997;--bs-white: #fff;--bs-gray: #6c757d;--bs-gray-dark: #343a40;--bs-primary: #337ab7;--bs-secondary: #6c757d;--bs-success: #198754;--bs-info: #0dcaf0;--bs-warning: #ffc107;--bs-danger: #dc3545;--bs-light: #f8f9fa;--bs-dark: #212529;--bs-red: #dc3545;--bs-yellow: #ffc107;--bs-green: #198754;--bs-blue: #0d6efd;--bs-cyan: #0dcaf0;--bs-indigo: #6610f2;--bs-purple: #6f42c1;--bs-pink: #d63384;--bs-darker: #1b1f22;--bs-darkest: #171b1d;--bs-gray: #ced4da;--bs-gray-100: #f8f9fa;--bs-gray-200: #e9ecef;--bs-gray-300: #dee2e6;--bs-gray-400: #ced4da;--bs-gray-500: #adb5bd;--bs-gray-600: #6c757d;--bs-gray-700: #495057;--bs-gray-800: #343a40;--bs-gray-900: #212529;--bs-red-100: #f8d7da;--bs-red-200: #f1aeb5;--bs-red-300: #ea868f;--bs-red-400: #e35d6a;--bs-red-500: #dc3545;--bs-red-600: #b02a37;--bs-red-700: #842029;--bs-red-800: #58151c;--bs-red-900: #2c0b0e;--bs-yellow-100: #fff3cd;--bs-yellow-200: #ffe69c;--bs-yellow-300: #ffda6a;--bs-yellow-400: #ffcd39;--bs-yellow-500: #ffc107;--bs-yellow-600: #cc9a06;--bs-yellow-700: #997404;--bs-yellow-800: #664d03;--bs-yellow-900: #332701;--bs-green-100: #d1e7dd;--bs-green-200: #a3cfbb;--bs-green-300: #75b798;--bs-green-400: #479f76;--bs-green-500: #198754;--bs-green-600: #146c43;--bs-green-700: #0f5132;--bs-green-800: #0a3622;--bs-green-900: #051b11;--bs-blue-100: #cfe2ff;--bs-blue-200: #9ec5fe;--bs-blue-300: #6ea8fe;--bs-blue-400: #3d8bfd;--bs-blue-500: #0d6efd;--bs-blue-600: #0a58ca;--bs-blue-700: #084298;--bs-blue-800: #052c65;--bs-blue-900: #031633;--bs-cyan-100: #cff4fc;--bs-cyan-200: #9eeaf9;--bs-cyan-300: #6edff6;--bs-cyan-400: #3dd5f3;--bs-cyan-500: #0dcaf0;--bs-cyan-600: #0aa2c0;--bs-cyan-700: #087990;--bs-cyan-800: #055160;--bs-cyan-900: #032830;--bs-indigo-100: #e0cffc;--bs-indigo-200: #c29ffa;--bs-indigo-300: #a370f7;--bs-indigo-400: #8540f5;--bs-indigo-500: #6610f2;--bs-indigo-600: #520dc2;--bs-indigo-700: #3d0a91;--bs-indigo-800: #290661;--bs-indigo-900: #140330;--bs-purple-100: #e2d9f3;--bs-purple-200: #c5b3e6;--bs-purple-300: #a98eda;--bs-purple-400: #8c68cd;--bs-purple-500: #6f42c1;--bs-purple-600: #59359a;--bs-purple-700: #432874;--bs-purple-800: #2c1a4d;--bs-purple-900: #160d27;--bs-pink-100: #f7d6e6;--bs-pink-200: #efadce;--bs-pink-300: #e685b5;--bs-pink-400: #de5c9d;--bs-pink-500: #d63384;--bs-pink-600: #ab296a;--bs-pink-700: #801f4f;--bs-pink-800: #561435;--bs-pink-900: #2b0a1a;--bs-font-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, .15), rgba(255, 255, 255, 0))}html *,html *:before,html *:after,html[data-netbox-color-mode=dark] *,html[data-netbox-color-mode=dark] *:before,html[data-netbox-color-mode=dark] *:after,html[data-netbox-color-mode=light] *,html[data-netbox-color-mode=light] *:before,html[data-netbox-color-mode=light] *:after{box-sizing:border-box}}@media print and (prefers-reduced-motion: no-preference){html :root,html[data-netbox-color-mode=dark] :root,html[data-netbox-color-mode=light] :root{scroll-behavior:smooth}}@media print{html body,html[data-netbox-color-mode=dark] body,html[data-netbox-color-mode=light] body{margin:0;font-family:var(--bs-font-sans-serif);font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0)}}@media print{html hr,html[data-netbox-color-mode=dark] hr,html[data-netbox-color-mode=light] hr{margin:1rem 0;color:inherit;background-color:currentColor;border:0;opacity:.25}}@media print{html hr:not([size]),html[data-netbox-color-mode=dark] hr:not([size]),html[data-netbox-color-mode=light] hr:not([size]){height:1px}}@media print{html h6,html .h6,html[data-netbox-color-mode=dark] .h6,html[data-netbox-color-mode=light] .h6,html[data-netbox-color-mode=dark] h6,html[data-netbox-color-mode=light] h6,html h5,html .h5,html[data-netbox-color-mode=dark] .h5,html[data-netbox-color-mode=light] .h5,html[data-netbox-color-mode=dark] h5,html[data-netbox-color-mode=light] h5,html h4,html .h4,html[data-netbox-color-mode=dark] .h4,html[data-netbox-color-mode=light] .h4,html[data-netbox-color-mode=dark] h4,html[data-netbox-color-mode=light] h4,html h3,html .h3,html[data-netbox-color-mode=dark] .h3,html[data-netbox-color-mode=light] .h3,html[data-netbox-color-mode=dark] h3,html[data-netbox-color-mode=light] h3,html h2,html .h2,html[data-netbox-color-mode=dark] .h2,html[data-netbox-color-mode=light] .h2,html[data-netbox-color-mode=dark] h2,html[data-netbox-color-mode=light] h2,html h1,html .h1,html[data-netbox-color-mode=dark] .h1,html[data-netbox-color-mode=light] .h1,html[data-netbox-color-mode=dark] h1,html[data-netbox-color-mode=light] h1{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2}}@media print{html h1,html .h1,html[data-netbox-color-mode=dark] .h1,html[data-netbox-color-mode=light] .h1,html[data-netbox-color-mode=dark] h1,html[data-netbox-color-mode=light] h1{font-size:calc(1.375rem + 1.5vw)}}@media print and (min-width: 1200px){html h1,html .h1,html[data-netbox-color-mode=dark] .h1,html[data-netbox-color-mode=light] .h1,html[data-netbox-color-mode=dark] h1,html[data-netbox-color-mode=light] h1{font-size:2.5rem}}@media print{html h2,html .h2,html[data-netbox-color-mode=dark] .h2,html[data-netbox-color-mode=light] .h2,html[data-netbox-color-mode=dark] h2,html[data-netbox-color-mode=light] h2{font-size:calc(1.325rem + .9vw)}}@media print and (min-width: 1200px){html h2,html .h2,html[data-netbox-color-mode=dark] .h2,html[data-netbox-color-mode=light] .h2,html[data-netbox-color-mode=dark] h2,html[data-netbox-color-mode=light] h2{font-size:2rem}}@media print{html h3,html .h3,html[data-netbox-color-mode=dark] .h3,html[data-netbox-color-mode=light] .h3,html[data-netbox-color-mode=dark] h3,html[data-netbox-color-mode=light] h3{font-size:calc(1.3rem + .6vw)}}@media print and (min-width: 1200px){html h3,html .h3,html[data-netbox-color-mode=dark] .h3,html[data-netbox-color-mode=light] .h3,html[data-netbox-color-mode=dark] h3,html[data-netbox-color-mode=light] h3{font-size:1.75rem}}@media print{html h4,html .h4,html[data-netbox-color-mode=dark] .h4,html[data-netbox-color-mode=light] .h4,html[data-netbox-color-mode=dark] h4,html[data-netbox-color-mode=light] h4{font-size:calc(1.275rem + .3vw)}}@media print and (min-width: 1200px){html h4,html .h4,html[data-netbox-color-mode=dark] .h4,html[data-netbox-color-mode=light] .h4,html[data-netbox-color-mode=dark] h4,html[data-netbox-color-mode=light] h4{font-size:1.5rem}}@media print{html h5,html .h5,html[data-netbox-color-mode=dark] .h5,html[data-netbox-color-mode=light] .h5,html[data-netbox-color-mode=dark] h5,html[data-netbox-color-mode=light] h5{font-size:1.25rem}}@media print{html h6,html .h6,html[data-netbox-color-mode=dark] .h6,html[data-netbox-color-mode=light] .h6,html[data-netbox-color-mode=dark] h6,html[data-netbox-color-mode=light] h6{font-size:1rem}}@media print{html p,html[data-netbox-color-mode=dark] p,html[data-netbox-color-mode=light] p{margin-top:0;margin-bottom:1rem}}@media print{html abbr[title],html abbr[data-bs-original-title],html[data-netbox-color-mode=dark] abbr[title],html[data-netbox-color-mode=dark] abbr[data-bs-original-title],html[data-netbox-color-mode=light] abbr[title],html[data-netbox-color-mode=light] abbr[data-bs-original-title]{text-decoration:underline dotted;cursor:help;text-decoration-skip-ink:none}}@media print{html address,html[data-netbox-color-mode=dark] address,html[data-netbox-color-mode=light] address{margin-bottom:1rem;font-style:normal;line-height:inherit}}@media print{html ol,html ul,html[data-netbox-color-mode=dark] ol,html[data-netbox-color-mode=dark] ul,html[data-netbox-color-mode=light] ol,html[data-netbox-color-mode=light] ul{padding-left:2rem}}@media print{html ol,html ul,html dl,html[data-netbox-color-mode=dark] ol,html[data-netbox-color-mode=dark] ul,html[data-netbox-color-mode=dark] dl,html[data-netbox-color-mode=light] ol,html[data-netbox-color-mode=light] ul,html[data-netbox-color-mode=light] dl{margin-top:0;margin-bottom:1rem}}@media print{html ol ol,html ul ul,html ol ul,html ul ol,html[data-netbox-color-mode=dark] ol ol,html[data-netbox-color-mode=dark] ul ul,html[data-netbox-color-mode=dark] ol ul,html[data-netbox-color-mode=dark] ul ol,html[data-netbox-color-mode=light] ol ol,html[data-netbox-color-mode=light] ul ul,html[data-netbox-color-mode=light] ol ul,html[data-netbox-color-mode=light] ul ol{margin-bottom:0}}@media print{html dt,html[data-netbox-color-mode=dark] dt,html[data-netbox-color-mode=light] dt{font-weight:700}}@media print{html dd,html[data-netbox-color-mode=dark] dd,html[data-netbox-color-mode=light] dd{margin-bottom:.5rem;margin-left:0}}@media print{html blockquote,html[data-netbox-color-mode=dark] blockquote,html[data-netbox-color-mode=light] blockquote{margin:0 0 1rem}}@media print{html b,html strong,html[data-netbox-color-mode=dark] b,html[data-netbox-color-mode=dark] strong,html[data-netbox-color-mode=light] b,html[data-netbox-color-mode=light] strong{font-weight:800}}@media print{html small,html .small,html[data-netbox-color-mode=dark] .small,html[data-netbox-color-mode=light] .small,html[data-netbox-color-mode=dark] small,html[data-netbox-color-mode=light] small{font-size:.875em}}@media print{html mark,html .mark,html[data-netbox-color-mode=dark] .mark,html[data-netbox-color-mode=light] .mark,html[data-netbox-color-mode=dark] mark,html[data-netbox-color-mode=light] mark{padding:.2em;background-color:#fcf8e3}}@media print{html sub,html sup,html[data-netbox-color-mode=dark] sub,html[data-netbox-color-mode=dark] sup,html[data-netbox-color-mode=light] sub,html[data-netbox-color-mode=light] sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}}@media print{html sub,html[data-netbox-color-mode=dark] sub,html[data-netbox-color-mode=light] sub{bottom:-.25em}}@media print{html sup,html[data-netbox-color-mode=dark] sup,html[data-netbox-color-mode=light] sup{top:-.5em}}@media print{html a,html[data-netbox-color-mode=dark] a,html[data-netbox-color-mode=light] a{color:#0d6efd;text-decoration:underline}html a:hover,html[data-netbox-color-mode=dark] a:hover,html[data-netbox-color-mode=light] a:hover{color:#0a58ca}}@media print{html a:not([href]):not([class]),html a:not([href]):not([class]):hover,html[data-netbox-color-mode=dark] a:not([href]):not([class]),html[data-netbox-color-mode=dark] a:not([href]):not([class]):hover,html[data-netbox-color-mode=light] a:not([href]):not([class]),html[data-netbox-color-mode=light] a:not([href]):not([class]):hover{color:inherit;text-decoration:none}}@media print{html pre,html code,html kbd,html samp,html[data-netbox-color-mode=dark] pre,html[data-netbox-color-mode=dark] code,html[data-netbox-color-mode=dark] kbd,html[data-netbox-color-mode=dark] samp,html[data-netbox-color-mode=light] pre,html[data-netbox-color-mode=light] code,html[data-netbox-color-mode=light] kbd,html[data-netbox-color-mode=light] samp{font-family:var(--bs-font-monospace);font-size:1em;direction:ltr;unicode-bidi:bidi-override}}@media print{html pre,html[data-netbox-color-mode=dark] pre,html[data-netbox-color-mode=light] pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em}html pre code,html[data-netbox-color-mode=dark] pre code,html[data-netbox-color-mode=light] pre code{font-size:inherit;color:inherit;word-break:normal}}@media print{html code,html[data-netbox-color-mode=dark] code,html[data-netbox-color-mode=light] code{font-size:.875em;color:#212529;word-wrap:break-word}a>html code,a>html[data-netbox-color-mode=dark] code,a>html[data-netbox-color-mode=light] code{color:inherit}}@media print{html kbd,html[data-netbox-color-mode=dark] kbd,html[data-netbox-color-mode=light] kbd{padding:.2rem .4rem;font-size:.875em;color:#fff;background-color:#212529;border-radius:.375rem}html kbd kbd,html[data-netbox-color-mode=dark] kbd kbd,html[data-netbox-color-mode=light] kbd kbd{padding:0;font-size:1em;font-weight:700}}@media print{html figure,html[data-netbox-color-mode=dark] figure,html[data-netbox-color-mode=light] figure{margin:0 0 1rem}}@media print{html img,html svg,html[data-netbox-color-mode=dark] img,html[data-netbox-color-mode=dark] svg,html[data-netbox-color-mode=light] img,html[data-netbox-color-mode=light] svg{vertical-align:middle}}@media print{html table,html[data-netbox-color-mode=dark] table,html[data-netbox-color-mode=light] table{caption-side:bottom;border-collapse:collapse}}@media print{html caption,html[data-netbox-color-mode=dark] caption,html[data-netbox-color-mode=light] caption{padding-top:.5rem;padding-bottom:.5rem;color:#6c757d;text-align:left}}@media print{html th,html[data-netbox-color-mode=dark] th,html[data-netbox-color-mode=light] th{text-align:inherit;text-align:-webkit-match-parent}}@media print{html thead,html tbody,html tfoot,html tr,html td,html th,html[data-netbox-color-mode=dark] thead,html[data-netbox-color-mode=dark] tbody,html[data-netbox-color-mode=dark] tfoot,html[data-netbox-color-mode=dark] tr,html[data-netbox-color-mode=dark] td,html[data-netbox-color-mode=dark] th,html[data-netbox-color-mode=light] thead,html[data-netbox-color-mode=light] tbody,html[data-netbox-color-mode=light] tfoot,html[data-netbox-color-mode=light] tr,html[data-netbox-color-mode=light] td,html[data-netbox-color-mode=light] th{border-color:inherit;border-style:solid;border-width:0}}@media print{html label,html[data-netbox-color-mode=dark] label,html[data-netbox-color-mode=light] label{display:inline-block}}@media print{html button,html[data-netbox-color-mode=dark] button,html[data-netbox-color-mode=light] button{border-radius:0}}@media print{html button:focus:not(:focus-visible),html[data-netbox-color-mode=dark] button:focus:not(:focus-visible),html[data-netbox-color-mode=light] button:focus:not(:focus-visible){outline:0}}@media print{html input,html button,html select,html optgroup,html textarea,html[data-netbox-color-mode=dark] input,html[data-netbox-color-mode=dark] button,html[data-netbox-color-mode=dark] select,html[data-netbox-color-mode=dark] optgroup,html[data-netbox-color-mode=dark] textarea,html[data-netbox-color-mode=light] input,html[data-netbox-color-mode=light] button,html[data-netbox-color-mode=light] select,html[data-netbox-color-mode=light] optgroup,html[data-netbox-color-mode=light] textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}}@media print{html button,html select,html[data-netbox-color-mode=dark] button,html[data-netbox-color-mode=dark] select,html[data-netbox-color-mode=light] button,html[data-netbox-color-mode=light] select{text-transform:none}}@media print{html [role=button],html[data-netbox-color-mode=dark] [role=button],html[data-netbox-color-mode=light] [role=button]{cursor:pointer}}@media print{html select,html[data-netbox-color-mode=dark] select,html[data-netbox-color-mode=light] select{word-wrap:normal}html select:disabled,html[data-netbox-color-mode=dark] select:disabled,html[data-netbox-color-mode=light] select:disabled{opacity:1}}@media print{html [list]::-webkit-calendar-picker-indicator,html[data-netbox-color-mode=dark] [list]::-webkit-calendar-picker-indicator,html[data-netbox-color-mode=light] [list]::-webkit-calendar-picker-indicator{display:none}}@media print{html button,html [type=button],html [type=reset],html [type=submit],html[data-netbox-color-mode=dark] button,html[data-netbox-color-mode=dark] [type=button],html[data-netbox-color-mode=dark] [type=reset],html[data-netbox-color-mode=dark] [type=submit],html[data-netbox-color-mode=light] button,html[data-netbox-color-mode=light] [type=button],html[data-netbox-color-mode=light] [type=reset],html[data-netbox-color-mode=light] [type=submit]{-webkit-appearance:button}html button:not(:disabled),html [type=button]:not(:disabled),html [type=reset]:not(:disabled),html [type=submit]:not(:disabled),html[data-netbox-color-mode=dark] button:not(:disabled),html[data-netbox-color-mode=dark] [type=button]:not(:disabled),html[data-netbox-color-mode=dark] [type=reset]:not(:disabled),html[data-netbox-color-mode=dark] [type=submit]:not(:disabled),html[data-netbox-color-mode=light] button:not(:disabled),html[data-netbox-color-mode=light] [type=button]:not(:disabled),html[data-netbox-color-mode=light] [type=reset]:not(:disabled),html[data-netbox-color-mode=light] [type=submit]:not(:disabled){cursor:pointer}}@media print{html ::-moz-focus-inner,html[data-netbox-color-mode=dark] ::-moz-focus-inner,html[data-netbox-color-mode=light] ::-moz-focus-inner{padding:0;border-style:none}}@media print{html textarea,html[data-netbox-color-mode=dark] textarea,html[data-netbox-color-mode=light] textarea{resize:vertical}}@media print{html fieldset,html[data-netbox-color-mode=dark] fieldset,html[data-netbox-color-mode=light] fieldset{min-width:0;padding:0;margin:0;border:0}}@media print{html legend,html[data-netbox-color-mode=dark] legend,html[data-netbox-color-mode=light] legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + .3vw);line-height:inherit}}@media print and (min-width: 1200px){html legend,html[data-netbox-color-mode=dark] legend,html[data-netbox-color-mode=light] legend{font-size:1.5rem}}@media print{html legend+*,html[data-netbox-color-mode=dark] legend+*,html[data-netbox-color-mode=light] legend+*{clear:left}}@media print{html ::-webkit-datetime-edit-fields-wrapper,html ::-webkit-datetime-edit-text,html ::-webkit-datetime-edit-minute,html ::-webkit-datetime-edit-hour-field,html ::-webkit-datetime-edit-day-field,html ::-webkit-datetime-edit-month-field,html ::-webkit-datetime-edit-year-field,html[data-netbox-color-mode=dark] ::-webkit-datetime-edit-fields-wrapper,html[data-netbox-color-mode=dark] ::-webkit-datetime-edit-text,html[data-netbox-color-mode=dark] ::-webkit-datetime-edit-minute,html[data-netbox-color-mode=dark] ::-webkit-datetime-edit-hour-field,html[data-netbox-color-mode=dark] ::-webkit-datetime-edit-day-field,html[data-netbox-color-mode=dark] ::-webkit-datetime-edit-month-field,html[data-netbox-color-mode=dark] ::-webkit-datetime-edit-year-field,html[data-netbox-color-mode=light] ::-webkit-datetime-edit-fields-wrapper,html[data-netbox-color-mode=light] ::-webkit-datetime-edit-text,html[data-netbox-color-mode=light] ::-webkit-datetime-edit-minute,html[data-netbox-color-mode=light] ::-webkit-datetime-edit-hour-field,html[data-netbox-color-mode=light] ::-webkit-datetime-edit-day-field,html[data-netbox-color-mode=light] ::-webkit-datetime-edit-month-field,html[data-netbox-color-mode=light] ::-webkit-datetime-edit-year-field{padding:0}}@media print{html ::-webkit-inner-spin-button,html[data-netbox-color-mode=dark] ::-webkit-inner-spin-button,html[data-netbox-color-mode=light] ::-webkit-inner-spin-button{height:auto}}@media print{html [type=search],html[data-netbox-color-mode=dark] [type=search],html[data-netbox-color-mode=light] [type=search]{outline-offset:-2px;-webkit-appearance:textfield}}@media print{html ::-webkit-search-decoration,html[data-netbox-color-mode=dark] ::-webkit-search-decoration,html[data-netbox-color-mode=light] ::-webkit-search-decoration{-webkit-appearance:none}}@media print{html ::-webkit-color-swatch-wrapper,html[data-netbox-color-mode=dark] ::-webkit-color-swatch-wrapper,html[data-netbox-color-mode=light] ::-webkit-color-swatch-wrapper{padding:0}}@media print{html ::file-selector-button,html[data-netbox-color-mode=dark] ::file-selector-button,html[data-netbox-color-mode=light] ::file-selector-button{font:inherit}}@media print{html ::-webkit-file-upload-button,html[data-netbox-color-mode=dark] ::-webkit-file-upload-button,html[data-netbox-color-mode=light] ::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}}@media print{html output,html[data-netbox-color-mode=dark] output,html[data-netbox-color-mode=light] output{display:inline-block}}@media print{html iframe,html[data-netbox-color-mode=dark] iframe,html[data-netbox-color-mode=light] iframe{border:0}}@media print{html summary,html[data-netbox-color-mode=dark] summary,html[data-netbox-color-mode=light] summary{display:list-item;cursor:pointer}}@media print{html progress,html[data-netbox-color-mode=dark] progress,html[data-netbox-color-mode=light] progress{vertical-align:baseline}}@media print{html [hidden],html[data-netbox-color-mode=dark] [hidden],html[data-netbox-color-mode=light] [hidden]{display:none!important}}@media print{html .lead,html[data-netbox-color-mode=dark] .lead,html[data-netbox-color-mode=light] .lead{font-size:1.25rem;font-weight:300}}@media print{html .display-1,html[data-netbox-color-mode=dark] .display-1,html[data-netbox-color-mode=light] .display-1{font-size:calc(1.625rem + 4.5vw);font-weight:300;line-height:1.2}}@media print and (min-width: 1200px){html .display-1,html[data-netbox-color-mode=dark] .display-1,html[data-netbox-color-mode=light] .display-1{font-size:5rem}}@media print{html .display-2,html[data-netbox-color-mode=dark] .display-2,html[data-netbox-color-mode=light] .display-2{font-size:calc(1.575rem + 3.9vw);font-weight:300;line-height:1.2}}@media print and (min-width: 1200px){html .display-2,html[data-netbox-color-mode=dark] .display-2,html[data-netbox-color-mode=light] .display-2{font-size:4.5rem}}@media print{html .display-3,html[data-netbox-color-mode=dark] .display-3,html[data-netbox-color-mode=light] .display-3{font-size:calc(1.525rem + 3.3vw);font-weight:300;line-height:1.2}}@media print and (min-width: 1200px){html .display-3,html[data-netbox-color-mode=dark] .display-3,html[data-netbox-color-mode=light] .display-3{font-size:4rem}}@media print{html .display-4,html[data-netbox-color-mode=dark] .display-4,html[data-netbox-color-mode=light] .display-4{font-size:calc(1.475rem + 2.7vw);font-weight:300;line-height:1.2}}@media print and (min-width: 1200px){html .display-4,html[data-netbox-color-mode=dark] .display-4,html[data-netbox-color-mode=light] .display-4{font-size:3.5rem}}@media print{html .display-5,html[data-netbox-color-mode=dark] .display-5,html[data-netbox-color-mode=light] .display-5{font-size:calc(1.425rem + 2.1vw);font-weight:300;line-height:1.2}}@media print and (min-width: 1200px){html .display-5,html[data-netbox-color-mode=dark] .display-5,html[data-netbox-color-mode=light] .display-5{font-size:3rem}}@media print{html .display-6,html[data-netbox-color-mode=dark] .display-6,html[data-netbox-color-mode=light] .display-6{font-size:calc(1.375rem + 1.5vw);font-weight:300;line-height:1.2}}@media print and (min-width: 1200px){html .display-6,html[data-netbox-color-mode=dark] .display-6,html[data-netbox-color-mode=light] .display-6{font-size:2.5rem}}@media print{html .list-unstyled,html[data-netbox-color-mode=dark] .list-unstyled,html[data-netbox-color-mode=light] .list-unstyled{padding-left:0;list-style:none}}@media print{html .list-inline,html[data-netbox-color-mode=dark] .list-inline,html[data-netbox-color-mode=light] .list-inline{padding-left:0;list-style:none}}@media print{html .list-inline-item,html[data-netbox-color-mode=dark] .list-inline-item,html[data-netbox-color-mode=light] .list-inline-item{display:inline-block}html .list-inline-item:not(:last-child),html[data-netbox-color-mode=dark] .list-inline-item:not(:last-child),html[data-netbox-color-mode=light] .list-inline-item:not(:last-child){margin-right:.5rem}}@media print{html .initialism,html[data-netbox-color-mode=dark] .initialism,html[data-netbox-color-mode=light] .initialism{font-size:.875em;text-transform:uppercase}}@media print{html .blockquote,html[data-netbox-color-mode=dark] .blockquote,html[data-netbox-color-mode=light] .blockquote{margin-bottom:1rem;font-size:1.25rem}html .blockquote>:last-child,html[data-netbox-color-mode=dark] .blockquote>:last-child,html[data-netbox-color-mode=light] .blockquote>:last-child{margin-bottom:0}}@media print{html .blockquote-footer,html[data-netbox-color-mode=dark] .blockquote-footer,html[data-netbox-color-mode=light] .blockquote-footer{margin-top:-1rem;margin-bottom:1rem;font-size:.875em;color:#6c757d}html .blockquote-footer:before,html[data-netbox-color-mode=dark] .blockquote-footer:before,html[data-netbox-color-mode=light] .blockquote-footer:before{content:"\2014\a0"}}@media print{html .img-fluid,html[data-netbox-color-mode=dark] .img-fluid,html[data-netbox-color-mode=light] .img-fluid{max-width:100%;height:auto}}@media print{html .img-thumbnail,html[data-netbox-color-mode=dark] .img-thumbnail,html[data-netbox-color-mode=light] .img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.375rem;max-width:100%;height:auto}}@media print{html .figure,html[data-netbox-color-mode=dark] .figure,html[data-netbox-color-mode=light] .figure{display:inline-block}}@media print{html .figure-img,html[data-netbox-color-mode=dark] .figure-img,html[data-netbox-color-mode=light] .figure-img{margin-bottom:.5rem;line-height:1}}@media print{html .figure-caption,html[data-netbox-color-mode=dark] .figure-caption,html[data-netbox-color-mode=light] .figure-caption{font-size:.875em;color:#6c757d}}@media print{html .container,html .container-fluid,html .container-xxl,html[data-netbox-color-mode=dark] .container-xxl,html[data-netbox-color-mode=light] .container-xxl,html .container-xl,html[data-netbox-color-mode=dark] .container-xl,html[data-netbox-color-mode=light] .container-xl,html .container-lg,html[data-netbox-color-mode=dark] .container-lg,html[data-netbox-color-mode=light] .container-lg,html .container-md,html[data-netbox-color-mode=dark] .container-md,html[data-netbox-color-mode=light] .container-md,html .container-sm,html[data-netbox-color-mode=dark] .container-sm,html[data-netbox-color-mode=light] .container-sm,html[data-netbox-color-mode=dark] .container,html[data-netbox-color-mode=dark] .container-fluid,html[data-netbox-color-mode=light] .container,html[data-netbox-color-mode=light] .container-fluid{width:100%;padding-right:var(--bs-gutter-x, .75rem);padding-left:var(--bs-gutter-x, .75rem);margin-right:auto;margin-left:auto}}@media print and (min-width: 576px){html .container-sm,html[data-netbox-color-mode=dark] .container-sm,html[data-netbox-color-mode=light] .container-sm,html .container,html[data-netbox-color-mode=dark] .container,html[data-netbox-color-mode=light] .container{max-width:540px}}@media print and (min-width: 768px){html .container-md,html[data-netbox-color-mode=dark] .container-md,html[data-netbox-color-mode=light] .container-md,html .container-sm,html[data-netbox-color-mode=dark] .container-sm,html[data-netbox-color-mode=light] .container-sm,html .container,html[data-netbox-color-mode=dark] .container,html[data-netbox-color-mode=light] .container{max-width:720px}}@media print and (min-width: 992px){html .container-lg,html[data-netbox-color-mode=dark] .container-lg,html[data-netbox-color-mode=light] .container-lg,html .container-md,html[data-netbox-color-mode=dark] .container-md,html[data-netbox-color-mode=light] .container-md,html .container-sm,html[data-netbox-color-mode=dark] .container-sm,html[data-netbox-color-mode=light] .container-sm,html .container,html[data-netbox-color-mode=dark] .container,html[data-netbox-color-mode=light] .container{max-width:960px}}@media print and (min-width: 1200px){html .container-xl,html[data-netbox-color-mode=dark] .container-xl,html[data-netbox-color-mode=light] .container-xl,html .container-lg,html[data-netbox-color-mode=dark] .container-lg,html[data-netbox-color-mode=light] .container-lg,html .container-md,html[data-netbox-color-mode=dark] .container-md,html[data-netbox-color-mode=light] .container-md,html .container-sm,html[data-netbox-color-mode=dark] .container-sm,html[data-netbox-color-mode=light] .container-sm,html .container,html[data-netbox-color-mode=dark] .container,html[data-netbox-color-mode=light] .container{max-width:1140px}}@media print and (min-width: 1400px){html .container-xxl,html[data-netbox-color-mode=dark] .container-xxl,html[data-netbox-color-mode=light] .container-xxl,html .container-xl,html[data-netbox-color-mode=dark] .container-xl,html[data-netbox-color-mode=light] .container-xl,html .container-lg,html[data-netbox-color-mode=dark] .container-lg,html[data-netbox-color-mode=light] .container-lg,html .container-md,html[data-netbox-color-mode=dark] .container-md,html[data-netbox-color-mode=light] .container-md,html .container-sm,html[data-netbox-color-mode=dark] .container-sm,html[data-netbox-color-mode=light] .container-sm,html .container,html[data-netbox-color-mode=dark] .container,html[data-netbox-color-mode=light] .container{max-width:1320px}}@media print{html .row,html[data-netbox-color-mode=dark] .row,html[data-netbox-color-mode=light] .row{--bs-gutter-x: 1.5rem;--bs-gutter-y: 0;display:flex;flex-wrap:wrap;margin-top:calc(var(--bs-gutter-y) * -1);margin-right:calc(var(--bs-gutter-x) * -.5);margin-left:calc(var(--bs-gutter-x) * -.5)}html .row>*,html[data-netbox-color-mode=dark] .row>*,html[data-netbox-color-mode=light] .row>*{flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-top:var(--bs-gutter-y)}}@media print{html .col,html[data-netbox-color-mode=dark] .col,html[data-netbox-color-mode=light] .col{flex:1 0 0%}}@media print{html .row-cols-auto>*,html[data-netbox-color-mode=dark] .row-cols-auto>*,html[data-netbox-color-mode=light] .row-cols-auto>*{flex:0 0 auto;width:auto}}@media print{html .row-cols-1>*,html[data-netbox-color-mode=dark] .row-cols-1>*,html[data-netbox-color-mode=light] .row-cols-1>*{flex:0 0 auto;width:100%}}@media print{html .row-cols-2>*,html[data-netbox-color-mode=dark] .row-cols-2>*,html[data-netbox-color-mode=light] .row-cols-2>*{flex:0 0 auto;width:50%}}@media print{html .row-cols-3>*,html[data-netbox-color-mode=dark] .row-cols-3>*,html[data-netbox-color-mode=light] .row-cols-3>*{flex:0 0 auto;width:33.3333333333%}}@media print{html .row-cols-4>*,html[data-netbox-color-mode=dark] .row-cols-4>*,html[data-netbox-color-mode=light] .row-cols-4>*{flex:0 0 auto;width:25%}}@media print{html .row-cols-5>*,html[data-netbox-color-mode=dark] .row-cols-5>*,html[data-netbox-color-mode=light] .row-cols-5>*{flex:0 0 auto;width:20%}}@media print{html .row-cols-6>*,html[data-netbox-color-mode=dark] .row-cols-6>*,html[data-netbox-color-mode=light] .row-cols-6>*{flex:0 0 auto;width:16.6666666667%}}@media print and (min-width: 576px){html .col-sm,html[data-netbox-color-mode=dark] .col-sm,html[data-netbox-color-mode=light] .col-sm{flex:1 0 0%}html .row-cols-sm-auto>*,html[data-netbox-color-mode=dark] .row-cols-sm-auto>*,html[data-netbox-color-mode=light] .row-cols-sm-auto>*{flex:0 0 auto;width:auto}html .row-cols-sm-1>*,html[data-netbox-color-mode=dark] .row-cols-sm-1>*,html[data-netbox-color-mode=light] .row-cols-sm-1>*{flex:0 0 auto;width:100%}html .row-cols-sm-2>*,html[data-netbox-color-mode=dark] .row-cols-sm-2>*,html[data-netbox-color-mode=light] .row-cols-sm-2>*{flex:0 0 auto;width:50%}html .row-cols-sm-3>*,html[data-netbox-color-mode=dark] .row-cols-sm-3>*,html[data-netbox-color-mode=light] .row-cols-sm-3>*{flex:0 0 auto;width:33.3333333333%}html .row-cols-sm-4>*,html[data-netbox-color-mode=dark] .row-cols-sm-4>*,html[data-netbox-color-mode=light] .row-cols-sm-4>*{flex:0 0 auto;width:25%}html .row-cols-sm-5>*,html[data-netbox-color-mode=dark] .row-cols-sm-5>*,html[data-netbox-color-mode=light] .row-cols-sm-5>*{flex:0 0 auto;width:20%}html .row-cols-sm-6>*,html[data-netbox-color-mode=dark] .row-cols-sm-6>*,html[data-netbox-color-mode=light] .row-cols-sm-6>*{flex:0 0 auto;width:16.6666666667%}}@media print and (min-width: 768px){html .col-md,html[data-netbox-color-mode=dark] .col-md,html[data-netbox-color-mode=light] .col-md{flex:1 0 0%}html .row-cols-md-auto>*,html[data-netbox-color-mode=dark] .row-cols-md-auto>*,html[data-netbox-color-mode=light] .row-cols-md-auto>*{flex:0 0 auto;width:auto}html .row-cols-md-1>*,html[data-netbox-color-mode=dark] .row-cols-md-1>*,html[data-netbox-color-mode=light] .row-cols-md-1>*{flex:0 0 auto;width:100%}html .row-cols-md-2>*,html[data-netbox-color-mode=dark] .row-cols-md-2>*,html[data-netbox-color-mode=light] .row-cols-md-2>*{flex:0 0 auto;width:50%}html .row-cols-md-3>*,html[data-netbox-color-mode=dark] .row-cols-md-3>*,html[data-netbox-color-mode=light] .row-cols-md-3>*{flex:0 0 auto;width:33.3333333333%}html .row-cols-md-4>*,html[data-netbox-color-mode=dark] .row-cols-md-4>*,html[data-netbox-color-mode=light] .row-cols-md-4>*{flex:0 0 auto;width:25%}html .row-cols-md-5>*,html[data-netbox-color-mode=dark] .row-cols-md-5>*,html[data-netbox-color-mode=light] .row-cols-md-5>*{flex:0 0 auto;width:20%}html .row-cols-md-6>*,html[data-netbox-color-mode=dark] .row-cols-md-6>*,html[data-netbox-color-mode=light] .row-cols-md-6>*{flex:0 0 auto;width:16.6666666667%}}@media print and (min-width: 992px){html .col-lg,html[data-netbox-color-mode=dark] .col-lg,html[data-netbox-color-mode=light] .col-lg{flex:1 0 0%}html .row-cols-lg-auto>*,html[data-netbox-color-mode=dark] .row-cols-lg-auto>*,html[data-netbox-color-mode=light] .row-cols-lg-auto>*{flex:0 0 auto;width:auto}html .row-cols-lg-1>*,html[data-netbox-color-mode=dark] .row-cols-lg-1>*,html[data-netbox-color-mode=light] .row-cols-lg-1>*{flex:0 0 auto;width:100%}html .row-cols-lg-2>*,html[data-netbox-color-mode=dark] .row-cols-lg-2>*,html[data-netbox-color-mode=light] .row-cols-lg-2>*{flex:0 0 auto;width:50%}html .row-cols-lg-3>*,html[data-netbox-color-mode=dark] .row-cols-lg-3>*,html[data-netbox-color-mode=light] .row-cols-lg-3>*{flex:0 0 auto;width:33.3333333333%}html .row-cols-lg-4>*,html[data-netbox-color-mode=dark] .row-cols-lg-4>*,html[data-netbox-color-mode=light] .row-cols-lg-4>*{flex:0 0 auto;width:25%}html .row-cols-lg-5>*,html[data-netbox-color-mode=dark] .row-cols-lg-5>*,html[data-netbox-color-mode=light] .row-cols-lg-5>*{flex:0 0 auto;width:20%}html .row-cols-lg-6>*,html[data-netbox-color-mode=dark] .row-cols-lg-6>*,html[data-netbox-color-mode=light] .row-cols-lg-6>*{flex:0 0 auto;width:16.6666666667%}}@media print and (min-width: 1200px){html .col-xl,html[data-netbox-color-mode=dark] .col-xl,html[data-netbox-color-mode=light] .col-xl{flex:1 0 0%}html .row-cols-xl-auto>*,html[data-netbox-color-mode=dark] .row-cols-xl-auto>*,html[data-netbox-color-mode=light] .row-cols-xl-auto>*{flex:0 0 auto;width:auto}html .row-cols-xl-1>*,html[data-netbox-color-mode=dark] .row-cols-xl-1>*,html[data-netbox-color-mode=light] .row-cols-xl-1>*{flex:0 0 auto;width:100%}html .row-cols-xl-2>*,html[data-netbox-color-mode=dark] .row-cols-xl-2>*,html[data-netbox-color-mode=light] .row-cols-xl-2>*{flex:0 0 auto;width:50%}html .row-cols-xl-3>*,html[data-netbox-color-mode=dark] .row-cols-xl-3>*,html[data-netbox-color-mode=light] .row-cols-xl-3>*{flex:0 0 auto;width:33.3333333333%}html .row-cols-xl-4>*,html[data-netbox-color-mode=dark] .row-cols-xl-4>*,html[data-netbox-color-mode=light] .row-cols-xl-4>*{flex:0 0 auto;width:25%}html .row-cols-xl-5>*,html[data-netbox-color-mode=dark] .row-cols-xl-5>*,html[data-netbox-color-mode=light] .row-cols-xl-5>*{flex:0 0 auto;width:20%}html .row-cols-xl-6>*,html[data-netbox-color-mode=dark] .row-cols-xl-6>*,html[data-netbox-color-mode=light] .row-cols-xl-6>*{flex:0 0 auto;width:16.6666666667%}}@media print and (min-width: 1400px){html .col-xxl,html[data-netbox-color-mode=dark] .col-xxl,html[data-netbox-color-mode=light] .col-xxl{flex:1 0 0%}html .row-cols-xxl-auto>*,html[data-netbox-color-mode=dark] .row-cols-xxl-auto>*,html[data-netbox-color-mode=light] .row-cols-xxl-auto>*{flex:0 0 auto;width:auto}html .row-cols-xxl-1>*,html[data-netbox-color-mode=dark] .row-cols-xxl-1>*,html[data-netbox-color-mode=light] .row-cols-xxl-1>*{flex:0 0 auto;width:100%}html .row-cols-xxl-2>*,html[data-netbox-color-mode=dark] .row-cols-xxl-2>*,html[data-netbox-color-mode=light] .row-cols-xxl-2>*{flex:0 0 auto;width:50%}html .row-cols-xxl-3>*,html[data-netbox-color-mode=dark] .row-cols-xxl-3>*,html[data-netbox-color-mode=light] .row-cols-xxl-3>*{flex:0 0 auto;width:33.3333333333%}html .row-cols-xxl-4>*,html[data-netbox-color-mode=dark] .row-cols-xxl-4>*,html[data-netbox-color-mode=light] .row-cols-xxl-4>*{flex:0 0 auto;width:25%}html .row-cols-xxl-5>*,html[data-netbox-color-mode=dark] .row-cols-xxl-5>*,html[data-netbox-color-mode=light] .row-cols-xxl-5>*{flex:0 0 auto;width:20%}html .row-cols-xxl-6>*,html[data-netbox-color-mode=dark] .row-cols-xxl-6>*,html[data-netbox-color-mode=light] .row-cols-xxl-6>*{flex:0 0 auto;width:16.6666666667%}}@media print{html .col-auto,html[data-netbox-color-mode=dark] .col-auto,html[data-netbox-color-mode=light] .col-auto{flex:0 0 auto;width:auto}}@media print{html .col-1,html[data-netbox-color-mode=dark] .col-1,html[data-netbox-color-mode=light] .col-1{flex:0 0 auto;width:8.33333333%}}@media print{html .col-2,html[data-netbox-color-mode=dark] .col-2,html[data-netbox-color-mode=light] .col-2{flex:0 0 auto;width:16.66666667%}}@media print{html .col-3,html[data-netbox-color-mode=dark] .col-3,html[data-netbox-color-mode=light] .col-3{flex:0 0 auto;width:25%}}@media print{html .col-4,html[data-netbox-color-mode=dark] .col-4,html[data-netbox-color-mode=light] .col-4{flex:0 0 auto;width:33.33333333%}}@media print{html .col-5,html[data-netbox-color-mode=dark] .col-5,html[data-netbox-color-mode=light] .col-5{flex:0 0 auto;width:41.66666667%}}@media print{html .col-6,html[data-netbox-color-mode=dark] .col-6,html[data-netbox-color-mode=light] .col-6{flex:0 0 auto;width:50%}}@media print{html .col-7,html[data-netbox-color-mode=dark] .col-7,html[data-netbox-color-mode=light] .col-7{flex:0 0 auto;width:58.33333333%}}@media print{html .col-8,html[data-netbox-color-mode=dark] .col-8,html[data-netbox-color-mode=light] .col-8{flex:0 0 auto;width:66.66666667%}}@media print{html .col-9,html[data-netbox-color-mode=dark] .col-9,html[data-netbox-color-mode=light] .col-9{flex:0 0 auto;width:75%}}@media print{html .col-10,html[data-netbox-color-mode=dark] .col-10,html[data-netbox-color-mode=light] .col-10{flex:0 0 auto;width:83.33333333%}}@media print{html .col-11,html[data-netbox-color-mode=dark] .col-11,html[data-netbox-color-mode=light] .col-11{flex:0 0 auto;width:91.66666667%}}@media print{html .col-12,html[data-netbox-color-mode=dark] .col-12,html[data-netbox-color-mode=light] .col-12{flex:0 0 auto;width:100%}}@media print{html .offset-1,html[data-netbox-color-mode=dark] .offset-1,html[data-netbox-color-mode=light] .offset-1{margin-left:8.33333333%}}@media print{html .offset-2,html[data-netbox-color-mode=dark] .offset-2,html[data-netbox-color-mode=light] .offset-2{margin-left:16.66666667%}}@media print{html .offset-3,html[data-netbox-color-mode=dark] .offset-3,html[data-netbox-color-mode=light] .offset-3{margin-left:25%}}@media print{html .offset-4,html[data-netbox-color-mode=dark] .offset-4,html[data-netbox-color-mode=light] .offset-4{margin-left:33.33333333%}}@media print{html .offset-5,html[data-netbox-color-mode=dark] .offset-5,html[data-netbox-color-mode=light] .offset-5{margin-left:41.66666667%}}@media print{html .offset-6,html[data-netbox-color-mode=dark] .offset-6,html[data-netbox-color-mode=light] .offset-6{margin-left:50%}}@media print{html .offset-7,html[data-netbox-color-mode=dark] .offset-7,html[data-netbox-color-mode=light] .offset-7{margin-left:58.33333333%}}@media print{html .offset-8,html[data-netbox-color-mode=dark] .offset-8,html[data-netbox-color-mode=light] .offset-8{margin-left:66.66666667%}}@media print{html .offset-9,html[data-netbox-color-mode=dark] .offset-9,html[data-netbox-color-mode=light] .offset-9{margin-left:75%}}@media print{html .offset-10,html[data-netbox-color-mode=dark] .offset-10,html[data-netbox-color-mode=light] .offset-10{margin-left:83.33333333%}}@media print{html .offset-11,html[data-netbox-color-mode=dark] .offset-11,html[data-netbox-color-mode=light] .offset-11{margin-left:91.66666667%}}@media print{html .g-0,html .gx-0,html[data-netbox-color-mode=dark] .g-0,html[data-netbox-color-mode=dark] .gx-0,html[data-netbox-color-mode=light] .g-0,html[data-netbox-color-mode=light] .gx-0{--bs-gutter-x: 0}}@media print{html .g-0,html .gy-0,html[data-netbox-color-mode=dark] .g-0,html[data-netbox-color-mode=dark] .gy-0,html[data-netbox-color-mode=light] .g-0,html[data-netbox-color-mode=light] .gy-0{--bs-gutter-y: 0}}@media print{html .g-1,html .gx-1,html[data-netbox-color-mode=dark] .g-1,html[data-netbox-color-mode=dark] .gx-1,html[data-netbox-color-mode=light] .g-1,html[data-netbox-color-mode=light] .gx-1{--bs-gutter-x: .25rem}}@media print{html .g-1,html .gy-1,html[data-netbox-color-mode=dark] .g-1,html[data-netbox-color-mode=dark] .gy-1,html[data-netbox-color-mode=light] .g-1,html[data-netbox-color-mode=light] .gy-1{--bs-gutter-y: .25rem}}@media print{html .g-2,html .gx-2,html[data-netbox-color-mode=dark] .g-2,html[data-netbox-color-mode=dark] .gx-2,html[data-netbox-color-mode=light] .g-2,html[data-netbox-color-mode=light] .gx-2{--bs-gutter-x: .5rem}}@media print{html .g-2,html .gy-2,html[data-netbox-color-mode=dark] .g-2,html[data-netbox-color-mode=dark] .gy-2,html[data-netbox-color-mode=light] .g-2,html[data-netbox-color-mode=light] .gy-2{--bs-gutter-y: .5rem}}@media print{html .g-3,html .gx-3,html[data-netbox-color-mode=dark] .g-3,html[data-netbox-color-mode=dark] .gx-3,html[data-netbox-color-mode=light] .g-3,html[data-netbox-color-mode=light] .gx-3{--bs-gutter-x: 1rem}}@media print{html .g-3,html .gy-3,html[data-netbox-color-mode=dark] .g-3,html[data-netbox-color-mode=dark] .gy-3,html[data-netbox-color-mode=light] .g-3,html[data-netbox-color-mode=light] .gy-3{--bs-gutter-y: 1rem}}@media print{html .g-4,html .gx-4,html[data-netbox-color-mode=dark] .g-4,html[data-netbox-color-mode=dark] .gx-4,html[data-netbox-color-mode=light] .g-4,html[data-netbox-color-mode=light] .gx-4{--bs-gutter-x: 1.5rem}}@media print{html .g-4,html .gy-4,html[data-netbox-color-mode=dark] .g-4,html[data-netbox-color-mode=dark] .gy-4,html[data-netbox-color-mode=light] .g-4,html[data-netbox-color-mode=light] .gy-4{--bs-gutter-y: 1.5rem}}@media print{html .g-5,html .gx-5,html[data-netbox-color-mode=dark] .g-5,html[data-netbox-color-mode=dark] .gx-5,html[data-netbox-color-mode=light] .g-5,html[data-netbox-color-mode=light] .gx-5{--bs-gutter-x: 3rem}}@media print{html .g-5,html .gy-5,html[data-netbox-color-mode=dark] .g-5,html[data-netbox-color-mode=dark] .gy-5,html[data-netbox-color-mode=light] .g-5,html[data-netbox-color-mode=light] .gy-5{--bs-gutter-y: 3rem}}@media print and (min-width: 576px){html .col-sm-auto,html[data-netbox-color-mode=dark] .col-sm-auto,html[data-netbox-color-mode=light] .col-sm-auto{flex:0 0 auto;width:auto}html .col-sm-1,html[data-netbox-color-mode=dark] .col-sm-1,html[data-netbox-color-mode=light] .col-sm-1{flex:0 0 auto;width:8.33333333%}html .col-sm-2,html[data-netbox-color-mode=dark] .col-sm-2,html[data-netbox-color-mode=light] .col-sm-2{flex:0 0 auto;width:16.66666667%}html .col-sm-3,html[data-netbox-color-mode=dark] .col-sm-3,html[data-netbox-color-mode=light] .col-sm-3{flex:0 0 auto;width:25%}html .col-sm-4,html[data-netbox-color-mode=dark] .col-sm-4,html[data-netbox-color-mode=light] .col-sm-4{flex:0 0 auto;width:33.33333333%}html .col-sm-5,html[data-netbox-color-mode=dark] .col-sm-5,html[data-netbox-color-mode=light] .col-sm-5{flex:0 0 auto;width:41.66666667%}html .col-sm-6,html[data-netbox-color-mode=dark] .col-sm-6,html[data-netbox-color-mode=light] .col-sm-6{flex:0 0 auto;width:50%}html .col-sm-7,html[data-netbox-color-mode=dark] .col-sm-7,html[data-netbox-color-mode=light] .col-sm-7{flex:0 0 auto;width:58.33333333%}html .col-sm-8,html[data-netbox-color-mode=dark] .col-sm-8,html[data-netbox-color-mode=light] .col-sm-8{flex:0 0 auto;width:66.66666667%}html .col-sm-9,html[data-netbox-color-mode=dark] .col-sm-9,html[data-netbox-color-mode=light] .col-sm-9{flex:0 0 auto;width:75%}html .col-sm-10,html[data-netbox-color-mode=dark] .col-sm-10,html[data-netbox-color-mode=light] .col-sm-10{flex:0 0 auto;width:83.33333333%}html .col-sm-11,html[data-netbox-color-mode=dark] .col-sm-11,html[data-netbox-color-mode=light] .col-sm-11{flex:0 0 auto;width:91.66666667%}html .col-sm-12,html[data-netbox-color-mode=dark] .col-sm-12,html[data-netbox-color-mode=light] .col-sm-12{flex:0 0 auto;width:100%}html .offset-sm-0,html[data-netbox-color-mode=dark] .offset-sm-0,html[data-netbox-color-mode=light] .offset-sm-0{margin-left:0}html .offset-sm-1,html[data-netbox-color-mode=dark] .offset-sm-1,html[data-netbox-color-mode=light] .offset-sm-1{margin-left:8.33333333%}html .offset-sm-2,html[data-netbox-color-mode=dark] .offset-sm-2,html[data-netbox-color-mode=light] .offset-sm-2{margin-left:16.66666667%}html .offset-sm-3,html[data-netbox-color-mode=dark] .offset-sm-3,html[data-netbox-color-mode=light] .offset-sm-3{margin-left:25%}html .offset-sm-4,html[data-netbox-color-mode=dark] .offset-sm-4,html[data-netbox-color-mode=light] .offset-sm-4{margin-left:33.33333333%}html .offset-sm-5,html[data-netbox-color-mode=dark] .offset-sm-5,html[data-netbox-color-mode=light] .offset-sm-5{margin-left:41.66666667%}html .offset-sm-6,html[data-netbox-color-mode=dark] .offset-sm-6,html[data-netbox-color-mode=light] .offset-sm-6{margin-left:50%}html .offset-sm-7,html[data-netbox-color-mode=dark] .offset-sm-7,html[data-netbox-color-mode=light] .offset-sm-7{margin-left:58.33333333%}html .offset-sm-8,html[data-netbox-color-mode=dark] .offset-sm-8,html[data-netbox-color-mode=light] .offset-sm-8{margin-left:66.66666667%}html .offset-sm-9,html[data-netbox-color-mode=dark] .offset-sm-9,html[data-netbox-color-mode=light] .offset-sm-9{margin-left:75%}html .offset-sm-10,html[data-netbox-color-mode=dark] .offset-sm-10,html[data-netbox-color-mode=light] .offset-sm-10{margin-left:83.33333333%}html .offset-sm-11,html[data-netbox-color-mode=dark] .offset-sm-11,html[data-netbox-color-mode=light] .offset-sm-11{margin-left:91.66666667%}html .g-sm-0,html .gx-sm-0,html[data-netbox-color-mode=dark] .g-sm-0,html[data-netbox-color-mode=dark] .gx-sm-0,html[data-netbox-color-mode=light] .g-sm-0,html[data-netbox-color-mode=light] .gx-sm-0{--bs-gutter-x: 0}html .g-sm-0,html .gy-sm-0,html[data-netbox-color-mode=dark] .g-sm-0,html[data-netbox-color-mode=dark] .gy-sm-0,html[data-netbox-color-mode=light] .g-sm-0,html[data-netbox-color-mode=light] .gy-sm-0{--bs-gutter-y: 0}html .g-sm-1,html .gx-sm-1,html[data-netbox-color-mode=dark] .g-sm-1,html[data-netbox-color-mode=dark] .gx-sm-1,html[data-netbox-color-mode=light] .g-sm-1,html[data-netbox-color-mode=light] .gx-sm-1{--bs-gutter-x: .25rem}html .g-sm-1,html .gy-sm-1,html[data-netbox-color-mode=dark] .g-sm-1,html[data-netbox-color-mode=dark] .gy-sm-1,html[data-netbox-color-mode=light] .g-sm-1,html[data-netbox-color-mode=light] .gy-sm-1{--bs-gutter-y: .25rem}html .g-sm-2,html .gx-sm-2,html[data-netbox-color-mode=dark] .g-sm-2,html[data-netbox-color-mode=dark] .gx-sm-2,html[data-netbox-color-mode=light] .g-sm-2,html[data-netbox-color-mode=light] .gx-sm-2{--bs-gutter-x: .5rem}html .g-sm-2,html .gy-sm-2,html[data-netbox-color-mode=dark] .g-sm-2,html[data-netbox-color-mode=dark] .gy-sm-2,html[data-netbox-color-mode=light] .g-sm-2,html[data-netbox-color-mode=light] .gy-sm-2{--bs-gutter-y: .5rem}html .g-sm-3,html .gx-sm-3,html[data-netbox-color-mode=dark] .g-sm-3,html[data-netbox-color-mode=dark] .gx-sm-3,html[data-netbox-color-mode=light] .g-sm-3,html[data-netbox-color-mode=light] .gx-sm-3{--bs-gutter-x: 1rem}html .g-sm-3,html .gy-sm-3,html[data-netbox-color-mode=dark] .g-sm-3,html[data-netbox-color-mode=dark] .gy-sm-3,html[data-netbox-color-mode=light] .g-sm-3,html[data-netbox-color-mode=light] .gy-sm-3{--bs-gutter-y: 1rem}html .g-sm-4,html .gx-sm-4,html[data-netbox-color-mode=dark] .g-sm-4,html[data-netbox-color-mode=dark] .gx-sm-4,html[data-netbox-color-mode=light] .g-sm-4,html[data-netbox-color-mode=light] .gx-sm-4{--bs-gutter-x: 1.5rem}html .g-sm-4,html .gy-sm-4,html[data-netbox-color-mode=dark] .g-sm-4,html[data-netbox-color-mode=dark] .gy-sm-4,html[data-netbox-color-mode=light] .g-sm-4,html[data-netbox-color-mode=light] .gy-sm-4{--bs-gutter-y: 1.5rem}html .g-sm-5,html .gx-sm-5,html[data-netbox-color-mode=dark] .g-sm-5,html[data-netbox-color-mode=dark] .gx-sm-5,html[data-netbox-color-mode=light] .g-sm-5,html[data-netbox-color-mode=light] .gx-sm-5{--bs-gutter-x: 3rem}html .g-sm-5,html .gy-sm-5,html[data-netbox-color-mode=dark] .g-sm-5,html[data-netbox-color-mode=dark] .gy-sm-5,html[data-netbox-color-mode=light] .g-sm-5,html[data-netbox-color-mode=light] .gy-sm-5{--bs-gutter-y: 3rem}}@media print and (min-width: 768px){html .col-md-auto,html[data-netbox-color-mode=dark] .col-md-auto,html[data-netbox-color-mode=light] .col-md-auto{flex:0 0 auto;width:auto}html .col-md-1,html[data-netbox-color-mode=dark] .col-md-1,html[data-netbox-color-mode=light] .col-md-1{flex:0 0 auto;width:8.33333333%}html .col-md-2,html[data-netbox-color-mode=dark] .col-md-2,html[data-netbox-color-mode=light] .col-md-2{flex:0 0 auto;width:16.66666667%}html .col-md-3,html[data-netbox-color-mode=dark] .col-md-3,html[data-netbox-color-mode=light] .col-md-3{flex:0 0 auto;width:25%}html .col-md-4,html[data-netbox-color-mode=dark] .col-md-4,html[data-netbox-color-mode=light] .col-md-4{flex:0 0 auto;width:33.33333333%}html .col-md-5,html[data-netbox-color-mode=dark] .col-md-5,html[data-netbox-color-mode=light] .col-md-5{flex:0 0 auto;width:41.66666667%}html .col-md-6,html[data-netbox-color-mode=dark] .col-md-6,html[data-netbox-color-mode=light] .col-md-6{flex:0 0 auto;width:50%}html .col-md-7,html[data-netbox-color-mode=dark] .col-md-7,html[data-netbox-color-mode=light] .col-md-7{flex:0 0 auto;width:58.33333333%}html .col-md-8,html[data-netbox-color-mode=dark] .col-md-8,html[data-netbox-color-mode=light] .col-md-8{flex:0 0 auto;width:66.66666667%}html .col-md-9,html[data-netbox-color-mode=dark] .col-md-9,html[data-netbox-color-mode=light] .col-md-9{flex:0 0 auto;width:75%}html .col-md-10,html[data-netbox-color-mode=dark] .col-md-10,html[data-netbox-color-mode=light] .col-md-10{flex:0 0 auto;width:83.33333333%}html .col-md-11,html[data-netbox-color-mode=dark] .col-md-11,html[data-netbox-color-mode=light] .col-md-11{flex:0 0 auto;width:91.66666667%}html .col-md-12,html[data-netbox-color-mode=dark] .col-md-12,html[data-netbox-color-mode=light] .col-md-12{flex:0 0 auto;width:100%}html .offset-md-0,html[data-netbox-color-mode=dark] .offset-md-0,html[data-netbox-color-mode=light] .offset-md-0{margin-left:0}html .offset-md-1,html[data-netbox-color-mode=dark] .offset-md-1,html[data-netbox-color-mode=light] .offset-md-1{margin-left:8.33333333%}html .offset-md-2,html[data-netbox-color-mode=dark] .offset-md-2,html[data-netbox-color-mode=light] .offset-md-2{margin-left:16.66666667%}html .offset-md-3,html[data-netbox-color-mode=dark] .offset-md-3,html[data-netbox-color-mode=light] .offset-md-3{margin-left:25%}html .offset-md-4,html[data-netbox-color-mode=dark] .offset-md-4,html[data-netbox-color-mode=light] .offset-md-4{margin-left:33.33333333%}html .offset-md-5,html[data-netbox-color-mode=dark] .offset-md-5,html[data-netbox-color-mode=light] .offset-md-5{margin-left:41.66666667%}html .offset-md-6,html[data-netbox-color-mode=dark] .offset-md-6,html[data-netbox-color-mode=light] .offset-md-6{margin-left:50%}html .offset-md-7,html[data-netbox-color-mode=dark] .offset-md-7,html[data-netbox-color-mode=light] .offset-md-7{margin-left:58.33333333%}html .offset-md-8,html[data-netbox-color-mode=dark] .offset-md-8,html[data-netbox-color-mode=light] .offset-md-8{margin-left:66.66666667%}html .offset-md-9,html[data-netbox-color-mode=dark] .offset-md-9,html[data-netbox-color-mode=light] .offset-md-9{margin-left:75%}html .offset-md-10,html[data-netbox-color-mode=dark] .offset-md-10,html[data-netbox-color-mode=light] .offset-md-10{margin-left:83.33333333%}html .offset-md-11,html[data-netbox-color-mode=dark] .offset-md-11,html[data-netbox-color-mode=light] .offset-md-11{margin-left:91.66666667%}html .g-md-0,html .gx-md-0,html[data-netbox-color-mode=dark] .g-md-0,html[data-netbox-color-mode=dark] .gx-md-0,html[data-netbox-color-mode=light] .g-md-0,html[data-netbox-color-mode=light] .gx-md-0{--bs-gutter-x: 0}html .g-md-0,html .gy-md-0,html[data-netbox-color-mode=dark] .g-md-0,html[data-netbox-color-mode=dark] .gy-md-0,html[data-netbox-color-mode=light] .g-md-0,html[data-netbox-color-mode=light] .gy-md-0{--bs-gutter-y: 0}html .g-md-1,html .gx-md-1,html[data-netbox-color-mode=dark] .g-md-1,html[data-netbox-color-mode=dark] .gx-md-1,html[data-netbox-color-mode=light] .g-md-1,html[data-netbox-color-mode=light] .gx-md-1{--bs-gutter-x: .25rem}html .g-md-1,html .gy-md-1,html[data-netbox-color-mode=dark] .g-md-1,html[data-netbox-color-mode=dark] .gy-md-1,html[data-netbox-color-mode=light] .g-md-1,html[data-netbox-color-mode=light] .gy-md-1{--bs-gutter-y: .25rem}html .g-md-2,html .gx-md-2,html[data-netbox-color-mode=dark] .g-md-2,html[data-netbox-color-mode=dark] .gx-md-2,html[data-netbox-color-mode=light] .g-md-2,html[data-netbox-color-mode=light] .gx-md-2{--bs-gutter-x: .5rem}html .g-md-2,html .gy-md-2,html[data-netbox-color-mode=dark] .g-md-2,html[data-netbox-color-mode=dark] .gy-md-2,html[data-netbox-color-mode=light] .g-md-2,html[data-netbox-color-mode=light] .gy-md-2{--bs-gutter-y: .5rem}html .g-md-3,html .gx-md-3,html[data-netbox-color-mode=dark] .g-md-3,html[data-netbox-color-mode=dark] .gx-md-3,html[data-netbox-color-mode=light] .g-md-3,html[data-netbox-color-mode=light] .gx-md-3{--bs-gutter-x: 1rem}html .g-md-3,html .gy-md-3,html[data-netbox-color-mode=dark] .g-md-3,html[data-netbox-color-mode=dark] .gy-md-3,html[data-netbox-color-mode=light] .g-md-3,html[data-netbox-color-mode=light] .gy-md-3{--bs-gutter-y: 1rem}html .g-md-4,html .gx-md-4,html[data-netbox-color-mode=dark] .g-md-4,html[data-netbox-color-mode=dark] .gx-md-4,html[data-netbox-color-mode=light] .g-md-4,html[data-netbox-color-mode=light] .gx-md-4{--bs-gutter-x: 1.5rem}html .g-md-4,html .gy-md-4,html[data-netbox-color-mode=dark] .g-md-4,html[data-netbox-color-mode=dark] .gy-md-4,html[data-netbox-color-mode=light] .g-md-4,html[data-netbox-color-mode=light] .gy-md-4{--bs-gutter-y: 1.5rem}html .g-md-5,html .gx-md-5,html[data-netbox-color-mode=dark] .g-md-5,html[data-netbox-color-mode=dark] .gx-md-5,html[data-netbox-color-mode=light] .g-md-5,html[data-netbox-color-mode=light] .gx-md-5{--bs-gutter-x: 3rem}html .g-md-5,html .gy-md-5,html[data-netbox-color-mode=dark] .g-md-5,html[data-netbox-color-mode=dark] .gy-md-5,html[data-netbox-color-mode=light] .g-md-5,html[data-netbox-color-mode=light] .gy-md-5{--bs-gutter-y: 3rem}}@media print and (min-width: 992px){html .col-lg-auto,html[data-netbox-color-mode=dark] .col-lg-auto,html[data-netbox-color-mode=light] .col-lg-auto{flex:0 0 auto;width:auto}html .col-lg-1,html[data-netbox-color-mode=dark] .col-lg-1,html[data-netbox-color-mode=light] .col-lg-1{flex:0 0 auto;width:8.33333333%}html .col-lg-2,html[data-netbox-color-mode=dark] .col-lg-2,html[data-netbox-color-mode=light] .col-lg-2{flex:0 0 auto;width:16.66666667%}html .col-lg-3,html[data-netbox-color-mode=dark] .col-lg-3,html[data-netbox-color-mode=light] .col-lg-3{flex:0 0 auto;width:25%}html .col-lg-4,html[data-netbox-color-mode=dark] .col-lg-4,html[data-netbox-color-mode=light] .col-lg-4{flex:0 0 auto;width:33.33333333%}html .col-lg-5,html[data-netbox-color-mode=dark] .col-lg-5,html[data-netbox-color-mode=light] .col-lg-5{flex:0 0 auto;width:41.66666667%}html .col-lg-6,html[data-netbox-color-mode=dark] .col-lg-6,html[data-netbox-color-mode=light] .col-lg-6{flex:0 0 auto;width:50%}html .col-lg-7,html[data-netbox-color-mode=dark] .col-lg-7,html[data-netbox-color-mode=light] .col-lg-7{flex:0 0 auto;width:58.33333333%}html .col-lg-8,html[data-netbox-color-mode=dark] .col-lg-8,html[data-netbox-color-mode=light] .col-lg-8{flex:0 0 auto;width:66.66666667%}html .col-lg-9,html[data-netbox-color-mode=dark] .col-lg-9,html[data-netbox-color-mode=light] .col-lg-9{flex:0 0 auto;width:75%}html .col-lg-10,html[data-netbox-color-mode=dark] .col-lg-10,html[data-netbox-color-mode=light] .col-lg-10{flex:0 0 auto;width:83.33333333%}html .col-lg-11,html[data-netbox-color-mode=dark] .col-lg-11,html[data-netbox-color-mode=light] .col-lg-11{flex:0 0 auto;width:91.66666667%}html .col-lg-12,html[data-netbox-color-mode=dark] .col-lg-12,html[data-netbox-color-mode=light] .col-lg-12{flex:0 0 auto;width:100%}html .offset-lg-0,html[data-netbox-color-mode=dark] .offset-lg-0,html[data-netbox-color-mode=light] .offset-lg-0{margin-left:0}html .offset-lg-1,html[data-netbox-color-mode=dark] .offset-lg-1,html[data-netbox-color-mode=light] .offset-lg-1{margin-left:8.33333333%}html .offset-lg-2,html[data-netbox-color-mode=dark] .offset-lg-2,html[data-netbox-color-mode=light] .offset-lg-2{margin-left:16.66666667%}html .offset-lg-3,html[data-netbox-color-mode=dark] .offset-lg-3,html[data-netbox-color-mode=light] .offset-lg-3{margin-left:25%}html .offset-lg-4,html[data-netbox-color-mode=dark] .offset-lg-4,html[data-netbox-color-mode=light] .offset-lg-4{margin-left:33.33333333%}html .offset-lg-5,html[data-netbox-color-mode=dark] .offset-lg-5,html[data-netbox-color-mode=light] .offset-lg-5{margin-left:41.66666667%}html .offset-lg-6,html[data-netbox-color-mode=dark] .offset-lg-6,html[data-netbox-color-mode=light] .offset-lg-6{margin-left:50%}html .offset-lg-7,html[data-netbox-color-mode=dark] .offset-lg-7,html[data-netbox-color-mode=light] .offset-lg-7{margin-left:58.33333333%}html .offset-lg-8,html[data-netbox-color-mode=dark] .offset-lg-8,html[data-netbox-color-mode=light] .offset-lg-8{margin-left:66.66666667%}html .offset-lg-9,html[data-netbox-color-mode=dark] .offset-lg-9,html[data-netbox-color-mode=light] .offset-lg-9{margin-left:75%}html .offset-lg-10,html[data-netbox-color-mode=dark] .offset-lg-10,html[data-netbox-color-mode=light] .offset-lg-10{margin-left:83.33333333%}html .offset-lg-11,html[data-netbox-color-mode=dark] .offset-lg-11,html[data-netbox-color-mode=light] .offset-lg-11{margin-left:91.66666667%}html .g-lg-0,html .gx-lg-0,html[data-netbox-color-mode=dark] .g-lg-0,html[data-netbox-color-mode=dark] .gx-lg-0,html[data-netbox-color-mode=light] .g-lg-0,html[data-netbox-color-mode=light] .gx-lg-0{--bs-gutter-x: 0}html .g-lg-0,html .gy-lg-0,html[data-netbox-color-mode=dark] .g-lg-0,html[data-netbox-color-mode=dark] .gy-lg-0,html[data-netbox-color-mode=light] .g-lg-0,html[data-netbox-color-mode=light] .gy-lg-0{--bs-gutter-y: 0}html .g-lg-1,html .gx-lg-1,html[data-netbox-color-mode=dark] .g-lg-1,html[data-netbox-color-mode=dark] .gx-lg-1,html[data-netbox-color-mode=light] .g-lg-1,html[data-netbox-color-mode=light] .gx-lg-1{--bs-gutter-x: .25rem}html .g-lg-1,html .gy-lg-1,html[data-netbox-color-mode=dark] .g-lg-1,html[data-netbox-color-mode=dark] .gy-lg-1,html[data-netbox-color-mode=light] .g-lg-1,html[data-netbox-color-mode=light] .gy-lg-1{--bs-gutter-y: .25rem}html .g-lg-2,html .gx-lg-2,html[data-netbox-color-mode=dark] .g-lg-2,html[data-netbox-color-mode=dark] .gx-lg-2,html[data-netbox-color-mode=light] .g-lg-2,html[data-netbox-color-mode=light] .gx-lg-2{--bs-gutter-x: .5rem}html .g-lg-2,html .gy-lg-2,html[data-netbox-color-mode=dark] .g-lg-2,html[data-netbox-color-mode=dark] .gy-lg-2,html[data-netbox-color-mode=light] .g-lg-2,html[data-netbox-color-mode=light] .gy-lg-2{--bs-gutter-y: .5rem}html .g-lg-3,html .gx-lg-3,html[data-netbox-color-mode=dark] .g-lg-3,html[data-netbox-color-mode=dark] .gx-lg-3,html[data-netbox-color-mode=light] .g-lg-3,html[data-netbox-color-mode=light] .gx-lg-3{--bs-gutter-x: 1rem}html .g-lg-3,html .gy-lg-3,html[data-netbox-color-mode=dark] .g-lg-3,html[data-netbox-color-mode=dark] .gy-lg-3,html[data-netbox-color-mode=light] .g-lg-3,html[data-netbox-color-mode=light] .gy-lg-3{--bs-gutter-y: 1rem}html .g-lg-4,html .gx-lg-4,html[data-netbox-color-mode=dark] .g-lg-4,html[data-netbox-color-mode=dark] .gx-lg-4,html[data-netbox-color-mode=light] .g-lg-4,html[data-netbox-color-mode=light] .gx-lg-4{--bs-gutter-x: 1.5rem}html .g-lg-4,html .gy-lg-4,html[data-netbox-color-mode=dark] .g-lg-4,html[data-netbox-color-mode=dark] .gy-lg-4,html[data-netbox-color-mode=light] .g-lg-4,html[data-netbox-color-mode=light] .gy-lg-4{--bs-gutter-y: 1.5rem}html .g-lg-5,html .gx-lg-5,html[data-netbox-color-mode=dark] .g-lg-5,html[data-netbox-color-mode=dark] .gx-lg-5,html[data-netbox-color-mode=light] .g-lg-5,html[data-netbox-color-mode=light] .gx-lg-5{--bs-gutter-x: 3rem}html .g-lg-5,html .gy-lg-5,html[data-netbox-color-mode=dark] .g-lg-5,html[data-netbox-color-mode=dark] .gy-lg-5,html[data-netbox-color-mode=light] .g-lg-5,html[data-netbox-color-mode=light] .gy-lg-5{--bs-gutter-y: 3rem}}@media print and (min-width: 1200px){html .col-xl-auto,html[data-netbox-color-mode=dark] .col-xl-auto,html[data-netbox-color-mode=light] .col-xl-auto{flex:0 0 auto;width:auto}html .col-xl-1,html[data-netbox-color-mode=dark] .col-xl-1,html[data-netbox-color-mode=light] .col-xl-1{flex:0 0 auto;width:8.33333333%}html .col-xl-2,html[data-netbox-color-mode=dark] .col-xl-2,html[data-netbox-color-mode=light] .col-xl-2{flex:0 0 auto;width:16.66666667%}html .col-xl-3,html[data-netbox-color-mode=dark] .col-xl-3,html[data-netbox-color-mode=light] .col-xl-3{flex:0 0 auto;width:25%}html .col-xl-4,html[data-netbox-color-mode=dark] .col-xl-4,html[data-netbox-color-mode=light] .col-xl-4{flex:0 0 auto;width:33.33333333%}html .col-xl-5,html[data-netbox-color-mode=dark] .col-xl-5,html[data-netbox-color-mode=light] .col-xl-5{flex:0 0 auto;width:41.66666667%}html .col-xl-6,html[data-netbox-color-mode=dark] .col-xl-6,html[data-netbox-color-mode=light] .col-xl-6{flex:0 0 auto;width:50%}html .col-xl-7,html[data-netbox-color-mode=dark] .col-xl-7,html[data-netbox-color-mode=light] .col-xl-7{flex:0 0 auto;width:58.33333333%}html .col-xl-8,html[data-netbox-color-mode=dark] .col-xl-8,html[data-netbox-color-mode=light] .col-xl-8{flex:0 0 auto;width:66.66666667%}html .col-xl-9,html[data-netbox-color-mode=dark] .col-xl-9,html[data-netbox-color-mode=light] .col-xl-9{flex:0 0 auto;width:75%}html .col-xl-10,html[data-netbox-color-mode=dark] .col-xl-10,html[data-netbox-color-mode=light] .col-xl-10{flex:0 0 auto;width:83.33333333%}html .col-xl-11,html[data-netbox-color-mode=dark] .col-xl-11,html[data-netbox-color-mode=light] .col-xl-11{flex:0 0 auto;width:91.66666667%}html .col-xl-12,html[data-netbox-color-mode=dark] .col-xl-12,html[data-netbox-color-mode=light] .col-xl-12{flex:0 0 auto;width:100%}html .offset-xl-0,html[data-netbox-color-mode=dark] .offset-xl-0,html[data-netbox-color-mode=light] .offset-xl-0{margin-left:0}html .offset-xl-1,html[data-netbox-color-mode=dark] .offset-xl-1,html[data-netbox-color-mode=light] .offset-xl-1{margin-left:8.33333333%}html .offset-xl-2,html[data-netbox-color-mode=dark] .offset-xl-2,html[data-netbox-color-mode=light] .offset-xl-2{margin-left:16.66666667%}html .offset-xl-3,html[data-netbox-color-mode=dark] .offset-xl-3,html[data-netbox-color-mode=light] .offset-xl-3{margin-left:25%}html .offset-xl-4,html[data-netbox-color-mode=dark] .offset-xl-4,html[data-netbox-color-mode=light] .offset-xl-4{margin-left:33.33333333%}html .offset-xl-5,html[data-netbox-color-mode=dark] .offset-xl-5,html[data-netbox-color-mode=light] .offset-xl-5{margin-left:41.66666667%}html .offset-xl-6,html[data-netbox-color-mode=dark] .offset-xl-6,html[data-netbox-color-mode=light] .offset-xl-6{margin-left:50%}html .offset-xl-7,html[data-netbox-color-mode=dark] .offset-xl-7,html[data-netbox-color-mode=light] .offset-xl-7{margin-left:58.33333333%}html .offset-xl-8,html[data-netbox-color-mode=dark] .offset-xl-8,html[data-netbox-color-mode=light] .offset-xl-8{margin-left:66.66666667%}html .offset-xl-9,html[data-netbox-color-mode=dark] .offset-xl-9,html[data-netbox-color-mode=light] .offset-xl-9{margin-left:75%}html .offset-xl-10,html[data-netbox-color-mode=dark] .offset-xl-10,html[data-netbox-color-mode=light] .offset-xl-10{margin-left:83.33333333%}html .offset-xl-11,html[data-netbox-color-mode=dark] .offset-xl-11,html[data-netbox-color-mode=light] .offset-xl-11{margin-left:91.66666667%}html .g-xl-0,html .gx-xl-0,html[data-netbox-color-mode=dark] .g-xl-0,html[data-netbox-color-mode=dark] .gx-xl-0,html[data-netbox-color-mode=light] .g-xl-0,html[data-netbox-color-mode=light] .gx-xl-0{--bs-gutter-x: 0}html .g-xl-0,html .gy-xl-0,html[data-netbox-color-mode=dark] .g-xl-0,html[data-netbox-color-mode=dark] .gy-xl-0,html[data-netbox-color-mode=light] .g-xl-0,html[data-netbox-color-mode=light] .gy-xl-0{--bs-gutter-y: 0}html .g-xl-1,html .gx-xl-1,html[data-netbox-color-mode=dark] .g-xl-1,html[data-netbox-color-mode=dark] .gx-xl-1,html[data-netbox-color-mode=light] .g-xl-1,html[data-netbox-color-mode=light] .gx-xl-1{--bs-gutter-x: .25rem}html .g-xl-1,html .gy-xl-1,html[data-netbox-color-mode=dark] .g-xl-1,html[data-netbox-color-mode=dark] .gy-xl-1,html[data-netbox-color-mode=light] .g-xl-1,html[data-netbox-color-mode=light] .gy-xl-1{--bs-gutter-y: .25rem}html .g-xl-2,html .gx-xl-2,html[data-netbox-color-mode=dark] .g-xl-2,html[data-netbox-color-mode=dark] .gx-xl-2,html[data-netbox-color-mode=light] .g-xl-2,html[data-netbox-color-mode=light] .gx-xl-2{--bs-gutter-x: .5rem}html .g-xl-2,html .gy-xl-2,html[data-netbox-color-mode=dark] .g-xl-2,html[data-netbox-color-mode=dark] .gy-xl-2,html[data-netbox-color-mode=light] .g-xl-2,html[data-netbox-color-mode=light] .gy-xl-2{--bs-gutter-y: .5rem}html .g-xl-3,html .gx-xl-3,html[data-netbox-color-mode=dark] .g-xl-3,html[data-netbox-color-mode=dark] .gx-xl-3,html[data-netbox-color-mode=light] .g-xl-3,html[data-netbox-color-mode=light] .gx-xl-3{--bs-gutter-x: 1rem}html .g-xl-3,html .gy-xl-3,html[data-netbox-color-mode=dark] .g-xl-3,html[data-netbox-color-mode=dark] .gy-xl-3,html[data-netbox-color-mode=light] .g-xl-3,html[data-netbox-color-mode=light] .gy-xl-3{--bs-gutter-y: 1rem}html .g-xl-4,html .gx-xl-4,html[data-netbox-color-mode=dark] .g-xl-4,html[data-netbox-color-mode=dark] .gx-xl-4,html[data-netbox-color-mode=light] .g-xl-4,html[data-netbox-color-mode=light] .gx-xl-4{--bs-gutter-x: 1.5rem}html .g-xl-4,html .gy-xl-4,html[data-netbox-color-mode=dark] .g-xl-4,html[data-netbox-color-mode=dark] .gy-xl-4,html[data-netbox-color-mode=light] .g-xl-4,html[data-netbox-color-mode=light] .gy-xl-4{--bs-gutter-y: 1.5rem}html .g-xl-5,html .gx-xl-5,html[data-netbox-color-mode=dark] .g-xl-5,html[data-netbox-color-mode=dark] .gx-xl-5,html[data-netbox-color-mode=light] .g-xl-5,html[data-netbox-color-mode=light] .gx-xl-5{--bs-gutter-x: 3rem}html .g-xl-5,html .gy-xl-5,html[data-netbox-color-mode=dark] .g-xl-5,html[data-netbox-color-mode=dark] .gy-xl-5,html[data-netbox-color-mode=light] .g-xl-5,html[data-netbox-color-mode=light] .gy-xl-5{--bs-gutter-y: 3rem}}@media print and (min-width: 1400px){html .col-xxl-auto,html[data-netbox-color-mode=dark] .col-xxl-auto,html[data-netbox-color-mode=light] .col-xxl-auto{flex:0 0 auto;width:auto}html .col-xxl-1,html[data-netbox-color-mode=dark] .col-xxl-1,html[data-netbox-color-mode=light] .col-xxl-1{flex:0 0 auto;width:8.33333333%}html .col-xxl-2,html[data-netbox-color-mode=dark] .col-xxl-2,html[data-netbox-color-mode=light] .col-xxl-2{flex:0 0 auto;width:16.66666667%}html .col-xxl-3,html[data-netbox-color-mode=dark] .col-xxl-3,html[data-netbox-color-mode=light] .col-xxl-3{flex:0 0 auto;width:25%}html .col-xxl-4,html[data-netbox-color-mode=dark] .col-xxl-4,html[data-netbox-color-mode=light] .col-xxl-4{flex:0 0 auto;width:33.33333333%}html .col-xxl-5,html[data-netbox-color-mode=dark] .col-xxl-5,html[data-netbox-color-mode=light] .col-xxl-5{flex:0 0 auto;width:41.66666667%}html .col-xxl-6,html[data-netbox-color-mode=dark] .col-xxl-6,html[data-netbox-color-mode=light] .col-xxl-6{flex:0 0 auto;width:50%}html .col-xxl-7,html[data-netbox-color-mode=dark] .col-xxl-7,html[data-netbox-color-mode=light] .col-xxl-7{flex:0 0 auto;width:58.33333333%}html .col-xxl-8,html[data-netbox-color-mode=dark] .col-xxl-8,html[data-netbox-color-mode=light] .col-xxl-8{flex:0 0 auto;width:66.66666667%}html .col-xxl-9,html[data-netbox-color-mode=dark] .col-xxl-9,html[data-netbox-color-mode=light] .col-xxl-9{flex:0 0 auto;width:75%}html .col-xxl-10,html[data-netbox-color-mode=dark] .col-xxl-10,html[data-netbox-color-mode=light] .col-xxl-10{flex:0 0 auto;width:83.33333333%}html .col-xxl-11,html[data-netbox-color-mode=dark] .col-xxl-11,html[data-netbox-color-mode=light] .col-xxl-11{flex:0 0 auto;width:91.66666667%}html .col-xxl-12,html[data-netbox-color-mode=dark] .col-xxl-12,html[data-netbox-color-mode=light] .col-xxl-12{flex:0 0 auto;width:100%}html .offset-xxl-0,html[data-netbox-color-mode=dark] .offset-xxl-0,html[data-netbox-color-mode=light] .offset-xxl-0{margin-left:0}html .offset-xxl-1,html[data-netbox-color-mode=dark] .offset-xxl-1,html[data-netbox-color-mode=light] .offset-xxl-1{margin-left:8.33333333%}html .offset-xxl-2,html[data-netbox-color-mode=dark] .offset-xxl-2,html[data-netbox-color-mode=light] .offset-xxl-2{margin-left:16.66666667%}html .offset-xxl-3,html[data-netbox-color-mode=dark] .offset-xxl-3,html[data-netbox-color-mode=light] .offset-xxl-3{margin-left:25%}html .offset-xxl-4,html[data-netbox-color-mode=dark] .offset-xxl-4,html[data-netbox-color-mode=light] .offset-xxl-4{margin-left:33.33333333%}html .offset-xxl-5,html[data-netbox-color-mode=dark] .offset-xxl-5,html[data-netbox-color-mode=light] .offset-xxl-5{margin-left:41.66666667%}html .offset-xxl-6,html[data-netbox-color-mode=dark] .offset-xxl-6,html[data-netbox-color-mode=light] .offset-xxl-6{margin-left:50%}html .offset-xxl-7,html[data-netbox-color-mode=dark] .offset-xxl-7,html[data-netbox-color-mode=light] .offset-xxl-7{margin-left:58.33333333%}html .offset-xxl-8,html[data-netbox-color-mode=dark] .offset-xxl-8,html[data-netbox-color-mode=light] .offset-xxl-8{margin-left:66.66666667%}html .offset-xxl-9,html[data-netbox-color-mode=dark] .offset-xxl-9,html[data-netbox-color-mode=light] .offset-xxl-9{margin-left:75%}html .offset-xxl-10,html[data-netbox-color-mode=dark] .offset-xxl-10,html[data-netbox-color-mode=light] .offset-xxl-10{margin-left:83.33333333%}html .offset-xxl-11,html[data-netbox-color-mode=dark] .offset-xxl-11,html[data-netbox-color-mode=light] .offset-xxl-11{margin-left:91.66666667%}html .g-xxl-0,html .gx-xxl-0,html[data-netbox-color-mode=dark] .g-xxl-0,html[data-netbox-color-mode=dark] .gx-xxl-0,html[data-netbox-color-mode=light] .g-xxl-0,html[data-netbox-color-mode=light] .gx-xxl-0{--bs-gutter-x: 0}html .g-xxl-0,html .gy-xxl-0,html[data-netbox-color-mode=dark] .g-xxl-0,html[data-netbox-color-mode=dark] .gy-xxl-0,html[data-netbox-color-mode=light] .g-xxl-0,html[data-netbox-color-mode=light] .gy-xxl-0{--bs-gutter-y: 0}html .g-xxl-1,html .gx-xxl-1,html[data-netbox-color-mode=dark] .g-xxl-1,html[data-netbox-color-mode=dark] .gx-xxl-1,html[data-netbox-color-mode=light] .g-xxl-1,html[data-netbox-color-mode=light] .gx-xxl-1{--bs-gutter-x: .25rem}html .g-xxl-1,html .gy-xxl-1,html[data-netbox-color-mode=dark] .g-xxl-1,html[data-netbox-color-mode=dark] .gy-xxl-1,html[data-netbox-color-mode=light] .g-xxl-1,html[data-netbox-color-mode=light] .gy-xxl-1{--bs-gutter-y: .25rem}html .g-xxl-2,html .gx-xxl-2,html[data-netbox-color-mode=dark] .g-xxl-2,html[data-netbox-color-mode=dark] .gx-xxl-2,html[data-netbox-color-mode=light] .g-xxl-2,html[data-netbox-color-mode=light] .gx-xxl-2{--bs-gutter-x: .5rem}html .g-xxl-2,html .gy-xxl-2,html[data-netbox-color-mode=dark] .g-xxl-2,html[data-netbox-color-mode=dark] .gy-xxl-2,html[data-netbox-color-mode=light] .g-xxl-2,html[data-netbox-color-mode=light] .gy-xxl-2{--bs-gutter-y: .5rem}html .g-xxl-3,html .gx-xxl-3,html[data-netbox-color-mode=dark] .g-xxl-3,html[data-netbox-color-mode=dark] .gx-xxl-3,html[data-netbox-color-mode=light] .g-xxl-3,html[data-netbox-color-mode=light] .gx-xxl-3{--bs-gutter-x: 1rem}html .g-xxl-3,html .gy-xxl-3,html[data-netbox-color-mode=dark] .g-xxl-3,html[data-netbox-color-mode=dark] .gy-xxl-3,html[data-netbox-color-mode=light] .g-xxl-3,html[data-netbox-color-mode=light] .gy-xxl-3{--bs-gutter-y: 1rem}html .g-xxl-4,html .gx-xxl-4,html[data-netbox-color-mode=dark] .g-xxl-4,html[data-netbox-color-mode=dark] .gx-xxl-4,html[data-netbox-color-mode=light] .g-xxl-4,html[data-netbox-color-mode=light] .gx-xxl-4{--bs-gutter-x: 1.5rem}html .g-xxl-4,html .gy-xxl-4,html[data-netbox-color-mode=dark] .g-xxl-4,html[data-netbox-color-mode=dark] .gy-xxl-4,html[data-netbox-color-mode=light] .g-xxl-4,html[data-netbox-color-mode=light] .gy-xxl-4{--bs-gutter-y: 1.5rem}html .g-xxl-5,html .gx-xxl-5,html[data-netbox-color-mode=dark] .g-xxl-5,html[data-netbox-color-mode=dark] .gx-xxl-5,html[data-netbox-color-mode=light] .g-xxl-5,html[data-netbox-color-mode=light] .gx-xxl-5{--bs-gutter-x: 3rem}html .g-xxl-5,html .gy-xxl-5,html[data-netbox-color-mode=dark] .g-xxl-5,html[data-netbox-color-mode=dark] .gy-xxl-5,html[data-netbox-color-mode=light] .g-xxl-5,html[data-netbox-color-mode=light] .gy-xxl-5{--bs-gutter-y: 3rem}}@media print{html .table,html[data-netbox-color-mode=dark] .table,html[data-netbox-color-mode=light] .table{--bs-table-bg: transparent;--bs-table-accent-bg: transparent;--bs-table-striped-color: #212529;--bs-table-striped-bg: rgba(0, 0, 0, .05);--bs-table-active-color: #212529;--bs-table-active-bg: rgba(0, 0, 0, .1);--bs-table-hover-color: #212529;--bs-table-hover-bg: rgba(0, 0, 0, .075);width:100%;margin-bottom:1rem;color:#212529;vertical-align:top;border-color:#dee2e6}html .table>:not(caption)>*>*,html[data-netbox-color-mode=dark] .table>:not(caption)>*>*,html[data-netbox-color-mode=light] .table>:not(caption)>*>*{padding:.5rem;background-color:var(--bs-table-bg);border-bottom-width:1px;box-shadow:inset 0 0 0 9999px var(--bs-table-accent-bg)}html .table>tbody,html[data-netbox-color-mode=dark] .table>tbody,html[data-netbox-color-mode=light] .table>tbody{vertical-align:inherit}html .table>thead,html[data-netbox-color-mode=dark] .table>thead,html[data-netbox-color-mode=light] .table>thead{vertical-align:bottom}html .table>:not(:last-child)>:last-child>*,html[data-netbox-color-mode=dark] .table>:not(:last-child)>:last-child>*,html[data-netbox-color-mode=light] .table>:not(:last-child)>:last-child>*{border-bottom-color:currentColor}}@media print{html .caption-top,html[data-netbox-color-mode=dark] .caption-top,html[data-netbox-color-mode=light] .caption-top{caption-side:top}}@media print{html .table-sm>:not(caption)>*>*,html[data-netbox-color-mode=dark] .table-sm>:not(caption)>*>*,html[data-netbox-color-mode=light] .table-sm>:not(caption)>*>*{padding:.25rem}}@media print{html .table-bordered>:not(caption)>*,html[data-netbox-color-mode=dark] .table-bordered>:not(caption)>*,html[data-netbox-color-mode=light] .table-bordered>:not(caption)>*{border-width:1px 0}html .table-bordered>:not(caption)>*>*,html[data-netbox-color-mode=dark] .table-bordered>:not(caption)>*>*,html[data-netbox-color-mode=light] .table-bordered>:not(caption)>*>*{border-width:0 1px}}@media print{html .table-borderless>:not(caption)>*>*,html[data-netbox-color-mode=dark] .table-borderless>:not(caption)>*>*,html[data-netbox-color-mode=light] .table-borderless>:not(caption)>*>*{border-bottom-width:0}}@media print{html .table-striped>tbody>tr:nth-of-type(odd),html[data-netbox-color-mode=dark] .table-striped>tbody>tr:nth-of-type(odd),html[data-netbox-color-mode=light] .table-striped>tbody>tr:nth-of-type(odd){--bs-table-accent-bg: var(--bs-table-striped-bg);color:var(--bs-table-striped-color)}}@media print{html .table-active,html[data-netbox-color-mode=dark] .table-active,html[data-netbox-color-mode=light] .table-active{--bs-table-accent-bg: var(--bs-table-active-bg);color:var(--bs-table-active-color)}}@media print{html .table-hover>tbody>tr:hover,html[data-netbox-color-mode=dark] .table-hover>tbody>tr:hover,html[data-netbox-color-mode=light] .table-hover>tbody>tr:hover{--bs-table-accent-bg: var(--bs-table-hover-bg);color:var(--bs-table-hover-color)}}@media print{html .table-primary,html[data-netbox-color-mode=dark] .table-primary,html[data-netbox-color-mode=light] .table-primary{--bs-table-bg: #cfe2ff;--bs-table-striped-bg: #c5d7f2;--bs-table-striped-color: #000;--bs-table-active-bg: #bacbe6;--bs-table-active-color: #000;--bs-table-hover-bg: #bfd1ec;--bs-table-hover-color: #000;color:#000;border-color:#bacbe6}}@media print{html .table-secondary,html[data-netbox-color-mode=dark] .table-secondary,html[data-netbox-color-mode=light] .table-secondary{--bs-table-bg: #e2e3e5;--bs-table-striped-bg: #d7d8da;--bs-table-striped-color: #000;--bs-table-active-bg: #cbccce;--bs-table-active-color: #000;--bs-table-hover-bg: #d1d2d4;--bs-table-hover-color: #000;color:#000;border-color:#cbccce}}@media print{html .table-success,html[data-netbox-color-mode=dark] .table-success,html[data-netbox-color-mode=light] .table-success{--bs-table-bg: #d1e7dd;--bs-table-striped-bg: #c7dbd2;--bs-table-striped-color: #000;--bs-table-active-bg: #bcd0c7;--bs-table-active-color: #000;--bs-table-hover-bg: #c1d6cc;--bs-table-hover-color: #000;color:#000;border-color:#bcd0c7}}@media print{html .table-info,html[data-netbox-color-mode=dark] .table-info,html[data-netbox-color-mode=light] .table-info{--bs-table-bg: #cff4fc;--bs-table-striped-bg: #c5e8ef;--bs-table-striped-color: #000;--bs-table-active-bg: #badce3;--bs-table-active-color: #000;--bs-table-hover-bg: #bfe2e9;--bs-table-hover-color: #000;color:#000;border-color:#badce3}}@media print{html .table-warning,html[data-netbox-color-mode=dark] .table-warning,html[data-netbox-color-mode=light] .table-warning{--bs-table-bg: #fff3cd;--bs-table-striped-bg: #f2e7c3;--bs-table-striped-color: #000;--bs-table-active-bg: #e6dbb9;--bs-table-active-color: #000;--bs-table-hover-bg: #ece1be;--bs-table-hover-color: #000;color:#000;border-color:#e6dbb9}}@media print{html .table-danger,html[data-netbox-color-mode=dark] .table-danger,html[data-netbox-color-mode=light] .table-danger{--bs-table-bg: #f8d7da;--bs-table-striped-bg: #eccccf;--bs-table-striped-color: #000;--bs-table-active-bg: #dfc2c4;--bs-table-active-color: #000;--bs-table-hover-bg: #e5c7ca;--bs-table-hover-color: #000;color:#000;border-color:#dfc2c4}}@media print{html .table-light,html[data-netbox-color-mode=dark] .table-light,html[data-netbox-color-mode=light] .table-light{--bs-table-bg: #f8f9fa;--bs-table-striped-bg: #ecedee;--bs-table-striped-color: #000;--bs-table-active-bg: #dfe0e1;--bs-table-active-color: #000;--bs-table-hover-bg: #e5e6e7;--bs-table-hover-color: #000;color:#000;border-color:#dfe0e1}}@media print{html .table-dark,html[data-netbox-color-mode=dark] .table-dark,html[data-netbox-color-mode=light] .table-dark{--bs-table-bg: #212529;--bs-table-striped-bg: #2c3034;--bs-table-striped-color: #fff;--bs-table-active-bg: #373b3e;--bs-table-active-color: #fff;--bs-table-hover-bg: #323539;--bs-table-hover-color: #fff;color:#fff;border-color:#373b3e}}@media print{html .table-responsive,html[data-netbox-color-mode=dark] .table-responsive,html[data-netbox-color-mode=light] .table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media print and (max-width: 575.98px){html .table-responsive-sm,html[data-netbox-color-mode=dark] .table-responsive-sm,html[data-netbox-color-mode=light] .table-responsive-sm{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media print and (max-width: 767.98px){html .table-responsive-md,html[data-netbox-color-mode=dark] .table-responsive-md,html[data-netbox-color-mode=light] .table-responsive-md{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media print and (max-width: 991.98px){html .table-responsive-lg,html[data-netbox-color-mode=dark] .table-responsive-lg,html[data-netbox-color-mode=light] .table-responsive-lg{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media print and (max-width: 1199.98px){html .table-responsive-xl,html[data-netbox-color-mode=dark] .table-responsive-xl,html[data-netbox-color-mode=light] .table-responsive-xl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media print and (max-width: 1399.98px){html .table-responsive-xxl,html[data-netbox-color-mode=dark] .table-responsive-xxl,html[data-netbox-color-mode=light] .table-responsive-xxl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media print{html .form-label,html[data-netbox-color-mode=dark] .form-label,html[data-netbox-color-mode=light] .form-label{margin-bottom:.5rem}}@media print{html .col-form-label,html[data-netbox-color-mode=dark] .col-form-label,html[data-netbox-color-mode=light] .col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}}@media print{html .col-form-label-lg,html[data-netbox-color-mode=dark] .col-form-label-lg,html[data-netbox-color-mode=light] .col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem}}@media print{html .col-form-label-sm,html[data-netbox-color-mode=dark] .col-form-label-sm,html[data-netbox-color-mode=light] .col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem}}@media print{html .form-text,html[data-netbox-color-mode=dark] .form-text,html[data-netbox-color-mode=light] .form-text{margin-top:.25rem;font-size:.875em;color:#6c757d}}@media print{html .form-control,html[data-netbox-color-mode=dark] .form-control,html[data-netbox-color-mode=light] .form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;background-clip:padding-box;border:1px solid #e9ecef;appearance:none;border-radius:.375rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}}@media print and (prefers-reduced-motion: reduce){html .form-control,html[data-netbox-color-mode=dark] .form-control,html[data-netbox-color-mode=light] .form-control{transition:none}}@media print{html .form-control[type=file],html[data-netbox-color-mode=dark] .form-control[type=file],html[data-netbox-color-mode=light] .form-control[type=file]{overflow:hidden}html .form-control[type=file]:not(:disabled):not([readonly]),html[data-netbox-color-mode=dark] .form-control[type=file]:not(:disabled):not([readonly]),html[data-netbox-color-mode=light] .form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}}@media print{html .form-control:focus,html[data-netbox-color-mode=dark] .form-control:focus,html[data-netbox-color-mode=light] .form-control:focus{color:#212529;background-color:#fff;border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}}@media print{html .form-control::-webkit-date-and-time-value,html[data-netbox-color-mode=dark] .form-control::-webkit-date-and-time-value,html[data-netbox-color-mode=light] .form-control::-webkit-date-and-time-value{height:1.5em}}@media print{html .form-control::placeholder,html[data-netbox-color-mode=dark] .form-control::placeholder,html[data-netbox-color-mode=light] .form-control::placeholder{color:#adb5bd;opacity:1}}@media print{html .form-control:disabled,html .form-control[readonly],html[data-netbox-color-mode=dark] .form-control:disabled,html[data-netbox-color-mode=dark] .form-control[readonly],html[data-netbox-color-mode=light] .form-control:disabled,html[data-netbox-color-mode=light] .form-control[readonly]{background-color:#e9ecef;opacity:1}}@media print{html .form-control::file-selector-button,html[data-netbox-color-mode=dark] .form-control::file-selector-button,html[data-netbox-color-mode=light] .form-control::file-selector-button{padding:.375rem .75rem;margin:-.375rem -.75rem;margin-inline-end:.75rem;color:#212529;background-color:#e9ecef;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}}@media print and (prefers-reduced-motion: reduce){html .form-control::file-selector-button,html[data-netbox-color-mode=dark] .form-control::file-selector-button,html[data-netbox-color-mode=light] .form-control::file-selector-button{transition:none}}@media print{html .form-control:hover:not(:disabled):not([readonly])::file-selector-button,html[data-netbox-color-mode=dark] .form-control:hover:not(:disabled):not([readonly])::file-selector-button,html[data-netbox-color-mode=light] .form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:#dde0e3}}@media print{html .form-control::-webkit-file-upload-button,html[data-netbox-color-mode=dark] .form-control::-webkit-file-upload-button,html[data-netbox-color-mode=light] .form-control::-webkit-file-upload-button{padding:.375rem .75rem;margin:-.375rem -.75rem;margin-inline-end:.75rem;color:#212529;background-color:#e9ecef;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}}@media print and (prefers-reduced-motion: reduce){html .form-control::-webkit-file-upload-button,html[data-netbox-color-mode=dark] .form-control::-webkit-file-upload-button,html[data-netbox-color-mode=light] .form-control::-webkit-file-upload-button{transition:none}}@media print{html .form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button,html[data-netbox-color-mode=dark] .form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button,html[data-netbox-color-mode=light] .form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button{background-color:#dde0e3}}@media print{html .form-control-plaintext,html[data-netbox-color-mode=dark] .form-control-plaintext,html[data-netbox-color-mode=light] .form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;line-height:1.5;color:#212529;background-color:transparent;border:solid transparent;border-width:1px 0}html .form-control-plaintext.form-control-sm,html .form-control-plaintext.form-control-lg,html[data-netbox-color-mode=dark] .form-control-plaintext.form-control-sm,html[data-netbox-color-mode=dark] .form-control-plaintext.form-control-lg,html[data-netbox-color-mode=light] .form-control-plaintext.form-control-sm,html[data-netbox-color-mode=light] .form-control-plaintext.form-control-lg{padding-right:0;padding-left:0}}@media print{html .form-control-sm,html[data-netbox-color-mode=dark] .form-control-sm,html[data-netbox-color-mode=light] .form-control-sm{min-height:calc(1.5em + (.5rem + 2px));padding:.25rem .5rem;font-size:.875rem;border-radius:.375rem}html .form-control-sm::file-selector-button,html[data-netbox-color-mode=dark] .form-control-sm::file-selector-button,html[data-netbox-color-mode=light] .form-control-sm::file-selector-button{padding:.25rem .5rem;margin:-.25rem -.5rem;margin-inline-end:.5rem}html .form-control-sm::-webkit-file-upload-button,html[data-netbox-color-mode=dark] .form-control-sm::-webkit-file-upload-button,html[data-netbox-color-mode=light] .form-control-sm::-webkit-file-upload-button{padding:.25rem .5rem;margin:-.25rem -.5rem;margin-inline-end:.5rem}}@media print{html .form-control-lg,html[data-netbox-color-mode=dark] .form-control-lg,html[data-netbox-color-mode=light] .form-control-lg{min-height:calc(1.5em + (1rem + 2px));padding:.5rem 1rem;font-size:1.25rem;border-radius:.75rem}html .form-control-lg::file-selector-button,html[data-netbox-color-mode=dark] .form-control-lg::file-selector-button,html[data-netbox-color-mode=light] .form-control-lg::file-selector-button{padding:.5rem 1rem;margin:-.5rem -1rem;margin-inline-end:1rem}html .form-control-lg::-webkit-file-upload-button,html[data-netbox-color-mode=dark] .form-control-lg::-webkit-file-upload-button,html[data-netbox-color-mode=light] .form-control-lg::-webkit-file-upload-button{padding:.5rem 1rem;margin:-.5rem -1rem;margin-inline-end:1rem}}@media print{html textarea.form-control,html[data-netbox-color-mode=dark] textarea.form-control,html[data-netbox-color-mode=light] textarea.form-control{min-height:calc(1.5em + (.75rem + 2px))}html textarea.form-control-sm,html[data-netbox-color-mode=dark] textarea.form-control-sm,html[data-netbox-color-mode=light] textarea.form-control-sm{min-height:calc(1.5em + (.5rem + 2px))}html textarea.form-control-lg,html[data-netbox-color-mode=dark] textarea.form-control-lg,html[data-netbox-color-mode=light] textarea.form-control-lg{min-height:calc(1.5em + (1rem + 2px))}}@media print{html .form-control-color,html[data-netbox-color-mode=dark] .form-control-color,html[data-netbox-color-mode=light] .form-control-color{max-width:3rem;height:auto;padding:.375rem}html .form-control-color:not(:disabled):not([readonly]),html[data-netbox-color-mode=dark] .form-control-color:not(:disabled):not([readonly]),html[data-netbox-color-mode=light] .form-control-color:not(:disabled):not([readonly]){cursor:pointer}html .form-control-color::-moz-color-swatch,html[data-netbox-color-mode=dark] .form-control-color::-moz-color-swatch,html[data-netbox-color-mode=light] .form-control-color::-moz-color-swatch{height:1.5em;border-radius:.375rem}html .form-control-color::-webkit-color-swatch,html[data-netbox-color-mode=dark] .form-control-color::-webkit-color-swatch,html[data-netbox-color-mode=light] .form-control-color::-webkit-color-swatch{height:1.5em;border-radius:.375rem}}@media print{html .form-select,html[data-netbox-color-mode=dark] .form-select,html[data-netbox-color-mode=light] .form-select{display:block;width:100%;padding:.375rem 2.25rem .375rem .75rem;-moz-padding-start:calc(.75rem - 3px);font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right .75rem center;background-size:16px 12px;border:1px solid #ced4da;border-radius:.375rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}}@media print and (prefers-reduced-motion: reduce){html .form-select,html[data-netbox-color-mode=dark] .form-select,html[data-netbox-color-mode=light] .form-select{transition:none}}@media print{html .form-select:focus,html[data-netbox-color-mode=dark] .form-select:focus,html[data-netbox-color-mode=light] .form-select:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}}@media print{html .form-select[multiple],html .form-select[size]:not([size="1"]),html[data-netbox-color-mode=dark] .form-select[multiple],html[data-netbox-color-mode=dark] .form-select[size]:not([size="1"]),html[data-netbox-color-mode=light] .form-select[multiple],html[data-netbox-color-mode=light] .form-select[size]:not([size="1"]){padding-right:.75rem;background-image:none}}@media print{html .form-select:disabled,html[data-netbox-color-mode=dark] .form-select:disabled,html[data-netbox-color-mode=light] .form-select:disabled{color:#6c757d;background-color:#e9ecef}}@media print{html .form-select:-moz-focusring,html[data-netbox-color-mode=dark] .form-select:-moz-focusring,html[data-netbox-color-mode=light] .form-select:-moz-focusring{color:transparent;text-shadow:0 0 0 #212529}}@media print{html .form-select-sm,html[data-netbox-color-mode=dark] .form-select-sm,html[data-netbox-color-mode=light] .form-select-sm{padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem}}@media print{html .form-select-lg,html[data-netbox-color-mode=dark] .form-select-lg,html[data-netbox-color-mode=light] .form-select-lg{padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}}@media print{html .form-check,html[data-netbox-color-mode=dark] .form-check,html[data-netbox-color-mode=light] .form-check{display:block;min-height:1.5rem;padding-left:1.5em;margin-bottom:.125rem}html .form-check .form-check-input,html[data-netbox-color-mode=dark] .form-check .form-check-input,html[data-netbox-color-mode=light] .form-check .form-check-input{float:left;margin-left:-1.5em}}@media print{html .form-check-input,html[data-netbox-color-mode=dark] .form-check-input,html[data-netbox-color-mode=light] .form-check-input{width:1em;height:1em;margin-top:.25em;vertical-align:top;background-color:#fff;background-repeat:no-repeat;background-position:center;background-size:contain;border:1px solid rgba(0,0,0,.25);appearance:none;color-adjust:exact}html .form-check-input[type=checkbox],html[data-netbox-color-mode=dark] .form-check-input[type=checkbox],html[data-netbox-color-mode=light] .form-check-input[type=checkbox]{border-radius:.25em}html .form-check-input[type=radio],html[data-netbox-color-mode=dark] .form-check-input[type=radio],html[data-netbox-color-mode=light] .form-check-input[type=radio]{border-radius:50%}html .form-check-input:active,html[data-netbox-color-mode=dark] .form-check-input:active,html[data-netbox-color-mode=light] .form-check-input:active{filter:brightness(90%)}html .form-check-input:focus,html[data-netbox-color-mode=dark] .form-check-input:focus,html[data-netbox-color-mode=light] .form-check-input:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}html .form-check-input:checked,html[data-netbox-color-mode=dark] .form-check-input:checked,html[data-netbox-color-mode=light] .form-check-input:checked{background-color:#0d6efd;border-color:#0d6efd}html .form-check-input:checked[type=checkbox],html[data-netbox-color-mode=dark] .form-check-input:checked[type=checkbox],html[data-netbox-color-mode=light] .form-check-input:checked[type=checkbox]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10l3 3l6-6'/%3e%3c/svg%3e")}html .form-check-input:checked[type=radio],html[data-netbox-color-mode=dark] .form-check-input:checked[type=radio],html[data-netbox-color-mode=light] .form-check-input:checked[type=radio]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e")}html .form-check-input[type=checkbox]:indeterminate,html[data-netbox-color-mode=dark] .form-check-input[type=checkbox]:indeterminate,html[data-netbox-color-mode=light] .form-check-input[type=checkbox]:indeterminate{background-color:#0d6efd;border-color:#0d6efd;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e")}html .form-check-input:disabled,html[data-netbox-color-mode=dark] .form-check-input:disabled,html[data-netbox-color-mode=light] .form-check-input:disabled{pointer-events:none;filter:none;opacity:.5}html .form-check-input[disabled]~.form-check-label,html .form-check-input:disabled~.form-check-label,html[data-netbox-color-mode=dark] .form-check-input[disabled]~.form-check-label,html[data-netbox-color-mode=dark] .form-check-input:disabled~.form-check-label,html[data-netbox-color-mode=light] .form-check-input[disabled]~.form-check-label,html[data-netbox-color-mode=light] .form-check-input:disabled~.form-check-label{opacity:.5}}@media print{html .form-switch,html[data-netbox-color-mode=dark] .form-switch,html[data-netbox-color-mode=light] .form-switch{padding-left:2.5em}html .form-switch .form-check-input,html[data-netbox-color-mode=dark] .form-switch .form-check-input,html[data-netbox-color-mode=light] .form-switch .form-check-input{width:2em;margin-left:-2.5em;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e");background-position:left center;border-radius:2em;transition:background-position .15s ease-in-out}}@media print and (prefers-reduced-motion: reduce){html .form-switch .form-check-input,html[data-netbox-color-mode=dark] .form-switch .form-check-input,html[data-netbox-color-mode=light] .form-switch .form-check-input{transition:none}}@media print{html .form-switch .form-check-input:focus,html[data-netbox-color-mode=dark] .form-switch .form-check-input:focus,html[data-netbox-color-mode=light] .form-switch .form-check-input:focus{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2386b7fe'/%3e%3c/svg%3e")}}@media print{html .form-switch .form-check-input:checked,html[data-netbox-color-mode=dark] .form-switch .form-check-input:checked,html[data-netbox-color-mode=light] .form-switch .form-check-input:checked{background-position:right center;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}}@media print{html .form-check-inline,html[data-netbox-color-mode=dark] .form-check-inline,html[data-netbox-color-mode=light] .form-check-inline{display:inline-block;margin-right:1rem}}@media print{html .btn-check,html[data-netbox-color-mode=dark] .btn-check,html[data-netbox-color-mode=light] .btn-check{position:absolute;clip:rect(0,0,0,0);pointer-events:none}html .btn-check[disabled]+.btn,html .btn-check:disabled+.btn,html[data-netbox-color-mode=dark] .btn-check[disabled]+.btn,html[data-netbox-color-mode=dark] .btn-check:disabled+.btn,html[data-netbox-color-mode=light] .btn-check[disabled]+.btn,html[data-netbox-color-mode=light] .btn-check:disabled+.btn{pointer-events:none;filter:none;opacity:.65}}@media print{html .form-range,html[data-netbox-color-mode=dark] .form-range,html[data-netbox-color-mode=light] .form-range{width:100%;height:1.5rem;padding:0;background-color:transparent;appearance:none}html .form-range:focus,html[data-netbox-color-mode=dark] .form-range:focus,html[data-netbox-color-mode=light] .form-range:focus{outline:0}html .form-range:focus::-webkit-slider-thumb,html[data-netbox-color-mode=dark] .form-range:focus::-webkit-slider-thumb,html[data-netbox-color-mode=light] .form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem #0d6efd40}html .form-range:focus::-moz-range-thumb,html[data-netbox-color-mode=dark] .form-range:focus::-moz-range-thumb,html[data-netbox-color-mode=light] .form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem #0d6efd40}html .form-range::-moz-focus-outer,html[data-netbox-color-mode=dark] .form-range::-moz-focus-outer,html[data-netbox-color-mode=light] .form-range::-moz-focus-outer{border:0}html .form-range::-webkit-slider-thumb,html[data-netbox-color-mode=dark] .form-range::-webkit-slider-thumb,html[data-netbox-color-mode=light] .form-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#0d6efd;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}}@media print and (prefers-reduced-motion: reduce){html .form-range::-webkit-slider-thumb,html[data-netbox-color-mode=dark] .form-range::-webkit-slider-thumb,html[data-netbox-color-mode=light] .form-range::-webkit-slider-thumb{transition:none}}@media print{html .form-range::-webkit-slider-thumb:active,html[data-netbox-color-mode=dark] .form-range::-webkit-slider-thumb:active,html[data-netbox-color-mode=light] .form-range::-webkit-slider-thumb:active{background-color:#b6d4fe}}@media print{html .form-range::-webkit-slider-runnable-track,html[data-netbox-color-mode=dark] .form-range::-webkit-slider-runnable-track,html[data-netbox-color-mode=light] .form-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}}@media print{html .form-range::-moz-range-thumb,html[data-netbox-color-mode=dark] .form-range::-moz-range-thumb,html[data-netbox-color-mode=light] .form-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#0d6efd;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}}@media print and (prefers-reduced-motion: reduce){html .form-range::-moz-range-thumb,html[data-netbox-color-mode=dark] .form-range::-moz-range-thumb,html[data-netbox-color-mode=light] .form-range::-moz-range-thumb{transition:none}}@media print{html .form-range::-moz-range-thumb:active,html[data-netbox-color-mode=dark] .form-range::-moz-range-thumb:active,html[data-netbox-color-mode=light] .form-range::-moz-range-thumb:active{background-color:#b6d4fe}}@media print{html .form-range::-moz-range-track,html[data-netbox-color-mode=dark] .form-range::-moz-range-track,html[data-netbox-color-mode=light] .form-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}}@media print{html .form-range:disabled,html[data-netbox-color-mode=dark] .form-range:disabled,html[data-netbox-color-mode=light] .form-range:disabled{pointer-events:none}html .form-range:disabled::-webkit-slider-thumb,html[data-netbox-color-mode=dark] .form-range:disabled::-webkit-slider-thumb,html[data-netbox-color-mode=light] .form-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}html .form-range:disabled::-moz-range-thumb,html[data-netbox-color-mode=dark] .form-range:disabled::-moz-range-thumb,html[data-netbox-color-mode=light] .form-range:disabled::-moz-range-thumb{background-color:#adb5bd}}@media print{html .form-floating,html[data-netbox-color-mode=dark] .form-floating,html[data-netbox-color-mode=light] .form-floating{position:relative}html .form-floating>.form-control,html .form-floating>.form-select,html[data-netbox-color-mode=dark] .form-floating>.form-control,html[data-netbox-color-mode=dark] .form-floating>.form-select,html[data-netbox-color-mode=light] .form-floating>.form-control,html[data-netbox-color-mode=light] .form-floating>.form-select{height:calc(3.5rem + 2px);line-height:1.25}html .form-floating>label,html[data-netbox-color-mode=dark] .form-floating>label,html[data-netbox-color-mode=light] .form-floating>label{position:absolute;top:0;left:0;height:100%;padding:1rem .75rem;pointer-events:none;border:1px solid transparent;transform-origin:0 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out}}@media print and (prefers-reduced-motion: reduce){html .form-floating>label,html[data-netbox-color-mode=dark] .form-floating>label,html[data-netbox-color-mode=light] .form-floating>label{transition:none}}@media print{html .form-floating>.form-control,html[data-netbox-color-mode=dark] .form-floating>.form-control,html[data-netbox-color-mode=light] .form-floating>.form-control{padding:1rem .75rem}html .form-floating>.form-control::placeholder,html[data-netbox-color-mode=dark] .form-floating>.form-control::placeholder,html[data-netbox-color-mode=light] .form-floating>.form-control::placeholder{color:transparent}html .form-floating>.form-control:focus,html .form-floating>.form-control:not(:placeholder-shown),html[data-netbox-color-mode=dark] .form-floating>.form-control:focus,html[data-netbox-color-mode=dark] .form-floating>.form-control:not(:placeholder-shown),html[data-netbox-color-mode=light] .form-floating>.form-control:focus,html[data-netbox-color-mode=light] .form-floating>.form-control:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}html .form-floating>.form-control:-webkit-autofill,html[data-netbox-color-mode=dark] .form-floating>.form-control:-webkit-autofill,html[data-netbox-color-mode=light] .form-floating>.form-control:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}}@media print{html .form-floating>.form-select,html[data-netbox-color-mode=dark] .form-floating>.form-select,html[data-netbox-color-mode=light] .form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem}}@media print{html .form-floating>.form-control:focus~label,html .form-floating>.form-control:not(:placeholder-shown)~label,html .form-floating>.form-select~label,html[data-netbox-color-mode=dark] .form-floating>.form-control:focus~label,html[data-netbox-color-mode=dark] .form-floating>.form-control:not(:placeholder-shown)~label,html[data-netbox-color-mode=dark] .form-floating>.form-select~label,html[data-netbox-color-mode=light] .form-floating>.form-control:focus~label,html[data-netbox-color-mode=light] .form-floating>.form-control:not(:placeholder-shown)~label,html[data-netbox-color-mode=light] .form-floating>.form-select~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translate(.15rem)}}@media print{html .form-floating>.form-control:-webkit-autofill~label,html[data-netbox-color-mode=dark] .form-floating>.form-control:-webkit-autofill~label,html[data-netbox-color-mode=light] .form-floating>.form-control:-webkit-autofill~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translate(.15rem)}}@media print{html .input-group,html[data-netbox-color-mode=dark] .input-group,html[data-netbox-color-mode=light] .input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}html .input-group>.form-control,html .input-group>.form-select,html[data-netbox-color-mode=dark] .input-group>.form-control,html[data-netbox-color-mode=dark] .input-group>.form-select,html[data-netbox-color-mode=light] .input-group>.form-control,html[data-netbox-color-mode=light] .input-group>.form-select{position:relative;flex:1 1 auto;width:1%;min-width:0}html .input-group>.form-control:focus,html .input-group>.form-select:focus,html[data-netbox-color-mode=dark] .input-group>.form-control:focus,html[data-netbox-color-mode=dark] .input-group>.form-select:focus,html[data-netbox-color-mode=light] .input-group>.form-control:focus,html[data-netbox-color-mode=light] .input-group>.form-select:focus{z-index:3}html .input-group .btn,html[data-netbox-color-mode=dark] .input-group .btn,html[data-netbox-color-mode=light] .input-group .btn{position:relative;z-index:2}html .input-group .btn:focus,html[data-netbox-color-mode=dark] .input-group .btn:focus,html[data-netbox-color-mode=light] .input-group .btn:focus{z-index:3}}@media print{html .input-group-text,html[data-netbox-color-mode=dark] .input-group-text,html[data-netbox-color-mode=light] .input-group-text{display:flex;align-items:center;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.375rem}}@media print{html .input-group-lg>.form-control,html .input-group-lg>.form-select,html .input-group-lg>.input-group-text,html .input-group-lg>.btn,html[data-netbox-color-mode=dark] .input-group-lg>.form-control,html[data-netbox-color-mode=dark] .input-group-lg>.form-select,html[data-netbox-color-mode=dark] .input-group-lg>.input-group-text,html[data-netbox-color-mode=dark] .input-group-lg>.btn,html[data-netbox-color-mode=light] .input-group-lg>.form-control,html[data-netbox-color-mode=light] .input-group-lg>.form-select,html[data-netbox-color-mode=light] .input-group-lg>.input-group-text,html[data-netbox-color-mode=light] .input-group-lg>.btn{padding:.5rem 1rem;font-size:1.25rem;border-radius:.75rem}}@media print{html .input-group-sm>.form-control,html .input-group-sm>.form-select,html .input-group-sm>.input-group-text,html .input-group-sm>.btn,html[data-netbox-color-mode=dark] .input-group-sm>.form-control,html[data-netbox-color-mode=dark] .input-group-sm>.form-select,html[data-netbox-color-mode=dark] .input-group-sm>.input-group-text,html[data-netbox-color-mode=dark] .input-group-sm>.btn,html[data-netbox-color-mode=light] .input-group-sm>.form-control,html[data-netbox-color-mode=light] .input-group-sm>.form-select,html[data-netbox-color-mode=light] .input-group-sm>.input-group-text,html[data-netbox-color-mode=light] .input-group-sm>.btn{padding:.25rem .5rem;font-size:.875rem;border-radius:.375rem}}@media print{html .input-group-lg>.form-select,html .input-group-sm>.form-select,html[data-netbox-color-mode=dark] .input-group-lg>.form-select,html[data-netbox-color-mode=dark] .input-group-sm>.form-select,html[data-netbox-color-mode=light] .input-group-lg>.form-select,html[data-netbox-color-mode=light] .input-group-sm>.form-select{padding-right:3rem}}@media print{html .input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu),html .input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3),html[data-netbox-color-mode=dark] .input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu),html[data-netbox-color-mode=dark] .input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3),html[data-netbox-color-mode=light] .input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu),html[data-netbox-color-mode=light] .input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3){border-top-right-radius:0;border-bottom-right-radius:0}html .input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu),html .input-group.has-validation>.dropdown-toggle:nth-last-child(n+4),html[data-netbox-color-mode=dark] .input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu),html[data-netbox-color-mode=dark] .input-group.has-validation>.dropdown-toggle:nth-last-child(n+4),html[data-netbox-color-mode=light] .input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu),html[data-netbox-color-mode=light] .input-group.has-validation>.dropdown-toggle:nth-last-child(n+4){border-top-right-radius:0;border-bottom-right-radius:0}html .input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback),html[data-netbox-color-mode=dark] .input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback),html[data-netbox-color-mode=light] .input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-left:-1px;border-top-left-radius:0;border-bottom-left-radius:0}}@media print{html .valid-feedback,html[data-netbox-color-mode=dark] .valid-feedback,html[data-netbox-color-mode=light] .valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#198754}}@media print{html .valid-tooltip,html[data-netbox-color-mode=dark] .valid-tooltip,html[data-netbox-color-mode=light] .valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:#198754e6;border-radius:.375rem}}@media print{.was-validated html:valid~.valid-feedback,.was-validated html:valid~.valid-tooltip,html.is-valid~.valid-feedback,html.is-valid~.valid-tooltip,.was-validated html[data-netbox-color-mode=dark]:valid~.valid-feedback,.was-validated html[data-netbox-color-mode=dark]:valid~.valid-tooltip,html[data-netbox-color-mode=dark].is-valid~.valid-feedback,html[data-netbox-color-mode=dark].is-valid~.valid-tooltip,.was-validated html[data-netbox-color-mode=light]:valid~.valid-feedback,.was-validated html[data-netbox-color-mode=light]:valid~.valid-tooltip,html[data-netbox-color-mode=light].is-valid~.valid-feedback,html[data-netbox-color-mode=light].is-valid~.valid-tooltip{display:block}}@media print{.was-validated html .form-control:valid,html .form-control.is-valid,.was-validated html[data-netbox-color-mode=dark] .form-control:valid,html[data-netbox-color-mode=dark] .form-control.is-valid,.was-validated html[data-netbox-color-mode=light] .form-control:valid,html[data-netbox-color-mode=light] .form-control.is-valid{border-color:#198754;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.was-validated html .form-control:valid:focus,html .form-control.is-valid:focus,.was-validated html[data-netbox-color-mode=dark] .form-control:valid:focus,html[data-netbox-color-mode=dark] .form-control.is-valid:focus,.was-validated html[data-netbox-color-mode=light] .form-control:valid:focus,html[data-netbox-color-mode=light] .form-control.is-valid:focus{border-color:#198754;box-shadow:0 0 0 .25rem #19875440}}@media print{.was-validated html textarea.form-control:valid,html textarea.form-control.is-valid,.was-validated html[data-netbox-color-mode=dark] textarea.form-control:valid,html[data-netbox-color-mode=dark] textarea.form-control.is-valid,.was-validated html[data-netbox-color-mode=light] textarea.form-control:valid,html[data-netbox-color-mode=light] textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}}@media print{.was-validated html .form-select:valid,html .form-select.is-valid,.was-validated html[data-netbox-color-mode=dark] .form-select:valid,html[data-netbox-color-mode=dark] .form-select.is-valid,.was-validated html[data-netbox-color-mode=light] .form-select:valid,html[data-netbox-color-mode=light] .form-select.is-valid{border-color:#198754}.was-validated html .form-select:valid:not([multiple]):not([size]),.was-validated html .form-select:valid:not([multiple])[size="1"],html .form-select.is-valid:not([multiple]):not([size]),html .form-select.is-valid:not([multiple])[size="1"],.was-validated html[data-netbox-color-mode=dark] .form-select:valid:not([multiple]):not([size]),.was-validated html[data-netbox-color-mode=dark] .form-select:valid:not([multiple])[size="1"],html[data-netbox-color-mode=dark] .form-select.is-valid:not([multiple]):not([size]),html[data-netbox-color-mode=dark] .form-select.is-valid:not([multiple])[size="1"],.was-validated html[data-netbox-color-mode=light] .form-select:valid:not([multiple]):not([size]),.was-validated html[data-netbox-color-mode=light] .form-select:valid:not([multiple])[size="1"],html[data-netbox-color-mode=light] .form-select.is-valid:not([multiple]):not([size]),html[data-netbox-color-mode=light] .form-select.is-valid:not([multiple])[size="1"]{padding-right:4.125rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.was-validated html .form-select:valid:focus,html .form-select.is-valid:focus,.was-validated html[data-netbox-color-mode=dark] .form-select:valid:focus,html[data-netbox-color-mode=dark] .form-select.is-valid:focus,.was-validated html[data-netbox-color-mode=light] .form-select:valid:focus,html[data-netbox-color-mode=light] .form-select.is-valid:focus{border-color:#198754;box-shadow:0 0 0 .25rem #19875440}}@media print{.was-validated html .form-check-input:valid,html .form-check-input.is-valid,.was-validated html[data-netbox-color-mode=dark] .form-check-input:valid,html[data-netbox-color-mode=dark] .form-check-input.is-valid,.was-validated html[data-netbox-color-mode=light] .form-check-input:valid,html[data-netbox-color-mode=light] .form-check-input.is-valid{border-color:#198754}.was-validated html .form-check-input:valid:checked,html .form-check-input.is-valid:checked,.was-validated html[data-netbox-color-mode=dark] .form-check-input:valid:checked,html[data-netbox-color-mode=dark] .form-check-input.is-valid:checked,.was-validated html[data-netbox-color-mode=light] .form-check-input:valid:checked,html[data-netbox-color-mode=light] .form-check-input.is-valid:checked{background-color:#198754}.was-validated html .form-check-input:valid:focus,html .form-check-input.is-valid:focus,.was-validated html[data-netbox-color-mode=dark] .form-check-input:valid:focus,html[data-netbox-color-mode=dark] .form-check-input.is-valid:focus,.was-validated html[data-netbox-color-mode=light] .form-check-input:valid:focus,html[data-netbox-color-mode=light] .form-check-input.is-valid:focus{box-shadow:0 0 0 .25rem #19875440}.was-validated html .form-check-input:valid~.form-check-label,html .form-check-input.is-valid~.form-check-label,.was-validated html[data-netbox-color-mode=dark] .form-check-input:valid~.form-check-label,html[data-netbox-color-mode=dark] .form-check-input.is-valid~.form-check-label,.was-validated html[data-netbox-color-mode=light] .form-check-input:valid~.form-check-label,html[data-netbox-color-mode=light] .form-check-input.is-valid~.form-check-label{color:#198754}}@media print{html .form-check-inline .form-check-input~.valid-feedback,html[data-netbox-color-mode=dark] .form-check-inline .form-check-input~.valid-feedback,html[data-netbox-color-mode=light] .form-check-inline .form-check-input~.valid-feedback{margin-left:.5em}}@media print{.was-validated html .input-group .form-control:valid,html .input-group .form-control.is-valid,.was-validated html .input-group .form-select:valid,html .input-group .form-select.is-valid,.was-validated html[data-netbox-color-mode=dark] .input-group .form-control:valid,html[data-netbox-color-mode=dark] .input-group .form-control.is-valid,.was-validated html[data-netbox-color-mode=dark] .input-group .form-select:valid,html[data-netbox-color-mode=dark] .input-group .form-select.is-valid,.was-validated html[data-netbox-color-mode=light] .input-group .form-control:valid,html[data-netbox-color-mode=light] .input-group .form-control.is-valid,.was-validated html[data-netbox-color-mode=light] .input-group .form-select:valid,html[data-netbox-color-mode=light] .input-group .form-select.is-valid{z-index:1}.was-validated html .input-group .form-control:valid:focus,html .input-group .form-control.is-valid:focus,.was-validated html .input-group .form-select:valid:focus,html .input-group .form-select.is-valid:focus,.was-validated html[data-netbox-color-mode=dark] .input-group .form-control:valid:focus,html[data-netbox-color-mode=dark] .input-group .form-control.is-valid:focus,.was-validated html[data-netbox-color-mode=dark] .input-group .form-select:valid:focus,html[data-netbox-color-mode=dark] .input-group .form-select.is-valid:focus,.was-validated html[data-netbox-color-mode=light] .input-group .form-control:valid:focus,html[data-netbox-color-mode=light] .input-group .form-control.is-valid:focus,.was-validated html[data-netbox-color-mode=light] .input-group .form-select:valid:focus,html[data-netbox-color-mode=light] .input-group .form-select.is-valid:focus{z-index:3}}@media print{html .invalid-feedback,html[data-netbox-color-mode=dark] .invalid-feedback,html[data-netbox-color-mode=light] .invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#dc3545}}@media print{html .invalid-tooltip,html[data-netbox-color-mode=dark] .invalid-tooltip,html[data-netbox-color-mode=light] .invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:#dc3545e6;border-radius:.375rem}}@media print{.was-validated html:invalid~.invalid-feedback,.was-validated html:invalid~.invalid-tooltip,html.is-invalid~.invalid-feedback,html.is-invalid~.invalid-tooltip,.was-validated html[data-netbox-color-mode=dark]:invalid~.invalid-feedback,.was-validated html[data-netbox-color-mode=dark]:invalid~.invalid-tooltip,html[data-netbox-color-mode=dark].is-invalid~.invalid-feedback,html[data-netbox-color-mode=dark].is-invalid~.invalid-tooltip,.was-validated html[data-netbox-color-mode=light]:invalid~.invalid-feedback,.was-validated html[data-netbox-color-mode=light]:invalid~.invalid-tooltip,html[data-netbox-color-mode=light].is-invalid~.invalid-feedback,html[data-netbox-color-mode=light].is-invalid~.invalid-tooltip{display:block}}@media print{.was-validated html .form-control:invalid,html .form-control.is-invalid,.was-validated html[data-netbox-color-mode=dark] .form-control:invalid,html[data-netbox-color-mode=dark] .form-control.is-invalid,.was-validated html[data-netbox-color-mode=light] .form-control:invalid,html[data-netbox-color-mode=light] .form-control.is-invalid{border-color:#dc3545;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.was-validated html .form-control:invalid:focus,html .form-control.is-invalid:focus,.was-validated html[data-netbox-color-mode=dark] .form-control:invalid:focus,html[data-netbox-color-mode=dark] .form-control.is-invalid:focus,.was-validated html[data-netbox-color-mode=light] .form-control:invalid:focus,html[data-netbox-color-mode=light] .form-control.is-invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .25rem #dc354540}}@media print{.was-validated html textarea.form-control:invalid,html textarea.form-control.is-invalid,.was-validated html[data-netbox-color-mode=dark] textarea.form-control:invalid,html[data-netbox-color-mode=dark] textarea.form-control.is-invalid,.was-validated html[data-netbox-color-mode=light] textarea.form-control:invalid,html[data-netbox-color-mode=light] textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}}@media print{.was-validated html .form-select:invalid,html .form-select.is-invalid,.was-validated html[data-netbox-color-mode=dark] .form-select:invalid,html[data-netbox-color-mode=dark] .form-select.is-invalid,.was-validated html[data-netbox-color-mode=light] .form-select:invalid,html[data-netbox-color-mode=light] .form-select.is-invalid{border-color:#dc3545}.was-validated html .form-select:invalid:not([multiple]):not([size]),.was-validated html .form-select:invalid:not([multiple])[size="1"],html .form-select.is-invalid:not([multiple]):not([size]),html .form-select.is-invalid:not([multiple])[size="1"],.was-validated html[data-netbox-color-mode=dark] .form-select:invalid:not([multiple]):not([size]),.was-validated html[data-netbox-color-mode=dark] .form-select:invalid:not([multiple])[size="1"],html[data-netbox-color-mode=dark] .form-select.is-invalid:not([multiple]):not([size]),html[data-netbox-color-mode=dark] .form-select.is-invalid:not([multiple])[size="1"],.was-validated html[data-netbox-color-mode=light] .form-select:invalid:not([multiple]):not([size]),.was-validated html[data-netbox-color-mode=light] .form-select:invalid:not([multiple])[size="1"],html[data-netbox-color-mode=light] .form-select.is-invalid:not([multiple]):not([size]),html[data-netbox-color-mode=light] .form-select.is-invalid:not([multiple])[size="1"]{padding-right:4.125rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.was-validated html .form-select:invalid:focus,html .form-select.is-invalid:focus,.was-validated html[data-netbox-color-mode=dark] .form-select:invalid:focus,html[data-netbox-color-mode=dark] .form-select.is-invalid:focus,.was-validated html[data-netbox-color-mode=light] .form-select:invalid:focus,html[data-netbox-color-mode=light] .form-select.is-invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .25rem #dc354540}}@media print{.was-validated html .form-check-input:invalid,html .form-check-input.is-invalid,.was-validated html[data-netbox-color-mode=dark] .form-check-input:invalid,html[data-netbox-color-mode=dark] .form-check-input.is-invalid,.was-validated html[data-netbox-color-mode=light] .form-check-input:invalid,html[data-netbox-color-mode=light] .form-check-input.is-invalid{border-color:#dc3545}.was-validated html .form-check-input:invalid:checked,html .form-check-input.is-invalid:checked,.was-validated html[data-netbox-color-mode=dark] .form-check-input:invalid:checked,html[data-netbox-color-mode=dark] .form-check-input.is-invalid:checked,.was-validated html[data-netbox-color-mode=light] .form-check-input:invalid:checked,html[data-netbox-color-mode=light] .form-check-input.is-invalid:checked{background-color:#dc3545}.was-validated html .form-check-input:invalid:focus,html .form-check-input.is-invalid:focus,.was-validated html[data-netbox-color-mode=dark] .form-check-input:invalid:focus,html[data-netbox-color-mode=dark] .form-check-input.is-invalid:focus,.was-validated html[data-netbox-color-mode=light] .form-check-input:invalid:focus,html[data-netbox-color-mode=light] .form-check-input.is-invalid:focus{box-shadow:0 0 0 .25rem #dc354540}.was-validated html .form-check-input:invalid~.form-check-label,html .form-check-input.is-invalid~.form-check-label,.was-validated html[data-netbox-color-mode=dark] .form-check-input:invalid~.form-check-label,html[data-netbox-color-mode=dark] .form-check-input.is-invalid~.form-check-label,.was-validated html[data-netbox-color-mode=light] .form-check-input:invalid~.form-check-label,html[data-netbox-color-mode=light] .form-check-input.is-invalid~.form-check-label{color:#dc3545}}@media print{html .form-check-inline .form-check-input~.invalid-feedback,html[data-netbox-color-mode=dark] .form-check-inline .form-check-input~.invalid-feedback,html[data-netbox-color-mode=light] .form-check-inline .form-check-input~.invalid-feedback{margin-left:.5em}}@media print{.was-validated html .input-group .form-control:invalid,html .input-group .form-control.is-invalid,.was-validated html .input-group .form-select:invalid,html .input-group .form-select.is-invalid,.was-validated html[data-netbox-color-mode=dark] .input-group .form-control:invalid,html[data-netbox-color-mode=dark] .input-group .form-control.is-invalid,.was-validated html[data-netbox-color-mode=dark] .input-group .form-select:invalid,html[data-netbox-color-mode=dark] .input-group .form-select.is-invalid,.was-validated html[data-netbox-color-mode=light] .input-group .form-control:invalid,html[data-netbox-color-mode=light] .input-group .form-control.is-invalid,.was-validated html[data-netbox-color-mode=light] .input-group .form-select:invalid,html[data-netbox-color-mode=light] .input-group .form-select.is-invalid{z-index:2}.was-validated html .input-group .form-control:invalid:focus,html .input-group .form-control.is-invalid:focus,.was-validated html .input-group .form-select:invalid:focus,html .input-group .form-select.is-invalid:focus,.was-validated html[data-netbox-color-mode=dark] .input-group .form-control:invalid:focus,html[data-netbox-color-mode=dark] .input-group .form-control.is-invalid:focus,.was-validated html[data-netbox-color-mode=dark] .input-group .form-select:invalid:focus,html[data-netbox-color-mode=dark] .input-group .form-select.is-invalid:focus,.was-validated html[data-netbox-color-mode=light] .input-group .form-control:invalid:focus,html[data-netbox-color-mode=light] .input-group .form-control.is-invalid:focus,.was-validated html[data-netbox-color-mode=light] .input-group .form-select:invalid:focus,html[data-netbox-color-mode=light] .input-group .form-select.is-invalid:focus{z-index:3}}@media print{html .btn,html[data-netbox-color-mode=dark] .btn,html[data-netbox-color-mode=light] .btn{display:inline-block;font-weight:400;line-height:1.5;color:#212529;text-align:center;text-decoration:none;vertical-align:middle;cursor:pointer;user-select:none;background-color:transparent;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;border-radius:.375rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}}@media print and (prefers-reduced-motion: reduce){html .btn,html[data-netbox-color-mode=dark] .btn,html[data-netbox-color-mode=light] .btn{transition:none}}@media print{html .btn:hover,html[data-netbox-color-mode=dark] .btn:hover,html[data-netbox-color-mode=light] .btn:hover{color:#212529}}@media print{.btn-check:focus+html .btn,html .btn:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn,html[data-netbox-color-mode=dark] .btn:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn,html[data-netbox-color-mode=light] .btn:focus{outline:0;box-shadow:0 0 0 .25rem #0d6efd40}}@media print{html .btn:disabled,html .btn.disabled,fieldset:disabled html .btn,html[data-netbox-color-mode=dark] .btn:disabled,html[data-netbox-color-mode=dark] .btn.disabled,fieldset:disabled html[data-netbox-color-mode=dark] .btn,html[data-netbox-color-mode=light] .btn:disabled,html[data-netbox-color-mode=light] .btn.disabled,fieldset:disabled html[data-netbox-color-mode=light] .btn{pointer-events:none;opacity:.65}}@media print{html .btn-primary,html[data-netbox-color-mode=dark] .btn-primary,html[data-netbox-color-mode=light] .btn-primary{color:#fff;background-color:#337ab7;border-color:#337ab7}html .btn-primary:hover,html[data-netbox-color-mode=dark] .btn-primary:hover,html[data-netbox-color-mode=light] .btn-primary:hover{color:#fff;background-color:#2b689c;border-color:#296292}.btn-check:focus+html .btn-primary,html .btn-primary:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-primary,html[data-netbox-color-mode=dark] .btn-primary:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-primary,html[data-netbox-color-mode=light] .btn-primary:focus{color:#fff;background-color:#2b689c;border-color:#296292;box-shadow:0 0 0 .25rem #528ec280}.btn-check:checked+html .btn-primary,.btn-check:active+html .btn-primary,html .btn-primary:active,html .btn-primary.active,.show>html .btn-primary.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-primary,.btn-check:active+html[data-netbox-color-mode=dark] .btn-primary,html[data-netbox-color-mode=dark] .btn-primary:active,html[data-netbox-color-mode=dark] .btn-primary.active,.show>html[data-netbox-color-mode=dark] .btn-primary.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-primary,.btn-check:active+html[data-netbox-color-mode=light] .btn-primary,html[data-netbox-color-mode=light] .btn-primary:active,html[data-netbox-color-mode=light] .btn-primary.active,.show>html[data-netbox-color-mode=light] .btn-primary.dropdown-toggle{color:#fff;background-color:#296292;border-color:#265c89}.btn-check:checked+html .btn-primary:focus,.btn-check:active+html .btn-primary:focus,html .btn-primary:active:focus,html .btn-primary.active:focus,.show>html .btn-primary.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-primary:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-primary:focus,html[data-netbox-color-mode=dark] .btn-primary:active:focus,html[data-netbox-color-mode=dark] .btn-primary.active:focus,.show>html[data-netbox-color-mode=dark] .btn-primary.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-primary:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-primary:focus,html[data-netbox-color-mode=light] .btn-primary:active:focus,html[data-netbox-color-mode=light] .btn-primary.active:focus,.show>html[data-netbox-color-mode=light] .btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #528ec280}html .btn-primary:disabled,html .btn-primary.disabled,html[data-netbox-color-mode=dark] .btn-primary:disabled,html[data-netbox-color-mode=dark] .btn-primary.disabled,html[data-netbox-color-mode=light] .btn-primary:disabled,html[data-netbox-color-mode=light] .btn-primary.disabled{color:#fff;background-color:#337ab7;border-color:#337ab7}}@media print{html .btn-secondary,html[data-netbox-color-mode=dark] .btn-secondary,html[data-netbox-color-mode=light] .btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}html .btn-secondary:hover,html[data-netbox-color-mode=dark] .btn-secondary:hover,html[data-netbox-color-mode=light] .btn-secondary:hover{color:#fff;background-color:#5c636a;border-color:#565e64}.btn-check:focus+html .btn-secondary,html .btn-secondary:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-secondary,html[data-netbox-color-mode=dark] .btn-secondary:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-secondary,html[data-netbox-color-mode=light] .btn-secondary:focus{color:#fff;background-color:#5c636a;border-color:#565e64;box-shadow:0 0 0 .25rem #828a9180}.btn-check:checked+html .btn-secondary,.btn-check:active+html .btn-secondary,html .btn-secondary:active,html .btn-secondary.active,.show>html .btn-secondary.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-secondary,.btn-check:active+html[data-netbox-color-mode=dark] .btn-secondary,html[data-netbox-color-mode=dark] .btn-secondary:active,html[data-netbox-color-mode=dark] .btn-secondary.active,.show>html[data-netbox-color-mode=dark] .btn-secondary.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-secondary,.btn-check:active+html[data-netbox-color-mode=light] .btn-secondary,html[data-netbox-color-mode=light] .btn-secondary:active,html[data-netbox-color-mode=light] .btn-secondary.active,.show>html[data-netbox-color-mode=light] .btn-secondary.dropdown-toggle{color:#fff;background-color:#565e64;border-color:#51585e}.btn-check:checked+html .btn-secondary:focus,.btn-check:active+html .btn-secondary:focus,html .btn-secondary:active:focus,html .btn-secondary.active:focus,.show>html .btn-secondary.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-secondary:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-secondary:focus,html[data-netbox-color-mode=dark] .btn-secondary:active:focus,html[data-netbox-color-mode=dark] .btn-secondary.active:focus,.show>html[data-netbox-color-mode=dark] .btn-secondary.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-secondary:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-secondary:focus,html[data-netbox-color-mode=light] .btn-secondary:active:focus,html[data-netbox-color-mode=light] .btn-secondary.active:focus,.show>html[data-netbox-color-mode=light] .btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #828a9180}html .btn-secondary:disabled,html .btn-secondary.disabled,html[data-netbox-color-mode=dark] .btn-secondary:disabled,html[data-netbox-color-mode=dark] .btn-secondary.disabled,html[data-netbox-color-mode=light] .btn-secondary:disabled,html[data-netbox-color-mode=light] .btn-secondary.disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}}@media print{html .btn-success,html[data-netbox-color-mode=dark] .btn-success,html[data-netbox-color-mode=light] .btn-success{color:#fff;background-color:#198754;border-color:#198754}html .btn-success:hover,html[data-netbox-color-mode=dark] .btn-success:hover,html[data-netbox-color-mode=light] .btn-success:hover{color:#fff;background-color:#157347;border-color:#146c43}.btn-check:focus+html .btn-success,html .btn-success:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-success,html[data-netbox-color-mode=dark] .btn-success:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-success,html[data-netbox-color-mode=light] .btn-success:focus{color:#fff;background-color:#157347;border-color:#146c43;box-shadow:0 0 0 .25rem #3c996e80}.btn-check:checked+html .btn-success,.btn-check:active+html .btn-success,html .btn-success:active,html .btn-success.active,.show>html .btn-success.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-success,.btn-check:active+html[data-netbox-color-mode=dark] .btn-success,html[data-netbox-color-mode=dark] .btn-success:active,html[data-netbox-color-mode=dark] .btn-success.active,.show>html[data-netbox-color-mode=dark] .btn-success.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-success,.btn-check:active+html[data-netbox-color-mode=light] .btn-success,html[data-netbox-color-mode=light] .btn-success:active,html[data-netbox-color-mode=light] .btn-success.active,.show>html[data-netbox-color-mode=light] .btn-success.dropdown-toggle{color:#fff;background-color:#146c43;border-color:#13653f}.btn-check:checked+html .btn-success:focus,.btn-check:active+html .btn-success:focus,html .btn-success:active:focus,html .btn-success.active:focus,.show>html .btn-success.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-success:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-success:focus,html[data-netbox-color-mode=dark] .btn-success:active:focus,html[data-netbox-color-mode=dark] .btn-success.active:focus,.show>html[data-netbox-color-mode=dark] .btn-success.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-success:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-success:focus,html[data-netbox-color-mode=light] .btn-success:active:focus,html[data-netbox-color-mode=light] .btn-success.active:focus,.show>html[data-netbox-color-mode=light] .btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #3c996e80}html .btn-success:disabled,html .btn-success.disabled,html[data-netbox-color-mode=dark] .btn-success:disabled,html[data-netbox-color-mode=dark] .btn-success.disabled,html[data-netbox-color-mode=light] .btn-success:disabled,html[data-netbox-color-mode=light] .btn-success.disabled{color:#fff;background-color:#198754;border-color:#198754}}@media print{html .btn-info,html[data-netbox-color-mode=dark] .btn-info,html[data-netbox-color-mode=light] .btn-info{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}html .btn-info:hover,html[data-netbox-color-mode=dark] .btn-info:hover,html[data-netbox-color-mode=light] .btn-info:hover{color:#000;background-color:#31d2f2;border-color:#25cff2}.btn-check:focus+html .btn-info,html .btn-info:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-info,html[data-netbox-color-mode=dark] .btn-info:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-info,html[data-netbox-color-mode=light] .btn-info:focus{color:#000;background-color:#31d2f2;border-color:#25cff2;box-shadow:0 0 0 .25rem #0baccc80}.btn-check:checked+html .btn-info,.btn-check:active+html .btn-info,html .btn-info:active,html .btn-info.active,.show>html .btn-info.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-info,.btn-check:active+html[data-netbox-color-mode=dark] .btn-info,html[data-netbox-color-mode=dark] .btn-info:active,html[data-netbox-color-mode=dark] .btn-info.active,.show>html[data-netbox-color-mode=dark] .btn-info.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-info,.btn-check:active+html[data-netbox-color-mode=light] .btn-info,html[data-netbox-color-mode=light] .btn-info:active,html[data-netbox-color-mode=light] .btn-info.active,.show>html[data-netbox-color-mode=light] .btn-info.dropdown-toggle{color:#000;background-color:#3dd5f3;border-color:#25cff2}.btn-check:checked+html .btn-info:focus,.btn-check:active+html .btn-info:focus,html .btn-info:active:focus,html .btn-info.active:focus,.show>html .btn-info.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-info:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-info:focus,html[data-netbox-color-mode=dark] .btn-info:active:focus,html[data-netbox-color-mode=dark] .btn-info.active:focus,.show>html[data-netbox-color-mode=dark] .btn-info.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-info:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-info:focus,html[data-netbox-color-mode=light] .btn-info:active:focus,html[data-netbox-color-mode=light] .btn-info.active:focus,.show>html[data-netbox-color-mode=light] .btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #0baccc80}html .btn-info:disabled,html .btn-info.disabled,html[data-netbox-color-mode=dark] .btn-info:disabled,html[data-netbox-color-mode=dark] .btn-info.disabled,html[data-netbox-color-mode=light] .btn-info:disabled,html[data-netbox-color-mode=light] .btn-info.disabled{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}}@media print{html .btn-warning,html[data-netbox-color-mode=dark] .btn-warning,html[data-netbox-color-mode=light] .btn-warning{color:#000;background-color:#ffc107;border-color:#ffc107}html .btn-warning:hover,html[data-netbox-color-mode=dark] .btn-warning:hover,html[data-netbox-color-mode=light] .btn-warning:hover{color:#000;background-color:#ffca2c;border-color:#ffc720}.btn-check:focus+html .btn-warning,html .btn-warning:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-warning,html[data-netbox-color-mode=dark] .btn-warning:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-warning,html[data-netbox-color-mode=light] .btn-warning:focus{color:#000;background-color:#ffca2c;border-color:#ffc720;box-shadow:0 0 0 .25rem #d9a40680}.btn-check:checked+html .btn-warning,.btn-check:active+html .btn-warning,html .btn-warning:active,html .btn-warning.active,.show>html .btn-warning.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-warning,.btn-check:active+html[data-netbox-color-mode=dark] .btn-warning,html[data-netbox-color-mode=dark] .btn-warning:active,html[data-netbox-color-mode=dark] .btn-warning.active,.show>html[data-netbox-color-mode=dark] .btn-warning.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-warning,.btn-check:active+html[data-netbox-color-mode=light] .btn-warning,html[data-netbox-color-mode=light] .btn-warning:active,html[data-netbox-color-mode=light] .btn-warning.active,.show>html[data-netbox-color-mode=light] .btn-warning.dropdown-toggle{color:#000;background-color:#ffcd39;border-color:#ffc720}.btn-check:checked+html .btn-warning:focus,.btn-check:active+html .btn-warning:focus,html .btn-warning:active:focus,html .btn-warning.active:focus,.show>html .btn-warning.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-warning:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-warning:focus,html[data-netbox-color-mode=dark] .btn-warning:active:focus,html[data-netbox-color-mode=dark] .btn-warning.active:focus,.show>html[data-netbox-color-mode=dark] .btn-warning.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-warning:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-warning:focus,html[data-netbox-color-mode=light] .btn-warning:active:focus,html[data-netbox-color-mode=light] .btn-warning.active:focus,.show>html[data-netbox-color-mode=light] .btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #d9a40680}html .btn-warning:disabled,html .btn-warning.disabled,html[data-netbox-color-mode=dark] .btn-warning:disabled,html[data-netbox-color-mode=dark] .btn-warning.disabled,html[data-netbox-color-mode=light] .btn-warning:disabled,html[data-netbox-color-mode=light] .btn-warning.disabled{color:#000;background-color:#ffc107;border-color:#ffc107}}@media print{html .btn-danger,html[data-netbox-color-mode=dark] .btn-danger,html[data-netbox-color-mode=light] .btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}html .btn-danger:hover,html[data-netbox-color-mode=dark] .btn-danger:hover,html[data-netbox-color-mode=light] .btn-danger:hover{color:#fff;background-color:#bb2d3b;border-color:#b02a37}.btn-check:focus+html .btn-danger,html .btn-danger:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-danger,html[data-netbox-color-mode=dark] .btn-danger:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-danger,html[data-netbox-color-mode=light] .btn-danger:focus{color:#fff;background-color:#bb2d3b;border-color:#b02a37;box-shadow:0 0 0 .25rem #e1536180}.btn-check:checked+html .btn-danger,.btn-check:active+html .btn-danger,html .btn-danger:active,html .btn-danger.active,.show>html .btn-danger.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-danger,.btn-check:active+html[data-netbox-color-mode=dark] .btn-danger,html[data-netbox-color-mode=dark] .btn-danger:active,html[data-netbox-color-mode=dark] .btn-danger.active,.show>html[data-netbox-color-mode=dark] .btn-danger.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-danger,.btn-check:active+html[data-netbox-color-mode=light] .btn-danger,html[data-netbox-color-mode=light] .btn-danger:active,html[data-netbox-color-mode=light] .btn-danger.active,.show>html[data-netbox-color-mode=light] .btn-danger.dropdown-toggle{color:#fff;background-color:#b02a37;border-color:#a52834}.btn-check:checked+html .btn-danger:focus,.btn-check:active+html .btn-danger:focus,html .btn-danger:active:focus,html .btn-danger.active:focus,.show>html .btn-danger.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-danger:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-danger:focus,html[data-netbox-color-mode=dark] .btn-danger:active:focus,html[data-netbox-color-mode=dark] .btn-danger.active:focus,.show>html[data-netbox-color-mode=dark] .btn-danger.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-danger:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-danger:focus,html[data-netbox-color-mode=light] .btn-danger:active:focus,html[data-netbox-color-mode=light] .btn-danger.active:focus,.show>html[data-netbox-color-mode=light] .btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #e1536180}html .btn-danger:disabled,html .btn-danger.disabled,html[data-netbox-color-mode=dark] .btn-danger:disabled,html[data-netbox-color-mode=dark] .btn-danger.disabled,html[data-netbox-color-mode=light] .btn-danger:disabled,html[data-netbox-color-mode=light] .btn-danger.disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}}@media print{html .btn-light,html[data-netbox-color-mode=dark] .btn-light,html[data-netbox-color-mode=light] .btn-light{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}html .btn-light:hover,html[data-netbox-color-mode=dark] .btn-light:hover,html[data-netbox-color-mode=light] .btn-light:hover{color:#000;background-color:#f9fafb;border-color:#f9fafb}.btn-check:focus+html .btn-light,html .btn-light:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-light,html[data-netbox-color-mode=dark] .btn-light:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-light,html[data-netbox-color-mode=light] .btn-light:focus{color:#000;background-color:#f9fafb;border-color:#f9fafb;box-shadow:0 0 0 .25rem #d3d4d580}.btn-check:checked+html .btn-light,.btn-check:active+html .btn-light,html .btn-light:active,html .btn-light.active,.show>html .btn-light.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-light,.btn-check:active+html[data-netbox-color-mode=dark] .btn-light,html[data-netbox-color-mode=dark] .btn-light:active,html[data-netbox-color-mode=dark] .btn-light.active,.show>html[data-netbox-color-mode=dark] .btn-light.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-light,.btn-check:active+html[data-netbox-color-mode=light] .btn-light,html[data-netbox-color-mode=light] .btn-light:active,html[data-netbox-color-mode=light] .btn-light.active,.show>html[data-netbox-color-mode=light] .btn-light.dropdown-toggle{color:#000;background-color:#f9fafb;border-color:#f9fafb}.btn-check:checked+html .btn-light:focus,.btn-check:active+html .btn-light:focus,html .btn-light:active:focus,html .btn-light.active:focus,.show>html .btn-light.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-light:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-light:focus,html[data-netbox-color-mode=dark] .btn-light:active:focus,html[data-netbox-color-mode=dark] .btn-light.active:focus,.show>html[data-netbox-color-mode=dark] .btn-light.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-light:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-light:focus,html[data-netbox-color-mode=light] .btn-light:active:focus,html[data-netbox-color-mode=light] .btn-light.active:focus,.show>html[data-netbox-color-mode=light] .btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #d3d4d580}html .btn-light:disabled,html .btn-light.disabled,html[data-netbox-color-mode=dark] .btn-light:disabled,html[data-netbox-color-mode=dark] .btn-light.disabled,html[data-netbox-color-mode=light] .btn-light:disabled,html[data-netbox-color-mode=light] .btn-light.disabled{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}}@media print{html .btn-dark,html[data-netbox-color-mode=dark] .btn-dark,html[data-netbox-color-mode=light] .btn-dark{color:#fff;background-color:#212529;border-color:#212529}html .btn-dark:hover,html[data-netbox-color-mode=dark] .btn-dark:hover,html[data-netbox-color-mode=light] .btn-dark:hover{color:#fff;background-color:#1c1f23;border-color:#1a1e21}.btn-check:focus+html .btn-dark,html .btn-dark:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-dark,html[data-netbox-color-mode=dark] .btn-dark:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-dark,html[data-netbox-color-mode=light] .btn-dark:focus{color:#fff;background-color:#1c1f23;border-color:#1a1e21;box-shadow:0 0 0 .25rem #42464980}.btn-check:checked+html .btn-dark,.btn-check:active+html .btn-dark,html .btn-dark:active,html .btn-dark.active,.show>html .btn-dark.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-dark,.btn-check:active+html[data-netbox-color-mode=dark] .btn-dark,html[data-netbox-color-mode=dark] .btn-dark:active,html[data-netbox-color-mode=dark] .btn-dark.active,.show>html[data-netbox-color-mode=dark] .btn-dark.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-dark,.btn-check:active+html[data-netbox-color-mode=light] .btn-dark,html[data-netbox-color-mode=light] .btn-dark:active,html[data-netbox-color-mode=light] .btn-dark.active,.show>html[data-netbox-color-mode=light] .btn-dark.dropdown-toggle{color:#fff;background-color:#1a1e21;border-color:#191c1f}.btn-check:checked+html .btn-dark:focus,.btn-check:active+html .btn-dark:focus,html .btn-dark:active:focus,html .btn-dark.active:focus,.show>html .btn-dark.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-dark:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-dark:focus,html[data-netbox-color-mode=dark] .btn-dark:active:focus,html[data-netbox-color-mode=dark] .btn-dark.active:focus,.show>html[data-netbox-color-mode=dark] .btn-dark.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-dark:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-dark:focus,html[data-netbox-color-mode=light] .btn-dark:active:focus,html[data-netbox-color-mode=light] .btn-dark.active:focus,.show>html[data-netbox-color-mode=light] .btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #42464980}html .btn-dark:disabled,html .btn-dark.disabled,html[data-netbox-color-mode=dark] .btn-dark:disabled,html[data-netbox-color-mode=dark] .btn-dark.disabled,html[data-netbox-color-mode=light] .btn-dark:disabled,html[data-netbox-color-mode=light] .btn-dark.disabled{color:#fff;background-color:#212529;border-color:#212529}}@media print{html .btn-red,html[data-netbox-color-mode=dark] .btn-red,html[data-netbox-color-mode=light] .btn-red{color:#fff;background-color:#dc3545;border-color:#dc3545}html .btn-red:hover,html[data-netbox-color-mode=dark] .btn-red:hover,html[data-netbox-color-mode=light] .btn-red:hover{color:#fff;background-color:#bb2d3b;border-color:#b02a37}.btn-check:focus+html .btn-red,html .btn-red:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-red,html[data-netbox-color-mode=dark] .btn-red:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-red,html[data-netbox-color-mode=light] .btn-red:focus{color:#fff;background-color:#bb2d3b;border-color:#b02a37;box-shadow:0 0 0 .25rem #e1536180}.btn-check:checked+html .btn-red,.btn-check:active+html .btn-red,html .btn-red:active,html .btn-red.active,.show>html .btn-red.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-red,.btn-check:active+html[data-netbox-color-mode=dark] .btn-red,html[data-netbox-color-mode=dark] .btn-red:active,html[data-netbox-color-mode=dark] .btn-red.active,.show>html[data-netbox-color-mode=dark] .btn-red.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-red,.btn-check:active+html[data-netbox-color-mode=light] .btn-red,html[data-netbox-color-mode=light] .btn-red:active,html[data-netbox-color-mode=light] .btn-red.active,.show>html[data-netbox-color-mode=light] .btn-red.dropdown-toggle{color:#fff;background-color:#b02a37;border-color:#a52834}.btn-check:checked+html .btn-red:focus,.btn-check:active+html .btn-red:focus,html .btn-red:active:focus,html .btn-red.active:focus,.show>html .btn-red.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-red:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-red:focus,html[data-netbox-color-mode=dark] .btn-red:active:focus,html[data-netbox-color-mode=dark] .btn-red.active:focus,.show>html[data-netbox-color-mode=dark] .btn-red.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-red:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-red:focus,html[data-netbox-color-mode=light] .btn-red:active:focus,html[data-netbox-color-mode=light] .btn-red.active:focus,.show>html[data-netbox-color-mode=light] .btn-red.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #e1536180}html .btn-red:disabled,html .btn-red.disabled,html[data-netbox-color-mode=dark] .btn-red:disabled,html[data-netbox-color-mode=dark] .btn-red.disabled,html[data-netbox-color-mode=light] .btn-red:disabled,html[data-netbox-color-mode=light] .btn-red.disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}}@media print{html .btn-yellow,html[data-netbox-color-mode=dark] .btn-yellow,html[data-netbox-color-mode=light] .btn-yellow{color:#000;background-color:#ffc107;border-color:#ffc107}html .btn-yellow:hover,html[data-netbox-color-mode=dark] .btn-yellow:hover,html[data-netbox-color-mode=light] .btn-yellow:hover{color:#000;background-color:#ffca2c;border-color:#ffc720}.btn-check:focus+html .btn-yellow,html .btn-yellow:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-yellow,html[data-netbox-color-mode=dark] .btn-yellow:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-yellow,html[data-netbox-color-mode=light] .btn-yellow:focus{color:#000;background-color:#ffca2c;border-color:#ffc720;box-shadow:0 0 0 .25rem #d9a40680}.btn-check:checked+html .btn-yellow,.btn-check:active+html .btn-yellow,html .btn-yellow:active,html .btn-yellow.active,.show>html .btn-yellow.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-yellow,.btn-check:active+html[data-netbox-color-mode=dark] .btn-yellow,html[data-netbox-color-mode=dark] .btn-yellow:active,html[data-netbox-color-mode=dark] .btn-yellow.active,.show>html[data-netbox-color-mode=dark] .btn-yellow.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-yellow,.btn-check:active+html[data-netbox-color-mode=light] .btn-yellow,html[data-netbox-color-mode=light] .btn-yellow:active,html[data-netbox-color-mode=light] .btn-yellow.active,.show>html[data-netbox-color-mode=light] .btn-yellow.dropdown-toggle{color:#000;background-color:#ffcd39;border-color:#ffc720}.btn-check:checked+html .btn-yellow:focus,.btn-check:active+html .btn-yellow:focus,html .btn-yellow:active:focus,html .btn-yellow.active:focus,.show>html .btn-yellow.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-yellow:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-yellow:focus,html[data-netbox-color-mode=dark] .btn-yellow:active:focus,html[data-netbox-color-mode=dark] .btn-yellow.active:focus,.show>html[data-netbox-color-mode=dark] .btn-yellow.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-yellow:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-yellow:focus,html[data-netbox-color-mode=light] .btn-yellow:active:focus,html[data-netbox-color-mode=light] .btn-yellow.active:focus,.show>html[data-netbox-color-mode=light] .btn-yellow.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #d9a40680}html .btn-yellow:disabled,html .btn-yellow.disabled,html[data-netbox-color-mode=dark] .btn-yellow:disabled,html[data-netbox-color-mode=dark] .btn-yellow.disabled,html[data-netbox-color-mode=light] .btn-yellow:disabled,html[data-netbox-color-mode=light] .btn-yellow.disabled{color:#000;background-color:#ffc107;border-color:#ffc107}}@media print{html .btn-green,html[data-netbox-color-mode=dark] .btn-green,html[data-netbox-color-mode=light] .btn-green{color:#fff;background-color:#198754;border-color:#198754}html .btn-green:hover,html[data-netbox-color-mode=dark] .btn-green:hover,html[data-netbox-color-mode=light] .btn-green:hover{color:#fff;background-color:#157347;border-color:#146c43}.btn-check:focus+html .btn-green,html .btn-green:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-green,html[data-netbox-color-mode=dark] .btn-green:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-green,html[data-netbox-color-mode=light] .btn-green:focus{color:#fff;background-color:#157347;border-color:#146c43;box-shadow:0 0 0 .25rem #3c996e80}.btn-check:checked+html .btn-green,.btn-check:active+html .btn-green,html .btn-green:active,html .btn-green.active,.show>html .btn-green.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-green,.btn-check:active+html[data-netbox-color-mode=dark] .btn-green,html[data-netbox-color-mode=dark] .btn-green:active,html[data-netbox-color-mode=dark] .btn-green.active,.show>html[data-netbox-color-mode=dark] .btn-green.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-green,.btn-check:active+html[data-netbox-color-mode=light] .btn-green,html[data-netbox-color-mode=light] .btn-green:active,html[data-netbox-color-mode=light] .btn-green.active,.show>html[data-netbox-color-mode=light] .btn-green.dropdown-toggle{color:#fff;background-color:#146c43;border-color:#13653f}.btn-check:checked+html .btn-green:focus,.btn-check:active+html .btn-green:focus,html .btn-green:active:focus,html .btn-green.active:focus,.show>html .btn-green.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-green:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-green:focus,html[data-netbox-color-mode=dark] .btn-green:active:focus,html[data-netbox-color-mode=dark] .btn-green.active:focus,.show>html[data-netbox-color-mode=dark] .btn-green.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-green:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-green:focus,html[data-netbox-color-mode=light] .btn-green:active:focus,html[data-netbox-color-mode=light] .btn-green.active:focus,.show>html[data-netbox-color-mode=light] .btn-green.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #3c996e80}html .btn-green:disabled,html .btn-green.disabled,html[data-netbox-color-mode=dark] .btn-green:disabled,html[data-netbox-color-mode=dark] .btn-green.disabled,html[data-netbox-color-mode=light] .btn-green:disabled,html[data-netbox-color-mode=light] .btn-green.disabled{color:#fff;background-color:#198754;border-color:#198754}}@media print{html .btn-blue,html[data-netbox-color-mode=dark] .btn-blue,html[data-netbox-color-mode=light] .btn-blue{color:#fff;background-color:#0d6efd;border-color:#0d6efd}html .btn-blue:hover,html[data-netbox-color-mode=dark] .btn-blue:hover,html[data-netbox-color-mode=light] .btn-blue:hover{color:#fff;background-color:#0b5ed7;border-color:#0a58ca}.btn-check:focus+html .btn-blue,html .btn-blue:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-blue,html[data-netbox-color-mode=dark] .btn-blue:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-blue,html[data-netbox-color-mode=light] .btn-blue:focus{color:#fff;background-color:#0b5ed7;border-color:#0a58ca;box-shadow:0 0 0 .25rem #3184fd80}.btn-check:checked+html .btn-blue,.btn-check:active+html .btn-blue,html .btn-blue:active,html .btn-blue.active,.show>html .btn-blue.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-blue,.btn-check:active+html[data-netbox-color-mode=dark] .btn-blue,html[data-netbox-color-mode=dark] .btn-blue:active,html[data-netbox-color-mode=dark] .btn-blue.active,.show>html[data-netbox-color-mode=dark] .btn-blue.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-blue,.btn-check:active+html[data-netbox-color-mode=light] .btn-blue,html[data-netbox-color-mode=light] .btn-blue:active,html[data-netbox-color-mode=light] .btn-blue.active,.show>html[data-netbox-color-mode=light] .btn-blue.dropdown-toggle{color:#fff;background-color:#0a58ca;border-color:#0a53be}.btn-check:checked+html .btn-blue:focus,.btn-check:active+html .btn-blue:focus,html .btn-blue:active:focus,html .btn-blue.active:focus,.show>html .btn-blue.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-blue:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-blue:focus,html[data-netbox-color-mode=dark] .btn-blue:active:focus,html[data-netbox-color-mode=dark] .btn-blue.active:focus,.show>html[data-netbox-color-mode=dark] .btn-blue.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-blue:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-blue:focus,html[data-netbox-color-mode=light] .btn-blue:active:focus,html[data-netbox-color-mode=light] .btn-blue.active:focus,.show>html[data-netbox-color-mode=light] .btn-blue.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #3184fd80}html .btn-blue:disabled,html .btn-blue.disabled,html[data-netbox-color-mode=dark] .btn-blue:disabled,html[data-netbox-color-mode=dark] .btn-blue.disabled,html[data-netbox-color-mode=light] .btn-blue:disabled,html[data-netbox-color-mode=light] .btn-blue.disabled{color:#fff;background-color:#0d6efd;border-color:#0d6efd}}@media print{html .btn-cyan,html[data-netbox-color-mode=dark] .btn-cyan,html[data-netbox-color-mode=light] .btn-cyan{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}html .btn-cyan:hover,html[data-netbox-color-mode=dark] .btn-cyan:hover,html[data-netbox-color-mode=light] .btn-cyan:hover{color:#000;background-color:#31d2f2;border-color:#25cff2}.btn-check:focus+html .btn-cyan,html .btn-cyan:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-cyan,html[data-netbox-color-mode=dark] .btn-cyan:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-cyan,html[data-netbox-color-mode=light] .btn-cyan:focus{color:#000;background-color:#31d2f2;border-color:#25cff2;box-shadow:0 0 0 .25rem #0baccc80}.btn-check:checked+html .btn-cyan,.btn-check:active+html .btn-cyan,html .btn-cyan:active,html .btn-cyan.active,.show>html .btn-cyan.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-cyan,.btn-check:active+html[data-netbox-color-mode=dark] .btn-cyan,html[data-netbox-color-mode=dark] .btn-cyan:active,html[data-netbox-color-mode=dark] .btn-cyan.active,.show>html[data-netbox-color-mode=dark] .btn-cyan.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-cyan,.btn-check:active+html[data-netbox-color-mode=light] .btn-cyan,html[data-netbox-color-mode=light] .btn-cyan:active,html[data-netbox-color-mode=light] .btn-cyan.active,.show>html[data-netbox-color-mode=light] .btn-cyan.dropdown-toggle{color:#000;background-color:#3dd5f3;border-color:#25cff2}.btn-check:checked+html .btn-cyan:focus,.btn-check:active+html .btn-cyan:focus,html .btn-cyan:active:focus,html .btn-cyan.active:focus,.show>html .btn-cyan.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-cyan:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-cyan:focus,html[data-netbox-color-mode=dark] .btn-cyan:active:focus,html[data-netbox-color-mode=dark] .btn-cyan.active:focus,.show>html[data-netbox-color-mode=dark] .btn-cyan.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-cyan:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-cyan:focus,html[data-netbox-color-mode=light] .btn-cyan:active:focus,html[data-netbox-color-mode=light] .btn-cyan.active:focus,.show>html[data-netbox-color-mode=light] .btn-cyan.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #0baccc80}html .btn-cyan:disabled,html .btn-cyan.disabled,html[data-netbox-color-mode=dark] .btn-cyan:disabled,html[data-netbox-color-mode=dark] .btn-cyan.disabled,html[data-netbox-color-mode=light] .btn-cyan:disabled,html[data-netbox-color-mode=light] .btn-cyan.disabled{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}}@media print{html .btn-indigo,html[data-netbox-color-mode=dark] .btn-indigo,html[data-netbox-color-mode=light] .btn-indigo{color:#fff;background-color:#6610f2;border-color:#6610f2}html .btn-indigo:hover,html[data-netbox-color-mode=dark] .btn-indigo:hover,html[data-netbox-color-mode=light] .btn-indigo:hover{color:#fff;background-color:#570ece;border-color:#520dc2}.btn-check:focus+html .btn-indigo,html .btn-indigo:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-indigo,html[data-netbox-color-mode=dark] .btn-indigo:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-indigo,html[data-netbox-color-mode=light] .btn-indigo:focus{color:#fff;background-color:#570ece;border-color:#520dc2;box-shadow:0 0 0 .25rem #7d34f480}.btn-check:checked+html .btn-indigo,.btn-check:active+html .btn-indigo,html .btn-indigo:active,html .btn-indigo.active,.show>html .btn-indigo.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-indigo,.btn-check:active+html[data-netbox-color-mode=dark] .btn-indigo,html[data-netbox-color-mode=dark] .btn-indigo:active,html[data-netbox-color-mode=dark] .btn-indigo.active,.show>html[data-netbox-color-mode=dark] .btn-indigo.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-indigo,.btn-check:active+html[data-netbox-color-mode=light] .btn-indigo,html[data-netbox-color-mode=light] .btn-indigo:active,html[data-netbox-color-mode=light] .btn-indigo.active,.show>html[data-netbox-color-mode=light] .btn-indigo.dropdown-toggle{color:#fff;background-color:#520dc2;border-color:#4d0cb6}.btn-check:checked+html .btn-indigo:focus,.btn-check:active+html .btn-indigo:focus,html .btn-indigo:active:focus,html .btn-indigo.active:focus,.show>html .btn-indigo.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-indigo:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-indigo:focus,html[data-netbox-color-mode=dark] .btn-indigo:active:focus,html[data-netbox-color-mode=dark] .btn-indigo.active:focus,.show>html[data-netbox-color-mode=dark] .btn-indigo.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-indigo:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-indigo:focus,html[data-netbox-color-mode=light] .btn-indigo:active:focus,html[data-netbox-color-mode=light] .btn-indigo.active:focus,.show>html[data-netbox-color-mode=light] .btn-indigo.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #7d34f480}html .btn-indigo:disabled,html .btn-indigo.disabled,html[data-netbox-color-mode=dark] .btn-indigo:disabled,html[data-netbox-color-mode=dark] .btn-indigo.disabled,html[data-netbox-color-mode=light] .btn-indigo:disabled,html[data-netbox-color-mode=light] .btn-indigo.disabled{color:#fff;background-color:#6610f2;border-color:#6610f2}}@media print{html .btn-purple,html[data-netbox-color-mode=dark] .btn-purple,html[data-netbox-color-mode=light] .btn-purple{color:#fff;background-color:#6f42c1;border-color:#6f42c1}html .btn-purple:hover,html[data-netbox-color-mode=dark] .btn-purple:hover,html[data-netbox-color-mode=light] .btn-purple:hover{color:#fff;background-color:#5e38a4;border-color:#59359a}.btn-check:focus+html .btn-purple,html .btn-purple:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-purple,html[data-netbox-color-mode=dark] .btn-purple:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-purple,html[data-netbox-color-mode=light] .btn-purple:focus{color:#fff;background-color:#5e38a4;border-color:#59359a;box-shadow:0 0 0 .25rem #855eca80}.btn-check:checked+html .btn-purple,.btn-check:active+html .btn-purple,html .btn-purple:active,html .btn-purple.active,.show>html .btn-purple.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-purple,.btn-check:active+html[data-netbox-color-mode=dark] .btn-purple,html[data-netbox-color-mode=dark] .btn-purple:active,html[data-netbox-color-mode=dark] .btn-purple.active,.show>html[data-netbox-color-mode=dark] .btn-purple.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-purple,.btn-check:active+html[data-netbox-color-mode=light] .btn-purple,html[data-netbox-color-mode=light] .btn-purple:active,html[data-netbox-color-mode=light] .btn-purple.active,.show>html[data-netbox-color-mode=light] .btn-purple.dropdown-toggle{color:#fff;background-color:#59359a;border-color:#533291}.btn-check:checked+html .btn-purple:focus,.btn-check:active+html .btn-purple:focus,html .btn-purple:active:focus,html .btn-purple.active:focus,.show>html .btn-purple.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-purple:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-purple:focus,html[data-netbox-color-mode=dark] .btn-purple:active:focus,html[data-netbox-color-mode=dark] .btn-purple.active:focus,.show>html[data-netbox-color-mode=dark] .btn-purple.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-purple:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-purple:focus,html[data-netbox-color-mode=light] .btn-purple:active:focus,html[data-netbox-color-mode=light] .btn-purple.active:focus,.show>html[data-netbox-color-mode=light] .btn-purple.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #855eca80}html .btn-purple:disabled,html .btn-purple.disabled,html[data-netbox-color-mode=dark] .btn-purple:disabled,html[data-netbox-color-mode=dark] .btn-purple.disabled,html[data-netbox-color-mode=light] .btn-purple:disabled,html[data-netbox-color-mode=light] .btn-purple.disabled{color:#fff;background-color:#6f42c1;border-color:#6f42c1}}@media print{html .btn-pink,html[data-netbox-color-mode=dark] .btn-pink,html[data-netbox-color-mode=light] .btn-pink{color:#fff;background-color:#d63384;border-color:#d63384}html .btn-pink:hover,html[data-netbox-color-mode=dark] .btn-pink:hover,html[data-netbox-color-mode=light] .btn-pink:hover{color:#fff;background-color:#b62b70;border-color:#ab296a}.btn-check:focus+html .btn-pink,html .btn-pink:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-pink,html[data-netbox-color-mode=dark] .btn-pink:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-pink,html[data-netbox-color-mode=light] .btn-pink:focus{color:#fff;background-color:#b62b70;border-color:#ab296a;box-shadow:0 0 0 .25rem #dc529680}.btn-check:checked+html .btn-pink,.btn-check:active+html .btn-pink,html .btn-pink:active,html .btn-pink.active,.show>html .btn-pink.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-pink,.btn-check:active+html[data-netbox-color-mode=dark] .btn-pink,html[data-netbox-color-mode=dark] .btn-pink:active,html[data-netbox-color-mode=dark] .btn-pink.active,.show>html[data-netbox-color-mode=dark] .btn-pink.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-pink,.btn-check:active+html[data-netbox-color-mode=light] .btn-pink,html[data-netbox-color-mode=light] .btn-pink:active,html[data-netbox-color-mode=light] .btn-pink.active,.show>html[data-netbox-color-mode=light] .btn-pink.dropdown-toggle{color:#fff;background-color:#ab296a;border-color:#a12663}.btn-check:checked+html .btn-pink:focus,.btn-check:active+html .btn-pink:focus,html .btn-pink:active:focus,html .btn-pink.active:focus,.show>html .btn-pink.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-pink:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-pink:focus,html[data-netbox-color-mode=dark] .btn-pink:active:focus,html[data-netbox-color-mode=dark] .btn-pink.active:focus,.show>html[data-netbox-color-mode=dark] .btn-pink.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-pink:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-pink:focus,html[data-netbox-color-mode=light] .btn-pink:active:focus,html[data-netbox-color-mode=light] .btn-pink.active:focus,.show>html[data-netbox-color-mode=light] .btn-pink.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #dc529680}html .btn-pink:disabled,html .btn-pink.disabled,html[data-netbox-color-mode=dark] .btn-pink:disabled,html[data-netbox-color-mode=dark] .btn-pink.disabled,html[data-netbox-color-mode=light] .btn-pink:disabled,html[data-netbox-color-mode=light] .btn-pink.disabled{color:#fff;background-color:#d63384;border-color:#d63384}}@media print{html .btn-darker,html[data-netbox-color-mode=dark] .btn-darker,html[data-netbox-color-mode=light] .btn-darker{color:#fff;background-color:#1b1f22;border-color:#1b1f22}html .btn-darker:hover,html[data-netbox-color-mode=dark] .btn-darker:hover,html[data-netbox-color-mode=light] .btn-darker:hover{color:#fff;background-color:#171a1d;border-color:#16191b}.btn-check:focus+html .btn-darker,html .btn-darker:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-darker,html[data-netbox-color-mode=dark] .btn-darker:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-darker,html[data-netbox-color-mode=light] .btn-darker:focus{color:#fff;background-color:#171a1d;border-color:#16191b;box-shadow:0 0 0 .25rem #3d414380}.btn-check:checked+html .btn-darker,.btn-check:active+html .btn-darker,html .btn-darker:active,html .btn-darker.active,.show>html .btn-darker.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-darker,.btn-check:active+html[data-netbox-color-mode=dark] .btn-darker,html[data-netbox-color-mode=dark] .btn-darker:active,html[data-netbox-color-mode=dark] .btn-darker.active,.show>html[data-netbox-color-mode=dark] .btn-darker.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-darker,.btn-check:active+html[data-netbox-color-mode=light] .btn-darker,html[data-netbox-color-mode=light] .btn-darker:active,html[data-netbox-color-mode=light] .btn-darker.active,.show>html[data-netbox-color-mode=light] .btn-darker.dropdown-toggle{color:#fff;background-color:#16191b;border-color:#14171a}.btn-check:checked+html .btn-darker:focus,.btn-check:active+html .btn-darker:focus,html .btn-darker:active:focus,html .btn-darker.active:focus,.show>html .btn-darker.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-darker:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-darker:focus,html[data-netbox-color-mode=dark] .btn-darker:active:focus,html[data-netbox-color-mode=dark] .btn-darker.active:focus,.show>html[data-netbox-color-mode=dark] .btn-darker.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-darker:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-darker:focus,html[data-netbox-color-mode=light] .btn-darker:active:focus,html[data-netbox-color-mode=light] .btn-darker.active:focus,.show>html[data-netbox-color-mode=light] .btn-darker.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #3d414380}html .btn-darker:disabled,html .btn-darker.disabled,html[data-netbox-color-mode=dark] .btn-darker:disabled,html[data-netbox-color-mode=dark] .btn-darker.disabled,html[data-netbox-color-mode=light] .btn-darker:disabled,html[data-netbox-color-mode=light] .btn-darker.disabled{color:#fff;background-color:#1b1f22;border-color:#1b1f22}}@media print{html .btn-darkest,html[data-netbox-color-mode=dark] .btn-darkest,html[data-netbox-color-mode=light] .btn-darkest{color:#fff;background-color:#171b1d;border-color:#171b1d}html .btn-darkest:hover,html[data-netbox-color-mode=dark] .btn-darkest:hover,html[data-netbox-color-mode=light] .btn-darkest:hover{color:#fff;background-color:#141719;border-color:#121617}.btn-check:focus+html .btn-darkest,html .btn-darkest:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-darkest,html[data-netbox-color-mode=dark] .btn-darkest:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-darkest,html[data-netbox-color-mode=light] .btn-darkest:focus{color:#fff;background-color:#141719;border-color:#121617;box-shadow:0 0 0 .25rem #3a3d3f80}.btn-check:checked+html .btn-darkest,.btn-check:active+html .btn-darkest,html .btn-darkest:active,html .btn-darkest.active,.show>html .btn-darkest.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-darkest,.btn-check:active+html[data-netbox-color-mode=dark] .btn-darkest,html[data-netbox-color-mode=dark] .btn-darkest:active,html[data-netbox-color-mode=dark] .btn-darkest.active,.show>html[data-netbox-color-mode=dark] .btn-darkest.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-darkest,.btn-check:active+html[data-netbox-color-mode=light] .btn-darkest,html[data-netbox-color-mode=light] .btn-darkest:active,html[data-netbox-color-mode=light] .btn-darkest.active,.show>html[data-netbox-color-mode=light] .btn-darkest.dropdown-toggle{color:#fff;background-color:#121617;border-color:#111416}.btn-check:checked+html .btn-darkest:focus,.btn-check:active+html .btn-darkest:focus,html .btn-darkest:active:focus,html .btn-darkest.active:focus,.show>html .btn-darkest.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-darkest:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-darkest:focus,html[data-netbox-color-mode=dark] .btn-darkest:active:focus,html[data-netbox-color-mode=dark] .btn-darkest.active:focus,.show>html[data-netbox-color-mode=dark] .btn-darkest.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-darkest:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-darkest:focus,html[data-netbox-color-mode=light] .btn-darkest:active:focus,html[data-netbox-color-mode=light] .btn-darkest.active:focus,.show>html[data-netbox-color-mode=light] .btn-darkest.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #3a3d3f80}html .btn-darkest:disabled,html .btn-darkest.disabled,html[data-netbox-color-mode=dark] .btn-darkest:disabled,html[data-netbox-color-mode=dark] .btn-darkest.disabled,html[data-netbox-color-mode=light] .btn-darkest:disabled,html[data-netbox-color-mode=light] .btn-darkest.disabled{color:#fff;background-color:#171b1d;border-color:#171b1d}}@media print{html .btn-gray,html[data-netbox-color-mode=dark] .btn-gray,html[data-netbox-color-mode=light] .btn-gray{color:#000;background-color:#ced4da;border-color:#ced4da}html .btn-gray:hover,html[data-netbox-color-mode=dark] .btn-gray:hover,html[data-netbox-color-mode=light] .btn-gray:hover{color:#000;background-color:#d5dae0;border-color:#d3d8de}.btn-check:focus+html .btn-gray,html .btn-gray:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-gray,html[data-netbox-color-mode=dark] .btn-gray:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-gray,html[data-netbox-color-mode=light] .btn-gray:focus{color:#000;background-color:#d5dae0;border-color:#d3d8de;box-shadow:0 0 0 .25rem #afb4b980}.btn-check:checked+html .btn-gray,.btn-check:active+html .btn-gray,html .btn-gray:active,html .btn-gray.active,.show>html .btn-gray.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-gray,.btn-check:active+html[data-netbox-color-mode=dark] .btn-gray,html[data-netbox-color-mode=dark] .btn-gray:active,html[data-netbox-color-mode=dark] .btn-gray.active,.show>html[data-netbox-color-mode=dark] .btn-gray.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-gray,.btn-check:active+html[data-netbox-color-mode=light] .btn-gray,html[data-netbox-color-mode=light] .btn-gray:active,html[data-netbox-color-mode=light] .btn-gray.active,.show>html[data-netbox-color-mode=light] .btn-gray.dropdown-toggle{color:#000;background-color:#d8dde1;border-color:#d3d8de}.btn-check:checked+html .btn-gray:focus,.btn-check:active+html .btn-gray:focus,html .btn-gray:active:focus,html .btn-gray.active:focus,.show>html .btn-gray.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-gray:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-gray:focus,html[data-netbox-color-mode=dark] .btn-gray:active:focus,html[data-netbox-color-mode=dark] .btn-gray.active:focus,.show>html[data-netbox-color-mode=dark] .btn-gray.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-gray:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-gray:focus,html[data-netbox-color-mode=light] .btn-gray:active:focus,html[data-netbox-color-mode=light] .btn-gray.active:focus,.show>html[data-netbox-color-mode=light] .btn-gray.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #afb4b980}html .btn-gray:disabled,html .btn-gray.disabled,html[data-netbox-color-mode=dark] .btn-gray:disabled,html[data-netbox-color-mode=dark] .btn-gray.disabled,html[data-netbox-color-mode=light] .btn-gray:disabled,html[data-netbox-color-mode=light] .btn-gray.disabled{color:#000;background-color:#ced4da;border-color:#ced4da}}@media print{html .btn-gray-100,html[data-netbox-color-mode=dark] .btn-gray-100,html[data-netbox-color-mode=light] .btn-gray-100{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}html .btn-gray-100:hover,html[data-netbox-color-mode=dark] .btn-gray-100:hover,html[data-netbox-color-mode=light] .btn-gray-100:hover{color:#000;background-color:#f9fafb;border-color:#f9fafb}.btn-check:focus+html .btn-gray-100,html .btn-gray-100:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-gray-100,html[data-netbox-color-mode=dark] .btn-gray-100:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-gray-100,html[data-netbox-color-mode=light] .btn-gray-100:focus{color:#000;background-color:#f9fafb;border-color:#f9fafb;box-shadow:0 0 0 .25rem #d3d4d580}.btn-check:checked+html .btn-gray-100,.btn-check:active+html .btn-gray-100,html .btn-gray-100:active,html .btn-gray-100.active,.show>html .btn-gray-100.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-gray-100,.btn-check:active+html[data-netbox-color-mode=dark] .btn-gray-100,html[data-netbox-color-mode=dark] .btn-gray-100:active,html[data-netbox-color-mode=dark] .btn-gray-100.active,.show>html[data-netbox-color-mode=dark] .btn-gray-100.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-gray-100,.btn-check:active+html[data-netbox-color-mode=light] .btn-gray-100,html[data-netbox-color-mode=light] .btn-gray-100:active,html[data-netbox-color-mode=light] .btn-gray-100.active,.show>html[data-netbox-color-mode=light] .btn-gray-100.dropdown-toggle{color:#000;background-color:#f9fafb;border-color:#f9fafb}.btn-check:checked+html .btn-gray-100:focus,.btn-check:active+html .btn-gray-100:focus,html .btn-gray-100:active:focus,html .btn-gray-100.active:focus,.show>html .btn-gray-100.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-gray-100:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-gray-100:focus,html[data-netbox-color-mode=dark] .btn-gray-100:active:focus,html[data-netbox-color-mode=dark] .btn-gray-100.active:focus,.show>html[data-netbox-color-mode=dark] .btn-gray-100.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-gray-100:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-gray-100:focus,html[data-netbox-color-mode=light] .btn-gray-100:active:focus,html[data-netbox-color-mode=light] .btn-gray-100.active:focus,.show>html[data-netbox-color-mode=light] .btn-gray-100.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #d3d4d580}html .btn-gray-100:disabled,html .btn-gray-100.disabled,html[data-netbox-color-mode=dark] .btn-gray-100:disabled,html[data-netbox-color-mode=dark] .btn-gray-100.disabled,html[data-netbox-color-mode=light] .btn-gray-100:disabled,html[data-netbox-color-mode=light] .btn-gray-100.disabled{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}}@media print{html .btn-gray-200,html[data-netbox-color-mode=dark] .btn-gray-200,html[data-netbox-color-mode=light] .btn-gray-200{color:#000;background-color:#e9ecef;border-color:#e9ecef}html .btn-gray-200:hover,html[data-netbox-color-mode=dark] .btn-gray-200:hover,html[data-netbox-color-mode=light] .btn-gray-200:hover{color:#000;background-color:#eceff1;border-color:#ebeef1}.btn-check:focus+html .btn-gray-200,html .btn-gray-200:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-gray-200,html[data-netbox-color-mode=dark] .btn-gray-200:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-gray-200,html[data-netbox-color-mode=light] .btn-gray-200:focus{color:#000;background-color:#eceff1;border-color:#ebeef1;box-shadow:0 0 0 .25rem #c6c9cb80}.btn-check:checked+html .btn-gray-200,.btn-check:active+html .btn-gray-200,html .btn-gray-200:active,html .btn-gray-200.active,.show>html .btn-gray-200.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-gray-200,.btn-check:active+html[data-netbox-color-mode=dark] .btn-gray-200,html[data-netbox-color-mode=dark] .btn-gray-200:active,html[data-netbox-color-mode=dark] .btn-gray-200.active,.show>html[data-netbox-color-mode=dark] .btn-gray-200.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-gray-200,.btn-check:active+html[data-netbox-color-mode=light] .btn-gray-200,html[data-netbox-color-mode=light] .btn-gray-200:active,html[data-netbox-color-mode=light] .btn-gray-200.active,.show>html[data-netbox-color-mode=light] .btn-gray-200.dropdown-toggle{color:#000;background-color:#edf0f2;border-color:#ebeef1}.btn-check:checked+html .btn-gray-200:focus,.btn-check:active+html .btn-gray-200:focus,html .btn-gray-200:active:focus,html .btn-gray-200.active:focus,.show>html .btn-gray-200.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-gray-200:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-gray-200:focus,html[data-netbox-color-mode=dark] .btn-gray-200:active:focus,html[data-netbox-color-mode=dark] .btn-gray-200.active:focus,.show>html[data-netbox-color-mode=dark] .btn-gray-200.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-gray-200:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-gray-200:focus,html[data-netbox-color-mode=light] .btn-gray-200:active:focus,html[data-netbox-color-mode=light] .btn-gray-200.active:focus,.show>html[data-netbox-color-mode=light] .btn-gray-200.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #c6c9cb80}html .btn-gray-200:disabled,html .btn-gray-200.disabled,html[data-netbox-color-mode=dark] .btn-gray-200:disabled,html[data-netbox-color-mode=dark] .btn-gray-200.disabled,html[data-netbox-color-mode=light] .btn-gray-200:disabled,html[data-netbox-color-mode=light] .btn-gray-200.disabled{color:#000;background-color:#e9ecef;border-color:#e9ecef}}@media print{html .btn-gray-300,html[data-netbox-color-mode=dark] .btn-gray-300,html[data-netbox-color-mode=light] .btn-gray-300{color:#000;background-color:#dee2e6;border-color:#dee2e6}html .btn-gray-300:hover,html[data-netbox-color-mode=dark] .btn-gray-300:hover,html[data-netbox-color-mode=light] .btn-gray-300:hover{color:#000;background-color:#e3e6ea;border-color:#e1e5e9}.btn-check:focus+html .btn-gray-300,html .btn-gray-300:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-gray-300,html[data-netbox-color-mode=dark] .btn-gray-300:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-gray-300,html[data-netbox-color-mode=light] .btn-gray-300:focus{color:#000;background-color:#e3e6ea;border-color:#e1e5e9;box-shadow:0 0 0 .25rem #bdc0c480}.btn-check:checked+html .btn-gray-300,.btn-check:active+html .btn-gray-300,html .btn-gray-300:active,html .btn-gray-300.active,.show>html .btn-gray-300.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-gray-300,.btn-check:active+html[data-netbox-color-mode=dark] .btn-gray-300,html[data-netbox-color-mode=dark] .btn-gray-300:active,html[data-netbox-color-mode=dark] .btn-gray-300.active,.show>html[data-netbox-color-mode=dark] .btn-gray-300.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-gray-300,.btn-check:active+html[data-netbox-color-mode=light] .btn-gray-300,html[data-netbox-color-mode=light] .btn-gray-300:active,html[data-netbox-color-mode=light] .btn-gray-300.active,.show>html[data-netbox-color-mode=light] .btn-gray-300.dropdown-toggle{color:#000;background-color:#e5e8eb;border-color:#e1e5e9}.btn-check:checked+html .btn-gray-300:focus,.btn-check:active+html .btn-gray-300:focus,html .btn-gray-300:active:focus,html .btn-gray-300.active:focus,.show>html .btn-gray-300.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-gray-300:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-gray-300:focus,html[data-netbox-color-mode=dark] .btn-gray-300:active:focus,html[data-netbox-color-mode=dark] .btn-gray-300.active:focus,.show>html[data-netbox-color-mode=dark] .btn-gray-300.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-gray-300:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-gray-300:focus,html[data-netbox-color-mode=light] .btn-gray-300:active:focus,html[data-netbox-color-mode=light] .btn-gray-300.active:focus,.show>html[data-netbox-color-mode=light] .btn-gray-300.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #bdc0c480}html .btn-gray-300:disabled,html .btn-gray-300.disabled,html[data-netbox-color-mode=dark] .btn-gray-300:disabled,html[data-netbox-color-mode=dark] .btn-gray-300.disabled,html[data-netbox-color-mode=light] .btn-gray-300:disabled,html[data-netbox-color-mode=light] .btn-gray-300.disabled{color:#000;background-color:#dee2e6;border-color:#dee2e6}}@media print{html .btn-gray-400,html[data-netbox-color-mode=dark] .btn-gray-400,html[data-netbox-color-mode=light] .btn-gray-400{color:#000;background-color:#ced4da;border-color:#ced4da}html .btn-gray-400:hover,html[data-netbox-color-mode=dark] .btn-gray-400:hover,html[data-netbox-color-mode=light] .btn-gray-400:hover{color:#000;background-color:#d5dae0;border-color:#d3d8de}.btn-check:focus+html .btn-gray-400,html .btn-gray-400:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-gray-400,html[data-netbox-color-mode=dark] .btn-gray-400:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-gray-400,html[data-netbox-color-mode=light] .btn-gray-400:focus{color:#000;background-color:#d5dae0;border-color:#d3d8de;box-shadow:0 0 0 .25rem #afb4b980}.btn-check:checked+html .btn-gray-400,.btn-check:active+html .btn-gray-400,html .btn-gray-400:active,html .btn-gray-400.active,.show>html .btn-gray-400.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-gray-400,.btn-check:active+html[data-netbox-color-mode=dark] .btn-gray-400,html[data-netbox-color-mode=dark] .btn-gray-400:active,html[data-netbox-color-mode=dark] .btn-gray-400.active,.show>html[data-netbox-color-mode=dark] .btn-gray-400.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-gray-400,.btn-check:active+html[data-netbox-color-mode=light] .btn-gray-400,html[data-netbox-color-mode=light] .btn-gray-400:active,html[data-netbox-color-mode=light] .btn-gray-400.active,.show>html[data-netbox-color-mode=light] .btn-gray-400.dropdown-toggle{color:#000;background-color:#d8dde1;border-color:#d3d8de}.btn-check:checked+html .btn-gray-400:focus,.btn-check:active+html .btn-gray-400:focus,html .btn-gray-400:active:focus,html .btn-gray-400.active:focus,.show>html .btn-gray-400.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-gray-400:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-gray-400:focus,html[data-netbox-color-mode=dark] .btn-gray-400:active:focus,html[data-netbox-color-mode=dark] .btn-gray-400.active:focus,.show>html[data-netbox-color-mode=dark] .btn-gray-400.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-gray-400:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-gray-400:focus,html[data-netbox-color-mode=light] .btn-gray-400:active:focus,html[data-netbox-color-mode=light] .btn-gray-400.active:focus,.show>html[data-netbox-color-mode=light] .btn-gray-400.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #afb4b980}html .btn-gray-400:disabled,html .btn-gray-400.disabled,html[data-netbox-color-mode=dark] .btn-gray-400:disabled,html[data-netbox-color-mode=dark] .btn-gray-400.disabled,html[data-netbox-color-mode=light] .btn-gray-400:disabled,html[data-netbox-color-mode=light] .btn-gray-400.disabled{color:#000;background-color:#ced4da;border-color:#ced4da}}@media print{html .btn-gray-500,html[data-netbox-color-mode=dark] .btn-gray-500,html[data-netbox-color-mode=light] .btn-gray-500{color:#000;background-color:#adb5bd;border-color:#adb5bd}html .btn-gray-500:hover,html[data-netbox-color-mode=dark] .btn-gray-500:hover,html[data-netbox-color-mode=light] .btn-gray-500:hover{color:#000;background-color:#b9c0c7;border-color:#b5bcc4}.btn-check:focus+html .btn-gray-500,html .btn-gray-500:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-gray-500,html[data-netbox-color-mode=dark] .btn-gray-500:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-gray-500,html[data-netbox-color-mode=light] .btn-gray-500:focus{color:#000;background-color:#b9c0c7;border-color:#b5bcc4;box-shadow:0 0 0 .25rem #939aa180}.btn-check:checked+html .btn-gray-500,.btn-check:active+html .btn-gray-500,html .btn-gray-500:active,html .btn-gray-500.active,.show>html .btn-gray-500.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-gray-500,.btn-check:active+html[data-netbox-color-mode=dark] .btn-gray-500,html[data-netbox-color-mode=dark] .btn-gray-500:active,html[data-netbox-color-mode=dark] .btn-gray-500.active,.show>html[data-netbox-color-mode=dark] .btn-gray-500.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-gray-500,.btn-check:active+html[data-netbox-color-mode=light] .btn-gray-500,html[data-netbox-color-mode=light] .btn-gray-500:active,html[data-netbox-color-mode=light] .btn-gray-500.active,.show>html[data-netbox-color-mode=light] .btn-gray-500.dropdown-toggle{color:#000;background-color:#bdc4ca;border-color:#b5bcc4}.btn-check:checked+html .btn-gray-500:focus,.btn-check:active+html .btn-gray-500:focus,html .btn-gray-500:active:focus,html .btn-gray-500.active:focus,.show>html .btn-gray-500.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-gray-500:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-gray-500:focus,html[data-netbox-color-mode=dark] .btn-gray-500:active:focus,html[data-netbox-color-mode=dark] .btn-gray-500.active:focus,.show>html[data-netbox-color-mode=dark] .btn-gray-500.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-gray-500:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-gray-500:focus,html[data-netbox-color-mode=light] .btn-gray-500:active:focus,html[data-netbox-color-mode=light] .btn-gray-500.active:focus,.show>html[data-netbox-color-mode=light] .btn-gray-500.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #939aa180}html .btn-gray-500:disabled,html .btn-gray-500.disabled,html[data-netbox-color-mode=dark] .btn-gray-500:disabled,html[data-netbox-color-mode=dark] .btn-gray-500.disabled,html[data-netbox-color-mode=light] .btn-gray-500:disabled,html[data-netbox-color-mode=light] .btn-gray-500.disabled{color:#000;background-color:#adb5bd;border-color:#adb5bd}}@media print{html .btn-gray-600,html[data-netbox-color-mode=dark] .btn-gray-600,html[data-netbox-color-mode=light] .btn-gray-600{color:#fff;background-color:#6c757d;border-color:#6c757d}html .btn-gray-600:hover,html[data-netbox-color-mode=dark] .btn-gray-600:hover,html[data-netbox-color-mode=light] .btn-gray-600:hover{color:#fff;background-color:#5c636a;border-color:#565e64}.btn-check:focus+html .btn-gray-600,html .btn-gray-600:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-gray-600,html[data-netbox-color-mode=dark] .btn-gray-600:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-gray-600,html[data-netbox-color-mode=light] .btn-gray-600:focus{color:#fff;background-color:#5c636a;border-color:#565e64;box-shadow:0 0 0 .25rem #828a9180}.btn-check:checked+html .btn-gray-600,.btn-check:active+html .btn-gray-600,html .btn-gray-600:active,html .btn-gray-600.active,.show>html .btn-gray-600.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-gray-600,.btn-check:active+html[data-netbox-color-mode=dark] .btn-gray-600,html[data-netbox-color-mode=dark] .btn-gray-600:active,html[data-netbox-color-mode=dark] .btn-gray-600.active,.show>html[data-netbox-color-mode=dark] .btn-gray-600.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-gray-600,.btn-check:active+html[data-netbox-color-mode=light] .btn-gray-600,html[data-netbox-color-mode=light] .btn-gray-600:active,html[data-netbox-color-mode=light] .btn-gray-600.active,.show>html[data-netbox-color-mode=light] .btn-gray-600.dropdown-toggle{color:#fff;background-color:#565e64;border-color:#51585e}.btn-check:checked+html .btn-gray-600:focus,.btn-check:active+html .btn-gray-600:focus,html .btn-gray-600:active:focus,html .btn-gray-600.active:focus,.show>html .btn-gray-600.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-gray-600:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-gray-600:focus,html[data-netbox-color-mode=dark] .btn-gray-600:active:focus,html[data-netbox-color-mode=dark] .btn-gray-600.active:focus,.show>html[data-netbox-color-mode=dark] .btn-gray-600.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-gray-600:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-gray-600:focus,html[data-netbox-color-mode=light] .btn-gray-600:active:focus,html[data-netbox-color-mode=light] .btn-gray-600.active:focus,.show>html[data-netbox-color-mode=light] .btn-gray-600.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #828a9180}html .btn-gray-600:disabled,html .btn-gray-600.disabled,html[data-netbox-color-mode=dark] .btn-gray-600:disabled,html[data-netbox-color-mode=dark] .btn-gray-600.disabled,html[data-netbox-color-mode=light] .btn-gray-600:disabled,html[data-netbox-color-mode=light] .btn-gray-600.disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}}@media print{html .btn-gray-700,html[data-netbox-color-mode=dark] .btn-gray-700,html[data-netbox-color-mode=light] .btn-gray-700{color:#fff;background-color:#495057;border-color:#495057}html .btn-gray-700:hover,html[data-netbox-color-mode=dark] .btn-gray-700:hover,html[data-netbox-color-mode=light] .btn-gray-700:hover{color:#fff;background-color:#3e444a;border-color:#3a4046}.btn-check:focus+html .btn-gray-700,html .btn-gray-700:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-gray-700,html[data-netbox-color-mode=dark] .btn-gray-700:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-gray-700,html[data-netbox-color-mode=light] .btn-gray-700:focus{color:#fff;background-color:#3e444a;border-color:#3a4046;box-shadow:0 0 0 .25rem #646a7080}.btn-check:checked+html .btn-gray-700,.btn-check:active+html .btn-gray-700,html .btn-gray-700:active,html .btn-gray-700.active,.show>html .btn-gray-700.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-gray-700,.btn-check:active+html[data-netbox-color-mode=dark] .btn-gray-700,html[data-netbox-color-mode=dark] .btn-gray-700:active,html[data-netbox-color-mode=dark] .btn-gray-700.active,.show>html[data-netbox-color-mode=dark] .btn-gray-700.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-gray-700,.btn-check:active+html[data-netbox-color-mode=light] .btn-gray-700,html[data-netbox-color-mode=light] .btn-gray-700:active,html[data-netbox-color-mode=light] .btn-gray-700.active,.show>html[data-netbox-color-mode=light] .btn-gray-700.dropdown-toggle{color:#fff;background-color:#3a4046;border-color:#373c41}.btn-check:checked+html .btn-gray-700:focus,.btn-check:active+html .btn-gray-700:focus,html .btn-gray-700:active:focus,html .btn-gray-700.active:focus,.show>html .btn-gray-700.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-gray-700:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-gray-700:focus,html[data-netbox-color-mode=dark] .btn-gray-700:active:focus,html[data-netbox-color-mode=dark] .btn-gray-700.active:focus,.show>html[data-netbox-color-mode=dark] .btn-gray-700.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-gray-700:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-gray-700:focus,html[data-netbox-color-mode=light] .btn-gray-700:active:focus,html[data-netbox-color-mode=light] .btn-gray-700.active:focus,.show>html[data-netbox-color-mode=light] .btn-gray-700.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #646a7080}html .btn-gray-700:disabled,html .btn-gray-700.disabled,html[data-netbox-color-mode=dark] .btn-gray-700:disabled,html[data-netbox-color-mode=dark] .btn-gray-700.disabled,html[data-netbox-color-mode=light] .btn-gray-700:disabled,html[data-netbox-color-mode=light] .btn-gray-700.disabled{color:#fff;background-color:#495057;border-color:#495057}}@media print{html .btn-gray-800,html[data-netbox-color-mode=dark] .btn-gray-800,html[data-netbox-color-mode=light] .btn-gray-800{color:#fff;background-color:#343a40;border-color:#343a40}html .btn-gray-800:hover,html[data-netbox-color-mode=dark] .btn-gray-800:hover,html[data-netbox-color-mode=light] .btn-gray-800:hover{color:#fff;background-color:#2c3136;border-color:#2a2e33}.btn-check:focus+html .btn-gray-800,html .btn-gray-800:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-gray-800,html[data-netbox-color-mode=dark] .btn-gray-800:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-gray-800,html[data-netbox-color-mode=light] .btn-gray-800:focus{color:#fff;background-color:#2c3136;border-color:#2a2e33;box-shadow:0 0 0 .25rem #52585d80}.btn-check:checked+html .btn-gray-800,.btn-check:active+html .btn-gray-800,html .btn-gray-800:active,html .btn-gray-800.active,.show>html .btn-gray-800.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-gray-800,.btn-check:active+html[data-netbox-color-mode=dark] .btn-gray-800,html[data-netbox-color-mode=dark] .btn-gray-800:active,html[data-netbox-color-mode=dark] .btn-gray-800.active,.show>html[data-netbox-color-mode=dark] .btn-gray-800.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-gray-800,.btn-check:active+html[data-netbox-color-mode=light] .btn-gray-800,html[data-netbox-color-mode=light] .btn-gray-800:active,html[data-netbox-color-mode=light] .btn-gray-800.active,.show>html[data-netbox-color-mode=light] .btn-gray-800.dropdown-toggle{color:#fff;background-color:#2a2e33;border-color:#272c30}.btn-check:checked+html .btn-gray-800:focus,.btn-check:active+html .btn-gray-800:focus,html .btn-gray-800:active:focus,html .btn-gray-800.active:focus,.show>html .btn-gray-800.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-gray-800:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-gray-800:focus,html[data-netbox-color-mode=dark] .btn-gray-800:active:focus,html[data-netbox-color-mode=dark] .btn-gray-800.active:focus,.show>html[data-netbox-color-mode=dark] .btn-gray-800.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-gray-800:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-gray-800:focus,html[data-netbox-color-mode=light] .btn-gray-800:active:focus,html[data-netbox-color-mode=light] .btn-gray-800.active:focus,.show>html[data-netbox-color-mode=light] .btn-gray-800.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #52585d80}html .btn-gray-800:disabled,html .btn-gray-800.disabled,html[data-netbox-color-mode=dark] .btn-gray-800:disabled,html[data-netbox-color-mode=dark] .btn-gray-800.disabled,html[data-netbox-color-mode=light] .btn-gray-800:disabled,html[data-netbox-color-mode=light] .btn-gray-800.disabled{color:#fff;background-color:#343a40;border-color:#343a40}}@media print{html .btn-gray-900,html[data-netbox-color-mode=dark] .btn-gray-900,html[data-netbox-color-mode=light] .btn-gray-900{color:#fff;background-color:#212529;border-color:#212529}html .btn-gray-900:hover,html[data-netbox-color-mode=dark] .btn-gray-900:hover,html[data-netbox-color-mode=light] .btn-gray-900:hover{color:#fff;background-color:#1c1f23;border-color:#1a1e21}.btn-check:focus+html .btn-gray-900,html .btn-gray-900:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-gray-900,html[data-netbox-color-mode=dark] .btn-gray-900:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-gray-900,html[data-netbox-color-mode=light] .btn-gray-900:focus{color:#fff;background-color:#1c1f23;border-color:#1a1e21;box-shadow:0 0 0 .25rem #42464980}.btn-check:checked+html .btn-gray-900,.btn-check:active+html .btn-gray-900,html .btn-gray-900:active,html .btn-gray-900.active,.show>html .btn-gray-900.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-gray-900,.btn-check:active+html[data-netbox-color-mode=dark] .btn-gray-900,html[data-netbox-color-mode=dark] .btn-gray-900:active,html[data-netbox-color-mode=dark] .btn-gray-900.active,.show>html[data-netbox-color-mode=dark] .btn-gray-900.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-gray-900,.btn-check:active+html[data-netbox-color-mode=light] .btn-gray-900,html[data-netbox-color-mode=light] .btn-gray-900:active,html[data-netbox-color-mode=light] .btn-gray-900.active,.show>html[data-netbox-color-mode=light] .btn-gray-900.dropdown-toggle{color:#fff;background-color:#1a1e21;border-color:#191c1f}.btn-check:checked+html .btn-gray-900:focus,.btn-check:active+html .btn-gray-900:focus,html .btn-gray-900:active:focus,html .btn-gray-900.active:focus,.show>html .btn-gray-900.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-gray-900:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-gray-900:focus,html[data-netbox-color-mode=dark] .btn-gray-900:active:focus,html[data-netbox-color-mode=dark] .btn-gray-900.active:focus,.show>html[data-netbox-color-mode=dark] .btn-gray-900.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-gray-900:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-gray-900:focus,html[data-netbox-color-mode=light] .btn-gray-900:active:focus,html[data-netbox-color-mode=light] .btn-gray-900.active:focus,.show>html[data-netbox-color-mode=light] .btn-gray-900.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #42464980}html .btn-gray-900:disabled,html .btn-gray-900.disabled,html[data-netbox-color-mode=dark] .btn-gray-900:disabled,html[data-netbox-color-mode=dark] .btn-gray-900.disabled,html[data-netbox-color-mode=light] .btn-gray-900:disabled,html[data-netbox-color-mode=light] .btn-gray-900.disabled{color:#fff;background-color:#212529;border-color:#212529}}@media print{html .btn-red-100,html[data-netbox-color-mode=dark] .btn-red-100,html[data-netbox-color-mode=light] .btn-red-100{color:#000;background-color:#f8d7da;border-color:#f8d7da}html .btn-red-100:hover,html[data-netbox-color-mode=dark] .btn-red-100:hover,html[data-netbox-color-mode=light] .btn-red-100:hover{color:#000;background-color:#f9dde0;border-color:#f9dbde}.btn-check:focus+html .btn-red-100,html .btn-red-100:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-red-100,html[data-netbox-color-mode=dark] .btn-red-100:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-red-100,html[data-netbox-color-mode=light] .btn-red-100:focus{color:#000;background-color:#f9dde0;border-color:#f9dbde;box-shadow:0 0 0 .25rem #d3b7b980}.btn-check:checked+html .btn-red-100,.btn-check:active+html .btn-red-100,html .btn-red-100:active,html .btn-red-100.active,.show>html .btn-red-100.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-red-100,.btn-check:active+html[data-netbox-color-mode=dark] .btn-red-100,html[data-netbox-color-mode=dark] .btn-red-100:active,html[data-netbox-color-mode=dark] .btn-red-100.active,.show>html[data-netbox-color-mode=dark] .btn-red-100.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-red-100,.btn-check:active+html[data-netbox-color-mode=light] .btn-red-100,html[data-netbox-color-mode=light] .btn-red-100:active,html[data-netbox-color-mode=light] .btn-red-100.active,.show>html[data-netbox-color-mode=light] .btn-red-100.dropdown-toggle{color:#000;background-color:#f9dfe1;border-color:#f9dbde}.btn-check:checked+html .btn-red-100:focus,.btn-check:active+html .btn-red-100:focus,html .btn-red-100:active:focus,html .btn-red-100.active:focus,.show>html .btn-red-100.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-red-100:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-red-100:focus,html[data-netbox-color-mode=dark] .btn-red-100:active:focus,html[data-netbox-color-mode=dark] .btn-red-100.active:focus,.show>html[data-netbox-color-mode=dark] .btn-red-100.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-red-100:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-red-100:focus,html[data-netbox-color-mode=light] .btn-red-100:active:focus,html[data-netbox-color-mode=light] .btn-red-100.active:focus,.show>html[data-netbox-color-mode=light] .btn-red-100.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #d3b7b980}html .btn-red-100:disabled,html .btn-red-100.disabled,html[data-netbox-color-mode=dark] .btn-red-100:disabled,html[data-netbox-color-mode=dark] .btn-red-100.disabled,html[data-netbox-color-mode=light] .btn-red-100:disabled,html[data-netbox-color-mode=light] .btn-red-100.disabled{color:#000;background-color:#f8d7da;border-color:#f8d7da}}@media print{html .btn-red-200,html[data-netbox-color-mode=dark] .btn-red-200,html[data-netbox-color-mode=light] .btn-red-200{color:#000;background-color:#f1aeb5;border-color:#f1aeb5}html .btn-red-200:hover,html[data-netbox-color-mode=dark] .btn-red-200:hover,html[data-netbox-color-mode=light] .btn-red-200:hover{color:#000;background-color:#f3bac0;border-color:#f2b6bc}.btn-check:focus+html .btn-red-200,html .btn-red-200:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-red-200,html[data-netbox-color-mode=dark] .btn-red-200:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-red-200,html[data-netbox-color-mode=light] .btn-red-200:focus{color:#000;background-color:#f3bac0;border-color:#f2b6bc;box-shadow:0 0 0 .25rem #cd949a80}.btn-check:checked+html .btn-red-200,.btn-check:active+html .btn-red-200,html .btn-red-200:active,html .btn-red-200.active,.show>html .btn-red-200.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-red-200,.btn-check:active+html[data-netbox-color-mode=dark] .btn-red-200,html[data-netbox-color-mode=dark] .btn-red-200:active,html[data-netbox-color-mode=dark] .btn-red-200.active,.show>html[data-netbox-color-mode=dark] .btn-red-200.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-red-200,.btn-check:active+html[data-netbox-color-mode=light] .btn-red-200,html[data-netbox-color-mode=light] .btn-red-200:active,html[data-netbox-color-mode=light] .btn-red-200.active,.show>html[data-netbox-color-mode=light] .btn-red-200.dropdown-toggle{color:#000;background-color:#f4bec4;border-color:#f2b6bc}.btn-check:checked+html .btn-red-200:focus,.btn-check:active+html .btn-red-200:focus,html .btn-red-200:active:focus,html .btn-red-200.active:focus,.show>html .btn-red-200.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-red-200:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-red-200:focus,html[data-netbox-color-mode=dark] .btn-red-200:active:focus,html[data-netbox-color-mode=dark] .btn-red-200.active:focus,.show>html[data-netbox-color-mode=dark] .btn-red-200.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-red-200:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-red-200:focus,html[data-netbox-color-mode=light] .btn-red-200:active:focus,html[data-netbox-color-mode=light] .btn-red-200.active:focus,.show>html[data-netbox-color-mode=light] .btn-red-200.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #cd949a80}html .btn-red-200:disabled,html .btn-red-200.disabled,html[data-netbox-color-mode=dark] .btn-red-200:disabled,html[data-netbox-color-mode=dark] .btn-red-200.disabled,html[data-netbox-color-mode=light] .btn-red-200:disabled,html[data-netbox-color-mode=light] .btn-red-200.disabled{color:#000;background-color:#f1aeb5;border-color:#f1aeb5}}@media print{html .btn-red-300,html[data-netbox-color-mode=dark] .btn-red-300,html[data-netbox-color-mode=light] .btn-red-300{color:#000;background-color:#ea868f;border-color:#ea868f}html .btn-red-300:hover,html[data-netbox-color-mode=dark] .btn-red-300:hover,html[data-netbox-color-mode=light] .btn-red-300:hover{color:#000;background-color:#ed98a0;border-color:#ec929a}.btn-check:focus+html .btn-red-300,html .btn-red-300:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-red-300,html[data-netbox-color-mode=dark] .btn-red-300:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-red-300,html[data-netbox-color-mode=light] .btn-red-300:focus{color:#000;background-color:#ed98a0;border-color:#ec929a;box-shadow:0 0 0 .25rem #c7727a80}.btn-check:checked+html .btn-red-300,.btn-check:active+html .btn-red-300,html .btn-red-300:active,html .btn-red-300.active,.show>html .btn-red-300.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-red-300,.btn-check:active+html[data-netbox-color-mode=dark] .btn-red-300,html[data-netbox-color-mode=dark] .btn-red-300:active,html[data-netbox-color-mode=dark] .btn-red-300.active,.show>html[data-netbox-color-mode=dark] .btn-red-300.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-red-300,.btn-check:active+html[data-netbox-color-mode=light] .btn-red-300,html[data-netbox-color-mode=light] .btn-red-300:active,html[data-netbox-color-mode=light] .btn-red-300.active,.show>html[data-netbox-color-mode=light] .btn-red-300.dropdown-toggle{color:#000;background-color:#ee9ea5;border-color:#ec929a}.btn-check:checked+html .btn-red-300:focus,.btn-check:active+html .btn-red-300:focus,html .btn-red-300:active:focus,html .btn-red-300.active:focus,.show>html .btn-red-300.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-red-300:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-red-300:focus,html[data-netbox-color-mode=dark] .btn-red-300:active:focus,html[data-netbox-color-mode=dark] .btn-red-300.active:focus,.show>html[data-netbox-color-mode=dark] .btn-red-300.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-red-300:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-red-300:focus,html[data-netbox-color-mode=light] .btn-red-300:active:focus,html[data-netbox-color-mode=light] .btn-red-300.active:focus,.show>html[data-netbox-color-mode=light] .btn-red-300.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #c7727a80}html .btn-red-300:disabled,html .btn-red-300.disabled,html[data-netbox-color-mode=dark] .btn-red-300:disabled,html[data-netbox-color-mode=dark] .btn-red-300.disabled,html[data-netbox-color-mode=light] .btn-red-300:disabled,html[data-netbox-color-mode=light] .btn-red-300.disabled{color:#000;background-color:#ea868f;border-color:#ea868f}}@media print{html .btn-red-400,html[data-netbox-color-mode=dark] .btn-red-400,html[data-netbox-color-mode=light] .btn-red-400{color:#000;background-color:#e35d6a;border-color:#e35d6a}html .btn-red-400:hover,html[data-netbox-color-mode=dark] .btn-red-400:hover,html[data-netbox-color-mode=light] .btn-red-400:hover{color:#000;background-color:#e77580;border-color:#e66d79}.btn-check:focus+html .btn-red-400,html .btn-red-400:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-red-400,html[data-netbox-color-mode=dark] .btn-red-400:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-red-400,html[data-netbox-color-mode=light] .btn-red-400:focus{color:#000;background-color:#e77580;border-color:#e66d79;box-shadow:0 0 0 .25rem #c14f5a80}.btn-check:checked+html .btn-red-400,.btn-check:active+html .btn-red-400,html .btn-red-400:active,html .btn-red-400.active,.show>html .btn-red-400.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-red-400,.btn-check:active+html[data-netbox-color-mode=dark] .btn-red-400,html[data-netbox-color-mode=dark] .btn-red-400:active,html[data-netbox-color-mode=dark] .btn-red-400.active,.show>html[data-netbox-color-mode=dark] .btn-red-400.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-red-400,.btn-check:active+html[data-netbox-color-mode=light] .btn-red-400,html[data-netbox-color-mode=light] .btn-red-400:active,html[data-netbox-color-mode=light] .btn-red-400.active,.show>html[data-netbox-color-mode=light] .btn-red-400.dropdown-toggle{color:#000;background-color:#e97d88;border-color:#e66d79}.btn-check:checked+html .btn-red-400:focus,.btn-check:active+html .btn-red-400:focus,html .btn-red-400:active:focus,html .btn-red-400.active:focus,.show>html .btn-red-400.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-red-400:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-red-400:focus,html[data-netbox-color-mode=dark] .btn-red-400:active:focus,html[data-netbox-color-mode=dark] .btn-red-400.active:focus,.show>html[data-netbox-color-mode=dark] .btn-red-400.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-red-400:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-red-400:focus,html[data-netbox-color-mode=light] .btn-red-400:active:focus,html[data-netbox-color-mode=light] .btn-red-400.active:focus,.show>html[data-netbox-color-mode=light] .btn-red-400.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #c14f5a80}html .btn-red-400:disabled,html .btn-red-400.disabled,html[data-netbox-color-mode=dark] .btn-red-400:disabled,html[data-netbox-color-mode=dark] .btn-red-400.disabled,html[data-netbox-color-mode=light] .btn-red-400:disabled,html[data-netbox-color-mode=light] .btn-red-400.disabled{color:#000;background-color:#e35d6a;border-color:#e35d6a}}@media print{html .btn-red-500,html[data-netbox-color-mode=dark] .btn-red-500,html[data-netbox-color-mode=light] .btn-red-500{color:#fff;background-color:#dc3545;border-color:#dc3545}html .btn-red-500:hover,html[data-netbox-color-mode=dark] .btn-red-500:hover,html[data-netbox-color-mode=light] .btn-red-500:hover{color:#fff;background-color:#bb2d3b;border-color:#b02a37}.btn-check:focus+html .btn-red-500,html .btn-red-500:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-red-500,html[data-netbox-color-mode=dark] .btn-red-500:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-red-500,html[data-netbox-color-mode=light] .btn-red-500:focus{color:#fff;background-color:#bb2d3b;border-color:#b02a37;box-shadow:0 0 0 .25rem #e1536180}.btn-check:checked+html .btn-red-500,.btn-check:active+html .btn-red-500,html .btn-red-500:active,html .btn-red-500.active,.show>html .btn-red-500.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-red-500,.btn-check:active+html[data-netbox-color-mode=dark] .btn-red-500,html[data-netbox-color-mode=dark] .btn-red-500:active,html[data-netbox-color-mode=dark] .btn-red-500.active,.show>html[data-netbox-color-mode=dark] .btn-red-500.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-red-500,.btn-check:active+html[data-netbox-color-mode=light] .btn-red-500,html[data-netbox-color-mode=light] .btn-red-500:active,html[data-netbox-color-mode=light] .btn-red-500.active,.show>html[data-netbox-color-mode=light] .btn-red-500.dropdown-toggle{color:#fff;background-color:#b02a37;border-color:#a52834}.btn-check:checked+html .btn-red-500:focus,.btn-check:active+html .btn-red-500:focus,html .btn-red-500:active:focus,html .btn-red-500.active:focus,.show>html .btn-red-500.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-red-500:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-red-500:focus,html[data-netbox-color-mode=dark] .btn-red-500:active:focus,html[data-netbox-color-mode=dark] .btn-red-500.active:focus,.show>html[data-netbox-color-mode=dark] .btn-red-500.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-red-500:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-red-500:focus,html[data-netbox-color-mode=light] .btn-red-500:active:focus,html[data-netbox-color-mode=light] .btn-red-500.active:focus,.show>html[data-netbox-color-mode=light] .btn-red-500.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #e1536180}html .btn-red-500:disabled,html .btn-red-500.disabled,html[data-netbox-color-mode=dark] .btn-red-500:disabled,html[data-netbox-color-mode=dark] .btn-red-500.disabled,html[data-netbox-color-mode=light] .btn-red-500:disabled,html[data-netbox-color-mode=light] .btn-red-500.disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}}@media print{html .btn-red-600,html[data-netbox-color-mode=dark] .btn-red-600,html[data-netbox-color-mode=light] .btn-red-600{color:#fff;background-color:#b02a37;border-color:#b02a37}html .btn-red-600:hover,html[data-netbox-color-mode=dark] .btn-red-600:hover,html[data-netbox-color-mode=light] .btn-red-600:hover{color:#fff;background-color:#96242f;border-color:#8d222c}.btn-check:focus+html .btn-red-600,html .btn-red-600:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-red-600,html[data-netbox-color-mode=dark] .btn-red-600:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-red-600,html[data-netbox-color-mode=light] .btn-red-600:focus{color:#fff;background-color:#96242f;border-color:#8d222c;box-shadow:0 0 0 .25rem #bc4a5580}.btn-check:checked+html .btn-red-600,.btn-check:active+html .btn-red-600,html .btn-red-600:active,html .btn-red-600.active,.show>html .btn-red-600.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-red-600,.btn-check:active+html[data-netbox-color-mode=dark] .btn-red-600,html[data-netbox-color-mode=dark] .btn-red-600:active,html[data-netbox-color-mode=dark] .btn-red-600.active,.show>html[data-netbox-color-mode=dark] .btn-red-600.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-red-600,.btn-check:active+html[data-netbox-color-mode=light] .btn-red-600,html[data-netbox-color-mode=light] .btn-red-600:active,html[data-netbox-color-mode=light] .btn-red-600.active,.show>html[data-netbox-color-mode=light] .btn-red-600.dropdown-toggle{color:#fff;background-color:#8d222c;border-color:#842029}.btn-check:checked+html .btn-red-600:focus,.btn-check:active+html .btn-red-600:focus,html .btn-red-600:active:focus,html .btn-red-600.active:focus,.show>html .btn-red-600.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-red-600:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-red-600:focus,html[data-netbox-color-mode=dark] .btn-red-600:active:focus,html[data-netbox-color-mode=dark] .btn-red-600.active:focus,.show>html[data-netbox-color-mode=dark] .btn-red-600.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-red-600:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-red-600:focus,html[data-netbox-color-mode=light] .btn-red-600:active:focus,html[data-netbox-color-mode=light] .btn-red-600.active:focus,.show>html[data-netbox-color-mode=light] .btn-red-600.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #bc4a5580}html .btn-red-600:disabled,html .btn-red-600.disabled,html[data-netbox-color-mode=dark] .btn-red-600:disabled,html[data-netbox-color-mode=dark] .btn-red-600.disabled,html[data-netbox-color-mode=light] .btn-red-600:disabled,html[data-netbox-color-mode=light] .btn-red-600.disabled{color:#fff;background-color:#b02a37;border-color:#b02a37}}@media print{html .btn-red-700,html[data-netbox-color-mode=dark] .btn-red-700,html[data-netbox-color-mode=light] .btn-red-700{color:#fff;background-color:#842029;border-color:#842029}html .btn-red-700:hover,html[data-netbox-color-mode=dark] .btn-red-700:hover,html[data-netbox-color-mode=light] .btn-red-700:hover{color:#fff;background-color:#701b23;border-color:#6a1a21}.btn-check:focus+html .btn-red-700,html .btn-red-700:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-red-700,html[data-netbox-color-mode=dark] .btn-red-700:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-red-700,html[data-netbox-color-mode=light] .btn-red-700:focus{color:#fff;background-color:#701b23;border-color:#6a1a21;box-shadow:0 0 0 .25rem #96414980}.btn-check:checked+html .btn-red-700,.btn-check:active+html .btn-red-700,html .btn-red-700:active,html .btn-red-700.active,.show>html .btn-red-700.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-red-700,.btn-check:active+html[data-netbox-color-mode=dark] .btn-red-700,html[data-netbox-color-mode=dark] .btn-red-700:active,html[data-netbox-color-mode=dark] .btn-red-700.active,.show>html[data-netbox-color-mode=dark] .btn-red-700.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-red-700,.btn-check:active+html[data-netbox-color-mode=light] .btn-red-700,html[data-netbox-color-mode=light] .btn-red-700:active,html[data-netbox-color-mode=light] .btn-red-700.active,.show>html[data-netbox-color-mode=light] .btn-red-700.dropdown-toggle{color:#fff;background-color:#6a1a21;border-color:#63181f}.btn-check:checked+html .btn-red-700:focus,.btn-check:active+html .btn-red-700:focus,html .btn-red-700:active:focus,html .btn-red-700.active:focus,.show>html .btn-red-700.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-red-700:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-red-700:focus,html[data-netbox-color-mode=dark] .btn-red-700:active:focus,html[data-netbox-color-mode=dark] .btn-red-700.active:focus,.show>html[data-netbox-color-mode=dark] .btn-red-700.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-red-700:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-red-700:focus,html[data-netbox-color-mode=light] .btn-red-700:active:focus,html[data-netbox-color-mode=light] .btn-red-700.active:focus,.show>html[data-netbox-color-mode=light] .btn-red-700.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #96414980}html .btn-red-700:disabled,html .btn-red-700.disabled,html[data-netbox-color-mode=dark] .btn-red-700:disabled,html[data-netbox-color-mode=dark] .btn-red-700.disabled,html[data-netbox-color-mode=light] .btn-red-700:disabled,html[data-netbox-color-mode=light] .btn-red-700.disabled{color:#fff;background-color:#842029;border-color:#842029}}@media print{html .btn-red-800,html[data-netbox-color-mode=dark] .btn-red-800,html[data-netbox-color-mode=light] .btn-red-800{color:#fff;background-color:#58151c;border-color:#58151c}html .btn-red-800:hover,html[data-netbox-color-mode=dark] .btn-red-800:hover,html[data-netbox-color-mode=light] .btn-red-800:hover{color:#fff;background-color:#4b1218;border-color:#461116}.btn-check:focus+html .btn-red-800,html .btn-red-800:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-red-800,html[data-netbox-color-mode=dark] .btn-red-800:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-red-800,html[data-netbox-color-mode=light] .btn-red-800:focus{color:#fff;background-color:#4b1218;border-color:#461116;box-shadow:0 0 0 .25rem #71383e80}.btn-check:checked+html .btn-red-800,.btn-check:active+html .btn-red-800,html .btn-red-800:active,html .btn-red-800.active,.show>html .btn-red-800.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-red-800,.btn-check:active+html[data-netbox-color-mode=dark] .btn-red-800,html[data-netbox-color-mode=dark] .btn-red-800:active,html[data-netbox-color-mode=dark] .btn-red-800.active,.show>html[data-netbox-color-mode=dark] .btn-red-800.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-red-800,.btn-check:active+html[data-netbox-color-mode=light] .btn-red-800,html[data-netbox-color-mode=light] .btn-red-800:active,html[data-netbox-color-mode=light] .btn-red-800.active,.show>html[data-netbox-color-mode=light] .btn-red-800.dropdown-toggle{color:#fff;background-color:#461116;border-color:#421015}.btn-check:checked+html .btn-red-800:focus,.btn-check:active+html .btn-red-800:focus,html .btn-red-800:active:focus,html .btn-red-800.active:focus,.show>html .btn-red-800.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-red-800:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-red-800:focus,html[data-netbox-color-mode=dark] .btn-red-800:active:focus,html[data-netbox-color-mode=dark] .btn-red-800.active:focus,.show>html[data-netbox-color-mode=dark] .btn-red-800.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-red-800:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-red-800:focus,html[data-netbox-color-mode=light] .btn-red-800:active:focus,html[data-netbox-color-mode=light] .btn-red-800.active:focus,.show>html[data-netbox-color-mode=light] .btn-red-800.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #71383e80}html .btn-red-800:disabled,html .btn-red-800.disabled,html[data-netbox-color-mode=dark] .btn-red-800:disabled,html[data-netbox-color-mode=dark] .btn-red-800.disabled,html[data-netbox-color-mode=light] .btn-red-800:disabled,html[data-netbox-color-mode=light] .btn-red-800.disabled{color:#fff;background-color:#58151c;border-color:#58151c}}@media print{html .btn-red-900,html[data-netbox-color-mode=dark] .btn-red-900,html[data-netbox-color-mode=light] .btn-red-900{color:#fff;background-color:#2c0b0e;border-color:#2c0b0e}html .btn-red-900:hover,html[data-netbox-color-mode=dark] .btn-red-900:hover,html[data-netbox-color-mode=light] .btn-red-900:hover{color:#fff;background-color:#25090c;border-color:#23090b}.btn-check:focus+html .btn-red-900,html .btn-red-900:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-red-900,html[data-netbox-color-mode=dark] .btn-red-900:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-red-900,html[data-netbox-color-mode=light] .btn-red-900:focus{color:#fff;background-color:#25090c;border-color:#23090b;box-shadow:0 0 0 .25rem #4c303280}.btn-check:checked+html .btn-red-900,.btn-check:active+html .btn-red-900,html .btn-red-900:active,html .btn-red-900.active,.show>html .btn-red-900.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-red-900,.btn-check:active+html[data-netbox-color-mode=dark] .btn-red-900,html[data-netbox-color-mode=dark] .btn-red-900:active,html[data-netbox-color-mode=dark] .btn-red-900.active,.show>html[data-netbox-color-mode=dark] .btn-red-900.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-red-900,.btn-check:active+html[data-netbox-color-mode=light] .btn-red-900,html[data-netbox-color-mode=light] .btn-red-900:active,html[data-netbox-color-mode=light] .btn-red-900.active,.show>html[data-netbox-color-mode=light] .btn-red-900.dropdown-toggle{color:#fff;background-color:#23090b;border-color:#21080b}.btn-check:checked+html .btn-red-900:focus,.btn-check:active+html .btn-red-900:focus,html .btn-red-900:active:focus,html .btn-red-900.active:focus,.show>html .btn-red-900.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-red-900:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-red-900:focus,html[data-netbox-color-mode=dark] .btn-red-900:active:focus,html[data-netbox-color-mode=dark] .btn-red-900.active:focus,.show>html[data-netbox-color-mode=dark] .btn-red-900.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-red-900:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-red-900:focus,html[data-netbox-color-mode=light] .btn-red-900:active:focus,html[data-netbox-color-mode=light] .btn-red-900.active:focus,.show>html[data-netbox-color-mode=light] .btn-red-900.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #4c303280}html .btn-red-900:disabled,html .btn-red-900.disabled,html[data-netbox-color-mode=dark] .btn-red-900:disabled,html[data-netbox-color-mode=dark] .btn-red-900.disabled,html[data-netbox-color-mode=light] .btn-red-900:disabled,html[data-netbox-color-mode=light] .btn-red-900.disabled{color:#fff;background-color:#2c0b0e;border-color:#2c0b0e}}@media print{html .btn-yellow-100,html[data-netbox-color-mode=dark] .btn-yellow-100,html[data-netbox-color-mode=light] .btn-yellow-100{color:#000;background-color:#fff3cd;border-color:#fff3cd}html .btn-yellow-100:hover,html[data-netbox-color-mode=dark] .btn-yellow-100:hover,html[data-netbox-color-mode=light] .btn-yellow-100:hover{color:#000;background-color:#fff5d5;border-color:#fff4d2}.btn-check:focus+html .btn-yellow-100,html .btn-yellow-100:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-yellow-100,html[data-netbox-color-mode=dark] .btn-yellow-100:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-yellow-100,html[data-netbox-color-mode=light] .btn-yellow-100:focus{color:#000;background-color:#fff5d5;border-color:#fff4d2;box-shadow:0 0 0 .25rem #d9cfae80}.btn-check:checked+html .btn-yellow-100,.btn-check:active+html .btn-yellow-100,html .btn-yellow-100:active,html .btn-yellow-100.active,.show>html .btn-yellow-100.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-yellow-100,.btn-check:active+html[data-netbox-color-mode=dark] .btn-yellow-100,html[data-netbox-color-mode=dark] .btn-yellow-100:active,html[data-netbox-color-mode=dark] .btn-yellow-100.active,.show>html[data-netbox-color-mode=dark] .btn-yellow-100.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-yellow-100,.btn-check:active+html[data-netbox-color-mode=light] .btn-yellow-100,html[data-netbox-color-mode=light] .btn-yellow-100:active,html[data-netbox-color-mode=light] .btn-yellow-100.active,.show>html[data-netbox-color-mode=light] .btn-yellow-100.dropdown-toggle{color:#000;background-color:#fff5d7;border-color:#fff4d2}.btn-check:checked+html .btn-yellow-100:focus,.btn-check:active+html .btn-yellow-100:focus,html .btn-yellow-100:active:focus,html .btn-yellow-100.active:focus,.show>html .btn-yellow-100.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-yellow-100:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-yellow-100:focus,html[data-netbox-color-mode=dark] .btn-yellow-100:active:focus,html[data-netbox-color-mode=dark] .btn-yellow-100.active:focus,.show>html[data-netbox-color-mode=dark] .btn-yellow-100.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-yellow-100:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-yellow-100:focus,html[data-netbox-color-mode=light] .btn-yellow-100:active:focus,html[data-netbox-color-mode=light] .btn-yellow-100.active:focus,.show>html[data-netbox-color-mode=light] .btn-yellow-100.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #d9cfae80}html .btn-yellow-100:disabled,html .btn-yellow-100.disabled,html[data-netbox-color-mode=dark] .btn-yellow-100:disabled,html[data-netbox-color-mode=dark] .btn-yellow-100.disabled,html[data-netbox-color-mode=light] .btn-yellow-100:disabled,html[data-netbox-color-mode=light] .btn-yellow-100.disabled{color:#000;background-color:#fff3cd;border-color:#fff3cd}}@media print{html .btn-yellow-200,html[data-netbox-color-mode=dark] .btn-yellow-200,html[data-netbox-color-mode=light] .btn-yellow-200{color:#000;background-color:#ffe69c;border-color:#ffe69c}html .btn-yellow-200:hover,html[data-netbox-color-mode=dark] .btn-yellow-200:hover,html[data-netbox-color-mode=light] .btn-yellow-200:hover{color:#000;background-color:#ffeaab;border-color:#ffe9a6}.btn-check:focus+html .btn-yellow-200,html .btn-yellow-200:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-yellow-200,html[data-netbox-color-mode=dark] .btn-yellow-200:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-yellow-200,html[data-netbox-color-mode=light] .btn-yellow-200:focus{color:#000;background-color:#ffeaab;border-color:#ffe9a6;box-shadow:0 0 0 .25rem #d9c48580}.btn-check:checked+html .btn-yellow-200,.btn-check:active+html .btn-yellow-200,html .btn-yellow-200:active,html .btn-yellow-200.active,.show>html .btn-yellow-200.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-yellow-200,.btn-check:active+html[data-netbox-color-mode=dark] .btn-yellow-200,html[data-netbox-color-mode=dark] .btn-yellow-200:active,html[data-netbox-color-mode=dark] .btn-yellow-200.active,.show>html[data-netbox-color-mode=dark] .btn-yellow-200.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-yellow-200,.btn-check:active+html[data-netbox-color-mode=light] .btn-yellow-200,html[data-netbox-color-mode=light] .btn-yellow-200:active,html[data-netbox-color-mode=light] .btn-yellow-200.active,.show>html[data-netbox-color-mode=light] .btn-yellow-200.dropdown-toggle{color:#000;background-color:#ffebb0;border-color:#ffe9a6}.btn-check:checked+html .btn-yellow-200:focus,.btn-check:active+html .btn-yellow-200:focus,html .btn-yellow-200:active:focus,html .btn-yellow-200.active:focus,.show>html .btn-yellow-200.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-yellow-200:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-yellow-200:focus,html[data-netbox-color-mode=dark] .btn-yellow-200:active:focus,html[data-netbox-color-mode=dark] .btn-yellow-200.active:focus,.show>html[data-netbox-color-mode=dark] .btn-yellow-200.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-yellow-200:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-yellow-200:focus,html[data-netbox-color-mode=light] .btn-yellow-200:active:focus,html[data-netbox-color-mode=light] .btn-yellow-200.active:focus,.show>html[data-netbox-color-mode=light] .btn-yellow-200.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #d9c48580}html .btn-yellow-200:disabled,html .btn-yellow-200.disabled,html[data-netbox-color-mode=dark] .btn-yellow-200:disabled,html[data-netbox-color-mode=dark] .btn-yellow-200.disabled,html[data-netbox-color-mode=light] .btn-yellow-200:disabled,html[data-netbox-color-mode=light] .btn-yellow-200.disabled{color:#000;background-color:#ffe69c;border-color:#ffe69c}}@media print{html .btn-yellow-300,html[data-netbox-color-mode=dark] .btn-yellow-300,html[data-netbox-color-mode=light] .btn-yellow-300{color:#000;background-color:#ffda6a;border-color:#ffda6a}html .btn-yellow-300:hover,html[data-netbox-color-mode=dark] .btn-yellow-300:hover,html[data-netbox-color-mode=light] .btn-yellow-300:hover{color:#000;background-color:#ffe080;border-color:#ffde79}.btn-check:focus+html .btn-yellow-300,html .btn-yellow-300:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-yellow-300,html[data-netbox-color-mode=dark] .btn-yellow-300:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-yellow-300,html[data-netbox-color-mode=light] .btn-yellow-300:focus{color:#000;background-color:#ffe080;border-color:#ffde79;box-shadow:0 0 0 .25rem #d9b95a80}.btn-check:checked+html .btn-yellow-300,.btn-check:active+html .btn-yellow-300,html .btn-yellow-300:active,html .btn-yellow-300.active,.show>html .btn-yellow-300.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-yellow-300,.btn-check:active+html[data-netbox-color-mode=dark] .btn-yellow-300,html[data-netbox-color-mode=dark] .btn-yellow-300:active,html[data-netbox-color-mode=dark] .btn-yellow-300.active,.show>html[data-netbox-color-mode=dark] .btn-yellow-300.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-yellow-300,.btn-check:active+html[data-netbox-color-mode=light] .btn-yellow-300,html[data-netbox-color-mode=light] .btn-yellow-300:active,html[data-netbox-color-mode=light] .btn-yellow-300.active,.show>html[data-netbox-color-mode=light] .btn-yellow-300.dropdown-toggle{color:#000;background-color:#ffe188;border-color:#ffde79}.btn-check:checked+html .btn-yellow-300:focus,.btn-check:active+html .btn-yellow-300:focus,html .btn-yellow-300:active:focus,html .btn-yellow-300.active:focus,.show>html .btn-yellow-300.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-yellow-300:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-yellow-300:focus,html[data-netbox-color-mode=dark] .btn-yellow-300:active:focus,html[data-netbox-color-mode=dark] .btn-yellow-300.active:focus,.show>html[data-netbox-color-mode=dark] .btn-yellow-300.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-yellow-300:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-yellow-300:focus,html[data-netbox-color-mode=light] .btn-yellow-300:active:focus,html[data-netbox-color-mode=light] .btn-yellow-300.active:focus,.show>html[data-netbox-color-mode=light] .btn-yellow-300.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #d9b95a80}html .btn-yellow-300:disabled,html .btn-yellow-300.disabled,html[data-netbox-color-mode=dark] .btn-yellow-300:disabled,html[data-netbox-color-mode=dark] .btn-yellow-300.disabled,html[data-netbox-color-mode=light] .btn-yellow-300:disabled,html[data-netbox-color-mode=light] .btn-yellow-300.disabled{color:#000;background-color:#ffda6a;border-color:#ffda6a}}@media print{html .btn-yellow-400,html[data-netbox-color-mode=dark] .btn-yellow-400,html[data-netbox-color-mode=light] .btn-yellow-400{color:#000;background-color:#ffcd39;border-color:#ffcd39}html .btn-yellow-400:hover,html[data-netbox-color-mode=dark] .btn-yellow-400:hover,html[data-netbox-color-mode=light] .btn-yellow-400:hover{color:#000;background-color:#ffd557;border-color:#ffd24d}.btn-check:focus+html .btn-yellow-400,html .btn-yellow-400:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-yellow-400,html[data-netbox-color-mode=dark] .btn-yellow-400:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-yellow-400,html[data-netbox-color-mode=light] .btn-yellow-400:focus{color:#000;background-color:#ffd557;border-color:#ffd24d;box-shadow:0 0 0 .25rem #d9ae3080}.btn-check:checked+html .btn-yellow-400,.btn-check:active+html .btn-yellow-400,html .btn-yellow-400:active,html .btn-yellow-400.active,.show>html .btn-yellow-400.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-yellow-400,.btn-check:active+html[data-netbox-color-mode=dark] .btn-yellow-400,html[data-netbox-color-mode=dark] .btn-yellow-400:active,html[data-netbox-color-mode=dark] .btn-yellow-400.active,.show>html[data-netbox-color-mode=dark] .btn-yellow-400.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-yellow-400,.btn-check:active+html[data-netbox-color-mode=light] .btn-yellow-400,html[data-netbox-color-mode=light] .btn-yellow-400:active,html[data-netbox-color-mode=light] .btn-yellow-400.active,.show>html[data-netbox-color-mode=light] .btn-yellow-400.dropdown-toggle{color:#000;background-color:#ffd761;border-color:#ffd24d}.btn-check:checked+html .btn-yellow-400:focus,.btn-check:active+html .btn-yellow-400:focus,html .btn-yellow-400:active:focus,html .btn-yellow-400.active:focus,.show>html .btn-yellow-400.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-yellow-400:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-yellow-400:focus,html[data-netbox-color-mode=dark] .btn-yellow-400:active:focus,html[data-netbox-color-mode=dark] .btn-yellow-400.active:focus,.show>html[data-netbox-color-mode=dark] .btn-yellow-400.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-yellow-400:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-yellow-400:focus,html[data-netbox-color-mode=light] .btn-yellow-400:active:focus,html[data-netbox-color-mode=light] .btn-yellow-400.active:focus,.show>html[data-netbox-color-mode=light] .btn-yellow-400.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #d9ae3080}html .btn-yellow-400:disabled,html .btn-yellow-400.disabled,html[data-netbox-color-mode=dark] .btn-yellow-400:disabled,html[data-netbox-color-mode=dark] .btn-yellow-400.disabled,html[data-netbox-color-mode=light] .btn-yellow-400:disabled,html[data-netbox-color-mode=light] .btn-yellow-400.disabled{color:#000;background-color:#ffcd39;border-color:#ffcd39}}@media print{html .btn-yellow-500,html[data-netbox-color-mode=dark] .btn-yellow-500,html[data-netbox-color-mode=light] .btn-yellow-500{color:#000;background-color:#ffc107;border-color:#ffc107}html .btn-yellow-500:hover,html[data-netbox-color-mode=dark] .btn-yellow-500:hover,html[data-netbox-color-mode=light] .btn-yellow-500:hover{color:#000;background-color:#ffca2c;border-color:#ffc720}.btn-check:focus+html .btn-yellow-500,html .btn-yellow-500:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-yellow-500,html[data-netbox-color-mode=dark] .btn-yellow-500:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-yellow-500,html[data-netbox-color-mode=light] .btn-yellow-500:focus{color:#000;background-color:#ffca2c;border-color:#ffc720;box-shadow:0 0 0 .25rem #d9a40680}.btn-check:checked+html .btn-yellow-500,.btn-check:active+html .btn-yellow-500,html .btn-yellow-500:active,html .btn-yellow-500.active,.show>html .btn-yellow-500.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-yellow-500,.btn-check:active+html[data-netbox-color-mode=dark] .btn-yellow-500,html[data-netbox-color-mode=dark] .btn-yellow-500:active,html[data-netbox-color-mode=dark] .btn-yellow-500.active,.show>html[data-netbox-color-mode=dark] .btn-yellow-500.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-yellow-500,.btn-check:active+html[data-netbox-color-mode=light] .btn-yellow-500,html[data-netbox-color-mode=light] .btn-yellow-500:active,html[data-netbox-color-mode=light] .btn-yellow-500.active,.show>html[data-netbox-color-mode=light] .btn-yellow-500.dropdown-toggle{color:#000;background-color:#ffcd39;border-color:#ffc720}.btn-check:checked+html .btn-yellow-500:focus,.btn-check:active+html .btn-yellow-500:focus,html .btn-yellow-500:active:focus,html .btn-yellow-500.active:focus,.show>html .btn-yellow-500.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-yellow-500:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-yellow-500:focus,html[data-netbox-color-mode=dark] .btn-yellow-500:active:focus,html[data-netbox-color-mode=dark] .btn-yellow-500.active:focus,.show>html[data-netbox-color-mode=dark] .btn-yellow-500.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-yellow-500:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-yellow-500:focus,html[data-netbox-color-mode=light] .btn-yellow-500:active:focus,html[data-netbox-color-mode=light] .btn-yellow-500.active:focus,.show>html[data-netbox-color-mode=light] .btn-yellow-500.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #d9a40680}html .btn-yellow-500:disabled,html .btn-yellow-500.disabled,html[data-netbox-color-mode=dark] .btn-yellow-500:disabled,html[data-netbox-color-mode=dark] .btn-yellow-500.disabled,html[data-netbox-color-mode=light] .btn-yellow-500:disabled,html[data-netbox-color-mode=light] .btn-yellow-500.disabled{color:#000;background-color:#ffc107;border-color:#ffc107}}@media print{html .btn-yellow-600,html[data-netbox-color-mode=dark] .btn-yellow-600,html[data-netbox-color-mode=light] .btn-yellow-600{color:#000;background-color:#cc9a06;border-color:#cc9a06}html .btn-yellow-600:hover,html[data-netbox-color-mode=dark] .btn-yellow-600:hover,html[data-netbox-color-mode=light] .btn-yellow-600:hover{color:#000;background-color:#d4a92b;border-color:#d1a41f}.btn-check:focus+html .btn-yellow-600,html .btn-yellow-600:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-yellow-600,html[data-netbox-color-mode=dark] .btn-yellow-600:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-yellow-600,html[data-netbox-color-mode=light] .btn-yellow-600:focus{color:#000;background-color:#d4a92b;border-color:#d1a41f;box-shadow:0 0 0 .25rem #ad830580}.btn-check:checked+html .btn-yellow-600,.btn-check:active+html .btn-yellow-600,html .btn-yellow-600:active,html .btn-yellow-600.active,.show>html .btn-yellow-600.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-yellow-600,.btn-check:active+html[data-netbox-color-mode=dark] .btn-yellow-600,html[data-netbox-color-mode=dark] .btn-yellow-600:active,html[data-netbox-color-mode=dark] .btn-yellow-600.active,.show>html[data-netbox-color-mode=dark] .btn-yellow-600.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-yellow-600,.btn-check:active+html[data-netbox-color-mode=light] .btn-yellow-600,html[data-netbox-color-mode=light] .btn-yellow-600:active,html[data-netbox-color-mode=light] .btn-yellow-600.active,.show>html[data-netbox-color-mode=light] .btn-yellow-600.dropdown-toggle{color:#000;background-color:#d6ae38;border-color:#d1a41f}.btn-check:checked+html .btn-yellow-600:focus,.btn-check:active+html .btn-yellow-600:focus,html .btn-yellow-600:active:focus,html .btn-yellow-600.active:focus,.show>html .btn-yellow-600.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-yellow-600:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-yellow-600:focus,html[data-netbox-color-mode=dark] .btn-yellow-600:active:focus,html[data-netbox-color-mode=dark] .btn-yellow-600.active:focus,.show>html[data-netbox-color-mode=dark] .btn-yellow-600.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-yellow-600:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-yellow-600:focus,html[data-netbox-color-mode=light] .btn-yellow-600:active:focus,html[data-netbox-color-mode=light] .btn-yellow-600.active:focus,.show>html[data-netbox-color-mode=light] .btn-yellow-600.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #ad830580}html .btn-yellow-600:disabled,html .btn-yellow-600.disabled,html[data-netbox-color-mode=dark] .btn-yellow-600:disabled,html[data-netbox-color-mode=dark] .btn-yellow-600.disabled,html[data-netbox-color-mode=light] .btn-yellow-600:disabled,html[data-netbox-color-mode=light] .btn-yellow-600.disabled{color:#000;background-color:#cc9a06;border-color:#cc9a06}}@media print{html .btn-yellow-700,html[data-netbox-color-mode=dark] .btn-yellow-700,html[data-netbox-color-mode=light] .btn-yellow-700{color:#000;background-color:#997404;border-color:#997404}html .btn-yellow-700:hover,html[data-netbox-color-mode=dark] .btn-yellow-700:hover,html[data-netbox-color-mode=light] .btn-yellow-700:hover{color:#000;background-color:#a8892a;border-color:#a3821d}.btn-check:focus+html .btn-yellow-700,html .btn-yellow-700:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-yellow-700,html[data-netbox-color-mode=dark] .btn-yellow-700:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-yellow-700,html[data-netbox-color-mode=light] .btn-yellow-700:focus{color:#000;background-color:#a8892a;border-color:#a3821d;box-shadow:0 0 0 .25rem #82630380}.btn-check:checked+html .btn-yellow-700,.btn-check:active+html .btn-yellow-700,html .btn-yellow-700:active,html .btn-yellow-700.active,.show>html .btn-yellow-700.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-yellow-700,.btn-check:active+html[data-netbox-color-mode=dark] .btn-yellow-700,html[data-netbox-color-mode=dark] .btn-yellow-700:active,html[data-netbox-color-mode=dark] .btn-yellow-700.active,.show>html[data-netbox-color-mode=dark] .btn-yellow-700.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-yellow-700,.btn-check:active+html[data-netbox-color-mode=light] .btn-yellow-700,html[data-netbox-color-mode=light] .btn-yellow-700:active,html[data-netbox-color-mode=light] .btn-yellow-700.active,.show>html[data-netbox-color-mode=light] .btn-yellow-700.dropdown-toggle{color:#000;background-color:#ad9036;border-color:#a3821d}.btn-check:checked+html .btn-yellow-700:focus,.btn-check:active+html .btn-yellow-700:focus,html .btn-yellow-700:active:focus,html .btn-yellow-700.active:focus,.show>html .btn-yellow-700.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-yellow-700:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-yellow-700:focus,html[data-netbox-color-mode=dark] .btn-yellow-700:active:focus,html[data-netbox-color-mode=dark] .btn-yellow-700.active:focus,.show>html[data-netbox-color-mode=dark] .btn-yellow-700.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-yellow-700:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-yellow-700:focus,html[data-netbox-color-mode=light] .btn-yellow-700:active:focus,html[data-netbox-color-mode=light] .btn-yellow-700.active:focus,.show>html[data-netbox-color-mode=light] .btn-yellow-700.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #82630380}html .btn-yellow-700:disabled,html .btn-yellow-700.disabled,html[data-netbox-color-mode=dark] .btn-yellow-700:disabled,html[data-netbox-color-mode=dark] .btn-yellow-700.disabled,html[data-netbox-color-mode=light] .btn-yellow-700:disabled,html[data-netbox-color-mode=light] .btn-yellow-700.disabled{color:#000;background-color:#997404;border-color:#997404}}@media print{html .btn-yellow-800,html[data-netbox-color-mode=dark] .btn-yellow-800,html[data-netbox-color-mode=light] .btn-yellow-800{color:#fff;background-color:#664d03;border-color:#664d03}html .btn-yellow-800:hover,html[data-netbox-color-mode=dark] .btn-yellow-800:hover,html[data-netbox-color-mode=light] .btn-yellow-800:hover{color:#fff;background-color:#574103;border-color:#523e02}.btn-check:focus+html .btn-yellow-800,html .btn-yellow-800:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-yellow-800,html[data-netbox-color-mode=dark] .btn-yellow-800:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-yellow-800,html[data-netbox-color-mode=light] .btn-yellow-800:focus{color:#fff;background-color:#574103;border-color:#523e02;box-shadow:0 0 0 .25rem #7d682980}.btn-check:checked+html .btn-yellow-800,.btn-check:active+html .btn-yellow-800,html .btn-yellow-800:active,html .btn-yellow-800.active,.show>html .btn-yellow-800.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-yellow-800,.btn-check:active+html[data-netbox-color-mode=dark] .btn-yellow-800,html[data-netbox-color-mode=dark] .btn-yellow-800:active,html[data-netbox-color-mode=dark] .btn-yellow-800.active,.show>html[data-netbox-color-mode=dark] .btn-yellow-800.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-yellow-800,.btn-check:active+html[data-netbox-color-mode=light] .btn-yellow-800,html[data-netbox-color-mode=light] .btn-yellow-800:active,html[data-netbox-color-mode=light] .btn-yellow-800.active,.show>html[data-netbox-color-mode=light] .btn-yellow-800.dropdown-toggle{color:#fff;background-color:#523e02;border-color:#4d3a02}.btn-check:checked+html .btn-yellow-800:focus,.btn-check:active+html .btn-yellow-800:focus,html .btn-yellow-800:active:focus,html .btn-yellow-800.active:focus,.show>html .btn-yellow-800.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-yellow-800:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-yellow-800:focus,html[data-netbox-color-mode=dark] .btn-yellow-800:active:focus,html[data-netbox-color-mode=dark] .btn-yellow-800.active:focus,.show>html[data-netbox-color-mode=dark] .btn-yellow-800.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-yellow-800:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-yellow-800:focus,html[data-netbox-color-mode=light] .btn-yellow-800:active:focus,html[data-netbox-color-mode=light] .btn-yellow-800.active:focus,.show>html[data-netbox-color-mode=light] .btn-yellow-800.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #7d682980}html .btn-yellow-800:disabled,html .btn-yellow-800.disabled,html[data-netbox-color-mode=dark] .btn-yellow-800:disabled,html[data-netbox-color-mode=dark] .btn-yellow-800.disabled,html[data-netbox-color-mode=light] .btn-yellow-800:disabled,html[data-netbox-color-mode=light] .btn-yellow-800.disabled{color:#fff;background-color:#664d03;border-color:#664d03}}@media print{html .btn-yellow-900,html[data-netbox-color-mode=dark] .btn-yellow-900,html[data-netbox-color-mode=light] .btn-yellow-900{color:#fff;background-color:#332701;border-color:#332701}html .btn-yellow-900:hover,html[data-netbox-color-mode=dark] .btn-yellow-900:hover,html[data-netbox-color-mode=light] .btn-yellow-900:hover{color:#fff;background-color:#2b2101;border-color:#291f01}.btn-check:focus+html .btn-yellow-900,html .btn-yellow-900:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-yellow-900,html[data-netbox-color-mode=dark] .btn-yellow-900:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-yellow-900,html[data-netbox-color-mode=light] .btn-yellow-900:focus{color:#fff;background-color:#2b2101;border-color:#291f01;box-shadow:0 0 0 .25rem #52472780}.btn-check:checked+html .btn-yellow-900,.btn-check:active+html .btn-yellow-900,html .btn-yellow-900:active,html .btn-yellow-900.active,.show>html .btn-yellow-900.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-yellow-900,.btn-check:active+html[data-netbox-color-mode=dark] .btn-yellow-900,html[data-netbox-color-mode=dark] .btn-yellow-900:active,html[data-netbox-color-mode=dark] .btn-yellow-900.active,.show>html[data-netbox-color-mode=dark] .btn-yellow-900.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-yellow-900,.btn-check:active+html[data-netbox-color-mode=light] .btn-yellow-900,html[data-netbox-color-mode=light] .btn-yellow-900:active,html[data-netbox-color-mode=light] .btn-yellow-900.active,.show>html[data-netbox-color-mode=light] .btn-yellow-900.dropdown-toggle{color:#fff;background-color:#291f01;border-color:#261d01}.btn-check:checked+html .btn-yellow-900:focus,.btn-check:active+html .btn-yellow-900:focus,html .btn-yellow-900:active:focus,html .btn-yellow-900.active:focus,.show>html .btn-yellow-900.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-yellow-900:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-yellow-900:focus,html[data-netbox-color-mode=dark] .btn-yellow-900:active:focus,html[data-netbox-color-mode=dark] .btn-yellow-900.active:focus,.show>html[data-netbox-color-mode=dark] .btn-yellow-900.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-yellow-900:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-yellow-900:focus,html[data-netbox-color-mode=light] .btn-yellow-900:active:focus,html[data-netbox-color-mode=light] .btn-yellow-900.active:focus,.show>html[data-netbox-color-mode=light] .btn-yellow-900.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #52472780}html .btn-yellow-900:disabled,html .btn-yellow-900.disabled,html[data-netbox-color-mode=dark] .btn-yellow-900:disabled,html[data-netbox-color-mode=dark] .btn-yellow-900.disabled,html[data-netbox-color-mode=light] .btn-yellow-900:disabled,html[data-netbox-color-mode=light] .btn-yellow-900.disabled{color:#fff;background-color:#332701;border-color:#332701}}@media print{html .btn-green-100,html[data-netbox-color-mode=dark] .btn-green-100,html[data-netbox-color-mode=light] .btn-green-100{color:#000;background-color:#d1e7dd;border-color:#d1e7dd}html .btn-green-100:hover,html[data-netbox-color-mode=dark] .btn-green-100:hover,html[data-netbox-color-mode=light] .btn-green-100:hover{color:#000;background-color:#d8ebe2;border-color:#d6e9e0}.btn-check:focus+html .btn-green-100,html .btn-green-100:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-green-100,html[data-netbox-color-mode=dark] .btn-green-100:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-green-100,html[data-netbox-color-mode=light] .btn-green-100:focus{color:#000;background-color:#d8ebe2;border-color:#d6e9e0;box-shadow:0 0 0 .25rem #b2c4bc80}.btn-check:checked+html .btn-green-100,.btn-check:active+html .btn-green-100,html .btn-green-100:active,html .btn-green-100.active,.show>html .btn-green-100.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-green-100,.btn-check:active+html[data-netbox-color-mode=dark] .btn-green-100,html[data-netbox-color-mode=dark] .btn-green-100:active,html[data-netbox-color-mode=dark] .btn-green-100.active,.show>html[data-netbox-color-mode=dark] .btn-green-100.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-green-100,.btn-check:active+html[data-netbox-color-mode=light] .btn-green-100,html[data-netbox-color-mode=light] .btn-green-100:active,html[data-netbox-color-mode=light] .btn-green-100.active,.show>html[data-netbox-color-mode=light] .btn-green-100.dropdown-toggle{color:#000;background-color:#daece4;border-color:#d6e9e0}.btn-check:checked+html .btn-green-100:focus,.btn-check:active+html .btn-green-100:focus,html .btn-green-100:active:focus,html .btn-green-100.active:focus,.show>html .btn-green-100.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-green-100:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-green-100:focus,html[data-netbox-color-mode=dark] .btn-green-100:active:focus,html[data-netbox-color-mode=dark] .btn-green-100.active:focus,.show>html[data-netbox-color-mode=dark] .btn-green-100.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-green-100:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-green-100:focus,html[data-netbox-color-mode=light] .btn-green-100:active:focus,html[data-netbox-color-mode=light] .btn-green-100.active:focus,.show>html[data-netbox-color-mode=light] .btn-green-100.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #b2c4bc80}html .btn-green-100:disabled,html .btn-green-100.disabled,html[data-netbox-color-mode=dark] .btn-green-100:disabled,html[data-netbox-color-mode=dark] .btn-green-100.disabled,html[data-netbox-color-mode=light] .btn-green-100:disabled,html[data-netbox-color-mode=light] .btn-green-100.disabled{color:#000;background-color:#d1e7dd;border-color:#d1e7dd}}@media print{html .btn-green-200,html[data-netbox-color-mode=dark] .btn-green-200,html[data-netbox-color-mode=light] .btn-green-200{color:#000;background-color:#a3cfbb;border-color:#a3cfbb}html .btn-green-200:hover,html[data-netbox-color-mode=dark] .btn-green-200:hover,html[data-netbox-color-mode=light] .btn-green-200:hover{color:#000;background-color:#b1d6c5;border-color:#acd4c2}.btn-check:focus+html .btn-green-200,html .btn-green-200:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-green-200,html[data-netbox-color-mode=dark] .btn-green-200:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-green-200,html[data-netbox-color-mode=light] .btn-green-200:focus{color:#000;background-color:#b1d6c5;border-color:#acd4c2;box-shadow:0 0 0 .25rem #8bb09f80}.btn-check:checked+html .btn-green-200,.btn-check:active+html .btn-green-200,html .btn-green-200:active,html .btn-green-200.active,.show>html .btn-green-200.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-green-200,.btn-check:active+html[data-netbox-color-mode=dark] .btn-green-200,html[data-netbox-color-mode=dark] .btn-green-200:active,html[data-netbox-color-mode=dark] .btn-green-200.active,.show>html[data-netbox-color-mode=dark] .btn-green-200.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-green-200,.btn-check:active+html[data-netbox-color-mode=light] .btn-green-200,html[data-netbox-color-mode=light] .btn-green-200:active,html[data-netbox-color-mode=light] .btn-green-200.active,.show>html[data-netbox-color-mode=light] .btn-green-200.dropdown-toggle{color:#000;background-color:#b5d9c9;border-color:#acd4c2}.btn-check:checked+html .btn-green-200:focus,.btn-check:active+html .btn-green-200:focus,html .btn-green-200:active:focus,html .btn-green-200.active:focus,.show>html .btn-green-200.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-green-200:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-green-200:focus,html[data-netbox-color-mode=dark] .btn-green-200:active:focus,html[data-netbox-color-mode=dark] .btn-green-200.active:focus,.show>html[data-netbox-color-mode=dark] .btn-green-200.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-green-200:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-green-200:focus,html[data-netbox-color-mode=light] .btn-green-200:active:focus,html[data-netbox-color-mode=light] .btn-green-200.active:focus,.show>html[data-netbox-color-mode=light] .btn-green-200.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #8bb09f80}html .btn-green-200:disabled,html .btn-green-200.disabled,html[data-netbox-color-mode=dark] .btn-green-200:disabled,html[data-netbox-color-mode=dark] .btn-green-200.disabled,html[data-netbox-color-mode=light] .btn-green-200:disabled,html[data-netbox-color-mode=light] .btn-green-200.disabled{color:#000;background-color:#a3cfbb;border-color:#a3cfbb}}@media print{html .btn-green-300,html[data-netbox-color-mode=dark] .btn-green-300,html[data-netbox-color-mode=light] .btn-green-300{color:#000;background-color:#75b798;border-color:#75b798}html .btn-green-300:hover,html[data-netbox-color-mode=dark] .btn-green-300:hover,html[data-netbox-color-mode=light] .btn-green-300:hover{color:#000;background-color:#8ac2a7;border-color:#83bea2}.btn-check:focus+html .btn-green-300,html .btn-green-300:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-green-300,html[data-netbox-color-mode=dark] .btn-green-300:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-green-300,html[data-netbox-color-mode=light] .btn-green-300:focus{color:#000;background-color:#8ac2a7;border-color:#83bea2;box-shadow:0 0 0 .25rem #639c8180}.btn-check:checked+html .btn-green-300,.btn-check:active+html .btn-green-300,html .btn-green-300:active,html .btn-green-300.active,.show>html .btn-green-300.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-green-300,.btn-check:active+html[data-netbox-color-mode=dark] .btn-green-300,html[data-netbox-color-mode=dark] .btn-green-300:active,html[data-netbox-color-mode=dark] .btn-green-300.active,.show>html[data-netbox-color-mode=dark] .btn-green-300.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-green-300,.btn-check:active+html[data-netbox-color-mode=light] .btn-green-300,html[data-netbox-color-mode=light] .btn-green-300:active,html[data-netbox-color-mode=light] .btn-green-300.active,.show>html[data-netbox-color-mode=light] .btn-green-300.dropdown-toggle{color:#000;background-color:#91c5ad;border-color:#83bea2}.btn-check:checked+html .btn-green-300:focus,.btn-check:active+html .btn-green-300:focus,html .btn-green-300:active:focus,html .btn-green-300.active:focus,.show>html .btn-green-300.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-green-300:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-green-300:focus,html[data-netbox-color-mode=dark] .btn-green-300:active:focus,html[data-netbox-color-mode=dark] .btn-green-300.active:focus,.show>html[data-netbox-color-mode=dark] .btn-green-300.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-green-300:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-green-300:focus,html[data-netbox-color-mode=light] .btn-green-300:active:focus,html[data-netbox-color-mode=light] .btn-green-300.active:focus,.show>html[data-netbox-color-mode=light] .btn-green-300.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #639c8180}html .btn-green-300:disabled,html .btn-green-300.disabled,html[data-netbox-color-mode=dark] .btn-green-300:disabled,html[data-netbox-color-mode=dark] .btn-green-300.disabled,html[data-netbox-color-mode=light] .btn-green-300:disabled,html[data-netbox-color-mode=light] .btn-green-300.disabled{color:#000;background-color:#75b798;border-color:#75b798}}@media print{html .btn-green-400,html[data-netbox-color-mode=dark] .btn-green-400,html[data-netbox-color-mode=light] .btn-green-400{color:#000;background-color:#479f76;border-color:#479f76}html .btn-green-400:hover,html[data-netbox-color-mode=dark] .btn-green-400:hover,html[data-netbox-color-mode=light] .btn-green-400:hover{color:#000;background-color:#63ad8b;border-color:#59a984}.btn-check:focus+html .btn-green-400,html .btn-green-400:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-green-400,html[data-netbox-color-mode=dark] .btn-green-400:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-green-400,html[data-netbox-color-mode=light] .btn-green-400:focus{color:#000;background-color:#63ad8b;border-color:#59a984;box-shadow:0 0 0 .25rem #3c876480}.btn-check:checked+html .btn-green-400,.btn-check:active+html .btn-green-400,html .btn-green-400:active,html .btn-green-400.active,.show>html .btn-green-400.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-green-400,.btn-check:active+html[data-netbox-color-mode=dark] .btn-green-400,html[data-netbox-color-mode=dark] .btn-green-400:active,html[data-netbox-color-mode=dark] .btn-green-400.active,.show>html[data-netbox-color-mode=dark] .btn-green-400.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-green-400,.btn-check:active+html[data-netbox-color-mode=light] .btn-green-400,html[data-netbox-color-mode=light] .btn-green-400:active,html[data-netbox-color-mode=light] .btn-green-400.active,.show>html[data-netbox-color-mode=light] .btn-green-400.dropdown-toggle{color:#000;background-color:#6cb291;border-color:#59a984}.btn-check:checked+html .btn-green-400:focus,.btn-check:active+html .btn-green-400:focus,html .btn-green-400:active:focus,html .btn-green-400.active:focus,.show>html .btn-green-400.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-green-400:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-green-400:focus,html[data-netbox-color-mode=dark] .btn-green-400:active:focus,html[data-netbox-color-mode=dark] .btn-green-400.active:focus,.show>html[data-netbox-color-mode=dark] .btn-green-400.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-green-400:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-green-400:focus,html[data-netbox-color-mode=light] .btn-green-400:active:focus,html[data-netbox-color-mode=light] .btn-green-400.active:focus,.show>html[data-netbox-color-mode=light] .btn-green-400.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #3c876480}html .btn-green-400:disabled,html .btn-green-400.disabled,html[data-netbox-color-mode=dark] .btn-green-400:disabled,html[data-netbox-color-mode=dark] .btn-green-400.disabled,html[data-netbox-color-mode=light] .btn-green-400:disabled,html[data-netbox-color-mode=light] .btn-green-400.disabled{color:#000;background-color:#479f76;border-color:#479f76}}@media print{html .btn-green-500,html[data-netbox-color-mode=dark] .btn-green-500,html[data-netbox-color-mode=light] .btn-green-500{color:#fff;background-color:#198754;border-color:#198754}html .btn-green-500:hover,html[data-netbox-color-mode=dark] .btn-green-500:hover,html[data-netbox-color-mode=light] .btn-green-500:hover{color:#fff;background-color:#157347;border-color:#146c43}.btn-check:focus+html .btn-green-500,html .btn-green-500:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-green-500,html[data-netbox-color-mode=dark] .btn-green-500:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-green-500,html[data-netbox-color-mode=light] .btn-green-500:focus{color:#fff;background-color:#157347;border-color:#146c43;box-shadow:0 0 0 .25rem #3c996e80}.btn-check:checked+html .btn-green-500,.btn-check:active+html .btn-green-500,html .btn-green-500:active,html .btn-green-500.active,.show>html .btn-green-500.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-green-500,.btn-check:active+html[data-netbox-color-mode=dark] .btn-green-500,html[data-netbox-color-mode=dark] .btn-green-500:active,html[data-netbox-color-mode=dark] .btn-green-500.active,.show>html[data-netbox-color-mode=dark] .btn-green-500.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-green-500,.btn-check:active+html[data-netbox-color-mode=light] .btn-green-500,html[data-netbox-color-mode=light] .btn-green-500:active,html[data-netbox-color-mode=light] .btn-green-500.active,.show>html[data-netbox-color-mode=light] .btn-green-500.dropdown-toggle{color:#fff;background-color:#146c43;border-color:#13653f}.btn-check:checked+html .btn-green-500:focus,.btn-check:active+html .btn-green-500:focus,html .btn-green-500:active:focus,html .btn-green-500.active:focus,.show>html .btn-green-500.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-green-500:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-green-500:focus,html[data-netbox-color-mode=dark] .btn-green-500:active:focus,html[data-netbox-color-mode=dark] .btn-green-500.active:focus,.show>html[data-netbox-color-mode=dark] .btn-green-500.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-green-500:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-green-500:focus,html[data-netbox-color-mode=light] .btn-green-500:active:focus,html[data-netbox-color-mode=light] .btn-green-500.active:focus,.show>html[data-netbox-color-mode=light] .btn-green-500.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #3c996e80}html .btn-green-500:disabled,html .btn-green-500.disabled,html[data-netbox-color-mode=dark] .btn-green-500:disabled,html[data-netbox-color-mode=dark] .btn-green-500.disabled,html[data-netbox-color-mode=light] .btn-green-500:disabled,html[data-netbox-color-mode=light] .btn-green-500.disabled{color:#fff;background-color:#198754;border-color:#198754}}@media print{html .btn-green-600,html[data-netbox-color-mode=dark] .btn-green-600,html[data-netbox-color-mode=light] .btn-green-600{color:#fff;background-color:#146c43;border-color:#146c43}html .btn-green-600:hover,html[data-netbox-color-mode=dark] .btn-green-600:hover,html[data-netbox-color-mode=light] .btn-green-600:hover{color:#fff;background-color:#115c39;border-color:#105636}.btn-check:focus+html .btn-green-600,html .btn-green-600:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-green-600,html[data-netbox-color-mode=dark] .btn-green-600:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-green-600,html[data-netbox-color-mode=light] .btn-green-600:focus{color:#fff;background-color:#115c39;border-color:#105636;box-shadow:0 0 0 .25rem #37825f80}.btn-check:checked+html .btn-green-600,.btn-check:active+html .btn-green-600,html .btn-green-600:active,html .btn-green-600.active,.show>html .btn-green-600.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-green-600,.btn-check:active+html[data-netbox-color-mode=dark] .btn-green-600,html[data-netbox-color-mode=dark] .btn-green-600:active,html[data-netbox-color-mode=dark] .btn-green-600.active,.show>html[data-netbox-color-mode=dark] .btn-green-600.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-green-600,.btn-check:active+html[data-netbox-color-mode=light] .btn-green-600,html[data-netbox-color-mode=light] .btn-green-600:active,html[data-netbox-color-mode=light] .btn-green-600.active,.show>html[data-netbox-color-mode=light] .btn-green-600.dropdown-toggle{color:#fff;background-color:#105636;border-color:#0f5132}.btn-check:checked+html .btn-green-600:focus,.btn-check:active+html .btn-green-600:focus,html .btn-green-600:active:focus,html .btn-green-600.active:focus,.show>html .btn-green-600.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-green-600:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-green-600:focus,html[data-netbox-color-mode=dark] .btn-green-600:active:focus,html[data-netbox-color-mode=dark] .btn-green-600.active:focus,.show>html[data-netbox-color-mode=dark] .btn-green-600.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-green-600:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-green-600:focus,html[data-netbox-color-mode=light] .btn-green-600:active:focus,html[data-netbox-color-mode=light] .btn-green-600.active:focus,.show>html[data-netbox-color-mode=light] .btn-green-600.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #37825f80}html .btn-green-600:disabled,html .btn-green-600.disabled,html[data-netbox-color-mode=dark] .btn-green-600:disabled,html[data-netbox-color-mode=dark] .btn-green-600.disabled,html[data-netbox-color-mode=light] .btn-green-600:disabled,html[data-netbox-color-mode=light] .btn-green-600.disabled{color:#fff;background-color:#146c43;border-color:#146c43}}@media print{html .btn-green-700,html[data-netbox-color-mode=dark] .btn-green-700,html[data-netbox-color-mode=light] .btn-green-700{color:#fff;background-color:#0f5132;border-color:#0f5132}html .btn-green-700:hover,html[data-netbox-color-mode=dark] .btn-green-700:hover,html[data-netbox-color-mode=light] .btn-green-700:hover{color:#fff;background-color:#0d452b;border-color:#0c4128}.btn-check:focus+html .btn-green-700,html .btn-green-700:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-green-700,html[data-netbox-color-mode=dark] .btn-green-700:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-green-700,html[data-netbox-color-mode=light] .btn-green-700:focus{color:#fff;background-color:#0d452b;border-color:#0c4128;box-shadow:0 0 0 .25rem #336b5180}.btn-check:checked+html .btn-green-700,.btn-check:active+html .btn-green-700,html .btn-green-700:active,html .btn-green-700.active,.show>html .btn-green-700.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-green-700,.btn-check:active+html[data-netbox-color-mode=dark] .btn-green-700,html[data-netbox-color-mode=dark] .btn-green-700:active,html[data-netbox-color-mode=dark] .btn-green-700.active,.show>html[data-netbox-color-mode=dark] .btn-green-700.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-green-700,.btn-check:active+html[data-netbox-color-mode=light] .btn-green-700,html[data-netbox-color-mode=light] .btn-green-700:active,html[data-netbox-color-mode=light] .btn-green-700.active,.show>html[data-netbox-color-mode=light] .btn-green-700.dropdown-toggle{color:#fff;background-color:#0c4128;border-color:#0b3d26}.btn-check:checked+html .btn-green-700:focus,.btn-check:active+html .btn-green-700:focus,html .btn-green-700:active:focus,html .btn-green-700.active:focus,.show>html .btn-green-700.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-green-700:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-green-700:focus,html[data-netbox-color-mode=dark] .btn-green-700:active:focus,html[data-netbox-color-mode=dark] .btn-green-700.active:focus,.show>html[data-netbox-color-mode=dark] .btn-green-700.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-green-700:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-green-700:focus,html[data-netbox-color-mode=light] .btn-green-700:active:focus,html[data-netbox-color-mode=light] .btn-green-700.active:focus,.show>html[data-netbox-color-mode=light] .btn-green-700.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #336b5180}html .btn-green-700:disabled,html .btn-green-700.disabled,html[data-netbox-color-mode=dark] .btn-green-700:disabled,html[data-netbox-color-mode=dark] .btn-green-700.disabled,html[data-netbox-color-mode=light] .btn-green-700:disabled,html[data-netbox-color-mode=light] .btn-green-700.disabled{color:#fff;background-color:#0f5132;border-color:#0f5132}}@media print{html .btn-green-800,html[data-netbox-color-mode=dark] .btn-green-800,html[data-netbox-color-mode=light] .btn-green-800{color:#fff;background-color:#0a3622;border-color:#0a3622}html .btn-green-800:hover,html[data-netbox-color-mode=dark] .btn-green-800:hover,html[data-netbox-color-mode=light] .btn-green-800:hover{color:#fff;background-color:#092e1d;border-color:#082b1b}.btn-check:focus+html .btn-green-800,html .btn-green-800:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-green-800,html[data-netbox-color-mode=dark] .btn-green-800:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-green-800,html[data-netbox-color-mode=light] .btn-green-800:focus{color:#fff;background-color:#092e1d;border-color:#082b1b;box-shadow:0 0 0 .25rem #2f544380}.btn-check:checked+html .btn-green-800,.btn-check:active+html .btn-green-800,html .btn-green-800:active,html .btn-green-800.active,.show>html .btn-green-800.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-green-800,.btn-check:active+html[data-netbox-color-mode=dark] .btn-green-800,html[data-netbox-color-mode=dark] .btn-green-800:active,html[data-netbox-color-mode=dark] .btn-green-800.active,.show>html[data-netbox-color-mode=dark] .btn-green-800.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-green-800,.btn-check:active+html[data-netbox-color-mode=light] .btn-green-800,html[data-netbox-color-mode=light] .btn-green-800:active,html[data-netbox-color-mode=light] .btn-green-800.active,.show>html[data-netbox-color-mode=light] .btn-green-800.dropdown-toggle{color:#fff;background-color:#082b1b;border-color:#08291a}.btn-check:checked+html .btn-green-800:focus,.btn-check:active+html .btn-green-800:focus,html .btn-green-800:active:focus,html .btn-green-800.active:focus,.show>html .btn-green-800.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-green-800:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-green-800:focus,html[data-netbox-color-mode=dark] .btn-green-800:active:focus,html[data-netbox-color-mode=dark] .btn-green-800.active:focus,.show>html[data-netbox-color-mode=dark] .btn-green-800.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-green-800:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-green-800:focus,html[data-netbox-color-mode=light] .btn-green-800:active:focus,html[data-netbox-color-mode=light] .btn-green-800.active:focus,.show>html[data-netbox-color-mode=light] .btn-green-800.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #2f544380}html .btn-green-800:disabled,html .btn-green-800.disabled,html[data-netbox-color-mode=dark] .btn-green-800:disabled,html[data-netbox-color-mode=dark] .btn-green-800.disabled,html[data-netbox-color-mode=light] .btn-green-800:disabled,html[data-netbox-color-mode=light] .btn-green-800.disabled{color:#fff;background-color:#0a3622;border-color:#0a3622}}@media print{html .btn-green-900,html[data-netbox-color-mode=dark] .btn-green-900,html[data-netbox-color-mode=light] .btn-green-900{color:#fff;background-color:#051b11;border-color:#051b11}html .btn-green-900:hover,html[data-netbox-color-mode=dark] .btn-green-900:hover,html[data-netbox-color-mode=light] .btn-green-900:hover{color:#fff;background-color:#04170e;border-color:#04160e}.btn-check:focus+html .btn-green-900,html .btn-green-900:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-green-900,html[data-netbox-color-mode=dark] .btn-green-900:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-green-900,html[data-netbox-color-mode=light] .btn-green-900:focus{color:#fff;background-color:#04170e;border-color:#04160e;box-shadow:0 0 0 .25rem #2b3d3580}.btn-check:checked+html .btn-green-900,.btn-check:active+html .btn-green-900,html .btn-green-900:active,html .btn-green-900.active,.show>html .btn-green-900.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-green-900,.btn-check:active+html[data-netbox-color-mode=dark] .btn-green-900,html[data-netbox-color-mode=dark] .btn-green-900:active,html[data-netbox-color-mode=dark] .btn-green-900.active,.show>html[data-netbox-color-mode=dark] .btn-green-900.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-green-900,.btn-check:active+html[data-netbox-color-mode=light] .btn-green-900,html[data-netbox-color-mode=light] .btn-green-900:active,html[data-netbox-color-mode=light] .btn-green-900.active,.show>html[data-netbox-color-mode=light] .btn-green-900.dropdown-toggle{color:#fff;background-color:#04160e;border-color:#04140d}.btn-check:checked+html .btn-green-900:focus,.btn-check:active+html .btn-green-900:focus,html .btn-green-900:active:focus,html .btn-green-900.active:focus,.show>html .btn-green-900.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-green-900:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-green-900:focus,html[data-netbox-color-mode=dark] .btn-green-900:active:focus,html[data-netbox-color-mode=dark] .btn-green-900.active:focus,.show>html[data-netbox-color-mode=dark] .btn-green-900.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-green-900:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-green-900:focus,html[data-netbox-color-mode=light] .btn-green-900:active:focus,html[data-netbox-color-mode=light] .btn-green-900.active:focus,.show>html[data-netbox-color-mode=light] .btn-green-900.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #2b3d3580}html .btn-green-900:disabled,html .btn-green-900.disabled,html[data-netbox-color-mode=dark] .btn-green-900:disabled,html[data-netbox-color-mode=dark] .btn-green-900.disabled,html[data-netbox-color-mode=light] .btn-green-900:disabled,html[data-netbox-color-mode=light] .btn-green-900.disabled{color:#fff;background-color:#051b11;border-color:#051b11}}@media print{html .btn-blue-100,html[data-netbox-color-mode=dark] .btn-blue-100,html[data-netbox-color-mode=light] .btn-blue-100{color:#000;background-color:#cfe2ff;border-color:#cfe2ff}html .btn-blue-100:hover,html[data-netbox-color-mode=dark] .btn-blue-100:hover,html[data-netbox-color-mode=light] .btn-blue-100:hover{color:#000;background-color:#d6e6ff;border-color:#d4e5ff}.btn-check:focus+html .btn-blue-100,html .btn-blue-100:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-blue-100,html[data-netbox-color-mode=dark] .btn-blue-100:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-blue-100,html[data-netbox-color-mode=light] .btn-blue-100:focus{color:#000;background-color:#d6e6ff;border-color:#d4e5ff;box-shadow:0 0 0 .25rem #b0c0d980}.btn-check:checked+html .btn-blue-100,.btn-check:active+html .btn-blue-100,html .btn-blue-100:active,html .btn-blue-100.active,.show>html .btn-blue-100.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-blue-100,.btn-check:active+html[data-netbox-color-mode=dark] .btn-blue-100,html[data-netbox-color-mode=dark] .btn-blue-100:active,html[data-netbox-color-mode=dark] .btn-blue-100.active,.show>html[data-netbox-color-mode=dark] .btn-blue-100.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-blue-100,.btn-check:active+html[data-netbox-color-mode=light] .btn-blue-100,html[data-netbox-color-mode=light] .btn-blue-100:active,html[data-netbox-color-mode=light] .btn-blue-100.active,.show>html[data-netbox-color-mode=light] .btn-blue-100.dropdown-toggle{color:#000;background-color:#d9e8ff;border-color:#d4e5ff}.btn-check:checked+html .btn-blue-100:focus,.btn-check:active+html .btn-blue-100:focus,html .btn-blue-100:active:focus,html .btn-blue-100.active:focus,.show>html .btn-blue-100.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-blue-100:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-blue-100:focus,html[data-netbox-color-mode=dark] .btn-blue-100:active:focus,html[data-netbox-color-mode=dark] .btn-blue-100.active:focus,.show>html[data-netbox-color-mode=dark] .btn-blue-100.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-blue-100:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-blue-100:focus,html[data-netbox-color-mode=light] .btn-blue-100:active:focus,html[data-netbox-color-mode=light] .btn-blue-100.active:focus,.show>html[data-netbox-color-mode=light] .btn-blue-100.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #b0c0d980}html .btn-blue-100:disabled,html .btn-blue-100.disabled,html[data-netbox-color-mode=dark] .btn-blue-100:disabled,html[data-netbox-color-mode=dark] .btn-blue-100.disabled,html[data-netbox-color-mode=light] .btn-blue-100:disabled,html[data-netbox-color-mode=light] .btn-blue-100.disabled{color:#000;background-color:#cfe2ff;border-color:#cfe2ff}}@media print{html .btn-blue-200,html[data-netbox-color-mode=dark] .btn-blue-200,html[data-netbox-color-mode=light] .btn-blue-200{color:#000;background-color:#9ec5fe;border-color:#9ec5fe}html .btn-blue-200:hover,html[data-netbox-color-mode=dark] .btn-blue-200:hover,html[data-netbox-color-mode=light] .btn-blue-200:hover{color:#000;background-color:#adcefe;border-color:#a8cbfe}.btn-check:focus+html .btn-blue-200,html .btn-blue-200:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-blue-200,html[data-netbox-color-mode=dark] .btn-blue-200:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-blue-200,html[data-netbox-color-mode=light] .btn-blue-200:focus{color:#000;background-color:#adcefe;border-color:#a8cbfe;box-shadow:0 0 0 .25rem #86a7d880}.btn-check:checked+html .btn-blue-200,.btn-check:active+html .btn-blue-200,html .btn-blue-200:active,html .btn-blue-200.active,.show>html .btn-blue-200.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-blue-200,.btn-check:active+html[data-netbox-color-mode=dark] .btn-blue-200,html[data-netbox-color-mode=dark] .btn-blue-200:active,html[data-netbox-color-mode=dark] .btn-blue-200.active,.show>html[data-netbox-color-mode=dark] .btn-blue-200.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-blue-200,.btn-check:active+html[data-netbox-color-mode=light] .btn-blue-200,html[data-netbox-color-mode=light] .btn-blue-200:active,html[data-netbox-color-mode=light] .btn-blue-200.active,.show>html[data-netbox-color-mode=light] .btn-blue-200.dropdown-toggle{color:#000;background-color:#b1d1fe;border-color:#a8cbfe}.btn-check:checked+html .btn-blue-200:focus,.btn-check:active+html .btn-blue-200:focus,html .btn-blue-200:active:focus,html .btn-blue-200.active:focus,.show>html .btn-blue-200.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-blue-200:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-blue-200:focus,html[data-netbox-color-mode=dark] .btn-blue-200:active:focus,html[data-netbox-color-mode=dark] .btn-blue-200.active:focus,.show>html[data-netbox-color-mode=dark] .btn-blue-200.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-blue-200:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-blue-200:focus,html[data-netbox-color-mode=light] .btn-blue-200:active:focus,html[data-netbox-color-mode=light] .btn-blue-200.active:focus,.show>html[data-netbox-color-mode=light] .btn-blue-200.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #86a7d880}html .btn-blue-200:disabled,html .btn-blue-200.disabled,html[data-netbox-color-mode=dark] .btn-blue-200:disabled,html[data-netbox-color-mode=dark] .btn-blue-200.disabled,html[data-netbox-color-mode=light] .btn-blue-200:disabled,html[data-netbox-color-mode=light] .btn-blue-200.disabled{color:#000;background-color:#9ec5fe;border-color:#9ec5fe}}@media print{html .btn-blue-300,html[data-netbox-color-mode=dark] .btn-blue-300,html[data-netbox-color-mode=light] .btn-blue-300{color:#000;background-color:#6ea8fe;border-color:#6ea8fe}html .btn-blue-300:hover,html[data-netbox-color-mode=dark] .btn-blue-300:hover,html[data-netbox-color-mode=light] .btn-blue-300:hover{color:#000;background-color:#84b5fe;border-color:#7db1fe}.btn-check:focus+html .btn-blue-300,html .btn-blue-300:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-blue-300,html[data-netbox-color-mode=dark] .btn-blue-300:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-blue-300,html[data-netbox-color-mode=light] .btn-blue-300:focus{color:#000;background-color:#84b5fe;border-color:#7db1fe;box-shadow:0 0 0 .25rem #5e8fd880}.btn-check:checked+html .btn-blue-300,.btn-check:active+html .btn-blue-300,html .btn-blue-300:active,html .btn-blue-300.active,.show>html .btn-blue-300.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-blue-300,.btn-check:active+html[data-netbox-color-mode=dark] .btn-blue-300,html[data-netbox-color-mode=dark] .btn-blue-300:active,html[data-netbox-color-mode=dark] .btn-blue-300.active,.show>html[data-netbox-color-mode=dark] .btn-blue-300.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-blue-300,.btn-check:active+html[data-netbox-color-mode=light] .btn-blue-300,html[data-netbox-color-mode=light] .btn-blue-300:active,html[data-netbox-color-mode=light] .btn-blue-300.active,.show>html[data-netbox-color-mode=light] .btn-blue-300.dropdown-toggle{color:#000;background-color:#8bb9fe;border-color:#7db1fe}.btn-check:checked+html .btn-blue-300:focus,.btn-check:active+html .btn-blue-300:focus,html .btn-blue-300:active:focus,html .btn-blue-300.active:focus,.show>html .btn-blue-300.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-blue-300:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-blue-300:focus,html[data-netbox-color-mode=dark] .btn-blue-300:active:focus,html[data-netbox-color-mode=dark] .btn-blue-300.active:focus,.show>html[data-netbox-color-mode=dark] .btn-blue-300.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-blue-300:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-blue-300:focus,html[data-netbox-color-mode=light] .btn-blue-300:active:focus,html[data-netbox-color-mode=light] .btn-blue-300.active:focus,.show>html[data-netbox-color-mode=light] .btn-blue-300.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #5e8fd880}html .btn-blue-300:disabled,html .btn-blue-300.disabled,html[data-netbox-color-mode=dark] .btn-blue-300:disabled,html[data-netbox-color-mode=dark] .btn-blue-300.disabled,html[data-netbox-color-mode=light] .btn-blue-300:disabled,html[data-netbox-color-mode=light] .btn-blue-300.disabled{color:#000;background-color:#6ea8fe;border-color:#6ea8fe}}@media print{html .btn-blue-400,html[data-netbox-color-mode=dark] .btn-blue-400,html[data-netbox-color-mode=light] .btn-blue-400{color:#000;background-color:#3d8bfd;border-color:#3d8bfd}html .btn-blue-400:hover,html[data-netbox-color-mode=dark] .btn-blue-400:hover,html[data-netbox-color-mode=light] .btn-blue-400:hover{color:#000;background-color:#5a9cfd;border-color:#5097fd}.btn-check:focus+html .btn-blue-400,html .btn-blue-400:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-blue-400,html[data-netbox-color-mode=dark] .btn-blue-400:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-blue-400,html[data-netbox-color-mode=light] .btn-blue-400:focus{color:#000;background-color:#5a9cfd;border-color:#5097fd;box-shadow:0 0 0 .25rem #3476d780}.btn-check:checked+html .btn-blue-400,.btn-check:active+html .btn-blue-400,html .btn-blue-400:active,html .btn-blue-400.active,.show>html .btn-blue-400.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-blue-400,.btn-check:active+html[data-netbox-color-mode=dark] .btn-blue-400,html[data-netbox-color-mode=dark] .btn-blue-400:active,html[data-netbox-color-mode=dark] .btn-blue-400.active,.show>html[data-netbox-color-mode=dark] .btn-blue-400.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-blue-400,.btn-check:active+html[data-netbox-color-mode=light] .btn-blue-400,html[data-netbox-color-mode=light] .btn-blue-400:active,html[data-netbox-color-mode=light] .btn-blue-400.active,.show>html[data-netbox-color-mode=light] .btn-blue-400.dropdown-toggle{color:#000;background-color:#64a2fd;border-color:#5097fd}.btn-check:checked+html .btn-blue-400:focus,.btn-check:active+html .btn-blue-400:focus,html .btn-blue-400:active:focus,html .btn-blue-400.active:focus,.show>html .btn-blue-400.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-blue-400:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-blue-400:focus,html[data-netbox-color-mode=dark] .btn-blue-400:active:focus,html[data-netbox-color-mode=dark] .btn-blue-400.active:focus,.show>html[data-netbox-color-mode=dark] .btn-blue-400.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-blue-400:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-blue-400:focus,html[data-netbox-color-mode=light] .btn-blue-400:active:focus,html[data-netbox-color-mode=light] .btn-blue-400.active:focus,.show>html[data-netbox-color-mode=light] .btn-blue-400.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #3476d780}html .btn-blue-400:disabled,html .btn-blue-400.disabled,html[data-netbox-color-mode=dark] .btn-blue-400:disabled,html[data-netbox-color-mode=dark] .btn-blue-400.disabled,html[data-netbox-color-mode=light] .btn-blue-400:disabled,html[data-netbox-color-mode=light] .btn-blue-400.disabled{color:#000;background-color:#3d8bfd;border-color:#3d8bfd}}@media print{html .btn-blue-500,html[data-netbox-color-mode=dark] .btn-blue-500,html[data-netbox-color-mode=light] .btn-blue-500{color:#fff;background-color:#0d6efd;border-color:#0d6efd}html .btn-blue-500:hover,html[data-netbox-color-mode=dark] .btn-blue-500:hover,html[data-netbox-color-mode=light] .btn-blue-500:hover{color:#fff;background-color:#0b5ed7;border-color:#0a58ca}.btn-check:focus+html .btn-blue-500,html .btn-blue-500:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-blue-500,html[data-netbox-color-mode=dark] .btn-blue-500:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-blue-500,html[data-netbox-color-mode=light] .btn-blue-500:focus{color:#fff;background-color:#0b5ed7;border-color:#0a58ca;box-shadow:0 0 0 .25rem #3184fd80}.btn-check:checked+html .btn-blue-500,.btn-check:active+html .btn-blue-500,html .btn-blue-500:active,html .btn-blue-500.active,.show>html .btn-blue-500.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-blue-500,.btn-check:active+html[data-netbox-color-mode=dark] .btn-blue-500,html[data-netbox-color-mode=dark] .btn-blue-500:active,html[data-netbox-color-mode=dark] .btn-blue-500.active,.show>html[data-netbox-color-mode=dark] .btn-blue-500.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-blue-500,.btn-check:active+html[data-netbox-color-mode=light] .btn-blue-500,html[data-netbox-color-mode=light] .btn-blue-500:active,html[data-netbox-color-mode=light] .btn-blue-500.active,.show>html[data-netbox-color-mode=light] .btn-blue-500.dropdown-toggle{color:#fff;background-color:#0a58ca;border-color:#0a53be}.btn-check:checked+html .btn-blue-500:focus,.btn-check:active+html .btn-blue-500:focus,html .btn-blue-500:active:focus,html .btn-blue-500.active:focus,.show>html .btn-blue-500.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-blue-500:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-blue-500:focus,html[data-netbox-color-mode=dark] .btn-blue-500:active:focus,html[data-netbox-color-mode=dark] .btn-blue-500.active:focus,.show>html[data-netbox-color-mode=dark] .btn-blue-500.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-blue-500:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-blue-500:focus,html[data-netbox-color-mode=light] .btn-blue-500:active:focus,html[data-netbox-color-mode=light] .btn-blue-500.active:focus,.show>html[data-netbox-color-mode=light] .btn-blue-500.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #3184fd80}html .btn-blue-500:disabled,html .btn-blue-500.disabled,html[data-netbox-color-mode=dark] .btn-blue-500:disabled,html[data-netbox-color-mode=dark] .btn-blue-500.disabled,html[data-netbox-color-mode=light] .btn-blue-500:disabled,html[data-netbox-color-mode=light] .btn-blue-500.disabled{color:#fff;background-color:#0d6efd;border-color:#0d6efd}}@media print{html .btn-blue-600,html[data-netbox-color-mode=dark] .btn-blue-600,html[data-netbox-color-mode=light] .btn-blue-600{color:#fff;background-color:#0a58ca;border-color:#0a58ca}html .btn-blue-600:hover,html[data-netbox-color-mode=dark] .btn-blue-600:hover,html[data-netbox-color-mode=light] .btn-blue-600:hover{color:#fff;background-color:#094bac;border-color:#0846a2}.btn-check:focus+html .btn-blue-600,html .btn-blue-600:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-blue-600,html[data-netbox-color-mode=dark] .btn-blue-600:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-blue-600,html[data-netbox-color-mode=light] .btn-blue-600:focus{color:#fff;background-color:#094bac;border-color:#0846a2;box-shadow:0 0 0 .25rem #2f71d280}.btn-check:checked+html .btn-blue-600,.btn-check:active+html .btn-blue-600,html .btn-blue-600:active,html .btn-blue-600.active,.show>html .btn-blue-600.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-blue-600,.btn-check:active+html[data-netbox-color-mode=dark] .btn-blue-600,html[data-netbox-color-mode=dark] .btn-blue-600:active,html[data-netbox-color-mode=dark] .btn-blue-600.active,.show>html[data-netbox-color-mode=dark] .btn-blue-600.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-blue-600,.btn-check:active+html[data-netbox-color-mode=light] .btn-blue-600,html[data-netbox-color-mode=light] .btn-blue-600:active,html[data-netbox-color-mode=light] .btn-blue-600.active,.show>html[data-netbox-color-mode=light] .btn-blue-600.dropdown-toggle{color:#fff;background-color:#0846a2;border-color:#084298}.btn-check:checked+html .btn-blue-600:focus,.btn-check:active+html .btn-blue-600:focus,html .btn-blue-600:active:focus,html .btn-blue-600.active:focus,.show>html .btn-blue-600.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-blue-600:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-blue-600:focus,html[data-netbox-color-mode=dark] .btn-blue-600:active:focus,html[data-netbox-color-mode=dark] .btn-blue-600.active:focus,.show>html[data-netbox-color-mode=dark] .btn-blue-600.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-blue-600:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-blue-600:focus,html[data-netbox-color-mode=light] .btn-blue-600:active:focus,html[data-netbox-color-mode=light] .btn-blue-600.active:focus,.show>html[data-netbox-color-mode=light] .btn-blue-600.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #2f71d280}html .btn-blue-600:disabled,html .btn-blue-600.disabled,html[data-netbox-color-mode=dark] .btn-blue-600:disabled,html[data-netbox-color-mode=dark] .btn-blue-600.disabled,html[data-netbox-color-mode=light] .btn-blue-600:disabled,html[data-netbox-color-mode=light] .btn-blue-600.disabled{color:#fff;background-color:#0a58ca;border-color:#0a58ca}}@media print{html .btn-blue-700,html[data-netbox-color-mode=dark] .btn-blue-700,html[data-netbox-color-mode=light] .btn-blue-700{color:#fff;background-color:#084298;border-color:#084298}html .btn-blue-700:hover,html[data-netbox-color-mode=dark] .btn-blue-700:hover,html[data-netbox-color-mode=light] .btn-blue-700:hover{color:#fff;background-color:#073881;border-color:#06357a}.btn-check:focus+html .btn-blue-700,html .btn-blue-700:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-blue-700,html[data-netbox-color-mode=dark] .btn-blue-700:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-blue-700,html[data-netbox-color-mode=light] .btn-blue-700:focus{color:#fff;background-color:#073881;border-color:#06357a;box-shadow:0 0 0 .25rem #2d5ea780}.btn-check:checked+html .btn-blue-700,.btn-check:active+html .btn-blue-700,html .btn-blue-700:active,html .btn-blue-700.active,.show>html .btn-blue-700.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-blue-700,.btn-check:active+html[data-netbox-color-mode=dark] .btn-blue-700,html[data-netbox-color-mode=dark] .btn-blue-700:active,html[data-netbox-color-mode=dark] .btn-blue-700.active,.show>html[data-netbox-color-mode=dark] .btn-blue-700.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-blue-700,.btn-check:active+html[data-netbox-color-mode=light] .btn-blue-700,html[data-netbox-color-mode=light] .btn-blue-700:active,html[data-netbox-color-mode=light] .btn-blue-700.active,.show>html[data-netbox-color-mode=light] .btn-blue-700.dropdown-toggle{color:#fff;background-color:#06357a;border-color:#063272}.btn-check:checked+html .btn-blue-700:focus,.btn-check:active+html .btn-blue-700:focus,html .btn-blue-700:active:focus,html .btn-blue-700.active:focus,.show>html .btn-blue-700.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-blue-700:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-blue-700:focus,html[data-netbox-color-mode=dark] .btn-blue-700:active:focus,html[data-netbox-color-mode=dark] .btn-blue-700.active:focus,.show>html[data-netbox-color-mode=dark] .btn-blue-700.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-blue-700:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-blue-700:focus,html[data-netbox-color-mode=light] .btn-blue-700:active:focus,html[data-netbox-color-mode=light] .btn-blue-700.active:focus,.show>html[data-netbox-color-mode=light] .btn-blue-700.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #2d5ea780}html .btn-blue-700:disabled,html .btn-blue-700.disabled,html[data-netbox-color-mode=dark] .btn-blue-700:disabled,html[data-netbox-color-mode=dark] .btn-blue-700.disabled,html[data-netbox-color-mode=light] .btn-blue-700:disabled,html[data-netbox-color-mode=light] .btn-blue-700.disabled{color:#fff;background-color:#084298;border-color:#084298}}@media print{html .btn-blue-800,html[data-netbox-color-mode=dark] .btn-blue-800,html[data-netbox-color-mode=light] .btn-blue-800{color:#fff;background-color:#052c65;border-color:#052c65}html .btn-blue-800:hover,html[data-netbox-color-mode=dark] .btn-blue-800:hover,html[data-netbox-color-mode=light] .btn-blue-800:hover{color:#fff;background-color:#042556;border-color:#042351}.btn-check:focus+html .btn-blue-800,html .btn-blue-800:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-blue-800,html[data-netbox-color-mode=dark] .btn-blue-800:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-blue-800,html[data-netbox-color-mode=light] .btn-blue-800:focus{color:#fff;background-color:#042556;border-color:#042351;box-shadow:0 0 0 .25rem #2b4c7c80}.btn-check:checked+html .btn-blue-800,.btn-check:active+html .btn-blue-800,html .btn-blue-800:active,html .btn-blue-800.active,.show>html .btn-blue-800.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-blue-800,.btn-check:active+html[data-netbox-color-mode=dark] .btn-blue-800,html[data-netbox-color-mode=dark] .btn-blue-800:active,html[data-netbox-color-mode=dark] .btn-blue-800.active,.show>html[data-netbox-color-mode=dark] .btn-blue-800.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-blue-800,.btn-check:active+html[data-netbox-color-mode=light] .btn-blue-800,html[data-netbox-color-mode=light] .btn-blue-800:active,html[data-netbox-color-mode=light] .btn-blue-800.active,.show>html[data-netbox-color-mode=light] .btn-blue-800.dropdown-toggle{color:#fff;background-color:#042351;border-color:#04214c}.btn-check:checked+html .btn-blue-800:focus,.btn-check:active+html .btn-blue-800:focus,html .btn-blue-800:active:focus,html .btn-blue-800.active:focus,.show>html .btn-blue-800.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-blue-800:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-blue-800:focus,html[data-netbox-color-mode=dark] .btn-blue-800:active:focus,html[data-netbox-color-mode=dark] .btn-blue-800.active:focus,.show>html[data-netbox-color-mode=dark] .btn-blue-800.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-blue-800:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-blue-800:focus,html[data-netbox-color-mode=light] .btn-blue-800:active:focus,html[data-netbox-color-mode=light] .btn-blue-800.active:focus,.show>html[data-netbox-color-mode=light] .btn-blue-800.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #2b4c7c80}html .btn-blue-800:disabled,html .btn-blue-800.disabled,html[data-netbox-color-mode=dark] .btn-blue-800:disabled,html[data-netbox-color-mode=dark] .btn-blue-800.disabled,html[data-netbox-color-mode=light] .btn-blue-800:disabled,html[data-netbox-color-mode=light] .btn-blue-800.disabled{color:#fff;background-color:#052c65;border-color:#052c65}}@media print{html .btn-blue-900,html[data-netbox-color-mode=dark] .btn-blue-900,html[data-netbox-color-mode=light] .btn-blue-900{color:#fff;background-color:#031633;border-color:#031633}html .btn-blue-900:hover,html[data-netbox-color-mode=dark] .btn-blue-900:hover,html[data-netbox-color-mode=light] .btn-blue-900:hover{color:#fff;background-color:#03132b;border-color:#021229}.btn-check:focus+html .btn-blue-900,html .btn-blue-900:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-blue-900,html[data-netbox-color-mode=dark] .btn-blue-900:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-blue-900,html[data-netbox-color-mode=light] .btn-blue-900:focus{color:#fff;background-color:#03132b;border-color:#021229;box-shadow:0 0 0 .25rem #29395280}.btn-check:checked+html .btn-blue-900,.btn-check:active+html .btn-blue-900,html .btn-blue-900:active,html .btn-blue-900.active,.show>html .btn-blue-900.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-blue-900,.btn-check:active+html[data-netbox-color-mode=dark] .btn-blue-900,html[data-netbox-color-mode=dark] .btn-blue-900:active,html[data-netbox-color-mode=dark] .btn-blue-900.active,.show>html[data-netbox-color-mode=dark] .btn-blue-900.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-blue-900,.btn-check:active+html[data-netbox-color-mode=light] .btn-blue-900,html[data-netbox-color-mode=light] .btn-blue-900:active,html[data-netbox-color-mode=light] .btn-blue-900.active,.show>html[data-netbox-color-mode=light] .btn-blue-900.dropdown-toggle{color:#fff;background-color:#021229;border-color:#021126}.btn-check:checked+html .btn-blue-900:focus,.btn-check:active+html .btn-blue-900:focus,html .btn-blue-900:active:focus,html .btn-blue-900.active:focus,.show>html .btn-blue-900.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-blue-900:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-blue-900:focus,html[data-netbox-color-mode=dark] .btn-blue-900:active:focus,html[data-netbox-color-mode=dark] .btn-blue-900.active:focus,.show>html[data-netbox-color-mode=dark] .btn-blue-900.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-blue-900:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-blue-900:focus,html[data-netbox-color-mode=light] .btn-blue-900:active:focus,html[data-netbox-color-mode=light] .btn-blue-900.active:focus,.show>html[data-netbox-color-mode=light] .btn-blue-900.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #29395280}html .btn-blue-900:disabled,html .btn-blue-900.disabled,html[data-netbox-color-mode=dark] .btn-blue-900:disabled,html[data-netbox-color-mode=dark] .btn-blue-900.disabled,html[data-netbox-color-mode=light] .btn-blue-900:disabled,html[data-netbox-color-mode=light] .btn-blue-900.disabled{color:#fff;background-color:#031633;border-color:#031633}}@media print{html .btn-cyan-100,html[data-netbox-color-mode=dark] .btn-cyan-100,html[data-netbox-color-mode=light] .btn-cyan-100{color:#000;background-color:#cff4fc;border-color:#cff4fc}html .btn-cyan-100:hover,html[data-netbox-color-mode=dark] .btn-cyan-100:hover,html[data-netbox-color-mode=light] .btn-cyan-100:hover{color:#000;background-color:#d6f6fc;border-color:#d4f5fc}.btn-check:focus+html .btn-cyan-100,html .btn-cyan-100:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-cyan-100,html[data-netbox-color-mode=dark] .btn-cyan-100:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-cyan-100,html[data-netbox-color-mode=light] .btn-cyan-100:focus{color:#000;background-color:#d6f6fc;border-color:#d4f5fc;box-shadow:0 0 0 .25rem #b0cfd680}.btn-check:checked+html .btn-cyan-100,.btn-check:active+html .btn-cyan-100,html .btn-cyan-100:active,html .btn-cyan-100.active,.show>html .btn-cyan-100.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-cyan-100,.btn-check:active+html[data-netbox-color-mode=dark] .btn-cyan-100,html[data-netbox-color-mode=dark] .btn-cyan-100:active,html[data-netbox-color-mode=dark] .btn-cyan-100.active,.show>html[data-netbox-color-mode=dark] .btn-cyan-100.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-cyan-100,.btn-check:active+html[data-netbox-color-mode=light] .btn-cyan-100,html[data-netbox-color-mode=light] .btn-cyan-100:active,html[data-netbox-color-mode=light] .btn-cyan-100.active,.show>html[data-netbox-color-mode=light] .btn-cyan-100.dropdown-toggle{color:#000;background-color:#d9f6fd;border-color:#d4f5fc}.btn-check:checked+html .btn-cyan-100:focus,.btn-check:active+html .btn-cyan-100:focus,html .btn-cyan-100:active:focus,html .btn-cyan-100.active:focus,.show>html .btn-cyan-100.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-cyan-100:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-cyan-100:focus,html[data-netbox-color-mode=dark] .btn-cyan-100:active:focus,html[data-netbox-color-mode=dark] .btn-cyan-100.active:focus,.show>html[data-netbox-color-mode=dark] .btn-cyan-100.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-cyan-100:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-cyan-100:focus,html[data-netbox-color-mode=light] .btn-cyan-100:active:focus,html[data-netbox-color-mode=light] .btn-cyan-100.active:focus,.show>html[data-netbox-color-mode=light] .btn-cyan-100.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #b0cfd680}html .btn-cyan-100:disabled,html .btn-cyan-100.disabled,html[data-netbox-color-mode=dark] .btn-cyan-100:disabled,html[data-netbox-color-mode=dark] .btn-cyan-100.disabled,html[data-netbox-color-mode=light] .btn-cyan-100:disabled,html[data-netbox-color-mode=light] .btn-cyan-100.disabled{color:#000;background-color:#cff4fc;border-color:#cff4fc}}@media print{html .btn-cyan-200,html[data-netbox-color-mode=dark] .btn-cyan-200,html[data-netbox-color-mode=light] .btn-cyan-200{color:#000;background-color:#9eeaf9;border-color:#9eeaf9}html .btn-cyan-200:hover,html[data-netbox-color-mode=dark] .btn-cyan-200:hover,html[data-netbox-color-mode=light] .btn-cyan-200:hover{color:#000;background-color:#adedfa;border-color:#a8ecfa}.btn-check:focus+html .btn-cyan-200,html .btn-cyan-200:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-cyan-200,html[data-netbox-color-mode=dark] .btn-cyan-200:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-cyan-200,html[data-netbox-color-mode=light] .btn-cyan-200:focus{color:#000;background-color:#adedfa;border-color:#a8ecfa;box-shadow:0 0 0 .25rem #86c7d480}.btn-check:checked+html .btn-cyan-200,.btn-check:active+html .btn-cyan-200,html .btn-cyan-200:active,html .btn-cyan-200.active,.show>html .btn-cyan-200.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-cyan-200,.btn-check:active+html[data-netbox-color-mode=dark] .btn-cyan-200,html[data-netbox-color-mode=dark] .btn-cyan-200:active,html[data-netbox-color-mode=dark] .btn-cyan-200.active,.show>html[data-netbox-color-mode=dark] .btn-cyan-200.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-cyan-200,.btn-check:active+html[data-netbox-color-mode=light] .btn-cyan-200,html[data-netbox-color-mode=light] .btn-cyan-200:active,html[data-netbox-color-mode=light] .btn-cyan-200.active,.show>html[data-netbox-color-mode=light] .btn-cyan-200.dropdown-toggle{color:#000;background-color:#b1eefa;border-color:#a8ecfa}.btn-check:checked+html .btn-cyan-200:focus,.btn-check:active+html .btn-cyan-200:focus,html .btn-cyan-200:active:focus,html .btn-cyan-200.active:focus,.show>html .btn-cyan-200.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-cyan-200:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-cyan-200:focus,html[data-netbox-color-mode=dark] .btn-cyan-200:active:focus,html[data-netbox-color-mode=dark] .btn-cyan-200.active:focus,.show>html[data-netbox-color-mode=dark] .btn-cyan-200.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-cyan-200:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-cyan-200:focus,html[data-netbox-color-mode=light] .btn-cyan-200:active:focus,html[data-netbox-color-mode=light] .btn-cyan-200.active:focus,.show>html[data-netbox-color-mode=light] .btn-cyan-200.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #86c7d480}html .btn-cyan-200:disabled,html .btn-cyan-200.disabled,html[data-netbox-color-mode=dark] .btn-cyan-200:disabled,html[data-netbox-color-mode=dark] .btn-cyan-200.disabled,html[data-netbox-color-mode=light] .btn-cyan-200:disabled,html[data-netbox-color-mode=light] .btn-cyan-200.disabled{color:#000;background-color:#9eeaf9;border-color:#9eeaf9}}@media print{html .btn-cyan-300,html[data-netbox-color-mode=dark] .btn-cyan-300,html[data-netbox-color-mode=light] .btn-cyan-300{color:#000;background-color:#6edff6;border-color:#6edff6}html .btn-cyan-300:hover,html[data-netbox-color-mode=dark] .btn-cyan-300:hover,html[data-netbox-color-mode=light] .btn-cyan-300:hover{color:#000;background-color:#84e4f7;border-color:#7de2f7}.btn-check:focus+html .btn-cyan-300,html .btn-cyan-300:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-cyan-300,html[data-netbox-color-mode=dark] .btn-cyan-300:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-cyan-300,html[data-netbox-color-mode=light] .btn-cyan-300:focus{color:#000;background-color:#84e4f7;border-color:#7de2f7;box-shadow:0 0 0 .25rem #5ebed180}.btn-check:checked+html .btn-cyan-300,.btn-check:active+html .btn-cyan-300,html .btn-cyan-300:active,html .btn-cyan-300.active,.show>html .btn-cyan-300.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-cyan-300,.btn-check:active+html[data-netbox-color-mode=dark] .btn-cyan-300,html[data-netbox-color-mode=dark] .btn-cyan-300:active,html[data-netbox-color-mode=dark] .btn-cyan-300.active,.show>html[data-netbox-color-mode=dark] .btn-cyan-300.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-cyan-300,.btn-check:active+html[data-netbox-color-mode=light] .btn-cyan-300,html[data-netbox-color-mode=light] .btn-cyan-300:active,html[data-netbox-color-mode=light] .btn-cyan-300.active,.show>html[data-netbox-color-mode=light] .btn-cyan-300.dropdown-toggle{color:#000;background-color:#8be5f8;border-color:#7de2f7}.btn-check:checked+html .btn-cyan-300:focus,.btn-check:active+html .btn-cyan-300:focus,html .btn-cyan-300:active:focus,html .btn-cyan-300.active:focus,.show>html .btn-cyan-300.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-cyan-300:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-cyan-300:focus,html[data-netbox-color-mode=dark] .btn-cyan-300:active:focus,html[data-netbox-color-mode=dark] .btn-cyan-300.active:focus,.show>html[data-netbox-color-mode=dark] .btn-cyan-300.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-cyan-300:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-cyan-300:focus,html[data-netbox-color-mode=light] .btn-cyan-300:active:focus,html[data-netbox-color-mode=light] .btn-cyan-300.active:focus,.show>html[data-netbox-color-mode=light] .btn-cyan-300.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #5ebed180}html .btn-cyan-300:disabled,html .btn-cyan-300.disabled,html[data-netbox-color-mode=dark] .btn-cyan-300:disabled,html[data-netbox-color-mode=dark] .btn-cyan-300.disabled,html[data-netbox-color-mode=light] .btn-cyan-300:disabled,html[data-netbox-color-mode=light] .btn-cyan-300.disabled{color:#000;background-color:#6edff6;border-color:#6edff6}}@media print{html .btn-cyan-400,html[data-netbox-color-mode=dark] .btn-cyan-400,html[data-netbox-color-mode=light] .btn-cyan-400{color:#000;background-color:#3dd5f3;border-color:#3dd5f3}html .btn-cyan-400:hover,html[data-netbox-color-mode=dark] .btn-cyan-400:hover,html[data-netbox-color-mode=light] .btn-cyan-400:hover{color:#000;background-color:#5adbf5;border-color:#50d9f4}.btn-check:focus+html .btn-cyan-400,html .btn-cyan-400:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-cyan-400,html[data-netbox-color-mode=dark] .btn-cyan-400:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-cyan-400,html[data-netbox-color-mode=light] .btn-cyan-400:focus{color:#000;background-color:#5adbf5;border-color:#50d9f4;box-shadow:0 0 0 .25rem #34b5cf80}.btn-check:checked+html .btn-cyan-400,.btn-check:active+html .btn-cyan-400,html .btn-cyan-400:active,html .btn-cyan-400.active,.show>html .btn-cyan-400.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-cyan-400,.btn-check:active+html[data-netbox-color-mode=dark] .btn-cyan-400,html[data-netbox-color-mode=dark] .btn-cyan-400:active,html[data-netbox-color-mode=dark] .btn-cyan-400.active,.show>html[data-netbox-color-mode=dark] .btn-cyan-400.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-cyan-400,.btn-check:active+html[data-netbox-color-mode=light] .btn-cyan-400,html[data-netbox-color-mode=light] .btn-cyan-400:active,html[data-netbox-color-mode=light] .btn-cyan-400.active,.show>html[data-netbox-color-mode=light] .btn-cyan-400.dropdown-toggle{color:#000;background-color:#64ddf5;border-color:#50d9f4}.btn-check:checked+html .btn-cyan-400:focus,.btn-check:active+html .btn-cyan-400:focus,html .btn-cyan-400:active:focus,html .btn-cyan-400.active:focus,.show>html .btn-cyan-400.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-cyan-400:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-cyan-400:focus,html[data-netbox-color-mode=dark] .btn-cyan-400:active:focus,html[data-netbox-color-mode=dark] .btn-cyan-400.active:focus,.show>html[data-netbox-color-mode=dark] .btn-cyan-400.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-cyan-400:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-cyan-400:focus,html[data-netbox-color-mode=light] .btn-cyan-400:active:focus,html[data-netbox-color-mode=light] .btn-cyan-400.active:focus,.show>html[data-netbox-color-mode=light] .btn-cyan-400.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #34b5cf80}html .btn-cyan-400:disabled,html .btn-cyan-400.disabled,html[data-netbox-color-mode=dark] .btn-cyan-400:disabled,html[data-netbox-color-mode=dark] .btn-cyan-400.disabled,html[data-netbox-color-mode=light] .btn-cyan-400:disabled,html[data-netbox-color-mode=light] .btn-cyan-400.disabled{color:#000;background-color:#3dd5f3;border-color:#3dd5f3}}@media print{html .btn-cyan-500,html[data-netbox-color-mode=dark] .btn-cyan-500,html[data-netbox-color-mode=light] .btn-cyan-500{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}html .btn-cyan-500:hover,html[data-netbox-color-mode=dark] .btn-cyan-500:hover,html[data-netbox-color-mode=light] .btn-cyan-500:hover{color:#000;background-color:#31d2f2;border-color:#25cff2}.btn-check:focus+html .btn-cyan-500,html .btn-cyan-500:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-cyan-500,html[data-netbox-color-mode=dark] .btn-cyan-500:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-cyan-500,html[data-netbox-color-mode=light] .btn-cyan-500:focus{color:#000;background-color:#31d2f2;border-color:#25cff2;box-shadow:0 0 0 .25rem #0baccc80}.btn-check:checked+html .btn-cyan-500,.btn-check:active+html .btn-cyan-500,html .btn-cyan-500:active,html .btn-cyan-500.active,.show>html .btn-cyan-500.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-cyan-500,.btn-check:active+html[data-netbox-color-mode=dark] .btn-cyan-500,html[data-netbox-color-mode=dark] .btn-cyan-500:active,html[data-netbox-color-mode=dark] .btn-cyan-500.active,.show>html[data-netbox-color-mode=dark] .btn-cyan-500.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-cyan-500,.btn-check:active+html[data-netbox-color-mode=light] .btn-cyan-500,html[data-netbox-color-mode=light] .btn-cyan-500:active,html[data-netbox-color-mode=light] .btn-cyan-500.active,.show>html[data-netbox-color-mode=light] .btn-cyan-500.dropdown-toggle{color:#000;background-color:#3dd5f3;border-color:#25cff2}.btn-check:checked+html .btn-cyan-500:focus,.btn-check:active+html .btn-cyan-500:focus,html .btn-cyan-500:active:focus,html .btn-cyan-500.active:focus,.show>html .btn-cyan-500.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-cyan-500:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-cyan-500:focus,html[data-netbox-color-mode=dark] .btn-cyan-500:active:focus,html[data-netbox-color-mode=dark] .btn-cyan-500.active:focus,.show>html[data-netbox-color-mode=dark] .btn-cyan-500.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-cyan-500:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-cyan-500:focus,html[data-netbox-color-mode=light] .btn-cyan-500:active:focus,html[data-netbox-color-mode=light] .btn-cyan-500.active:focus,.show>html[data-netbox-color-mode=light] .btn-cyan-500.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #0baccc80}html .btn-cyan-500:disabled,html .btn-cyan-500.disabled,html[data-netbox-color-mode=dark] .btn-cyan-500:disabled,html[data-netbox-color-mode=dark] .btn-cyan-500.disabled,html[data-netbox-color-mode=light] .btn-cyan-500:disabled,html[data-netbox-color-mode=light] .btn-cyan-500.disabled{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}}@media print{html .btn-cyan-600,html[data-netbox-color-mode=dark] .btn-cyan-600,html[data-netbox-color-mode=light] .btn-cyan-600{color:#000;background-color:#0aa2c0;border-color:#0aa2c0}html .btn-cyan-600:hover,html[data-netbox-color-mode=dark] .btn-cyan-600:hover,html[data-netbox-color-mode=light] .btn-cyan-600:hover{color:#000;background-color:#2fb0c9;border-color:#23abc6}.btn-check:focus+html .btn-cyan-600,html .btn-cyan-600:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-cyan-600,html[data-netbox-color-mode=dark] .btn-cyan-600:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-cyan-600,html[data-netbox-color-mode=light] .btn-cyan-600:focus{color:#000;background-color:#2fb0c9;border-color:#23abc6;box-shadow:0 0 0 .25rem #098aa380}.btn-check:checked+html .btn-cyan-600,.btn-check:active+html .btn-cyan-600,html .btn-cyan-600:active,html .btn-cyan-600.active,.show>html .btn-cyan-600.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-cyan-600,.btn-check:active+html[data-netbox-color-mode=dark] .btn-cyan-600,html[data-netbox-color-mode=dark] .btn-cyan-600:active,html[data-netbox-color-mode=dark] .btn-cyan-600.active,.show>html[data-netbox-color-mode=dark] .btn-cyan-600.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-cyan-600,.btn-check:active+html[data-netbox-color-mode=light] .btn-cyan-600,html[data-netbox-color-mode=light] .btn-cyan-600:active,html[data-netbox-color-mode=light] .btn-cyan-600.active,.show>html[data-netbox-color-mode=light] .btn-cyan-600.dropdown-toggle{color:#000;background-color:#3bb5cd;border-color:#23abc6}.btn-check:checked+html .btn-cyan-600:focus,.btn-check:active+html .btn-cyan-600:focus,html .btn-cyan-600:active:focus,html .btn-cyan-600.active:focus,.show>html .btn-cyan-600.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-cyan-600:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-cyan-600:focus,html[data-netbox-color-mode=dark] .btn-cyan-600:active:focus,html[data-netbox-color-mode=dark] .btn-cyan-600.active:focus,.show>html[data-netbox-color-mode=dark] .btn-cyan-600.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-cyan-600:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-cyan-600:focus,html[data-netbox-color-mode=light] .btn-cyan-600:active:focus,html[data-netbox-color-mode=light] .btn-cyan-600.active:focus,.show>html[data-netbox-color-mode=light] .btn-cyan-600.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #098aa380}html .btn-cyan-600:disabled,html .btn-cyan-600.disabled,html[data-netbox-color-mode=dark] .btn-cyan-600:disabled,html[data-netbox-color-mode=dark] .btn-cyan-600.disabled,html[data-netbox-color-mode=light] .btn-cyan-600:disabled,html[data-netbox-color-mode=light] .btn-cyan-600.disabled{color:#000;background-color:#0aa2c0;border-color:#0aa2c0}}@media print{html .btn-cyan-700,html[data-netbox-color-mode=dark] .btn-cyan-700,html[data-netbox-color-mode=light] .btn-cyan-700{color:#fff;background-color:#087990;border-color:#087990}html .btn-cyan-700:hover,html[data-netbox-color-mode=dark] .btn-cyan-700:hover,html[data-netbox-color-mode=light] .btn-cyan-700:hover{color:#fff;background-color:#07677a;border-color:#066173}.btn-check:focus+html .btn-cyan-700,html .btn-cyan-700:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-cyan-700,html[data-netbox-color-mode=dark] .btn-cyan-700:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-cyan-700,html[data-netbox-color-mode=light] .btn-cyan-700:focus{color:#fff;background-color:#07677a;border-color:#066173;box-shadow:0 0 0 .25rem #2d8da180}.btn-check:checked+html .btn-cyan-700,.btn-check:active+html .btn-cyan-700,html .btn-cyan-700:active,html .btn-cyan-700.active,.show>html .btn-cyan-700.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-cyan-700,.btn-check:active+html[data-netbox-color-mode=dark] .btn-cyan-700,html[data-netbox-color-mode=dark] .btn-cyan-700:active,html[data-netbox-color-mode=dark] .btn-cyan-700.active,.show>html[data-netbox-color-mode=dark] .btn-cyan-700.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-cyan-700,.btn-check:active+html[data-netbox-color-mode=light] .btn-cyan-700,html[data-netbox-color-mode=light] .btn-cyan-700:active,html[data-netbox-color-mode=light] .btn-cyan-700.active,.show>html[data-netbox-color-mode=light] .btn-cyan-700.dropdown-toggle{color:#fff;background-color:#066173;border-color:#065b6c}.btn-check:checked+html .btn-cyan-700:focus,.btn-check:active+html .btn-cyan-700:focus,html .btn-cyan-700:active:focus,html .btn-cyan-700.active:focus,.show>html .btn-cyan-700.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-cyan-700:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-cyan-700:focus,html[data-netbox-color-mode=dark] .btn-cyan-700:active:focus,html[data-netbox-color-mode=dark] .btn-cyan-700.active:focus,.show>html[data-netbox-color-mode=dark] .btn-cyan-700.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-cyan-700:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-cyan-700:focus,html[data-netbox-color-mode=light] .btn-cyan-700:active:focus,html[data-netbox-color-mode=light] .btn-cyan-700.active:focus,.show>html[data-netbox-color-mode=light] .btn-cyan-700.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #2d8da180}html .btn-cyan-700:disabled,html .btn-cyan-700.disabled,html[data-netbox-color-mode=dark] .btn-cyan-700:disabled,html[data-netbox-color-mode=dark] .btn-cyan-700.disabled,html[data-netbox-color-mode=light] .btn-cyan-700:disabled,html[data-netbox-color-mode=light] .btn-cyan-700.disabled{color:#fff;background-color:#087990;border-color:#087990}}@media print{html .btn-cyan-800,html[data-netbox-color-mode=dark] .btn-cyan-800,html[data-netbox-color-mode=light] .btn-cyan-800{color:#fff;background-color:#055160;border-color:#055160}html .btn-cyan-800:hover,html[data-netbox-color-mode=dark] .btn-cyan-800:hover,html[data-netbox-color-mode=light] .btn-cyan-800:hover{color:#fff;background-color:#044552;border-color:#04414d}.btn-check:focus+html .btn-cyan-800,html .btn-cyan-800:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-cyan-800,html[data-netbox-color-mode=dark] .btn-cyan-800:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-cyan-800,html[data-netbox-color-mode=light] .btn-cyan-800:focus{color:#fff;background-color:#044552;border-color:#04414d;box-shadow:0 0 0 .25rem #2b6b7880}.btn-check:checked+html .btn-cyan-800,.btn-check:active+html .btn-cyan-800,html .btn-cyan-800:active,html .btn-cyan-800.active,.show>html .btn-cyan-800.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-cyan-800,.btn-check:active+html[data-netbox-color-mode=dark] .btn-cyan-800,html[data-netbox-color-mode=dark] .btn-cyan-800:active,html[data-netbox-color-mode=dark] .btn-cyan-800.active,.show>html[data-netbox-color-mode=dark] .btn-cyan-800.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-cyan-800,.btn-check:active+html[data-netbox-color-mode=light] .btn-cyan-800,html[data-netbox-color-mode=light] .btn-cyan-800:active,html[data-netbox-color-mode=light] .btn-cyan-800.active,.show>html[data-netbox-color-mode=light] .btn-cyan-800.dropdown-toggle{color:#fff;background-color:#04414d;border-color:#043d48}.btn-check:checked+html .btn-cyan-800:focus,.btn-check:active+html .btn-cyan-800:focus,html .btn-cyan-800:active:focus,html .btn-cyan-800.active:focus,.show>html .btn-cyan-800.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-cyan-800:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-cyan-800:focus,html[data-netbox-color-mode=dark] .btn-cyan-800:active:focus,html[data-netbox-color-mode=dark] .btn-cyan-800.active:focus,.show>html[data-netbox-color-mode=dark] .btn-cyan-800.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-cyan-800:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-cyan-800:focus,html[data-netbox-color-mode=light] .btn-cyan-800:active:focus,html[data-netbox-color-mode=light] .btn-cyan-800.active:focus,.show>html[data-netbox-color-mode=light] .btn-cyan-800.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #2b6b7880}html .btn-cyan-800:disabled,html .btn-cyan-800.disabled,html[data-netbox-color-mode=dark] .btn-cyan-800:disabled,html[data-netbox-color-mode=dark] .btn-cyan-800.disabled,html[data-netbox-color-mode=light] .btn-cyan-800:disabled,html[data-netbox-color-mode=light] .btn-cyan-800.disabled{color:#fff;background-color:#055160;border-color:#055160}}@media print{html .btn-cyan-900,html[data-netbox-color-mode=dark] .btn-cyan-900,html[data-netbox-color-mode=light] .btn-cyan-900{color:#fff;background-color:#032830;border-color:#032830}html .btn-cyan-900:hover,html[data-netbox-color-mode=dark] .btn-cyan-900:hover,html[data-netbox-color-mode=light] .btn-cyan-900:hover{color:#fff;background-color:#032229;border-color:#022026}.btn-check:focus+html .btn-cyan-900,html .btn-cyan-900:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-cyan-900,html[data-netbox-color-mode=dark] .btn-cyan-900:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-cyan-900,html[data-netbox-color-mode=light] .btn-cyan-900:focus{color:#fff;background-color:#032229;border-color:#022026;box-shadow:0 0 0 .25rem #29484f80}.btn-check:checked+html .btn-cyan-900,.btn-check:active+html .btn-cyan-900,html .btn-cyan-900:active,html .btn-cyan-900.active,.show>html .btn-cyan-900.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-cyan-900,.btn-check:active+html[data-netbox-color-mode=dark] .btn-cyan-900,html[data-netbox-color-mode=dark] .btn-cyan-900:active,html[data-netbox-color-mode=dark] .btn-cyan-900.active,.show>html[data-netbox-color-mode=dark] .btn-cyan-900.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-cyan-900,.btn-check:active+html[data-netbox-color-mode=light] .btn-cyan-900,html[data-netbox-color-mode=light] .btn-cyan-900:active,html[data-netbox-color-mode=light] .btn-cyan-900.active,.show>html[data-netbox-color-mode=light] .btn-cyan-900.dropdown-toggle{color:#fff;background-color:#022026;border-color:#021e24}.btn-check:checked+html .btn-cyan-900:focus,.btn-check:active+html .btn-cyan-900:focus,html .btn-cyan-900:active:focus,html .btn-cyan-900.active:focus,.show>html .btn-cyan-900.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-cyan-900:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-cyan-900:focus,html[data-netbox-color-mode=dark] .btn-cyan-900:active:focus,html[data-netbox-color-mode=dark] .btn-cyan-900.active:focus,.show>html[data-netbox-color-mode=dark] .btn-cyan-900.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-cyan-900:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-cyan-900:focus,html[data-netbox-color-mode=light] .btn-cyan-900:active:focus,html[data-netbox-color-mode=light] .btn-cyan-900.active:focus,.show>html[data-netbox-color-mode=light] .btn-cyan-900.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #29484f80}html .btn-cyan-900:disabled,html .btn-cyan-900.disabled,html[data-netbox-color-mode=dark] .btn-cyan-900:disabled,html[data-netbox-color-mode=dark] .btn-cyan-900.disabled,html[data-netbox-color-mode=light] .btn-cyan-900:disabled,html[data-netbox-color-mode=light] .btn-cyan-900.disabled{color:#fff;background-color:#032830;border-color:#032830}}@media print{html .btn-indigo-100,html[data-netbox-color-mode=dark] .btn-indigo-100,html[data-netbox-color-mode=light] .btn-indigo-100{color:#000;background-color:#e0cffc;border-color:#e0cffc}html .btn-indigo-100:hover,html[data-netbox-color-mode=dark] .btn-indigo-100:hover,html[data-netbox-color-mode=light] .btn-indigo-100:hover{color:#000;background-color:#e5d6fc;border-color:#e3d4fc}.btn-check:focus+html .btn-indigo-100,html .btn-indigo-100:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-indigo-100,html[data-netbox-color-mode=dark] .btn-indigo-100:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-indigo-100,html[data-netbox-color-mode=light] .btn-indigo-100:focus{color:#000;background-color:#e5d6fc;border-color:#e3d4fc;box-shadow:0 0 0 .25rem #beb0d680}.btn-check:checked+html .btn-indigo-100,.btn-check:active+html .btn-indigo-100,html .btn-indigo-100:active,html .btn-indigo-100.active,.show>html .btn-indigo-100.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-indigo-100,.btn-check:active+html[data-netbox-color-mode=dark] .btn-indigo-100,html[data-netbox-color-mode=dark] .btn-indigo-100:active,html[data-netbox-color-mode=dark] .btn-indigo-100.active,.show>html[data-netbox-color-mode=dark] .btn-indigo-100.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-indigo-100,.btn-check:active+html[data-netbox-color-mode=light] .btn-indigo-100,html[data-netbox-color-mode=light] .btn-indigo-100:active,html[data-netbox-color-mode=light] .btn-indigo-100.active,.show>html[data-netbox-color-mode=light] .btn-indigo-100.dropdown-toggle{color:#000;background-color:#e6d9fd;border-color:#e3d4fc}.btn-check:checked+html .btn-indigo-100:focus,.btn-check:active+html .btn-indigo-100:focus,html .btn-indigo-100:active:focus,html .btn-indigo-100.active:focus,.show>html .btn-indigo-100.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-indigo-100:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-indigo-100:focus,html[data-netbox-color-mode=dark] .btn-indigo-100:active:focus,html[data-netbox-color-mode=dark] .btn-indigo-100.active:focus,.show>html[data-netbox-color-mode=dark] .btn-indigo-100.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-indigo-100:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-indigo-100:focus,html[data-netbox-color-mode=light] .btn-indigo-100:active:focus,html[data-netbox-color-mode=light] .btn-indigo-100.active:focus,.show>html[data-netbox-color-mode=light] .btn-indigo-100.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #beb0d680}html .btn-indigo-100:disabled,html .btn-indigo-100.disabled,html[data-netbox-color-mode=dark] .btn-indigo-100:disabled,html[data-netbox-color-mode=dark] .btn-indigo-100.disabled,html[data-netbox-color-mode=light] .btn-indigo-100:disabled,html[data-netbox-color-mode=light] .btn-indigo-100.disabled{color:#000;background-color:#e0cffc;border-color:#e0cffc}}@media print{html .btn-indigo-200,html[data-netbox-color-mode=dark] .btn-indigo-200,html[data-netbox-color-mode=light] .btn-indigo-200{color:#000;background-color:#c29ffa;border-color:#c29ffa}html .btn-indigo-200:hover,html[data-netbox-color-mode=dark] .btn-indigo-200:hover,html[data-netbox-color-mode=light] .btn-indigo-200:hover{color:#000;background-color:#cbadfb;border-color:#c8a9fb}.btn-check:focus+html .btn-indigo-200,html .btn-indigo-200:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-indigo-200,html[data-netbox-color-mode=dark] .btn-indigo-200:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-indigo-200,html[data-netbox-color-mode=light] .btn-indigo-200:focus{color:#000;background-color:#cbadfb;border-color:#c8a9fb;box-shadow:0 0 0 .25rem #a587d580}.btn-check:checked+html .btn-indigo-200,.btn-check:active+html .btn-indigo-200,html .btn-indigo-200:active,html .btn-indigo-200.active,.show>html .btn-indigo-200.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-indigo-200,.btn-check:active+html[data-netbox-color-mode=dark] .btn-indigo-200,html[data-netbox-color-mode=dark] .btn-indigo-200:active,html[data-netbox-color-mode=dark] .btn-indigo-200.active,.show>html[data-netbox-color-mode=dark] .btn-indigo-200.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-indigo-200,.btn-check:active+html[data-netbox-color-mode=light] .btn-indigo-200,html[data-netbox-color-mode=light] .btn-indigo-200:active,html[data-netbox-color-mode=light] .btn-indigo-200.active,.show>html[data-netbox-color-mode=light] .btn-indigo-200.dropdown-toggle{color:#000;background-color:#ceb2fb;border-color:#c8a9fb}.btn-check:checked+html .btn-indigo-200:focus,.btn-check:active+html .btn-indigo-200:focus,html .btn-indigo-200:active:focus,html .btn-indigo-200.active:focus,.show>html .btn-indigo-200.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-indigo-200:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-indigo-200:focus,html[data-netbox-color-mode=dark] .btn-indigo-200:active:focus,html[data-netbox-color-mode=dark] .btn-indigo-200.active:focus,.show>html[data-netbox-color-mode=dark] .btn-indigo-200.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-indigo-200:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-indigo-200:focus,html[data-netbox-color-mode=light] .btn-indigo-200:active:focus,html[data-netbox-color-mode=light] .btn-indigo-200.active:focus,.show>html[data-netbox-color-mode=light] .btn-indigo-200.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #a587d580}html .btn-indigo-200:disabled,html .btn-indigo-200.disabled,html[data-netbox-color-mode=dark] .btn-indigo-200:disabled,html[data-netbox-color-mode=dark] .btn-indigo-200.disabled,html[data-netbox-color-mode=light] .btn-indigo-200:disabled,html[data-netbox-color-mode=light] .btn-indigo-200.disabled{color:#000;background-color:#c29ffa;border-color:#c29ffa}}@media print{html .btn-indigo-300,html[data-netbox-color-mode=dark] .btn-indigo-300,html[data-netbox-color-mode=light] .btn-indigo-300{color:#000;background-color:#a370f7;border-color:#a370f7}html .btn-indigo-300:hover,html[data-netbox-color-mode=dark] .btn-indigo-300:hover,html[data-netbox-color-mode=light] .btn-indigo-300:hover{color:#000;background-color:#b185f8;border-color:#ac7ef8}.btn-check:focus+html .btn-indigo-300,html .btn-indigo-300:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-indigo-300,html[data-netbox-color-mode=dark] .btn-indigo-300:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-indigo-300,html[data-netbox-color-mode=light] .btn-indigo-300:focus{color:#000;background-color:#b185f8;border-color:#ac7ef8;box-shadow:0 0 0 .25rem #8b5fd280}.btn-check:checked+html .btn-indigo-300,.btn-check:active+html .btn-indigo-300,html .btn-indigo-300:active,html .btn-indigo-300.active,.show>html .btn-indigo-300.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-indigo-300,.btn-check:active+html[data-netbox-color-mode=dark] .btn-indigo-300,html[data-netbox-color-mode=dark] .btn-indigo-300:active,html[data-netbox-color-mode=dark] .btn-indigo-300.active,.show>html[data-netbox-color-mode=dark] .btn-indigo-300.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-indigo-300,.btn-check:active+html[data-netbox-color-mode=light] .btn-indigo-300,html[data-netbox-color-mode=light] .btn-indigo-300:active,html[data-netbox-color-mode=light] .btn-indigo-300.active,.show>html[data-netbox-color-mode=light] .btn-indigo-300.dropdown-toggle{color:#000;background-color:#b58df9;border-color:#ac7ef8}.btn-check:checked+html .btn-indigo-300:focus,.btn-check:active+html .btn-indigo-300:focus,html .btn-indigo-300:active:focus,html .btn-indigo-300.active:focus,.show>html .btn-indigo-300.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-indigo-300:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-indigo-300:focus,html[data-netbox-color-mode=dark] .btn-indigo-300:active:focus,html[data-netbox-color-mode=dark] .btn-indigo-300.active:focus,.show>html[data-netbox-color-mode=dark] .btn-indigo-300.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-indigo-300:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-indigo-300:focus,html[data-netbox-color-mode=light] .btn-indigo-300:active:focus,html[data-netbox-color-mode=light] .btn-indigo-300.active:focus,.show>html[data-netbox-color-mode=light] .btn-indigo-300.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #8b5fd280}html .btn-indigo-300:disabled,html .btn-indigo-300.disabled,html[data-netbox-color-mode=dark] .btn-indigo-300:disabled,html[data-netbox-color-mode=dark] .btn-indigo-300.disabled,html[data-netbox-color-mode=light] .btn-indigo-300:disabled,html[data-netbox-color-mode=light] .btn-indigo-300.disabled{color:#000;background-color:#a370f7;border-color:#a370f7}}@media print{html .btn-indigo-400,html[data-netbox-color-mode=dark] .btn-indigo-400,html[data-netbox-color-mode=light] .btn-indigo-400{color:#fff;background-color:#8540f5;border-color:#8540f5}html .btn-indigo-400:hover,html[data-netbox-color-mode=dark] .btn-indigo-400:hover,html[data-netbox-color-mode=light] .btn-indigo-400:hover{color:#fff;background-color:#7136d0;border-color:#6a33c4}.btn-check:focus+html .btn-indigo-400,html .btn-indigo-400:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-indigo-400,html[data-netbox-color-mode=dark] .btn-indigo-400:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-indigo-400,html[data-netbox-color-mode=light] .btn-indigo-400:focus{color:#fff;background-color:#7136d0;border-color:#6a33c4;box-shadow:0 0 0 .25rem #975df780}.btn-check:checked+html .btn-indigo-400,.btn-check:active+html .btn-indigo-400,html .btn-indigo-400:active,html .btn-indigo-400.active,.show>html .btn-indigo-400.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-indigo-400,.btn-check:active+html[data-netbox-color-mode=dark] .btn-indigo-400,html[data-netbox-color-mode=dark] .btn-indigo-400:active,html[data-netbox-color-mode=dark] .btn-indigo-400.active,.show>html[data-netbox-color-mode=dark] .btn-indigo-400.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-indigo-400,.btn-check:active+html[data-netbox-color-mode=light] .btn-indigo-400,html[data-netbox-color-mode=light] .btn-indigo-400:active,html[data-netbox-color-mode=light] .btn-indigo-400.active,.show>html[data-netbox-color-mode=light] .btn-indigo-400.dropdown-toggle{color:#fff;background-color:#6a33c4;border-color:#6430b8}.btn-check:checked+html .btn-indigo-400:focus,.btn-check:active+html .btn-indigo-400:focus,html .btn-indigo-400:active:focus,html .btn-indigo-400.active:focus,.show>html .btn-indigo-400.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-indigo-400:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-indigo-400:focus,html[data-netbox-color-mode=dark] .btn-indigo-400:active:focus,html[data-netbox-color-mode=dark] .btn-indigo-400.active:focus,.show>html[data-netbox-color-mode=dark] .btn-indigo-400.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-indigo-400:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-indigo-400:focus,html[data-netbox-color-mode=light] .btn-indigo-400:active:focus,html[data-netbox-color-mode=light] .btn-indigo-400.active:focus,.show>html[data-netbox-color-mode=light] .btn-indigo-400.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #975df780}html .btn-indigo-400:disabled,html .btn-indigo-400.disabled,html[data-netbox-color-mode=dark] .btn-indigo-400:disabled,html[data-netbox-color-mode=dark] .btn-indigo-400.disabled,html[data-netbox-color-mode=light] .btn-indigo-400:disabled,html[data-netbox-color-mode=light] .btn-indigo-400.disabled{color:#fff;background-color:#8540f5;border-color:#8540f5}}@media print{html .btn-indigo-500,html[data-netbox-color-mode=dark] .btn-indigo-500,html[data-netbox-color-mode=light] .btn-indigo-500{color:#fff;background-color:#6610f2;border-color:#6610f2}html .btn-indigo-500:hover,html[data-netbox-color-mode=dark] .btn-indigo-500:hover,html[data-netbox-color-mode=light] .btn-indigo-500:hover{color:#fff;background-color:#570ece;border-color:#520dc2}.btn-check:focus+html .btn-indigo-500,html .btn-indigo-500:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-indigo-500,html[data-netbox-color-mode=dark] .btn-indigo-500:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-indigo-500,html[data-netbox-color-mode=light] .btn-indigo-500:focus{color:#fff;background-color:#570ece;border-color:#520dc2;box-shadow:0 0 0 .25rem #7d34f480}.btn-check:checked+html .btn-indigo-500,.btn-check:active+html .btn-indigo-500,html .btn-indigo-500:active,html .btn-indigo-500.active,.show>html .btn-indigo-500.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-indigo-500,.btn-check:active+html[data-netbox-color-mode=dark] .btn-indigo-500,html[data-netbox-color-mode=dark] .btn-indigo-500:active,html[data-netbox-color-mode=dark] .btn-indigo-500.active,.show>html[data-netbox-color-mode=dark] .btn-indigo-500.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-indigo-500,.btn-check:active+html[data-netbox-color-mode=light] .btn-indigo-500,html[data-netbox-color-mode=light] .btn-indigo-500:active,html[data-netbox-color-mode=light] .btn-indigo-500.active,.show>html[data-netbox-color-mode=light] .btn-indigo-500.dropdown-toggle{color:#fff;background-color:#520dc2;border-color:#4d0cb6}.btn-check:checked+html .btn-indigo-500:focus,.btn-check:active+html .btn-indigo-500:focus,html .btn-indigo-500:active:focus,html .btn-indigo-500.active:focus,.show>html .btn-indigo-500.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-indigo-500:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-indigo-500:focus,html[data-netbox-color-mode=dark] .btn-indigo-500:active:focus,html[data-netbox-color-mode=dark] .btn-indigo-500.active:focus,.show>html[data-netbox-color-mode=dark] .btn-indigo-500.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-indigo-500:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-indigo-500:focus,html[data-netbox-color-mode=light] .btn-indigo-500:active:focus,html[data-netbox-color-mode=light] .btn-indigo-500.active:focus,.show>html[data-netbox-color-mode=light] .btn-indigo-500.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #7d34f480}html .btn-indigo-500:disabled,html .btn-indigo-500.disabled,html[data-netbox-color-mode=dark] .btn-indigo-500:disabled,html[data-netbox-color-mode=dark] .btn-indigo-500.disabled,html[data-netbox-color-mode=light] .btn-indigo-500:disabled,html[data-netbox-color-mode=light] .btn-indigo-500.disabled{color:#fff;background-color:#6610f2;border-color:#6610f2}}@media print{html .btn-indigo-600,html[data-netbox-color-mode=dark] .btn-indigo-600,html[data-netbox-color-mode=light] .btn-indigo-600{color:#fff;background-color:#520dc2;border-color:#520dc2}html .btn-indigo-600:hover,html[data-netbox-color-mode=dark] .btn-indigo-600:hover,html[data-netbox-color-mode=light] .btn-indigo-600:hover{color:#fff;background-color:#460ba5;border-color:#420a9b}.btn-check:focus+html .btn-indigo-600,html .btn-indigo-600:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-indigo-600,html[data-netbox-color-mode=dark] .btn-indigo-600:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-indigo-600,html[data-netbox-color-mode=light] .btn-indigo-600:focus{color:#fff;background-color:#460ba5;border-color:#420a9b;box-shadow:0 0 0 .25rem #6c31cb80}.btn-check:checked+html .btn-indigo-600,.btn-check:active+html .btn-indigo-600,html .btn-indigo-600:active,html .btn-indigo-600.active,.show>html .btn-indigo-600.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-indigo-600,.btn-check:active+html[data-netbox-color-mode=dark] .btn-indigo-600,html[data-netbox-color-mode=dark] .btn-indigo-600:active,html[data-netbox-color-mode=dark] .btn-indigo-600.active,.show>html[data-netbox-color-mode=dark] .btn-indigo-600.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-indigo-600,.btn-check:active+html[data-netbox-color-mode=light] .btn-indigo-600,html[data-netbox-color-mode=light] .btn-indigo-600:active,html[data-netbox-color-mode=light] .btn-indigo-600.active,.show>html[data-netbox-color-mode=light] .btn-indigo-600.dropdown-toggle{color:#fff;background-color:#420a9b;border-color:#3e0a92}.btn-check:checked+html .btn-indigo-600:focus,.btn-check:active+html .btn-indigo-600:focus,html .btn-indigo-600:active:focus,html .btn-indigo-600.active:focus,.show>html .btn-indigo-600.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-indigo-600:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-indigo-600:focus,html[data-netbox-color-mode=dark] .btn-indigo-600:active:focus,html[data-netbox-color-mode=dark] .btn-indigo-600.active:focus,.show>html[data-netbox-color-mode=dark] .btn-indigo-600.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-indigo-600:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-indigo-600:focus,html[data-netbox-color-mode=light] .btn-indigo-600:active:focus,html[data-netbox-color-mode=light] .btn-indigo-600.active:focus,.show>html[data-netbox-color-mode=light] .btn-indigo-600.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #6c31cb80}html .btn-indigo-600:disabled,html .btn-indigo-600.disabled,html[data-netbox-color-mode=dark] .btn-indigo-600:disabled,html[data-netbox-color-mode=dark] .btn-indigo-600.disabled,html[data-netbox-color-mode=light] .btn-indigo-600:disabled,html[data-netbox-color-mode=light] .btn-indigo-600.disabled{color:#fff;background-color:#520dc2;border-color:#520dc2}}@media print{html .btn-indigo-700,html[data-netbox-color-mode=dark] .btn-indigo-700,html[data-netbox-color-mode=light] .btn-indigo-700{color:#fff;background-color:#3d0a91;border-color:#3d0a91}html .btn-indigo-700:hover,html[data-netbox-color-mode=dark] .btn-indigo-700:hover,html[data-netbox-color-mode=light] .btn-indigo-700:hover{color:#fff;background-color:#34097b;border-color:#310874}.btn-check:focus+html .btn-indigo-700,html .btn-indigo-700:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-indigo-700,html[data-netbox-color-mode=dark] .btn-indigo-700:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-indigo-700,html[data-netbox-color-mode=light] .btn-indigo-700:focus{color:#fff;background-color:#34097b;border-color:#310874;box-shadow:0 0 0 .25rem #5a2fa280}.btn-check:checked+html .btn-indigo-700,.btn-check:active+html .btn-indigo-700,html .btn-indigo-700:active,html .btn-indigo-700.active,.show>html .btn-indigo-700.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-indigo-700,.btn-check:active+html[data-netbox-color-mode=dark] .btn-indigo-700,html[data-netbox-color-mode=dark] .btn-indigo-700:active,html[data-netbox-color-mode=dark] .btn-indigo-700.active,.show>html[data-netbox-color-mode=dark] .btn-indigo-700.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-indigo-700,.btn-check:active+html[data-netbox-color-mode=light] .btn-indigo-700,html[data-netbox-color-mode=light] .btn-indigo-700:active,html[data-netbox-color-mode=light] .btn-indigo-700.active,.show>html[data-netbox-color-mode=light] .btn-indigo-700.dropdown-toggle{color:#fff;background-color:#310874;border-color:#2e086d}.btn-check:checked+html .btn-indigo-700:focus,.btn-check:active+html .btn-indigo-700:focus,html .btn-indigo-700:active:focus,html .btn-indigo-700.active:focus,.show>html .btn-indigo-700.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-indigo-700:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-indigo-700:focus,html[data-netbox-color-mode=dark] .btn-indigo-700:active:focus,html[data-netbox-color-mode=dark] .btn-indigo-700.active:focus,.show>html[data-netbox-color-mode=dark] .btn-indigo-700.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-indigo-700:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-indigo-700:focus,html[data-netbox-color-mode=light] .btn-indigo-700:active:focus,html[data-netbox-color-mode=light] .btn-indigo-700.active:focus,.show>html[data-netbox-color-mode=light] .btn-indigo-700.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #5a2fa280}html .btn-indigo-700:disabled,html .btn-indigo-700.disabled,html[data-netbox-color-mode=dark] .btn-indigo-700:disabled,html[data-netbox-color-mode=dark] .btn-indigo-700.disabled,html[data-netbox-color-mode=light] .btn-indigo-700:disabled,html[data-netbox-color-mode=light] .btn-indigo-700.disabled{color:#fff;background-color:#3d0a91;border-color:#3d0a91}}@media print{html .btn-indigo-800,html[data-netbox-color-mode=dark] .btn-indigo-800,html[data-netbox-color-mode=light] .btn-indigo-800{color:#fff;background-color:#290661;border-color:#290661}html .btn-indigo-800:hover,html[data-netbox-color-mode=dark] .btn-indigo-800:hover,html[data-netbox-color-mode=light] .btn-indigo-800:hover{color:#fff;background-color:#230552;border-color:#21054e}.btn-check:focus+html .btn-indigo-800,html .btn-indigo-800:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-indigo-800,html[data-netbox-color-mode=dark] .btn-indigo-800:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-indigo-800,html[data-netbox-color-mode=light] .btn-indigo-800:focus{color:#fff;background-color:#230552;border-color:#21054e;box-shadow:0 0 0 .25rem #492b7980}.btn-check:checked+html .btn-indigo-800,.btn-check:active+html .btn-indigo-800,html .btn-indigo-800:active,html .btn-indigo-800.active,.show>html .btn-indigo-800.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-indigo-800,.btn-check:active+html[data-netbox-color-mode=dark] .btn-indigo-800,html[data-netbox-color-mode=dark] .btn-indigo-800:active,html[data-netbox-color-mode=dark] .btn-indigo-800.active,.show>html[data-netbox-color-mode=dark] .btn-indigo-800.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-indigo-800,.btn-check:active+html[data-netbox-color-mode=light] .btn-indigo-800,html[data-netbox-color-mode=light] .btn-indigo-800:active,html[data-netbox-color-mode=light] .btn-indigo-800.active,.show>html[data-netbox-color-mode=light] .btn-indigo-800.dropdown-toggle{color:#fff;background-color:#21054e;border-color:#1f0549}.btn-check:checked+html .btn-indigo-800:focus,.btn-check:active+html .btn-indigo-800:focus,html .btn-indigo-800:active:focus,html .btn-indigo-800.active:focus,.show>html .btn-indigo-800.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-indigo-800:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-indigo-800:focus,html[data-netbox-color-mode=dark] .btn-indigo-800:active:focus,html[data-netbox-color-mode=dark] .btn-indigo-800.active:focus,.show>html[data-netbox-color-mode=dark] .btn-indigo-800.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-indigo-800:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-indigo-800:focus,html[data-netbox-color-mode=light] .btn-indigo-800:active:focus,html[data-netbox-color-mode=light] .btn-indigo-800.active:focus,.show>html[data-netbox-color-mode=light] .btn-indigo-800.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #492b7980}html .btn-indigo-800:disabled,html .btn-indigo-800.disabled,html[data-netbox-color-mode=dark] .btn-indigo-800:disabled,html[data-netbox-color-mode=dark] .btn-indigo-800.disabled,html[data-netbox-color-mode=light] .btn-indigo-800:disabled,html[data-netbox-color-mode=light] .btn-indigo-800.disabled{color:#fff;background-color:#290661;border-color:#290661}}@media print{html .btn-indigo-900,html[data-netbox-color-mode=dark] .btn-indigo-900,html[data-netbox-color-mode=light] .btn-indigo-900{color:#fff;background-color:#140330;border-color:#140330}html .btn-indigo-900:hover,html[data-netbox-color-mode=dark] .btn-indigo-900:hover,html[data-netbox-color-mode=light] .btn-indigo-900:hover{color:#fff;background-color:#110329;border-color:#100226}.btn-check:focus+html .btn-indigo-900,html .btn-indigo-900:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-indigo-900,html[data-netbox-color-mode=dark] .btn-indigo-900:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-indigo-900,html[data-netbox-color-mode=light] .btn-indigo-900:focus{color:#fff;background-color:#110329;border-color:#100226;box-shadow:0 0 0 .25rem #37294f80}.btn-check:checked+html .btn-indigo-900,.btn-check:active+html .btn-indigo-900,html .btn-indigo-900:active,html .btn-indigo-900.active,.show>html .btn-indigo-900.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-indigo-900,.btn-check:active+html[data-netbox-color-mode=dark] .btn-indigo-900,html[data-netbox-color-mode=dark] .btn-indigo-900:active,html[data-netbox-color-mode=dark] .btn-indigo-900.active,.show>html[data-netbox-color-mode=dark] .btn-indigo-900.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-indigo-900,.btn-check:active+html[data-netbox-color-mode=light] .btn-indigo-900,html[data-netbox-color-mode=light] .btn-indigo-900:active,html[data-netbox-color-mode=light] .btn-indigo-900.active,.show>html[data-netbox-color-mode=light] .btn-indigo-900.dropdown-toggle{color:#fff;background-color:#100226;border-color:#0f0224}.btn-check:checked+html .btn-indigo-900:focus,.btn-check:active+html .btn-indigo-900:focus,html .btn-indigo-900:active:focus,html .btn-indigo-900.active:focus,.show>html .btn-indigo-900.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-indigo-900:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-indigo-900:focus,html[data-netbox-color-mode=dark] .btn-indigo-900:active:focus,html[data-netbox-color-mode=dark] .btn-indigo-900.active:focus,.show>html[data-netbox-color-mode=dark] .btn-indigo-900.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-indigo-900:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-indigo-900:focus,html[data-netbox-color-mode=light] .btn-indigo-900:active:focus,html[data-netbox-color-mode=light] .btn-indigo-900.active:focus,.show>html[data-netbox-color-mode=light] .btn-indigo-900.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #37294f80}html .btn-indigo-900:disabled,html .btn-indigo-900.disabled,html[data-netbox-color-mode=dark] .btn-indigo-900:disabled,html[data-netbox-color-mode=dark] .btn-indigo-900.disabled,html[data-netbox-color-mode=light] .btn-indigo-900:disabled,html[data-netbox-color-mode=light] .btn-indigo-900.disabled{color:#fff;background-color:#140330;border-color:#140330}}@media print{html .btn-purple-100,html[data-netbox-color-mode=dark] .btn-purple-100,html[data-netbox-color-mode=light] .btn-purple-100{color:#000;background-color:#e2d9f3;border-color:#e2d9f3}html .btn-purple-100:hover,html[data-netbox-color-mode=dark] .btn-purple-100:hover,html[data-netbox-color-mode=light] .btn-purple-100:hover{color:#000;background-color:#e6dff5;border-color:#e5ddf4}.btn-check:focus+html .btn-purple-100,html .btn-purple-100:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-purple-100,html[data-netbox-color-mode=dark] .btn-purple-100:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-purple-100,html[data-netbox-color-mode=light] .btn-purple-100:focus{color:#000;background-color:#e6dff5;border-color:#e5ddf4;box-shadow:0 0 0 .25rem #c0b8cf80}.btn-check:checked+html .btn-purple-100,.btn-check:active+html .btn-purple-100,html .btn-purple-100:active,html .btn-purple-100.active,.show>html .btn-purple-100.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-purple-100,.btn-check:active+html[data-netbox-color-mode=dark] .btn-purple-100,html[data-netbox-color-mode=dark] .btn-purple-100:active,html[data-netbox-color-mode=dark] .btn-purple-100.active,.show>html[data-netbox-color-mode=dark] .btn-purple-100.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-purple-100,.btn-check:active+html[data-netbox-color-mode=light] .btn-purple-100,html[data-netbox-color-mode=light] .btn-purple-100:active,html[data-netbox-color-mode=light] .btn-purple-100.active,.show>html[data-netbox-color-mode=light] .btn-purple-100.dropdown-toggle{color:#000;background-color:#e8e1f5;border-color:#e5ddf4}.btn-check:checked+html .btn-purple-100:focus,.btn-check:active+html .btn-purple-100:focus,html .btn-purple-100:active:focus,html .btn-purple-100.active:focus,.show>html .btn-purple-100.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-purple-100:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-purple-100:focus,html[data-netbox-color-mode=dark] .btn-purple-100:active:focus,html[data-netbox-color-mode=dark] .btn-purple-100.active:focus,.show>html[data-netbox-color-mode=dark] .btn-purple-100.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-purple-100:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-purple-100:focus,html[data-netbox-color-mode=light] .btn-purple-100:active:focus,html[data-netbox-color-mode=light] .btn-purple-100.active:focus,.show>html[data-netbox-color-mode=light] .btn-purple-100.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #c0b8cf80}html .btn-purple-100:disabled,html .btn-purple-100.disabled,html[data-netbox-color-mode=dark] .btn-purple-100:disabled,html[data-netbox-color-mode=dark] .btn-purple-100.disabled,html[data-netbox-color-mode=light] .btn-purple-100:disabled,html[data-netbox-color-mode=light] .btn-purple-100.disabled{color:#000;background-color:#e2d9f3;border-color:#e2d9f3}}@media print{html .btn-purple-200,html[data-netbox-color-mode=dark] .btn-purple-200,html[data-netbox-color-mode=light] .btn-purple-200{color:#000;background-color:#c5b3e6;border-color:#c5b3e6}html .btn-purple-200:hover,html[data-netbox-color-mode=dark] .btn-purple-200:hover,html[data-netbox-color-mode=light] .btn-purple-200:hover{color:#000;background-color:#cebeea;border-color:#cbbbe9}.btn-check:focus+html .btn-purple-200,html .btn-purple-200:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-purple-200,html[data-netbox-color-mode=dark] .btn-purple-200:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-purple-200,html[data-netbox-color-mode=light] .btn-purple-200:focus{color:#000;background-color:#cebeea;border-color:#cbbbe9;box-shadow:0 0 0 .25rem #a798c480}.btn-check:checked+html .btn-purple-200,.btn-check:active+html .btn-purple-200,html .btn-purple-200:active,html .btn-purple-200.active,.show>html .btn-purple-200.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-purple-200,.btn-check:active+html[data-netbox-color-mode=dark] .btn-purple-200,html[data-netbox-color-mode=dark] .btn-purple-200:active,html[data-netbox-color-mode=dark] .btn-purple-200.active,.show>html[data-netbox-color-mode=dark] .btn-purple-200.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-purple-200,.btn-check:active+html[data-netbox-color-mode=light] .btn-purple-200,html[data-netbox-color-mode=light] .btn-purple-200:active,html[data-netbox-color-mode=light] .btn-purple-200.active,.show>html[data-netbox-color-mode=light] .btn-purple-200.dropdown-toggle{color:#000;background-color:#d1c2eb;border-color:#cbbbe9}.btn-check:checked+html .btn-purple-200:focus,.btn-check:active+html .btn-purple-200:focus,html .btn-purple-200:active:focus,html .btn-purple-200.active:focus,.show>html .btn-purple-200.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-purple-200:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-purple-200:focus,html[data-netbox-color-mode=dark] .btn-purple-200:active:focus,html[data-netbox-color-mode=dark] .btn-purple-200.active:focus,.show>html[data-netbox-color-mode=dark] .btn-purple-200.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-purple-200:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-purple-200:focus,html[data-netbox-color-mode=light] .btn-purple-200:active:focus,html[data-netbox-color-mode=light] .btn-purple-200.active:focus,.show>html[data-netbox-color-mode=light] .btn-purple-200.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #a798c480}html .btn-purple-200:disabled,html .btn-purple-200.disabled,html[data-netbox-color-mode=dark] .btn-purple-200:disabled,html[data-netbox-color-mode=dark] .btn-purple-200.disabled,html[data-netbox-color-mode=light] .btn-purple-200:disabled,html[data-netbox-color-mode=light] .btn-purple-200.disabled{color:#000;background-color:#c5b3e6;border-color:#c5b3e6}}@media print{html .btn-purple-300,html[data-netbox-color-mode=dark] .btn-purple-300,html[data-netbox-color-mode=light] .btn-purple-300{color:#000;background-color:#a98eda;border-color:#a98eda}html .btn-purple-300:hover,html[data-netbox-color-mode=dark] .btn-purple-300:hover,html[data-netbox-color-mode=light] .btn-purple-300:hover{color:#000;background-color:#b69fe0;border-color:#b299de}.btn-check:focus+html .btn-purple-300,html .btn-purple-300:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-purple-300,html[data-netbox-color-mode=dark] .btn-purple-300:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-purple-300,html[data-netbox-color-mode=light] .btn-purple-300:focus{color:#000;background-color:#b69fe0;border-color:#b299de;box-shadow:0 0 0 .25rem #9079b980}.btn-check:checked+html .btn-purple-300,.btn-check:active+html .btn-purple-300,html .btn-purple-300:active,html .btn-purple-300.active,.show>html .btn-purple-300.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-purple-300,.btn-check:active+html[data-netbox-color-mode=dark] .btn-purple-300,html[data-netbox-color-mode=dark] .btn-purple-300:active,html[data-netbox-color-mode=dark] .btn-purple-300.active,.show>html[data-netbox-color-mode=dark] .btn-purple-300.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-purple-300,.btn-check:active+html[data-netbox-color-mode=light] .btn-purple-300,html[data-netbox-color-mode=light] .btn-purple-300:active,html[data-netbox-color-mode=light] .btn-purple-300.active,.show>html[data-netbox-color-mode=light] .btn-purple-300.dropdown-toggle{color:#000;background-color:#baa5e1;border-color:#b299de}.btn-check:checked+html .btn-purple-300:focus,.btn-check:active+html .btn-purple-300:focus,html .btn-purple-300:active:focus,html .btn-purple-300.active:focus,.show>html .btn-purple-300.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-purple-300:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-purple-300:focus,html[data-netbox-color-mode=dark] .btn-purple-300:active:focus,html[data-netbox-color-mode=dark] .btn-purple-300.active:focus,.show>html[data-netbox-color-mode=dark] .btn-purple-300.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-purple-300:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-purple-300:focus,html[data-netbox-color-mode=light] .btn-purple-300:active:focus,html[data-netbox-color-mode=light] .btn-purple-300.active:focus,.show>html[data-netbox-color-mode=light] .btn-purple-300.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #9079b980}html .btn-purple-300:disabled,html .btn-purple-300.disabled,html[data-netbox-color-mode=dark] .btn-purple-300:disabled,html[data-netbox-color-mode=dark] .btn-purple-300.disabled,html[data-netbox-color-mode=light] .btn-purple-300:disabled,html[data-netbox-color-mode=light] .btn-purple-300.disabled{color:#000;background-color:#a98eda;border-color:#a98eda}}@media print{html .btn-purple-400,html[data-netbox-color-mode=dark] .btn-purple-400,html[data-netbox-color-mode=light] .btn-purple-400{color:#000;background-color:#8c68cd;border-color:#8c68cd}html .btn-purple-400:hover,html[data-netbox-color-mode=dark] .btn-purple-400:hover,html[data-netbox-color-mode=light] .btn-purple-400:hover{color:#000;background-color:#9d7fd5;border-color:#9877d2}.btn-check:focus+html .btn-purple-400,html .btn-purple-400:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-purple-400,html[data-netbox-color-mode=dark] .btn-purple-400:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-purple-400,html[data-netbox-color-mode=light] .btn-purple-400:focus{color:#000;background-color:#9d7fd5;border-color:#9877d2;box-shadow:0 0 0 .25rem #7758ae80}.btn-check:checked+html .btn-purple-400,.btn-check:active+html .btn-purple-400,html .btn-purple-400:active,html .btn-purple-400.active,.show>html .btn-purple-400.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-purple-400,.btn-check:active+html[data-netbox-color-mode=dark] .btn-purple-400,html[data-netbox-color-mode=dark] .btn-purple-400:active,html[data-netbox-color-mode=dark] .btn-purple-400.active,.show>html[data-netbox-color-mode=dark] .btn-purple-400.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-purple-400,.btn-check:active+html[data-netbox-color-mode=light] .btn-purple-400,html[data-netbox-color-mode=light] .btn-purple-400:active,html[data-netbox-color-mode=light] .btn-purple-400.active,.show>html[data-netbox-color-mode=light] .btn-purple-400.dropdown-toggle{color:#000;background-color:#a386d7;border-color:#9877d2}.btn-check:checked+html .btn-purple-400:focus,.btn-check:active+html .btn-purple-400:focus,html .btn-purple-400:active:focus,html .btn-purple-400.active:focus,.show>html .btn-purple-400.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-purple-400:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-purple-400:focus,html[data-netbox-color-mode=dark] .btn-purple-400:active:focus,html[data-netbox-color-mode=dark] .btn-purple-400.active:focus,.show>html[data-netbox-color-mode=dark] .btn-purple-400.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-purple-400:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-purple-400:focus,html[data-netbox-color-mode=light] .btn-purple-400:active:focus,html[data-netbox-color-mode=light] .btn-purple-400.active:focus,.show>html[data-netbox-color-mode=light] .btn-purple-400.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #7758ae80}html .btn-purple-400:disabled,html .btn-purple-400.disabled,html[data-netbox-color-mode=dark] .btn-purple-400:disabled,html[data-netbox-color-mode=dark] .btn-purple-400.disabled,html[data-netbox-color-mode=light] .btn-purple-400:disabled,html[data-netbox-color-mode=light] .btn-purple-400.disabled{color:#000;background-color:#8c68cd;border-color:#8c68cd}}@media print{html .btn-purple-500,html[data-netbox-color-mode=dark] .btn-purple-500,html[data-netbox-color-mode=light] .btn-purple-500{color:#fff;background-color:#6f42c1;border-color:#6f42c1}html .btn-purple-500:hover,html[data-netbox-color-mode=dark] .btn-purple-500:hover,html[data-netbox-color-mode=light] .btn-purple-500:hover{color:#fff;background-color:#5e38a4;border-color:#59359a}.btn-check:focus+html .btn-purple-500,html .btn-purple-500:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-purple-500,html[data-netbox-color-mode=dark] .btn-purple-500:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-purple-500,html[data-netbox-color-mode=light] .btn-purple-500:focus{color:#fff;background-color:#5e38a4;border-color:#59359a;box-shadow:0 0 0 .25rem #855eca80}.btn-check:checked+html .btn-purple-500,.btn-check:active+html .btn-purple-500,html .btn-purple-500:active,html .btn-purple-500.active,.show>html .btn-purple-500.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-purple-500,.btn-check:active+html[data-netbox-color-mode=dark] .btn-purple-500,html[data-netbox-color-mode=dark] .btn-purple-500:active,html[data-netbox-color-mode=dark] .btn-purple-500.active,.show>html[data-netbox-color-mode=dark] .btn-purple-500.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-purple-500,.btn-check:active+html[data-netbox-color-mode=light] .btn-purple-500,html[data-netbox-color-mode=light] .btn-purple-500:active,html[data-netbox-color-mode=light] .btn-purple-500.active,.show>html[data-netbox-color-mode=light] .btn-purple-500.dropdown-toggle{color:#fff;background-color:#59359a;border-color:#533291}.btn-check:checked+html .btn-purple-500:focus,.btn-check:active+html .btn-purple-500:focus,html .btn-purple-500:active:focus,html .btn-purple-500.active:focus,.show>html .btn-purple-500.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-purple-500:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-purple-500:focus,html[data-netbox-color-mode=dark] .btn-purple-500:active:focus,html[data-netbox-color-mode=dark] .btn-purple-500.active:focus,.show>html[data-netbox-color-mode=dark] .btn-purple-500.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-purple-500:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-purple-500:focus,html[data-netbox-color-mode=light] .btn-purple-500:active:focus,html[data-netbox-color-mode=light] .btn-purple-500.active:focus,.show>html[data-netbox-color-mode=light] .btn-purple-500.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #855eca80}html .btn-purple-500:disabled,html .btn-purple-500.disabled,html[data-netbox-color-mode=dark] .btn-purple-500:disabled,html[data-netbox-color-mode=dark] .btn-purple-500.disabled,html[data-netbox-color-mode=light] .btn-purple-500:disabled,html[data-netbox-color-mode=light] .btn-purple-500.disabled{color:#fff;background-color:#6f42c1;border-color:#6f42c1}}@media print{html .btn-purple-600,html[data-netbox-color-mode=dark] .btn-purple-600,html[data-netbox-color-mode=light] .btn-purple-600{color:#fff;background-color:#59359a;border-color:#59359a}html .btn-purple-600:hover,html[data-netbox-color-mode=dark] .btn-purple-600:hover,html[data-netbox-color-mode=light] .btn-purple-600:hover{color:#fff;background-color:#4c2d83;border-color:#472a7b}.btn-check:focus+html .btn-purple-600,html .btn-purple-600:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-purple-600,html[data-netbox-color-mode=dark] .btn-purple-600:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-purple-600,html[data-netbox-color-mode=light] .btn-purple-600:focus{color:#fff;background-color:#4c2d83;border-color:#472a7b;box-shadow:0 0 0 .25rem #7253a980}.btn-check:checked+html .btn-purple-600,.btn-check:active+html .btn-purple-600,html .btn-purple-600:active,html .btn-purple-600.active,.show>html .btn-purple-600.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-purple-600,.btn-check:active+html[data-netbox-color-mode=dark] .btn-purple-600,html[data-netbox-color-mode=dark] .btn-purple-600:active,html[data-netbox-color-mode=dark] .btn-purple-600.active,.show>html[data-netbox-color-mode=dark] .btn-purple-600.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-purple-600,.btn-check:active+html[data-netbox-color-mode=light] .btn-purple-600,html[data-netbox-color-mode=light] .btn-purple-600:active,html[data-netbox-color-mode=light] .btn-purple-600.active,.show>html[data-netbox-color-mode=light] .btn-purple-600.dropdown-toggle{color:#fff;background-color:#472a7b;border-color:#432874}.btn-check:checked+html .btn-purple-600:focus,.btn-check:active+html .btn-purple-600:focus,html .btn-purple-600:active:focus,html .btn-purple-600.active:focus,.show>html .btn-purple-600.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-purple-600:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-purple-600:focus,html[data-netbox-color-mode=dark] .btn-purple-600:active:focus,html[data-netbox-color-mode=dark] .btn-purple-600.active:focus,.show>html[data-netbox-color-mode=dark] .btn-purple-600.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-purple-600:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-purple-600:focus,html[data-netbox-color-mode=light] .btn-purple-600:active:focus,html[data-netbox-color-mode=light] .btn-purple-600.active:focus,.show>html[data-netbox-color-mode=light] .btn-purple-600.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #7253a980}html .btn-purple-600:disabled,html .btn-purple-600.disabled,html[data-netbox-color-mode=dark] .btn-purple-600:disabled,html[data-netbox-color-mode=dark] .btn-purple-600.disabled,html[data-netbox-color-mode=light] .btn-purple-600:disabled,html[data-netbox-color-mode=light] .btn-purple-600.disabled{color:#fff;background-color:#59359a;border-color:#59359a}}@media print{html .btn-purple-700,html[data-netbox-color-mode=dark] .btn-purple-700,html[data-netbox-color-mode=light] .btn-purple-700{color:#fff;background-color:#432874;border-color:#432874}html .btn-purple-700:hover,html[data-netbox-color-mode=dark] .btn-purple-700:hover,html[data-netbox-color-mode=light] .btn-purple-700:hover{color:#fff;background-color:#392263;border-color:#36205d}.btn-check:focus+html .btn-purple-700,html .btn-purple-700:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-purple-700,html[data-netbox-color-mode=dark] .btn-purple-700:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-purple-700,html[data-netbox-color-mode=light] .btn-purple-700:focus{color:#fff;background-color:#392263;border-color:#36205d;box-shadow:0 0 0 .25rem #5f488980}.btn-check:checked+html .btn-purple-700,.btn-check:active+html .btn-purple-700,html .btn-purple-700:active,html .btn-purple-700.active,.show>html .btn-purple-700.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-purple-700,.btn-check:active+html[data-netbox-color-mode=dark] .btn-purple-700,html[data-netbox-color-mode=dark] .btn-purple-700:active,html[data-netbox-color-mode=dark] .btn-purple-700.active,.show>html[data-netbox-color-mode=dark] .btn-purple-700.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-purple-700,.btn-check:active+html[data-netbox-color-mode=light] .btn-purple-700,html[data-netbox-color-mode=light] .btn-purple-700:active,html[data-netbox-color-mode=light] .btn-purple-700.active,.show>html[data-netbox-color-mode=light] .btn-purple-700.dropdown-toggle{color:#fff;background-color:#36205d;border-color:#321e57}.btn-check:checked+html .btn-purple-700:focus,.btn-check:active+html .btn-purple-700:focus,html .btn-purple-700:active:focus,html .btn-purple-700.active:focus,.show>html .btn-purple-700.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-purple-700:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-purple-700:focus,html[data-netbox-color-mode=dark] .btn-purple-700:active:focus,html[data-netbox-color-mode=dark] .btn-purple-700.active:focus,.show>html[data-netbox-color-mode=dark] .btn-purple-700.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-purple-700:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-purple-700:focus,html[data-netbox-color-mode=light] .btn-purple-700:active:focus,html[data-netbox-color-mode=light] .btn-purple-700.active:focus,.show>html[data-netbox-color-mode=light] .btn-purple-700.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #5f488980}html .btn-purple-700:disabled,html .btn-purple-700.disabled,html[data-netbox-color-mode=dark] .btn-purple-700:disabled,html[data-netbox-color-mode=dark] .btn-purple-700.disabled,html[data-netbox-color-mode=light] .btn-purple-700:disabled,html[data-netbox-color-mode=light] .btn-purple-700.disabled{color:#fff;background-color:#432874;border-color:#432874}}@media print{html .btn-purple-800,html[data-netbox-color-mode=dark] .btn-purple-800,html[data-netbox-color-mode=light] .btn-purple-800{color:#fff;background-color:#2c1a4d;border-color:#2c1a4d}html .btn-purple-800:hover,html[data-netbox-color-mode=dark] .btn-purple-800:hover,html[data-netbox-color-mode=light] .btn-purple-800:hover{color:#fff;background-color:#251641;border-color:#23153e}.btn-check:focus+html .btn-purple-800,html .btn-purple-800:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-purple-800,html[data-netbox-color-mode=dark] .btn-purple-800:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-purple-800,html[data-netbox-color-mode=light] .btn-purple-800:focus{color:#fff;background-color:#251641;border-color:#23153e;box-shadow:0 0 0 .25rem #4c3c6880}.btn-check:checked+html .btn-purple-800,.btn-check:active+html .btn-purple-800,html .btn-purple-800:active,html .btn-purple-800.active,.show>html .btn-purple-800.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-purple-800,.btn-check:active+html[data-netbox-color-mode=dark] .btn-purple-800,html[data-netbox-color-mode=dark] .btn-purple-800:active,html[data-netbox-color-mode=dark] .btn-purple-800.active,.show>html[data-netbox-color-mode=dark] .btn-purple-800.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-purple-800,.btn-check:active+html[data-netbox-color-mode=light] .btn-purple-800,html[data-netbox-color-mode=light] .btn-purple-800:active,html[data-netbox-color-mode=light] .btn-purple-800.active,.show>html[data-netbox-color-mode=light] .btn-purple-800.dropdown-toggle{color:#fff;background-color:#23153e;border-color:#21143a}.btn-check:checked+html .btn-purple-800:focus,.btn-check:active+html .btn-purple-800:focus,html .btn-purple-800:active:focus,html .btn-purple-800.active:focus,.show>html .btn-purple-800.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-purple-800:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-purple-800:focus,html[data-netbox-color-mode=dark] .btn-purple-800:active:focus,html[data-netbox-color-mode=dark] .btn-purple-800.active:focus,.show>html[data-netbox-color-mode=dark] .btn-purple-800.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-purple-800:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-purple-800:focus,html[data-netbox-color-mode=light] .btn-purple-800:active:focus,html[data-netbox-color-mode=light] .btn-purple-800.active:focus,.show>html[data-netbox-color-mode=light] .btn-purple-800.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #4c3c6880}html .btn-purple-800:disabled,html .btn-purple-800.disabled,html[data-netbox-color-mode=dark] .btn-purple-800:disabled,html[data-netbox-color-mode=dark] .btn-purple-800.disabled,html[data-netbox-color-mode=light] .btn-purple-800:disabled,html[data-netbox-color-mode=light] .btn-purple-800.disabled{color:#fff;background-color:#2c1a4d;border-color:#2c1a4d}}@media print{html .btn-purple-900,html[data-netbox-color-mode=dark] .btn-purple-900,html[data-netbox-color-mode=light] .btn-purple-900{color:#fff;background-color:#160d27;border-color:#160d27}html .btn-purple-900:hover,html[data-netbox-color-mode=dark] .btn-purple-900:hover,html[data-netbox-color-mode=light] .btn-purple-900:hover{color:#fff;background-color:#130b21;border-color:#120a1f}.btn-check:focus+html .btn-purple-900,html .btn-purple-900:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-purple-900,html[data-netbox-color-mode=dark] .btn-purple-900:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-purple-900,html[data-netbox-color-mode=light] .btn-purple-900:focus{color:#fff;background-color:#130b21;border-color:#120a1f;box-shadow:0 0 0 .25rem #39314780}.btn-check:checked+html .btn-purple-900,.btn-check:active+html .btn-purple-900,html .btn-purple-900:active,html .btn-purple-900.active,.show>html .btn-purple-900.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-purple-900,.btn-check:active+html[data-netbox-color-mode=dark] .btn-purple-900,html[data-netbox-color-mode=dark] .btn-purple-900:active,html[data-netbox-color-mode=dark] .btn-purple-900.active,.show>html[data-netbox-color-mode=dark] .btn-purple-900.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-purple-900,.btn-check:active+html[data-netbox-color-mode=light] .btn-purple-900,html[data-netbox-color-mode=light] .btn-purple-900:active,html[data-netbox-color-mode=light] .btn-purple-900.active,.show>html[data-netbox-color-mode=light] .btn-purple-900.dropdown-toggle{color:#fff;background-color:#120a1f;border-color:#110a1d}.btn-check:checked+html .btn-purple-900:focus,.btn-check:active+html .btn-purple-900:focus,html .btn-purple-900:active:focus,html .btn-purple-900.active:focus,.show>html .btn-purple-900.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-purple-900:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-purple-900:focus,html[data-netbox-color-mode=dark] .btn-purple-900:active:focus,html[data-netbox-color-mode=dark] .btn-purple-900.active:focus,.show>html[data-netbox-color-mode=dark] .btn-purple-900.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-purple-900:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-purple-900:focus,html[data-netbox-color-mode=light] .btn-purple-900:active:focus,html[data-netbox-color-mode=light] .btn-purple-900.active:focus,.show>html[data-netbox-color-mode=light] .btn-purple-900.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #39314780}html .btn-purple-900:disabled,html .btn-purple-900.disabled,html[data-netbox-color-mode=dark] .btn-purple-900:disabled,html[data-netbox-color-mode=dark] .btn-purple-900.disabled,html[data-netbox-color-mode=light] .btn-purple-900:disabled,html[data-netbox-color-mode=light] .btn-purple-900.disabled{color:#fff;background-color:#160d27;border-color:#160d27}}@media print{html .btn-pink-100,html[data-netbox-color-mode=dark] .btn-pink-100,html[data-netbox-color-mode=light] .btn-pink-100{color:#000;background-color:#f7d6e6;border-color:#f7d6e6}html .btn-pink-100:hover,html[data-netbox-color-mode=dark] .btn-pink-100:hover,html[data-netbox-color-mode=light] .btn-pink-100:hover{color:#000;background-color:#f8dcea;border-color:#f8dae9}.btn-check:focus+html .btn-pink-100,html .btn-pink-100:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-pink-100,html[data-netbox-color-mode=dark] .btn-pink-100:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-pink-100,html[data-netbox-color-mode=light] .btn-pink-100:focus{color:#000;background-color:#f8dcea;border-color:#f8dae9;box-shadow:0 0 0 .25rem #d2b6c480}.btn-check:checked+html .btn-pink-100,.btn-check:active+html .btn-pink-100,html .btn-pink-100:active,html .btn-pink-100.active,.show>html .btn-pink-100.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-pink-100,.btn-check:active+html[data-netbox-color-mode=dark] .btn-pink-100,html[data-netbox-color-mode=dark] .btn-pink-100:active,html[data-netbox-color-mode=dark] .btn-pink-100.active,.show>html[data-netbox-color-mode=dark] .btn-pink-100.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-pink-100,.btn-check:active+html[data-netbox-color-mode=light] .btn-pink-100,html[data-netbox-color-mode=light] .btn-pink-100:active,html[data-netbox-color-mode=light] .btn-pink-100.active,.show>html[data-netbox-color-mode=light] .btn-pink-100.dropdown-toggle{color:#000;background-color:#f9deeb;border-color:#f8dae9}.btn-check:checked+html .btn-pink-100:focus,.btn-check:active+html .btn-pink-100:focus,html .btn-pink-100:active:focus,html .btn-pink-100.active:focus,.show>html .btn-pink-100.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-pink-100:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-pink-100:focus,html[data-netbox-color-mode=dark] .btn-pink-100:active:focus,html[data-netbox-color-mode=dark] .btn-pink-100.active:focus,.show>html[data-netbox-color-mode=dark] .btn-pink-100.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-pink-100:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-pink-100:focus,html[data-netbox-color-mode=light] .btn-pink-100:active:focus,html[data-netbox-color-mode=light] .btn-pink-100.active:focus,.show>html[data-netbox-color-mode=light] .btn-pink-100.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #d2b6c480}html .btn-pink-100:disabled,html .btn-pink-100.disabled,html[data-netbox-color-mode=dark] .btn-pink-100:disabled,html[data-netbox-color-mode=dark] .btn-pink-100.disabled,html[data-netbox-color-mode=light] .btn-pink-100:disabled,html[data-netbox-color-mode=light] .btn-pink-100.disabled{color:#000;background-color:#f7d6e6;border-color:#f7d6e6}}@media print{html .btn-pink-200,html[data-netbox-color-mode=dark] .btn-pink-200,html[data-netbox-color-mode=light] .btn-pink-200{color:#000;background-color:#efadce;border-color:#efadce}html .btn-pink-200:hover,html[data-netbox-color-mode=dark] .btn-pink-200:hover,html[data-netbox-color-mode=light] .btn-pink-200:hover{color:#000;background-color:#f1b9d5;border-color:#f1b5d3}.btn-check:focus+html .btn-pink-200,html .btn-pink-200:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-pink-200,html[data-netbox-color-mode=dark] .btn-pink-200:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-pink-200,html[data-netbox-color-mode=light] .btn-pink-200:focus{color:#000;background-color:#f1b9d5;border-color:#f1b5d3;box-shadow:0 0 0 .25rem #cb93af80}.btn-check:checked+html .btn-pink-200,.btn-check:active+html .btn-pink-200,html .btn-pink-200:active,html .btn-pink-200.active,.show>html .btn-pink-200.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-pink-200,.btn-check:active+html[data-netbox-color-mode=dark] .btn-pink-200,html[data-netbox-color-mode=dark] .btn-pink-200:active,html[data-netbox-color-mode=dark] .btn-pink-200.active,.show>html[data-netbox-color-mode=dark] .btn-pink-200.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-pink-200,.btn-check:active+html[data-netbox-color-mode=light] .btn-pink-200,html[data-netbox-color-mode=light] .btn-pink-200:active,html[data-netbox-color-mode=light] .btn-pink-200.active,.show>html[data-netbox-color-mode=light] .btn-pink-200.dropdown-toggle{color:#000;background-color:#f2bdd8;border-color:#f1b5d3}.btn-check:checked+html .btn-pink-200:focus,.btn-check:active+html .btn-pink-200:focus,html .btn-pink-200:active:focus,html .btn-pink-200.active:focus,.show>html .btn-pink-200.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-pink-200:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-pink-200:focus,html[data-netbox-color-mode=dark] .btn-pink-200:active:focus,html[data-netbox-color-mode=dark] .btn-pink-200.active:focus,.show>html[data-netbox-color-mode=dark] .btn-pink-200.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-pink-200:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-pink-200:focus,html[data-netbox-color-mode=light] .btn-pink-200:active:focus,html[data-netbox-color-mode=light] .btn-pink-200.active:focus,.show>html[data-netbox-color-mode=light] .btn-pink-200.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #cb93af80}html .btn-pink-200:disabled,html .btn-pink-200.disabled,html[data-netbox-color-mode=dark] .btn-pink-200:disabled,html[data-netbox-color-mode=dark] .btn-pink-200.disabled,html[data-netbox-color-mode=light] .btn-pink-200:disabled,html[data-netbox-color-mode=light] .btn-pink-200.disabled{color:#000;background-color:#efadce;border-color:#efadce}}@media print{html .btn-pink-300,html[data-netbox-color-mode=dark] .btn-pink-300,html[data-netbox-color-mode=light] .btn-pink-300{color:#000;background-color:#e685b5;border-color:#e685b5}html .btn-pink-300:hover,html[data-netbox-color-mode=dark] .btn-pink-300:hover,html[data-netbox-color-mode=light] .btn-pink-300:hover{color:#000;background-color:#ea97c0;border-color:#e991bc}.btn-check:focus+html .btn-pink-300,html .btn-pink-300:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-pink-300,html[data-netbox-color-mode=dark] .btn-pink-300:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-pink-300,html[data-netbox-color-mode=light] .btn-pink-300:focus{color:#000;background-color:#ea97c0;border-color:#e991bc;box-shadow:0 0 0 .25rem #c4719a80}.btn-check:checked+html .btn-pink-300,.btn-check:active+html .btn-pink-300,html .btn-pink-300:active,html .btn-pink-300.active,.show>html .btn-pink-300.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-pink-300,.btn-check:active+html[data-netbox-color-mode=dark] .btn-pink-300,html[data-netbox-color-mode=dark] .btn-pink-300:active,html[data-netbox-color-mode=dark] .btn-pink-300.active,.show>html[data-netbox-color-mode=dark] .btn-pink-300.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-pink-300,.btn-check:active+html[data-netbox-color-mode=light] .btn-pink-300,html[data-netbox-color-mode=light] .btn-pink-300:active,html[data-netbox-color-mode=light] .btn-pink-300.active,.show>html[data-netbox-color-mode=light] .btn-pink-300.dropdown-toggle{color:#000;background-color:#eb9dc4;border-color:#e991bc}.btn-check:checked+html .btn-pink-300:focus,.btn-check:active+html .btn-pink-300:focus,html .btn-pink-300:active:focus,html .btn-pink-300.active:focus,.show>html .btn-pink-300.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-pink-300:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-pink-300:focus,html[data-netbox-color-mode=dark] .btn-pink-300:active:focus,html[data-netbox-color-mode=dark] .btn-pink-300.active:focus,.show>html[data-netbox-color-mode=dark] .btn-pink-300.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-pink-300:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-pink-300:focus,html[data-netbox-color-mode=light] .btn-pink-300:active:focus,html[data-netbox-color-mode=light] .btn-pink-300.active:focus,.show>html[data-netbox-color-mode=light] .btn-pink-300.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #c4719a80}html .btn-pink-300:disabled,html .btn-pink-300.disabled,html[data-netbox-color-mode=dark] .btn-pink-300:disabled,html[data-netbox-color-mode=dark] .btn-pink-300.disabled,html[data-netbox-color-mode=light] .btn-pink-300:disabled,html[data-netbox-color-mode=light] .btn-pink-300.disabled{color:#000;background-color:#e685b5;border-color:#e685b5}}@media print{html .btn-pink-400,html[data-netbox-color-mode=dark] .btn-pink-400,html[data-netbox-color-mode=light] .btn-pink-400{color:#000;background-color:#de5c9d;border-color:#de5c9d}html .btn-pink-400:hover,html[data-netbox-color-mode=dark] .btn-pink-400:hover,html[data-netbox-color-mode=light] .btn-pink-400:hover{color:#000;background-color:#e374ac;border-color:#e16ca7}.btn-check:focus+html .btn-pink-400,html .btn-pink-400:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-pink-400,html[data-netbox-color-mode=dark] .btn-pink-400:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-pink-400,html[data-netbox-color-mode=light] .btn-pink-400:focus{color:#000;background-color:#e374ac;border-color:#e16ca7;box-shadow:0 0 0 .25rem #bd4e8580}.btn-check:checked+html .btn-pink-400,.btn-check:active+html .btn-pink-400,html .btn-pink-400:active,html .btn-pink-400.active,.show>html .btn-pink-400.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-pink-400,.btn-check:active+html[data-netbox-color-mode=dark] .btn-pink-400,html[data-netbox-color-mode=dark] .btn-pink-400:active,html[data-netbox-color-mode=dark] .btn-pink-400.active,.show>html[data-netbox-color-mode=dark] .btn-pink-400.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-pink-400,.btn-check:active+html[data-netbox-color-mode=light] .btn-pink-400,html[data-netbox-color-mode=light] .btn-pink-400:active,html[data-netbox-color-mode=light] .btn-pink-400.active,.show>html[data-netbox-color-mode=light] .btn-pink-400.dropdown-toggle{color:#000;background-color:#e57db1;border-color:#e16ca7}.btn-check:checked+html .btn-pink-400:focus,.btn-check:active+html .btn-pink-400:focus,html .btn-pink-400:active:focus,html .btn-pink-400.active:focus,.show>html .btn-pink-400.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-pink-400:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-pink-400:focus,html[data-netbox-color-mode=dark] .btn-pink-400:active:focus,html[data-netbox-color-mode=dark] .btn-pink-400.active:focus,.show>html[data-netbox-color-mode=dark] .btn-pink-400.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-pink-400:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-pink-400:focus,html[data-netbox-color-mode=light] .btn-pink-400:active:focus,html[data-netbox-color-mode=light] .btn-pink-400.active:focus,.show>html[data-netbox-color-mode=light] .btn-pink-400.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #bd4e8580}html .btn-pink-400:disabled,html .btn-pink-400.disabled,html[data-netbox-color-mode=dark] .btn-pink-400:disabled,html[data-netbox-color-mode=dark] .btn-pink-400.disabled,html[data-netbox-color-mode=light] .btn-pink-400:disabled,html[data-netbox-color-mode=light] .btn-pink-400.disabled{color:#000;background-color:#de5c9d;border-color:#de5c9d}}@media print{html .btn-pink-500,html[data-netbox-color-mode=dark] .btn-pink-500,html[data-netbox-color-mode=light] .btn-pink-500{color:#fff;background-color:#d63384;border-color:#d63384}html .btn-pink-500:hover,html[data-netbox-color-mode=dark] .btn-pink-500:hover,html[data-netbox-color-mode=light] .btn-pink-500:hover{color:#fff;background-color:#b62b70;border-color:#ab296a}.btn-check:focus+html .btn-pink-500,html .btn-pink-500:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-pink-500,html[data-netbox-color-mode=dark] .btn-pink-500:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-pink-500,html[data-netbox-color-mode=light] .btn-pink-500:focus{color:#fff;background-color:#b62b70;border-color:#ab296a;box-shadow:0 0 0 .25rem #dc529680}.btn-check:checked+html .btn-pink-500,.btn-check:active+html .btn-pink-500,html .btn-pink-500:active,html .btn-pink-500.active,.show>html .btn-pink-500.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-pink-500,.btn-check:active+html[data-netbox-color-mode=dark] .btn-pink-500,html[data-netbox-color-mode=dark] .btn-pink-500:active,html[data-netbox-color-mode=dark] .btn-pink-500.active,.show>html[data-netbox-color-mode=dark] .btn-pink-500.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-pink-500,.btn-check:active+html[data-netbox-color-mode=light] .btn-pink-500,html[data-netbox-color-mode=light] .btn-pink-500:active,html[data-netbox-color-mode=light] .btn-pink-500.active,.show>html[data-netbox-color-mode=light] .btn-pink-500.dropdown-toggle{color:#fff;background-color:#ab296a;border-color:#a12663}.btn-check:checked+html .btn-pink-500:focus,.btn-check:active+html .btn-pink-500:focus,html .btn-pink-500:active:focus,html .btn-pink-500.active:focus,.show>html .btn-pink-500.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-pink-500:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-pink-500:focus,html[data-netbox-color-mode=dark] .btn-pink-500:active:focus,html[data-netbox-color-mode=dark] .btn-pink-500.active:focus,.show>html[data-netbox-color-mode=dark] .btn-pink-500.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-pink-500:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-pink-500:focus,html[data-netbox-color-mode=light] .btn-pink-500:active:focus,html[data-netbox-color-mode=light] .btn-pink-500.active:focus,.show>html[data-netbox-color-mode=light] .btn-pink-500.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #dc529680}html .btn-pink-500:disabled,html .btn-pink-500.disabled,html[data-netbox-color-mode=dark] .btn-pink-500:disabled,html[data-netbox-color-mode=dark] .btn-pink-500.disabled,html[data-netbox-color-mode=light] .btn-pink-500:disabled,html[data-netbox-color-mode=light] .btn-pink-500.disabled{color:#fff;background-color:#d63384;border-color:#d63384}}@media print{html .btn-pink-600,html[data-netbox-color-mode=dark] .btn-pink-600,html[data-netbox-color-mode=light] .btn-pink-600{color:#fff;background-color:#ab296a;border-color:#ab296a}html .btn-pink-600:hover,html[data-netbox-color-mode=dark] .btn-pink-600:hover,html[data-netbox-color-mode=light] .btn-pink-600:hover{color:#fff;background-color:#91235a;border-color:#892155}.btn-check:focus+html .btn-pink-600,html .btn-pink-600:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-pink-600,html[data-netbox-color-mode=dark] .btn-pink-600:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-pink-600,html[data-netbox-color-mode=light] .btn-pink-600:focus{color:#fff;background-color:#91235a;border-color:#892155;box-shadow:0 0 0 .25rem #b8498080}.btn-check:checked+html .btn-pink-600,.btn-check:active+html .btn-pink-600,html .btn-pink-600:active,html .btn-pink-600.active,.show>html .btn-pink-600.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-pink-600,.btn-check:active+html[data-netbox-color-mode=dark] .btn-pink-600,html[data-netbox-color-mode=dark] .btn-pink-600:active,html[data-netbox-color-mode=dark] .btn-pink-600.active,.show>html[data-netbox-color-mode=dark] .btn-pink-600.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-pink-600,.btn-check:active+html[data-netbox-color-mode=light] .btn-pink-600,html[data-netbox-color-mode=light] .btn-pink-600:active,html[data-netbox-color-mode=light] .btn-pink-600.active,.show>html[data-netbox-color-mode=light] .btn-pink-600.dropdown-toggle{color:#fff;background-color:#892155;border-color:#801f50}.btn-check:checked+html .btn-pink-600:focus,.btn-check:active+html .btn-pink-600:focus,html .btn-pink-600:active:focus,html .btn-pink-600.active:focus,.show>html .btn-pink-600.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-pink-600:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-pink-600:focus,html[data-netbox-color-mode=dark] .btn-pink-600:active:focus,html[data-netbox-color-mode=dark] .btn-pink-600.active:focus,.show>html[data-netbox-color-mode=dark] .btn-pink-600.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-pink-600:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-pink-600:focus,html[data-netbox-color-mode=light] .btn-pink-600:active:focus,html[data-netbox-color-mode=light] .btn-pink-600.active:focus,.show>html[data-netbox-color-mode=light] .btn-pink-600.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #b8498080}html .btn-pink-600:disabled,html .btn-pink-600.disabled,html[data-netbox-color-mode=dark] .btn-pink-600:disabled,html[data-netbox-color-mode=dark] .btn-pink-600.disabled,html[data-netbox-color-mode=light] .btn-pink-600:disabled,html[data-netbox-color-mode=light] .btn-pink-600.disabled{color:#fff;background-color:#ab296a;border-color:#ab296a}}@media print{html .btn-pink-700,html[data-netbox-color-mode=dark] .btn-pink-700,html[data-netbox-color-mode=light] .btn-pink-700{color:#fff;background-color:#801f4f;border-color:#801f4f}html .btn-pink-700:hover,html[data-netbox-color-mode=dark] .btn-pink-700:hover,html[data-netbox-color-mode=light] .btn-pink-700:hover{color:#fff;background-color:#6d1a43;border-color:#66193f}.btn-check:focus+html .btn-pink-700,html .btn-pink-700:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-pink-700,html[data-netbox-color-mode=dark] .btn-pink-700:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-pink-700,html[data-netbox-color-mode=light] .btn-pink-700:focus{color:#fff;background-color:#6d1a43;border-color:#66193f;box-shadow:0 0 0 .25rem #93416980}.btn-check:checked+html .btn-pink-700,.btn-check:active+html .btn-pink-700,html .btn-pink-700:active,html .btn-pink-700.active,.show>html .btn-pink-700.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-pink-700,.btn-check:active+html[data-netbox-color-mode=dark] .btn-pink-700,html[data-netbox-color-mode=dark] .btn-pink-700:active,html[data-netbox-color-mode=dark] .btn-pink-700.active,.show>html[data-netbox-color-mode=dark] .btn-pink-700.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-pink-700,.btn-check:active+html[data-netbox-color-mode=light] .btn-pink-700,html[data-netbox-color-mode=light] .btn-pink-700:active,html[data-netbox-color-mode=light] .btn-pink-700.active,.show>html[data-netbox-color-mode=light] .btn-pink-700.dropdown-toggle{color:#fff;background-color:#66193f;border-color:#60173b}.btn-check:checked+html .btn-pink-700:focus,.btn-check:active+html .btn-pink-700:focus,html .btn-pink-700:active:focus,html .btn-pink-700.active:focus,.show>html .btn-pink-700.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-pink-700:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-pink-700:focus,html[data-netbox-color-mode=dark] .btn-pink-700:active:focus,html[data-netbox-color-mode=dark] .btn-pink-700.active:focus,.show>html[data-netbox-color-mode=dark] .btn-pink-700.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-pink-700:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-pink-700:focus,html[data-netbox-color-mode=light] .btn-pink-700:active:focus,html[data-netbox-color-mode=light] .btn-pink-700.active:focus,.show>html[data-netbox-color-mode=light] .btn-pink-700.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #93416980}html .btn-pink-700:disabled,html .btn-pink-700.disabled,html[data-netbox-color-mode=dark] .btn-pink-700:disabled,html[data-netbox-color-mode=dark] .btn-pink-700.disabled,html[data-netbox-color-mode=light] .btn-pink-700:disabled,html[data-netbox-color-mode=light] .btn-pink-700.disabled{color:#fff;background-color:#801f4f;border-color:#801f4f}}@media print{html .btn-pink-800,html[data-netbox-color-mode=dark] .btn-pink-800,html[data-netbox-color-mode=light] .btn-pink-800{color:#fff;background-color:#561435;border-color:#561435}html .btn-pink-800:hover,html[data-netbox-color-mode=dark] .btn-pink-800:hover,html[data-netbox-color-mode=light] .btn-pink-800:hover{color:#fff;background-color:#49112d;border-color:#45102a}.btn-check:focus+html .btn-pink-800,html .btn-pink-800:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-pink-800,html[data-netbox-color-mode=dark] .btn-pink-800:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-pink-800,html[data-netbox-color-mode=light] .btn-pink-800:focus{color:#fff;background-color:#49112d;border-color:#45102a;box-shadow:0 0 0 .25rem #6f375380}.btn-check:checked+html .btn-pink-800,.btn-check:active+html .btn-pink-800,html .btn-pink-800:active,html .btn-pink-800.active,.show>html .btn-pink-800.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-pink-800,.btn-check:active+html[data-netbox-color-mode=dark] .btn-pink-800,html[data-netbox-color-mode=dark] .btn-pink-800:active,html[data-netbox-color-mode=dark] .btn-pink-800.active,.show>html[data-netbox-color-mode=dark] .btn-pink-800.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-pink-800,.btn-check:active+html[data-netbox-color-mode=light] .btn-pink-800,html[data-netbox-color-mode=light] .btn-pink-800:active,html[data-netbox-color-mode=light] .btn-pink-800.active,.show>html[data-netbox-color-mode=light] .btn-pink-800.dropdown-toggle{color:#fff;background-color:#45102a;border-color:#410f28}.btn-check:checked+html .btn-pink-800:focus,.btn-check:active+html .btn-pink-800:focus,html .btn-pink-800:active:focus,html .btn-pink-800.active:focus,.show>html .btn-pink-800.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-pink-800:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-pink-800:focus,html[data-netbox-color-mode=dark] .btn-pink-800:active:focus,html[data-netbox-color-mode=dark] .btn-pink-800.active:focus,.show>html[data-netbox-color-mode=dark] .btn-pink-800.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-pink-800:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-pink-800:focus,html[data-netbox-color-mode=light] .btn-pink-800:active:focus,html[data-netbox-color-mode=light] .btn-pink-800.active:focus,.show>html[data-netbox-color-mode=light] .btn-pink-800.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #6f375380}html .btn-pink-800:disabled,html .btn-pink-800.disabled,html[data-netbox-color-mode=dark] .btn-pink-800:disabled,html[data-netbox-color-mode=dark] .btn-pink-800.disabled,html[data-netbox-color-mode=light] .btn-pink-800:disabled,html[data-netbox-color-mode=light] .btn-pink-800.disabled{color:#fff;background-color:#561435;border-color:#561435}}@media print{html .btn-pink-900,html[data-netbox-color-mode=dark] .btn-pink-900,html[data-netbox-color-mode=light] .btn-pink-900{color:#fff;background-color:#2b0a1a;border-color:#2b0a1a}html .btn-pink-900:hover,html[data-netbox-color-mode=dark] .btn-pink-900:hover,html[data-netbox-color-mode=light] .btn-pink-900:hover{color:#fff;background-color:#250916;border-color:#220815}.btn-check:focus+html .btn-pink-900,html .btn-pink-900:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-pink-900,html[data-netbox-color-mode=dark] .btn-pink-900:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-pink-900,html[data-netbox-color-mode=light] .btn-pink-900:focus{color:#fff;background-color:#250916;border-color:#220815;box-shadow:0 0 0 .25rem #4b2f3c80}.btn-check:checked+html .btn-pink-900,.btn-check:active+html .btn-pink-900,html .btn-pink-900:active,html .btn-pink-900.active,.show>html .btn-pink-900.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-pink-900,.btn-check:active+html[data-netbox-color-mode=dark] .btn-pink-900,html[data-netbox-color-mode=dark] .btn-pink-900:active,html[data-netbox-color-mode=dark] .btn-pink-900.active,.show>html[data-netbox-color-mode=dark] .btn-pink-900.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-pink-900,.btn-check:active+html[data-netbox-color-mode=light] .btn-pink-900,html[data-netbox-color-mode=light] .btn-pink-900:active,html[data-netbox-color-mode=light] .btn-pink-900.active,.show>html[data-netbox-color-mode=light] .btn-pink-900.dropdown-toggle{color:#fff;background-color:#220815;border-color:#200814}.btn-check:checked+html .btn-pink-900:focus,.btn-check:active+html .btn-pink-900:focus,html .btn-pink-900:active:focus,html .btn-pink-900.active:focus,.show>html .btn-pink-900.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-pink-900:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-pink-900:focus,html[data-netbox-color-mode=dark] .btn-pink-900:active:focus,html[data-netbox-color-mode=dark] .btn-pink-900.active:focus,.show>html[data-netbox-color-mode=dark] .btn-pink-900.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-pink-900:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-pink-900:focus,html[data-netbox-color-mode=light] .btn-pink-900:active:focus,html[data-netbox-color-mode=light] .btn-pink-900.active:focus,.show>html[data-netbox-color-mode=light] .btn-pink-900.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #4b2f3c80}html .btn-pink-900:disabled,html .btn-pink-900.disabled,html[data-netbox-color-mode=dark] .btn-pink-900:disabled,html[data-netbox-color-mode=dark] .btn-pink-900.disabled,html[data-netbox-color-mode=light] .btn-pink-900:disabled,html[data-netbox-color-mode=light] .btn-pink-900.disabled{color:#fff;background-color:#2b0a1a;border-color:#2b0a1a}}@media print{html .btn-outline-primary,html[data-netbox-color-mode=dark] .btn-outline-primary,html[data-netbox-color-mode=light] .btn-outline-primary{color:#337ab7;border-color:#337ab7}html .btn-outline-primary:hover,html[data-netbox-color-mode=dark] .btn-outline-primary:hover,html[data-netbox-color-mode=light] .btn-outline-primary:hover{color:#fff;background-color:#337ab7;border-color:#337ab7}.btn-check:focus+html .btn-outline-primary,html .btn-outline-primary:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-primary,html[data-netbox-color-mode=dark] .btn-outline-primary:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-primary,html[data-netbox-color-mode=light] .btn-outline-primary:focus{box-shadow:0 0 0 .25rem #337ab780}.btn-check:checked+html .btn-outline-primary,.btn-check:active+html .btn-outline-primary,html .btn-outline-primary:active,html .btn-outline-primary.active,html .btn-outline-primary.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-primary,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-primary,html[data-netbox-color-mode=dark] .btn-outline-primary:active,html[data-netbox-color-mode=dark] .btn-outline-primary.active,html[data-netbox-color-mode=dark] .btn-outline-primary.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-primary,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-primary,html[data-netbox-color-mode=light] .btn-outline-primary:active,html[data-netbox-color-mode=light] .btn-outline-primary.active,html[data-netbox-color-mode=light] .btn-outline-primary.dropdown-toggle.show{color:#fff;background-color:#337ab7;border-color:#337ab7}.btn-check:checked+html .btn-outline-primary:focus,.btn-check:active+html .btn-outline-primary:focus,html .btn-outline-primary:active:focus,html .btn-outline-primary.active:focus,html .btn-outline-primary.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-primary:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-primary:focus,html[data-netbox-color-mode=dark] .btn-outline-primary:active:focus,html[data-netbox-color-mode=dark] .btn-outline-primary.active:focus,html[data-netbox-color-mode=dark] .btn-outline-primary.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-primary:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-primary:focus,html[data-netbox-color-mode=light] .btn-outline-primary:active:focus,html[data-netbox-color-mode=light] .btn-outline-primary.active:focus,html[data-netbox-color-mode=light] .btn-outline-primary.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #337ab780}html .btn-outline-primary:disabled,html .btn-outline-primary.disabled,html[data-netbox-color-mode=dark] .btn-outline-primary:disabled,html[data-netbox-color-mode=dark] .btn-outline-primary.disabled,html[data-netbox-color-mode=light] .btn-outline-primary:disabled,html[data-netbox-color-mode=light] .btn-outline-primary.disabled{color:#337ab7;background-color:transparent}}@media print{html .btn-outline-secondary,html[data-netbox-color-mode=dark] .btn-outline-secondary,html[data-netbox-color-mode=light] .btn-outline-secondary{color:#6c757d;border-color:#6c757d}html .btn-outline-secondary:hover,html[data-netbox-color-mode=dark] .btn-outline-secondary:hover,html[data-netbox-color-mode=light] .btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-check:focus+html .btn-outline-secondary,html .btn-outline-secondary:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-secondary,html[data-netbox-color-mode=dark] .btn-outline-secondary:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-secondary,html[data-netbox-color-mode=light] .btn-outline-secondary:focus{box-shadow:0 0 0 .25rem #6c757d80}.btn-check:checked+html .btn-outline-secondary,.btn-check:active+html .btn-outline-secondary,html .btn-outline-secondary:active,html .btn-outline-secondary.active,html .btn-outline-secondary.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-secondary,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-secondary,html[data-netbox-color-mode=dark] .btn-outline-secondary:active,html[data-netbox-color-mode=dark] .btn-outline-secondary.active,html[data-netbox-color-mode=dark] .btn-outline-secondary.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-secondary,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-secondary,html[data-netbox-color-mode=light] .btn-outline-secondary:active,html[data-netbox-color-mode=light] .btn-outline-secondary.active,html[data-netbox-color-mode=light] .btn-outline-secondary.dropdown-toggle.show{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-check:checked+html .btn-outline-secondary:focus,.btn-check:active+html .btn-outline-secondary:focus,html .btn-outline-secondary:active:focus,html .btn-outline-secondary.active:focus,html .btn-outline-secondary.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-secondary:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-secondary:focus,html[data-netbox-color-mode=dark] .btn-outline-secondary:active:focus,html[data-netbox-color-mode=dark] .btn-outline-secondary.active:focus,html[data-netbox-color-mode=dark] .btn-outline-secondary.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-secondary:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-secondary:focus,html[data-netbox-color-mode=light] .btn-outline-secondary:active:focus,html[data-netbox-color-mode=light] .btn-outline-secondary.active:focus,html[data-netbox-color-mode=light] .btn-outline-secondary.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #6c757d80}html .btn-outline-secondary:disabled,html .btn-outline-secondary.disabled,html[data-netbox-color-mode=dark] .btn-outline-secondary:disabled,html[data-netbox-color-mode=dark] .btn-outline-secondary.disabled,html[data-netbox-color-mode=light] .btn-outline-secondary:disabled,html[data-netbox-color-mode=light] .btn-outline-secondary.disabled{color:#6c757d;background-color:transparent}}@media print{html .btn-outline-success,html[data-netbox-color-mode=dark] .btn-outline-success,html[data-netbox-color-mode=light] .btn-outline-success{color:#198754;border-color:#198754}html .btn-outline-success:hover,html[data-netbox-color-mode=dark] .btn-outline-success:hover,html[data-netbox-color-mode=light] .btn-outline-success:hover{color:#fff;background-color:#198754;border-color:#198754}.btn-check:focus+html .btn-outline-success,html .btn-outline-success:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-success,html[data-netbox-color-mode=dark] .btn-outline-success:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-success,html[data-netbox-color-mode=light] .btn-outline-success:focus{box-shadow:0 0 0 .25rem #19875480}.btn-check:checked+html .btn-outline-success,.btn-check:active+html .btn-outline-success,html .btn-outline-success:active,html .btn-outline-success.active,html .btn-outline-success.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-success,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-success,html[data-netbox-color-mode=dark] .btn-outline-success:active,html[data-netbox-color-mode=dark] .btn-outline-success.active,html[data-netbox-color-mode=dark] .btn-outline-success.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-success,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-success,html[data-netbox-color-mode=light] .btn-outline-success:active,html[data-netbox-color-mode=light] .btn-outline-success.active,html[data-netbox-color-mode=light] .btn-outline-success.dropdown-toggle.show{color:#fff;background-color:#198754;border-color:#198754}.btn-check:checked+html .btn-outline-success:focus,.btn-check:active+html .btn-outline-success:focus,html .btn-outline-success:active:focus,html .btn-outline-success.active:focus,html .btn-outline-success.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-success:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-success:focus,html[data-netbox-color-mode=dark] .btn-outline-success:active:focus,html[data-netbox-color-mode=dark] .btn-outline-success.active:focus,html[data-netbox-color-mode=dark] .btn-outline-success.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-success:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-success:focus,html[data-netbox-color-mode=light] .btn-outline-success:active:focus,html[data-netbox-color-mode=light] .btn-outline-success.active:focus,html[data-netbox-color-mode=light] .btn-outline-success.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #19875480}html .btn-outline-success:disabled,html .btn-outline-success.disabled,html[data-netbox-color-mode=dark] .btn-outline-success:disabled,html[data-netbox-color-mode=dark] .btn-outline-success.disabled,html[data-netbox-color-mode=light] .btn-outline-success:disabled,html[data-netbox-color-mode=light] .btn-outline-success.disabled{color:#198754;background-color:transparent}}@media print{html .btn-outline-info,html[data-netbox-color-mode=dark] .btn-outline-info,html[data-netbox-color-mode=light] .btn-outline-info{color:#0dcaf0;border-color:#0dcaf0}html .btn-outline-info:hover,html[data-netbox-color-mode=dark] .btn-outline-info:hover,html[data-netbox-color-mode=light] .btn-outline-info:hover{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-check:focus+html .btn-outline-info,html .btn-outline-info:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-info,html[data-netbox-color-mode=dark] .btn-outline-info:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-info,html[data-netbox-color-mode=light] .btn-outline-info:focus{box-shadow:0 0 0 .25rem #0dcaf080}.btn-check:checked+html .btn-outline-info,.btn-check:active+html .btn-outline-info,html .btn-outline-info:active,html .btn-outline-info.active,html .btn-outline-info.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-info,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-info,html[data-netbox-color-mode=dark] .btn-outline-info:active,html[data-netbox-color-mode=dark] .btn-outline-info.active,html[data-netbox-color-mode=dark] .btn-outline-info.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-info,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-info,html[data-netbox-color-mode=light] .btn-outline-info:active,html[data-netbox-color-mode=light] .btn-outline-info.active,html[data-netbox-color-mode=light] .btn-outline-info.dropdown-toggle.show{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-check:checked+html .btn-outline-info:focus,.btn-check:active+html .btn-outline-info:focus,html .btn-outline-info:active:focus,html .btn-outline-info.active:focus,html .btn-outline-info.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-info:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-info:focus,html[data-netbox-color-mode=dark] .btn-outline-info:active:focus,html[data-netbox-color-mode=dark] .btn-outline-info.active:focus,html[data-netbox-color-mode=dark] .btn-outline-info.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-info:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-info:focus,html[data-netbox-color-mode=light] .btn-outline-info:active:focus,html[data-netbox-color-mode=light] .btn-outline-info.active:focus,html[data-netbox-color-mode=light] .btn-outline-info.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #0dcaf080}html .btn-outline-info:disabled,html .btn-outline-info.disabled,html[data-netbox-color-mode=dark] .btn-outline-info:disabled,html[data-netbox-color-mode=dark] .btn-outline-info.disabled,html[data-netbox-color-mode=light] .btn-outline-info:disabled,html[data-netbox-color-mode=light] .btn-outline-info.disabled{color:#0dcaf0;background-color:transparent}}@media print{html .btn-outline-warning,html[data-netbox-color-mode=dark] .btn-outline-warning,html[data-netbox-color-mode=light] .btn-outline-warning{color:#ffc107;border-color:#ffc107}html .btn-outline-warning:hover,html[data-netbox-color-mode=dark] .btn-outline-warning:hover,html[data-netbox-color-mode=light] .btn-outline-warning:hover{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-check:focus+html .btn-outline-warning,html .btn-outline-warning:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-warning,html[data-netbox-color-mode=dark] .btn-outline-warning:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-warning,html[data-netbox-color-mode=light] .btn-outline-warning:focus{box-shadow:0 0 0 .25rem #ffc10780}.btn-check:checked+html .btn-outline-warning,.btn-check:active+html .btn-outline-warning,html .btn-outline-warning:active,html .btn-outline-warning.active,html .btn-outline-warning.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-warning,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-warning,html[data-netbox-color-mode=dark] .btn-outline-warning:active,html[data-netbox-color-mode=dark] .btn-outline-warning.active,html[data-netbox-color-mode=dark] .btn-outline-warning.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-warning,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-warning,html[data-netbox-color-mode=light] .btn-outline-warning:active,html[data-netbox-color-mode=light] .btn-outline-warning.active,html[data-netbox-color-mode=light] .btn-outline-warning.dropdown-toggle.show{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-check:checked+html .btn-outline-warning:focus,.btn-check:active+html .btn-outline-warning:focus,html .btn-outline-warning:active:focus,html .btn-outline-warning.active:focus,html .btn-outline-warning.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-warning:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-warning:focus,html[data-netbox-color-mode=dark] .btn-outline-warning:active:focus,html[data-netbox-color-mode=dark] .btn-outline-warning.active:focus,html[data-netbox-color-mode=dark] .btn-outline-warning.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-warning:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-warning:focus,html[data-netbox-color-mode=light] .btn-outline-warning:active:focus,html[data-netbox-color-mode=light] .btn-outline-warning.active:focus,html[data-netbox-color-mode=light] .btn-outline-warning.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #ffc10780}html .btn-outline-warning:disabled,html .btn-outline-warning.disabled,html[data-netbox-color-mode=dark] .btn-outline-warning:disabled,html[data-netbox-color-mode=dark] .btn-outline-warning.disabled,html[data-netbox-color-mode=light] .btn-outline-warning:disabled,html[data-netbox-color-mode=light] .btn-outline-warning.disabled{color:#ffc107;background-color:transparent}}@media print{html .btn-outline-danger,html[data-netbox-color-mode=dark] .btn-outline-danger,html[data-netbox-color-mode=light] .btn-outline-danger{color:#dc3545;border-color:#dc3545}html .btn-outline-danger:hover,html[data-netbox-color-mode=dark] .btn-outline-danger:hover,html[data-netbox-color-mode=light] .btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-check:focus+html .btn-outline-danger,html .btn-outline-danger:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-danger,html[data-netbox-color-mode=dark] .btn-outline-danger:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-danger,html[data-netbox-color-mode=light] .btn-outline-danger:focus{box-shadow:0 0 0 .25rem #dc354580}.btn-check:checked+html .btn-outline-danger,.btn-check:active+html .btn-outline-danger,html .btn-outline-danger:active,html .btn-outline-danger.active,html .btn-outline-danger.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-danger,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-danger,html[data-netbox-color-mode=dark] .btn-outline-danger:active,html[data-netbox-color-mode=dark] .btn-outline-danger.active,html[data-netbox-color-mode=dark] .btn-outline-danger.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-danger,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-danger,html[data-netbox-color-mode=light] .btn-outline-danger:active,html[data-netbox-color-mode=light] .btn-outline-danger.active,html[data-netbox-color-mode=light] .btn-outline-danger.dropdown-toggle.show{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-check:checked+html .btn-outline-danger:focus,.btn-check:active+html .btn-outline-danger:focus,html .btn-outline-danger:active:focus,html .btn-outline-danger.active:focus,html .btn-outline-danger.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-danger:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-danger:focus,html[data-netbox-color-mode=dark] .btn-outline-danger:active:focus,html[data-netbox-color-mode=dark] .btn-outline-danger.active:focus,html[data-netbox-color-mode=dark] .btn-outline-danger.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-danger:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-danger:focus,html[data-netbox-color-mode=light] .btn-outline-danger:active:focus,html[data-netbox-color-mode=light] .btn-outline-danger.active:focus,html[data-netbox-color-mode=light] .btn-outline-danger.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #dc354580}html .btn-outline-danger:disabled,html .btn-outline-danger.disabled,html[data-netbox-color-mode=dark] .btn-outline-danger:disabled,html[data-netbox-color-mode=dark] .btn-outline-danger.disabled,html[data-netbox-color-mode=light] .btn-outline-danger:disabled,html[data-netbox-color-mode=light] .btn-outline-danger.disabled{color:#dc3545;background-color:transparent}}@media print{html .btn-outline-light,html[data-netbox-color-mode=dark] .btn-outline-light,html[data-netbox-color-mode=light] .btn-outline-light{color:#f8f9fa;border-color:#f8f9fa}html .btn-outline-light:hover,html[data-netbox-color-mode=dark] .btn-outline-light:hover,html[data-netbox-color-mode=light] .btn-outline-light:hover{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-check:focus+html .btn-outline-light,html .btn-outline-light:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-light,html[data-netbox-color-mode=dark] .btn-outline-light:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-light,html[data-netbox-color-mode=light] .btn-outline-light:focus{box-shadow:0 0 0 .25rem #f8f9fa80}.btn-check:checked+html .btn-outline-light,.btn-check:active+html .btn-outline-light,html .btn-outline-light:active,html .btn-outline-light.active,html .btn-outline-light.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-light,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-light,html[data-netbox-color-mode=dark] .btn-outline-light:active,html[data-netbox-color-mode=dark] .btn-outline-light.active,html[data-netbox-color-mode=dark] .btn-outline-light.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-light,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-light,html[data-netbox-color-mode=light] .btn-outline-light:active,html[data-netbox-color-mode=light] .btn-outline-light.active,html[data-netbox-color-mode=light] .btn-outline-light.dropdown-toggle.show{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-check:checked+html .btn-outline-light:focus,.btn-check:active+html .btn-outline-light:focus,html .btn-outline-light:active:focus,html .btn-outline-light.active:focus,html .btn-outline-light.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-light:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-light:focus,html[data-netbox-color-mode=dark] .btn-outline-light:active:focus,html[data-netbox-color-mode=dark] .btn-outline-light.active:focus,html[data-netbox-color-mode=dark] .btn-outline-light.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-light:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-light:focus,html[data-netbox-color-mode=light] .btn-outline-light:active:focus,html[data-netbox-color-mode=light] .btn-outline-light.active:focus,html[data-netbox-color-mode=light] .btn-outline-light.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #f8f9fa80}html .btn-outline-light:disabled,html .btn-outline-light.disabled,html[data-netbox-color-mode=dark] .btn-outline-light:disabled,html[data-netbox-color-mode=dark] .btn-outline-light.disabled,html[data-netbox-color-mode=light] .btn-outline-light:disabled,html[data-netbox-color-mode=light] .btn-outline-light.disabled{color:#f8f9fa;background-color:transparent}}@media print{html .btn-outline-dark,html[data-netbox-color-mode=dark] .btn-outline-dark,html[data-netbox-color-mode=light] .btn-outline-dark{color:#212529;border-color:#212529}html .btn-outline-dark:hover,html[data-netbox-color-mode=dark] .btn-outline-dark:hover,html[data-netbox-color-mode=light] .btn-outline-dark:hover{color:#fff;background-color:#212529;border-color:#212529}.btn-check:focus+html .btn-outline-dark,html .btn-outline-dark:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-dark,html[data-netbox-color-mode=dark] .btn-outline-dark:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-dark,html[data-netbox-color-mode=light] .btn-outline-dark:focus{box-shadow:0 0 0 .25rem #21252980}.btn-check:checked+html .btn-outline-dark,.btn-check:active+html .btn-outline-dark,html .btn-outline-dark:active,html .btn-outline-dark.active,html .btn-outline-dark.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-dark,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-dark,html[data-netbox-color-mode=dark] .btn-outline-dark:active,html[data-netbox-color-mode=dark] .btn-outline-dark.active,html[data-netbox-color-mode=dark] .btn-outline-dark.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-dark,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-dark,html[data-netbox-color-mode=light] .btn-outline-dark:active,html[data-netbox-color-mode=light] .btn-outline-dark.active,html[data-netbox-color-mode=light] .btn-outline-dark.dropdown-toggle.show{color:#fff;background-color:#212529;border-color:#212529}.btn-check:checked+html .btn-outline-dark:focus,.btn-check:active+html .btn-outline-dark:focus,html .btn-outline-dark:active:focus,html .btn-outline-dark.active:focus,html .btn-outline-dark.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-dark:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-dark:focus,html[data-netbox-color-mode=dark] .btn-outline-dark:active:focus,html[data-netbox-color-mode=dark] .btn-outline-dark.active:focus,html[data-netbox-color-mode=dark] .btn-outline-dark.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-dark:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-dark:focus,html[data-netbox-color-mode=light] .btn-outline-dark:active:focus,html[data-netbox-color-mode=light] .btn-outline-dark.active:focus,html[data-netbox-color-mode=light] .btn-outline-dark.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #21252980}html .btn-outline-dark:disabled,html .btn-outline-dark.disabled,html[data-netbox-color-mode=dark] .btn-outline-dark:disabled,html[data-netbox-color-mode=dark] .btn-outline-dark.disabled,html[data-netbox-color-mode=light] .btn-outline-dark:disabled,html[data-netbox-color-mode=light] .btn-outline-dark.disabled{color:#212529;background-color:transparent}}@media print{html .btn-outline-red,html[data-netbox-color-mode=dark] .btn-outline-red,html[data-netbox-color-mode=light] .btn-outline-red{color:#dc3545;border-color:#dc3545}html .btn-outline-red:hover,html[data-netbox-color-mode=dark] .btn-outline-red:hover,html[data-netbox-color-mode=light] .btn-outline-red:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-check:focus+html .btn-outline-red,html .btn-outline-red:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-red,html[data-netbox-color-mode=dark] .btn-outline-red:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-red,html[data-netbox-color-mode=light] .btn-outline-red:focus{box-shadow:0 0 0 .25rem #dc354580}.btn-check:checked+html .btn-outline-red,.btn-check:active+html .btn-outline-red,html .btn-outline-red:active,html .btn-outline-red.active,html .btn-outline-red.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-red,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-red,html[data-netbox-color-mode=dark] .btn-outline-red:active,html[data-netbox-color-mode=dark] .btn-outline-red.active,html[data-netbox-color-mode=dark] .btn-outline-red.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-red,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-red,html[data-netbox-color-mode=light] .btn-outline-red:active,html[data-netbox-color-mode=light] .btn-outline-red.active,html[data-netbox-color-mode=light] .btn-outline-red.dropdown-toggle.show{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-check:checked+html .btn-outline-red:focus,.btn-check:active+html .btn-outline-red:focus,html .btn-outline-red:active:focus,html .btn-outline-red.active:focus,html .btn-outline-red.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-red:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-red:focus,html[data-netbox-color-mode=dark] .btn-outline-red:active:focus,html[data-netbox-color-mode=dark] .btn-outline-red.active:focus,html[data-netbox-color-mode=dark] .btn-outline-red.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-red:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-red:focus,html[data-netbox-color-mode=light] .btn-outline-red:active:focus,html[data-netbox-color-mode=light] .btn-outline-red.active:focus,html[data-netbox-color-mode=light] .btn-outline-red.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #dc354580}html .btn-outline-red:disabled,html .btn-outline-red.disabled,html[data-netbox-color-mode=dark] .btn-outline-red:disabled,html[data-netbox-color-mode=dark] .btn-outline-red.disabled,html[data-netbox-color-mode=light] .btn-outline-red:disabled,html[data-netbox-color-mode=light] .btn-outline-red.disabled{color:#dc3545;background-color:transparent}}@media print{html .btn-outline-yellow,html[data-netbox-color-mode=dark] .btn-outline-yellow,html[data-netbox-color-mode=light] .btn-outline-yellow{color:#ffc107;border-color:#ffc107}html .btn-outline-yellow:hover,html[data-netbox-color-mode=dark] .btn-outline-yellow:hover,html[data-netbox-color-mode=light] .btn-outline-yellow:hover{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-check:focus+html .btn-outline-yellow,html .btn-outline-yellow:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-yellow,html[data-netbox-color-mode=dark] .btn-outline-yellow:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-yellow,html[data-netbox-color-mode=light] .btn-outline-yellow:focus{box-shadow:0 0 0 .25rem #ffc10780}.btn-check:checked+html .btn-outline-yellow,.btn-check:active+html .btn-outline-yellow,html .btn-outline-yellow:active,html .btn-outline-yellow.active,html .btn-outline-yellow.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-yellow,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-yellow,html[data-netbox-color-mode=dark] .btn-outline-yellow:active,html[data-netbox-color-mode=dark] .btn-outline-yellow.active,html[data-netbox-color-mode=dark] .btn-outline-yellow.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-yellow,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-yellow,html[data-netbox-color-mode=light] .btn-outline-yellow:active,html[data-netbox-color-mode=light] .btn-outline-yellow.active,html[data-netbox-color-mode=light] .btn-outline-yellow.dropdown-toggle.show{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-check:checked+html .btn-outline-yellow:focus,.btn-check:active+html .btn-outline-yellow:focus,html .btn-outline-yellow:active:focus,html .btn-outline-yellow.active:focus,html .btn-outline-yellow.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-yellow:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-yellow:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow:active:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow.active:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-yellow:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-yellow:focus,html[data-netbox-color-mode=light] .btn-outline-yellow:active:focus,html[data-netbox-color-mode=light] .btn-outline-yellow.active:focus,html[data-netbox-color-mode=light] .btn-outline-yellow.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #ffc10780}html .btn-outline-yellow:disabled,html .btn-outline-yellow.disabled,html[data-netbox-color-mode=dark] .btn-outline-yellow:disabled,html[data-netbox-color-mode=dark] .btn-outline-yellow.disabled,html[data-netbox-color-mode=light] .btn-outline-yellow:disabled,html[data-netbox-color-mode=light] .btn-outline-yellow.disabled{color:#ffc107;background-color:transparent}}@media print{html .btn-outline-green,html[data-netbox-color-mode=dark] .btn-outline-green,html[data-netbox-color-mode=light] .btn-outline-green{color:#198754;border-color:#198754}html .btn-outline-green:hover,html[data-netbox-color-mode=dark] .btn-outline-green:hover,html[data-netbox-color-mode=light] .btn-outline-green:hover{color:#fff;background-color:#198754;border-color:#198754}.btn-check:focus+html .btn-outline-green,html .btn-outline-green:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-green,html[data-netbox-color-mode=dark] .btn-outline-green:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-green,html[data-netbox-color-mode=light] .btn-outline-green:focus{box-shadow:0 0 0 .25rem #19875480}.btn-check:checked+html .btn-outline-green,.btn-check:active+html .btn-outline-green,html .btn-outline-green:active,html .btn-outline-green.active,html .btn-outline-green.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-green,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-green,html[data-netbox-color-mode=dark] .btn-outline-green:active,html[data-netbox-color-mode=dark] .btn-outline-green.active,html[data-netbox-color-mode=dark] .btn-outline-green.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-green,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-green,html[data-netbox-color-mode=light] .btn-outline-green:active,html[data-netbox-color-mode=light] .btn-outline-green.active,html[data-netbox-color-mode=light] .btn-outline-green.dropdown-toggle.show{color:#fff;background-color:#198754;border-color:#198754}.btn-check:checked+html .btn-outline-green:focus,.btn-check:active+html .btn-outline-green:focus,html .btn-outline-green:active:focus,html .btn-outline-green.active:focus,html .btn-outline-green.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-green:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-green:focus,html[data-netbox-color-mode=dark] .btn-outline-green:active:focus,html[data-netbox-color-mode=dark] .btn-outline-green.active:focus,html[data-netbox-color-mode=dark] .btn-outline-green.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-green:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-green:focus,html[data-netbox-color-mode=light] .btn-outline-green:active:focus,html[data-netbox-color-mode=light] .btn-outline-green.active:focus,html[data-netbox-color-mode=light] .btn-outline-green.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #19875480}html .btn-outline-green:disabled,html .btn-outline-green.disabled,html[data-netbox-color-mode=dark] .btn-outline-green:disabled,html[data-netbox-color-mode=dark] .btn-outline-green.disabled,html[data-netbox-color-mode=light] .btn-outline-green:disabled,html[data-netbox-color-mode=light] .btn-outline-green.disabled{color:#198754;background-color:transparent}}@media print{html .btn-outline-blue,html[data-netbox-color-mode=dark] .btn-outline-blue,html[data-netbox-color-mode=light] .btn-outline-blue{color:#0d6efd;border-color:#0d6efd}html .btn-outline-blue:hover,html[data-netbox-color-mode=dark] .btn-outline-blue:hover,html[data-netbox-color-mode=light] .btn-outline-blue:hover{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-check:focus+html .btn-outline-blue,html .btn-outline-blue:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-blue,html[data-netbox-color-mode=dark] .btn-outline-blue:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-blue,html[data-netbox-color-mode=light] .btn-outline-blue:focus{box-shadow:0 0 0 .25rem #0d6efd80}.btn-check:checked+html .btn-outline-blue,.btn-check:active+html .btn-outline-blue,html .btn-outline-blue:active,html .btn-outline-blue.active,html .btn-outline-blue.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-blue,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-blue,html[data-netbox-color-mode=dark] .btn-outline-blue:active,html[data-netbox-color-mode=dark] .btn-outline-blue.active,html[data-netbox-color-mode=dark] .btn-outline-blue.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-blue,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-blue,html[data-netbox-color-mode=light] .btn-outline-blue:active,html[data-netbox-color-mode=light] .btn-outline-blue.active,html[data-netbox-color-mode=light] .btn-outline-blue.dropdown-toggle.show{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-check:checked+html .btn-outline-blue:focus,.btn-check:active+html .btn-outline-blue:focus,html .btn-outline-blue:active:focus,html .btn-outline-blue.active:focus,html .btn-outline-blue.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-blue:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-blue:focus,html[data-netbox-color-mode=dark] .btn-outline-blue:active:focus,html[data-netbox-color-mode=dark] .btn-outline-blue.active:focus,html[data-netbox-color-mode=dark] .btn-outline-blue.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-blue:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-blue:focus,html[data-netbox-color-mode=light] .btn-outline-blue:active:focus,html[data-netbox-color-mode=light] .btn-outline-blue.active:focus,html[data-netbox-color-mode=light] .btn-outline-blue.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #0d6efd80}html .btn-outline-blue:disabled,html .btn-outline-blue.disabled,html[data-netbox-color-mode=dark] .btn-outline-blue:disabled,html[data-netbox-color-mode=dark] .btn-outline-blue.disabled,html[data-netbox-color-mode=light] .btn-outline-blue:disabled,html[data-netbox-color-mode=light] .btn-outline-blue.disabled{color:#0d6efd;background-color:transparent}}@media print{html .btn-outline-cyan,html[data-netbox-color-mode=dark] .btn-outline-cyan,html[data-netbox-color-mode=light] .btn-outline-cyan{color:#0dcaf0;border-color:#0dcaf0}html .btn-outline-cyan:hover,html[data-netbox-color-mode=dark] .btn-outline-cyan:hover,html[data-netbox-color-mode=light] .btn-outline-cyan:hover{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-check:focus+html .btn-outline-cyan,html .btn-outline-cyan:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-cyan,html[data-netbox-color-mode=dark] .btn-outline-cyan:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-cyan,html[data-netbox-color-mode=light] .btn-outline-cyan:focus{box-shadow:0 0 0 .25rem #0dcaf080}.btn-check:checked+html .btn-outline-cyan,.btn-check:active+html .btn-outline-cyan,html .btn-outline-cyan:active,html .btn-outline-cyan.active,html .btn-outline-cyan.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-cyan,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-cyan,html[data-netbox-color-mode=dark] .btn-outline-cyan:active,html[data-netbox-color-mode=dark] .btn-outline-cyan.active,html[data-netbox-color-mode=dark] .btn-outline-cyan.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-cyan,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-cyan,html[data-netbox-color-mode=light] .btn-outline-cyan:active,html[data-netbox-color-mode=light] .btn-outline-cyan.active,html[data-netbox-color-mode=light] .btn-outline-cyan.dropdown-toggle.show{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-check:checked+html .btn-outline-cyan:focus,.btn-check:active+html .btn-outline-cyan:focus,html .btn-outline-cyan:active:focus,html .btn-outline-cyan.active:focus,html .btn-outline-cyan.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-cyan:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-cyan:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan:active:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan.active:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-cyan:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-cyan:focus,html[data-netbox-color-mode=light] .btn-outline-cyan:active:focus,html[data-netbox-color-mode=light] .btn-outline-cyan.active:focus,html[data-netbox-color-mode=light] .btn-outline-cyan.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #0dcaf080}html .btn-outline-cyan:disabled,html .btn-outline-cyan.disabled,html[data-netbox-color-mode=dark] .btn-outline-cyan:disabled,html[data-netbox-color-mode=dark] .btn-outline-cyan.disabled,html[data-netbox-color-mode=light] .btn-outline-cyan:disabled,html[data-netbox-color-mode=light] .btn-outline-cyan.disabled{color:#0dcaf0;background-color:transparent}}@media print{html .btn-outline-indigo,html[data-netbox-color-mode=dark] .btn-outline-indigo,html[data-netbox-color-mode=light] .btn-outline-indigo{color:#6610f2;border-color:#6610f2}html .btn-outline-indigo:hover,html[data-netbox-color-mode=dark] .btn-outline-indigo:hover,html[data-netbox-color-mode=light] .btn-outline-indigo:hover{color:#fff;background-color:#6610f2;border-color:#6610f2}.btn-check:focus+html .btn-outline-indigo,html .btn-outline-indigo:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-indigo,html[data-netbox-color-mode=dark] .btn-outline-indigo:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-indigo,html[data-netbox-color-mode=light] .btn-outline-indigo:focus{box-shadow:0 0 0 .25rem #6610f280}.btn-check:checked+html .btn-outline-indigo,.btn-check:active+html .btn-outline-indigo,html .btn-outline-indigo:active,html .btn-outline-indigo.active,html .btn-outline-indigo.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-indigo,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-indigo,html[data-netbox-color-mode=dark] .btn-outline-indigo:active,html[data-netbox-color-mode=dark] .btn-outline-indigo.active,html[data-netbox-color-mode=dark] .btn-outline-indigo.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-indigo,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-indigo,html[data-netbox-color-mode=light] .btn-outline-indigo:active,html[data-netbox-color-mode=light] .btn-outline-indigo.active,html[data-netbox-color-mode=light] .btn-outline-indigo.dropdown-toggle.show{color:#fff;background-color:#6610f2;border-color:#6610f2}.btn-check:checked+html .btn-outline-indigo:focus,.btn-check:active+html .btn-outline-indigo:focus,html .btn-outline-indigo:active:focus,html .btn-outline-indigo.active:focus,html .btn-outline-indigo.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-indigo:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-indigo:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo:active:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo.active:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-indigo:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-indigo:focus,html[data-netbox-color-mode=light] .btn-outline-indigo:active:focus,html[data-netbox-color-mode=light] .btn-outline-indigo.active:focus,html[data-netbox-color-mode=light] .btn-outline-indigo.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #6610f280}html .btn-outline-indigo:disabled,html .btn-outline-indigo.disabled,html[data-netbox-color-mode=dark] .btn-outline-indigo:disabled,html[data-netbox-color-mode=dark] .btn-outline-indigo.disabled,html[data-netbox-color-mode=light] .btn-outline-indigo:disabled,html[data-netbox-color-mode=light] .btn-outline-indigo.disabled{color:#6610f2;background-color:transparent}}@media print{html .btn-outline-purple,html[data-netbox-color-mode=dark] .btn-outline-purple,html[data-netbox-color-mode=light] .btn-outline-purple{color:#6f42c1;border-color:#6f42c1}html .btn-outline-purple:hover,html[data-netbox-color-mode=dark] .btn-outline-purple:hover,html[data-netbox-color-mode=light] .btn-outline-purple:hover{color:#fff;background-color:#6f42c1;border-color:#6f42c1}.btn-check:focus+html .btn-outline-purple,html .btn-outline-purple:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-purple,html[data-netbox-color-mode=dark] .btn-outline-purple:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-purple,html[data-netbox-color-mode=light] .btn-outline-purple:focus{box-shadow:0 0 0 .25rem #6f42c180}.btn-check:checked+html .btn-outline-purple,.btn-check:active+html .btn-outline-purple,html .btn-outline-purple:active,html .btn-outline-purple.active,html .btn-outline-purple.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-purple,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-purple,html[data-netbox-color-mode=dark] .btn-outline-purple:active,html[data-netbox-color-mode=dark] .btn-outline-purple.active,html[data-netbox-color-mode=dark] .btn-outline-purple.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-purple,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-purple,html[data-netbox-color-mode=light] .btn-outline-purple:active,html[data-netbox-color-mode=light] .btn-outline-purple.active,html[data-netbox-color-mode=light] .btn-outline-purple.dropdown-toggle.show{color:#fff;background-color:#6f42c1;border-color:#6f42c1}.btn-check:checked+html .btn-outline-purple:focus,.btn-check:active+html .btn-outline-purple:focus,html .btn-outline-purple:active:focus,html .btn-outline-purple.active:focus,html .btn-outline-purple.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-purple:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-purple:focus,html[data-netbox-color-mode=dark] .btn-outline-purple:active:focus,html[data-netbox-color-mode=dark] .btn-outline-purple.active:focus,html[data-netbox-color-mode=dark] .btn-outline-purple.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-purple:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-purple:focus,html[data-netbox-color-mode=light] .btn-outline-purple:active:focus,html[data-netbox-color-mode=light] .btn-outline-purple.active:focus,html[data-netbox-color-mode=light] .btn-outline-purple.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #6f42c180}html .btn-outline-purple:disabled,html .btn-outline-purple.disabled,html[data-netbox-color-mode=dark] .btn-outline-purple:disabled,html[data-netbox-color-mode=dark] .btn-outline-purple.disabled,html[data-netbox-color-mode=light] .btn-outline-purple:disabled,html[data-netbox-color-mode=light] .btn-outline-purple.disabled{color:#6f42c1;background-color:transparent}}@media print{html .btn-outline-pink,html[data-netbox-color-mode=dark] .btn-outline-pink,html[data-netbox-color-mode=light] .btn-outline-pink{color:#d63384;border-color:#d63384}html .btn-outline-pink:hover,html[data-netbox-color-mode=dark] .btn-outline-pink:hover,html[data-netbox-color-mode=light] .btn-outline-pink:hover{color:#fff;background-color:#d63384;border-color:#d63384}.btn-check:focus+html .btn-outline-pink,html .btn-outline-pink:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-pink,html[data-netbox-color-mode=dark] .btn-outline-pink:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-pink,html[data-netbox-color-mode=light] .btn-outline-pink:focus{box-shadow:0 0 0 .25rem #d6338480}.btn-check:checked+html .btn-outline-pink,.btn-check:active+html .btn-outline-pink,html .btn-outline-pink:active,html .btn-outline-pink.active,html .btn-outline-pink.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-pink,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-pink,html[data-netbox-color-mode=dark] .btn-outline-pink:active,html[data-netbox-color-mode=dark] .btn-outline-pink.active,html[data-netbox-color-mode=dark] .btn-outline-pink.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-pink,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-pink,html[data-netbox-color-mode=light] .btn-outline-pink:active,html[data-netbox-color-mode=light] .btn-outline-pink.active,html[data-netbox-color-mode=light] .btn-outline-pink.dropdown-toggle.show{color:#fff;background-color:#d63384;border-color:#d63384}.btn-check:checked+html .btn-outline-pink:focus,.btn-check:active+html .btn-outline-pink:focus,html .btn-outline-pink:active:focus,html .btn-outline-pink.active:focus,html .btn-outline-pink.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-pink:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-pink:focus,html[data-netbox-color-mode=dark] .btn-outline-pink:active:focus,html[data-netbox-color-mode=dark] .btn-outline-pink.active:focus,html[data-netbox-color-mode=dark] .btn-outline-pink.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-pink:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-pink:focus,html[data-netbox-color-mode=light] .btn-outline-pink:active:focus,html[data-netbox-color-mode=light] .btn-outline-pink.active:focus,html[data-netbox-color-mode=light] .btn-outline-pink.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #d6338480}html .btn-outline-pink:disabled,html .btn-outline-pink.disabled,html[data-netbox-color-mode=dark] .btn-outline-pink:disabled,html[data-netbox-color-mode=dark] .btn-outline-pink.disabled,html[data-netbox-color-mode=light] .btn-outline-pink:disabled,html[data-netbox-color-mode=light] .btn-outline-pink.disabled{color:#d63384;background-color:transparent}}@media print{html .btn-outline-darker,html[data-netbox-color-mode=dark] .btn-outline-darker,html[data-netbox-color-mode=light] .btn-outline-darker{color:#1b1f22;border-color:#1b1f22}html .btn-outline-darker:hover,html[data-netbox-color-mode=dark] .btn-outline-darker:hover,html[data-netbox-color-mode=light] .btn-outline-darker:hover{color:#fff;background-color:#1b1f22;border-color:#1b1f22}.btn-check:focus+html .btn-outline-darker,html .btn-outline-darker:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-darker,html[data-netbox-color-mode=dark] .btn-outline-darker:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-darker,html[data-netbox-color-mode=light] .btn-outline-darker:focus{box-shadow:0 0 0 .25rem #1b1f2280}.btn-check:checked+html .btn-outline-darker,.btn-check:active+html .btn-outline-darker,html .btn-outline-darker:active,html .btn-outline-darker.active,html .btn-outline-darker.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-darker,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-darker,html[data-netbox-color-mode=dark] .btn-outline-darker:active,html[data-netbox-color-mode=dark] .btn-outline-darker.active,html[data-netbox-color-mode=dark] .btn-outline-darker.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-darker,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-darker,html[data-netbox-color-mode=light] .btn-outline-darker:active,html[data-netbox-color-mode=light] .btn-outline-darker.active,html[data-netbox-color-mode=light] .btn-outline-darker.dropdown-toggle.show{color:#fff;background-color:#1b1f22;border-color:#1b1f22}.btn-check:checked+html .btn-outline-darker:focus,.btn-check:active+html .btn-outline-darker:focus,html .btn-outline-darker:active:focus,html .btn-outline-darker.active:focus,html .btn-outline-darker.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-darker:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-darker:focus,html[data-netbox-color-mode=dark] .btn-outline-darker:active:focus,html[data-netbox-color-mode=dark] .btn-outline-darker.active:focus,html[data-netbox-color-mode=dark] .btn-outline-darker.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-darker:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-darker:focus,html[data-netbox-color-mode=light] .btn-outline-darker:active:focus,html[data-netbox-color-mode=light] .btn-outline-darker.active:focus,html[data-netbox-color-mode=light] .btn-outline-darker.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #1b1f2280}html .btn-outline-darker:disabled,html .btn-outline-darker.disabled,html[data-netbox-color-mode=dark] .btn-outline-darker:disabled,html[data-netbox-color-mode=dark] .btn-outline-darker.disabled,html[data-netbox-color-mode=light] .btn-outline-darker:disabled,html[data-netbox-color-mode=light] .btn-outline-darker.disabled{color:#1b1f22;background-color:transparent}}@media print{html .btn-outline-darkest,html[data-netbox-color-mode=dark] .btn-outline-darkest,html[data-netbox-color-mode=light] .btn-outline-darkest{color:#171b1d;border-color:#171b1d}html .btn-outline-darkest:hover,html[data-netbox-color-mode=dark] .btn-outline-darkest:hover,html[data-netbox-color-mode=light] .btn-outline-darkest:hover{color:#fff;background-color:#171b1d;border-color:#171b1d}.btn-check:focus+html .btn-outline-darkest,html .btn-outline-darkest:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-darkest,html[data-netbox-color-mode=dark] .btn-outline-darkest:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-darkest,html[data-netbox-color-mode=light] .btn-outline-darkest:focus{box-shadow:0 0 0 .25rem #171b1d80}.btn-check:checked+html .btn-outline-darkest,.btn-check:active+html .btn-outline-darkest,html .btn-outline-darkest:active,html .btn-outline-darkest.active,html .btn-outline-darkest.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-darkest,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-darkest,html[data-netbox-color-mode=dark] .btn-outline-darkest:active,html[data-netbox-color-mode=dark] .btn-outline-darkest.active,html[data-netbox-color-mode=dark] .btn-outline-darkest.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-darkest,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-darkest,html[data-netbox-color-mode=light] .btn-outline-darkest:active,html[data-netbox-color-mode=light] .btn-outline-darkest.active,html[data-netbox-color-mode=light] .btn-outline-darkest.dropdown-toggle.show{color:#fff;background-color:#171b1d;border-color:#171b1d}.btn-check:checked+html .btn-outline-darkest:focus,.btn-check:active+html .btn-outline-darkest:focus,html .btn-outline-darkest:active:focus,html .btn-outline-darkest.active:focus,html .btn-outline-darkest.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-darkest:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-darkest:focus,html[data-netbox-color-mode=dark] .btn-outline-darkest:active:focus,html[data-netbox-color-mode=dark] .btn-outline-darkest.active:focus,html[data-netbox-color-mode=dark] .btn-outline-darkest.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-darkest:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-darkest:focus,html[data-netbox-color-mode=light] .btn-outline-darkest:active:focus,html[data-netbox-color-mode=light] .btn-outline-darkest.active:focus,html[data-netbox-color-mode=light] .btn-outline-darkest.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #171b1d80}html .btn-outline-darkest:disabled,html .btn-outline-darkest.disabled,html[data-netbox-color-mode=dark] .btn-outline-darkest:disabled,html[data-netbox-color-mode=dark] .btn-outline-darkest.disabled,html[data-netbox-color-mode=light] .btn-outline-darkest:disabled,html[data-netbox-color-mode=light] .btn-outline-darkest.disabled{color:#171b1d;background-color:transparent}}@media print{html .btn-outline-gray,html[data-netbox-color-mode=dark] .btn-outline-gray,html[data-netbox-color-mode=light] .btn-outline-gray{color:#ced4da;border-color:#ced4da}html .btn-outline-gray:hover,html[data-netbox-color-mode=dark] .btn-outline-gray:hover,html[data-netbox-color-mode=light] .btn-outline-gray:hover{color:#000;background-color:#ced4da;border-color:#ced4da}.btn-check:focus+html .btn-outline-gray,html .btn-outline-gray:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-gray,html[data-netbox-color-mode=dark] .btn-outline-gray:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-gray,html[data-netbox-color-mode=light] .btn-outline-gray:focus{box-shadow:0 0 0 .25rem #ced4da80}.btn-check:checked+html .btn-outline-gray,.btn-check:active+html .btn-outline-gray,html .btn-outline-gray:active,html .btn-outline-gray.active,html .btn-outline-gray.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-gray,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-gray,html[data-netbox-color-mode=dark] .btn-outline-gray:active,html[data-netbox-color-mode=dark] .btn-outline-gray.active,html[data-netbox-color-mode=dark] .btn-outline-gray.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-gray,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-gray,html[data-netbox-color-mode=light] .btn-outline-gray:active,html[data-netbox-color-mode=light] .btn-outline-gray.active,html[data-netbox-color-mode=light] .btn-outline-gray.dropdown-toggle.show{color:#000;background-color:#ced4da;border-color:#ced4da}.btn-check:checked+html .btn-outline-gray:focus,.btn-check:active+html .btn-outline-gray:focus,html .btn-outline-gray:active:focus,html .btn-outline-gray.active:focus,html .btn-outline-gray.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-gray:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-gray:focus,html[data-netbox-color-mode=dark] .btn-outline-gray:active:focus,html[data-netbox-color-mode=dark] .btn-outline-gray.active:focus,html[data-netbox-color-mode=dark] .btn-outline-gray.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-gray:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-gray:focus,html[data-netbox-color-mode=light] .btn-outline-gray:active:focus,html[data-netbox-color-mode=light] .btn-outline-gray.active:focus,html[data-netbox-color-mode=light] .btn-outline-gray.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #ced4da80}html .btn-outline-gray:disabled,html .btn-outline-gray.disabled,html[data-netbox-color-mode=dark] .btn-outline-gray:disabled,html[data-netbox-color-mode=dark] .btn-outline-gray.disabled,html[data-netbox-color-mode=light] .btn-outline-gray:disabled,html[data-netbox-color-mode=light] .btn-outline-gray.disabled{color:#ced4da;background-color:transparent}}@media print{html .btn-outline-gray-100,html[data-netbox-color-mode=dark] .btn-outline-gray-100,html[data-netbox-color-mode=light] .btn-outline-gray-100{color:#f8f9fa;border-color:#f8f9fa}html .btn-outline-gray-100:hover,html[data-netbox-color-mode=dark] .btn-outline-gray-100:hover,html[data-netbox-color-mode=light] .btn-outline-gray-100:hover{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-check:focus+html .btn-outline-gray-100,html .btn-outline-gray-100:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-gray-100,html[data-netbox-color-mode=dark] .btn-outline-gray-100:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-gray-100,html[data-netbox-color-mode=light] .btn-outline-gray-100:focus{box-shadow:0 0 0 .25rem #f8f9fa80}.btn-check:checked+html .btn-outline-gray-100,.btn-check:active+html .btn-outline-gray-100,html .btn-outline-gray-100:active,html .btn-outline-gray-100.active,html .btn-outline-gray-100.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-gray-100,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-gray-100,html[data-netbox-color-mode=dark] .btn-outline-gray-100:active,html[data-netbox-color-mode=dark] .btn-outline-gray-100.active,html[data-netbox-color-mode=dark] .btn-outline-gray-100.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-gray-100,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-gray-100,html[data-netbox-color-mode=light] .btn-outline-gray-100:active,html[data-netbox-color-mode=light] .btn-outline-gray-100.active,html[data-netbox-color-mode=light] .btn-outline-gray-100.dropdown-toggle.show{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-check:checked+html .btn-outline-gray-100:focus,.btn-check:active+html .btn-outline-gray-100:focus,html .btn-outline-gray-100:active:focus,html .btn-outline-gray-100.active:focus,html .btn-outline-gray-100.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-gray-100:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-gray-100:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-100:active:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-100.active:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-100.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-gray-100:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-gray-100:focus,html[data-netbox-color-mode=light] .btn-outline-gray-100:active:focus,html[data-netbox-color-mode=light] .btn-outline-gray-100.active:focus,html[data-netbox-color-mode=light] .btn-outline-gray-100.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #f8f9fa80}html .btn-outline-gray-100:disabled,html .btn-outline-gray-100.disabled,html[data-netbox-color-mode=dark] .btn-outline-gray-100:disabled,html[data-netbox-color-mode=dark] .btn-outline-gray-100.disabled,html[data-netbox-color-mode=light] .btn-outline-gray-100:disabled,html[data-netbox-color-mode=light] .btn-outline-gray-100.disabled{color:#f8f9fa;background-color:transparent}}@media print{html .btn-outline-gray-200,html[data-netbox-color-mode=dark] .btn-outline-gray-200,html[data-netbox-color-mode=light] .btn-outline-gray-200{color:#e9ecef;border-color:#e9ecef}html .btn-outline-gray-200:hover,html[data-netbox-color-mode=dark] .btn-outline-gray-200:hover,html[data-netbox-color-mode=light] .btn-outline-gray-200:hover{color:#000;background-color:#e9ecef;border-color:#e9ecef}.btn-check:focus+html .btn-outline-gray-200,html .btn-outline-gray-200:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-gray-200,html[data-netbox-color-mode=dark] .btn-outline-gray-200:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-gray-200,html[data-netbox-color-mode=light] .btn-outline-gray-200:focus{box-shadow:0 0 0 .25rem #e9ecef80}.btn-check:checked+html .btn-outline-gray-200,.btn-check:active+html .btn-outline-gray-200,html .btn-outline-gray-200:active,html .btn-outline-gray-200.active,html .btn-outline-gray-200.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-gray-200,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-gray-200,html[data-netbox-color-mode=dark] .btn-outline-gray-200:active,html[data-netbox-color-mode=dark] .btn-outline-gray-200.active,html[data-netbox-color-mode=dark] .btn-outline-gray-200.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-gray-200,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-gray-200,html[data-netbox-color-mode=light] .btn-outline-gray-200:active,html[data-netbox-color-mode=light] .btn-outline-gray-200.active,html[data-netbox-color-mode=light] .btn-outline-gray-200.dropdown-toggle.show{color:#000;background-color:#e9ecef;border-color:#e9ecef}.btn-check:checked+html .btn-outline-gray-200:focus,.btn-check:active+html .btn-outline-gray-200:focus,html .btn-outline-gray-200:active:focus,html .btn-outline-gray-200.active:focus,html .btn-outline-gray-200.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-gray-200:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-gray-200:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-200:active:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-200.active:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-200.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-gray-200:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-gray-200:focus,html[data-netbox-color-mode=light] .btn-outline-gray-200:active:focus,html[data-netbox-color-mode=light] .btn-outline-gray-200.active:focus,html[data-netbox-color-mode=light] .btn-outline-gray-200.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #e9ecef80}html .btn-outline-gray-200:disabled,html .btn-outline-gray-200.disabled,html[data-netbox-color-mode=dark] .btn-outline-gray-200:disabled,html[data-netbox-color-mode=dark] .btn-outline-gray-200.disabled,html[data-netbox-color-mode=light] .btn-outline-gray-200:disabled,html[data-netbox-color-mode=light] .btn-outline-gray-200.disabled{color:#e9ecef;background-color:transparent}}@media print{html .btn-outline-gray-300,html[data-netbox-color-mode=dark] .btn-outline-gray-300,html[data-netbox-color-mode=light] .btn-outline-gray-300{color:#dee2e6;border-color:#dee2e6}html .btn-outline-gray-300:hover,html[data-netbox-color-mode=dark] .btn-outline-gray-300:hover,html[data-netbox-color-mode=light] .btn-outline-gray-300:hover{color:#000;background-color:#dee2e6;border-color:#dee2e6}.btn-check:focus+html .btn-outline-gray-300,html .btn-outline-gray-300:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-gray-300,html[data-netbox-color-mode=dark] .btn-outline-gray-300:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-gray-300,html[data-netbox-color-mode=light] .btn-outline-gray-300:focus{box-shadow:0 0 0 .25rem #dee2e680}.btn-check:checked+html .btn-outline-gray-300,.btn-check:active+html .btn-outline-gray-300,html .btn-outline-gray-300:active,html .btn-outline-gray-300.active,html .btn-outline-gray-300.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-gray-300,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-gray-300,html[data-netbox-color-mode=dark] .btn-outline-gray-300:active,html[data-netbox-color-mode=dark] .btn-outline-gray-300.active,html[data-netbox-color-mode=dark] .btn-outline-gray-300.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-gray-300,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-gray-300,html[data-netbox-color-mode=light] .btn-outline-gray-300:active,html[data-netbox-color-mode=light] .btn-outline-gray-300.active,html[data-netbox-color-mode=light] .btn-outline-gray-300.dropdown-toggle.show{color:#000;background-color:#dee2e6;border-color:#dee2e6}.btn-check:checked+html .btn-outline-gray-300:focus,.btn-check:active+html .btn-outline-gray-300:focus,html .btn-outline-gray-300:active:focus,html .btn-outline-gray-300.active:focus,html .btn-outline-gray-300.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-gray-300:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-gray-300:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-300:active:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-300.active:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-300.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-gray-300:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-gray-300:focus,html[data-netbox-color-mode=light] .btn-outline-gray-300:active:focus,html[data-netbox-color-mode=light] .btn-outline-gray-300.active:focus,html[data-netbox-color-mode=light] .btn-outline-gray-300.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #dee2e680}html .btn-outline-gray-300:disabled,html .btn-outline-gray-300.disabled,html[data-netbox-color-mode=dark] .btn-outline-gray-300:disabled,html[data-netbox-color-mode=dark] .btn-outline-gray-300.disabled,html[data-netbox-color-mode=light] .btn-outline-gray-300:disabled,html[data-netbox-color-mode=light] .btn-outline-gray-300.disabled{color:#dee2e6;background-color:transparent}}@media print{html .btn-outline-gray-400,html[data-netbox-color-mode=dark] .btn-outline-gray-400,html[data-netbox-color-mode=light] .btn-outline-gray-400{color:#ced4da;border-color:#ced4da}html .btn-outline-gray-400:hover,html[data-netbox-color-mode=dark] .btn-outline-gray-400:hover,html[data-netbox-color-mode=light] .btn-outline-gray-400:hover{color:#000;background-color:#ced4da;border-color:#ced4da}.btn-check:focus+html .btn-outline-gray-400,html .btn-outline-gray-400:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-gray-400,html[data-netbox-color-mode=dark] .btn-outline-gray-400:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-gray-400,html[data-netbox-color-mode=light] .btn-outline-gray-400:focus{box-shadow:0 0 0 .25rem #ced4da80}.btn-check:checked+html .btn-outline-gray-400,.btn-check:active+html .btn-outline-gray-400,html .btn-outline-gray-400:active,html .btn-outline-gray-400.active,html .btn-outline-gray-400.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-gray-400,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-gray-400,html[data-netbox-color-mode=dark] .btn-outline-gray-400:active,html[data-netbox-color-mode=dark] .btn-outline-gray-400.active,html[data-netbox-color-mode=dark] .btn-outline-gray-400.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-gray-400,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-gray-400,html[data-netbox-color-mode=light] .btn-outline-gray-400:active,html[data-netbox-color-mode=light] .btn-outline-gray-400.active,html[data-netbox-color-mode=light] .btn-outline-gray-400.dropdown-toggle.show{color:#000;background-color:#ced4da;border-color:#ced4da}.btn-check:checked+html .btn-outline-gray-400:focus,.btn-check:active+html .btn-outline-gray-400:focus,html .btn-outline-gray-400:active:focus,html .btn-outline-gray-400.active:focus,html .btn-outline-gray-400.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-gray-400:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-gray-400:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-400:active:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-400.active:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-400.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-gray-400:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-gray-400:focus,html[data-netbox-color-mode=light] .btn-outline-gray-400:active:focus,html[data-netbox-color-mode=light] .btn-outline-gray-400.active:focus,html[data-netbox-color-mode=light] .btn-outline-gray-400.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #ced4da80}html .btn-outline-gray-400:disabled,html .btn-outline-gray-400.disabled,html[data-netbox-color-mode=dark] .btn-outline-gray-400:disabled,html[data-netbox-color-mode=dark] .btn-outline-gray-400.disabled,html[data-netbox-color-mode=light] .btn-outline-gray-400:disabled,html[data-netbox-color-mode=light] .btn-outline-gray-400.disabled{color:#ced4da;background-color:transparent}}@media print{html .btn-outline-gray-500,html[data-netbox-color-mode=dark] .btn-outline-gray-500,html[data-netbox-color-mode=light] .btn-outline-gray-500{color:#adb5bd;border-color:#adb5bd}html .btn-outline-gray-500:hover,html[data-netbox-color-mode=dark] .btn-outline-gray-500:hover,html[data-netbox-color-mode=light] .btn-outline-gray-500:hover{color:#000;background-color:#adb5bd;border-color:#adb5bd}.btn-check:focus+html .btn-outline-gray-500,html .btn-outline-gray-500:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-gray-500,html[data-netbox-color-mode=dark] .btn-outline-gray-500:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-gray-500,html[data-netbox-color-mode=light] .btn-outline-gray-500:focus{box-shadow:0 0 0 .25rem #adb5bd80}.btn-check:checked+html .btn-outline-gray-500,.btn-check:active+html .btn-outline-gray-500,html .btn-outline-gray-500:active,html .btn-outline-gray-500.active,html .btn-outline-gray-500.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-gray-500,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-gray-500,html[data-netbox-color-mode=dark] .btn-outline-gray-500:active,html[data-netbox-color-mode=dark] .btn-outline-gray-500.active,html[data-netbox-color-mode=dark] .btn-outline-gray-500.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-gray-500,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-gray-500,html[data-netbox-color-mode=light] .btn-outline-gray-500:active,html[data-netbox-color-mode=light] .btn-outline-gray-500.active,html[data-netbox-color-mode=light] .btn-outline-gray-500.dropdown-toggle.show{color:#000;background-color:#adb5bd;border-color:#adb5bd}.btn-check:checked+html .btn-outline-gray-500:focus,.btn-check:active+html .btn-outline-gray-500:focus,html .btn-outline-gray-500:active:focus,html .btn-outline-gray-500.active:focus,html .btn-outline-gray-500.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-gray-500:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-gray-500:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-500:active:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-500.active:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-500.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-gray-500:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-gray-500:focus,html[data-netbox-color-mode=light] .btn-outline-gray-500:active:focus,html[data-netbox-color-mode=light] .btn-outline-gray-500.active:focus,html[data-netbox-color-mode=light] .btn-outline-gray-500.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #adb5bd80}html .btn-outline-gray-500:disabled,html .btn-outline-gray-500.disabled,html[data-netbox-color-mode=dark] .btn-outline-gray-500:disabled,html[data-netbox-color-mode=dark] .btn-outline-gray-500.disabled,html[data-netbox-color-mode=light] .btn-outline-gray-500:disabled,html[data-netbox-color-mode=light] .btn-outline-gray-500.disabled{color:#adb5bd;background-color:transparent}}@media print{html .btn-outline-gray-600,html[data-netbox-color-mode=dark] .btn-outline-gray-600,html[data-netbox-color-mode=light] .btn-outline-gray-600{color:#6c757d;border-color:#6c757d}html .btn-outline-gray-600:hover,html[data-netbox-color-mode=dark] .btn-outline-gray-600:hover,html[data-netbox-color-mode=light] .btn-outline-gray-600:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-check:focus+html .btn-outline-gray-600,html .btn-outline-gray-600:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-gray-600,html[data-netbox-color-mode=dark] .btn-outline-gray-600:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-gray-600,html[data-netbox-color-mode=light] .btn-outline-gray-600:focus{box-shadow:0 0 0 .25rem #6c757d80}.btn-check:checked+html .btn-outline-gray-600,.btn-check:active+html .btn-outline-gray-600,html .btn-outline-gray-600:active,html .btn-outline-gray-600.active,html .btn-outline-gray-600.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-gray-600,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-gray-600,html[data-netbox-color-mode=dark] .btn-outline-gray-600:active,html[data-netbox-color-mode=dark] .btn-outline-gray-600.active,html[data-netbox-color-mode=dark] .btn-outline-gray-600.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-gray-600,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-gray-600,html[data-netbox-color-mode=light] .btn-outline-gray-600:active,html[data-netbox-color-mode=light] .btn-outline-gray-600.active,html[data-netbox-color-mode=light] .btn-outline-gray-600.dropdown-toggle.show{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-check:checked+html .btn-outline-gray-600:focus,.btn-check:active+html .btn-outline-gray-600:focus,html .btn-outline-gray-600:active:focus,html .btn-outline-gray-600.active:focus,html .btn-outline-gray-600.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-gray-600:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-gray-600:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-600:active:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-600.active:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-600.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-gray-600:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-gray-600:focus,html[data-netbox-color-mode=light] .btn-outline-gray-600:active:focus,html[data-netbox-color-mode=light] .btn-outline-gray-600.active:focus,html[data-netbox-color-mode=light] .btn-outline-gray-600.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #6c757d80}html .btn-outline-gray-600:disabled,html .btn-outline-gray-600.disabled,html[data-netbox-color-mode=dark] .btn-outline-gray-600:disabled,html[data-netbox-color-mode=dark] .btn-outline-gray-600.disabled,html[data-netbox-color-mode=light] .btn-outline-gray-600:disabled,html[data-netbox-color-mode=light] .btn-outline-gray-600.disabled{color:#6c757d;background-color:transparent}}@media print{html .btn-outline-gray-700,html[data-netbox-color-mode=dark] .btn-outline-gray-700,html[data-netbox-color-mode=light] .btn-outline-gray-700{color:#495057;border-color:#495057}html .btn-outline-gray-700:hover,html[data-netbox-color-mode=dark] .btn-outline-gray-700:hover,html[data-netbox-color-mode=light] .btn-outline-gray-700:hover{color:#fff;background-color:#495057;border-color:#495057}.btn-check:focus+html .btn-outline-gray-700,html .btn-outline-gray-700:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-gray-700,html[data-netbox-color-mode=dark] .btn-outline-gray-700:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-gray-700,html[data-netbox-color-mode=light] .btn-outline-gray-700:focus{box-shadow:0 0 0 .25rem #49505780}.btn-check:checked+html .btn-outline-gray-700,.btn-check:active+html .btn-outline-gray-700,html .btn-outline-gray-700:active,html .btn-outline-gray-700.active,html .btn-outline-gray-700.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-gray-700,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-gray-700,html[data-netbox-color-mode=dark] .btn-outline-gray-700:active,html[data-netbox-color-mode=dark] .btn-outline-gray-700.active,html[data-netbox-color-mode=dark] .btn-outline-gray-700.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-gray-700,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-gray-700,html[data-netbox-color-mode=light] .btn-outline-gray-700:active,html[data-netbox-color-mode=light] .btn-outline-gray-700.active,html[data-netbox-color-mode=light] .btn-outline-gray-700.dropdown-toggle.show{color:#fff;background-color:#495057;border-color:#495057}.btn-check:checked+html .btn-outline-gray-700:focus,.btn-check:active+html .btn-outline-gray-700:focus,html .btn-outline-gray-700:active:focus,html .btn-outline-gray-700.active:focus,html .btn-outline-gray-700.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-gray-700:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-gray-700:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-700:active:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-700.active:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-700.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-gray-700:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-gray-700:focus,html[data-netbox-color-mode=light] .btn-outline-gray-700:active:focus,html[data-netbox-color-mode=light] .btn-outline-gray-700.active:focus,html[data-netbox-color-mode=light] .btn-outline-gray-700.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #49505780}html .btn-outline-gray-700:disabled,html .btn-outline-gray-700.disabled,html[data-netbox-color-mode=dark] .btn-outline-gray-700:disabled,html[data-netbox-color-mode=dark] .btn-outline-gray-700.disabled,html[data-netbox-color-mode=light] .btn-outline-gray-700:disabled,html[data-netbox-color-mode=light] .btn-outline-gray-700.disabled{color:#495057;background-color:transparent}}@media print{html .btn-outline-gray-800,html[data-netbox-color-mode=dark] .btn-outline-gray-800,html[data-netbox-color-mode=light] .btn-outline-gray-800{color:#343a40;border-color:#343a40}html .btn-outline-gray-800:hover,html[data-netbox-color-mode=dark] .btn-outline-gray-800:hover,html[data-netbox-color-mode=light] .btn-outline-gray-800:hover{color:#fff;background-color:#343a40;border-color:#343a40}.btn-check:focus+html .btn-outline-gray-800,html .btn-outline-gray-800:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-gray-800,html[data-netbox-color-mode=dark] .btn-outline-gray-800:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-gray-800,html[data-netbox-color-mode=light] .btn-outline-gray-800:focus{box-shadow:0 0 0 .25rem #343a4080}.btn-check:checked+html .btn-outline-gray-800,.btn-check:active+html .btn-outline-gray-800,html .btn-outline-gray-800:active,html .btn-outline-gray-800.active,html .btn-outline-gray-800.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-gray-800,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-gray-800,html[data-netbox-color-mode=dark] .btn-outline-gray-800:active,html[data-netbox-color-mode=dark] .btn-outline-gray-800.active,html[data-netbox-color-mode=dark] .btn-outline-gray-800.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-gray-800,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-gray-800,html[data-netbox-color-mode=light] .btn-outline-gray-800:active,html[data-netbox-color-mode=light] .btn-outline-gray-800.active,html[data-netbox-color-mode=light] .btn-outline-gray-800.dropdown-toggle.show{color:#fff;background-color:#343a40;border-color:#343a40}.btn-check:checked+html .btn-outline-gray-800:focus,.btn-check:active+html .btn-outline-gray-800:focus,html .btn-outline-gray-800:active:focus,html .btn-outline-gray-800.active:focus,html .btn-outline-gray-800.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-gray-800:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-gray-800:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-800:active:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-800.active:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-800.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-gray-800:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-gray-800:focus,html[data-netbox-color-mode=light] .btn-outline-gray-800:active:focus,html[data-netbox-color-mode=light] .btn-outline-gray-800.active:focus,html[data-netbox-color-mode=light] .btn-outline-gray-800.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #343a4080}html .btn-outline-gray-800:disabled,html .btn-outline-gray-800.disabled,html[data-netbox-color-mode=dark] .btn-outline-gray-800:disabled,html[data-netbox-color-mode=dark] .btn-outline-gray-800.disabled,html[data-netbox-color-mode=light] .btn-outline-gray-800:disabled,html[data-netbox-color-mode=light] .btn-outline-gray-800.disabled{color:#343a40;background-color:transparent}}@media print{html .btn-outline-gray-900,html[data-netbox-color-mode=dark] .btn-outline-gray-900,html[data-netbox-color-mode=light] .btn-outline-gray-900{color:#212529;border-color:#212529}html .btn-outline-gray-900:hover,html[data-netbox-color-mode=dark] .btn-outline-gray-900:hover,html[data-netbox-color-mode=light] .btn-outline-gray-900:hover{color:#fff;background-color:#212529;border-color:#212529}.btn-check:focus+html .btn-outline-gray-900,html .btn-outline-gray-900:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-gray-900,html[data-netbox-color-mode=dark] .btn-outline-gray-900:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-gray-900,html[data-netbox-color-mode=light] .btn-outline-gray-900:focus{box-shadow:0 0 0 .25rem #21252980}.btn-check:checked+html .btn-outline-gray-900,.btn-check:active+html .btn-outline-gray-900,html .btn-outline-gray-900:active,html .btn-outline-gray-900.active,html .btn-outline-gray-900.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-gray-900,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-gray-900,html[data-netbox-color-mode=dark] .btn-outline-gray-900:active,html[data-netbox-color-mode=dark] .btn-outline-gray-900.active,html[data-netbox-color-mode=dark] .btn-outline-gray-900.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-gray-900,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-gray-900,html[data-netbox-color-mode=light] .btn-outline-gray-900:active,html[data-netbox-color-mode=light] .btn-outline-gray-900.active,html[data-netbox-color-mode=light] .btn-outline-gray-900.dropdown-toggle.show{color:#fff;background-color:#212529;border-color:#212529}.btn-check:checked+html .btn-outline-gray-900:focus,.btn-check:active+html .btn-outline-gray-900:focus,html .btn-outline-gray-900:active:focus,html .btn-outline-gray-900.active:focus,html .btn-outline-gray-900.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-gray-900:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-gray-900:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-900:active:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-900.active:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-900.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-gray-900:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-gray-900:focus,html[data-netbox-color-mode=light] .btn-outline-gray-900:active:focus,html[data-netbox-color-mode=light] .btn-outline-gray-900.active:focus,html[data-netbox-color-mode=light] .btn-outline-gray-900.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #21252980}html .btn-outline-gray-900:disabled,html .btn-outline-gray-900.disabled,html[data-netbox-color-mode=dark] .btn-outline-gray-900:disabled,html[data-netbox-color-mode=dark] .btn-outline-gray-900.disabled,html[data-netbox-color-mode=light] .btn-outline-gray-900:disabled,html[data-netbox-color-mode=light] .btn-outline-gray-900.disabled{color:#212529;background-color:transparent}}@media print{html .btn-outline-red-100,html[data-netbox-color-mode=dark] .btn-outline-red-100,html[data-netbox-color-mode=light] .btn-outline-red-100{color:#f8d7da;border-color:#f8d7da}html .btn-outline-red-100:hover,html[data-netbox-color-mode=dark] .btn-outline-red-100:hover,html[data-netbox-color-mode=light] .btn-outline-red-100:hover{color:#000;background-color:#f8d7da;border-color:#f8d7da}.btn-check:focus+html .btn-outline-red-100,html .btn-outline-red-100:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-red-100,html[data-netbox-color-mode=dark] .btn-outline-red-100:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-red-100,html[data-netbox-color-mode=light] .btn-outline-red-100:focus{box-shadow:0 0 0 .25rem #f8d7da80}.btn-check:checked+html .btn-outline-red-100,.btn-check:active+html .btn-outline-red-100,html .btn-outline-red-100:active,html .btn-outline-red-100.active,html .btn-outline-red-100.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-red-100,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-red-100,html[data-netbox-color-mode=dark] .btn-outline-red-100:active,html[data-netbox-color-mode=dark] .btn-outline-red-100.active,html[data-netbox-color-mode=dark] .btn-outline-red-100.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-red-100,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-red-100,html[data-netbox-color-mode=light] .btn-outline-red-100:active,html[data-netbox-color-mode=light] .btn-outline-red-100.active,html[data-netbox-color-mode=light] .btn-outline-red-100.dropdown-toggle.show{color:#000;background-color:#f8d7da;border-color:#f8d7da}.btn-check:checked+html .btn-outline-red-100:focus,.btn-check:active+html .btn-outline-red-100:focus,html .btn-outline-red-100:active:focus,html .btn-outline-red-100.active:focus,html .btn-outline-red-100.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-red-100:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-red-100:focus,html[data-netbox-color-mode=dark] .btn-outline-red-100:active:focus,html[data-netbox-color-mode=dark] .btn-outline-red-100.active:focus,html[data-netbox-color-mode=dark] .btn-outline-red-100.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-red-100:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-red-100:focus,html[data-netbox-color-mode=light] .btn-outline-red-100:active:focus,html[data-netbox-color-mode=light] .btn-outline-red-100.active:focus,html[data-netbox-color-mode=light] .btn-outline-red-100.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #f8d7da80}html .btn-outline-red-100:disabled,html .btn-outline-red-100.disabled,html[data-netbox-color-mode=dark] .btn-outline-red-100:disabled,html[data-netbox-color-mode=dark] .btn-outline-red-100.disabled,html[data-netbox-color-mode=light] .btn-outline-red-100:disabled,html[data-netbox-color-mode=light] .btn-outline-red-100.disabled{color:#f8d7da;background-color:transparent}}@media print{html .btn-outline-red-200,html[data-netbox-color-mode=dark] .btn-outline-red-200,html[data-netbox-color-mode=light] .btn-outline-red-200{color:#f1aeb5;border-color:#f1aeb5}html .btn-outline-red-200:hover,html[data-netbox-color-mode=dark] .btn-outline-red-200:hover,html[data-netbox-color-mode=light] .btn-outline-red-200:hover{color:#000;background-color:#f1aeb5;border-color:#f1aeb5}.btn-check:focus+html .btn-outline-red-200,html .btn-outline-red-200:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-red-200,html[data-netbox-color-mode=dark] .btn-outline-red-200:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-red-200,html[data-netbox-color-mode=light] .btn-outline-red-200:focus{box-shadow:0 0 0 .25rem #f1aeb580}.btn-check:checked+html .btn-outline-red-200,.btn-check:active+html .btn-outline-red-200,html .btn-outline-red-200:active,html .btn-outline-red-200.active,html .btn-outline-red-200.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-red-200,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-red-200,html[data-netbox-color-mode=dark] .btn-outline-red-200:active,html[data-netbox-color-mode=dark] .btn-outline-red-200.active,html[data-netbox-color-mode=dark] .btn-outline-red-200.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-red-200,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-red-200,html[data-netbox-color-mode=light] .btn-outline-red-200:active,html[data-netbox-color-mode=light] .btn-outline-red-200.active,html[data-netbox-color-mode=light] .btn-outline-red-200.dropdown-toggle.show{color:#000;background-color:#f1aeb5;border-color:#f1aeb5}.btn-check:checked+html .btn-outline-red-200:focus,.btn-check:active+html .btn-outline-red-200:focus,html .btn-outline-red-200:active:focus,html .btn-outline-red-200.active:focus,html .btn-outline-red-200.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-red-200:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-red-200:focus,html[data-netbox-color-mode=dark] .btn-outline-red-200:active:focus,html[data-netbox-color-mode=dark] .btn-outline-red-200.active:focus,html[data-netbox-color-mode=dark] .btn-outline-red-200.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-red-200:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-red-200:focus,html[data-netbox-color-mode=light] .btn-outline-red-200:active:focus,html[data-netbox-color-mode=light] .btn-outline-red-200.active:focus,html[data-netbox-color-mode=light] .btn-outline-red-200.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #f1aeb580}html .btn-outline-red-200:disabled,html .btn-outline-red-200.disabled,html[data-netbox-color-mode=dark] .btn-outline-red-200:disabled,html[data-netbox-color-mode=dark] .btn-outline-red-200.disabled,html[data-netbox-color-mode=light] .btn-outline-red-200:disabled,html[data-netbox-color-mode=light] .btn-outline-red-200.disabled{color:#f1aeb5;background-color:transparent}}@media print{html .btn-outline-red-300,html[data-netbox-color-mode=dark] .btn-outline-red-300,html[data-netbox-color-mode=light] .btn-outline-red-300{color:#ea868f;border-color:#ea868f}html .btn-outline-red-300:hover,html[data-netbox-color-mode=dark] .btn-outline-red-300:hover,html[data-netbox-color-mode=light] .btn-outline-red-300:hover{color:#000;background-color:#ea868f;border-color:#ea868f}.btn-check:focus+html .btn-outline-red-300,html .btn-outline-red-300:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-red-300,html[data-netbox-color-mode=dark] .btn-outline-red-300:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-red-300,html[data-netbox-color-mode=light] .btn-outline-red-300:focus{box-shadow:0 0 0 .25rem #ea868f80}.btn-check:checked+html .btn-outline-red-300,.btn-check:active+html .btn-outline-red-300,html .btn-outline-red-300:active,html .btn-outline-red-300.active,html .btn-outline-red-300.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-red-300,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-red-300,html[data-netbox-color-mode=dark] .btn-outline-red-300:active,html[data-netbox-color-mode=dark] .btn-outline-red-300.active,html[data-netbox-color-mode=dark] .btn-outline-red-300.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-red-300,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-red-300,html[data-netbox-color-mode=light] .btn-outline-red-300:active,html[data-netbox-color-mode=light] .btn-outline-red-300.active,html[data-netbox-color-mode=light] .btn-outline-red-300.dropdown-toggle.show{color:#000;background-color:#ea868f;border-color:#ea868f}.btn-check:checked+html .btn-outline-red-300:focus,.btn-check:active+html .btn-outline-red-300:focus,html .btn-outline-red-300:active:focus,html .btn-outline-red-300.active:focus,html .btn-outline-red-300.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-red-300:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-red-300:focus,html[data-netbox-color-mode=dark] .btn-outline-red-300:active:focus,html[data-netbox-color-mode=dark] .btn-outline-red-300.active:focus,html[data-netbox-color-mode=dark] .btn-outline-red-300.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-red-300:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-red-300:focus,html[data-netbox-color-mode=light] .btn-outline-red-300:active:focus,html[data-netbox-color-mode=light] .btn-outline-red-300.active:focus,html[data-netbox-color-mode=light] .btn-outline-red-300.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #ea868f80}html .btn-outline-red-300:disabled,html .btn-outline-red-300.disabled,html[data-netbox-color-mode=dark] .btn-outline-red-300:disabled,html[data-netbox-color-mode=dark] .btn-outline-red-300.disabled,html[data-netbox-color-mode=light] .btn-outline-red-300:disabled,html[data-netbox-color-mode=light] .btn-outline-red-300.disabled{color:#ea868f;background-color:transparent}}@media print{html .btn-outline-red-400,html[data-netbox-color-mode=dark] .btn-outline-red-400,html[data-netbox-color-mode=light] .btn-outline-red-400{color:#e35d6a;border-color:#e35d6a}html .btn-outline-red-400:hover,html[data-netbox-color-mode=dark] .btn-outline-red-400:hover,html[data-netbox-color-mode=light] .btn-outline-red-400:hover{color:#000;background-color:#e35d6a;border-color:#e35d6a}.btn-check:focus+html .btn-outline-red-400,html .btn-outline-red-400:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-red-400,html[data-netbox-color-mode=dark] .btn-outline-red-400:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-red-400,html[data-netbox-color-mode=light] .btn-outline-red-400:focus{box-shadow:0 0 0 .25rem #e35d6a80}.btn-check:checked+html .btn-outline-red-400,.btn-check:active+html .btn-outline-red-400,html .btn-outline-red-400:active,html .btn-outline-red-400.active,html .btn-outline-red-400.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-red-400,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-red-400,html[data-netbox-color-mode=dark] .btn-outline-red-400:active,html[data-netbox-color-mode=dark] .btn-outline-red-400.active,html[data-netbox-color-mode=dark] .btn-outline-red-400.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-red-400,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-red-400,html[data-netbox-color-mode=light] .btn-outline-red-400:active,html[data-netbox-color-mode=light] .btn-outline-red-400.active,html[data-netbox-color-mode=light] .btn-outline-red-400.dropdown-toggle.show{color:#000;background-color:#e35d6a;border-color:#e35d6a}.btn-check:checked+html .btn-outline-red-400:focus,.btn-check:active+html .btn-outline-red-400:focus,html .btn-outline-red-400:active:focus,html .btn-outline-red-400.active:focus,html .btn-outline-red-400.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-red-400:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-red-400:focus,html[data-netbox-color-mode=dark] .btn-outline-red-400:active:focus,html[data-netbox-color-mode=dark] .btn-outline-red-400.active:focus,html[data-netbox-color-mode=dark] .btn-outline-red-400.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-red-400:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-red-400:focus,html[data-netbox-color-mode=light] .btn-outline-red-400:active:focus,html[data-netbox-color-mode=light] .btn-outline-red-400.active:focus,html[data-netbox-color-mode=light] .btn-outline-red-400.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #e35d6a80}html .btn-outline-red-400:disabled,html .btn-outline-red-400.disabled,html[data-netbox-color-mode=dark] .btn-outline-red-400:disabled,html[data-netbox-color-mode=dark] .btn-outline-red-400.disabled,html[data-netbox-color-mode=light] .btn-outline-red-400:disabled,html[data-netbox-color-mode=light] .btn-outline-red-400.disabled{color:#e35d6a;background-color:transparent}}@media print{html .btn-outline-red-500,html[data-netbox-color-mode=dark] .btn-outline-red-500,html[data-netbox-color-mode=light] .btn-outline-red-500{color:#dc3545;border-color:#dc3545}html .btn-outline-red-500:hover,html[data-netbox-color-mode=dark] .btn-outline-red-500:hover,html[data-netbox-color-mode=light] .btn-outline-red-500:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-check:focus+html .btn-outline-red-500,html .btn-outline-red-500:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-red-500,html[data-netbox-color-mode=dark] .btn-outline-red-500:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-red-500,html[data-netbox-color-mode=light] .btn-outline-red-500:focus{box-shadow:0 0 0 .25rem #dc354580}.btn-check:checked+html .btn-outline-red-500,.btn-check:active+html .btn-outline-red-500,html .btn-outline-red-500:active,html .btn-outline-red-500.active,html .btn-outline-red-500.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-red-500,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-red-500,html[data-netbox-color-mode=dark] .btn-outline-red-500:active,html[data-netbox-color-mode=dark] .btn-outline-red-500.active,html[data-netbox-color-mode=dark] .btn-outline-red-500.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-red-500,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-red-500,html[data-netbox-color-mode=light] .btn-outline-red-500:active,html[data-netbox-color-mode=light] .btn-outline-red-500.active,html[data-netbox-color-mode=light] .btn-outline-red-500.dropdown-toggle.show{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-check:checked+html .btn-outline-red-500:focus,.btn-check:active+html .btn-outline-red-500:focus,html .btn-outline-red-500:active:focus,html .btn-outline-red-500.active:focus,html .btn-outline-red-500.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-red-500:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-red-500:focus,html[data-netbox-color-mode=dark] .btn-outline-red-500:active:focus,html[data-netbox-color-mode=dark] .btn-outline-red-500.active:focus,html[data-netbox-color-mode=dark] .btn-outline-red-500.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-red-500:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-red-500:focus,html[data-netbox-color-mode=light] .btn-outline-red-500:active:focus,html[data-netbox-color-mode=light] .btn-outline-red-500.active:focus,html[data-netbox-color-mode=light] .btn-outline-red-500.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #dc354580}html .btn-outline-red-500:disabled,html .btn-outline-red-500.disabled,html[data-netbox-color-mode=dark] .btn-outline-red-500:disabled,html[data-netbox-color-mode=dark] .btn-outline-red-500.disabled,html[data-netbox-color-mode=light] .btn-outline-red-500:disabled,html[data-netbox-color-mode=light] .btn-outline-red-500.disabled{color:#dc3545;background-color:transparent}}@media print{html .btn-outline-red-600,html[data-netbox-color-mode=dark] .btn-outline-red-600,html[data-netbox-color-mode=light] .btn-outline-red-600{color:#b02a37;border-color:#b02a37}html .btn-outline-red-600:hover,html[data-netbox-color-mode=dark] .btn-outline-red-600:hover,html[data-netbox-color-mode=light] .btn-outline-red-600:hover{color:#fff;background-color:#b02a37;border-color:#b02a37}.btn-check:focus+html .btn-outline-red-600,html .btn-outline-red-600:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-red-600,html[data-netbox-color-mode=dark] .btn-outline-red-600:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-red-600,html[data-netbox-color-mode=light] .btn-outline-red-600:focus{box-shadow:0 0 0 .25rem #b02a3780}.btn-check:checked+html .btn-outline-red-600,.btn-check:active+html .btn-outline-red-600,html .btn-outline-red-600:active,html .btn-outline-red-600.active,html .btn-outline-red-600.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-red-600,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-red-600,html[data-netbox-color-mode=dark] .btn-outline-red-600:active,html[data-netbox-color-mode=dark] .btn-outline-red-600.active,html[data-netbox-color-mode=dark] .btn-outline-red-600.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-red-600,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-red-600,html[data-netbox-color-mode=light] .btn-outline-red-600:active,html[data-netbox-color-mode=light] .btn-outline-red-600.active,html[data-netbox-color-mode=light] .btn-outline-red-600.dropdown-toggle.show{color:#fff;background-color:#b02a37;border-color:#b02a37}.btn-check:checked+html .btn-outline-red-600:focus,.btn-check:active+html .btn-outline-red-600:focus,html .btn-outline-red-600:active:focus,html .btn-outline-red-600.active:focus,html .btn-outline-red-600.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-red-600:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-red-600:focus,html[data-netbox-color-mode=dark] .btn-outline-red-600:active:focus,html[data-netbox-color-mode=dark] .btn-outline-red-600.active:focus,html[data-netbox-color-mode=dark] .btn-outline-red-600.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-red-600:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-red-600:focus,html[data-netbox-color-mode=light] .btn-outline-red-600:active:focus,html[data-netbox-color-mode=light] .btn-outline-red-600.active:focus,html[data-netbox-color-mode=light] .btn-outline-red-600.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #b02a3780}html .btn-outline-red-600:disabled,html .btn-outline-red-600.disabled,html[data-netbox-color-mode=dark] .btn-outline-red-600:disabled,html[data-netbox-color-mode=dark] .btn-outline-red-600.disabled,html[data-netbox-color-mode=light] .btn-outline-red-600:disabled,html[data-netbox-color-mode=light] .btn-outline-red-600.disabled{color:#b02a37;background-color:transparent}}@media print{html .btn-outline-red-700,html[data-netbox-color-mode=dark] .btn-outline-red-700,html[data-netbox-color-mode=light] .btn-outline-red-700{color:#842029;border-color:#842029}html .btn-outline-red-700:hover,html[data-netbox-color-mode=dark] .btn-outline-red-700:hover,html[data-netbox-color-mode=light] .btn-outline-red-700:hover{color:#fff;background-color:#842029;border-color:#842029}.btn-check:focus+html .btn-outline-red-700,html .btn-outline-red-700:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-red-700,html[data-netbox-color-mode=dark] .btn-outline-red-700:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-red-700,html[data-netbox-color-mode=light] .btn-outline-red-700:focus{box-shadow:0 0 0 .25rem #84202980}.btn-check:checked+html .btn-outline-red-700,.btn-check:active+html .btn-outline-red-700,html .btn-outline-red-700:active,html .btn-outline-red-700.active,html .btn-outline-red-700.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-red-700,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-red-700,html[data-netbox-color-mode=dark] .btn-outline-red-700:active,html[data-netbox-color-mode=dark] .btn-outline-red-700.active,html[data-netbox-color-mode=dark] .btn-outline-red-700.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-red-700,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-red-700,html[data-netbox-color-mode=light] .btn-outline-red-700:active,html[data-netbox-color-mode=light] .btn-outline-red-700.active,html[data-netbox-color-mode=light] .btn-outline-red-700.dropdown-toggle.show{color:#fff;background-color:#842029;border-color:#842029}.btn-check:checked+html .btn-outline-red-700:focus,.btn-check:active+html .btn-outline-red-700:focus,html .btn-outline-red-700:active:focus,html .btn-outline-red-700.active:focus,html .btn-outline-red-700.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-red-700:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-red-700:focus,html[data-netbox-color-mode=dark] .btn-outline-red-700:active:focus,html[data-netbox-color-mode=dark] .btn-outline-red-700.active:focus,html[data-netbox-color-mode=dark] .btn-outline-red-700.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-red-700:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-red-700:focus,html[data-netbox-color-mode=light] .btn-outline-red-700:active:focus,html[data-netbox-color-mode=light] .btn-outline-red-700.active:focus,html[data-netbox-color-mode=light] .btn-outline-red-700.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #84202980}html .btn-outline-red-700:disabled,html .btn-outline-red-700.disabled,html[data-netbox-color-mode=dark] .btn-outline-red-700:disabled,html[data-netbox-color-mode=dark] .btn-outline-red-700.disabled,html[data-netbox-color-mode=light] .btn-outline-red-700:disabled,html[data-netbox-color-mode=light] .btn-outline-red-700.disabled{color:#842029;background-color:transparent}}@media print{html .btn-outline-red-800,html[data-netbox-color-mode=dark] .btn-outline-red-800,html[data-netbox-color-mode=light] .btn-outline-red-800{color:#58151c;border-color:#58151c}html .btn-outline-red-800:hover,html[data-netbox-color-mode=dark] .btn-outline-red-800:hover,html[data-netbox-color-mode=light] .btn-outline-red-800:hover{color:#fff;background-color:#58151c;border-color:#58151c}.btn-check:focus+html .btn-outline-red-800,html .btn-outline-red-800:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-red-800,html[data-netbox-color-mode=dark] .btn-outline-red-800:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-red-800,html[data-netbox-color-mode=light] .btn-outline-red-800:focus{box-shadow:0 0 0 .25rem #58151c80}.btn-check:checked+html .btn-outline-red-800,.btn-check:active+html .btn-outline-red-800,html .btn-outline-red-800:active,html .btn-outline-red-800.active,html .btn-outline-red-800.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-red-800,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-red-800,html[data-netbox-color-mode=dark] .btn-outline-red-800:active,html[data-netbox-color-mode=dark] .btn-outline-red-800.active,html[data-netbox-color-mode=dark] .btn-outline-red-800.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-red-800,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-red-800,html[data-netbox-color-mode=light] .btn-outline-red-800:active,html[data-netbox-color-mode=light] .btn-outline-red-800.active,html[data-netbox-color-mode=light] .btn-outline-red-800.dropdown-toggle.show{color:#fff;background-color:#58151c;border-color:#58151c}.btn-check:checked+html .btn-outline-red-800:focus,.btn-check:active+html .btn-outline-red-800:focus,html .btn-outline-red-800:active:focus,html .btn-outline-red-800.active:focus,html .btn-outline-red-800.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-red-800:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-red-800:focus,html[data-netbox-color-mode=dark] .btn-outline-red-800:active:focus,html[data-netbox-color-mode=dark] .btn-outline-red-800.active:focus,html[data-netbox-color-mode=dark] .btn-outline-red-800.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-red-800:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-red-800:focus,html[data-netbox-color-mode=light] .btn-outline-red-800:active:focus,html[data-netbox-color-mode=light] .btn-outline-red-800.active:focus,html[data-netbox-color-mode=light] .btn-outline-red-800.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #58151c80}html .btn-outline-red-800:disabled,html .btn-outline-red-800.disabled,html[data-netbox-color-mode=dark] .btn-outline-red-800:disabled,html[data-netbox-color-mode=dark] .btn-outline-red-800.disabled,html[data-netbox-color-mode=light] .btn-outline-red-800:disabled,html[data-netbox-color-mode=light] .btn-outline-red-800.disabled{color:#58151c;background-color:transparent}}@media print{html .btn-outline-red-900,html[data-netbox-color-mode=dark] .btn-outline-red-900,html[data-netbox-color-mode=light] .btn-outline-red-900{color:#2c0b0e;border-color:#2c0b0e}html .btn-outline-red-900:hover,html[data-netbox-color-mode=dark] .btn-outline-red-900:hover,html[data-netbox-color-mode=light] .btn-outline-red-900:hover{color:#fff;background-color:#2c0b0e;border-color:#2c0b0e}.btn-check:focus+html .btn-outline-red-900,html .btn-outline-red-900:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-red-900,html[data-netbox-color-mode=dark] .btn-outline-red-900:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-red-900,html[data-netbox-color-mode=light] .btn-outline-red-900:focus{box-shadow:0 0 0 .25rem #2c0b0e80}.btn-check:checked+html .btn-outline-red-900,.btn-check:active+html .btn-outline-red-900,html .btn-outline-red-900:active,html .btn-outline-red-900.active,html .btn-outline-red-900.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-red-900,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-red-900,html[data-netbox-color-mode=dark] .btn-outline-red-900:active,html[data-netbox-color-mode=dark] .btn-outline-red-900.active,html[data-netbox-color-mode=dark] .btn-outline-red-900.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-red-900,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-red-900,html[data-netbox-color-mode=light] .btn-outline-red-900:active,html[data-netbox-color-mode=light] .btn-outline-red-900.active,html[data-netbox-color-mode=light] .btn-outline-red-900.dropdown-toggle.show{color:#fff;background-color:#2c0b0e;border-color:#2c0b0e}.btn-check:checked+html .btn-outline-red-900:focus,.btn-check:active+html .btn-outline-red-900:focus,html .btn-outline-red-900:active:focus,html .btn-outline-red-900.active:focus,html .btn-outline-red-900.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-red-900:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-red-900:focus,html[data-netbox-color-mode=dark] .btn-outline-red-900:active:focus,html[data-netbox-color-mode=dark] .btn-outline-red-900.active:focus,html[data-netbox-color-mode=dark] .btn-outline-red-900.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-red-900:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-red-900:focus,html[data-netbox-color-mode=light] .btn-outline-red-900:active:focus,html[data-netbox-color-mode=light] .btn-outline-red-900.active:focus,html[data-netbox-color-mode=light] .btn-outline-red-900.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #2c0b0e80}html .btn-outline-red-900:disabled,html .btn-outline-red-900.disabled,html[data-netbox-color-mode=dark] .btn-outline-red-900:disabled,html[data-netbox-color-mode=dark] .btn-outline-red-900.disabled,html[data-netbox-color-mode=light] .btn-outline-red-900:disabled,html[data-netbox-color-mode=light] .btn-outline-red-900.disabled{color:#2c0b0e;background-color:transparent}}@media print{html .btn-outline-yellow-100,html[data-netbox-color-mode=dark] .btn-outline-yellow-100,html[data-netbox-color-mode=light] .btn-outline-yellow-100{color:#fff3cd;border-color:#fff3cd}html .btn-outline-yellow-100:hover,html[data-netbox-color-mode=dark] .btn-outline-yellow-100:hover,html[data-netbox-color-mode=light] .btn-outline-yellow-100:hover{color:#000;background-color:#fff3cd;border-color:#fff3cd}.btn-check:focus+html .btn-outline-yellow-100,html .btn-outline-yellow-100:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-yellow-100,html[data-netbox-color-mode=dark] .btn-outline-yellow-100:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-yellow-100,html[data-netbox-color-mode=light] .btn-outline-yellow-100:focus{box-shadow:0 0 0 .25rem #fff3cd80}.btn-check:checked+html .btn-outline-yellow-100,.btn-check:active+html .btn-outline-yellow-100,html .btn-outline-yellow-100:active,html .btn-outline-yellow-100.active,html .btn-outline-yellow-100.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-yellow-100,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-yellow-100,html[data-netbox-color-mode=dark] .btn-outline-yellow-100:active,html[data-netbox-color-mode=dark] .btn-outline-yellow-100.active,html[data-netbox-color-mode=dark] .btn-outline-yellow-100.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-yellow-100,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-yellow-100,html[data-netbox-color-mode=light] .btn-outline-yellow-100:active,html[data-netbox-color-mode=light] .btn-outline-yellow-100.active,html[data-netbox-color-mode=light] .btn-outline-yellow-100.dropdown-toggle.show{color:#000;background-color:#fff3cd;border-color:#fff3cd}.btn-check:checked+html .btn-outline-yellow-100:focus,.btn-check:active+html .btn-outline-yellow-100:focus,html .btn-outline-yellow-100:active:focus,html .btn-outline-yellow-100.active:focus,html .btn-outline-yellow-100.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-yellow-100:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-yellow-100:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-100:active:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-100.active:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-100.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-yellow-100:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-yellow-100:focus,html[data-netbox-color-mode=light] .btn-outline-yellow-100:active:focus,html[data-netbox-color-mode=light] .btn-outline-yellow-100.active:focus,html[data-netbox-color-mode=light] .btn-outline-yellow-100.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #fff3cd80}html .btn-outline-yellow-100:disabled,html .btn-outline-yellow-100.disabled,html[data-netbox-color-mode=dark] .btn-outline-yellow-100:disabled,html[data-netbox-color-mode=dark] .btn-outline-yellow-100.disabled,html[data-netbox-color-mode=light] .btn-outline-yellow-100:disabled,html[data-netbox-color-mode=light] .btn-outline-yellow-100.disabled{color:#fff3cd;background-color:transparent}}@media print{html .btn-outline-yellow-200,html[data-netbox-color-mode=dark] .btn-outline-yellow-200,html[data-netbox-color-mode=light] .btn-outline-yellow-200{color:#ffe69c;border-color:#ffe69c}html .btn-outline-yellow-200:hover,html[data-netbox-color-mode=dark] .btn-outline-yellow-200:hover,html[data-netbox-color-mode=light] .btn-outline-yellow-200:hover{color:#000;background-color:#ffe69c;border-color:#ffe69c}.btn-check:focus+html .btn-outline-yellow-200,html .btn-outline-yellow-200:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-yellow-200,html[data-netbox-color-mode=dark] .btn-outline-yellow-200:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-yellow-200,html[data-netbox-color-mode=light] .btn-outline-yellow-200:focus{box-shadow:0 0 0 .25rem #ffe69c80}.btn-check:checked+html .btn-outline-yellow-200,.btn-check:active+html .btn-outline-yellow-200,html .btn-outline-yellow-200:active,html .btn-outline-yellow-200.active,html .btn-outline-yellow-200.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-yellow-200,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-yellow-200,html[data-netbox-color-mode=dark] .btn-outline-yellow-200:active,html[data-netbox-color-mode=dark] .btn-outline-yellow-200.active,html[data-netbox-color-mode=dark] .btn-outline-yellow-200.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-yellow-200,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-yellow-200,html[data-netbox-color-mode=light] .btn-outline-yellow-200:active,html[data-netbox-color-mode=light] .btn-outline-yellow-200.active,html[data-netbox-color-mode=light] .btn-outline-yellow-200.dropdown-toggle.show{color:#000;background-color:#ffe69c;border-color:#ffe69c}.btn-check:checked+html .btn-outline-yellow-200:focus,.btn-check:active+html .btn-outline-yellow-200:focus,html .btn-outline-yellow-200:active:focus,html .btn-outline-yellow-200.active:focus,html .btn-outline-yellow-200.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-yellow-200:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-yellow-200:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-200:active:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-200.active:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-200.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-yellow-200:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-yellow-200:focus,html[data-netbox-color-mode=light] .btn-outline-yellow-200:active:focus,html[data-netbox-color-mode=light] .btn-outline-yellow-200.active:focus,html[data-netbox-color-mode=light] .btn-outline-yellow-200.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #ffe69c80}html .btn-outline-yellow-200:disabled,html .btn-outline-yellow-200.disabled,html[data-netbox-color-mode=dark] .btn-outline-yellow-200:disabled,html[data-netbox-color-mode=dark] .btn-outline-yellow-200.disabled,html[data-netbox-color-mode=light] .btn-outline-yellow-200:disabled,html[data-netbox-color-mode=light] .btn-outline-yellow-200.disabled{color:#ffe69c;background-color:transparent}}@media print{html .btn-outline-yellow-300,html[data-netbox-color-mode=dark] .btn-outline-yellow-300,html[data-netbox-color-mode=light] .btn-outline-yellow-300{color:#ffda6a;border-color:#ffda6a}html .btn-outline-yellow-300:hover,html[data-netbox-color-mode=dark] .btn-outline-yellow-300:hover,html[data-netbox-color-mode=light] .btn-outline-yellow-300:hover{color:#000;background-color:#ffda6a;border-color:#ffda6a}.btn-check:focus+html .btn-outline-yellow-300,html .btn-outline-yellow-300:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-yellow-300,html[data-netbox-color-mode=dark] .btn-outline-yellow-300:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-yellow-300,html[data-netbox-color-mode=light] .btn-outline-yellow-300:focus{box-shadow:0 0 0 .25rem #ffda6a80}.btn-check:checked+html .btn-outline-yellow-300,.btn-check:active+html .btn-outline-yellow-300,html .btn-outline-yellow-300:active,html .btn-outline-yellow-300.active,html .btn-outline-yellow-300.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-yellow-300,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-yellow-300,html[data-netbox-color-mode=dark] .btn-outline-yellow-300:active,html[data-netbox-color-mode=dark] .btn-outline-yellow-300.active,html[data-netbox-color-mode=dark] .btn-outline-yellow-300.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-yellow-300,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-yellow-300,html[data-netbox-color-mode=light] .btn-outline-yellow-300:active,html[data-netbox-color-mode=light] .btn-outline-yellow-300.active,html[data-netbox-color-mode=light] .btn-outline-yellow-300.dropdown-toggle.show{color:#000;background-color:#ffda6a;border-color:#ffda6a}.btn-check:checked+html .btn-outline-yellow-300:focus,.btn-check:active+html .btn-outline-yellow-300:focus,html .btn-outline-yellow-300:active:focus,html .btn-outline-yellow-300.active:focus,html .btn-outline-yellow-300.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-yellow-300:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-yellow-300:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-300:active:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-300.active:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-300.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-yellow-300:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-yellow-300:focus,html[data-netbox-color-mode=light] .btn-outline-yellow-300:active:focus,html[data-netbox-color-mode=light] .btn-outline-yellow-300.active:focus,html[data-netbox-color-mode=light] .btn-outline-yellow-300.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #ffda6a80}html .btn-outline-yellow-300:disabled,html .btn-outline-yellow-300.disabled,html[data-netbox-color-mode=dark] .btn-outline-yellow-300:disabled,html[data-netbox-color-mode=dark] .btn-outline-yellow-300.disabled,html[data-netbox-color-mode=light] .btn-outline-yellow-300:disabled,html[data-netbox-color-mode=light] .btn-outline-yellow-300.disabled{color:#ffda6a;background-color:transparent}}@media print{html .btn-outline-yellow-400,html[data-netbox-color-mode=dark] .btn-outline-yellow-400,html[data-netbox-color-mode=light] .btn-outline-yellow-400{color:#ffcd39;border-color:#ffcd39}html .btn-outline-yellow-400:hover,html[data-netbox-color-mode=dark] .btn-outline-yellow-400:hover,html[data-netbox-color-mode=light] .btn-outline-yellow-400:hover{color:#000;background-color:#ffcd39;border-color:#ffcd39}.btn-check:focus+html .btn-outline-yellow-400,html .btn-outline-yellow-400:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-yellow-400,html[data-netbox-color-mode=dark] .btn-outline-yellow-400:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-yellow-400,html[data-netbox-color-mode=light] .btn-outline-yellow-400:focus{box-shadow:0 0 0 .25rem #ffcd3980}.btn-check:checked+html .btn-outline-yellow-400,.btn-check:active+html .btn-outline-yellow-400,html .btn-outline-yellow-400:active,html .btn-outline-yellow-400.active,html .btn-outline-yellow-400.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-yellow-400,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-yellow-400,html[data-netbox-color-mode=dark] .btn-outline-yellow-400:active,html[data-netbox-color-mode=dark] .btn-outline-yellow-400.active,html[data-netbox-color-mode=dark] .btn-outline-yellow-400.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-yellow-400,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-yellow-400,html[data-netbox-color-mode=light] .btn-outline-yellow-400:active,html[data-netbox-color-mode=light] .btn-outline-yellow-400.active,html[data-netbox-color-mode=light] .btn-outline-yellow-400.dropdown-toggle.show{color:#000;background-color:#ffcd39;border-color:#ffcd39}.btn-check:checked+html .btn-outline-yellow-400:focus,.btn-check:active+html .btn-outline-yellow-400:focus,html .btn-outline-yellow-400:active:focus,html .btn-outline-yellow-400.active:focus,html .btn-outline-yellow-400.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-yellow-400:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-yellow-400:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-400:active:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-400.active:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-400.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-yellow-400:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-yellow-400:focus,html[data-netbox-color-mode=light] .btn-outline-yellow-400:active:focus,html[data-netbox-color-mode=light] .btn-outline-yellow-400.active:focus,html[data-netbox-color-mode=light] .btn-outline-yellow-400.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #ffcd3980}html .btn-outline-yellow-400:disabled,html .btn-outline-yellow-400.disabled,html[data-netbox-color-mode=dark] .btn-outline-yellow-400:disabled,html[data-netbox-color-mode=dark] .btn-outline-yellow-400.disabled,html[data-netbox-color-mode=light] .btn-outline-yellow-400:disabled,html[data-netbox-color-mode=light] .btn-outline-yellow-400.disabled{color:#ffcd39;background-color:transparent}}@media print{html .btn-outline-yellow-500,html[data-netbox-color-mode=dark] .btn-outline-yellow-500,html[data-netbox-color-mode=light] .btn-outline-yellow-500{color:#ffc107;border-color:#ffc107}html .btn-outline-yellow-500:hover,html[data-netbox-color-mode=dark] .btn-outline-yellow-500:hover,html[data-netbox-color-mode=light] .btn-outline-yellow-500:hover{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-check:focus+html .btn-outline-yellow-500,html .btn-outline-yellow-500:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-yellow-500,html[data-netbox-color-mode=dark] .btn-outline-yellow-500:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-yellow-500,html[data-netbox-color-mode=light] .btn-outline-yellow-500:focus{box-shadow:0 0 0 .25rem #ffc10780}.btn-check:checked+html .btn-outline-yellow-500,.btn-check:active+html .btn-outline-yellow-500,html .btn-outline-yellow-500:active,html .btn-outline-yellow-500.active,html .btn-outline-yellow-500.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-yellow-500,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-yellow-500,html[data-netbox-color-mode=dark] .btn-outline-yellow-500:active,html[data-netbox-color-mode=dark] .btn-outline-yellow-500.active,html[data-netbox-color-mode=dark] .btn-outline-yellow-500.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-yellow-500,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-yellow-500,html[data-netbox-color-mode=light] .btn-outline-yellow-500:active,html[data-netbox-color-mode=light] .btn-outline-yellow-500.active,html[data-netbox-color-mode=light] .btn-outline-yellow-500.dropdown-toggle.show{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-check:checked+html .btn-outline-yellow-500:focus,.btn-check:active+html .btn-outline-yellow-500:focus,html .btn-outline-yellow-500:active:focus,html .btn-outline-yellow-500.active:focus,html .btn-outline-yellow-500.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-yellow-500:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-yellow-500:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-500:active:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-500.active:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-500.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-yellow-500:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-yellow-500:focus,html[data-netbox-color-mode=light] .btn-outline-yellow-500:active:focus,html[data-netbox-color-mode=light] .btn-outline-yellow-500.active:focus,html[data-netbox-color-mode=light] .btn-outline-yellow-500.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #ffc10780}html .btn-outline-yellow-500:disabled,html .btn-outline-yellow-500.disabled,html[data-netbox-color-mode=dark] .btn-outline-yellow-500:disabled,html[data-netbox-color-mode=dark] .btn-outline-yellow-500.disabled,html[data-netbox-color-mode=light] .btn-outline-yellow-500:disabled,html[data-netbox-color-mode=light] .btn-outline-yellow-500.disabled{color:#ffc107;background-color:transparent}}@media print{html .btn-outline-yellow-600,html[data-netbox-color-mode=dark] .btn-outline-yellow-600,html[data-netbox-color-mode=light] .btn-outline-yellow-600{color:#cc9a06;border-color:#cc9a06}html .btn-outline-yellow-600:hover,html[data-netbox-color-mode=dark] .btn-outline-yellow-600:hover,html[data-netbox-color-mode=light] .btn-outline-yellow-600:hover{color:#000;background-color:#cc9a06;border-color:#cc9a06}.btn-check:focus+html .btn-outline-yellow-600,html .btn-outline-yellow-600:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-yellow-600,html[data-netbox-color-mode=dark] .btn-outline-yellow-600:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-yellow-600,html[data-netbox-color-mode=light] .btn-outline-yellow-600:focus{box-shadow:0 0 0 .25rem #cc9a0680}.btn-check:checked+html .btn-outline-yellow-600,.btn-check:active+html .btn-outline-yellow-600,html .btn-outline-yellow-600:active,html .btn-outline-yellow-600.active,html .btn-outline-yellow-600.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-yellow-600,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-yellow-600,html[data-netbox-color-mode=dark] .btn-outline-yellow-600:active,html[data-netbox-color-mode=dark] .btn-outline-yellow-600.active,html[data-netbox-color-mode=dark] .btn-outline-yellow-600.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-yellow-600,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-yellow-600,html[data-netbox-color-mode=light] .btn-outline-yellow-600:active,html[data-netbox-color-mode=light] .btn-outline-yellow-600.active,html[data-netbox-color-mode=light] .btn-outline-yellow-600.dropdown-toggle.show{color:#000;background-color:#cc9a06;border-color:#cc9a06}.btn-check:checked+html .btn-outline-yellow-600:focus,.btn-check:active+html .btn-outline-yellow-600:focus,html .btn-outline-yellow-600:active:focus,html .btn-outline-yellow-600.active:focus,html .btn-outline-yellow-600.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-yellow-600:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-yellow-600:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-600:active:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-600.active:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-600.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-yellow-600:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-yellow-600:focus,html[data-netbox-color-mode=light] .btn-outline-yellow-600:active:focus,html[data-netbox-color-mode=light] .btn-outline-yellow-600.active:focus,html[data-netbox-color-mode=light] .btn-outline-yellow-600.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #cc9a0680}html .btn-outline-yellow-600:disabled,html .btn-outline-yellow-600.disabled,html[data-netbox-color-mode=dark] .btn-outline-yellow-600:disabled,html[data-netbox-color-mode=dark] .btn-outline-yellow-600.disabled,html[data-netbox-color-mode=light] .btn-outline-yellow-600:disabled,html[data-netbox-color-mode=light] .btn-outline-yellow-600.disabled{color:#cc9a06;background-color:transparent}}@media print{html .btn-outline-yellow-700,html[data-netbox-color-mode=dark] .btn-outline-yellow-700,html[data-netbox-color-mode=light] .btn-outline-yellow-700{color:#997404;border-color:#997404}html .btn-outline-yellow-700:hover,html[data-netbox-color-mode=dark] .btn-outline-yellow-700:hover,html[data-netbox-color-mode=light] .btn-outline-yellow-700:hover{color:#000;background-color:#997404;border-color:#997404}.btn-check:focus+html .btn-outline-yellow-700,html .btn-outline-yellow-700:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-yellow-700,html[data-netbox-color-mode=dark] .btn-outline-yellow-700:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-yellow-700,html[data-netbox-color-mode=light] .btn-outline-yellow-700:focus{box-shadow:0 0 0 .25rem #99740480}.btn-check:checked+html .btn-outline-yellow-700,.btn-check:active+html .btn-outline-yellow-700,html .btn-outline-yellow-700:active,html .btn-outline-yellow-700.active,html .btn-outline-yellow-700.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-yellow-700,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-yellow-700,html[data-netbox-color-mode=dark] .btn-outline-yellow-700:active,html[data-netbox-color-mode=dark] .btn-outline-yellow-700.active,html[data-netbox-color-mode=dark] .btn-outline-yellow-700.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-yellow-700,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-yellow-700,html[data-netbox-color-mode=light] .btn-outline-yellow-700:active,html[data-netbox-color-mode=light] .btn-outline-yellow-700.active,html[data-netbox-color-mode=light] .btn-outline-yellow-700.dropdown-toggle.show{color:#000;background-color:#997404;border-color:#997404}.btn-check:checked+html .btn-outline-yellow-700:focus,.btn-check:active+html .btn-outline-yellow-700:focus,html .btn-outline-yellow-700:active:focus,html .btn-outline-yellow-700.active:focus,html .btn-outline-yellow-700.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-yellow-700:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-yellow-700:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-700:active:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-700.active:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-700.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-yellow-700:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-yellow-700:focus,html[data-netbox-color-mode=light] .btn-outline-yellow-700:active:focus,html[data-netbox-color-mode=light] .btn-outline-yellow-700.active:focus,html[data-netbox-color-mode=light] .btn-outline-yellow-700.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #99740480}html .btn-outline-yellow-700:disabled,html .btn-outline-yellow-700.disabled,html[data-netbox-color-mode=dark] .btn-outline-yellow-700:disabled,html[data-netbox-color-mode=dark] .btn-outline-yellow-700.disabled,html[data-netbox-color-mode=light] .btn-outline-yellow-700:disabled,html[data-netbox-color-mode=light] .btn-outline-yellow-700.disabled{color:#997404;background-color:transparent}}@media print{html .btn-outline-yellow-800,html[data-netbox-color-mode=dark] .btn-outline-yellow-800,html[data-netbox-color-mode=light] .btn-outline-yellow-800{color:#664d03;border-color:#664d03}html .btn-outline-yellow-800:hover,html[data-netbox-color-mode=dark] .btn-outline-yellow-800:hover,html[data-netbox-color-mode=light] .btn-outline-yellow-800:hover{color:#fff;background-color:#664d03;border-color:#664d03}.btn-check:focus+html .btn-outline-yellow-800,html .btn-outline-yellow-800:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-yellow-800,html[data-netbox-color-mode=dark] .btn-outline-yellow-800:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-yellow-800,html[data-netbox-color-mode=light] .btn-outline-yellow-800:focus{box-shadow:0 0 0 .25rem #664d0380}.btn-check:checked+html .btn-outline-yellow-800,.btn-check:active+html .btn-outline-yellow-800,html .btn-outline-yellow-800:active,html .btn-outline-yellow-800.active,html .btn-outline-yellow-800.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-yellow-800,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-yellow-800,html[data-netbox-color-mode=dark] .btn-outline-yellow-800:active,html[data-netbox-color-mode=dark] .btn-outline-yellow-800.active,html[data-netbox-color-mode=dark] .btn-outline-yellow-800.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-yellow-800,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-yellow-800,html[data-netbox-color-mode=light] .btn-outline-yellow-800:active,html[data-netbox-color-mode=light] .btn-outline-yellow-800.active,html[data-netbox-color-mode=light] .btn-outline-yellow-800.dropdown-toggle.show{color:#fff;background-color:#664d03;border-color:#664d03}.btn-check:checked+html .btn-outline-yellow-800:focus,.btn-check:active+html .btn-outline-yellow-800:focus,html .btn-outline-yellow-800:active:focus,html .btn-outline-yellow-800.active:focus,html .btn-outline-yellow-800.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-yellow-800:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-yellow-800:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-800:active:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-800.active:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-800.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-yellow-800:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-yellow-800:focus,html[data-netbox-color-mode=light] .btn-outline-yellow-800:active:focus,html[data-netbox-color-mode=light] .btn-outline-yellow-800.active:focus,html[data-netbox-color-mode=light] .btn-outline-yellow-800.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #664d0380}html .btn-outline-yellow-800:disabled,html .btn-outline-yellow-800.disabled,html[data-netbox-color-mode=dark] .btn-outline-yellow-800:disabled,html[data-netbox-color-mode=dark] .btn-outline-yellow-800.disabled,html[data-netbox-color-mode=light] .btn-outline-yellow-800:disabled,html[data-netbox-color-mode=light] .btn-outline-yellow-800.disabled{color:#664d03;background-color:transparent}}@media print{html .btn-outline-yellow-900,html[data-netbox-color-mode=dark] .btn-outline-yellow-900,html[data-netbox-color-mode=light] .btn-outline-yellow-900{color:#332701;border-color:#332701}html .btn-outline-yellow-900:hover,html[data-netbox-color-mode=dark] .btn-outline-yellow-900:hover,html[data-netbox-color-mode=light] .btn-outline-yellow-900:hover{color:#fff;background-color:#332701;border-color:#332701}.btn-check:focus+html .btn-outline-yellow-900,html .btn-outline-yellow-900:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-yellow-900,html[data-netbox-color-mode=dark] .btn-outline-yellow-900:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-yellow-900,html[data-netbox-color-mode=light] .btn-outline-yellow-900:focus{box-shadow:0 0 0 .25rem #33270180}.btn-check:checked+html .btn-outline-yellow-900,.btn-check:active+html .btn-outline-yellow-900,html .btn-outline-yellow-900:active,html .btn-outline-yellow-900.active,html .btn-outline-yellow-900.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-yellow-900,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-yellow-900,html[data-netbox-color-mode=dark] .btn-outline-yellow-900:active,html[data-netbox-color-mode=dark] .btn-outline-yellow-900.active,html[data-netbox-color-mode=dark] .btn-outline-yellow-900.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-yellow-900,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-yellow-900,html[data-netbox-color-mode=light] .btn-outline-yellow-900:active,html[data-netbox-color-mode=light] .btn-outline-yellow-900.active,html[data-netbox-color-mode=light] .btn-outline-yellow-900.dropdown-toggle.show{color:#fff;background-color:#332701;border-color:#332701}.btn-check:checked+html .btn-outline-yellow-900:focus,.btn-check:active+html .btn-outline-yellow-900:focus,html .btn-outline-yellow-900:active:focus,html .btn-outline-yellow-900.active:focus,html .btn-outline-yellow-900.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-yellow-900:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-yellow-900:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-900:active:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-900.active:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-900.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-yellow-900:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-yellow-900:focus,html[data-netbox-color-mode=light] .btn-outline-yellow-900:active:focus,html[data-netbox-color-mode=light] .btn-outline-yellow-900.active:focus,html[data-netbox-color-mode=light] .btn-outline-yellow-900.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #33270180}html .btn-outline-yellow-900:disabled,html .btn-outline-yellow-900.disabled,html[data-netbox-color-mode=dark] .btn-outline-yellow-900:disabled,html[data-netbox-color-mode=dark] .btn-outline-yellow-900.disabled,html[data-netbox-color-mode=light] .btn-outline-yellow-900:disabled,html[data-netbox-color-mode=light] .btn-outline-yellow-900.disabled{color:#332701;background-color:transparent}}@media print{html .btn-outline-green-100,html[data-netbox-color-mode=dark] .btn-outline-green-100,html[data-netbox-color-mode=light] .btn-outline-green-100{color:#d1e7dd;border-color:#d1e7dd}html .btn-outline-green-100:hover,html[data-netbox-color-mode=dark] .btn-outline-green-100:hover,html[data-netbox-color-mode=light] .btn-outline-green-100:hover{color:#000;background-color:#d1e7dd;border-color:#d1e7dd}.btn-check:focus+html .btn-outline-green-100,html .btn-outline-green-100:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-green-100,html[data-netbox-color-mode=dark] .btn-outline-green-100:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-green-100,html[data-netbox-color-mode=light] .btn-outline-green-100:focus{box-shadow:0 0 0 .25rem #d1e7dd80}.btn-check:checked+html .btn-outline-green-100,.btn-check:active+html .btn-outline-green-100,html .btn-outline-green-100:active,html .btn-outline-green-100.active,html .btn-outline-green-100.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-green-100,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-green-100,html[data-netbox-color-mode=dark] .btn-outline-green-100:active,html[data-netbox-color-mode=dark] .btn-outline-green-100.active,html[data-netbox-color-mode=dark] .btn-outline-green-100.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-green-100,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-green-100,html[data-netbox-color-mode=light] .btn-outline-green-100:active,html[data-netbox-color-mode=light] .btn-outline-green-100.active,html[data-netbox-color-mode=light] .btn-outline-green-100.dropdown-toggle.show{color:#000;background-color:#d1e7dd;border-color:#d1e7dd}.btn-check:checked+html .btn-outline-green-100:focus,.btn-check:active+html .btn-outline-green-100:focus,html .btn-outline-green-100:active:focus,html .btn-outline-green-100.active:focus,html .btn-outline-green-100.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-green-100:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-green-100:focus,html[data-netbox-color-mode=dark] .btn-outline-green-100:active:focus,html[data-netbox-color-mode=dark] .btn-outline-green-100.active:focus,html[data-netbox-color-mode=dark] .btn-outline-green-100.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-green-100:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-green-100:focus,html[data-netbox-color-mode=light] .btn-outline-green-100:active:focus,html[data-netbox-color-mode=light] .btn-outline-green-100.active:focus,html[data-netbox-color-mode=light] .btn-outline-green-100.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #d1e7dd80}html .btn-outline-green-100:disabled,html .btn-outline-green-100.disabled,html[data-netbox-color-mode=dark] .btn-outline-green-100:disabled,html[data-netbox-color-mode=dark] .btn-outline-green-100.disabled,html[data-netbox-color-mode=light] .btn-outline-green-100:disabled,html[data-netbox-color-mode=light] .btn-outline-green-100.disabled{color:#d1e7dd;background-color:transparent}}@media print{html .btn-outline-green-200,html[data-netbox-color-mode=dark] .btn-outline-green-200,html[data-netbox-color-mode=light] .btn-outline-green-200{color:#a3cfbb;border-color:#a3cfbb}html .btn-outline-green-200:hover,html[data-netbox-color-mode=dark] .btn-outline-green-200:hover,html[data-netbox-color-mode=light] .btn-outline-green-200:hover{color:#000;background-color:#a3cfbb;border-color:#a3cfbb}.btn-check:focus+html .btn-outline-green-200,html .btn-outline-green-200:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-green-200,html[data-netbox-color-mode=dark] .btn-outline-green-200:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-green-200,html[data-netbox-color-mode=light] .btn-outline-green-200:focus{box-shadow:0 0 0 .25rem #a3cfbb80}.btn-check:checked+html .btn-outline-green-200,.btn-check:active+html .btn-outline-green-200,html .btn-outline-green-200:active,html .btn-outline-green-200.active,html .btn-outline-green-200.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-green-200,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-green-200,html[data-netbox-color-mode=dark] .btn-outline-green-200:active,html[data-netbox-color-mode=dark] .btn-outline-green-200.active,html[data-netbox-color-mode=dark] .btn-outline-green-200.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-green-200,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-green-200,html[data-netbox-color-mode=light] .btn-outline-green-200:active,html[data-netbox-color-mode=light] .btn-outline-green-200.active,html[data-netbox-color-mode=light] .btn-outline-green-200.dropdown-toggle.show{color:#000;background-color:#a3cfbb;border-color:#a3cfbb}.btn-check:checked+html .btn-outline-green-200:focus,.btn-check:active+html .btn-outline-green-200:focus,html .btn-outline-green-200:active:focus,html .btn-outline-green-200.active:focus,html .btn-outline-green-200.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-green-200:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-green-200:focus,html[data-netbox-color-mode=dark] .btn-outline-green-200:active:focus,html[data-netbox-color-mode=dark] .btn-outline-green-200.active:focus,html[data-netbox-color-mode=dark] .btn-outline-green-200.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-green-200:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-green-200:focus,html[data-netbox-color-mode=light] .btn-outline-green-200:active:focus,html[data-netbox-color-mode=light] .btn-outline-green-200.active:focus,html[data-netbox-color-mode=light] .btn-outline-green-200.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #a3cfbb80}html .btn-outline-green-200:disabled,html .btn-outline-green-200.disabled,html[data-netbox-color-mode=dark] .btn-outline-green-200:disabled,html[data-netbox-color-mode=dark] .btn-outline-green-200.disabled,html[data-netbox-color-mode=light] .btn-outline-green-200:disabled,html[data-netbox-color-mode=light] .btn-outline-green-200.disabled{color:#a3cfbb;background-color:transparent}}@media print{html .btn-outline-green-300,html[data-netbox-color-mode=dark] .btn-outline-green-300,html[data-netbox-color-mode=light] .btn-outline-green-300{color:#75b798;border-color:#75b798}html .btn-outline-green-300:hover,html[data-netbox-color-mode=dark] .btn-outline-green-300:hover,html[data-netbox-color-mode=light] .btn-outline-green-300:hover{color:#000;background-color:#75b798;border-color:#75b798}.btn-check:focus+html .btn-outline-green-300,html .btn-outline-green-300:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-green-300,html[data-netbox-color-mode=dark] .btn-outline-green-300:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-green-300,html[data-netbox-color-mode=light] .btn-outline-green-300:focus{box-shadow:0 0 0 .25rem #75b79880}.btn-check:checked+html .btn-outline-green-300,.btn-check:active+html .btn-outline-green-300,html .btn-outline-green-300:active,html .btn-outline-green-300.active,html .btn-outline-green-300.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-green-300,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-green-300,html[data-netbox-color-mode=dark] .btn-outline-green-300:active,html[data-netbox-color-mode=dark] .btn-outline-green-300.active,html[data-netbox-color-mode=dark] .btn-outline-green-300.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-green-300,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-green-300,html[data-netbox-color-mode=light] .btn-outline-green-300:active,html[data-netbox-color-mode=light] .btn-outline-green-300.active,html[data-netbox-color-mode=light] .btn-outline-green-300.dropdown-toggle.show{color:#000;background-color:#75b798;border-color:#75b798}.btn-check:checked+html .btn-outline-green-300:focus,.btn-check:active+html .btn-outline-green-300:focus,html .btn-outline-green-300:active:focus,html .btn-outline-green-300.active:focus,html .btn-outline-green-300.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-green-300:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-green-300:focus,html[data-netbox-color-mode=dark] .btn-outline-green-300:active:focus,html[data-netbox-color-mode=dark] .btn-outline-green-300.active:focus,html[data-netbox-color-mode=dark] .btn-outline-green-300.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-green-300:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-green-300:focus,html[data-netbox-color-mode=light] .btn-outline-green-300:active:focus,html[data-netbox-color-mode=light] .btn-outline-green-300.active:focus,html[data-netbox-color-mode=light] .btn-outline-green-300.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #75b79880}html .btn-outline-green-300:disabled,html .btn-outline-green-300.disabled,html[data-netbox-color-mode=dark] .btn-outline-green-300:disabled,html[data-netbox-color-mode=dark] .btn-outline-green-300.disabled,html[data-netbox-color-mode=light] .btn-outline-green-300:disabled,html[data-netbox-color-mode=light] .btn-outline-green-300.disabled{color:#75b798;background-color:transparent}}@media print{html .btn-outline-green-400,html[data-netbox-color-mode=dark] .btn-outline-green-400,html[data-netbox-color-mode=light] .btn-outline-green-400{color:#479f76;border-color:#479f76}html .btn-outline-green-400:hover,html[data-netbox-color-mode=dark] .btn-outline-green-400:hover,html[data-netbox-color-mode=light] .btn-outline-green-400:hover{color:#000;background-color:#479f76;border-color:#479f76}.btn-check:focus+html .btn-outline-green-400,html .btn-outline-green-400:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-green-400,html[data-netbox-color-mode=dark] .btn-outline-green-400:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-green-400,html[data-netbox-color-mode=light] .btn-outline-green-400:focus{box-shadow:0 0 0 .25rem #479f7680}.btn-check:checked+html .btn-outline-green-400,.btn-check:active+html .btn-outline-green-400,html .btn-outline-green-400:active,html .btn-outline-green-400.active,html .btn-outline-green-400.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-green-400,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-green-400,html[data-netbox-color-mode=dark] .btn-outline-green-400:active,html[data-netbox-color-mode=dark] .btn-outline-green-400.active,html[data-netbox-color-mode=dark] .btn-outline-green-400.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-green-400,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-green-400,html[data-netbox-color-mode=light] .btn-outline-green-400:active,html[data-netbox-color-mode=light] .btn-outline-green-400.active,html[data-netbox-color-mode=light] .btn-outline-green-400.dropdown-toggle.show{color:#000;background-color:#479f76;border-color:#479f76}.btn-check:checked+html .btn-outline-green-400:focus,.btn-check:active+html .btn-outline-green-400:focus,html .btn-outline-green-400:active:focus,html .btn-outline-green-400.active:focus,html .btn-outline-green-400.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-green-400:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-green-400:focus,html[data-netbox-color-mode=dark] .btn-outline-green-400:active:focus,html[data-netbox-color-mode=dark] .btn-outline-green-400.active:focus,html[data-netbox-color-mode=dark] .btn-outline-green-400.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-green-400:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-green-400:focus,html[data-netbox-color-mode=light] .btn-outline-green-400:active:focus,html[data-netbox-color-mode=light] .btn-outline-green-400.active:focus,html[data-netbox-color-mode=light] .btn-outline-green-400.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #479f7680}html .btn-outline-green-400:disabled,html .btn-outline-green-400.disabled,html[data-netbox-color-mode=dark] .btn-outline-green-400:disabled,html[data-netbox-color-mode=dark] .btn-outline-green-400.disabled,html[data-netbox-color-mode=light] .btn-outline-green-400:disabled,html[data-netbox-color-mode=light] .btn-outline-green-400.disabled{color:#479f76;background-color:transparent}}@media print{html .btn-outline-green-500,html[data-netbox-color-mode=dark] .btn-outline-green-500,html[data-netbox-color-mode=light] .btn-outline-green-500{color:#198754;border-color:#198754}html .btn-outline-green-500:hover,html[data-netbox-color-mode=dark] .btn-outline-green-500:hover,html[data-netbox-color-mode=light] .btn-outline-green-500:hover{color:#fff;background-color:#198754;border-color:#198754}.btn-check:focus+html .btn-outline-green-500,html .btn-outline-green-500:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-green-500,html[data-netbox-color-mode=dark] .btn-outline-green-500:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-green-500,html[data-netbox-color-mode=light] .btn-outline-green-500:focus{box-shadow:0 0 0 .25rem #19875480}.btn-check:checked+html .btn-outline-green-500,.btn-check:active+html .btn-outline-green-500,html .btn-outline-green-500:active,html .btn-outline-green-500.active,html .btn-outline-green-500.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-green-500,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-green-500,html[data-netbox-color-mode=dark] .btn-outline-green-500:active,html[data-netbox-color-mode=dark] .btn-outline-green-500.active,html[data-netbox-color-mode=dark] .btn-outline-green-500.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-green-500,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-green-500,html[data-netbox-color-mode=light] .btn-outline-green-500:active,html[data-netbox-color-mode=light] .btn-outline-green-500.active,html[data-netbox-color-mode=light] .btn-outline-green-500.dropdown-toggle.show{color:#fff;background-color:#198754;border-color:#198754}.btn-check:checked+html .btn-outline-green-500:focus,.btn-check:active+html .btn-outline-green-500:focus,html .btn-outline-green-500:active:focus,html .btn-outline-green-500.active:focus,html .btn-outline-green-500.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-green-500:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-green-500:focus,html[data-netbox-color-mode=dark] .btn-outline-green-500:active:focus,html[data-netbox-color-mode=dark] .btn-outline-green-500.active:focus,html[data-netbox-color-mode=dark] .btn-outline-green-500.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-green-500:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-green-500:focus,html[data-netbox-color-mode=light] .btn-outline-green-500:active:focus,html[data-netbox-color-mode=light] .btn-outline-green-500.active:focus,html[data-netbox-color-mode=light] .btn-outline-green-500.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #19875480}html .btn-outline-green-500:disabled,html .btn-outline-green-500.disabled,html[data-netbox-color-mode=dark] .btn-outline-green-500:disabled,html[data-netbox-color-mode=dark] .btn-outline-green-500.disabled,html[data-netbox-color-mode=light] .btn-outline-green-500:disabled,html[data-netbox-color-mode=light] .btn-outline-green-500.disabled{color:#198754;background-color:transparent}}@media print{html .btn-outline-green-600,html[data-netbox-color-mode=dark] .btn-outline-green-600,html[data-netbox-color-mode=light] .btn-outline-green-600{color:#146c43;border-color:#146c43}html .btn-outline-green-600:hover,html[data-netbox-color-mode=dark] .btn-outline-green-600:hover,html[data-netbox-color-mode=light] .btn-outline-green-600:hover{color:#fff;background-color:#146c43;border-color:#146c43}.btn-check:focus+html .btn-outline-green-600,html .btn-outline-green-600:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-green-600,html[data-netbox-color-mode=dark] .btn-outline-green-600:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-green-600,html[data-netbox-color-mode=light] .btn-outline-green-600:focus{box-shadow:0 0 0 .25rem #146c4380}.btn-check:checked+html .btn-outline-green-600,.btn-check:active+html .btn-outline-green-600,html .btn-outline-green-600:active,html .btn-outline-green-600.active,html .btn-outline-green-600.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-green-600,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-green-600,html[data-netbox-color-mode=dark] .btn-outline-green-600:active,html[data-netbox-color-mode=dark] .btn-outline-green-600.active,html[data-netbox-color-mode=dark] .btn-outline-green-600.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-green-600,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-green-600,html[data-netbox-color-mode=light] .btn-outline-green-600:active,html[data-netbox-color-mode=light] .btn-outline-green-600.active,html[data-netbox-color-mode=light] .btn-outline-green-600.dropdown-toggle.show{color:#fff;background-color:#146c43;border-color:#146c43}.btn-check:checked+html .btn-outline-green-600:focus,.btn-check:active+html .btn-outline-green-600:focus,html .btn-outline-green-600:active:focus,html .btn-outline-green-600.active:focus,html .btn-outline-green-600.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-green-600:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-green-600:focus,html[data-netbox-color-mode=dark] .btn-outline-green-600:active:focus,html[data-netbox-color-mode=dark] .btn-outline-green-600.active:focus,html[data-netbox-color-mode=dark] .btn-outline-green-600.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-green-600:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-green-600:focus,html[data-netbox-color-mode=light] .btn-outline-green-600:active:focus,html[data-netbox-color-mode=light] .btn-outline-green-600.active:focus,html[data-netbox-color-mode=light] .btn-outline-green-600.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #146c4380}html .btn-outline-green-600:disabled,html .btn-outline-green-600.disabled,html[data-netbox-color-mode=dark] .btn-outline-green-600:disabled,html[data-netbox-color-mode=dark] .btn-outline-green-600.disabled,html[data-netbox-color-mode=light] .btn-outline-green-600:disabled,html[data-netbox-color-mode=light] .btn-outline-green-600.disabled{color:#146c43;background-color:transparent}}@media print{html .btn-outline-green-700,html[data-netbox-color-mode=dark] .btn-outline-green-700,html[data-netbox-color-mode=light] .btn-outline-green-700{color:#0f5132;border-color:#0f5132}html .btn-outline-green-700:hover,html[data-netbox-color-mode=dark] .btn-outline-green-700:hover,html[data-netbox-color-mode=light] .btn-outline-green-700:hover{color:#fff;background-color:#0f5132;border-color:#0f5132}.btn-check:focus+html .btn-outline-green-700,html .btn-outline-green-700:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-green-700,html[data-netbox-color-mode=dark] .btn-outline-green-700:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-green-700,html[data-netbox-color-mode=light] .btn-outline-green-700:focus{box-shadow:0 0 0 .25rem #0f513280}.btn-check:checked+html .btn-outline-green-700,.btn-check:active+html .btn-outline-green-700,html .btn-outline-green-700:active,html .btn-outline-green-700.active,html .btn-outline-green-700.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-green-700,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-green-700,html[data-netbox-color-mode=dark] .btn-outline-green-700:active,html[data-netbox-color-mode=dark] .btn-outline-green-700.active,html[data-netbox-color-mode=dark] .btn-outline-green-700.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-green-700,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-green-700,html[data-netbox-color-mode=light] .btn-outline-green-700:active,html[data-netbox-color-mode=light] .btn-outline-green-700.active,html[data-netbox-color-mode=light] .btn-outline-green-700.dropdown-toggle.show{color:#fff;background-color:#0f5132;border-color:#0f5132}.btn-check:checked+html .btn-outline-green-700:focus,.btn-check:active+html .btn-outline-green-700:focus,html .btn-outline-green-700:active:focus,html .btn-outline-green-700.active:focus,html .btn-outline-green-700.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-green-700:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-green-700:focus,html[data-netbox-color-mode=dark] .btn-outline-green-700:active:focus,html[data-netbox-color-mode=dark] .btn-outline-green-700.active:focus,html[data-netbox-color-mode=dark] .btn-outline-green-700.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-green-700:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-green-700:focus,html[data-netbox-color-mode=light] .btn-outline-green-700:active:focus,html[data-netbox-color-mode=light] .btn-outline-green-700.active:focus,html[data-netbox-color-mode=light] .btn-outline-green-700.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #0f513280}html .btn-outline-green-700:disabled,html .btn-outline-green-700.disabled,html[data-netbox-color-mode=dark] .btn-outline-green-700:disabled,html[data-netbox-color-mode=dark] .btn-outline-green-700.disabled,html[data-netbox-color-mode=light] .btn-outline-green-700:disabled,html[data-netbox-color-mode=light] .btn-outline-green-700.disabled{color:#0f5132;background-color:transparent}}@media print{html .btn-outline-green-800,html[data-netbox-color-mode=dark] .btn-outline-green-800,html[data-netbox-color-mode=light] .btn-outline-green-800{color:#0a3622;border-color:#0a3622}html .btn-outline-green-800:hover,html[data-netbox-color-mode=dark] .btn-outline-green-800:hover,html[data-netbox-color-mode=light] .btn-outline-green-800:hover{color:#fff;background-color:#0a3622;border-color:#0a3622}.btn-check:focus+html .btn-outline-green-800,html .btn-outline-green-800:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-green-800,html[data-netbox-color-mode=dark] .btn-outline-green-800:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-green-800,html[data-netbox-color-mode=light] .btn-outline-green-800:focus{box-shadow:0 0 0 .25rem #0a362280}.btn-check:checked+html .btn-outline-green-800,.btn-check:active+html .btn-outline-green-800,html .btn-outline-green-800:active,html .btn-outline-green-800.active,html .btn-outline-green-800.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-green-800,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-green-800,html[data-netbox-color-mode=dark] .btn-outline-green-800:active,html[data-netbox-color-mode=dark] .btn-outline-green-800.active,html[data-netbox-color-mode=dark] .btn-outline-green-800.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-green-800,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-green-800,html[data-netbox-color-mode=light] .btn-outline-green-800:active,html[data-netbox-color-mode=light] .btn-outline-green-800.active,html[data-netbox-color-mode=light] .btn-outline-green-800.dropdown-toggle.show{color:#fff;background-color:#0a3622;border-color:#0a3622}.btn-check:checked+html .btn-outline-green-800:focus,.btn-check:active+html .btn-outline-green-800:focus,html .btn-outline-green-800:active:focus,html .btn-outline-green-800.active:focus,html .btn-outline-green-800.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-green-800:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-green-800:focus,html[data-netbox-color-mode=dark] .btn-outline-green-800:active:focus,html[data-netbox-color-mode=dark] .btn-outline-green-800.active:focus,html[data-netbox-color-mode=dark] .btn-outline-green-800.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-green-800:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-green-800:focus,html[data-netbox-color-mode=light] .btn-outline-green-800:active:focus,html[data-netbox-color-mode=light] .btn-outline-green-800.active:focus,html[data-netbox-color-mode=light] .btn-outline-green-800.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #0a362280}html .btn-outline-green-800:disabled,html .btn-outline-green-800.disabled,html[data-netbox-color-mode=dark] .btn-outline-green-800:disabled,html[data-netbox-color-mode=dark] .btn-outline-green-800.disabled,html[data-netbox-color-mode=light] .btn-outline-green-800:disabled,html[data-netbox-color-mode=light] .btn-outline-green-800.disabled{color:#0a3622;background-color:transparent}}@media print{html .btn-outline-green-900,html[data-netbox-color-mode=dark] .btn-outline-green-900,html[data-netbox-color-mode=light] .btn-outline-green-900{color:#051b11;border-color:#051b11}html .btn-outline-green-900:hover,html[data-netbox-color-mode=dark] .btn-outline-green-900:hover,html[data-netbox-color-mode=light] .btn-outline-green-900:hover{color:#fff;background-color:#051b11;border-color:#051b11}.btn-check:focus+html .btn-outline-green-900,html .btn-outline-green-900:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-green-900,html[data-netbox-color-mode=dark] .btn-outline-green-900:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-green-900,html[data-netbox-color-mode=light] .btn-outline-green-900:focus{box-shadow:0 0 0 .25rem #051b1180}.btn-check:checked+html .btn-outline-green-900,.btn-check:active+html .btn-outline-green-900,html .btn-outline-green-900:active,html .btn-outline-green-900.active,html .btn-outline-green-900.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-green-900,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-green-900,html[data-netbox-color-mode=dark] .btn-outline-green-900:active,html[data-netbox-color-mode=dark] .btn-outline-green-900.active,html[data-netbox-color-mode=dark] .btn-outline-green-900.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-green-900,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-green-900,html[data-netbox-color-mode=light] .btn-outline-green-900:active,html[data-netbox-color-mode=light] .btn-outline-green-900.active,html[data-netbox-color-mode=light] .btn-outline-green-900.dropdown-toggle.show{color:#fff;background-color:#051b11;border-color:#051b11}.btn-check:checked+html .btn-outline-green-900:focus,.btn-check:active+html .btn-outline-green-900:focus,html .btn-outline-green-900:active:focus,html .btn-outline-green-900.active:focus,html .btn-outline-green-900.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-green-900:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-green-900:focus,html[data-netbox-color-mode=dark] .btn-outline-green-900:active:focus,html[data-netbox-color-mode=dark] .btn-outline-green-900.active:focus,html[data-netbox-color-mode=dark] .btn-outline-green-900.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-green-900:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-green-900:focus,html[data-netbox-color-mode=light] .btn-outline-green-900:active:focus,html[data-netbox-color-mode=light] .btn-outline-green-900.active:focus,html[data-netbox-color-mode=light] .btn-outline-green-900.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #051b1180}html .btn-outline-green-900:disabled,html .btn-outline-green-900.disabled,html[data-netbox-color-mode=dark] .btn-outline-green-900:disabled,html[data-netbox-color-mode=dark] .btn-outline-green-900.disabled,html[data-netbox-color-mode=light] .btn-outline-green-900:disabled,html[data-netbox-color-mode=light] .btn-outline-green-900.disabled{color:#051b11;background-color:transparent}}@media print{html .btn-outline-blue-100,html[data-netbox-color-mode=dark] .btn-outline-blue-100,html[data-netbox-color-mode=light] .btn-outline-blue-100{color:#cfe2ff;border-color:#cfe2ff}html .btn-outline-blue-100:hover,html[data-netbox-color-mode=dark] .btn-outline-blue-100:hover,html[data-netbox-color-mode=light] .btn-outline-blue-100:hover{color:#000;background-color:#cfe2ff;border-color:#cfe2ff}.btn-check:focus+html .btn-outline-blue-100,html .btn-outline-blue-100:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-blue-100,html[data-netbox-color-mode=dark] .btn-outline-blue-100:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-blue-100,html[data-netbox-color-mode=light] .btn-outline-blue-100:focus{box-shadow:0 0 0 .25rem #cfe2ff80}.btn-check:checked+html .btn-outline-blue-100,.btn-check:active+html .btn-outline-blue-100,html .btn-outline-blue-100:active,html .btn-outline-blue-100.active,html .btn-outline-blue-100.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-blue-100,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-blue-100,html[data-netbox-color-mode=dark] .btn-outline-blue-100:active,html[data-netbox-color-mode=dark] .btn-outline-blue-100.active,html[data-netbox-color-mode=dark] .btn-outline-blue-100.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-blue-100,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-blue-100,html[data-netbox-color-mode=light] .btn-outline-blue-100:active,html[data-netbox-color-mode=light] .btn-outline-blue-100.active,html[data-netbox-color-mode=light] .btn-outline-blue-100.dropdown-toggle.show{color:#000;background-color:#cfe2ff;border-color:#cfe2ff}.btn-check:checked+html .btn-outline-blue-100:focus,.btn-check:active+html .btn-outline-blue-100:focus,html .btn-outline-blue-100:active:focus,html .btn-outline-blue-100.active:focus,html .btn-outline-blue-100.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-blue-100:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-blue-100:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-100:active:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-100.active:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-100.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-blue-100:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-blue-100:focus,html[data-netbox-color-mode=light] .btn-outline-blue-100:active:focus,html[data-netbox-color-mode=light] .btn-outline-blue-100.active:focus,html[data-netbox-color-mode=light] .btn-outline-blue-100.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #cfe2ff80}html .btn-outline-blue-100:disabled,html .btn-outline-blue-100.disabled,html[data-netbox-color-mode=dark] .btn-outline-blue-100:disabled,html[data-netbox-color-mode=dark] .btn-outline-blue-100.disabled,html[data-netbox-color-mode=light] .btn-outline-blue-100:disabled,html[data-netbox-color-mode=light] .btn-outline-blue-100.disabled{color:#cfe2ff;background-color:transparent}}@media print{html .btn-outline-blue-200,html[data-netbox-color-mode=dark] .btn-outline-blue-200,html[data-netbox-color-mode=light] .btn-outline-blue-200{color:#9ec5fe;border-color:#9ec5fe}html .btn-outline-blue-200:hover,html[data-netbox-color-mode=dark] .btn-outline-blue-200:hover,html[data-netbox-color-mode=light] .btn-outline-blue-200:hover{color:#000;background-color:#9ec5fe;border-color:#9ec5fe}.btn-check:focus+html .btn-outline-blue-200,html .btn-outline-blue-200:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-blue-200,html[data-netbox-color-mode=dark] .btn-outline-blue-200:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-blue-200,html[data-netbox-color-mode=light] .btn-outline-blue-200:focus{box-shadow:0 0 0 .25rem #9ec5fe80}.btn-check:checked+html .btn-outline-blue-200,.btn-check:active+html .btn-outline-blue-200,html .btn-outline-blue-200:active,html .btn-outline-blue-200.active,html .btn-outline-blue-200.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-blue-200,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-blue-200,html[data-netbox-color-mode=dark] .btn-outline-blue-200:active,html[data-netbox-color-mode=dark] .btn-outline-blue-200.active,html[data-netbox-color-mode=dark] .btn-outline-blue-200.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-blue-200,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-blue-200,html[data-netbox-color-mode=light] .btn-outline-blue-200:active,html[data-netbox-color-mode=light] .btn-outline-blue-200.active,html[data-netbox-color-mode=light] .btn-outline-blue-200.dropdown-toggle.show{color:#000;background-color:#9ec5fe;border-color:#9ec5fe}.btn-check:checked+html .btn-outline-blue-200:focus,.btn-check:active+html .btn-outline-blue-200:focus,html .btn-outline-blue-200:active:focus,html .btn-outline-blue-200.active:focus,html .btn-outline-blue-200.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-blue-200:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-blue-200:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-200:active:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-200.active:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-200.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-blue-200:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-blue-200:focus,html[data-netbox-color-mode=light] .btn-outline-blue-200:active:focus,html[data-netbox-color-mode=light] .btn-outline-blue-200.active:focus,html[data-netbox-color-mode=light] .btn-outline-blue-200.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #9ec5fe80}html .btn-outline-blue-200:disabled,html .btn-outline-blue-200.disabled,html[data-netbox-color-mode=dark] .btn-outline-blue-200:disabled,html[data-netbox-color-mode=dark] .btn-outline-blue-200.disabled,html[data-netbox-color-mode=light] .btn-outline-blue-200:disabled,html[data-netbox-color-mode=light] .btn-outline-blue-200.disabled{color:#9ec5fe;background-color:transparent}}@media print{html .btn-outline-blue-300,html[data-netbox-color-mode=dark] .btn-outline-blue-300,html[data-netbox-color-mode=light] .btn-outline-blue-300{color:#6ea8fe;border-color:#6ea8fe}html .btn-outline-blue-300:hover,html[data-netbox-color-mode=dark] .btn-outline-blue-300:hover,html[data-netbox-color-mode=light] .btn-outline-blue-300:hover{color:#000;background-color:#6ea8fe;border-color:#6ea8fe}.btn-check:focus+html .btn-outline-blue-300,html .btn-outline-blue-300:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-blue-300,html[data-netbox-color-mode=dark] .btn-outline-blue-300:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-blue-300,html[data-netbox-color-mode=light] .btn-outline-blue-300:focus{box-shadow:0 0 0 .25rem #6ea8fe80}.btn-check:checked+html .btn-outline-blue-300,.btn-check:active+html .btn-outline-blue-300,html .btn-outline-blue-300:active,html .btn-outline-blue-300.active,html .btn-outline-blue-300.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-blue-300,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-blue-300,html[data-netbox-color-mode=dark] .btn-outline-blue-300:active,html[data-netbox-color-mode=dark] .btn-outline-blue-300.active,html[data-netbox-color-mode=dark] .btn-outline-blue-300.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-blue-300,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-blue-300,html[data-netbox-color-mode=light] .btn-outline-blue-300:active,html[data-netbox-color-mode=light] .btn-outline-blue-300.active,html[data-netbox-color-mode=light] .btn-outline-blue-300.dropdown-toggle.show{color:#000;background-color:#6ea8fe;border-color:#6ea8fe}.btn-check:checked+html .btn-outline-blue-300:focus,.btn-check:active+html .btn-outline-blue-300:focus,html .btn-outline-blue-300:active:focus,html .btn-outline-blue-300.active:focus,html .btn-outline-blue-300.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-blue-300:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-blue-300:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-300:active:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-300.active:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-300.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-blue-300:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-blue-300:focus,html[data-netbox-color-mode=light] .btn-outline-blue-300:active:focus,html[data-netbox-color-mode=light] .btn-outline-blue-300.active:focus,html[data-netbox-color-mode=light] .btn-outline-blue-300.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #6ea8fe80}html .btn-outline-blue-300:disabled,html .btn-outline-blue-300.disabled,html[data-netbox-color-mode=dark] .btn-outline-blue-300:disabled,html[data-netbox-color-mode=dark] .btn-outline-blue-300.disabled,html[data-netbox-color-mode=light] .btn-outline-blue-300:disabled,html[data-netbox-color-mode=light] .btn-outline-blue-300.disabled{color:#6ea8fe;background-color:transparent}}@media print{html .btn-outline-blue-400,html[data-netbox-color-mode=dark] .btn-outline-blue-400,html[data-netbox-color-mode=light] .btn-outline-blue-400{color:#3d8bfd;border-color:#3d8bfd}html .btn-outline-blue-400:hover,html[data-netbox-color-mode=dark] .btn-outline-blue-400:hover,html[data-netbox-color-mode=light] .btn-outline-blue-400:hover{color:#000;background-color:#3d8bfd;border-color:#3d8bfd}.btn-check:focus+html .btn-outline-blue-400,html .btn-outline-blue-400:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-blue-400,html[data-netbox-color-mode=dark] .btn-outline-blue-400:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-blue-400,html[data-netbox-color-mode=light] .btn-outline-blue-400:focus{box-shadow:0 0 0 .25rem #3d8bfd80}.btn-check:checked+html .btn-outline-blue-400,.btn-check:active+html .btn-outline-blue-400,html .btn-outline-blue-400:active,html .btn-outline-blue-400.active,html .btn-outline-blue-400.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-blue-400,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-blue-400,html[data-netbox-color-mode=dark] .btn-outline-blue-400:active,html[data-netbox-color-mode=dark] .btn-outline-blue-400.active,html[data-netbox-color-mode=dark] .btn-outline-blue-400.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-blue-400,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-blue-400,html[data-netbox-color-mode=light] .btn-outline-blue-400:active,html[data-netbox-color-mode=light] .btn-outline-blue-400.active,html[data-netbox-color-mode=light] .btn-outline-blue-400.dropdown-toggle.show{color:#000;background-color:#3d8bfd;border-color:#3d8bfd}.btn-check:checked+html .btn-outline-blue-400:focus,.btn-check:active+html .btn-outline-blue-400:focus,html .btn-outline-blue-400:active:focus,html .btn-outline-blue-400.active:focus,html .btn-outline-blue-400.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-blue-400:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-blue-400:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-400:active:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-400.active:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-400.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-blue-400:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-blue-400:focus,html[data-netbox-color-mode=light] .btn-outline-blue-400:active:focus,html[data-netbox-color-mode=light] .btn-outline-blue-400.active:focus,html[data-netbox-color-mode=light] .btn-outline-blue-400.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #3d8bfd80}html .btn-outline-blue-400:disabled,html .btn-outline-blue-400.disabled,html[data-netbox-color-mode=dark] .btn-outline-blue-400:disabled,html[data-netbox-color-mode=dark] .btn-outline-blue-400.disabled,html[data-netbox-color-mode=light] .btn-outline-blue-400:disabled,html[data-netbox-color-mode=light] .btn-outline-blue-400.disabled{color:#3d8bfd;background-color:transparent}}@media print{html .btn-outline-blue-500,html[data-netbox-color-mode=dark] .btn-outline-blue-500,html[data-netbox-color-mode=light] .btn-outline-blue-500{color:#0d6efd;border-color:#0d6efd}html .btn-outline-blue-500:hover,html[data-netbox-color-mode=dark] .btn-outline-blue-500:hover,html[data-netbox-color-mode=light] .btn-outline-blue-500:hover{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-check:focus+html .btn-outline-blue-500,html .btn-outline-blue-500:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-blue-500,html[data-netbox-color-mode=dark] .btn-outline-blue-500:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-blue-500,html[data-netbox-color-mode=light] .btn-outline-blue-500:focus{box-shadow:0 0 0 .25rem #0d6efd80}.btn-check:checked+html .btn-outline-blue-500,.btn-check:active+html .btn-outline-blue-500,html .btn-outline-blue-500:active,html .btn-outline-blue-500.active,html .btn-outline-blue-500.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-blue-500,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-blue-500,html[data-netbox-color-mode=dark] .btn-outline-blue-500:active,html[data-netbox-color-mode=dark] .btn-outline-blue-500.active,html[data-netbox-color-mode=dark] .btn-outline-blue-500.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-blue-500,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-blue-500,html[data-netbox-color-mode=light] .btn-outline-blue-500:active,html[data-netbox-color-mode=light] .btn-outline-blue-500.active,html[data-netbox-color-mode=light] .btn-outline-blue-500.dropdown-toggle.show{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-check:checked+html .btn-outline-blue-500:focus,.btn-check:active+html .btn-outline-blue-500:focus,html .btn-outline-blue-500:active:focus,html .btn-outline-blue-500.active:focus,html .btn-outline-blue-500.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-blue-500:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-blue-500:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-500:active:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-500.active:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-500.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-blue-500:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-blue-500:focus,html[data-netbox-color-mode=light] .btn-outline-blue-500:active:focus,html[data-netbox-color-mode=light] .btn-outline-blue-500.active:focus,html[data-netbox-color-mode=light] .btn-outline-blue-500.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #0d6efd80}html .btn-outline-blue-500:disabled,html .btn-outline-blue-500.disabled,html[data-netbox-color-mode=dark] .btn-outline-blue-500:disabled,html[data-netbox-color-mode=dark] .btn-outline-blue-500.disabled,html[data-netbox-color-mode=light] .btn-outline-blue-500:disabled,html[data-netbox-color-mode=light] .btn-outline-blue-500.disabled{color:#0d6efd;background-color:transparent}}@media print{html .btn-outline-blue-600,html[data-netbox-color-mode=dark] .btn-outline-blue-600,html[data-netbox-color-mode=light] .btn-outline-blue-600{color:#0a58ca;border-color:#0a58ca}html .btn-outline-blue-600:hover,html[data-netbox-color-mode=dark] .btn-outline-blue-600:hover,html[data-netbox-color-mode=light] .btn-outline-blue-600:hover{color:#fff;background-color:#0a58ca;border-color:#0a58ca}.btn-check:focus+html .btn-outline-blue-600,html .btn-outline-blue-600:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-blue-600,html[data-netbox-color-mode=dark] .btn-outline-blue-600:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-blue-600,html[data-netbox-color-mode=light] .btn-outline-blue-600:focus{box-shadow:0 0 0 .25rem #0a58ca80}.btn-check:checked+html .btn-outline-blue-600,.btn-check:active+html .btn-outline-blue-600,html .btn-outline-blue-600:active,html .btn-outline-blue-600.active,html .btn-outline-blue-600.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-blue-600,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-blue-600,html[data-netbox-color-mode=dark] .btn-outline-blue-600:active,html[data-netbox-color-mode=dark] .btn-outline-blue-600.active,html[data-netbox-color-mode=dark] .btn-outline-blue-600.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-blue-600,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-blue-600,html[data-netbox-color-mode=light] .btn-outline-blue-600:active,html[data-netbox-color-mode=light] .btn-outline-blue-600.active,html[data-netbox-color-mode=light] .btn-outline-blue-600.dropdown-toggle.show{color:#fff;background-color:#0a58ca;border-color:#0a58ca}.btn-check:checked+html .btn-outline-blue-600:focus,.btn-check:active+html .btn-outline-blue-600:focus,html .btn-outline-blue-600:active:focus,html .btn-outline-blue-600.active:focus,html .btn-outline-blue-600.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-blue-600:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-blue-600:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-600:active:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-600.active:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-600.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-blue-600:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-blue-600:focus,html[data-netbox-color-mode=light] .btn-outline-blue-600:active:focus,html[data-netbox-color-mode=light] .btn-outline-blue-600.active:focus,html[data-netbox-color-mode=light] .btn-outline-blue-600.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #0a58ca80}html .btn-outline-blue-600:disabled,html .btn-outline-blue-600.disabled,html[data-netbox-color-mode=dark] .btn-outline-blue-600:disabled,html[data-netbox-color-mode=dark] .btn-outline-blue-600.disabled,html[data-netbox-color-mode=light] .btn-outline-blue-600:disabled,html[data-netbox-color-mode=light] .btn-outline-blue-600.disabled{color:#0a58ca;background-color:transparent}}@media print{html .btn-outline-blue-700,html[data-netbox-color-mode=dark] .btn-outline-blue-700,html[data-netbox-color-mode=light] .btn-outline-blue-700{color:#084298;border-color:#084298}html .btn-outline-blue-700:hover,html[data-netbox-color-mode=dark] .btn-outline-blue-700:hover,html[data-netbox-color-mode=light] .btn-outline-blue-700:hover{color:#fff;background-color:#084298;border-color:#084298}.btn-check:focus+html .btn-outline-blue-700,html .btn-outline-blue-700:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-blue-700,html[data-netbox-color-mode=dark] .btn-outline-blue-700:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-blue-700,html[data-netbox-color-mode=light] .btn-outline-blue-700:focus{box-shadow:0 0 0 .25rem #08429880}.btn-check:checked+html .btn-outline-blue-700,.btn-check:active+html .btn-outline-blue-700,html .btn-outline-blue-700:active,html .btn-outline-blue-700.active,html .btn-outline-blue-700.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-blue-700,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-blue-700,html[data-netbox-color-mode=dark] .btn-outline-blue-700:active,html[data-netbox-color-mode=dark] .btn-outline-blue-700.active,html[data-netbox-color-mode=dark] .btn-outline-blue-700.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-blue-700,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-blue-700,html[data-netbox-color-mode=light] .btn-outline-blue-700:active,html[data-netbox-color-mode=light] .btn-outline-blue-700.active,html[data-netbox-color-mode=light] .btn-outline-blue-700.dropdown-toggle.show{color:#fff;background-color:#084298;border-color:#084298}.btn-check:checked+html .btn-outline-blue-700:focus,.btn-check:active+html .btn-outline-blue-700:focus,html .btn-outline-blue-700:active:focus,html .btn-outline-blue-700.active:focus,html .btn-outline-blue-700.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-blue-700:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-blue-700:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-700:active:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-700.active:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-700.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-blue-700:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-blue-700:focus,html[data-netbox-color-mode=light] .btn-outline-blue-700:active:focus,html[data-netbox-color-mode=light] .btn-outline-blue-700.active:focus,html[data-netbox-color-mode=light] .btn-outline-blue-700.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #08429880}html .btn-outline-blue-700:disabled,html .btn-outline-blue-700.disabled,html[data-netbox-color-mode=dark] .btn-outline-blue-700:disabled,html[data-netbox-color-mode=dark] .btn-outline-blue-700.disabled,html[data-netbox-color-mode=light] .btn-outline-blue-700:disabled,html[data-netbox-color-mode=light] .btn-outline-blue-700.disabled{color:#084298;background-color:transparent}}@media print{html .btn-outline-blue-800,html[data-netbox-color-mode=dark] .btn-outline-blue-800,html[data-netbox-color-mode=light] .btn-outline-blue-800{color:#052c65;border-color:#052c65}html .btn-outline-blue-800:hover,html[data-netbox-color-mode=dark] .btn-outline-blue-800:hover,html[data-netbox-color-mode=light] .btn-outline-blue-800:hover{color:#fff;background-color:#052c65;border-color:#052c65}.btn-check:focus+html .btn-outline-blue-800,html .btn-outline-blue-800:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-blue-800,html[data-netbox-color-mode=dark] .btn-outline-blue-800:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-blue-800,html[data-netbox-color-mode=light] .btn-outline-blue-800:focus{box-shadow:0 0 0 .25rem #052c6580}.btn-check:checked+html .btn-outline-blue-800,.btn-check:active+html .btn-outline-blue-800,html .btn-outline-blue-800:active,html .btn-outline-blue-800.active,html .btn-outline-blue-800.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-blue-800,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-blue-800,html[data-netbox-color-mode=dark] .btn-outline-blue-800:active,html[data-netbox-color-mode=dark] .btn-outline-blue-800.active,html[data-netbox-color-mode=dark] .btn-outline-blue-800.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-blue-800,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-blue-800,html[data-netbox-color-mode=light] .btn-outline-blue-800:active,html[data-netbox-color-mode=light] .btn-outline-blue-800.active,html[data-netbox-color-mode=light] .btn-outline-blue-800.dropdown-toggle.show{color:#fff;background-color:#052c65;border-color:#052c65}.btn-check:checked+html .btn-outline-blue-800:focus,.btn-check:active+html .btn-outline-blue-800:focus,html .btn-outline-blue-800:active:focus,html .btn-outline-blue-800.active:focus,html .btn-outline-blue-800.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-blue-800:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-blue-800:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-800:active:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-800.active:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-800.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-blue-800:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-blue-800:focus,html[data-netbox-color-mode=light] .btn-outline-blue-800:active:focus,html[data-netbox-color-mode=light] .btn-outline-blue-800.active:focus,html[data-netbox-color-mode=light] .btn-outline-blue-800.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #052c6580}html .btn-outline-blue-800:disabled,html .btn-outline-blue-800.disabled,html[data-netbox-color-mode=dark] .btn-outline-blue-800:disabled,html[data-netbox-color-mode=dark] .btn-outline-blue-800.disabled,html[data-netbox-color-mode=light] .btn-outline-blue-800:disabled,html[data-netbox-color-mode=light] .btn-outline-blue-800.disabled{color:#052c65;background-color:transparent}}@media print{html .btn-outline-blue-900,html[data-netbox-color-mode=dark] .btn-outline-blue-900,html[data-netbox-color-mode=light] .btn-outline-blue-900{color:#031633;border-color:#031633}html .btn-outline-blue-900:hover,html[data-netbox-color-mode=dark] .btn-outline-blue-900:hover,html[data-netbox-color-mode=light] .btn-outline-blue-900:hover{color:#fff;background-color:#031633;border-color:#031633}.btn-check:focus+html .btn-outline-blue-900,html .btn-outline-blue-900:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-blue-900,html[data-netbox-color-mode=dark] .btn-outline-blue-900:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-blue-900,html[data-netbox-color-mode=light] .btn-outline-blue-900:focus{box-shadow:0 0 0 .25rem #03163380}.btn-check:checked+html .btn-outline-blue-900,.btn-check:active+html .btn-outline-blue-900,html .btn-outline-blue-900:active,html .btn-outline-blue-900.active,html .btn-outline-blue-900.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-blue-900,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-blue-900,html[data-netbox-color-mode=dark] .btn-outline-blue-900:active,html[data-netbox-color-mode=dark] .btn-outline-blue-900.active,html[data-netbox-color-mode=dark] .btn-outline-blue-900.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-blue-900,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-blue-900,html[data-netbox-color-mode=light] .btn-outline-blue-900:active,html[data-netbox-color-mode=light] .btn-outline-blue-900.active,html[data-netbox-color-mode=light] .btn-outline-blue-900.dropdown-toggle.show{color:#fff;background-color:#031633;border-color:#031633}.btn-check:checked+html .btn-outline-blue-900:focus,.btn-check:active+html .btn-outline-blue-900:focus,html .btn-outline-blue-900:active:focus,html .btn-outline-blue-900.active:focus,html .btn-outline-blue-900.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-blue-900:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-blue-900:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-900:active:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-900.active:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-900.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-blue-900:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-blue-900:focus,html[data-netbox-color-mode=light] .btn-outline-blue-900:active:focus,html[data-netbox-color-mode=light] .btn-outline-blue-900.active:focus,html[data-netbox-color-mode=light] .btn-outline-blue-900.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #03163380}html .btn-outline-blue-900:disabled,html .btn-outline-blue-900.disabled,html[data-netbox-color-mode=dark] .btn-outline-blue-900:disabled,html[data-netbox-color-mode=dark] .btn-outline-blue-900.disabled,html[data-netbox-color-mode=light] .btn-outline-blue-900:disabled,html[data-netbox-color-mode=light] .btn-outline-blue-900.disabled{color:#031633;background-color:transparent}}@media print{html .btn-outline-cyan-100,html[data-netbox-color-mode=dark] .btn-outline-cyan-100,html[data-netbox-color-mode=light] .btn-outline-cyan-100{color:#cff4fc;border-color:#cff4fc}html .btn-outline-cyan-100:hover,html[data-netbox-color-mode=dark] .btn-outline-cyan-100:hover,html[data-netbox-color-mode=light] .btn-outline-cyan-100:hover{color:#000;background-color:#cff4fc;border-color:#cff4fc}.btn-check:focus+html .btn-outline-cyan-100,html .btn-outline-cyan-100:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-cyan-100,html[data-netbox-color-mode=dark] .btn-outline-cyan-100:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-cyan-100,html[data-netbox-color-mode=light] .btn-outline-cyan-100:focus{box-shadow:0 0 0 .25rem #cff4fc80}.btn-check:checked+html .btn-outline-cyan-100,.btn-check:active+html .btn-outline-cyan-100,html .btn-outline-cyan-100:active,html .btn-outline-cyan-100.active,html .btn-outline-cyan-100.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-cyan-100,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-cyan-100,html[data-netbox-color-mode=dark] .btn-outline-cyan-100:active,html[data-netbox-color-mode=dark] .btn-outline-cyan-100.active,html[data-netbox-color-mode=dark] .btn-outline-cyan-100.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-cyan-100,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-cyan-100,html[data-netbox-color-mode=light] .btn-outline-cyan-100:active,html[data-netbox-color-mode=light] .btn-outline-cyan-100.active,html[data-netbox-color-mode=light] .btn-outline-cyan-100.dropdown-toggle.show{color:#000;background-color:#cff4fc;border-color:#cff4fc}.btn-check:checked+html .btn-outline-cyan-100:focus,.btn-check:active+html .btn-outline-cyan-100:focus,html .btn-outline-cyan-100:active:focus,html .btn-outline-cyan-100.active:focus,html .btn-outline-cyan-100.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-cyan-100:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-cyan-100:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-100:active:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-100.active:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-100.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-cyan-100:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-cyan-100:focus,html[data-netbox-color-mode=light] .btn-outline-cyan-100:active:focus,html[data-netbox-color-mode=light] .btn-outline-cyan-100.active:focus,html[data-netbox-color-mode=light] .btn-outline-cyan-100.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #cff4fc80}html .btn-outline-cyan-100:disabled,html .btn-outline-cyan-100.disabled,html[data-netbox-color-mode=dark] .btn-outline-cyan-100:disabled,html[data-netbox-color-mode=dark] .btn-outline-cyan-100.disabled,html[data-netbox-color-mode=light] .btn-outline-cyan-100:disabled,html[data-netbox-color-mode=light] .btn-outline-cyan-100.disabled{color:#cff4fc;background-color:transparent}}@media print{html .btn-outline-cyan-200,html[data-netbox-color-mode=dark] .btn-outline-cyan-200,html[data-netbox-color-mode=light] .btn-outline-cyan-200{color:#9eeaf9;border-color:#9eeaf9}html .btn-outline-cyan-200:hover,html[data-netbox-color-mode=dark] .btn-outline-cyan-200:hover,html[data-netbox-color-mode=light] .btn-outline-cyan-200:hover{color:#000;background-color:#9eeaf9;border-color:#9eeaf9}.btn-check:focus+html .btn-outline-cyan-200,html .btn-outline-cyan-200:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-cyan-200,html[data-netbox-color-mode=dark] .btn-outline-cyan-200:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-cyan-200,html[data-netbox-color-mode=light] .btn-outline-cyan-200:focus{box-shadow:0 0 0 .25rem #9eeaf980}.btn-check:checked+html .btn-outline-cyan-200,.btn-check:active+html .btn-outline-cyan-200,html .btn-outline-cyan-200:active,html .btn-outline-cyan-200.active,html .btn-outline-cyan-200.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-cyan-200,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-cyan-200,html[data-netbox-color-mode=dark] .btn-outline-cyan-200:active,html[data-netbox-color-mode=dark] .btn-outline-cyan-200.active,html[data-netbox-color-mode=dark] .btn-outline-cyan-200.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-cyan-200,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-cyan-200,html[data-netbox-color-mode=light] .btn-outline-cyan-200:active,html[data-netbox-color-mode=light] .btn-outline-cyan-200.active,html[data-netbox-color-mode=light] .btn-outline-cyan-200.dropdown-toggle.show{color:#000;background-color:#9eeaf9;border-color:#9eeaf9}.btn-check:checked+html .btn-outline-cyan-200:focus,.btn-check:active+html .btn-outline-cyan-200:focus,html .btn-outline-cyan-200:active:focus,html .btn-outline-cyan-200.active:focus,html .btn-outline-cyan-200.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-cyan-200:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-cyan-200:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-200:active:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-200.active:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-200.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-cyan-200:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-cyan-200:focus,html[data-netbox-color-mode=light] .btn-outline-cyan-200:active:focus,html[data-netbox-color-mode=light] .btn-outline-cyan-200.active:focus,html[data-netbox-color-mode=light] .btn-outline-cyan-200.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #9eeaf980}html .btn-outline-cyan-200:disabled,html .btn-outline-cyan-200.disabled,html[data-netbox-color-mode=dark] .btn-outline-cyan-200:disabled,html[data-netbox-color-mode=dark] .btn-outline-cyan-200.disabled,html[data-netbox-color-mode=light] .btn-outline-cyan-200:disabled,html[data-netbox-color-mode=light] .btn-outline-cyan-200.disabled{color:#9eeaf9;background-color:transparent}}@media print{html .btn-outline-cyan-300,html[data-netbox-color-mode=dark] .btn-outline-cyan-300,html[data-netbox-color-mode=light] .btn-outline-cyan-300{color:#6edff6;border-color:#6edff6}html .btn-outline-cyan-300:hover,html[data-netbox-color-mode=dark] .btn-outline-cyan-300:hover,html[data-netbox-color-mode=light] .btn-outline-cyan-300:hover{color:#000;background-color:#6edff6;border-color:#6edff6}.btn-check:focus+html .btn-outline-cyan-300,html .btn-outline-cyan-300:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-cyan-300,html[data-netbox-color-mode=dark] .btn-outline-cyan-300:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-cyan-300,html[data-netbox-color-mode=light] .btn-outline-cyan-300:focus{box-shadow:0 0 0 .25rem #6edff680}.btn-check:checked+html .btn-outline-cyan-300,.btn-check:active+html .btn-outline-cyan-300,html .btn-outline-cyan-300:active,html .btn-outline-cyan-300.active,html .btn-outline-cyan-300.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-cyan-300,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-cyan-300,html[data-netbox-color-mode=dark] .btn-outline-cyan-300:active,html[data-netbox-color-mode=dark] .btn-outline-cyan-300.active,html[data-netbox-color-mode=dark] .btn-outline-cyan-300.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-cyan-300,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-cyan-300,html[data-netbox-color-mode=light] .btn-outline-cyan-300:active,html[data-netbox-color-mode=light] .btn-outline-cyan-300.active,html[data-netbox-color-mode=light] .btn-outline-cyan-300.dropdown-toggle.show{color:#000;background-color:#6edff6;border-color:#6edff6}.btn-check:checked+html .btn-outline-cyan-300:focus,.btn-check:active+html .btn-outline-cyan-300:focus,html .btn-outline-cyan-300:active:focus,html .btn-outline-cyan-300.active:focus,html .btn-outline-cyan-300.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-cyan-300:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-cyan-300:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-300:active:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-300.active:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-300.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-cyan-300:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-cyan-300:focus,html[data-netbox-color-mode=light] .btn-outline-cyan-300:active:focus,html[data-netbox-color-mode=light] .btn-outline-cyan-300.active:focus,html[data-netbox-color-mode=light] .btn-outline-cyan-300.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #6edff680}html .btn-outline-cyan-300:disabled,html .btn-outline-cyan-300.disabled,html[data-netbox-color-mode=dark] .btn-outline-cyan-300:disabled,html[data-netbox-color-mode=dark] .btn-outline-cyan-300.disabled,html[data-netbox-color-mode=light] .btn-outline-cyan-300:disabled,html[data-netbox-color-mode=light] .btn-outline-cyan-300.disabled{color:#6edff6;background-color:transparent}}@media print{html .btn-outline-cyan-400,html[data-netbox-color-mode=dark] .btn-outline-cyan-400,html[data-netbox-color-mode=light] .btn-outline-cyan-400{color:#3dd5f3;border-color:#3dd5f3}html .btn-outline-cyan-400:hover,html[data-netbox-color-mode=dark] .btn-outline-cyan-400:hover,html[data-netbox-color-mode=light] .btn-outline-cyan-400:hover{color:#000;background-color:#3dd5f3;border-color:#3dd5f3}.btn-check:focus+html .btn-outline-cyan-400,html .btn-outline-cyan-400:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-cyan-400,html[data-netbox-color-mode=dark] .btn-outline-cyan-400:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-cyan-400,html[data-netbox-color-mode=light] .btn-outline-cyan-400:focus{box-shadow:0 0 0 .25rem #3dd5f380}.btn-check:checked+html .btn-outline-cyan-400,.btn-check:active+html .btn-outline-cyan-400,html .btn-outline-cyan-400:active,html .btn-outline-cyan-400.active,html .btn-outline-cyan-400.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-cyan-400,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-cyan-400,html[data-netbox-color-mode=dark] .btn-outline-cyan-400:active,html[data-netbox-color-mode=dark] .btn-outline-cyan-400.active,html[data-netbox-color-mode=dark] .btn-outline-cyan-400.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-cyan-400,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-cyan-400,html[data-netbox-color-mode=light] .btn-outline-cyan-400:active,html[data-netbox-color-mode=light] .btn-outline-cyan-400.active,html[data-netbox-color-mode=light] .btn-outline-cyan-400.dropdown-toggle.show{color:#000;background-color:#3dd5f3;border-color:#3dd5f3}.btn-check:checked+html .btn-outline-cyan-400:focus,.btn-check:active+html .btn-outline-cyan-400:focus,html .btn-outline-cyan-400:active:focus,html .btn-outline-cyan-400.active:focus,html .btn-outline-cyan-400.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-cyan-400:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-cyan-400:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-400:active:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-400.active:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-400.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-cyan-400:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-cyan-400:focus,html[data-netbox-color-mode=light] .btn-outline-cyan-400:active:focus,html[data-netbox-color-mode=light] .btn-outline-cyan-400.active:focus,html[data-netbox-color-mode=light] .btn-outline-cyan-400.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #3dd5f380}html .btn-outline-cyan-400:disabled,html .btn-outline-cyan-400.disabled,html[data-netbox-color-mode=dark] .btn-outline-cyan-400:disabled,html[data-netbox-color-mode=dark] .btn-outline-cyan-400.disabled,html[data-netbox-color-mode=light] .btn-outline-cyan-400:disabled,html[data-netbox-color-mode=light] .btn-outline-cyan-400.disabled{color:#3dd5f3;background-color:transparent}}@media print{html .btn-outline-cyan-500,html[data-netbox-color-mode=dark] .btn-outline-cyan-500,html[data-netbox-color-mode=light] .btn-outline-cyan-500{color:#0dcaf0;border-color:#0dcaf0}html .btn-outline-cyan-500:hover,html[data-netbox-color-mode=dark] .btn-outline-cyan-500:hover,html[data-netbox-color-mode=light] .btn-outline-cyan-500:hover{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-check:focus+html .btn-outline-cyan-500,html .btn-outline-cyan-500:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-cyan-500,html[data-netbox-color-mode=dark] .btn-outline-cyan-500:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-cyan-500,html[data-netbox-color-mode=light] .btn-outline-cyan-500:focus{box-shadow:0 0 0 .25rem #0dcaf080}.btn-check:checked+html .btn-outline-cyan-500,.btn-check:active+html .btn-outline-cyan-500,html .btn-outline-cyan-500:active,html .btn-outline-cyan-500.active,html .btn-outline-cyan-500.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-cyan-500,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-cyan-500,html[data-netbox-color-mode=dark] .btn-outline-cyan-500:active,html[data-netbox-color-mode=dark] .btn-outline-cyan-500.active,html[data-netbox-color-mode=dark] .btn-outline-cyan-500.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-cyan-500,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-cyan-500,html[data-netbox-color-mode=light] .btn-outline-cyan-500:active,html[data-netbox-color-mode=light] .btn-outline-cyan-500.active,html[data-netbox-color-mode=light] .btn-outline-cyan-500.dropdown-toggle.show{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-check:checked+html .btn-outline-cyan-500:focus,.btn-check:active+html .btn-outline-cyan-500:focus,html .btn-outline-cyan-500:active:focus,html .btn-outline-cyan-500.active:focus,html .btn-outline-cyan-500.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-cyan-500:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-cyan-500:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-500:active:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-500.active:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-500.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-cyan-500:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-cyan-500:focus,html[data-netbox-color-mode=light] .btn-outline-cyan-500:active:focus,html[data-netbox-color-mode=light] .btn-outline-cyan-500.active:focus,html[data-netbox-color-mode=light] .btn-outline-cyan-500.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #0dcaf080}html .btn-outline-cyan-500:disabled,html .btn-outline-cyan-500.disabled,html[data-netbox-color-mode=dark] .btn-outline-cyan-500:disabled,html[data-netbox-color-mode=dark] .btn-outline-cyan-500.disabled,html[data-netbox-color-mode=light] .btn-outline-cyan-500:disabled,html[data-netbox-color-mode=light] .btn-outline-cyan-500.disabled{color:#0dcaf0;background-color:transparent}}@media print{html .btn-outline-cyan-600,html[data-netbox-color-mode=dark] .btn-outline-cyan-600,html[data-netbox-color-mode=light] .btn-outline-cyan-600{color:#0aa2c0;border-color:#0aa2c0}html .btn-outline-cyan-600:hover,html[data-netbox-color-mode=dark] .btn-outline-cyan-600:hover,html[data-netbox-color-mode=light] .btn-outline-cyan-600:hover{color:#000;background-color:#0aa2c0;border-color:#0aa2c0}.btn-check:focus+html .btn-outline-cyan-600,html .btn-outline-cyan-600:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-cyan-600,html[data-netbox-color-mode=dark] .btn-outline-cyan-600:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-cyan-600,html[data-netbox-color-mode=light] .btn-outline-cyan-600:focus{box-shadow:0 0 0 .25rem #0aa2c080}.btn-check:checked+html .btn-outline-cyan-600,.btn-check:active+html .btn-outline-cyan-600,html .btn-outline-cyan-600:active,html .btn-outline-cyan-600.active,html .btn-outline-cyan-600.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-cyan-600,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-cyan-600,html[data-netbox-color-mode=dark] .btn-outline-cyan-600:active,html[data-netbox-color-mode=dark] .btn-outline-cyan-600.active,html[data-netbox-color-mode=dark] .btn-outline-cyan-600.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-cyan-600,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-cyan-600,html[data-netbox-color-mode=light] .btn-outline-cyan-600:active,html[data-netbox-color-mode=light] .btn-outline-cyan-600.active,html[data-netbox-color-mode=light] .btn-outline-cyan-600.dropdown-toggle.show{color:#000;background-color:#0aa2c0;border-color:#0aa2c0}.btn-check:checked+html .btn-outline-cyan-600:focus,.btn-check:active+html .btn-outline-cyan-600:focus,html .btn-outline-cyan-600:active:focus,html .btn-outline-cyan-600.active:focus,html .btn-outline-cyan-600.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-cyan-600:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-cyan-600:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-600:active:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-600.active:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-600.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-cyan-600:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-cyan-600:focus,html[data-netbox-color-mode=light] .btn-outline-cyan-600:active:focus,html[data-netbox-color-mode=light] .btn-outline-cyan-600.active:focus,html[data-netbox-color-mode=light] .btn-outline-cyan-600.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #0aa2c080}html .btn-outline-cyan-600:disabled,html .btn-outline-cyan-600.disabled,html[data-netbox-color-mode=dark] .btn-outline-cyan-600:disabled,html[data-netbox-color-mode=dark] .btn-outline-cyan-600.disabled,html[data-netbox-color-mode=light] .btn-outline-cyan-600:disabled,html[data-netbox-color-mode=light] .btn-outline-cyan-600.disabled{color:#0aa2c0;background-color:transparent}}@media print{html .btn-outline-cyan-700,html[data-netbox-color-mode=dark] .btn-outline-cyan-700,html[data-netbox-color-mode=light] .btn-outline-cyan-700{color:#087990;border-color:#087990}html .btn-outline-cyan-700:hover,html[data-netbox-color-mode=dark] .btn-outline-cyan-700:hover,html[data-netbox-color-mode=light] .btn-outline-cyan-700:hover{color:#fff;background-color:#087990;border-color:#087990}.btn-check:focus+html .btn-outline-cyan-700,html .btn-outline-cyan-700:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-cyan-700,html[data-netbox-color-mode=dark] .btn-outline-cyan-700:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-cyan-700,html[data-netbox-color-mode=light] .btn-outline-cyan-700:focus{box-shadow:0 0 0 .25rem #08799080}.btn-check:checked+html .btn-outline-cyan-700,.btn-check:active+html .btn-outline-cyan-700,html .btn-outline-cyan-700:active,html .btn-outline-cyan-700.active,html .btn-outline-cyan-700.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-cyan-700,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-cyan-700,html[data-netbox-color-mode=dark] .btn-outline-cyan-700:active,html[data-netbox-color-mode=dark] .btn-outline-cyan-700.active,html[data-netbox-color-mode=dark] .btn-outline-cyan-700.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-cyan-700,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-cyan-700,html[data-netbox-color-mode=light] .btn-outline-cyan-700:active,html[data-netbox-color-mode=light] .btn-outline-cyan-700.active,html[data-netbox-color-mode=light] .btn-outline-cyan-700.dropdown-toggle.show{color:#fff;background-color:#087990;border-color:#087990}.btn-check:checked+html .btn-outline-cyan-700:focus,.btn-check:active+html .btn-outline-cyan-700:focus,html .btn-outline-cyan-700:active:focus,html .btn-outline-cyan-700.active:focus,html .btn-outline-cyan-700.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-cyan-700:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-cyan-700:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-700:active:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-700.active:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-700.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-cyan-700:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-cyan-700:focus,html[data-netbox-color-mode=light] .btn-outline-cyan-700:active:focus,html[data-netbox-color-mode=light] .btn-outline-cyan-700.active:focus,html[data-netbox-color-mode=light] .btn-outline-cyan-700.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #08799080}html .btn-outline-cyan-700:disabled,html .btn-outline-cyan-700.disabled,html[data-netbox-color-mode=dark] .btn-outline-cyan-700:disabled,html[data-netbox-color-mode=dark] .btn-outline-cyan-700.disabled,html[data-netbox-color-mode=light] .btn-outline-cyan-700:disabled,html[data-netbox-color-mode=light] .btn-outline-cyan-700.disabled{color:#087990;background-color:transparent}}@media print{html .btn-outline-cyan-800,html[data-netbox-color-mode=dark] .btn-outline-cyan-800,html[data-netbox-color-mode=light] .btn-outline-cyan-800{color:#055160;border-color:#055160}html .btn-outline-cyan-800:hover,html[data-netbox-color-mode=dark] .btn-outline-cyan-800:hover,html[data-netbox-color-mode=light] .btn-outline-cyan-800:hover{color:#fff;background-color:#055160;border-color:#055160}.btn-check:focus+html .btn-outline-cyan-800,html .btn-outline-cyan-800:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-cyan-800,html[data-netbox-color-mode=dark] .btn-outline-cyan-800:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-cyan-800,html[data-netbox-color-mode=light] .btn-outline-cyan-800:focus{box-shadow:0 0 0 .25rem #05516080}.btn-check:checked+html .btn-outline-cyan-800,.btn-check:active+html .btn-outline-cyan-800,html .btn-outline-cyan-800:active,html .btn-outline-cyan-800.active,html .btn-outline-cyan-800.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-cyan-800,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-cyan-800,html[data-netbox-color-mode=dark] .btn-outline-cyan-800:active,html[data-netbox-color-mode=dark] .btn-outline-cyan-800.active,html[data-netbox-color-mode=dark] .btn-outline-cyan-800.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-cyan-800,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-cyan-800,html[data-netbox-color-mode=light] .btn-outline-cyan-800:active,html[data-netbox-color-mode=light] .btn-outline-cyan-800.active,html[data-netbox-color-mode=light] .btn-outline-cyan-800.dropdown-toggle.show{color:#fff;background-color:#055160;border-color:#055160}.btn-check:checked+html .btn-outline-cyan-800:focus,.btn-check:active+html .btn-outline-cyan-800:focus,html .btn-outline-cyan-800:active:focus,html .btn-outline-cyan-800.active:focus,html .btn-outline-cyan-800.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-cyan-800:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-cyan-800:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-800:active:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-800.active:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-800.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-cyan-800:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-cyan-800:focus,html[data-netbox-color-mode=light] .btn-outline-cyan-800:active:focus,html[data-netbox-color-mode=light] .btn-outline-cyan-800.active:focus,html[data-netbox-color-mode=light] .btn-outline-cyan-800.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #05516080}html .btn-outline-cyan-800:disabled,html .btn-outline-cyan-800.disabled,html[data-netbox-color-mode=dark] .btn-outline-cyan-800:disabled,html[data-netbox-color-mode=dark] .btn-outline-cyan-800.disabled,html[data-netbox-color-mode=light] .btn-outline-cyan-800:disabled,html[data-netbox-color-mode=light] .btn-outline-cyan-800.disabled{color:#055160;background-color:transparent}}@media print{html .btn-outline-cyan-900,html[data-netbox-color-mode=dark] .btn-outline-cyan-900,html[data-netbox-color-mode=light] .btn-outline-cyan-900{color:#032830;border-color:#032830}html .btn-outline-cyan-900:hover,html[data-netbox-color-mode=dark] .btn-outline-cyan-900:hover,html[data-netbox-color-mode=light] .btn-outline-cyan-900:hover{color:#fff;background-color:#032830;border-color:#032830}.btn-check:focus+html .btn-outline-cyan-900,html .btn-outline-cyan-900:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-cyan-900,html[data-netbox-color-mode=dark] .btn-outline-cyan-900:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-cyan-900,html[data-netbox-color-mode=light] .btn-outline-cyan-900:focus{box-shadow:0 0 0 .25rem #03283080}.btn-check:checked+html .btn-outline-cyan-900,.btn-check:active+html .btn-outline-cyan-900,html .btn-outline-cyan-900:active,html .btn-outline-cyan-900.active,html .btn-outline-cyan-900.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-cyan-900,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-cyan-900,html[data-netbox-color-mode=dark] .btn-outline-cyan-900:active,html[data-netbox-color-mode=dark] .btn-outline-cyan-900.active,html[data-netbox-color-mode=dark] .btn-outline-cyan-900.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-cyan-900,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-cyan-900,html[data-netbox-color-mode=light] .btn-outline-cyan-900:active,html[data-netbox-color-mode=light] .btn-outline-cyan-900.active,html[data-netbox-color-mode=light] .btn-outline-cyan-900.dropdown-toggle.show{color:#fff;background-color:#032830;border-color:#032830}.btn-check:checked+html .btn-outline-cyan-900:focus,.btn-check:active+html .btn-outline-cyan-900:focus,html .btn-outline-cyan-900:active:focus,html .btn-outline-cyan-900.active:focus,html .btn-outline-cyan-900.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-cyan-900:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-cyan-900:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-900:active:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-900.active:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-900.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-cyan-900:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-cyan-900:focus,html[data-netbox-color-mode=light] .btn-outline-cyan-900:active:focus,html[data-netbox-color-mode=light] .btn-outline-cyan-900.active:focus,html[data-netbox-color-mode=light] .btn-outline-cyan-900.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #03283080}html .btn-outline-cyan-900:disabled,html .btn-outline-cyan-900.disabled,html[data-netbox-color-mode=dark] .btn-outline-cyan-900:disabled,html[data-netbox-color-mode=dark] .btn-outline-cyan-900.disabled,html[data-netbox-color-mode=light] .btn-outline-cyan-900:disabled,html[data-netbox-color-mode=light] .btn-outline-cyan-900.disabled{color:#032830;background-color:transparent}}@media print{html .btn-outline-indigo-100,html[data-netbox-color-mode=dark] .btn-outline-indigo-100,html[data-netbox-color-mode=light] .btn-outline-indigo-100{color:#e0cffc;border-color:#e0cffc}html .btn-outline-indigo-100:hover,html[data-netbox-color-mode=dark] .btn-outline-indigo-100:hover,html[data-netbox-color-mode=light] .btn-outline-indigo-100:hover{color:#000;background-color:#e0cffc;border-color:#e0cffc}.btn-check:focus+html .btn-outline-indigo-100,html .btn-outline-indigo-100:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-indigo-100,html[data-netbox-color-mode=dark] .btn-outline-indigo-100:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-indigo-100,html[data-netbox-color-mode=light] .btn-outline-indigo-100:focus{box-shadow:0 0 0 .25rem #e0cffc80}.btn-check:checked+html .btn-outline-indigo-100,.btn-check:active+html .btn-outline-indigo-100,html .btn-outline-indigo-100:active,html .btn-outline-indigo-100.active,html .btn-outline-indigo-100.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-indigo-100,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-indigo-100,html[data-netbox-color-mode=dark] .btn-outline-indigo-100:active,html[data-netbox-color-mode=dark] .btn-outline-indigo-100.active,html[data-netbox-color-mode=dark] .btn-outline-indigo-100.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-indigo-100,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-indigo-100,html[data-netbox-color-mode=light] .btn-outline-indigo-100:active,html[data-netbox-color-mode=light] .btn-outline-indigo-100.active,html[data-netbox-color-mode=light] .btn-outline-indigo-100.dropdown-toggle.show{color:#000;background-color:#e0cffc;border-color:#e0cffc}.btn-check:checked+html .btn-outline-indigo-100:focus,.btn-check:active+html .btn-outline-indigo-100:focus,html .btn-outline-indigo-100:active:focus,html .btn-outline-indigo-100.active:focus,html .btn-outline-indigo-100.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-indigo-100:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-indigo-100:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-100:active:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-100.active:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-100.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-indigo-100:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-indigo-100:focus,html[data-netbox-color-mode=light] .btn-outline-indigo-100:active:focus,html[data-netbox-color-mode=light] .btn-outline-indigo-100.active:focus,html[data-netbox-color-mode=light] .btn-outline-indigo-100.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #e0cffc80}html .btn-outline-indigo-100:disabled,html .btn-outline-indigo-100.disabled,html[data-netbox-color-mode=dark] .btn-outline-indigo-100:disabled,html[data-netbox-color-mode=dark] .btn-outline-indigo-100.disabled,html[data-netbox-color-mode=light] .btn-outline-indigo-100:disabled,html[data-netbox-color-mode=light] .btn-outline-indigo-100.disabled{color:#e0cffc;background-color:transparent}}@media print{html .btn-outline-indigo-200,html[data-netbox-color-mode=dark] .btn-outline-indigo-200,html[data-netbox-color-mode=light] .btn-outline-indigo-200{color:#c29ffa;border-color:#c29ffa}html .btn-outline-indigo-200:hover,html[data-netbox-color-mode=dark] .btn-outline-indigo-200:hover,html[data-netbox-color-mode=light] .btn-outline-indigo-200:hover{color:#000;background-color:#c29ffa;border-color:#c29ffa}.btn-check:focus+html .btn-outline-indigo-200,html .btn-outline-indigo-200:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-indigo-200,html[data-netbox-color-mode=dark] .btn-outline-indigo-200:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-indigo-200,html[data-netbox-color-mode=light] .btn-outline-indigo-200:focus{box-shadow:0 0 0 .25rem #c29ffa80}.btn-check:checked+html .btn-outline-indigo-200,.btn-check:active+html .btn-outline-indigo-200,html .btn-outline-indigo-200:active,html .btn-outline-indigo-200.active,html .btn-outline-indigo-200.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-indigo-200,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-indigo-200,html[data-netbox-color-mode=dark] .btn-outline-indigo-200:active,html[data-netbox-color-mode=dark] .btn-outline-indigo-200.active,html[data-netbox-color-mode=dark] .btn-outline-indigo-200.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-indigo-200,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-indigo-200,html[data-netbox-color-mode=light] .btn-outline-indigo-200:active,html[data-netbox-color-mode=light] .btn-outline-indigo-200.active,html[data-netbox-color-mode=light] .btn-outline-indigo-200.dropdown-toggle.show{color:#000;background-color:#c29ffa;border-color:#c29ffa}.btn-check:checked+html .btn-outline-indigo-200:focus,.btn-check:active+html .btn-outline-indigo-200:focus,html .btn-outline-indigo-200:active:focus,html .btn-outline-indigo-200.active:focus,html .btn-outline-indigo-200.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-indigo-200:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-indigo-200:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-200:active:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-200.active:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-200.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-indigo-200:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-indigo-200:focus,html[data-netbox-color-mode=light] .btn-outline-indigo-200:active:focus,html[data-netbox-color-mode=light] .btn-outline-indigo-200.active:focus,html[data-netbox-color-mode=light] .btn-outline-indigo-200.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #c29ffa80}html .btn-outline-indigo-200:disabled,html .btn-outline-indigo-200.disabled,html[data-netbox-color-mode=dark] .btn-outline-indigo-200:disabled,html[data-netbox-color-mode=dark] .btn-outline-indigo-200.disabled,html[data-netbox-color-mode=light] .btn-outline-indigo-200:disabled,html[data-netbox-color-mode=light] .btn-outline-indigo-200.disabled{color:#c29ffa;background-color:transparent}}@media print{html .btn-outline-indigo-300,html[data-netbox-color-mode=dark] .btn-outline-indigo-300,html[data-netbox-color-mode=light] .btn-outline-indigo-300{color:#a370f7;border-color:#a370f7}html .btn-outline-indigo-300:hover,html[data-netbox-color-mode=dark] .btn-outline-indigo-300:hover,html[data-netbox-color-mode=light] .btn-outline-indigo-300:hover{color:#000;background-color:#a370f7;border-color:#a370f7}.btn-check:focus+html .btn-outline-indigo-300,html .btn-outline-indigo-300:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-indigo-300,html[data-netbox-color-mode=dark] .btn-outline-indigo-300:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-indigo-300,html[data-netbox-color-mode=light] .btn-outline-indigo-300:focus{box-shadow:0 0 0 .25rem #a370f780}.btn-check:checked+html .btn-outline-indigo-300,.btn-check:active+html .btn-outline-indigo-300,html .btn-outline-indigo-300:active,html .btn-outline-indigo-300.active,html .btn-outline-indigo-300.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-indigo-300,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-indigo-300,html[data-netbox-color-mode=dark] .btn-outline-indigo-300:active,html[data-netbox-color-mode=dark] .btn-outline-indigo-300.active,html[data-netbox-color-mode=dark] .btn-outline-indigo-300.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-indigo-300,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-indigo-300,html[data-netbox-color-mode=light] .btn-outline-indigo-300:active,html[data-netbox-color-mode=light] .btn-outline-indigo-300.active,html[data-netbox-color-mode=light] .btn-outline-indigo-300.dropdown-toggle.show{color:#000;background-color:#a370f7;border-color:#a370f7}.btn-check:checked+html .btn-outline-indigo-300:focus,.btn-check:active+html .btn-outline-indigo-300:focus,html .btn-outline-indigo-300:active:focus,html .btn-outline-indigo-300.active:focus,html .btn-outline-indigo-300.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-indigo-300:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-indigo-300:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-300:active:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-300.active:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-300.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-indigo-300:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-indigo-300:focus,html[data-netbox-color-mode=light] .btn-outline-indigo-300:active:focus,html[data-netbox-color-mode=light] .btn-outline-indigo-300.active:focus,html[data-netbox-color-mode=light] .btn-outline-indigo-300.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #a370f780}html .btn-outline-indigo-300:disabled,html .btn-outline-indigo-300.disabled,html[data-netbox-color-mode=dark] .btn-outline-indigo-300:disabled,html[data-netbox-color-mode=dark] .btn-outline-indigo-300.disabled,html[data-netbox-color-mode=light] .btn-outline-indigo-300:disabled,html[data-netbox-color-mode=light] .btn-outline-indigo-300.disabled{color:#a370f7;background-color:transparent}}@media print{html .btn-outline-indigo-400,html[data-netbox-color-mode=dark] .btn-outline-indigo-400,html[data-netbox-color-mode=light] .btn-outline-indigo-400{color:#8540f5;border-color:#8540f5}html .btn-outline-indigo-400:hover,html[data-netbox-color-mode=dark] .btn-outline-indigo-400:hover,html[data-netbox-color-mode=light] .btn-outline-indigo-400:hover{color:#fff;background-color:#8540f5;border-color:#8540f5}.btn-check:focus+html .btn-outline-indigo-400,html .btn-outline-indigo-400:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-indigo-400,html[data-netbox-color-mode=dark] .btn-outline-indigo-400:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-indigo-400,html[data-netbox-color-mode=light] .btn-outline-indigo-400:focus{box-shadow:0 0 0 .25rem #8540f580}.btn-check:checked+html .btn-outline-indigo-400,.btn-check:active+html .btn-outline-indigo-400,html .btn-outline-indigo-400:active,html .btn-outline-indigo-400.active,html .btn-outline-indigo-400.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-indigo-400,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-indigo-400,html[data-netbox-color-mode=dark] .btn-outline-indigo-400:active,html[data-netbox-color-mode=dark] .btn-outline-indigo-400.active,html[data-netbox-color-mode=dark] .btn-outline-indigo-400.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-indigo-400,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-indigo-400,html[data-netbox-color-mode=light] .btn-outline-indigo-400:active,html[data-netbox-color-mode=light] .btn-outline-indigo-400.active,html[data-netbox-color-mode=light] .btn-outline-indigo-400.dropdown-toggle.show{color:#fff;background-color:#8540f5;border-color:#8540f5}.btn-check:checked+html .btn-outline-indigo-400:focus,.btn-check:active+html .btn-outline-indigo-400:focus,html .btn-outline-indigo-400:active:focus,html .btn-outline-indigo-400.active:focus,html .btn-outline-indigo-400.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-indigo-400:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-indigo-400:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-400:active:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-400.active:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-400.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-indigo-400:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-indigo-400:focus,html[data-netbox-color-mode=light] .btn-outline-indigo-400:active:focus,html[data-netbox-color-mode=light] .btn-outline-indigo-400.active:focus,html[data-netbox-color-mode=light] .btn-outline-indigo-400.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #8540f580}html .btn-outline-indigo-400:disabled,html .btn-outline-indigo-400.disabled,html[data-netbox-color-mode=dark] .btn-outline-indigo-400:disabled,html[data-netbox-color-mode=dark] .btn-outline-indigo-400.disabled,html[data-netbox-color-mode=light] .btn-outline-indigo-400:disabled,html[data-netbox-color-mode=light] .btn-outline-indigo-400.disabled{color:#8540f5;background-color:transparent}}@media print{html .btn-outline-indigo-500,html[data-netbox-color-mode=dark] .btn-outline-indigo-500,html[data-netbox-color-mode=light] .btn-outline-indigo-500{color:#6610f2;border-color:#6610f2}html .btn-outline-indigo-500:hover,html[data-netbox-color-mode=dark] .btn-outline-indigo-500:hover,html[data-netbox-color-mode=light] .btn-outline-indigo-500:hover{color:#fff;background-color:#6610f2;border-color:#6610f2}.btn-check:focus+html .btn-outline-indigo-500,html .btn-outline-indigo-500:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-indigo-500,html[data-netbox-color-mode=dark] .btn-outline-indigo-500:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-indigo-500,html[data-netbox-color-mode=light] .btn-outline-indigo-500:focus{box-shadow:0 0 0 .25rem #6610f280}.btn-check:checked+html .btn-outline-indigo-500,.btn-check:active+html .btn-outline-indigo-500,html .btn-outline-indigo-500:active,html .btn-outline-indigo-500.active,html .btn-outline-indigo-500.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-indigo-500,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-indigo-500,html[data-netbox-color-mode=dark] .btn-outline-indigo-500:active,html[data-netbox-color-mode=dark] .btn-outline-indigo-500.active,html[data-netbox-color-mode=dark] .btn-outline-indigo-500.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-indigo-500,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-indigo-500,html[data-netbox-color-mode=light] .btn-outline-indigo-500:active,html[data-netbox-color-mode=light] .btn-outline-indigo-500.active,html[data-netbox-color-mode=light] .btn-outline-indigo-500.dropdown-toggle.show{color:#fff;background-color:#6610f2;border-color:#6610f2}.btn-check:checked+html .btn-outline-indigo-500:focus,.btn-check:active+html .btn-outline-indigo-500:focus,html .btn-outline-indigo-500:active:focus,html .btn-outline-indigo-500.active:focus,html .btn-outline-indigo-500.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-indigo-500:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-indigo-500:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-500:active:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-500.active:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-500.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-indigo-500:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-indigo-500:focus,html[data-netbox-color-mode=light] .btn-outline-indigo-500:active:focus,html[data-netbox-color-mode=light] .btn-outline-indigo-500.active:focus,html[data-netbox-color-mode=light] .btn-outline-indigo-500.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #6610f280}html .btn-outline-indigo-500:disabled,html .btn-outline-indigo-500.disabled,html[data-netbox-color-mode=dark] .btn-outline-indigo-500:disabled,html[data-netbox-color-mode=dark] .btn-outline-indigo-500.disabled,html[data-netbox-color-mode=light] .btn-outline-indigo-500:disabled,html[data-netbox-color-mode=light] .btn-outline-indigo-500.disabled{color:#6610f2;background-color:transparent}}@media print{html .btn-outline-indigo-600,html[data-netbox-color-mode=dark] .btn-outline-indigo-600,html[data-netbox-color-mode=light] .btn-outline-indigo-600{color:#520dc2;border-color:#520dc2}html .btn-outline-indigo-600:hover,html[data-netbox-color-mode=dark] .btn-outline-indigo-600:hover,html[data-netbox-color-mode=light] .btn-outline-indigo-600:hover{color:#fff;background-color:#520dc2;border-color:#520dc2}.btn-check:focus+html .btn-outline-indigo-600,html .btn-outline-indigo-600:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-indigo-600,html[data-netbox-color-mode=dark] .btn-outline-indigo-600:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-indigo-600,html[data-netbox-color-mode=light] .btn-outline-indigo-600:focus{box-shadow:0 0 0 .25rem #520dc280}.btn-check:checked+html .btn-outline-indigo-600,.btn-check:active+html .btn-outline-indigo-600,html .btn-outline-indigo-600:active,html .btn-outline-indigo-600.active,html .btn-outline-indigo-600.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-indigo-600,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-indigo-600,html[data-netbox-color-mode=dark] .btn-outline-indigo-600:active,html[data-netbox-color-mode=dark] .btn-outline-indigo-600.active,html[data-netbox-color-mode=dark] .btn-outline-indigo-600.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-indigo-600,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-indigo-600,html[data-netbox-color-mode=light] .btn-outline-indigo-600:active,html[data-netbox-color-mode=light] .btn-outline-indigo-600.active,html[data-netbox-color-mode=light] .btn-outline-indigo-600.dropdown-toggle.show{color:#fff;background-color:#520dc2;border-color:#520dc2}.btn-check:checked+html .btn-outline-indigo-600:focus,.btn-check:active+html .btn-outline-indigo-600:focus,html .btn-outline-indigo-600:active:focus,html .btn-outline-indigo-600.active:focus,html .btn-outline-indigo-600.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-indigo-600:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-indigo-600:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-600:active:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-600.active:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-600.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-indigo-600:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-indigo-600:focus,html[data-netbox-color-mode=light] .btn-outline-indigo-600:active:focus,html[data-netbox-color-mode=light] .btn-outline-indigo-600.active:focus,html[data-netbox-color-mode=light] .btn-outline-indigo-600.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #520dc280}html .btn-outline-indigo-600:disabled,html .btn-outline-indigo-600.disabled,html[data-netbox-color-mode=dark] .btn-outline-indigo-600:disabled,html[data-netbox-color-mode=dark] .btn-outline-indigo-600.disabled,html[data-netbox-color-mode=light] .btn-outline-indigo-600:disabled,html[data-netbox-color-mode=light] .btn-outline-indigo-600.disabled{color:#520dc2;background-color:transparent}}@media print{html .btn-outline-indigo-700,html[data-netbox-color-mode=dark] .btn-outline-indigo-700,html[data-netbox-color-mode=light] .btn-outline-indigo-700{color:#3d0a91;border-color:#3d0a91}html .btn-outline-indigo-700:hover,html[data-netbox-color-mode=dark] .btn-outline-indigo-700:hover,html[data-netbox-color-mode=light] .btn-outline-indigo-700:hover{color:#fff;background-color:#3d0a91;border-color:#3d0a91}.btn-check:focus+html .btn-outline-indigo-700,html .btn-outline-indigo-700:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-indigo-700,html[data-netbox-color-mode=dark] .btn-outline-indigo-700:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-indigo-700,html[data-netbox-color-mode=light] .btn-outline-indigo-700:focus{box-shadow:0 0 0 .25rem #3d0a9180}.btn-check:checked+html .btn-outline-indigo-700,.btn-check:active+html .btn-outline-indigo-700,html .btn-outline-indigo-700:active,html .btn-outline-indigo-700.active,html .btn-outline-indigo-700.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-indigo-700,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-indigo-700,html[data-netbox-color-mode=dark] .btn-outline-indigo-700:active,html[data-netbox-color-mode=dark] .btn-outline-indigo-700.active,html[data-netbox-color-mode=dark] .btn-outline-indigo-700.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-indigo-700,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-indigo-700,html[data-netbox-color-mode=light] .btn-outline-indigo-700:active,html[data-netbox-color-mode=light] .btn-outline-indigo-700.active,html[data-netbox-color-mode=light] .btn-outline-indigo-700.dropdown-toggle.show{color:#fff;background-color:#3d0a91;border-color:#3d0a91}.btn-check:checked+html .btn-outline-indigo-700:focus,.btn-check:active+html .btn-outline-indigo-700:focus,html .btn-outline-indigo-700:active:focus,html .btn-outline-indigo-700.active:focus,html .btn-outline-indigo-700.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-indigo-700:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-indigo-700:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-700:active:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-700.active:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-700.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-indigo-700:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-indigo-700:focus,html[data-netbox-color-mode=light] .btn-outline-indigo-700:active:focus,html[data-netbox-color-mode=light] .btn-outline-indigo-700.active:focus,html[data-netbox-color-mode=light] .btn-outline-indigo-700.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #3d0a9180}html .btn-outline-indigo-700:disabled,html .btn-outline-indigo-700.disabled,html[data-netbox-color-mode=dark] .btn-outline-indigo-700:disabled,html[data-netbox-color-mode=dark] .btn-outline-indigo-700.disabled,html[data-netbox-color-mode=light] .btn-outline-indigo-700:disabled,html[data-netbox-color-mode=light] .btn-outline-indigo-700.disabled{color:#3d0a91;background-color:transparent}}@media print{html .btn-outline-indigo-800,html[data-netbox-color-mode=dark] .btn-outline-indigo-800,html[data-netbox-color-mode=light] .btn-outline-indigo-800{color:#290661;border-color:#290661}html .btn-outline-indigo-800:hover,html[data-netbox-color-mode=dark] .btn-outline-indigo-800:hover,html[data-netbox-color-mode=light] .btn-outline-indigo-800:hover{color:#fff;background-color:#290661;border-color:#290661}.btn-check:focus+html .btn-outline-indigo-800,html .btn-outline-indigo-800:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-indigo-800,html[data-netbox-color-mode=dark] .btn-outline-indigo-800:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-indigo-800,html[data-netbox-color-mode=light] .btn-outline-indigo-800:focus{box-shadow:0 0 0 .25rem #29066180}.btn-check:checked+html .btn-outline-indigo-800,.btn-check:active+html .btn-outline-indigo-800,html .btn-outline-indigo-800:active,html .btn-outline-indigo-800.active,html .btn-outline-indigo-800.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-indigo-800,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-indigo-800,html[data-netbox-color-mode=dark] .btn-outline-indigo-800:active,html[data-netbox-color-mode=dark] .btn-outline-indigo-800.active,html[data-netbox-color-mode=dark] .btn-outline-indigo-800.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-indigo-800,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-indigo-800,html[data-netbox-color-mode=light] .btn-outline-indigo-800:active,html[data-netbox-color-mode=light] .btn-outline-indigo-800.active,html[data-netbox-color-mode=light] .btn-outline-indigo-800.dropdown-toggle.show{color:#fff;background-color:#290661;border-color:#290661}.btn-check:checked+html .btn-outline-indigo-800:focus,.btn-check:active+html .btn-outline-indigo-800:focus,html .btn-outline-indigo-800:active:focus,html .btn-outline-indigo-800.active:focus,html .btn-outline-indigo-800.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-indigo-800:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-indigo-800:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-800:active:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-800.active:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-800.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-indigo-800:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-indigo-800:focus,html[data-netbox-color-mode=light] .btn-outline-indigo-800:active:focus,html[data-netbox-color-mode=light] .btn-outline-indigo-800.active:focus,html[data-netbox-color-mode=light] .btn-outline-indigo-800.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #29066180}html .btn-outline-indigo-800:disabled,html .btn-outline-indigo-800.disabled,html[data-netbox-color-mode=dark] .btn-outline-indigo-800:disabled,html[data-netbox-color-mode=dark] .btn-outline-indigo-800.disabled,html[data-netbox-color-mode=light] .btn-outline-indigo-800:disabled,html[data-netbox-color-mode=light] .btn-outline-indigo-800.disabled{color:#290661;background-color:transparent}}@media print{html .btn-outline-indigo-900,html[data-netbox-color-mode=dark] .btn-outline-indigo-900,html[data-netbox-color-mode=light] .btn-outline-indigo-900{color:#140330;border-color:#140330}html .btn-outline-indigo-900:hover,html[data-netbox-color-mode=dark] .btn-outline-indigo-900:hover,html[data-netbox-color-mode=light] .btn-outline-indigo-900:hover{color:#fff;background-color:#140330;border-color:#140330}.btn-check:focus+html .btn-outline-indigo-900,html .btn-outline-indigo-900:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-indigo-900,html[data-netbox-color-mode=dark] .btn-outline-indigo-900:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-indigo-900,html[data-netbox-color-mode=light] .btn-outline-indigo-900:focus{box-shadow:0 0 0 .25rem #14033080}.btn-check:checked+html .btn-outline-indigo-900,.btn-check:active+html .btn-outline-indigo-900,html .btn-outline-indigo-900:active,html .btn-outline-indigo-900.active,html .btn-outline-indigo-900.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-indigo-900,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-indigo-900,html[data-netbox-color-mode=dark] .btn-outline-indigo-900:active,html[data-netbox-color-mode=dark] .btn-outline-indigo-900.active,html[data-netbox-color-mode=dark] .btn-outline-indigo-900.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-indigo-900,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-indigo-900,html[data-netbox-color-mode=light] .btn-outline-indigo-900:active,html[data-netbox-color-mode=light] .btn-outline-indigo-900.active,html[data-netbox-color-mode=light] .btn-outline-indigo-900.dropdown-toggle.show{color:#fff;background-color:#140330;border-color:#140330}.btn-check:checked+html .btn-outline-indigo-900:focus,.btn-check:active+html .btn-outline-indigo-900:focus,html .btn-outline-indigo-900:active:focus,html .btn-outline-indigo-900.active:focus,html .btn-outline-indigo-900.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-indigo-900:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-indigo-900:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-900:active:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-900.active:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-900.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-indigo-900:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-indigo-900:focus,html[data-netbox-color-mode=light] .btn-outline-indigo-900:active:focus,html[data-netbox-color-mode=light] .btn-outline-indigo-900.active:focus,html[data-netbox-color-mode=light] .btn-outline-indigo-900.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #14033080}html .btn-outline-indigo-900:disabled,html .btn-outline-indigo-900.disabled,html[data-netbox-color-mode=dark] .btn-outline-indigo-900:disabled,html[data-netbox-color-mode=dark] .btn-outline-indigo-900.disabled,html[data-netbox-color-mode=light] .btn-outline-indigo-900:disabled,html[data-netbox-color-mode=light] .btn-outline-indigo-900.disabled{color:#140330;background-color:transparent}}@media print{html .btn-outline-purple-100,html[data-netbox-color-mode=dark] .btn-outline-purple-100,html[data-netbox-color-mode=light] .btn-outline-purple-100{color:#e2d9f3;border-color:#e2d9f3}html .btn-outline-purple-100:hover,html[data-netbox-color-mode=dark] .btn-outline-purple-100:hover,html[data-netbox-color-mode=light] .btn-outline-purple-100:hover{color:#000;background-color:#e2d9f3;border-color:#e2d9f3}.btn-check:focus+html .btn-outline-purple-100,html .btn-outline-purple-100:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-purple-100,html[data-netbox-color-mode=dark] .btn-outline-purple-100:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-purple-100,html[data-netbox-color-mode=light] .btn-outline-purple-100:focus{box-shadow:0 0 0 .25rem #e2d9f380}.btn-check:checked+html .btn-outline-purple-100,.btn-check:active+html .btn-outline-purple-100,html .btn-outline-purple-100:active,html .btn-outline-purple-100.active,html .btn-outline-purple-100.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-purple-100,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-purple-100,html[data-netbox-color-mode=dark] .btn-outline-purple-100:active,html[data-netbox-color-mode=dark] .btn-outline-purple-100.active,html[data-netbox-color-mode=dark] .btn-outline-purple-100.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-purple-100,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-purple-100,html[data-netbox-color-mode=light] .btn-outline-purple-100:active,html[data-netbox-color-mode=light] .btn-outline-purple-100.active,html[data-netbox-color-mode=light] .btn-outline-purple-100.dropdown-toggle.show{color:#000;background-color:#e2d9f3;border-color:#e2d9f3}.btn-check:checked+html .btn-outline-purple-100:focus,.btn-check:active+html .btn-outline-purple-100:focus,html .btn-outline-purple-100:active:focus,html .btn-outline-purple-100.active:focus,html .btn-outline-purple-100.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-purple-100:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-purple-100:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-100:active:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-100.active:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-100.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-purple-100:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-purple-100:focus,html[data-netbox-color-mode=light] .btn-outline-purple-100:active:focus,html[data-netbox-color-mode=light] .btn-outline-purple-100.active:focus,html[data-netbox-color-mode=light] .btn-outline-purple-100.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #e2d9f380}html .btn-outline-purple-100:disabled,html .btn-outline-purple-100.disabled,html[data-netbox-color-mode=dark] .btn-outline-purple-100:disabled,html[data-netbox-color-mode=dark] .btn-outline-purple-100.disabled,html[data-netbox-color-mode=light] .btn-outline-purple-100:disabled,html[data-netbox-color-mode=light] .btn-outline-purple-100.disabled{color:#e2d9f3;background-color:transparent}}@media print{html .btn-outline-purple-200,html[data-netbox-color-mode=dark] .btn-outline-purple-200,html[data-netbox-color-mode=light] .btn-outline-purple-200{color:#c5b3e6;border-color:#c5b3e6}html .btn-outline-purple-200:hover,html[data-netbox-color-mode=dark] .btn-outline-purple-200:hover,html[data-netbox-color-mode=light] .btn-outline-purple-200:hover{color:#000;background-color:#c5b3e6;border-color:#c5b3e6}.btn-check:focus+html .btn-outline-purple-200,html .btn-outline-purple-200:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-purple-200,html[data-netbox-color-mode=dark] .btn-outline-purple-200:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-purple-200,html[data-netbox-color-mode=light] .btn-outline-purple-200:focus{box-shadow:0 0 0 .25rem #c5b3e680}.btn-check:checked+html .btn-outline-purple-200,.btn-check:active+html .btn-outline-purple-200,html .btn-outline-purple-200:active,html .btn-outline-purple-200.active,html .btn-outline-purple-200.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-purple-200,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-purple-200,html[data-netbox-color-mode=dark] .btn-outline-purple-200:active,html[data-netbox-color-mode=dark] .btn-outline-purple-200.active,html[data-netbox-color-mode=dark] .btn-outline-purple-200.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-purple-200,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-purple-200,html[data-netbox-color-mode=light] .btn-outline-purple-200:active,html[data-netbox-color-mode=light] .btn-outline-purple-200.active,html[data-netbox-color-mode=light] .btn-outline-purple-200.dropdown-toggle.show{color:#000;background-color:#c5b3e6;border-color:#c5b3e6}.btn-check:checked+html .btn-outline-purple-200:focus,.btn-check:active+html .btn-outline-purple-200:focus,html .btn-outline-purple-200:active:focus,html .btn-outline-purple-200.active:focus,html .btn-outline-purple-200.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-purple-200:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-purple-200:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-200:active:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-200.active:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-200.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-purple-200:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-purple-200:focus,html[data-netbox-color-mode=light] .btn-outline-purple-200:active:focus,html[data-netbox-color-mode=light] .btn-outline-purple-200.active:focus,html[data-netbox-color-mode=light] .btn-outline-purple-200.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #c5b3e680}html .btn-outline-purple-200:disabled,html .btn-outline-purple-200.disabled,html[data-netbox-color-mode=dark] .btn-outline-purple-200:disabled,html[data-netbox-color-mode=dark] .btn-outline-purple-200.disabled,html[data-netbox-color-mode=light] .btn-outline-purple-200:disabled,html[data-netbox-color-mode=light] .btn-outline-purple-200.disabled{color:#c5b3e6;background-color:transparent}}@media print{html .btn-outline-purple-300,html[data-netbox-color-mode=dark] .btn-outline-purple-300,html[data-netbox-color-mode=light] .btn-outline-purple-300{color:#a98eda;border-color:#a98eda}html .btn-outline-purple-300:hover,html[data-netbox-color-mode=dark] .btn-outline-purple-300:hover,html[data-netbox-color-mode=light] .btn-outline-purple-300:hover{color:#000;background-color:#a98eda;border-color:#a98eda}.btn-check:focus+html .btn-outline-purple-300,html .btn-outline-purple-300:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-purple-300,html[data-netbox-color-mode=dark] .btn-outline-purple-300:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-purple-300,html[data-netbox-color-mode=light] .btn-outline-purple-300:focus{box-shadow:0 0 0 .25rem #a98eda80}.btn-check:checked+html .btn-outline-purple-300,.btn-check:active+html .btn-outline-purple-300,html .btn-outline-purple-300:active,html .btn-outline-purple-300.active,html .btn-outline-purple-300.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-purple-300,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-purple-300,html[data-netbox-color-mode=dark] .btn-outline-purple-300:active,html[data-netbox-color-mode=dark] .btn-outline-purple-300.active,html[data-netbox-color-mode=dark] .btn-outline-purple-300.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-purple-300,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-purple-300,html[data-netbox-color-mode=light] .btn-outline-purple-300:active,html[data-netbox-color-mode=light] .btn-outline-purple-300.active,html[data-netbox-color-mode=light] .btn-outline-purple-300.dropdown-toggle.show{color:#000;background-color:#a98eda;border-color:#a98eda}.btn-check:checked+html .btn-outline-purple-300:focus,.btn-check:active+html .btn-outline-purple-300:focus,html .btn-outline-purple-300:active:focus,html .btn-outline-purple-300.active:focus,html .btn-outline-purple-300.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-purple-300:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-purple-300:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-300:active:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-300.active:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-300.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-purple-300:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-purple-300:focus,html[data-netbox-color-mode=light] .btn-outline-purple-300:active:focus,html[data-netbox-color-mode=light] .btn-outline-purple-300.active:focus,html[data-netbox-color-mode=light] .btn-outline-purple-300.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #a98eda80}html .btn-outline-purple-300:disabled,html .btn-outline-purple-300.disabled,html[data-netbox-color-mode=dark] .btn-outline-purple-300:disabled,html[data-netbox-color-mode=dark] .btn-outline-purple-300.disabled,html[data-netbox-color-mode=light] .btn-outline-purple-300:disabled,html[data-netbox-color-mode=light] .btn-outline-purple-300.disabled{color:#a98eda;background-color:transparent}}@media print{html .btn-outline-purple-400,html[data-netbox-color-mode=dark] .btn-outline-purple-400,html[data-netbox-color-mode=light] .btn-outline-purple-400{color:#8c68cd;border-color:#8c68cd}html .btn-outline-purple-400:hover,html[data-netbox-color-mode=dark] .btn-outline-purple-400:hover,html[data-netbox-color-mode=light] .btn-outline-purple-400:hover{color:#000;background-color:#8c68cd;border-color:#8c68cd}.btn-check:focus+html .btn-outline-purple-400,html .btn-outline-purple-400:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-purple-400,html[data-netbox-color-mode=dark] .btn-outline-purple-400:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-purple-400,html[data-netbox-color-mode=light] .btn-outline-purple-400:focus{box-shadow:0 0 0 .25rem #8c68cd80}.btn-check:checked+html .btn-outline-purple-400,.btn-check:active+html .btn-outline-purple-400,html .btn-outline-purple-400:active,html .btn-outline-purple-400.active,html .btn-outline-purple-400.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-purple-400,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-purple-400,html[data-netbox-color-mode=dark] .btn-outline-purple-400:active,html[data-netbox-color-mode=dark] .btn-outline-purple-400.active,html[data-netbox-color-mode=dark] .btn-outline-purple-400.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-purple-400,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-purple-400,html[data-netbox-color-mode=light] .btn-outline-purple-400:active,html[data-netbox-color-mode=light] .btn-outline-purple-400.active,html[data-netbox-color-mode=light] .btn-outline-purple-400.dropdown-toggle.show{color:#000;background-color:#8c68cd;border-color:#8c68cd}.btn-check:checked+html .btn-outline-purple-400:focus,.btn-check:active+html .btn-outline-purple-400:focus,html .btn-outline-purple-400:active:focus,html .btn-outline-purple-400.active:focus,html .btn-outline-purple-400.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-purple-400:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-purple-400:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-400:active:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-400.active:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-400.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-purple-400:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-purple-400:focus,html[data-netbox-color-mode=light] .btn-outline-purple-400:active:focus,html[data-netbox-color-mode=light] .btn-outline-purple-400.active:focus,html[data-netbox-color-mode=light] .btn-outline-purple-400.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #8c68cd80}html .btn-outline-purple-400:disabled,html .btn-outline-purple-400.disabled,html[data-netbox-color-mode=dark] .btn-outline-purple-400:disabled,html[data-netbox-color-mode=dark] .btn-outline-purple-400.disabled,html[data-netbox-color-mode=light] .btn-outline-purple-400:disabled,html[data-netbox-color-mode=light] .btn-outline-purple-400.disabled{color:#8c68cd;background-color:transparent}}@media print{html .btn-outline-purple-500,html[data-netbox-color-mode=dark] .btn-outline-purple-500,html[data-netbox-color-mode=light] .btn-outline-purple-500{color:#6f42c1;border-color:#6f42c1}html .btn-outline-purple-500:hover,html[data-netbox-color-mode=dark] .btn-outline-purple-500:hover,html[data-netbox-color-mode=light] .btn-outline-purple-500:hover{color:#fff;background-color:#6f42c1;border-color:#6f42c1}.btn-check:focus+html .btn-outline-purple-500,html .btn-outline-purple-500:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-purple-500,html[data-netbox-color-mode=dark] .btn-outline-purple-500:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-purple-500,html[data-netbox-color-mode=light] .btn-outline-purple-500:focus{box-shadow:0 0 0 .25rem #6f42c180}.btn-check:checked+html .btn-outline-purple-500,.btn-check:active+html .btn-outline-purple-500,html .btn-outline-purple-500:active,html .btn-outline-purple-500.active,html .btn-outline-purple-500.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-purple-500,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-purple-500,html[data-netbox-color-mode=dark] .btn-outline-purple-500:active,html[data-netbox-color-mode=dark] .btn-outline-purple-500.active,html[data-netbox-color-mode=dark] .btn-outline-purple-500.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-purple-500,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-purple-500,html[data-netbox-color-mode=light] .btn-outline-purple-500:active,html[data-netbox-color-mode=light] .btn-outline-purple-500.active,html[data-netbox-color-mode=light] .btn-outline-purple-500.dropdown-toggle.show{color:#fff;background-color:#6f42c1;border-color:#6f42c1}.btn-check:checked+html .btn-outline-purple-500:focus,.btn-check:active+html .btn-outline-purple-500:focus,html .btn-outline-purple-500:active:focus,html .btn-outline-purple-500.active:focus,html .btn-outline-purple-500.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-purple-500:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-purple-500:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-500:active:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-500.active:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-500.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-purple-500:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-purple-500:focus,html[data-netbox-color-mode=light] .btn-outline-purple-500:active:focus,html[data-netbox-color-mode=light] .btn-outline-purple-500.active:focus,html[data-netbox-color-mode=light] .btn-outline-purple-500.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #6f42c180}html .btn-outline-purple-500:disabled,html .btn-outline-purple-500.disabled,html[data-netbox-color-mode=dark] .btn-outline-purple-500:disabled,html[data-netbox-color-mode=dark] .btn-outline-purple-500.disabled,html[data-netbox-color-mode=light] .btn-outline-purple-500:disabled,html[data-netbox-color-mode=light] .btn-outline-purple-500.disabled{color:#6f42c1;background-color:transparent}}@media print{html .btn-outline-purple-600,html[data-netbox-color-mode=dark] .btn-outline-purple-600,html[data-netbox-color-mode=light] .btn-outline-purple-600{color:#59359a;border-color:#59359a}html .btn-outline-purple-600:hover,html[data-netbox-color-mode=dark] .btn-outline-purple-600:hover,html[data-netbox-color-mode=light] .btn-outline-purple-600:hover{color:#fff;background-color:#59359a;border-color:#59359a}.btn-check:focus+html .btn-outline-purple-600,html .btn-outline-purple-600:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-purple-600,html[data-netbox-color-mode=dark] .btn-outline-purple-600:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-purple-600,html[data-netbox-color-mode=light] .btn-outline-purple-600:focus{box-shadow:0 0 0 .25rem #59359a80}.btn-check:checked+html .btn-outline-purple-600,.btn-check:active+html .btn-outline-purple-600,html .btn-outline-purple-600:active,html .btn-outline-purple-600.active,html .btn-outline-purple-600.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-purple-600,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-purple-600,html[data-netbox-color-mode=dark] .btn-outline-purple-600:active,html[data-netbox-color-mode=dark] .btn-outline-purple-600.active,html[data-netbox-color-mode=dark] .btn-outline-purple-600.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-purple-600,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-purple-600,html[data-netbox-color-mode=light] .btn-outline-purple-600:active,html[data-netbox-color-mode=light] .btn-outline-purple-600.active,html[data-netbox-color-mode=light] .btn-outline-purple-600.dropdown-toggle.show{color:#fff;background-color:#59359a;border-color:#59359a}.btn-check:checked+html .btn-outline-purple-600:focus,.btn-check:active+html .btn-outline-purple-600:focus,html .btn-outline-purple-600:active:focus,html .btn-outline-purple-600.active:focus,html .btn-outline-purple-600.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-purple-600:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-purple-600:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-600:active:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-600.active:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-600.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-purple-600:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-purple-600:focus,html[data-netbox-color-mode=light] .btn-outline-purple-600:active:focus,html[data-netbox-color-mode=light] .btn-outline-purple-600.active:focus,html[data-netbox-color-mode=light] .btn-outline-purple-600.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #59359a80}html .btn-outline-purple-600:disabled,html .btn-outline-purple-600.disabled,html[data-netbox-color-mode=dark] .btn-outline-purple-600:disabled,html[data-netbox-color-mode=dark] .btn-outline-purple-600.disabled,html[data-netbox-color-mode=light] .btn-outline-purple-600:disabled,html[data-netbox-color-mode=light] .btn-outline-purple-600.disabled{color:#59359a;background-color:transparent}}@media print{html .btn-outline-purple-700,html[data-netbox-color-mode=dark] .btn-outline-purple-700,html[data-netbox-color-mode=light] .btn-outline-purple-700{color:#432874;border-color:#432874}html .btn-outline-purple-700:hover,html[data-netbox-color-mode=dark] .btn-outline-purple-700:hover,html[data-netbox-color-mode=light] .btn-outline-purple-700:hover{color:#fff;background-color:#432874;border-color:#432874}.btn-check:focus+html .btn-outline-purple-700,html .btn-outline-purple-700:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-purple-700,html[data-netbox-color-mode=dark] .btn-outline-purple-700:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-purple-700,html[data-netbox-color-mode=light] .btn-outline-purple-700:focus{box-shadow:0 0 0 .25rem #43287480}.btn-check:checked+html .btn-outline-purple-700,.btn-check:active+html .btn-outline-purple-700,html .btn-outline-purple-700:active,html .btn-outline-purple-700.active,html .btn-outline-purple-700.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-purple-700,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-purple-700,html[data-netbox-color-mode=dark] .btn-outline-purple-700:active,html[data-netbox-color-mode=dark] .btn-outline-purple-700.active,html[data-netbox-color-mode=dark] .btn-outline-purple-700.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-purple-700,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-purple-700,html[data-netbox-color-mode=light] .btn-outline-purple-700:active,html[data-netbox-color-mode=light] .btn-outline-purple-700.active,html[data-netbox-color-mode=light] .btn-outline-purple-700.dropdown-toggle.show{color:#fff;background-color:#432874;border-color:#432874}.btn-check:checked+html .btn-outline-purple-700:focus,.btn-check:active+html .btn-outline-purple-700:focus,html .btn-outline-purple-700:active:focus,html .btn-outline-purple-700.active:focus,html .btn-outline-purple-700.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-purple-700:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-purple-700:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-700:active:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-700.active:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-700.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-purple-700:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-purple-700:focus,html[data-netbox-color-mode=light] .btn-outline-purple-700:active:focus,html[data-netbox-color-mode=light] .btn-outline-purple-700.active:focus,html[data-netbox-color-mode=light] .btn-outline-purple-700.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #43287480}html .btn-outline-purple-700:disabled,html .btn-outline-purple-700.disabled,html[data-netbox-color-mode=dark] .btn-outline-purple-700:disabled,html[data-netbox-color-mode=dark] .btn-outline-purple-700.disabled,html[data-netbox-color-mode=light] .btn-outline-purple-700:disabled,html[data-netbox-color-mode=light] .btn-outline-purple-700.disabled{color:#432874;background-color:transparent}}@media print{html .btn-outline-purple-800,html[data-netbox-color-mode=dark] .btn-outline-purple-800,html[data-netbox-color-mode=light] .btn-outline-purple-800{color:#2c1a4d;border-color:#2c1a4d}html .btn-outline-purple-800:hover,html[data-netbox-color-mode=dark] .btn-outline-purple-800:hover,html[data-netbox-color-mode=light] .btn-outline-purple-800:hover{color:#fff;background-color:#2c1a4d;border-color:#2c1a4d}.btn-check:focus+html .btn-outline-purple-800,html .btn-outline-purple-800:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-purple-800,html[data-netbox-color-mode=dark] .btn-outline-purple-800:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-purple-800,html[data-netbox-color-mode=light] .btn-outline-purple-800:focus{box-shadow:0 0 0 .25rem #2c1a4d80}.btn-check:checked+html .btn-outline-purple-800,.btn-check:active+html .btn-outline-purple-800,html .btn-outline-purple-800:active,html .btn-outline-purple-800.active,html .btn-outline-purple-800.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-purple-800,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-purple-800,html[data-netbox-color-mode=dark] .btn-outline-purple-800:active,html[data-netbox-color-mode=dark] .btn-outline-purple-800.active,html[data-netbox-color-mode=dark] .btn-outline-purple-800.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-purple-800,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-purple-800,html[data-netbox-color-mode=light] .btn-outline-purple-800:active,html[data-netbox-color-mode=light] .btn-outline-purple-800.active,html[data-netbox-color-mode=light] .btn-outline-purple-800.dropdown-toggle.show{color:#fff;background-color:#2c1a4d;border-color:#2c1a4d}.btn-check:checked+html .btn-outline-purple-800:focus,.btn-check:active+html .btn-outline-purple-800:focus,html .btn-outline-purple-800:active:focus,html .btn-outline-purple-800.active:focus,html .btn-outline-purple-800.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-purple-800:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-purple-800:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-800:active:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-800.active:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-800.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-purple-800:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-purple-800:focus,html[data-netbox-color-mode=light] .btn-outline-purple-800:active:focus,html[data-netbox-color-mode=light] .btn-outline-purple-800.active:focus,html[data-netbox-color-mode=light] .btn-outline-purple-800.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #2c1a4d80}html .btn-outline-purple-800:disabled,html .btn-outline-purple-800.disabled,html[data-netbox-color-mode=dark] .btn-outline-purple-800:disabled,html[data-netbox-color-mode=dark] .btn-outline-purple-800.disabled,html[data-netbox-color-mode=light] .btn-outline-purple-800:disabled,html[data-netbox-color-mode=light] .btn-outline-purple-800.disabled{color:#2c1a4d;background-color:transparent}}@media print{html .btn-outline-purple-900,html[data-netbox-color-mode=dark] .btn-outline-purple-900,html[data-netbox-color-mode=light] .btn-outline-purple-900{color:#160d27;border-color:#160d27}html .btn-outline-purple-900:hover,html[data-netbox-color-mode=dark] .btn-outline-purple-900:hover,html[data-netbox-color-mode=light] .btn-outline-purple-900:hover{color:#fff;background-color:#160d27;border-color:#160d27}.btn-check:focus+html .btn-outline-purple-900,html .btn-outline-purple-900:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-purple-900,html[data-netbox-color-mode=dark] .btn-outline-purple-900:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-purple-900,html[data-netbox-color-mode=light] .btn-outline-purple-900:focus{box-shadow:0 0 0 .25rem #160d2780}.btn-check:checked+html .btn-outline-purple-900,.btn-check:active+html .btn-outline-purple-900,html .btn-outline-purple-900:active,html .btn-outline-purple-900.active,html .btn-outline-purple-900.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-purple-900,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-purple-900,html[data-netbox-color-mode=dark] .btn-outline-purple-900:active,html[data-netbox-color-mode=dark] .btn-outline-purple-900.active,html[data-netbox-color-mode=dark] .btn-outline-purple-900.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-purple-900,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-purple-900,html[data-netbox-color-mode=light] .btn-outline-purple-900:active,html[data-netbox-color-mode=light] .btn-outline-purple-900.active,html[data-netbox-color-mode=light] .btn-outline-purple-900.dropdown-toggle.show{color:#fff;background-color:#160d27;border-color:#160d27}.btn-check:checked+html .btn-outline-purple-900:focus,.btn-check:active+html .btn-outline-purple-900:focus,html .btn-outline-purple-900:active:focus,html .btn-outline-purple-900.active:focus,html .btn-outline-purple-900.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-purple-900:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-purple-900:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-900:active:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-900.active:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-900.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-purple-900:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-purple-900:focus,html[data-netbox-color-mode=light] .btn-outline-purple-900:active:focus,html[data-netbox-color-mode=light] .btn-outline-purple-900.active:focus,html[data-netbox-color-mode=light] .btn-outline-purple-900.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #160d2780}html .btn-outline-purple-900:disabled,html .btn-outline-purple-900.disabled,html[data-netbox-color-mode=dark] .btn-outline-purple-900:disabled,html[data-netbox-color-mode=dark] .btn-outline-purple-900.disabled,html[data-netbox-color-mode=light] .btn-outline-purple-900:disabled,html[data-netbox-color-mode=light] .btn-outline-purple-900.disabled{color:#160d27;background-color:transparent}}@media print{html .btn-outline-pink-100,html[data-netbox-color-mode=dark] .btn-outline-pink-100,html[data-netbox-color-mode=light] .btn-outline-pink-100{color:#f7d6e6;border-color:#f7d6e6}html .btn-outline-pink-100:hover,html[data-netbox-color-mode=dark] .btn-outline-pink-100:hover,html[data-netbox-color-mode=light] .btn-outline-pink-100:hover{color:#000;background-color:#f7d6e6;border-color:#f7d6e6}.btn-check:focus+html .btn-outline-pink-100,html .btn-outline-pink-100:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-pink-100,html[data-netbox-color-mode=dark] .btn-outline-pink-100:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-pink-100,html[data-netbox-color-mode=light] .btn-outline-pink-100:focus{box-shadow:0 0 0 .25rem #f7d6e680}.btn-check:checked+html .btn-outline-pink-100,.btn-check:active+html .btn-outline-pink-100,html .btn-outline-pink-100:active,html .btn-outline-pink-100.active,html .btn-outline-pink-100.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-pink-100,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-pink-100,html[data-netbox-color-mode=dark] .btn-outline-pink-100:active,html[data-netbox-color-mode=dark] .btn-outline-pink-100.active,html[data-netbox-color-mode=dark] .btn-outline-pink-100.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-pink-100,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-pink-100,html[data-netbox-color-mode=light] .btn-outline-pink-100:active,html[data-netbox-color-mode=light] .btn-outline-pink-100.active,html[data-netbox-color-mode=light] .btn-outline-pink-100.dropdown-toggle.show{color:#000;background-color:#f7d6e6;border-color:#f7d6e6}.btn-check:checked+html .btn-outline-pink-100:focus,.btn-check:active+html .btn-outline-pink-100:focus,html .btn-outline-pink-100:active:focus,html .btn-outline-pink-100.active:focus,html .btn-outline-pink-100.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-pink-100:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-pink-100:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-100:active:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-100.active:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-100.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-pink-100:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-pink-100:focus,html[data-netbox-color-mode=light] .btn-outline-pink-100:active:focus,html[data-netbox-color-mode=light] .btn-outline-pink-100.active:focus,html[data-netbox-color-mode=light] .btn-outline-pink-100.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #f7d6e680}html .btn-outline-pink-100:disabled,html .btn-outline-pink-100.disabled,html[data-netbox-color-mode=dark] .btn-outline-pink-100:disabled,html[data-netbox-color-mode=dark] .btn-outline-pink-100.disabled,html[data-netbox-color-mode=light] .btn-outline-pink-100:disabled,html[data-netbox-color-mode=light] .btn-outline-pink-100.disabled{color:#f7d6e6;background-color:transparent}}@media print{html .btn-outline-pink-200,html[data-netbox-color-mode=dark] .btn-outline-pink-200,html[data-netbox-color-mode=light] .btn-outline-pink-200{color:#efadce;border-color:#efadce}html .btn-outline-pink-200:hover,html[data-netbox-color-mode=dark] .btn-outline-pink-200:hover,html[data-netbox-color-mode=light] .btn-outline-pink-200:hover{color:#000;background-color:#efadce;border-color:#efadce}.btn-check:focus+html .btn-outline-pink-200,html .btn-outline-pink-200:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-pink-200,html[data-netbox-color-mode=dark] .btn-outline-pink-200:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-pink-200,html[data-netbox-color-mode=light] .btn-outline-pink-200:focus{box-shadow:0 0 0 .25rem #efadce80}.btn-check:checked+html .btn-outline-pink-200,.btn-check:active+html .btn-outline-pink-200,html .btn-outline-pink-200:active,html .btn-outline-pink-200.active,html .btn-outline-pink-200.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-pink-200,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-pink-200,html[data-netbox-color-mode=dark] .btn-outline-pink-200:active,html[data-netbox-color-mode=dark] .btn-outline-pink-200.active,html[data-netbox-color-mode=dark] .btn-outline-pink-200.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-pink-200,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-pink-200,html[data-netbox-color-mode=light] .btn-outline-pink-200:active,html[data-netbox-color-mode=light] .btn-outline-pink-200.active,html[data-netbox-color-mode=light] .btn-outline-pink-200.dropdown-toggle.show{color:#000;background-color:#efadce;border-color:#efadce}.btn-check:checked+html .btn-outline-pink-200:focus,.btn-check:active+html .btn-outline-pink-200:focus,html .btn-outline-pink-200:active:focus,html .btn-outline-pink-200.active:focus,html .btn-outline-pink-200.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-pink-200:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-pink-200:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-200:active:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-200.active:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-200.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-pink-200:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-pink-200:focus,html[data-netbox-color-mode=light] .btn-outline-pink-200:active:focus,html[data-netbox-color-mode=light] .btn-outline-pink-200.active:focus,html[data-netbox-color-mode=light] .btn-outline-pink-200.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #efadce80}html .btn-outline-pink-200:disabled,html .btn-outline-pink-200.disabled,html[data-netbox-color-mode=dark] .btn-outline-pink-200:disabled,html[data-netbox-color-mode=dark] .btn-outline-pink-200.disabled,html[data-netbox-color-mode=light] .btn-outline-pink-200:disabled,html[data-netbox-color-mode=light] .btn-outline-pink-200.disabled{color:#efadce;background-color:transparent}}@media print{html .btn-outline-pink-300,html[data-netbox-color-mode=dark] .btn-outline-pink-300,html[data-netbox-color-mode=light] .btn-outline-pink-300{color:#e685b5;border-color:#e685b5}html .btn-outline-pink-300:hover,html[data-netbox-color-mode=dark] .btn-outline-pink-300:hover,html[data-netbox-color-mode=light] .btn-outline-pink-300:hover{color:#000;background-color:#e685b5;border-color:#e685b5}.btn-check:focus+html .btn-outline-pink-300,html .btn-outline-pink-300:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-pink-300,html[data-netbox-color-mode=dark] .btn-outline-pink-300:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-pink-300,html[data-netbox-color-mode=light] .btn-outline-pink-300:focus{box-shadow:0 0 0 .25rem #e685b580}.btn-check:checked+html .btn-outline-pink-300,.btn-check:active+html .btn-outline-pink-300,html .btn-outline-pink-300:active,html .btn-outline-pink-300.active,html .btn-outline-pink-300.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-pink-300,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-pink-300,html[data-netbox-color-mode=dark] .btn-outline-pink-300:active,html[data-netbox-color-mode=dark] .btn-outline-pink-300.active,html[data-netbox-color-mode=dark] .btn-outline-pink-300.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-pink-300,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-pink-300,html[data-netbox-color-mode=light] .btn-outline-pink-300:active,html[data-netbox-color-mode=light] .btn-outline-pink-300.active,html[data-netbox-color-mode=light] .btn-outline-pink-300.dropdown-toggle.show{color:#000;background-color:#e685b5;border-color:#e685b5}.btn-check:checked+html .btn-outline-pink-300:focus,.btn-check:active+html .btn-outline-pink-300:focus,html .btn-outline-pink-300:active:focus,html .btn-outline-pink-300.active:focus,html .btn-outline-pink-300.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-pink-300:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-pink-300:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-300:active:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-300.active:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-300.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-pink-300:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-pink-300:focus,html[data-netbox-color-mode=light] .btn-outline-pink-300:active:focus,html[data-netbox-color-mode=light] .btn-outline-pink-300.active:focus,html[data-netbox-color-mode=light] .btn-outline-pink-300.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #e685b580}html .btn-outline-pink-300:disabled,html .btn-outline-pink-300.disabled,html[data-netbox-color-mode=dark] .btn-outline-pink-300:disabled,html[data-netbox-color-mode=dark] .btn-outline-pink-300.disabled,html[data-netbox-color-mode=light] .btn-outline-pink-300:disabled,html[data-netbox-color-mode=light] .btn-outline-pink-300.disabled{color:#e685b5;background-color:transparent}}@media print{html .btn-outline-pink-400,html[data-netbox-color-mode=dark] .btn-outline-pink-400,html[data-netbox-color-mode=light] .btn-outline-pink-400{color:#de5c9d;border-color:#de5c9d}html .btn-outline-pink-400:hover,html[data-netbox-color-mode=dark] .btn-outline-pink-400:hover,html[data-netbox-color-mode=light] .btn-outline-pink-400:hover{color:#000;background-color:#de5c9d;border-color:#de5c9d}.btn-check:focus+html .btn-outline-pink-400,html .btn-outline-pink-400:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-pink-400,html[data-netbox-color-mode=dark] .btn-outline-pink-400:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-pink-400,html[data-netbox-color-mode=light] .btn-outline-pink-400:focus{box-shadow:0 0 0 .25rem #de5c9d80}.btn-check:checked+html .btn-outline-pink-400,.btn-check:active+html .btn-outline-pink-400,html .btn-outline-pink-400:active,html .btn-outline-pink-400.active,html .btn-outline-pink-400.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-pink-400,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-pink-400,html[data-netbox-color-mode=dark] .btn-outline-pink-400:active,html[data-netbox-color-mode=dark] .btn-outline-pink-400.active,html[data-netbox-color-mode=dark] .btn-outline-pink-400.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-pink-400,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-pink-400,html[data-netbox-color-mode=light] .btn-outline-pink-400:active,html[data-netbox-color-mode=light] .btn-outline-pink-400.active,html[data-netbox-color-mode=light] .btn-outline-pink-400.dropdown-toggle.show{color:#000;background-color:#de5c9d;border-color:#de5c9d}.btn-check:checked+html .btn-outline-pink-400:focus,.btn-check:active+html .btn-outline-pink-400:focus,html .btn-outline-pink-400:active:focus,html .btn-outline-pink-400.active:focus,html .btn-outline-pink-400.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-pink-400:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-pink-400:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-400:active:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-400.active:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-400.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-pink-400:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-pink-400:focus,html[data-netbox-color-mode=light] .btn-outline-pink-400:active:focus,html[data-netbox-color-mode=light] .btn-outline-pink-400.active:focus,html[data-netbox-color-mode=light] .btn-outline-pink-400.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #de5c9d80}html .btn-outline-pink-400:disabled,html .btn-outline-pink-400.disabled,html[data-netbox-color-mode=dark] .btn-outline-pink-400:disabled,html[data-netbox-color-mode=dark] .btn-outline-pink-400.disabled,html[data-netbox-color-mode=light] .btn-outline-pink-400:disabled,html[data-netbox-color-mode=light] .btn-outline-pink-400.disabled{color:#de5c9d;background-color:transparent}}@media print{html .btn-outline-pink-500,html[data-netbox-color-mode=dark] .btn-outline-pink-500,html[data-netbox-color-mode=light] .btn-outline-pink-500{color:#d63384;border-color:#d63384}html .btn-outline-pink-500:hover,html[data-netbox-color-mode=dark] .btn-outline-pink-500:hover,html[data-netbox-color-mode=light] .btn-outline-pink-500:hover{color:#fff;background-color:#d63384;border-color:#d63384}.btn-check:focus+html .btn-outline-pink-500,html .btn-outline-pink-500:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-pink-500,html[data-netbox-color-mode=dark] .btn-outline-pink-500:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-pink-500,html[data-netbox-color-mode=light] .btn-outline-pink-500:focus{box-shadow:0 0 0 .25rem #d6338480}.btn-check:checked+html .btn-outline-pink-500,.btn-check:active+html .btn-outline-pink-500,html .btn-outline-pink-500:active,html .btn-outline-pink-500.active,html .btn-outline-pink-500.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-pink-500,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-pink-500,html[data-netbox-color-mode=dark] .btn-outline-pink-500:active,html[data-netbox-color-mode=dark] .btn-outline-pink-500.active,html[data-netbox-color-mode=dark] .btn-outline-pink-500.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-pink-500,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-pink-500,html[data-netbox-color-mode=light] .btn-outline-pink-500:active,html[data-netbox-color-mode=light] .btn-outline-pink-500.active,html[data-netbox-color-mode=light] .btn-outline-pink-500.dropdown-toggle.show{color:#fff;background-color:#d63384;border-color:#d63384}.btn-check:checked+html .btn-outline-pink-500:focus,.btn-check:active+html .btn-outline-pink-500:focus,html .btn-outline-pink-500:active:focus,html .btn-outline-pink-500.active:focus,html .btn-outline-pink-500.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-pink-500:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-pink-500:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-500:active:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-500.active:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-500.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-pink-500:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-pink-500:focus,html[data-netbox-color-mode=light] .btn-outline-pink-500:active:focus,html[data-netbox-color-mode=light] .btn-outline-pink-500.active:focus,html[data-netbox-color-mode=light] .btn-outline-pink-500.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #d6338480}html .btn-outline-pink-500:disabled,html .btn-outline-pink-500.disabled,html[data-netbox-color-mode=dark] .btn-outline-pink-500:disabled,html[data-netbox-color-mode=dark] .btn-outline-pink-500.disabled,html[data-netbox-color-mode=light] .btn-outline-pink-500:disabled,html[data-netbox-color-mode=light] .btn-outline-pink-500.disabled{color:#d63384;background-color:transparent}}@media print{html .btn-outline-pink-600,html[data-netbox-color-mode=dark] .btn-outline-pink-600,html[data-netbox-color-mode=light] .btn-outline-pink-600{color:#ab296a;border-color:#ab296a}html .btn-outline-pink-600:hover,html[data-netbox-color-mode=dark] .btn-outline-pink-600:hover,html[data-netbox-color-mode=light] .btn-outline-pink-600:hover{color:#fff;background-color:#ab296a;border-color:#ab296a}.btn-check:focus+html .btn-outline-pink-600,html .btn-outline-pink-600:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-pink-600,html[data-netbox-color-mode=dark] .btn-outline-pink-600:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-pink-600,html[data-netbox-color-mode=light] .btn-outline-pink-600:focus{box-shadow:0 0 0 .25rem #ab296a80}.btn-check:checked+html .btn-outline-pink-600,.btn-check:active+html .btn-outline-pink-600,html .btn-outline-pink-600:active,html .btn-outline-pink-600.active,html .btn-outline-pink-600.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-pink-600,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-pink-600,html[data-netbox-color-mode=dark] .btn-outline-pink-600:active,html[data-netbox-color-mode=dark] .btn-outline-pink-600.active,html[data-netbox-color-mode=dark] .btn-outline-pink-600.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-pink-600,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-pink-600,html[data-netbox-color-mode=light] .btn-outline-pink-600:active,html[data-netbox-color-mode=light] .btn-outline-pink-600.active,html[data-netbox-color-mode=light] .btn-outline-pink-600.dropdown-toggle.show{color:#fff;background-color:#ab296a;border-color:#ab296a}.btn-check:checked+html .btn-outline-pink-600:focus,.btn-check:active+html .btn-outline-pink-600:focus,html .btn-outline-pink-600:active:focus,html .btn-outline-pink-600.active:focus,html .btn-outline-pink-600.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-pink-600:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-pink-600:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-600:active:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-600.active:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-600.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-pink-600:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-pink-600:focus,html[data-netbox-color-mode=light] .btn-outline-pink-600:active:focus,html[data-netbox-color-mode=light] .btn-outline-pink-600.active:focus,html[data-netbox-color-mode=light] .btn-outline-pink-600.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #ab296a80}html .btn-outline-pink-600:disabled,html .btn-outline-pink-600.disabled,html[data-netbox-color-mode=dark] .btn-outline-pink-600:disabled,html[data-netbox-color-mode=dark] .btn-outline-pink-600.disabled,html[data-netbox-color-mode=light] .btn-outline-pink-600:disabled,html[data-netbox-color-mode=light] .btn-outline-pink-600.disabled{color:#ab296a;background-color:transparent}}@media print{html .btn-outline-pink-700,html[data-netbox-color-mode=dark] .btn-outline-pink-700,html[data-netbox-color-mode=light] .btn-outline-pink-700{color:#801f4f;border-color:#801f4f}html .btn-outline-pink-700:hover,html[data-netbox-color-mode=dark] .btn-outline-pink-700:hover,html[data-netbox-color-mode=light] .btn-outline-pink-700:hover{color:#fff;background-color:#801f4f;border-color:#801f4f}.btn-check:focus+html .btn-outline-pink-700,html .btn-outline-pink-700:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-pink-700,html[data-netbox-color-mode=dark] .btn-outline-pink-700:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-pink-700,html[data-netbox-color-mode=light] .btn-outline-pink-700:focus{box-shadow:0 0 0 .25rem #801f4f80}.btn-check:checked+html .btn-outline-pink-700,.btn-check:active+html .btn-outline-pink-700,html .btn-outline-pink-700:active,html .btn-outline-pink-700.active,html .btn-outline-pink-700.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-pink-700,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-pink-700,html[data-netbox-color-mode=dark] .btn-outline-pink-700:active,html[data-netbox-color-mode=dark] .btn-outline-pink-700.active,html[data-netbox-color-mode=dark] .btn-outline-pink-700.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-pink-700,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-pink-700,html[data-netbox-color-mode=light] .btn-outline-pink-700:active,html[data-netbox-color-mode=light] .btn-outline-pink-700.active,html[data-netbox-color-mode=light] .btn-outline-pink-700.dropdown-toggle.show{color:#fff;background-color:#801f4f;border-color:#801f4f}.btn-check:checked+html .btn-outline-pink-700:focus,.btn-check:active+html .btn-outline-pink-700:focus,html .btn-outline-pink-700:active:focus,html .btn-outline-pink-700.active:focus,html .btn-outline-pink-700.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-pink-700:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-pink-700:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-700:active:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-700.active:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-700.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-pink-700:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-pink-700:focus,html[data-netbox-color-mode=light] .btn-outline-pink-700:active:focus,html[data-netbox-color-mode=light] .btn-outline-pink-700.active:focus,html[data-netbox-color-mode=light] .btn-outline-pink-700.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #801f4f80}html .btn-outline-pink-700:disabled,html .btn-outline-pink-700.disabled,html[data-netbox-color-mode=dark] .btn-outline-pink-700:disabled,html[data-netbox-color-mode=dark] .btn-outline-pink-700.disabled,html[data-netbox-color-mode=light] .btn-outline-pink-700:disabled,html[data-netbox-color-mode=light] .btn-outline-pink-700.disabled{color:#801f4f;background-color:transparent}}@media print{html .btn-outline-pink-800,html[data-netbox-color-mode=dark] .btn-outline-pink-800,html[data-netbox-color-mode=light] .btn-outline-pink-800{color:#561435;border-color:#561435}html .btn-outline-pink-800:hover,html[data-netbox-color-mode=dark] .btn-outline-pink-800:hover,html[data-netbox-color-mode=light] .btn-outline-pink-800:hover{color:#fff;background-color:#561435;border-color:#561435}.btn-check:focus+html .btn-outline-pink-800,html .btn-outline-pink-800:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-pink-800,html[data-netbox-color-mode=dark] .btn-outline-pink-800:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-pink-800,html[data-netbox-color-mode=light] .btn-outline-pink-800:focus{box-shadow:0 0 0 .25rem #56143580}.btn-check:checked+html .btn-outline-pink-800,.btn-check:active+html .btn-outline-pink-800,html .btn-outline-pink-800:active,html .btn-outline-pink-800.active,html .btn-outline-pink-800.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-pink-800,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-pink-800,html[data-netbox-color-mode=dark] .btn-outline-pink-800:active,html[data-netbox-color-mode=dark] .btn-outline-pink-800.active,html[data-netbox-color-mode=dark] .btn-outline-pink-800.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-pink-800,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-pink-800,html[data-netbox-color-mode=light] .btn-outline-pink-800:active,html[data-netbox-color-mode=light] .btn-outline-pink-800.active,html[data-netbox-color-mode=light] .btn-outline-pink-800.dropdown-toggle.show{color:#fff;background-color:#561435;border-color:#561435}.btn-check:checked+html .btn-outline-pink-800:focus,.btn-check:active+html .btn-outline-pink-800:focus,html .btn-outline-pink-800:active:focus,html .btn-outline-pink-800.active:focus,html .btn-outline-pink-800.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-pink-800:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-pink-800:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-800:active:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-800.active:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-800.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-pink-800:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-pink-800:focus,html[data-netbox-color-mode=light] .btn-outline-pink-800:active:focus,html[data-netbox-color-mode=light] .btn-outline-pink-800.active:focus,html[data-netbox-color-mode=light] .btn-outline-pink-800.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #56143580}html .btn-outline-pink-800:disabled,html .btn-outline-pink-800.disabled,html[data-netbox-color-mode=dark] .btn-outline-pink-800:disabled,html[data-netbox-color-mode=dark] .btn-outline-pink-800.disabled,html[data-netbox-color-mode=light] .btn-outline-pink-800:disabled,html[data-netbox-color-mode=light] .btn-outline-pink-800.disabled{color:#561435;background-color:transparent}}@media print{html .btn-outline-pink-900,html[data-netbox-color-mode=dark] .btn-outline-pink-900,html[data-netbox-color-mode=light] .btn-outline-pink-900{color:#2b0a1a;border-color:#2b0a1a}html .btn-outline-pink-900:hover,html[data-netbox-color-mode=dark] .btn-outline-pink-900:hover,html[data-netbox-color-mode=light] .btn-outline-pink-900:hover{color:#fff;background-color:#2b0a1a;border-color:#2b0a1a}.btn-check:focus+html .btn-outline-pink-900,html .btn-outline-pink-900:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-pink-900,html[data-netbox-color-mode=dark] .btn-outline-pink-900:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-pink-900,html[data-netbox-color-mode=light] .btn-outline-pink-900:focus{box-shadow:0 0 0 .25rem #2b0a1a80}.btn-check:checked+html .btn-outline-pink-900,.btn-check:active+html .btn-outline-pink-900,html .btn-outline-pink-900:active,html .btn-outline-pink-900.active,html .btn-outline-pink-900.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-pink-900,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-pink-900,html[data-netbox-color-mode=dark] .btn-outline-pink-900:active,html[data-netbox-color-mode=dark] .btn-outline-pink-900.active,html[data-netbox-color-mode=dark] .btn-outline-pink-900.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-pink-900,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-pink-900,html[data-netbox-color-mode=light] .btn-outline-pink-900:active,html[data-netbox-color-mode=light] .btn-outline-pink-900.active,html[data-netbox-color-mode=light] .btn-outline-pink-900.dropdown-toggle.show{color:#fff;background-color:#2b0a1a;border-color:#2b0a1a}.btn-check:checked+html .btn-outline-pink-900:focus,.btn-check:active+html .btn-outline-pink-900:focus,html .btn-outline-pink-900:active:focus,html .btn-outline-pink-900.active:focus,html .btn-outline-pink-900.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-pink-900:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-pink-900:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-900:active:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-900.active:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-900.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-pink-900:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-pink-900:focus,html[data-netbox-color-mode=light] .btn-outline-pink-900:active:focus,html[data-netbox-color-mode=light] .btn-outline-pink-900.active:focus,html[data-netbox-color-mode=light] .btn-outline-pink-900.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #2b0a1a80}html .btn-outline-pink-900:disabled,html .btn-outline-pink-900.disabled,html[data-netbox-color-mode=dark] .btn-outline-pink-900:disabled,html[data-netbox-color-mode=dark] .btn-outline-pink-900.disabled,html[data-netbox-color-mode=light] .btn-outline-pink-900:disabled,html[data-netbox-color-mode=light] .btn-outline-pink-900.disabled{color:#2b0a1a;background-color:transparent}}@media print{html .btn-link,html[data-netbox-color-mode=dark] .btn-link,html[data-netbox-color-mode=light] .btn-link{font-weight:400;color:#0d6efd;text-decoration:underline}html .btn-link:hover,html[data-netbox-color-mode=dark] .btn-link:hover,html[data-netbox-color-mode=light] .btn-link:hover{color:#0a58ca}html .btn-link:disabled,html .btn-link.disabled,html[data-netbox-color-mode=dark] .btn-link:disabled,html[data-netbox-color-mode=dark] .btn-link.disabled,html[data-netbox-color-mode=light] .btn-link:disabled,html[data-netbox-color-mode=light] .btn-link.disabled{color:#6c757d}}@media print{html .btn-lg,html .btn-group-lg>.btn,html[data-netbox-color-mode=dark] .btn-lg,html[data-netbox-color-mode=light] .btn-lg{padding:.5rem 1rem;font-size:1.25rem;border-radius:.75rem}}@media print{html .btn-sm,html .btn-group-sm>.btn,html[data-netbox-color-mode=dark] .btn-sm,html[data-netbox-color-mode=light] .btn-sm{padding:.25rem .5rem;font-size:.875rem;border-radius:.375rem}}@media print{html .fade,html[data-netbox-color-mode=dark] .fade,html[data-netbox-color-mode=light] .fade{transition:opacity .15s linear}}@media print and (prefers-reduced-motion: reduce){html .fade,html[data-netbox-color-mode=dark] .fade,html[data-netbox-color-mode=light] .fade{transition:none}}@media print{html .fade:not(.show),html[data-netbox-color-mode=dark] .fade:not(.show),html[data-netbox-color-mode=light] .fade:not(.show){opacity:0}}@media print{html .collapse:not(.show),html[data-netbox-color-mode=dark] .collapse:not(.show),html[data-netbox-color-mode=light] .collapse:not(.show){display:none}}@media print{html .collapsing,html[data-netbox-color-mode=dark] .collapsing,html[data-netbox-color-mode=light] .collapsing{height:0;overflow:hidden;transition:height .35s ease}}@media print and (prefers-reduced-motion: reduce){html .collapsing,html[data-netbox-color-mode=dark] .collapsing,html[data-netbox-color-mode=light] .collapsing{transition:none}}@media print{html .dropup,html .dropend,html .dropdown,html .dropstart,html[data-netbox-color-mode=dark] .dropup,html[data-netbox-color-mode=dark] .dropend,html[data-netbox-color-mode=dark] .dropdown,html[data-netbox-color-mode=dark] .dropstart,html[data-netbox-color-mode=light] .dropup,html[data-netbox-color-mode=light] .dropend,html[data-netbox-color-mode=light] .dropdown,html[data-netbox-color-mode=light] .dropstart{position:relative}}@media print{html .dropdown-toggle,html[data-netbox-color-mode=dark] .dropdown-toggle,html[data-netbox-color-mode=light] .dropdown-toggle{white-space:nowrap}html .dropdown-toggle:after,html[data-netbox-color-mode=dark] .dropdown-toggle:after,html[data-netbox-color-mode=light] .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}html .dropdown-toggle:empty:after,html[data-netbox-color-mode=dark] .dropdown-toggle:empty:after,html[data-netbox-color-mode=light] .dropdown-toggle:empty:after{margin-left:0}}@media print{html .dropdown-menu,html[data-netbox-color-mode=dark] .dropdown-menu,html[data-netbox-color-mode=light] .dropdown-menu{position:absolute;z-index:1000;display:none;min-width:10rem;padding:.5rem 0;margin:0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.375rem}html .dropdown-menu[data-bs-popper],html[data-netbox-color-mode=dark] .dropdown-menu[data-bs-popper],html[data-netbox-color-mode=light] .dropdown-menu[data-bs-popper]{top:100%;left:0;margin-top:.125rem}}@media print{html .dropdown-menu-start,html[data-netbox-color-mode=dark] .dropdown-menu-start,html[data-netbox-color-mode=light] .dropdown-menu-start{--bs-position: start}html .dropdown-menu-start[data-bs-popper],html[data-netbox-color-mode=dark] .dropdown-menu-start[data-bs-popper],html[data-netbox-color-mode=light] .dropdown-menu-start[data-bs-popper]{right:auto;left:0}}@media print{html .dropdown-menu-end,html[data-netbox-color-mode=dark] .dropdown-menu-end,html[data-netbox-color-mode=light] .dropdown-menu-end{--bs-position: end}html .dropdown-menu-end[data-bs-popper],html[data-netbox-color-mode=dark] .dropdown-menu-end[data-bs-popper],html[data-netbox-color-mode=light] .dropdown-menu-end[data-bs-popper]{right:0;left:auto}}@media print and (min-width: 576px){html .dropdown-menu-sm-start,html[data-netbox-color-mode=dark] .dropdown-menu-sm-start,html[data-netbox-color-mode=light] .dropdown-menu-sm-start{--bs-position: start}html .dropdown-menu-sm-start[data-bs-popper],html[data-netbox-color-mode=dark] .dropdown-menu-sm-start[data-bs-popper],html[data-netbox-color-mode=light] .dropdown-menu-sm-start[data-bs-popper]{right:auto;left:0}html .dropdown-menu-sm-end,html[data-netbox-color-mode=dark] .dropdown-menu-sm-end,html[data-netbox-color-mode=light] .dropdown-menu-sm-end{--bs-position: end}html .dropdown-menu-sm-end[data-bs-popper],html[data-netbox-color-mode=dark] .dropdown-menu-sm-end[data-bs-popper],html[data-netbox-color-mode=light] .dropdown-menu-sm-end[data-bs-popper]{right:0;left:auto}}@media print and (min-width: 768px){html .dropdown-menu-md-start,html[data-netbox-color-mode=dark] .dropdown-menu-md-start,html[data-netbox-color-mode=light] .dropdown-menu-md-start{--bs-position: start}html .dropdown-menu-md-start[data-bs-popper],html[data-netbox-color-mode=dark] .dropdown-menu-md-start[data-bs-popper],html[data-netbox-color-mode=light] .dropdown-menu-md-start[data-bs-popper]{right:auto;left:0}html .dropdown-menu-md-end,html[data-netbox-color-mode=dark] .dropdown-menu-md-end,html[data-netbox-color-mode=light] .dropdown-menu-md-end{--bs-position: end}html .dropdown-menu-md-end[data-bs-popper],html[data-netbox-color-mode=dark] .dropdown-menu-md-end[data-bs-popper],html[data-netbox-color-mode=light] .dropdown-menu-md-end[data-bs-popper]{right:0;left:auto}}@media print and (min-width: 992px){html .dropdown-menu-lg-start,html[data-netbox-color-mode=dark] .dropdown-menu-lg-start,html[data-netbox-color-mode=light] .dropdown-menu-lg-start{--bs-position: start}html .dropdown-menu-lg-start[data-bs-popper],html[data-netbox-color-mode=dark] .dropdown-menu-lg-start[data-bs-popper],html[data-netbox-color-mode=light] .dropdown-menu-lg-start[data-bs-popper]{right:auto;left:0}html .dropdown-menu-lg-end,html[data-netbox-color-mode=dark] .dropdown-menu-lg-end,html[data-netbox-color-mode=light] .dropdown-menu-lg-end{--bs-position: end}html .dropdown-menu-lg-end[data-bs-popper],html[data-netbox-color-mode=dark] .dropdown-menu-lg-end[data-bs-popper],html[data-netbox-color-mode=light] .dropdown-menu-lg-end[data-bs-popper]{right:0;left:auto}}@media print and (min-width: 1200px){html .dropdown-menu-xl-start,html[data-netbox-color-mode=dark] .dropdown-menu-xl-start,html[data-netbox-color-mode=light] .dropdown-menu-xl-start{--bs-position: start}html .dropdown-menu-xl-start[data-bs-popper],html[data-netbox-color-mode=dark] .dropdown-menu-xl-start[data-bs-popper],html[data-netbox-color-mode=light] .dropdown-menu-xl-start[data-bs-popper]{right:auto;left:0}html .dropdown-menu-xl-end,html[data-netbox-color-mode=dark] .dropdown-menu-xl-end,html[data-netbox-color-mode=light] .dropdown-menu-xl-end{--bs-position: end}html .dropdown-menu-xl-end[data-bs-popper],html[data-netbox-color-mode=dark] .dropdown-menu-xl-end[data-bs-popper],html[data-netbox-color-mode=light] .dropdown-menu-xl-end[data-bs-popper]{right:0;left:auto}}@media print and (min-width: 1400px){html .dropdown-menu-xxl-start,html[data-netbox-color-mode=dark] .dropdown-menu-xxl-start,html[data-netbox-color-mode=light] .dropdown-menu-xxl-start{--bs-position: start}html .dropdown-menu-xxl-start[data-bs-popper],html[data-netbox-color-mode=dark] .dropdown-menu-xxl-start[data-bs-popper],html[data-netbox-color-mode=light] .dropdown-menu-xxl-start[data-bs-popper]{right:auto;left:0}html .dropdown-menu-xxl-end,html[data-netbox-color-mode=dark] .dropdown-menu-xxl-end,html[data-netbox-color-mode=light] .dropdown-menu-xxl-end{--bs-position: end}html .dropdown-menu-xxl-end[data-bs-popper],html[data-netbox-color-mode=dark] .dropdown-menu-xxl-end[data-bs-popper],html[data-netbox-color-mode=light] .dropdown-menu-xxl-end[data-bs-popper]{right:0;left:auto}}@media print{html .dropup .dropdown-menu[data-bs-popper],html[data-netbox-color-mode=dark] .dropup .dropdown-menu[data-bs-popper],html[data-netbox-color-mode=light] .dropup .dropdown-menu[data-bs-popper]{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}html .dropup .dropdown-toggle:after,html[data-netbox-color-mode=dark] .dropup .dropdown-toggle:after,html[data-netbox-color-mode=light] .dropup .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}html .dropup .dropdown-toggle:empty:after,html[data-netbox-color-mode=dark] .dropup .dropdown-toggle:empty:after,html[data-netbox-color-mode=light] .dropup .dropdown-toggle:empty:after{margin-left:0}}@media print{html .dropend .dropdown-menu[data-bs-popper],html[data-netbox-color-mode=dark] .dropend .dropdown-menu[data-bs-popper],html[data-netbox-color-mode=light] .dropend .dropdown-menu[data-bs-popper]{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}html .dropend .dropdown-toggle:after,html[data-netbox-color-mode=dark] .dropend .dropdown-toggle:after,html[data-netbox-color-mode=light] .dropend .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}html .dropend .dropdown-toggle:empty:after,html[data-netbox-color-mode=dark] .dropend .dropdown-toggle:empty:after,html[data-netbox-color-mode=light] .dropend .dropdown-toggle:empty:after{margin-left:0}html .dropend .dropdown-toggle:after,html[data-netbox-color-mode=dark] .dropend .dropdown-toggle:after,html[data-netbox-color-mode=light] .dropend .dropdown-toggle:after{vertical-align:0}}@media print{html .dropstart .dropdown-menu[data-bs-popper],html[data-netbox-color-mode=dark] .dropstart .dropdown-menu[data-bs-popper],html[data-netbox-color-mode=light] .dropstart .dropdown-menu[data-bs-popper]{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}html .dropstart .dropdown-toggle:after,html[data-netbox-color-mode=dark] .dropstart .dropdown-toggle:after,html[data-netbox-color-mode=light] .dropstart .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}html .dropstart .dropdown-toggle:after,html[data-netbox-color-mode=dark] .dropstart .dropdown-toggle:after,html[data-netbox-color-mode=light] .dropstart .dropdown-toggle:after{display:none}html .dropstart .dropdown-toggle:before,html[data-netbox-color-mode=dark] .dropstart .dropdown-toggle:before,html[data-netbox-color-mode=light] .dropstart .dropdown-toggle:before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}html .dropstart .dropdown-toggle:empty:after,html[data-netbox-color-mode=dark] .dropstart .dropdown-toggle:empty:after,html[data-netbox-color-mode=light] .dropstart .dropdown-toggle:empty:after{margin-left:0}html .dropstart .dropdown-toggle:before,html[data-netbox-color-mode=dark] .dropstart .dropdown-toggle:before,html[data-netbox-color-mode=light] .dropstart .dropdown-toggle:before{vertical-align:0}}@media print{html .dropdown-divider,html[data-netbox-color-mode=dark] .dropdown-divider,html[data-netbox-color-mode=light] .dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid rgba(0,0,0,.15)}}@media print{html .dropdown-item,html[data-netbox-color-mode=dark] .dropdown-item,html[data-netbox-color-mode=light] .dropdown-item{display:block;width:100%;padding:.25rem 1rem;clear:both;font-weight:400;color:#212529;text-align:inherit;text-decoration:none;white-space:nowrap;background-color:transparent;border:0}html .dropdown-item:hover,html .dropdown-item:focus,html[data-netbox-color-mode=dark] .dropdown-item:hover,html[data-netbox-color-mode=dark] .dropdown-item:focus,html[data-netbox-color-mode=light] .dropdown-item:hover,html[data-netbox-color-mode=light] .dropdown-item:focus{color:#1e2125;background-color:#e9ecef}html .dropdown-item.active,html .dropdown-item:active,html[data-netbox-color-mode=dark] .dropdown-item.active,html[data-netbox-color-mode=dark] .dropdown-item:active,html[data-netbox-color-mode=light] .dropdown-item.active,html[data-netbox-color-mode=light] .dropdown-item:active{color:#fff;text-decoration:none;background-color:#0d6efd}html .dropdown-item.disabled,html .dropdown-item:disabled,html[data-netbox-color-mode=dark] .dropdown-item.disabled,html[data-netbox-color-mode=dark] .dropdown-item:disabled,html[data-netbox-color-mode=light] .dropdown-item.disabled,html[data-netbox-color-mode=light] .dropdown-item:disabled{color:#adb5bd;pointer-events:none;background-color:transparent}}@media print{html .dropdown-menu.show,html[data-netbox-color-mode=dark] .dropdown-menu.show,html[data-netbox-color-mode=light] .dropdown-menu.show{display:block}}@media print{html .dropdown-header,html[data-netbox-color-mode=dark] .dropdown-header,html[data-netbox-color-mode=light] .dropdown-header{display:block;padding:.5rem 1rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}}@media print{html .dropdown-item-text,html[data-netbox-color-mode=dark] .dropdown-item-text,html[data-netbox-color-mode=light] .dropdown-item-text{display:block;padding:.25rem 1rem;color:#212529}}@media print{html .dropdown-menu-dark,html[data-netbox-color-mode=dark] .dropdown-menu-dark,html[data-netbox-color-mode=light] .dropdown-menu-dark{color:#dee2e6;background-color:#343a40;border-color:#00000026}html .dropdown-menu-dark .dropdown-item,html[data-netbox-color-mode=dark] .dropdown-menu-dark .dropdown-item,html[data-netbox-color-mode=light] .dropdown-menu-dark .dropdown-item{color:#dee2e6}html .dropdown-menu-dark .dropdown-item:hover,html .dropdown-menu-dark .dropdown-item:focus,html[data-netbox-color-mode=dark] .dropdown-menu-dark .dropdown-item:hover,html[data-netbox-color-mode=dark] .dropdown-menu-dark .dropdown-item:focus,html[data-netbox-color-mode=light] .dropdown-menu-dark .dropdown-item:hover,html[data-netbox-color-mode=light] .dropdown-menu-dark .dropdown-item:focus{color:#fff;background-color:#ffffff26}html .dropdown-menu-dark .dropdown-item.active,html .dropdown-menu-dark .dropdown-item:active,html[data-netbox-color-mode=dark] .dropdown-menu-dark .dropdown-item.active,html[data-netbox-color-mode=dark] .dropdown-menu-dark .dropdown-item:active,html[data-netbox-color-mode=light] .dropdown-menu-dark .dropdown-item.active,html[data-netbox-color-mode=light] .dropdown-menu-dark .dropdown-item:active{color:#fff;background-color:#0d6efd}html .dropdown-menu-dark .dropdown-item.disabled,html .dropdown-menu-dark .dropdown-item:disabled,html[data-netbox-color-mode=dark] .dropdown-menu-dark .dropdown-item.disabled,html[data-netbox-color-mode=dark] .dropdown-menu-dark .dropdown-item:disabled,html[data-netbox-color-mode=light] .dropdown-menu-dark .dropdown-item.disabled,html[data-netbox-color-mode=light] .dropdown-menu-dark .dropdown-item:disabled{color:#adb5bd}html .dropdown-menu-dark .dropdown-divider,html[data-netbox-color-mode=dark] .dropdown-menu-dark .dropdown-divider,html[data-netbox-color-mode=light] .dropdown-menu-dark .dropdown-divider{border-color:#00000026}html .dropdown-menu-dark .dropdown-item-text,html[data-netbox-color-mode=dark] .dropdown-menu-dark .dropdown-item-text,html[data-netbox-color-mode=light] .dropdown-menu-dark .dropdown-item-text{color:#dee2e6}html .dropdown-menu-dark .dropdown-header,html[data-netbox-color-mode=dark] .dropdown-menu-dark .dropdown-header,html[data-netbox-color-mode=light] .dropdown-menu-dark .dropdown-header{color:#adb5bd}}@media print{html .btn-group,html .btn-group-vertical,html[data-netbox-color-mode=dark] .btn-group,html[data-netbox-color-mode=dark] .btn-group-vertical,html[data-netbox-color-mode=light] .btn-group,html[data-netbox-color-mode=light] .btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}html .btn-group>.btn,html .btn-group-vertical>.btn,html[data-netbox-color-mode=dark] .btn-group>.btn,html[data-netbox-color-mode=dark] .btn-group-vertical>.btn,html[data-netbox-color-mode=light] .btn-group>.btn,html[data-netbox-color-mode=light] .btn-group-vertical>.btn{position:relative;flex:1 1 auto}html .btn-group>.btn-check:checked+.btn,html .btn-group>.btn-check:focus+.btn,html .btn-group>.btn:hover,html .btn-group>.btn:focus,html .btn-group>.btn:active,html .btn-group>.btn.active,html .btn-group-vertical>.btn-check:checked+.btn,html .btn-group-vertical>.btn-check:focus+.btn,html .btn-group-vertical>.btn:hover,html .btn-group-vertical>.btn:focus,html .btn-group-vertical>.btn:active,html .btn-group-vertical>.btn.active,html[data-netbox-color-mode=dark] .btn-group>.btn-check:checked+.btn,html[data-netbox-color-mode=dark] .btn-group>.btn-check:focus+.btn,html[data-netbox-color-mode=dark] .btn-group>.btn:hover,html[data-netbox-color-mode=dark] .btn-group>.btn:focus,html[data-netbox-color-mode=dark] .btn-group>.btn:active,html[data-netbox-color-mode=dark] .btn-group>.btn.active,html[data-netbox-color-mode=dark] .btn-group-vertical>.btn-check:checked+.btn,html[data-netbox-color-mode=dark] .btn-group-vertical>.btn-check:focus+.btn,html[data-netbox-color-mode=dark] .btn-group-vertical>.btn:hover,html[data-netbox-color-mode=dark] .btn-group-vertical>.btn:focus,html[data-netbox-color-mode=dark] .btn-group-vertical>.btn:active,html[data-netbox-color-mode=dark] .btn-group-vertical>.btn.active,html[data-netbox-color-mode=light] .btn-group>.btn-check:checked+.btn,html[data-netbox-color-mode=light] .btn-group>.btn-check:focus+.btn,html[data-netbox-color-mode=light] .btn-group>.btn:hover,html[data-netbox-color-mode=light] .btn-group>.btn:focus,html[data-netbox-color-mode=light] .btn-group>.btn:active,html[data-netbox-color-mode=light] .btn-group>.btn.active,html[data-netbox-color-mode=light] .btn-group-vertical>.btn-check:checked+.btn,html[data-netbox-color-mode=light] .btn-group-vertical>.btn-check:focus+.btn,html[data-netbox-color-mode=light] .btn-group-vertical>.btn:hover,html[data-netbox-color-mode=light] .btn-group-vertical>.btn:focus,html[data-netbox-color-mode=light] .btn-group-vertical>.btn:active,html[data-netbox-color-mode=light] .btn-group-vertical>.btn.active{z-index:1}}@media print{html .btn-toolbar,html[data-netbox-color-mode=dark] .btn-toolbar,html[data-netbox-color-mode=light] .btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}html .btn-toolbar .input-group,html[data-netbox-color-mode=dark] .btn-toolbar .input-group,html[data-netbox-color-mode=light] .btn-toolbar .input-group{width:auto}}@media print{html .btn-group>.btn:not(:first-child),html .btn-group>.btn-group:not(:first-child),html[data-netbox-color-mode=dark] .btn-group>.btn:not(:first-child),html[data-netbox-color-mode=dark] .btn-group>.btn-group:not(:first-child),html[data-netbox-color-mode=light] .btn-group>.btn:not(:first-child),html[data-netbox-color-mode=light] .btn-group>.btn-group:not(:first-child){margin-left:-1px}html .btn-group>.btn:not(:last-child):not(.dropdown-toggle),html .btn-group>.btn-group:not(:last-child)>.btn,html[data-netbox-color-mode=dark] .btn-group>.btn:not(:last-child):not(.dropdown-toggle),html[data-netbox-color-mode=dark] .btn-group>.btn-group:not(:last-child)>.btn,html[data-netbox-color-mode=light] .btn-group>.btn:not(:last-child):not(.dropdown-toggle),html[data-netbox-color-mode=light] .btn-group>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}html .btn-group>.btn:nth-child(n+3),html .btn-group>:not(.btn-check)+.btn,html .btn-group>.btn-group:not(:first-child)>.btn,html[data-netbox-color-mode=dark] .btn-group>.btn:nth-child(n+3),html[data-netbox-color-mode=dark] .btn-group>:not(.btn-check)+.btn,html[data-netbox-color-mode=dark] .btn-group>.btn-group:not(:first-child)>.btn,html[data-netbox-color-mode=light] .btn-group>.btn:nth-child(n+3),html[data-netbox-color-mode=light] .btn-group>:not(.btn-check)+.btn,html[data-netbox-color-mode=light] .btn-group>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}}@media print{html .dropdown-toggle-split,html[data-netbox-color-mode=dark] .dropdown-toggle-split,html[data-netbox-color-mode=light] .dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}html .dropdown-toggle-split:after,.dropup html .dropdown-toggle-split:after,.dropend html .dropdown-toggle-split:after,html[data-netbox-color-mode=dark] .dropdown-toggle-split:after,.dropup html[data-netbox-color-mode=dark] .dropdown-toggle-split:after,.dropend html[data-netbox-color-mode=dark] .dropdown-toggle-split:after,html[data-netbox-color-mode=light] .dropdown-toggle-split:after,.dropup html[data-netbox-color-mode=light] .dropdown-toggle-split:after,.dropend html[data-netbox-color-mode=light] .dropdown-toggle-split:after{margin-left:0}.dropstart html .dropdown-toggle-split:before,.dropstart html[data-netbox-color-mode=dark] .dropdown-toggle-split:before,.dropstart html[data-netbox-color-mode=light] .dropdown-toggle-split:before{margin-right:0}}@media print{html .btn-sm+.dropdown-toggle-split,html .btn-group-sm>.btn+.dropdown-toggle-split,html[data-netbox-color-mode=dark] .btn-sm+.dropdown-toggle-split,html[data-netbox-color-mode=light] .btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}}@media print{html .btn-lg+.dropdown-toggle-split,html .btn-group-lg>.btn+.dropdown-toggle-split,html[data-netbox-color-mode=dark] .btn-lg+.dropdown-toggle-split,html[data-netbox-color-mode=light] .btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}}@media print{html .btn-group-vertical,html[data-netbox-color-mode=dark] .btn-group-vertical,html[data-netbox-color-mode=light] .btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}html .btn-group-vertical>.btn,html .btn-group-vertical>.btn-group,html[data-netbox-color-mode=dark] .btn-group-vertical>.btn,html[data-netbox-color-mode=dark] .btn-group-vertical>.btn-group,html[data-netbox-color-mode=light] .btn-group-vertical>.btn,html[data-netbox-color-mode=light] .btn-group-vertical>.btn-group{width:100%}html .btn-group-vertical>.btn:not(:first-child),html .btn-group-vertical>.btn-group:not(:first-child),html[data-netbox-color-mode=dark] .btn-group-vertical>.btn:not(:first-child),html[data-netbox-color-mode=dark] .btn-group-vertical>.btn-group:not(:first-child),html[data-netbox-color-mode=light] .btn-group-vertical>.btn:not(:first-child),html[data-netbox-color-mode=light] .btn-group-vertical>.btn-group:not(:first-child){margin-top:-1px}html .btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle),html .btn-group-vertical>.btn-group:not(:last-child)>.btn,html[data-netbox-color-mode=dark] .btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle),html[data-netbox-color-mode=dark] .btn-group-vertical>.btn-group:not(:last-child)>.btn,html[data-netbox-color-mode=light] .btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle),html[data-netbox-color-mode=light] .btn-group-vertical>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-bottom-left-radius:0}html .btn-group-vertical>.btn~.btn,html .btn-group-vertical>.btn-group:not(:first-child)>.btn,html[data-netbox-color-mode=dark] .btn-group-vertical>.btn~.btn,html[data-netbox-color-mode=dark] .btn-group-vertical>.btn-group:not(:first-child)>.btn,html[data-netbox-color-mode=light] .btn-group-vertical>.btn~.btn,html[data-netbox-color-mode=light] .btn-group-vertical>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-top-right-radius:0}}@media print{html .nav,html[data-netbox-color-mode=dark] .nav,html[data-netbox-color-mode=light] .nav{display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}}@media print{html .nav-link,html[data-netbox-color-mode=dark] .nav-link,html[data-netbox-color-mode=light] .nav-link{display:block;padding:.5rem 1rem;color:#0d6efd;text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}}@media print and (prefers-reduced-motion: reduce){html .nav-link,html[data-netbox-color-mode=dark] .nav-link,html[data-netbox-color-mode=light] .nav-link{transition:none}}@media print{html .nav-link:hover,html .nav-link:focus,html[data-netbox-color-mode=dark] .nav-link:hover,html[data-netbox-color-mode=dark] .nav-link:focus,html[data-netbox-color-mode=light] .nav-link:hover,html[data-netbox-color-mode=light] .nav-link:focus{color:#0a58ca}}@media print{html .nav-link.disabled,html[data-netbox-color-mode=dark] .nav-link.disabled,html[data-netbox-color-mode=light] .nav-link.disabled{color:#6c757d;pointer-events:none;cursor:default}}@media print{html .nav-tabs,html[data-netbox-color-mode=dark] .nav-tabs,html[data-netbox-color-mode=light] .nav-tabs{border-bottom:1px solid #dee2e6}html .nav-tabs .nav-link,html[data-netbox-color-mode=dark] .nav-tabs .nav-link,html[data-netbox-color-mode=light] .nav-tabs .nav-link{margin-bottom:-1px;background:none;border:1px solid transparent;border-top-left-radius:.375rem;border-top-right-radius:.375rem}html .nav-tabs .nav-link:hover,html .nav-tabs .nav-link:focus,html[data-netbox-color-mode=dark] .nav-tabs .nav-link:hover,html[data-netbox-color-mode=dark] .nav-tabs .nav-link:focus,html[data-netbox-color-mode=light] .nav-tabs .nav-link:hover,html[data-netbox-color-mode=light] .nav-tabs .nav-link:focus{border-color:#e9ecef #e9ecef #dee2e6;isolation:isolate}html .nav-tabs .nav-link.disabled,html[data-netbox-color-mode=dark] .nav-tabs .nav-link.disabled,html[data-netbox-color-mode=light] .nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}html .nav-tabs .nav-link.active,html .nav-tabs .nav-item.show .nav-link,html[data-netbox-color-mode=dark] .nav-tabs .nav-link.active,html[data-netbox-color-mode=dark] .nav-tabs .nav-item.show .nav-link,html[data-netbox-color-mode=light] .nav-tabs .nav-link.active,html[data-netbox-color-mode=light] .nav-tabs .nav-item.show .nav-link{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}html .nav-tabs .dropdown-menu,html[data-netbox-color-mode=dark] .nav-tabs .dropdown-menu,html[data-netbox-color-mode=light] .nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}}@media print{html .nav-pills .nav-link,html[data-netbox-color-mode=dark] .nav-pills .nav-link,html[data-netbox-color-mode=light] .nav-pills .nav-link{background:none;border:0;border-radius:.375rem}html .nav-pills .nav-link.active,html .nav-pills .show>.nav-link,html[data-netbox-color-mode=dark] .nav-pills .nav-link.active,html[data-netbox-color-mode=dark] .nav-pills .show>.nav-link,html[data-netbox-color-mode=light] .nav-pills .nav-link.active,html[data-netbox-color-mode=light] .nav-pills .show>.nav-link{color:#fff;background-color:#0d6efd}}@media print{html .nav-fill>.nav-link,html .nav-fill .nav-item,html[data-netbox-color-mode=dark] .nav-fill>.nav-link,html[data-netbox-color-mode=dark] .nav-fill .nav-item,html[data-netbox-color-mode=light] .nav-fill>.nav-link,html[data-netbox-color-mode=light] .nav-fill .nav-item{flex:1 1 auto;text-align:center}}@media print{html .nav-justified>.nav-link,html .nav-justified .nav-item,html[data-netbox-color-mode=dark] .nav-justified>.nav-link,html[data-netbox-color-mode=dark] .nav-justified .nav-item,html[data-netbox-color-mode=light] .nav-justified>.nav-link,html[data-netbox-color-mode=light] .nav-justified .nav-item{flex-basis:0;flex-grow:1;text-align:center}}@media print{html .nav-fill .nav-item .nav-link,html .nav-justified .nav-item .nav-link,html[data-netbox-color-mode=dark] .nav-fill .nav-item .nav-link,html[data-netbox-color-mode=dark] .nav-justified .nav-item .nav-link,html[data-netbox-color-mode=light] .nav-fill .nav-item .nav-link,html[data-netbox-color-mode=light] .nav-justified .nav-item .nav-link{width:100%}}@media print{html .tab-content>.tab-pane,html[data-netbox-color-mode=dark] .tab-content>.tab-pane,html[data-netbox-color-mode=light] .tab-content>.tab-pane{display:none}html .tab-content>.active,html[data-netbox-color-mode=dark] .tab-content>.active,html[data-netbox-color-mode=light] .tab-content>.active{display:block}}@media print{html .navbar,html[data-netbox-color-mode=dark] .navbar,html[data-netbox-color-mode=light] .navbar{position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding-top:.5rem;padding-bottom:.5rem}html[data-netbox-color-mode=dark] .navbar>.container-xxl,html[data-netbox-color-mode=light] .navbar>.container-xxl,html[data-netbox-color-mode=dark] .navbar>.container-xl,html[data-netbox-color-mode=light] .navbar>.container-xl,html[data-netbox-color-mode=dark] .navbar>.container-lg,html[data-netbox-color-mode=light] .navbar>.container-lg,html[data-netbox-color-mode=dark] .navbar>.container-md,html[data-netbox-color-mode=light] .navbar>.container-md,html[data-netbox-color-mode=dark] .navbar>.container-sm,html[data-netbox-color-mode=light] .navbar>.container-sm,html .navbar>.container,html .navbar>.container-fluid,html .navbar>.container-sm,html .navbar>.container-md,html .navbar>.container-lg,html .navbar>.container-xl,html .navbar>.container-xxl{display:flex;flex-wrap:inherit;align-items:center;justify-content:space-between}}@media print{html .navbar-brand,html[data-netbox-color-mode=dark] .navbar-brand,html[data-netbox-color-mode=light] .navbar-brand{padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;text-decoration:none;white-space:nowrap}}@media print{html .navbar-nav,html[data-netbox-color-mode=dark] .navbar-nav,html[data-netbox-color-mode=light] .navbar-nav{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}html .navbar-nav .nav-link,html[data-netbox-color-mode=dark] .navbar-nav .nav-link,html[data-netbox-color-mode=light] .navbar-nav .nav-link{padding-right:0;padding-left:0}html .navbar-nav .dropdown-menu,html[data-netbox-color-mode=dark] .navbar-nav .dropdown-menu,html[data-netbox-color-mode=light] .navbar-nav .dropdown-menu{position:static}}@media print{html .navbar-text,html[data-netbox-color-mode=dark] .navbar-text,html[data-netbox-color-mode=light] .navbar-text{padding-top:.5rem;padding-bottom:.5rem}}@media print{html .navbar-collapse,html[data-netbox-color-mode=dark] .navbar-collapse,html[data-netbox-color-mode=light] .navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}}@media print{html .navbar-toggler,html[data-netbox-color-mode=dark] .navbar-toggler,html[data-netbox-color-mode=light] .navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.375rem;transition:box-shadow .15s ease-in-out}}@media print and (prefers-reduced-motion: reduce){html .navbar-toggler,html[data-netbox-color-mode=dark] .navbar-toggler,html[data-netbox-color-mode=light] .navbar-toggler{transition:none}}@media print{html .navbar-toggler:hover,html[data-netbox-color-mode=dark] .navbar-toggler:hover,html[data-netbox-color-mode=light] .navbar-toggler:hover{text-decoration:none}}@media print{html .navbar-toggler:focus,html[data-netbox-color-mode=dark] .navbar-toggler:focus,html[data-netbox-color-mode=light] .navbar-toggler:focus{text-decoration:none;outline:0;box-shadow:0 0 0 .25rem}}@media print{html .navbar-toggler-icon,html[data-netbox-color-mode=dark] .navbar-toggler-icon,html[data-netbox-color-mode=light] .navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;background-repeat:no-repeat;background-position:center;background-size:100%}}@media print{html .navbar-nav-scroll,html[data-netbox-color-mode=dark] .navbar-nav-scroll,html[data-netbox-color-mode=light] .navbar-nav-scroll{max-height:var(--bs-scroll-height, 75vh);overflow-y:auto}}@media print and (min-width: 576px){html .navbar-expand-sm,html[data-netbox-color-mode=dark] .navbar-expand-sm,html[data-netbox-color-mode=light] .navbar-expand-sm{flex-wrap:nowrap;justify-content:flex-start}html .navbar-expand-sm .navbar-nav,html[data-netbox-color-mode=dark] .navbar-expand-sm .navbar-nav,html[data-netbox-color-mode=light] .navbar-expand-sm .navbar-nav{flex-direction:row}html .navbar-expand-sm .navbar-nav .dropdown-menu,html[data-netbox-color-mode=dark] .navbar-expand-sm .navbar-nav .dropdown-menu,html[data-netbox-color-mode=light] .navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}html .navbar-expand-sm .navbar-nav .nav-link,html[data-netbox-color-mode=dark] .navbar-expand-sm .navbar-nav .nav-link,html[data-netbox-color-mode=light] .navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}html .navbar-expand-sm .navbar-nav-scroll,html[data-netbox-color-mode=dark] .navbar-expand-sm .navbar-nav-scroll,html[data-netbox-color-mode=light] .navbar-expand-sm .navbar-nav-scroll{overflow:visible}html .navbar-expand-sm .navbar-collapse,html[data-netbox-color-mode=dark] .navbar-expand-sm .navbar-collapse,html[data-netbox-color-mode=light] .navbar-expand-sm .navbar-collapse{display:flex!important;flex-basis:auto}html .navbar-expand-sm .navbar-toggler,html[data-netbox-color-mode=dark] .navbar-expand-sm .navbar-toggler,html[data-netbox-color-mode=light] .navbar-expand-sm .navbar-toggler{display:none}}@media print and (min-width: 768px){html .navbar-expand-md,html[data-netbox-color-mode=dark] .navbar-expand-md,html[data-netbox-color-mode=light] .navbar-expand-md{flex-wrap:nowrap;justify-content:flex-start}html .navbar-expand-md .navbar-nav,html[data-netbox-color-mode=dark] .navbar-expand-md .navbar-nav,html[data-netbox-color-mode=light] .navbar-expand-md .navbar-nav{flex-direction:row}html .navbar-expand-md .navbar-nav .dropdown-menu,html[data-netbox-color-mode=dark] .navbar-expand-md .navbar-nav .dropdown-menu,html[data-netbox-color-mode=light] .navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}html .navbar-expand-md .navbar-nav .nav-link,html[data-netbox-color-mode=dark] .navbar-expand-md .navbar-nav .nav-link,html[data-netbox-color-mode=light] .navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}html .navbar-expand-md .navbar-nav-scroll,html[data-netbox-color-mode=dark] .navbar-expand-md .navbar-nav-scroll,html[data-netbox-color-mode=light] .navbar-expand-md .navbar-nav-scroll{overflow:visible}html .navbar-expand-md .navbar-collapse,html[data-netbox-color-mode=dark] .navbar-expand-md .navbar-collapse,html[data-netbox-color-mode=light] .navbar-expand-md .navbar-collapse{display:flex!important;flex-basis:auto}html .navbar-expand-md .navbar-toggler,html[data-netbox-color-mode=dark] .navbar-expand-md .navbar-toggler,html[data-netbox-color-mode=light] .navbar-expand-md .navbar-toggler{display:none}}@media print and (min-width: 992px){html .navbar-expand-lg,html[data-netbox-color-mode=dark] .navbar-expand-lg,html[data-netbox-color-mode=light] .navbar-expand-lg{flex-wrap:nowrap;justify-content:flex-start}html .navbar-expand-lg .navbar-nav,html[data-netbox-color-mode=dark] .navbar-expand-lg .navbar-nav,html[data-netbox-color-mode=light] .navbar-expand-lg .navbar-nav{flex-direction:row}html .navbar-expand-lg .navbar-nav .dropdown-menu,html[data-netbox-color-mode=dark] .navbar-expand-lg .navbar-nav .dropdown-menu,html[data-netbox-color-mode=light] .navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}html .navbar-expand-lg .navbar-nav .nav-link,html[data-netbox-color-mode=dark] .navbar-expand-lg .navbar-nav .nav-link,html[data-netbox-color-mode=light] .navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}html .navbar-expand-lg .navbar-nav-scroll,html[data-netbox-color-mode=dark] .navbar-expand-lg .navbar-nav-scroll,html[data-netbox-color-mode=light] .navbar-expand-lg .navbar-nav-scroll{overflow:visible}html .navbar-expand-lg .navbar-collapse,html[data-netbox-color-mode=dark] .navbar-expand-lg .navbar-collapse,html[data-netbox-color-mode=light] .navbar-expand-lg .navbar-collapse{display:flex!important;flex-basis:auto}html .navbar-expand-lg .navbar-toggler,html[data-netbox-color-mode=dark] .navbar-expand-lg .navbar-toggler,html[data-netbox-color-mode=light] .navbar-expand-lg .navbar-toggler{display:none}}@media print and (min-width: 1200px){html .navbar-expand-xl,html[data-netbox-color-mode=dark] .navbar-expand-xl,html[data-netbox-color-mode=light] .navbar-expand-xl{flex-wrap:nowrap;justify-content:flex-start}html .navbar-expand-xl .navbar-nav,html[data-netbox-color-mode=dark] .navbar-expand-xl .navbar-nav,html[data-netbox-color-mode=light] .navbar-expand-xl .navbar-nav{flex-direction:row}html .navbar-expand-xl .navbar-nav .dropdown-menu,html[data-netbox-color-mode=dark] .navbar-expand-xl .navbar-nav .dropdown-menu,html[data-netbox-color-mode=light] .navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}html .navbar-expand-xl .navbar-nav .nav-link,html[data-netbox-color-mode=dark] .navbar-expand-xl .navbar-nav .nav-link,html[data-netbox-color-mode=light] .navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}html .navbar-expand-xl .navbar-nav-scroll,html[data-netbox-color-mode=dark] .navbar-expand-xl .navbar-nav-scroll,html[data-netbox-color-mode=light] .navbar-expand-xl .navbar-nav-scroll{overflow:visible}html .navbar-expand-xl .navbar-collapse,html[data-netbox-color-mode=dark] .navbar-expand-xl .navbar-collapse,html[data-netbox-color-mode=light] .navbar-expand-xl .navbar-collapse{display:flex!important;flex-basis:auto}html .navbar-expand-xl .navbar-toggler,html[data-netbox-color-mode=dark] .navbar-expand-xl .navbar-toggler,html[data-netbox-color-mode=light] .navbar-expand-xl .navbar-toggler{display:none}}@media print and (min-width: 1400px){html .navbar-expand-xxl,html[data-netbox-color-mode=dark] .navbar-expand-xxl,html[data-netbox-color-mode=light] .navbar-expand-xxl{flex-wrap:nowrap;justify-content:flex-start}html .navbar-expand-xxl .navbar-nav,html[data-netbox-color-mode=dark] .navbar-expand-xxl .navbar-nav,html[data-netbox-color-mode=light] .navbar-expand-xxl .navbar-nav{flex-direction:row}html .navbar-expand-xxl .navbar-nav .dropdown-menu,html[data-netbox-color-mode=dark] .navbar-expand-xxl .navbar-nav .dropdown-menu,html[data-netbox-color-mode=light] .navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}html .navbar-expand-xxl .navbar-nav .nav-link,html[data-netbox-color-mode=dark] .navbar-expand-xxl .navbar-nav .nav-link,html[data-netbox-color-mode=light] .navbar-expand-xxl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}html .navbar-expand-xxl .navbar-nav-scroll,html[data-netbox-color-mode=dark] .navbar-expand-xxl .navbar-nav-scroll,html[data-netbox-color-mode=light] .navbar-expand-xxl .navbar-nav-scroll{overflow:visible}html .navbar-expand-xxl .navbar-collapse,html[data-netbox-color-mode=dark] .navbar-expand-xxl .navbar-collapse,html[data-netbox-color-mode=light] .navbar-expand-xxl .navbar-collapse{display:flex!important;flex-basis:auto}html .navbar-expand-xxl .navbar-toggler,html[data-netbox-color-mode=dark] .navbar-expand-xxl .navbar-toggler,html[data-netbox-color-mode=light] .navbar-expand-xxl .navbar-toggler{display:none}}@media print{html .navbar-expand,html[data-netbox-color-mode=dark] .navbar-expand,html[data-netbox-color-mode=light] .navbar-expand{flex-wrap:nowrap;justify-content:flex-start}html .navbar-expand .navbar-nav,html[data-netbox-color-mode=dark] .navbar-expand .navbar-nav,html[data-netbox-color-mode=light] .navbar-expand .navbar-nav{flex-direction:row}html .navbar-expand .navbar-nav .dropdown-menu,html[data-netbox-color-mode=dark] .navbar-expand .navbar-nav .dropdown-menu,html[data-netbox-color-mode=light] .navbar-expand .navbar-nav .dropdown-menu{position:absolute}html .navbar-expand .navbar-nav .nav-link,html[data-netbox-color-mode=dark] .navbar-expand .navbar-nav .nav-link,html[data-netbox-color-mode=light] .navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}html .navbar-expand .navbar-nav-scroll,html[data-netbox-color-mode=dark] .navbar-expand .navbar-nav-scroll,html[data-netbox-color-mode=light] .navbar-expand .navbar-nav-scroll{overflow:visible}html .navbar-expand .navbar-collapse,html[data-netbox-color-mode=dark] .navbar-expand .navbar-collapse,html[data-netbox-color-mode=light] .navbar-expand .navbar-collapse{display:flex!important;flex-basis:auto}html .navbar-expand .navbar-toggler,html[data-netbox-color-mode=dark] .navbar-expand .navbar-toggler,html[data-netbox-color-mode=light] .navbar-expand .navbar-toggler{display:none}}@media print{html .navbar-light .navbar-brand,html[data-netbox-color-mode=dark] .navbar-light .navbar-brand,html[data-netbox-color-mode=light] .navbar-light .navbar-brand{color:#000000e6}html .navbar-light .navbar-brand:hover,html .navbar-light .navbar-brand:focus,html[data-netbox-color-mode=dark] .navbar-light .navbar-brand:hover,html[data-netbox-color-mode=dark] .navbar-light .navbar-brand:focus,html[data-netbox-color-mode=light] .navbar-light .navbar-brand:hover,html[data-netbox-color-mode=light] .navbar-light .navbar-brand:focus{color:#000000e6}html .navbar-light .navbar-nav .nav-link,html[data-netbox-color-mode=dark] .navbar-light .navbar-nav .nav-link,html[data-netbox-color-mode=light] .navbar-light .navbar-nav .nav-link{color:#0000008c}html .navbar-light .navbar-nav .nav-link:hover,html .navbar-light .navbar-nav .nav-link:focus,html[data-netbox-color-mode=dark] .navbar-light .navbar-nav .nav-link:hover,html[data-netbox-color-mode=dark] .navbar-light .navbar-nav .nav-link:focus,html[data-netbox-color-mode=light] .navbar-light .navbar-nav .nav-link:hover,html[data-netbox-color-mode=light] .navbar-light .navbar-nav .nav-link:focus{color:#000000b3}html .navbar-light .navbar-nav .nav-link.disabled,html[data-netbox-color-mode=dark] .navbar-light .navbar-nav .nav-link.disabled,html[data-netbox-color-mode=light] .navbar-light .navbar-nav .nav-link.disabled{color:#0000004d}html .navbar-light .navbar-nav .show>.nav-link,html .navbar-light .navbar-nav .nav-link.active,html[data-netbox-color-mode=dark] .navbar-light .navbar-nav .show>.nav-link,html[data-netbox-color-mode=dark] .navbar-light .navbar-nav .nav-link.active,html[data-netbox-color-mode=light] .navbar-light .navbar-nav .show>.nav-link,html[data-netbox-color-mode=light] .navbar-light .navbar-nav .nav-link.active{color:#000000e6}html .navbar-light .navbar-toggler,html[data-netbox-color-mode=dark] .navbar-light .navbar-toggler,html[data-netbox-color-mode=light] .navbar-light .navbar-toggler{color:#0000008c;border-color:#0000001a}html .navbar-light .navbar-toggler-icon,html[data-netbox-color-mode=dark] .navbar-light .navbar-toggler-icon,html[data-netbox-color-mode=light] .navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}html .navbar-light .navbar-text,html[data-netbox-color-mode=dark] .navbar-light .navbar-text,html[data-netbox-color-mode=light] .navbar-light .navbar-text{color:#0000008c}html .navbar-light .navbar-text a,html .navbar-light .navbar-text a:hover,html .navbar-light .navbar-text a:focus,html[data-netbox-color-mode=dark] .navbar-light .navbar-text a,html[data-netbox-color-mode=dark] .navbar-light .navbar-text a:hover,html[data-netbox-color-mode=dark] .navbar-light .navbar-text a:focus,html[data-netbox-color-mode=light] .navbar-light .navbar-text a,html[data-netbox-color-mode=light] .navbar-light .navbar-text a:hover,html[data-netbox-color-mode=light] .navbar-light .navbar-text a:focus{color:#000000e6}}@media print{html .navbar-dark .navbar-brand,html[data-netbox-color-mode=dark] .navbar-dark .navbar-brand,html[data-netbox-color-mode=light] .navbar-dark .navbar-brand{color:#fff}html .navbar-dark .navbar-brand:hover,html .navbar-dark .navbar-brand:focus,html[data-netbox-color-mode=dark] .navbar-dark .navbar-brand:hover,html[data-netbox-color-mode=dark] .navbar-dark .navbar-brand:focus,html[data-netbox-color-mode=light] .navbar-dark .navbar-brand:hover,html[data-netbox-color-mode=light] .navbar-dark .navbar-brand:focus{color:#fff}html .navbar-dark .navbar-nav .nav-link,html[data-netbox-color-mode=dark] .navbar-dark .navbar-nav .nav-link,html[data-netbox-color-mode=light] .navbar-dark .navbar-nav .nav-link{color:#ffffff8c}html .navbar-dark .navbar-nav .nav-link:hover,html .navbar-dark .navbar-nav .nav-link:focus,html[data-netbox-color-mode=dark] .navbar-dark .navbar-nav .nav-link:hover,html[data-netbox-color-mode=dark] .navbar-dark .navbar-nav .nav-link:focus,html[data-netbox-color-mode=light] .navbar-dark .navbar-nav .nav-link:hover,html[data-netbox-color-mode=light] .navbar-dark .navbar-nav .nav-link:focus{color:#ffffffbf}html .navbar-dark .navbar-nav .nav-link.disabled,html[data-netbox-color-mode=dark] .navbar-dark .navbar-nav .nav-link.disabled,html[data-netbox-color-mode=light] .navbar-dark .navbar-nav .nav-link.disabled{color:#ffffff40}html .navbar-dark .navbar-nav .show>.nav-link,html .navbar-dark .navbar-nav .nav-link.active,html[data-netbox-color-mode=dark] .navbar-dark .navbar-nav .show>.nav-link,html[data-netbox-color-mode=dark] .navbar-dark .navbar-nav .nav-link.active,html[data-netbox-color-mode=light] .navbar-dark .navbar-nav .show>.nav-link,html[data-netbox-color-mode=light] .navbar-dark .navbar-nav .nav-link.active{color:#fff}html .navbar-dark .navbar-toggler,html[data-netbox-color-mode=dark] .navbar-dark .navbar-toggler,html[data-netbox-color-mode=light] .navbar-dark .navbar-toggler{color:#ffffff8c;border-color:#ffffff1a}html .navbar-dark .navbar-toggler-icon,html[data-netbox-color-mode=dark] .navbar-dark .navbar-toggler-icon,html[data-netbox-color-mode=light] .navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}html .navbar-dark .navbar-text,html[data-netbox-color-mode=dark] .navbar-dark .navbar-text,html[data-netbox-color-mode=light] .navbar-dark .navbar-text{color:#ffffff8c}html .navbar-dark .navbar-text a,html .navbar-dark .navbar-text a:hover,html .navbar-dark .navbar-text a:focus,html[data-netbox-color-mode=dark] .navbar-dark .navbar-text a,html[data-netbox-color-mode=dark] .navbar-dark .navbar-text a:hover,html[data-netbox-color-mode=dark] .navbar-dark .navbar-text a:focus,html[data-netbox-color-mode=light] .navbar-dark .navbar-text a,html[data-netbox-color-mode=light] .navbar-dark .navbar-text a:hover,html[data-netbox-color-mode=light] .navbar-dark .navbar-text a:focus{color:#fff}}@media print{html .card,html[data-netbox-color-mode=dark] .card,html[data-netbox-color-mode=light] .card{position:relative;display:flex;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,.125);border-radius:.375rem}html .card>hr,html[data-netbox-color-mode=dark] .card>hr,html[data-netbox-color-mode=light] .card>hr{margin-right:0;margin-left:0}html .card>.list-group,html[data-netbox-color-mode=dark] .card>.list-group,html[data-netbox-color-mode=light] .card>.list-group{border-top:inherit;border-bottom:inherit}html .card>.list-group:first-child,html[data-netbox-color-mode=dark] .card>.list-group:first-child,html[data-netbox-color-mode=light] .card>.list-group:first-child{border-top-width:0;border-top-left-radius:calc(.375rem - 1px);border-top-right-radius:calc(.375rem - 1px)}html .card>.list-group:last-child,html[data-netbox-color-mode=dark] .card>.list-group:last-child,html[data-netbox-color-mode=light] .card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:calc(.375rem - 1px);border-bottom-left-radius:calc(.375rem - 1px)}html .card>.card-header+.list-group,html .card>.list-group+.card-footer,html[data-netbox-color-mode=dark] .card>.card-header+.list-group,html[data-netbox-color-mode=dark] .card>.list-group+.card-footer,html[data-netbox-color-mode=light] .card>.card-header+.list-group,html[data-netbox-color-mode=light] .card>.list-group+.card-footer{border-top:0}}@media print{html .card-body,html[data-netbox-color-mode=dark] .card-body,html[data-netbox-color-mode=light] .card-body{flex:1 1 auto;padding:1rem}}@media print{html .card-title,html[data-netbox-color-mode=dark] .card-title,html[data-netbox-color-mode=light] .card-title{margin-bottom:.5rem}}@media print{html .card-subtitle,html[data-netbox-color-mode=dark] .card-subtitle,html[data-netbox-color-mode=light] .card-subtitle{margin-top:-.25rem;margin-bottom:0}}@media print{html .card-text:last-child,html[data-netbox-color-mode=dark] .card-text:last-child,html[data-netbox-color-mode=light] .card-text:last-child{margin-bottom:0}}@media print{html .card-link:hover,html[data-netbox-color-mode=dark] .card-link:hover,html[data-netbox-color-mode=light] .card-link:hover{text-decoration:none}html .card-link+.card-link,html[data-netbox-color-mode=dark] .card-link+.card-link,html[data-netbox-color-mode=light] .card-link+.card-link{margin-left:1rem}}@media print{html .card-header,html[data-netbox-color-mode=dark] .card-header,html[data-netbox-color-mode=light] .card-header{padding:.5rem 1rem;margin-bottom:0;color:#343a40;background-color:"unset";border-bottom:1px solid rgba(0,0,0,.125)}html .card-header:first-child,html[data-netbox-color-mode=dark] .card-header:first-child,html[data-netbox-color-mode=light] .card-header:first-child{border-radius:calc(.375rem - 1px) calc(.375rem - 1px) 0 0}}@media print{html .card-footer,html[data-netbox-color-mode=dark] .card-footer,html[data-netbox-color-mode=light] .card-footer{padding:.5rem 1rem;color:#343a40;background-color:"unset";border-top:1px solid rgba(0,0,0,.125)}html .card-footer:last-child,html[data-netbox-color-mode=dark] .card-footer:last-child,html[data-netbox-color-mode=light] .card-footer:last-child{border-radius:0 0 calc(.375rem - 1px) calc(.375rem - 1px)}}@media print{html .card-header-tabs,html[data-netbox-color-mode=dark] .card-header-tabs,html[data-netbox-color-mode=light] .card-header-tabs{margin-right:-.5rem;margin-bottom:-.5rem;margin-left:-.5rem;border-bottom:0}}@media print{html .card-header-pills,html[data-netbox-color-mode=dark] .card-header-pills,html[data-netbox-color-mode=light] .card-header-pills{margin-right:-.5rem;margin-left:-.5rem}}@media print{html .card-img-overlay,html[data-netbox-color-mode=dark] .card-img-overlay,html[data-netbox-color-mode=light] .card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1rem;border-radius:calc(.375rem - 1px)}}@media print{html .card-img,html .card-img-top,html .card-img-bottom,html[data-netbox-color-mode=dark] .card-img,html[data-netbox-color-mode=dark] .card-img-top,html[data-netbox-color-mode=dark] .card-img-bottom,html[data-netbox-color-mode=light] .card-img,html[data-netbox-color-mode=light] .card-img-top,html[data-netbox-color-mode=light] .card-img-bottom{width:100%}}@media print{html .card-img,html .card-img-top,html[data-netbox-color-mode=dark] .card-img,html[data-netbox-color-mode=dark] .card-img-top,html[data-netbox-color-mode=light] .card-img,html[data-netbox-color-mode=light] .card-img-top{border-top-left-radius:calc(.375rem - 1px);border-top-right-radius:calc(.375rem - 1px)}}@media print{html .card-img,html .card-img-bottom,html[data-netbox-color-mode=dark] .card-img,html[data-netbox-color-mode=dark] .card-img-bottom,html[data-netbox-color-mode=light] .card-img,html[data-netbox-color-mode=light] .card-img-bottom{border-bottom-right-radius:calc(.375rem - 1px);border-bottom-left-radius:calc(.375rem - 1px)}}@media print{html .card-group>.card,html[data-netbox-color-mode=dark] .card-group>.card,html[data-netbox-color-mode=light] .card-group>.card{margin-bottom:.75rem}}@media print and (min-width: 576px){html .card-group,html[data-netbox-color-mode=dark] .card-group,html[data-netbox-color-mode=light] .card-group{display:flex;flex-flow:row wrap}html .card-group>.card,html[data-netbox-color-mode=dark] .card-group>.card,html[data-netbox-color-mode=light] .card-group>.card{flex:1 0 0%;margin-bottom:0}html .card-group>.card+.card,html[data-netbox-color-mode=dark] .card-group>.card+.card,html[data-netbox-color-mode=light] .card-group>.card+.card{margin-left:0;border-left:0}html .card-group>.card:not(:last-child),html[data-netbox-color-mode=dark] .card-group>.card:not(:last-child),html[data-netbox-color-mode=light] .card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}html .card-group>.card:not(:last-child) .card-img-top,html .card-group>.card:not(:last-child) .card-header,html[data-netbox-color-mode=dark] .card-group>.card:not(:last-child) .card-img-top,html[data-netbox-color-mode=dark] .card-group>.card:not(:last-child) .card-header,html[data-netbox-color-mode=light] .card-group>.card:not(:last-child) .card-img-top,html[data-netbox-color-mode=light] .card-group>.card:not(:last-child) .card-header{border-top-right-radius:0}html .card-group>.card:not(:last-child) .card-img-bottom,html .card-group>.card:not(:last-child) .card-footer,html[data-netbox-color-mode=dark] .card-group>.card:not(:last-child) .card-img-bottom,html[data-netbox-color-mode=dark] .card-group>.card:not(:last-child) .card-footer,html[data-netbox-color-mode=light] .card-group>.card:not(:last-child) .card-img-bottom,html[data-netbox-color-mode=light] .card-group>.card:not(:last-child) .card-footer{border-bottom-right-radius:0}html .card-group>.card:not(:first-child),html[data-netbox-color-mode=dark] .card-group>.card:not(:first-child),html[data-netbox-color-mode=light] .card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}html .card-group>.card:not(:first-child) .card-img-top,html .card-group>.card:not(:first-child) .card-header,html[data-netbox-color-mode=dark] .card-group>.card:not(:first-child) .card-img-top,html[data-netbox-color-mode=dark] .card-group>.card:not(:first-child) .card-header,html[data-netbox-color-mode=light] .card-group>.card:not(:first-child) .card-img-top,html[data-netbox-color-mode=light] .card-group>.card:not(:first-child) .card-header{border-top-left-radius:0}html .card-group>.card:not(:first-child) .card-img-bottom,html .card-group>.card:not(:first-child) .card-footer,html[data-netbox-color-mode=dark] .card-group>.card:not(:first-child) .card-img-bottom,html[data-netbox-color-mode=dark] .card-group>.card:not(:first-child) .card-footer,html[data-netbox-color-mode=light] .card-group>.card:not(:first-child) .card-img-bottom,html[data-netbox-color-mode=light] .card-group>.card:not(:first-child) .card-footer{border-bottom-left-radius:0}}@media print{html .accordion-button,html[data-netbox-color-mode=dark] .accordion-button,html[data-netbox-color-mode=light] .accordion-button{position:relative;display:flex;align-items:center;width:100%;padding:1rem 1.25rem;font-size:1rem;color:#212529;text-align:left;background-color:transparent;border:0;border-radius:0;overflow-anchor:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,border-radius .15s ease}}@media print and (prefers-reduced-motion: reduce){html .accordion-button,html[data-netbox-color-mode=dark] .accordion-button,html[data-netbox-color-mode=light] .accordion-button{transition:none}}@media print{html .accordion-button:not(.collapsed),html[data-netbox-color-mode=dark] .accordion-button:not(.collapsed),html[data-netbox-color-mode=light] .accordion-button:not(.collapsed){color:#343a40;background-color:#cfe2ff;box-shadow:inset 0 -1px #dee2e6}html .accordion-button:not(.collapsed):after,html[data-netbox-color-mode=dark] .accordion-button:not(.collapsed):after,html[data-netbox-color-mode=light] .accordion-button:not(.collapsed):after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230c63e4'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");transform:rotate(-180deg)}}@media print{html .accordion-button:after,html[data-netbox-color-mode=dark] .accordion-button:after,html[data-netbox-color-mode=light] .accordion-button:after{flex-shrink:0;width:1.25rem;height:1.25rem;margin-left:auto;content:"";background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23212529'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-size:1.25rem;transition:transform .2s ease-in-out}}@media print and (prefers-reduced-motion: reduce){html .accordion-button:after,html[data-netbox-color-mode=dark] .accordion-button:after,html[data-netbox-color-mode=light] .accordion-button:after{transition:none}}@media print{html .accordion-button:hover,html[data-netbox-color-mode=dark] .accordion-button:hover,html[data-netbox-color-mode=light] .accordion-button:hover{z-index:2}}@media print{html .accordion-button:focus,html[data-netbox-color-mode=dark] .accordion-button:focus,html[data-netbox-color-mode=light] .accordion-button:focus{z-index:3;border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}}@media print{html .accordion-header,html[data-netbox-color-mode=dark] .accordion-header,html[data-netbox-color-mode=light] .accordion-header{margin-bottom:0}}@media print{html .accordion-item,html[data-netbox-color-mode=dark] .accordion-item,html[data-netbox-color-mode=light] .accordion-item{background-color:transparent;border:1px solid #dee2e6}html .accordion-item:first-of-type,html[data-netbox-color-mode=dark] .accordion-item:first-of-type,html[data-netbox-color-mode=light] .accordion-item:first-of-type{border-top-left-radius:.375rem;border-top-right-radius:.375rem}html .accordion-item:first-of-type .accordion-button,html[data-netbox-color-mode=dark] .accordion-item:first-of-type .accordion-button,html[data-netbox-color-mode=light] .accordion-item:first-of-type .accordion-button{border-top-left-radius:calc(.375rem - 1px);border-top-right-radius:calc(.375rem - 1px)}html .accordion-item:not(:first-of-type),html[data-netbox-color-mode=dark] .accordion-item:not(:first-of-type),html[data-netbox-color-mode=light] .accordion-item:not(:first-of-type){border-top:0}html .accordion-item:last-of-type,html[data-netbox-color-mode=dark] .accordion-item:last-of-type,html[data-netbox-color-mode=light] .accordion-item:last-of-type{border-bottom-right-radius:.375rem;border-bottom-left-radius:.375rem}html .accordion-item:last-of-type .accordion-button.collapsed,html[data-netbox-color-mode=dark] .accordion-item:last-of-type .accordion-button.collapsed,html[data-netbox-color-mode=light] .accordion-item:last-of-type .accordion-button.collapsed{border-bottom-right-radius:calc(.375rem - 1px);border-bottom-left-radius:calc(.375rem - 1px)}html .accordion-item:last-of-type .accordion-collapse,html[data-netbox-color-mode=dark] .accordion-item:last-of-type .accordion-collapse,html[data-netbox-color-mode=light] .accordion-item:last-of-type .accordion-collapse{border-bottom-right-radius:.375rem;border-bottom-left-radius:.375rem}}@media print{html .accordion-body,html[data-netbox-color-mode=dark] .accordion-body,html[data-netbox-color-mode=light] .accordion-body{padding:1rem 1.25rem}}@media print{html .accordion-flush .accordion-collapse,html[data-netbox-color-mode=dark] .accordion-flush .accordion-collapse,html[data-netbox-color-mode=light] .accordion-flush .accordion-collapse{border-width:0}html .accordion-flush .accordion-item,html[data-netbox-color-mode=dark] .accordion-flush .accordion-item,html[data-netbox-color-mode=light] .accordion-flush .accordion-item{border-right:0;border-left:0;border-radius:0}html .accordion-flush .accordion-item:first-child,html[data-netbox-color-mode=dark] .accordion-flush .accordion-item:first-child,html[data-netbox-color-mode=light] .accordion-flush .accordion-item:first-child{border-top:0}html .accordion-flush .accordion-item:last-child,html[data-netbox-color-mode=dark] .accordion-flush .accordion-item:last-child,html[data-netbox-color-mode=light] .accordion-flush .accordion-item:last-child{border-bottom:0}html .accordion-flush .accordion-item .accordion-button,html[data-netbox-color-mode=dark] .accordion-flush .accordion-item .accordion-button,html[data-netbox-color-mode=light] .accordion-flush .accordion-item .accordion-button{border-radius:0}}@media print{html .breadcrumb,html[data-netbox-color-mode=dark] .breadcrumb,html[data-netbox-color-mode=light] .breadcrumb{display:flex;flex-wrap:wrap;padding:0;margin-bottom:1rem;list-style:none}}@media print{html .breadcrumb-item+.breadcrumb-item,html[data-netbox-color-mode=dark] .breadcrumb-item+.breadcrumb-item,html[data-netbox-color-mode=light] .breadcrumb-item+.breadcrumb-item{padding-left:.5rem}html .breadcrumb-item+.breadcrumb-item:before,html[data-netbox-color-mode=dark] .breadcrumb-item+.breadcrumb-item:before,html[data-netbox-color-mode=light] .breadcrumb-item+.breadcrumb-item:before{float:left;padding-right:.5rem;color:#6c757d;content:var(--bs-breadcrumb-divider, url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8'%3E%3Cpath d='M2.5 0L1 1.5 3.5 4 1 6.5 2.5 8l4-4-4-4z' fill='currentColor'/%3E%3C/svg%3E"))}html .breadcrumb-item.active,html[data-netbox-color-mode=dark] .breadcrumb-item.active,html[data-netbox-color-mode=light] .breadcrumb-item.active{color:#6c757d}}@media print{html .pagination,html[data-netbox-color-mode=dark] .pagination,html[data-netbox-color-mode=light] .pagination{display:flex;padding-left:0;list-style:none}}@media print{html .page-link,html[data-netbox-color-mode=dark] .page-link,html[data-netbox-color-mode=light] .page-link{position:relative;display:block;color:#0d6efd;text-decoration:none;background-color:#fff;border:1px solid #dee2e6;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}}@media print and (prefers-reduced-motion: reduce){html .page-link,html[data-netbox-color-mode=dark] .page-link,html[data-netbox-color-mode=light] .page-link{transition:none}}@media print{html .page-link:hover,html[data-netbox-color-mode=dark] .page-link:hover,html[data-netbox-color-mode=light] .page-link:hover{z-index:2;color:#0a58ca;background-color:#e9ecef;border-color:#dee2e6}}@media print{html .page-link:focus,html[data-netbox-color-mode=dark] .page-link:focus,html[data-netbox-color-mode=light] .page-link:focus{z-index:3;color:#0a58ca;background-color:#e9ecef;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}}@media print{html .page-item:not(:first-child) .page-link,html[data-netbox-color-mode=dark] .page-item:not(:first-child) .page-link,html[data-netbox-color-mode=light] .page-item:not(:first-child) .page-link{margin-left:-1px}html .page-item.active .page-link,html[data-netbox-color-mode=dark] .page-item.active .page-link,html[data-netbox-color-mode=light] .page-item.active .page-link{z-index:3;color:#fff;background-color:#0d6efd;border-color:#0d6efd}html .page-item.disabled .page-link,html[data-netbox-color-mode=dark] .page-item.disabled .page-link,html[data-netbox-color-mode=light] .page-item.disabled .page-link{color:#6c757d;pointer-events:none;background-color:#fff;border-color:#dee2e6}}@media print{html .page-link,html[data-netbox-color-mode=dark] .page-link,html[data-netbox-color-mode=light] .page-link{padding:.375rem .75rem}}@media print{html .page-item:first-child .page-link,html[data-netbox-color-mode=dark] .page-item:first-child .page-link,html[data-netbox-color-mode=light] .page-item:first-child .page-link{border-top-left-radius:.375rem;border-bottom-left-radius:.375rem}html .page-item:last-child .page-link,html[data-netbox-color-mode=dark] .page-item:last-child .page-link,html[data-netbox-color-mode=light] .page-item:last-child .page-link{border-top-right-radius:.375rem;border-bottom-right-radius:.375rem}}@media print{html .pagination-lg .page-link,html[data-netbox-color-mode=dark] .pagination-lg .page-link,html[data-netbox-color-mode=light] .pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem}html .pagination-lg .page-item:first-child .page-link,html[data-netbox-color-mode=dark] .pagination-lg .page-item:first-child .page-link,html[data-netbox-color-mode=light] .pagination-lg .page-item:first-child .page-link{border-top-left-radius:.75rem;border-bottom-left-radius:.75rem}html .pagination-lg .page-item:last-child .page-link,html[data-netbox-color-mode=dark] .pagination-lg .page-item:last-child .page-link,html[data-netbox-color-mode=light] .pagination-lg .page-item:last-child .page-link{border-top-right-radius:.75rem;border-bottom-right-radius:.75rem}}@media print{html .pagination-sm .page-link,html[data-netbox-color-mode=dark] .pagination-sm .page-link,html[data-netbox-color-mode=light] .pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem}html .pagination-sm .page-item:first-child .page-link,html[data-netbox-color-mode=dark] .pagination-sm .page-item:first-child .page-link,html[data-netbox-color-mode=light] .pagination-sm .page-item:first-child .page-link{border-top-left-radius:.375rem;border-bottom-left-radius:.375rem}html .pagination-sm .page-item:last-child .page-link,html[data-netbox-color-mode=dark] .pagination-sm .page-item:last-child .page-link,html[data-netbox-color-mode=light] .pagination-sm .page-item:last-child .page-link{border-top-right-radius:.375rem;border-bottom-right-radius:.375rem}}@media print{html .badge,html[data-netbox-color-mode=dark] .badge,html[data-netbox-color-mode=light] .badge{display:inline-block;padding:.35em .65em;font-size:.75em;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.375rem}html .badge:empty,html[data-netbox-color-mode=dark] .badge:empty,html[data-netbox-color-mode=light] .badge:empty{display:none}}@media print{html .btn .badge,html[data-netbox-color-mode=dark] .btn .badge,html[data-netbox-color-mode=light] .btn .badge{position:relative;top:-1px}}@media print{html .alert,html[data-netbox-color-mode=dark] .alert,html[data-netbox-color-mode=light] .alert{position:relative;padding:1rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.375rem}}@media print{html .alert-heading,html[data-netbox-color-mode=dark] .alert-heading,html[data-netbox-color-mode=light] .alert-heading{color:inherit}}@media print{html .alert-link,html[data-netbox-color-mode=dark] .alert-link,html[data-netbox-color-mode=light] .alert-link{font-weight:700}}@media print{html .alert-dismissible,html[data-netbox-color-mode=dark] .alert-dismissible,html[data-netbox-color-mode=light] .alert-dismissible{padding-right:3rem}html .alert-dismissible .btn-close,html[data-netbox-color-mode=dark] .alert-dismissible .btn-close,html[data-netbox-color-mode=light] .alert-dismissible .btn-close{position:absolute;top:0;right:0;z-index:2;padding:1.25rem 1rem}}@media print{html .alert-primary,html[data-netbox-color-mode=dark] .alert-primary,html[data-netbox-color-mode=light] .alert-primary{color:#1f496e;background-color:#d6e4f1;border-color:#c2d7e9}html .alert-primary .alert-link,html[data-netbox-color-mode=dark] .alert-primary .alert-link,html[data-netbox-color-mode=light] .alert-primary .alert-link{color:#193a58}}@media print{html .alert-secondary,html[data-netbox-color-mode=dark] .alert-secondary,html[data-netbox-color-mode=light] .alert-secondary{color:#41464b;background-color:#e2e3e5;border-color:#d3d6d8}html .alert-secondary .alert-link,html[data-netbox-color-mode=dark] .alert-secondary .alert-link,html[data-netbox-color-mode=light] .alert-secondary .alert-link{color:#34383c}}@media print{html .alert-success,html[data-netbox-color-mode=dark] .alert-success,html[data-netbox-color-mode=light] .alert-success{color:#0f5132;background-color:#d1e7dd;border-color:#badbcc}html .alert-success .alert-link,html[data-netbox-color-mode=dark] .alert-success .alert-link,html[data-netbox-color-mode=light] .alert-success .alert-link{color:#0c4128}}@media print{html .alert-info,html[data-netbox-color-mode=dark] .alert-info,html[data-netbox-color-mode=light] .alert-info{color:#055160;background-color:#cff4fc;border-color:#b6effb}html .alert-info .alert-link,html[data-netbox-color-mode=dark] .alert-info .alert-link,html[data-netbox-color-mode=light] .alert-info .alert-link{color:#04414d}}@media print{html .alert-warning,html[data-netbox-color-mode=dark] .alert-warning,html[data-netbox-color-mode=light] .alert-warning{color:#664d03;background-color:#fff3cd;border-color:#ffecb5}html .alert-warning .alert-link,html[data-netbox-color-mode=dark] .alert-warning .alert-link,html[data-netbox-color-mode=light] .alert-warning .alert-link{color:#523e02}}@media print{html .alert-danger,html[data-netbox-color-mode=dark] .alert-danger,html[data-netbox-color-mode=light] .alert-danger{color:#842029;background-color:#f8d7da;border-color:#f5c2c7}html .alert-danger .alert-link,html[data-netbox-color-mode=dark] .alert-danger .alert-link,html[data-netbox-color-mode=light] .alert-danger .alert-link{color:#6a1a21}}@media print{html .alert-light,html[data-netbox-color-mode=dark] .alert-light,html[data-netbox-color-mode=light] .alert-light{color:#636464;background-color:#fefefe;border-color:#fdfdfe}html .alert-light .alert-link,html[data-netbox-color-mode=dark] .alert-light .alert-link,html[data-netbox-color-mode=light] .alert-light .alert-link{color:#4f5050}}@media print{html .alert-dark,html[data-netbox-color-mode=dark] .alert-dark,html[data-netbox-color-mode=light] .alert-dark{color:#141619;background-color:#d3d3d4;border-color:#bcbebf}html .alert-dark .alert-link,html[data-netbox-color-mode=dark] .alert-dark .alert-link,html[data-netbox-color-mode=light] .alert-dark .alert-link{color:#101214}}@media print{html .alert-red,html[data-netbox-color-mode=dark] .alert-red,html[data-netbox-color-mode=light] .alert-red{color:#842029;background-color:#f8d7da;border-color:#f5c2c7}html .alert-red .alert-link,html[data-netbox-color-mode=dark] .alert-red .alert-link,html[data-netbox-color-mode=light] .alert-red .alert-link{color:#6a1a21}}@media print{html .alert-yellow,html[data-netbox-color-mode=dark] .alert-yellow,html[data-netbox-color-mode=light] .alert-yellow{color:#664d03;background-color:#fff3cd;border-color:#ffecb5}html .alert-yellow .alert-link,html[data-netbox-color-mode=dark] .alert-yellow .alert-link,html[data-netbox-color-mode=light] .alert-yellow .alert-link{color:#523e02}}@media print{html .alert-green,html[data-netbox-color-mode=dark] .alert-green,html[data-netbox-color-mode=light] .alert-green{color:#0f5132;background-color:#d1e7dd;border-color:#badbcc}html .alert-green .alert-link,html[data-netbox-color-mode=dark] .alert-green .alert-link,html[data-netbox-color-mode=light] .alert-green .alert-link{color:#0c4128}}@media print{html .alert-blue,html[data-netbox-color-mode=dark] .alert-blue,html[data-netbox-color-mode=light] .alert-blue{color:#084298;background-color:#cfe2ff;border-color:#b6d4fe}html .alert-blue .alert-link,html[data-netbox-color-mode=dark] .alert-blue .alert-link,html[data-netbox-color-mode=light] .alert-blue .alert-link{color:#06357a}}@media print{html .alert-cyan,html[data-netbox-color-mode=dark] .alert-cyan,html[data-netbox-color-mode=light] .alert-cyan{color:#055160;background-color:#cff4fc;border-color:#b6effb}html .alert-cyan .alert-link,html[data-netbox-color-mode=dark] .alert-cyan .alert-link,html[data-netbox-color-mode=light] .alert-cyan .alert-link{color:#04414d}}@media print{html .alert-indigo,html[data-netbox-color-mode=dark] .alert-indigo,html[data-netbox-color-mode=light] .alert-indigo{color:#3d0a91;background-color:#e0cffc;border-color:#d1b7fb}html .alert-indigo .alert-link,html[data-netbox-color-mode=dark] .alert-indigo .alert-link,html[data-netbox-color-mode=light] .alert-indigo .alert-link{color:#310874}}@media print{html .alert-purple,html[data-netbox-color-mode=dark] .alert-purple,html[data-netbox-color-mode=light] .alert-purple{color:#432874;background-color:#e2d9f3;border-color:#d4c6ec}html .alert-purple .alert-link,html[data-netbox-color-mode=dark] .alert-purple .alert-link,html[data-netbox-color-mode=light] .alert-purple .alert-link{color:#36205d}}@media print{html .alert-pink,html[data-netbox-color-mode=dark] .alert-pink,html[data-netbox-color-mode=light] .alert-pink{color:#801f4f;background-color:#f7d6e6;border-color:#f3c2da}html .alert-pink .alert-link,html[data-netbox-color-mode=dark] .alert-pink .alert-link,html[data-netbox-color-mode=light] .alert-pink .alert-link{color:#66193f}}@media print{html .alert-darker,html[data-netbox-color-mode=dark] .alert-darker,html[data-netbox-color-mode=light] .alert-darker{color:#101314;background-color:#d1d2d3;border-color:#bbbcbd}html .alert-darker .alert-link,html[data-netbox-color-mode=dark] .alert-darker .alert-link,html[data-netbox-color-mode=light] .alert-darker .alert-link{color:#0d0f10}}@media print{html .alert-darkest,html[data-netbox-color-mode=dark] .alert-darkest,html[data-netbox-color-mode=light] .alert-darkest{color:#0e1011;background-color:#d1d1d2;border-color:#b9bbbb}html .alert-darkest .alert-link,html[data-netbox-color-mode=dark] .alert-darkest .alert-link,html[data-netbox-color-mode=light] .alert-darkest .alert-link{color:#0b0d0e}}@media print{html .alert-gray,html[data-netbox-color-mode=dark] .alert-gray,html[data-netbox-color-mode=light] .alert-gray{color:#525557;background-color:#f5f6f8;border-color:#f0f2f4}html .alert-gray .alert-link,html[data-netbox-color-mode=dark] .alert-gray .alert-link,html[data-netbox-color-mode=light] .alert-gray .alert-link{color:#424446}}@media print{html .alert-gray-100,html[data-netbox-color-mode=dark] .alert-gray-100,html[data-netbox-color-mode=light] .alert-gray-100{color:#636464;background-color:#fefefe;border-color:#fdfdfe}html .alert-gray-100 .alert-link,html[data-netbox-color-mode=dark] .alert-gray-100 .alert-link,html[data-netbox-color-mode=light] .alert-gray-100 .alert-link{color:#4f5050}}@media print{html .alert-gray-200,html[data-netbox-color-mode=dark] .alert-gray-200,html[data-netbox-color-mode=light] .alert-gray-200{color:#5d5e60;background-color:#fbfbfc;border-color:#f8f9fa}html .alert-gray-200 .alert-link,html[data-netbox-color-mode=dark] .alert-gray-200 .alert-link,html[data-netbox-color-mode=light] .alert-gray-200 .alert-link{color:#4a4b4d}}@media print{html .alert-gray-300,html[data-netbox-color-mode=dark] .alert-gray-300,html[data-netbox-color-mode=light] .alert-gray-300{color:#595a5c;background-color:#f8f9fa;border-color:#f5f6f8}html .alert-gray-300 .alert-link,html[data-netbox-color-mode=dark] .alert-gray-300 .alert-link,html[data-netbox-color-mode=light] .alert-gray-300 .alert-link{color:#47484a}}@media print{html .alert-gray-400,html[data-netbox-color-mode=dark] .alert-gray-400,html[data-netbox-color-mode=light] .alert-gray-400{color:#525557;background-color:#f5f6f8;border-color:#f0f2f4}html .alert-gray-400 .alert-link,html[data-netbox-color-mode=dark] .alert-gray-400 .alert-link,html[data-netbox-color-mode=light] .alert-gray-400 .alert-link{color:#424446}}@media print{html .alert-gray-500,html[data-netbox-color-mode=dark] .alert-gray-500,html[data-netbox-color-mode=light] .alert-gray-500{color:#686d71;background-color:#eff0f2;border-color:#e6e9eb}html .alert-gray-500 .alert-link,html[data-netbox-color-mode=dark] .alert-gray-500 .alert-link,html[data-netbox-color-mode=light] .alert-gray-500 .alert-link{color:#53575a}}@media print{html .alert-gray-600,html[data-netbox-color-mode=dark] .alert-gray-600,html[data-netbox-color-mode=light] .alert-gray-600{color:#41464b;background-color:#e2e3e5;border-color:#d3d6d8}html .alert-gray-600 .alert-link,html[data-netbox-color-mode=dark] .alert-gray-600 .alert-link,html[data-netbox-color-mode=light] .alert-gray-600 .alert-link{color:#34383c}}@media print{html .alert-gray-700,html[data-netbox-color-mode=dark] .alert-gray-700,html[data-netbox-color-mode=light] .alert-gray-700{color:#2c3034;background-color:#dbdcdd;border-color:#c8cbcd}html .alert-gray-700 .alert-link,html[data-netbox-color-mode=dark] .alert-gray-700 .alert-link,html[data-netbox-color-mode=light] .alert-gray-700 .alert-link{color:#23262a}}@media print{html .alert-gray-800,html[data-netbox-color-mode=dark] .alert-gray-800,html[data-netbox-color-mode=light] .alert-gray-800{color:#1f2326;background-color:#d6d8d9;border-color:#c2c4c6}html .alert-gray-800 .alert-link,html[data-netbox-color-mode=dark] .alert-gray-800 .alert-link,html[data-netbox-color-mode=light] .alert-gray-800 .alert-link{color:#191c1e}}@media print{html .alert-gray-900,html[data-netbox-color-mode=dark] .alert-gray-900,html[data-netbox-color-mode=light] .alert-gray-900{color:#141619;background-color:#d3d3d4;border-color:#bcbebf}html .alert-gray-900 .alert-link,html[data-netbox-color-mode=dark] .alert-gray-900 .alert-link,html[data-netbox-color-mode=light] .alert-gray-900 .alert-link{color:#101214}}@media print{html .alert-red-100,html[data-netbox-color-mode=dark] .alert-red-100,html[data-netbox-color-mode=light] .alert-red-100{color:#635657;background-color:#fef7f8;border-color:#fdf3f4}html .alert-red-100 .alert-link,html[data-netbox-color-mode=dark] .alert-red-100 .alert-link,html[data-netbox-color-mode=light] .alert-red-100 .alert-link{color:#4f4546}}@media print{html .alert-red-200,html[data-netbox-color-mode=dark] .alert-red-200,html[data-netbox-color-mode=light] .alert-red-200{color:#604648;background-color:#fceff0;border-color:#fbe7e9}html .alert-red-200 .alert-link,html[data-netbox-color-mode=dark] .alert-red-200 .alert-link,html[data-netbox-color-mode=light] .alert-red-200 .alert-link{color:#4d383a}}@media print{html .alert-red-300,html[data-netbox-color-mode=dark] .alert-red-300,html[data-netbox-color-mode=light] .alert-red-300{color:#8c5056;background-color:#fbe7e9;border-color:#f9dbdd}html .alert-red-300 .alert-link,html[data-netbox-color-mode=dark] .alert-red-300 .alert-link,html[data-netbox-color-mode=light] .alert-red-300 .alert-link{color:#704045}}@media print{html .alert-red-400,html[data-netbox-color-mode=dark] .alert-red-400,html[data-netbox-color-mode=light] .alert-red-400{color:#883840;background-color:#f9dfe1;border-color:#f7ced2}html .alert-red-400 .alert-link,html[data-netbox-color-mode=dark] .alert-red-400 .alert-link,html[data-netbox-color-mode=light] .alert-red-400 .alert-link{color:#6d2d33}}@media print{html .alert-red-500,html[data-netbox-color-mode=dark] .alert-red-500,html[data-netbox-color-mode=light] .alert-red-500{color:#842029;background-color:#f8d7da;border-color:#f5c2c7}html .alert-red-500 .alert-link,html[data-netbox-color-mode=dark] .alert-red-500 .alert-link,html[data-netbox-color-mode=light] .alert-red-500 .alert-link{color:#6a1a21}}@media print{html .alert-red-600,html[data-netbox-color-mode=dark] .alert-red-600,html[data-netbox-color-mode=light] .alert-red-600{color:#6a1921;background-color:#efd4d7;border-color:#e7bfc3}html .alert-red-600 .alert-link,html[data-netbox-color-mode=dark] .alert-red-600 .alert-link,html[data-netbox-color-mode=light] .alert-red-600 .alert-link{color:#55141a}}@media print{html .alert-red-700,html[data-netbox-color-mode=dark] .alert-red-700,html[data-netbox-color-mode=light] .alert-red-700{color:#4f1319;background-color:#e6d2d4;border-color:#dabcbf}html .alert-red-700 .alert-link,html[data-netbox-color-mode=dark] .alert-red-700 .alert-link,html[data-netbox-color-mode=light] .alert-red-700 .alert-link{color:#3f0f14}}@media print{html .alert-red-800,html[data-netbox-color-mode=dark] .alert-red-800,html[data-netbox-color-mode=light] .alert-red-800{color:#350d11;background-color:#ded0d2;border-color:#cdb9bb}html .alert-red-800 .alert-link,html[data-netbox-color-mode=dark] .alert-red-800 .alert-link,html[data-netbox-color-mode=light] .alert-red-800 .alert-link{color:#2a0a0e}}@media print{html .alert-red-900,html[data-netbox-color-mode=dark] .alert-red-900,html[data-netbox-color-mode=light] .alert-red-900{color:#1a0708;background-color:#d5cecf;border-color:#c0b6b7}html .alert-red-900 .alert-link,html[data-netbox-color-mode=dark] .alert-red-900 .alert-link,html[data-netbox-color-mode=light] .alert-red-900 .alert-link{color:#150606}}@media print{html .alert-yellow-100,html[data-netbox-color-mode=dark] .alert-yellow-100,html[data-netbox-color-mode=light] .alert-yellow-100{color:#666152;background-color:#fffdf5;border-color:#fffbf0}html .alert-yellow-100 .alert-link,html[data-netbox-color-mode=dark] .alert-yellow-100 .alert-link,html[data-netbox-color-mode=light] .alert-yellow-100 .alert-link{color:#524e42}}@media print{html .alert-yellow-200,html[data-netbox-color-mode=dark] .alert-yellow-200,html[data-netbox-color-mode=light] .alert-yellow-200{color:#665c3e;background-color:#fffaeb;border-color:#fff8e1}html .alert-yellow-200 .alert-link,html[data-netbox-color-mode=dark] .alert-yellow-200 .alert-link,html[data-netbox-color-mode=light] .alert-yellow-200 .alert-link{color:#524a32}}@media print{html .alert-yellow-300,html[data-netbox-color-mode=dark] .alert-yellow-300,html[data-netbox-color-mode=light] .alert-yellow-300{color:#66572a;background-color:#fff8e1;border-color:#fff4d2}html .alert-yellow-300 .alert-link,html[data-netbox-color-mode=dark] .alert-yellow-300 .alert-link,html[data-netbox-color-mode=light] .alert-yellow-300 .alert-link{color:#524622}}@media print{html .alert-yellow-400,html[data-netbox-color-mode=dark] .alert-yellow-400,html[data-netbox-color-mode=light] .alert-yellow-400{color:#665217;background-color:#fff5d7;border-color:#fff0c4}html .alert-yellow-400 .alert-link,html[data-netbox-color-mode=dark] .alert-yellow-400 .alert-link,html[data-netbox-color-mode=light] .alert-yellow-400 .alert-link{color:#524212}}@media print{html .alert-yellow-500,html[data-netbox-color-mode=dark] .alert-yellow-500,html[data-netbox-color-mode=light] .alert-yellow-500{color:#664d03;background-color:#fff3cd;border-color:#ffecb5}html .alert-yellow-500 .alert-link,html[data-netbox-color-mode=dark] .alert-yellow-500 .alert-link,html[data-netbox-color-mode=light] .alert-yellow-500 .alert-link{color:#523e02}}@media print{html .alert-yellow-600,html[data-netbox-color-mode=dark] .alert-yellow-600,html[data-netbox-color-mode=light] .alert-yellow-600{color:#7a5c04;background-color:#f5ebcd;border-color:#f0e1b4}html .alert-yellow-600 .alert-link,html[data-netbox-color-mode=dark] .alert-yellow-600 .alert-link,html[data-netbox-color-mode=light] .alert-yellow-600 .alert-link{color:#624a03}}@media print{html .alert-yellow-700,html[data-netbox-color-mode=dark] .alert-yellow-700,html[data-netbox-color-mode=light] .alert-yellow-700{color:#5c4602;background-color:#ebe3cd;border-color:#e0d5b4}html .alert-yellow-700 .alert-link,html[data-netbox-color-mode=dark] .alert-yellow-700 .alert-link,html[data-netbox-color-mode=light] .alert-yellow-700 .alert-link{color:#4a3802}}@media print{html .alert-yellow-800,html[data-netbox-color-mode=dark] .alert-yellow-800,html[data-netbox-color-mode=light] .alert-yellow-800{color:#3d2e02;background-color:#e0dbcd;border-color:#d1cab3}html .alert-yellow-800 .alert-link,html[data-netbox-color-mode=dark] .alert-yellow-800 .alert-link,html[data-netbox-color-mode=light] .alert-yellow-800 .alert-link{color:#312502}}@media print{html .alert-yellow-900,html[data-netbox-color-mode=dark] .alert-yellow-900,html[data-netbox-color-mode=light] .alert-yellow-900{color:#1f1701;background-color:#d6d4cc;border-color:#c2beb3}html .alert-yellow-900 .alert-link,html[data-netbox-color-mode=dark] .alert-yellow-900 .alert-link,html[data-netbox-color-mode=light] .alert-yellow-900 .alert-link{color:#191201}}@media print{html .alert-green-100,html[data-netbox-color-mode=dark] .alert-green-100,html[data-netbox-color-mode=light] .alert-green-100{color:#545c58;background-color:#f6faf8;border-color:#f1f8f5}html .alert-green-100 .alert-link,html[data-netbox-color-mode=dark] .alert-green-100 .alert-link,html[data-netbox-color-mode=light] .alert-green-100 .alert-link{color:#434a46}}@media print{html .alert-green-200,html[data-netbox-color-mode=dark] .alert-green-200,html[data-netbox-color-mode=light] .alert-green-200{color:#41534b;background-color:#edf5f1;border-color:#e3f1eb}html .alert-green-200 .alert-link,html[data-netbox-color-mode=dark] .alert-green-200 .alert-link,html[data-netbox-color-mode=light] .alert-green-200 .alert-link{color:#34423c}}@media print{html .alert-green-300,html[data-netbox-color-mode=dark] .alert-green-300,html[data-netbox-color-mode=light] .alert-green-300{color:#466e5b;background-color:#e3f1ea;border-color:#d6e9e0}html .alert-green-300 .alert-link,html[data-netbox-color-mode=dark] .alert-green-300 .alert-link,html[data-netbox-color-mode=light] .alert-green-300 .alert-link{color:#385849}}@media print{html .alert-green-400,html[data-netbox-color-mode=dark] .alert-green-400,html[data-netbox-color-mode=light] .alert-green-400{color:#2b5f47;background-color:#daece4;border-color:#c8e2d6}html .alert-green-400 .alert-link,html[data-netbox-color-mode=dark] .alert-green-400 .alert-link,html[data-netbox-color-mode=light] .alert-green-400 .alert-link{color:#224c39}}@media print{html .alert-green-500,html[data-netbox-color-mode=dark] .alert-green-500,html[data-netbox-color-mode=light] .alert-green-500{color:#0f5132;background-color:#d1e7dd;border-color:#badbcc}html .alert-green-500 .alert-link,html[data-netbox-color-mode=dark] .alert-green-500 .alert-link,html[data-netbox-color-mode=light] .alert-green-500 .alert-link{color:#0c4128}}@media print{html .alert-green-600,html[data-netbox-color-mode=dark] .alert-green-600,html[data-netbox-color-mode=light] .alert-green-600{color:#0c4128;background-color:#d0e2d9;border-color:#b9d3c7}html .alert-green-600 .alert-link,html[data-netbox-color-mode=dark] .alert-green-600 .alert-link,html[data-netbox-color-mode=light] .alert-green-600 .alert-link{color:#0a3420}}@media print{html .alert-green-700,html[data-netbox-color-mode=dark] .alert-green-700,html[data-netbox-color-mode=light] .alert-green-700{color:#09311e;background-color:#cfdcd6;border-color:#b7cbc2}html .alert-green-700 .alert-link,html[data-netbox-color-mode=dark] .alert-green-700 .alert-link,html[data-netbox-color-mode=light] .alert-green-700 .alert-link{color:#072718}}@media print{html .alert-green-800,html[data-netbox-color-mode=dark] .alert-green-800,html[data-netbox-color-mode=light] .alert-green-800{color:#062014;background-color:#ced7d3;border-color:#b6c3bd}html .alert-green-800 .alert-link,html[data-netbox-color-mode=dark] .alert-green-800 .alert-link,html[data-netbox-color-mode=light] .alert-green-800 .alert-link{color:#051a10}}@media print{html .alert-green-900,html[data-netbox-color-mode=dark] .alert-green-900,html[data-netbox-color-mode=light] .alert-green-900{color:#03100a;background-color:#cdd1cf;border-color:#b4bbb8}html .alert-green-900 .alert-link,html[data-netbox-color-mode=dark] .alert-green-900 .alert-link,html[data-netbox-color-mode=light] .alert-green-900 .alert-link{color:#020d08}}@media print{html .alert-blue-100,html[data-netbox-color-mode=dark] .alert-blue-100,html[data-netbox-color-mode=light] .alert-blue-100{color:#535a66;background-color:#f5f9ff;border-color:#f1f6ff}html .alert-blue-100 .alert-link,html[data-netbox-color-mode=dark] .alert-blue-100 .alert-link,html[data-netbox-color-mode=light] .alert-blue-100 .alert-link{color:#424852}}@media print{html .alert-blue-200,html[data-netbox-color-mode=dark] .alert-blue-200,html[data-netbox-color-mode=light] .alert-blue-200{color:#3f4f66;background-color:#ecf3ff;border-color:#e2eeff}html .alert-blue-200 .alert-link,html[data-netbox-color-mode=dark] .alert-blue-200 .alert-link,html[data-netbox-color-mode=light] .alert-blue-200 .alert-link{color:#323f52}}@media print{html .alert-blue-300,html[data-netbox-color-mode=dark] .alert-blue-300,html[data-netbox-color-mode=light] .alert-blue-300{color:#426598;background-color:#e2eeff;border-color:#d4e5ff}html .alert-blue-300 .alert-link,html[data-netbox-color-mode=dark] .alert-blue-300 .alert-link,html[data-netbox-color-mode=light] .alert-blue-300 .alert-link{color:#35517a}}@media print{html .alert-blue-400,html[data-netbox-color-mode=dark] .alert-blue-400,html[data-netbox-color-mode=light] .alert-blue-400{color:#255398;background-color:#d8e8ff;border-color:#c5dcfe}html .alert-blue-400 .alert-link,html[data-netbox-color-mode=dark] .alert-blue-400 .alert-link,html[data-netbox-color-mode=light] .alert-blue-400 .alert-link{color:#1e427a}}@media print{html .alert-blue-500,html[data-netbox-color-mode=dark] .alert-blue-500,html[data-netbox-color-mode=light] .alert-blue-500{color:#084298;background-color:#cfe2ff;border-color:#b6d4fe}html .alert-blue-500 .alert-link,html[data-netbox-color-mode=dark] .alert-blue-500 .alert-link,html[data-netbox-color-mode=light] .alert-blue-500 .alert-link{color:#06357a}}@media print{html .alert-blue-600,html[data-netbox-color-mode=dark] .alert-blue-600,html[data-netbox-color-mode=light] .alert-blue-600{color:#063579;background-color:#cedef4;border-color:#b6cdef}html .alert-blue-600 .alert-link,html[data-netbox-color-mode=dark] .alert-blue-600 .alert-link,html[data-netbox-color-mode=light] .alert-blue-600 .alert-link{color:#052a61}}@media print{html .alert-blue-700,html[data-netbox-color-mode=dark] .alert-blue-700,html[data-netbox-color-mode=light] .alert-blue-700{color:#05285b;background-color:#ced9ea;border-color:#b5c6e0}html .alert-blue-700 .alert-link,html[data-netbox-color-mode=dark] .alert-blue-700 .alert-link,html[data-netbox-color-mode=light] .alert-blue-700 .alert-link{color:#042049}}@media print{html .alert-blue-800,html[data-netbox-color-mode=dark] .alert-blue-800,html[data-netbox-color-mode=light] .alert-blue-800{color:#031a3d;background-color:#cdd5e0;border-color:#b4c0d1}html .alert-blue-800 .alert-link,html[data-netbox-color-mode=dark] .alert-blue-800 .alert-link,html[data-netbox-color-mode=light] .alert-blue-800 .alert-link{color:#021531}}@media print{html .alert-blue-900,html[data-netbox-color-mode=dark] .alert-blue-900,html[data-netbox-color-mode=light] .alert-blue-900{color:#020d1f;background-color:#cdd0d6;border-color:#b3b9c2}html .alert-blue-900 .alert-link,html[data-netbox-color-mode=dark] .alert-blue-900 .alert-link,html[data-netbox-color-mode=light] .alert-blue-900 .alert-link{color:#020a19}}@media print{html .alert-cyan-100,html[data-netbox-color-mode=dark] .alert-cyan-100,html[data-netbox-color-mode=light] .alert-cyan-100{color:#536265;background-color:#f5fdfe;border-color:#f1fcfe}html .alert-cyan-100 .alert-link,html[data-netbox-color-mode=dark] .alert-cyan-100 .alert-link,html[data-netbox-color-mode=light] .alert-cyan-100 .alert-link{color:#424e51}}@media print{html .alert-cyan-200,html[data-netbox-color-mode=dark] .alert-cyan-200,html[data-netbox-color-mode=light] .alert-cyan-200{color:#3f5e64;background-color:#ecfbfe;border-color:#e2f9fd}html .alert-cyan-200 .alert-link,html[data-netbox-color-mode=dark] .alert-cyan-200 .alert-link,html[data-netbox-color-mode=light] .alert-cyan-200 .alert-link{color:#324b50}}@media print{html .alert-cyan-300,html[data-netbox-color-mode=dark] .alert-cyan-300,html[data-netbox-color-mode=light] .alert-cyan-300{color:#2c5962;background-color:#e2f9fd;border-color:#d4f5fc}html .alert-cyan-300 .alert-link,html[data-netbox-color-mode=dark] .alert-cyan-300 .alert-link,html[data-netbox-color-mode=light] .alert-cyan-300 .alert-link{color:#23474e}}@media print{html .alert-cyan-400,html[data-netbox-color-mode=dark] .alert-cyan-400,html[data-netbox-color-mode=light] .alert-cyan-400{color:#185561;background-color:#d8f7fd;border-color:#c5f2fb}html .alert-cyan-400 .alert-link,html[data-netbox-color-mode=dark] .alert-cyan-400 .alert-link,html[data-netbox-color-mode=light] .alert-cyan-400 .alert-link{color:#13444e}}@media print{html .alert-cyan-500,html[data-netbox-color-mode=dark] .alert-cyan-500,html[data-netbox-color-mode=light] .alert-cyan-500{color:#055160;background-color:#cff4fc;border-color:#b6effb}html .alert-cyan-500 .alert-link,html[data-netbox-color-mode=dark] .alert-cyan-500 .alert-link,html[data-netbox-color-mode=light] .alert-cyan-500 .alert-link{color:#04414d}}@media print{html .alert-cyan-600,html[data-netbox-color-mode=dark] .alert-cyan-600,html[data-netbox-color-mode=light] .alert-cyan-600{color:#066173;background-color:#ceecf2;border-color:#b6e3ec}html .alert-cyan-600 .alert-link,html[data-netbox-color-mode=dark] .alert-cyan-600 .alert-link,html[data-netbox-color-mode=light] .alert-cyan-600 .alert-link{color:#054e5c}}@media print{html .alert-cyan-700,html[data-netbox-color-mode=dark] .alert-cyan-700,html[data-netbox-color-mode=light] .alert-cyan-700{color:#054956;background-color:#cee4e9;border-color:#b5d7de}html .alert-cyan-700 .alert-link,html[data-netbox-color-mode=dark] .alert-cyan-700 .alert-link,html[data-netbox-color-mode=light] .alert-cyan-700 .alert-link{color:#043a45}}@media print{html .alert-cyan-800,html[data-netbox-color-mode=dark] .alert-cyan-800,html[data-netbox-color-mode=light] .alert-cyan-800{color:#03313a;background-color:#cddcdf;border-color:#b4cbcf}html .alert-cyan-800 .alert-link,html[data-netbox-color-mode=dark] .alert-cyan-800 .alert-link,html[data-netbox-color-mode=light] .alert-cyan-800 .alert-link{color:#02272e}}@media print{html .alert-cyan-900,html[data-netbox-color-mode=dark] .alert-cyan-900,html[data-netbox-color-mode=light] .alert-cyan-900{color:#02181d;background-color:#cdd4d6;border-color:#b3bfc1}html .alert-cyan-900 .alert-link,html[data-netbox-color-mode=dark] .alert-cyan-900 .alert-link,html[data-netbox-color-mode=light] .alert-cyan-900 .alert-link{color:#021317}}@media print{html .alert-indigo-100,html[data-netbox-color-mode=dark] .alert-indigo-100,html[data-netbox-color-mode=light] .alert-indigo-100{color:#5a5365;background-color:#f9f5fe;border-color:#f6f1fe}html .alert-indigo-100 .alert-link,html[data-netbox-color-mode=dark] .alert-indigo-100 .alert-link,html[data-netbox-color-mode=light] .alert-indigo-100 .alert-link{color:#484251}}@media print{html .alert-indigo-200,html[data-netbox-color-mode=dark] .alert-indigo-200,html[data-netbox-color-mode=light] .alert-indigo-200{color:#745f96;background-color:#f3ecfe;border-color:#ede2fe}html .alert-indigo-200 .alert-link,html[data-netbox-color-mode=dark] .alert-indigo-200 .alert-link,html[data-netbox-color-mode=light] .alert-indigo-200 .alert-link{color:#5d4c78}}@media print{html .alert-indigo-300,html[data-netbox-color-mode=dark] .alert-indigo-300,html[data-netbox-color-mode=light] .alert-indigo-300{color:#624394;background-color:#ede2fd;border-color:#e3d4fd}html .alert-indigo-300 .alert-link,html[data-netbox-color-mode=dark] .alert-indigo-300 .alert-link,html[data-netbox-color-mode=light] .alert-indigo-300 .alert-link{color:#4e3676}}@media print{html .alert-indigo-400,html[data-netbox-color-mode=dark] .alert-indigo-400,html[data-netbox-color-mode=light] .alert-indigo-400{color:#502693;background-color:#e7d9fd;border-color:#dac6fc}html .alert-indigo-400 .alert-link,html[data-netbox-color-mode=dark] .alert-indigo-400 .alert-link,html[data-netbox-color-mode=light] .alert-indigo-400 .alert-link{color:#401e76}}@media print{html .alert-indigo-500,html[data-netbox-color-mode=dark] .alert-indigo-500,html[data-netbox-color-mode=light] .alert-indigo-500{color:#3d0a91;background-color:#e0cffc;border-color:#d1b7fb}html .alert-indigo-500 .alert-link,html[data-netbox-color-mode=dark] .alert-indigo-500 .alert-link,html[data-netbox-color-mode=light] .alert-indigo-500 .alert-link{color:#310874}}@media print{html .alert-indigo-600,html[data-netbox-color-mode=dark] .alert-indigo-600,html[data-netbox-color-mode=light] .alert-indigo-600{color:#310874;background-color:#dccff3;border-color:#cbb6ed}html .alert-indigo-600 .alert-link,html[data-netbox-color-mode=dark] .alert-indigo-600 .alert-link,html[data-netbox-color-mode=light] .alert-indigo-600 .alert-link{color:#27065d}}@media print{html .alert-indigo-700,html[data-netbox-color-mode=dark] .alert-indigo-700,html[data-netbox-color-mode=light] .alert-indigo-700{color:#250657;background-color:#d8cee9;border-color:#c5b6de}html .alert-indigo-700 .alert-link,html[data-netbox-color-mode=dark] .alert-indigo-700 .alert-link,html[data-netbox-color-mode=light] .alert-indigo-700 .alert-link{color:#1e0546}}@media print{html .alert-indigo-800,html[data-netbox-color-mode=dark] .alert-indigo-800,html[data-netbox-color-mode=light] .alert-indigo-800{color:#19043a;background-color:#d4cddf;border-color:#bfb4d0}html .alert-indigo-800 .alert-link,html[data-netbox-color-mode=dark] .alert-indigo-800 .alert-link,html[data-netbox-color-mode=light] .alert-indigo-800 .alert-link{color:#14032e}}@media print{html .alert-indigo-900,html[data-netbox-color-mode=dark] .alert-indigo-900,html[data-netbox-color-mode=light] .alert-indigo-900{color:#0c021d;background-color:#d0cdd6;border-color:#b9b3c1}html .alert-indigo-900 .alert-link,html[data-netbox-color-mode=dark] .alert-indigo-900 .alert-link,html[data-netbox-color-mode=light] .alert-indigo-900 .alert-link{color:#0a0217}}@media print{html .alert-purple-100,html[data-netbox-color-mode=dark] .alert-purple-100,html[data-netbox-color-mode=light] .alert-purple-100{color:#5a5761;background-color:#f9f7fd;border-color:#f6f4fb}html .alert-purple-100 .alert-link,html[data-netbox-color-mode=dark] .alert-purple-100 .alert-link,html[data-netbox-color-mode=light] .alert-purple-100 .alert-link{color:#48464e}}@media print{html .alert-purple-200,html[data-netbox-color-mode=dark] .alert-purple-200,html[data-netbox-color-mode=light] .alert-purple-200{color:#4f485c;background-color:#f3f0fa;border-color:#eee8f8}html .alert-purple-200 .alert-link,html[data-netbox-color-mode=dark] .alert-purple-200 .alert-link,html[data-netbox-color-mode=light] .alert-purple-200 .alert-link{color:#3f3a4a}}@media print{html .alert-purple-300,html[data-netbox-color-mode=dark] .alert-purple-300,html[data-netbox-color-mode=light] .alert-purple-300{color:#655583;background-color:#eee8f8;border-color:#e5ddf4}html .alert-purple-300 .alert-link,html[data-netbox-color-mode=dark] .alert-purple-300 .alert-link,html[data-netbox-color-mode=light] .alert-purple-300 .alert-link{color:#514469}}@media print{html .alert-purple-400,html[data-netbox-color-mode=dark] .alert-purple-400,html[data-netbox-color-mode=light] .alert-purple-400{color:#543e7b;background-color:#e8e1f5;border-color:#ddd2f0}html .alert-purple-400 .alert-link,html[data-netbox-color-mode=dark] .alert-purple-400 .alert-link,html[data-netbox-color-mode=light] .alert-purple-400 .alert-link{color:#433262}}@media print{html .alert-purple-500,html[data-netbox-color-mode=dark] .alert-purple-500,html[data-netbox-color-mode=light] .alert-purple-500{color:#432874;background-color:#e2d9f3;border-color:#d4c6ec}html .alert-purple-500 .alert-link,html[data-netbox-color-mode=dark] .alert-purple-500 .alert-link,html[data-netbox-color-mode=light] .alert-purple-500 .alert-link{color:#36205d}}@media print{html .alert-purple-600,html[data-netbox-color-mode=dark] .alert-purple-600,html[data-netbox-color-mode=light] .alert-purple-600{color:#35205c;background-color:#ded7eb;border-color:#cdc2e1}html .alert-purple-600 .alert-link,html[data-netbox-color-mode=dark] .alert-purple-600 .alert-link,html[data-netbox-color-mode=light] .alert-purple-600 .alert-link{color:#2a1a4a}}@media print{html .alert-purple-700,html[data-netbox-color-mode=dark] .alert-purple-700,html[data-netbox-color-mode=light] .alert-purple-700{color:#281846;background-color:#d9d4e3;border-color:#c7bfd5}html .alert-purple-700 .alert-link,html[data-netbox-color-mode=dark] .alert-purple-700 .alert-link,html[data-netbox-color-mode=light] .alert-purple-700 .alert-link{color:#201338}}@media print{html .alert-purple-800,html[data-netbox-color-mode=dark] .alert-purple-800,html[data-netbox-color-mode=light] .alert-purple-800{color:#1a102e;background-color:#d5d1db;border-color:#c0baca}html .alert-purple-800 .alert-link,html[data-netbox-color-mode=dark] .alert-purple-800 .alert-link,html[data-netbox-color-mode=light] .alert-purple-800 .alert-link{color:#150d25}}@media print{html .alert-purple-900,html[data-netbox-color-mode=dark] .alert-purple-900,html[data-netbox-color-mode=light] .alert-purple-900{color:#0d0817;background-color:#d0cfd4;border-color:#b9b6be}html .alert-purple-900 .alert-link,html[data-netbox-color-mode=dark] .alert-purple-900 .alert-link,html[data-netbox-color-mode=light] .alert-purple-900 .alert-link{color:#0a0612}}@media print{html .alert-pink-100,html[data-netbox-color-mode=dark] .alert-pink-100,html[data-netbox-color-mode=light] .alert-pink-100{color:#63565c;background-color:#fdf7fa;border-color:#fdf3f8}html .alert-pink-100 .alert-link,html[data-netbox-color-mode=dark] .alert-pink-100 .alert-link,html[data-netbox-color-mode=light] .alert-pink-100 .alert-link{color:#4f454a}}@media print{html .alert-pink-200,html[data-netbox-color-mode=dark] .alert-pink-200,html[data-netbox-color-mode=light] .alert-pink-200{color:#604552;background-color:#fceff5;border-color:#fae6f0}html .alert-pink-200 .alert-link,html[data-netbox-color-mode=dark] .alert-pink-200 .alert-link,html[data-netbox-color-mode=light] .alert-pink-200 .alert-link{color:#4d3742}}@media print{html .alert-pink-300,html[data-netbox-color-mode=dark] .alert-pink-300,html[data-netbox-color-mode=light] .alert-pink-300{color:#8a506d;background-color:#fae7f0;border-color:#f8dae9}html .alert-pink-300 .alert-link,html[data-netbox-color-mode=dark] .alert-pink-300 .alert-link,html[data-netbox-color-mode=light] .alert-pink-300 .alert-link{color:#6e4057}}@media print{html .alert-pink-400,html[data-netbox-color-mode=dark] .alert-pink-400,html[data-netbox-color-mode=light] .alert-pink-400{color:#85375e;background-color:#f8deeb;border-color:#f5cee2}html .alert-pink-400 .alert-link,html[data-netbox-color-mode=dark] .alert-pink-400 .alert-link,html[data-netbox-color-mode=light] .alert-pink-400 .alert-link{color:#6a2c4b}}@media print{html .alert-pink-500,html[data-netbox-color-mode=dark] .alert-pink-500,html[data-netbox-color-mode=light] .alert-pink-500{color:#801f4f;background-color:#f7d6e6;border-color:#f3c2da}html .alert-pink-500 .alert-link,html[data-netbox-color-mode=dark] .alert-pink-500 .alert-link,html[data-netbox-color-mode=light] .alert-pink-500 .alert-link{color:#66193f}}@media print{html .alert-pink-600,html[data-netbox-color-mode=dark] .alert-pink-600,html[data-netbox-color-mode=light] .alert-pink-600{color:#671940;background-color:#eed4e1;border-color:#e6bfd2}html .alert-pink-600 .alert-link,html[data-netbox-color-mode=dark] .alert-pink-600 .alert-link,html[data-netbox-color-mode=light] .alert-pink-600 .alert-link{color:#521433}}@media print{html .alert-pink-700,html[data-netbox-color-mode=dark] .alert-pink-700,html[data-netbox-color-mode=light] .alert-pink-700{color:#4d132f;background-color:#e6d2dc;border-color:#d9bcca}html .alert-pink-700 .alert-link,html[data-netbox-color-mode=dark] .alert-pink-700 .alert-link,html[data-netbox-color-mode=light] .alert-pink-700 .alert-link{color:#3e0f26}}@media print{html .alert-pink-800,html[data-netbox-color-mode=dark] .alert-pink-800,html[data-netbox-color-mode=light] .alert-pink-800{color:#340c20;background-color:#ddd0d7;border-color:#ccb9c2}html .alert-pink-800 .alert-link,html[data-netbox-color-mode=dark] .alert-pink-800 .alert-link,html[data-netbox-color-mode=light] .alert-pink-800 .alert-link{color:#2a0a1a}}@media print{html .alert-pink-900,html[data-netbox-color-mode=dark] .alert-pink-900,html[data-netbox-color-mode=light] .alert-pink-900{color:#1a0610;background-color:#d5ced1;border-color:#bfb6ba}html .alert-pink-900 .alert-link,html[data-netbox-color-mode=dark] .alert-pink-900 .alert-link,html[data-netbox-color-mode=light] .alert-pink-900 .alert-link{color:#15050d}}@media print{@keyframes progress-bar-stripes{0%{background-position-x:1rem}}}@media print{html .progress,html[data-netbox-color-mode=dark] .progress,html[data-netbox-color-mode=light] .progress{display:flex;height:1rem;overflow:hidden;font-size:.75rem;background-color:#e9ecef;border-radius:.375rem}}@media print{html .progress-bar,html[data-netbox-color-mode=dark] .progress-bar,html[data-netbox-color-mode=light] .progress-bar{display:flex;flex-direction:column;justify-content:center;overflow:hidden;color:#fff;text-align:center;white-space:nowrap;background-color:#0d6efd;transition:width .6s ease}}@media print and (prefers-reduced-motion: reduce){html .progress-bar,html[data-netbox-color-mode=dark] .progress-bar,html[data-netbox-color-mode=light] .progress-bar{transition:none}}@media print{html .progress-bar-striped,html[data-netbox-color-mode=dark] .progress-bar-striped,html[data-netbox-color-mode=light] .progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:1rem 1rem}}@media print{html .progress-bar-animated,html[data-netbox-color-mode=dark] .progress-bar-animated,html[data-netbox-color-mode=light] .progress-bar-animated{animation:1s linear infinite progress-bar-stripes}}@media print and (prefers-reduced-motion: reduce){html .progress-bar-animated,html[data-netbox-color-mode=dark] .progress-bar-animated,html[data-netbox-color-mode=light] .progress-bar-animated{animation:none}}@media print{html .list-group,html[data-netbox-color-mode=dark] .list-group,html[data-netbox-color-mode=light] .list-group{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:.375rem}}@media print{html .list-group-numbered,html[data-netbox-color-mode=dark] .list-group-numbered,html[data-netbox-color-mode=light] .list-group-numbered{list-style-type:none;counter-reset:section}html .list-group-numbered>li:before,html[data-netbox-color-mode=dark] .list-group-numbered>li:before,html[data-netbox-color-mode=light] .list-group-numbered>li:before{content:counters(section,".") ". ";counter-increment:section}}@media print{html .list-group-item-action,html[data-netbox-color-mode=dark] .list-group-item-action,html[data-netbox-color-mode=light] .list-group-item-action{width:100%;color:#495057;text-align:inherit}html .list-group-item-action:hover,html .list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-action:focus{z-index:1;color:#495057;text-decoration:none;background-color:#f8f9fa}html .list-group-item-action:active,html[data-netbox-color-mode=dark] .list-group-item-action:active,html[data-netbox-color-mode=light] .list-group-item-action:active{color:#212529;background-color:#e9ecef}}@media print{html .list-group-item,html[data-netbox-color-mode=dark] .list-group-item,html[data-netbox-color-mode=light] .list-group-item{position:relative;display:block;padding:.5rem 1rem;color:#495057;text-decoration:none;background-color:#fff;border:1px solid rgba(0,0,0,.125)}html .list-group-item:first-child,html[data-netbox-color-mode=dark] .list-group-item:first-child,html[data-netbox-color-mode=light] .list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}html .list-group-item:last-child,html[data-netbox-color-mode=dark] .list-group-item:last-child,html[data-netbox-color-mode=light] .list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}html .list-group-item.disabled,html .list-group-item:disabled,html[data-netbox-color-mode=dark] .list-group-item.disabled,html[data-netbox-color-mode=dark] .list-group-item:disabled,html[data-netbox-color-mode=light] .list-group-item.disabled,html[data-netbox-color-mode=light] .list-group-item:disabled{color:#adb5bd;pointer-events:none;background-color:#fff}html .list-group-item.active,html[data-netbox-color-mode=dark] .list-group-item.active,html[data-netbox-color-mode=light] .list-group-item.active{z-index:2;color:#fff;background-color:#0d6efd;border-color:#0d6efd}html .list-group-item+html .list-group-item,html .list-group-item+html[data-netbox-color-mode=dark] .list-group-item,html .list-group-item+html[data-netbox-color-mode=light] .list-group-item,html[data-netbox-color-mode=dark] .list-group-item+html .list-group-item,html[data-netbox-color-mode=dark] .list-group-item+html[data-netbox-color-mode=dark] .list-group-item,html[data-netbox-color-mode=dark] .list-group-item+html[data-netbox-color-mode=light] .list-group-item,html[data-netbox-color-mode=light] .list-group-item+html .list-group-item,html[data-netbox-color-mode=light] .list-group-item+html[data-netbox-color-mode=dark] .list-group-item,html[data-netbox-color-mode=light] .list-group-item+html[data-netbox-color-mode=light] .list-group-item{border-top-width:0}html .list-group-item+html .list-group-item.active,html .list-group-item+html[data-netbox-color-mode=dark] .list-group-item.active,html .list-group-item+html[data-netbox-color-mode=light] .list-group-item.active,html[data-netbox-color-mode=dark] .list-group-item+html .list-group-item.active,html[data-netbox-color-mode=dark] .list-group-item+html[data-netbox-color-mode=dark] .list-group-item.active,html[data-netbox-color-mode=dark] .list-group-item+html[data-netbox-color-mode=light] .list-group-item.active,html[data-netbox-color-mode=light] .list-group-item+html .list-group-item.active,html[data-netbox-color-mode=light] .list-group-item+html[data-netbox-color-mode=dark] .list-group-item.active,html[data-netbox-color-mode=light] .list-group-item+html[data-netbox-color-mode=light] .list-group-item.active{margin-top:-1px;border-top-width:1px}}@media print{html .list-group-horizontal,html[data-netbox-color-mode=dark] .list-group-horizontal,html[data-netbox-color-mode=light] .list-group-horizontal{flex-direction:row}html .list-group-horizontal>.list-group-item:first-child,html[data-netbox-color-mode=dark] .list-group-horizontal>.list-group-item:first-child,html[data-netbox-color-mode=light] .list-group-horizontal>.list-group-item:first-child{border-bottom-left-radius:.375rem;border-top-right-radius:0}html .list-group-horizontal>.list-group-item:last-child,html[data-netbox-color-mode=dark] .list-group-horizontal>.list-group-item:last-child,html[data-netbox-color-mode=light] .list-group-horizontal>.list-group-item:last-child{border-top-right-radius:.375rem;border-bottom-left-radius:0}html .list-group-horizontal>.list-group-item.active,html[data-netbox-color-mode=dark] .list-group-horizontal>.list-group-item.active,html[data-netbox-color-mode=light] .list-group-horizontal>.list-group-item.active{margin-top:0}html .list-group-horizontal>.list-group-item+.list-group-item,html[data-netbox-color-mode=dark] .list-group-horizontal>.list-group-item+.list-group-item,html[data-netbox-color-mode=light] .list-group-horizontal>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}html .list-group-horizontal>.list-group-item+.list-group-item.active,html[data-netbox-color-mode=dark] .list-group-horizontal>.list-group-item+.list-group-item.active,html[data-netbox-color-mode=light] .list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media print and (min-width: 576px){html .list-group-horizontal-sm,html[data-netbox-color-mode=dark] .list-group-horizontal-sm,html[data-netbox-color-mode=light] .list-group-horizontal-sm{flex-direction:row}html .list-group-horizontal-sm>.list-group-item:first-child,html[data-netbox-color-mode=dark] .list-group-horizontal-sm>.list-group-item:first-child,html[data-netbox-color-mode=light] .list-group-horizontal-sm>.list-group-item:first-child{border-bottom-left-radius:.375rem;border-top-right-radius:0}html .list-group-horizontal-sm>.list-group-item:last-child,html[data-netbox-color-mode=dark] .list-group-horizontal-sm>.list-group-item:last-child,html[data-netbox-color-mode=light] .list-group-horizontal-sm>.list-group-item:last-child{border-top-right-radius:.375rem;border-bottom-left-radius:0}html .list-group-horizontal-sm>.list-group-item.active,html[data-netbox-color-mode=dark] .list-group-horizontal-sm>.list-group-item.active,html[data-netbox-color-mode=light] .list-group-horizontal-sm>.list-group-item.active{margin-top:0}html .list-group-horizontal-sm>.list-group-item+.list-group-item,html[data-netbox-color-mode=dark] .list-group-horizontal-sm>.list-group-item+.list-group-item,html[data-netbox-color-mode=light] .list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}html .list-group-horizontal-sm>.list-group-item+.list-group-item.active,html[data-netbox-color-mode=dark] .list-group-horizontal-sm>.list-group-item+.list-group-item.active,html[data-netbox-color-mode=light] .list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media print and (min-width: 768px){html .list-group-horizontal-md,html[data-netbox-color-mode=dark] .list-group-horizontal-md,html[data-netbox-color-mode=light] .list-group-horizontal-md{flex-direction:row}html .list-group-horizontal-md>.list-group-item:first-child,html[data-netbox-color-mode=dark] .list-group-horizontal-md>.list-group-item:first-child,html[data-netbox-color-mode=light] .list-group-horizontal-md>.list-group-item:first-child{border-bottom-left-radius:.375rem;border-top-right-radius:0}html .list-group-horizontal-md>.list-group-item:last-child,html[data-netbox-color-mode=dark] .list-group-horizontal-md>.list-group-item:last-child,html[data-netbox-color-mode=light] .list-group-horizontal-md>.list-group-item:last-child{border-top-right-radius:.375rem;border-bottom-left-radius:0}html .list-group-horizontal-md>.list-group-item.active,html[data-netbox-color-mode=dark] .list-group-horizontal-md>.list-group-item.active,html[data-netbox-color-mode=light] .list-group-horizontal-md>.list-group-item.active{margin-top:0}html .list-group-horizontal-md>.list-group-item+.list-group-item,html[data-netbox-color-mode=dark] .list-group-horizontal-md>.list-group-item+.list-group-item,html[data-netbox-color-mode=light] .list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}html .list-group-horizontal-md>.list-group-item+.list-group-item.active,html[data-netbox-color-mode=dark] .list-group-horizontal-md>.list-group-item+.list-group-item.active,html[data-netbox-color-mode=light] .list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media print and (min-width: 992px){html .list-group-horizontal-lg,html[data-netbox-color-mode=dark] .list-group-horizontal-lg,html[data-netbox-color-mode=light] .list-group-horizontal-lg{flex-direction:row}html .list-group-horizontal-lg>.list-group-item:first-child,html[data-netbox-color-mode=dark] .list-group-horizontal-lg>.list-group-item:first-child,html[data-netbox-color-mode=light] .list-group-horizontal-lg>.list-group-item:first-child{border-bottom-left-radius:.375rem;border-top-right-radius:0}html .list-group-horizontal-lg>.list-group-item:last-child,html[data-netbox-color-mode=dark] .list-group-horizontal-lg>.list-group-item:last-child,html[data-netbox-color-mode=light] .list-group-horizontal-lg>.list-group-item:last-child{border-top-right-radius:.375rem;border-bottom-left-radius:0}html .list-group-horizontal-lg>.list-group-item.active,html[data-netbox-color-mode=dark] .list-group-horizontal-lg>.list-group-item.active,html[data-netbox-color-mode=light] .list-group-horizontal-lg>.list-group-item.active{margin-top:0}html .list-group-horizontal-lg>.list-group-item+.list-group-item,html[data-netbox-color-mode=dark] .list-group-horizontal-lg>.list-group-item+.list-group-item,html[data-netbox-color-mode=light] .list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}html .list-group-horizontal-lg>.list-group-item+.list-group-item.active,html[data-netbox-color-mode=dark] .list-group-horizontal-lg>.list-group-item+.list-group-item.active,html[data-netbox-color-mode=light] .list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media print and (min-width: 1200px){html .list-group-horizontal-xl,html[data-netbox-color-mode=dark] .list-group-horizontal-xl,html[data-netbox-color-mode=light] .list-group-horizontal-xl{flex-direction:row}html .list-group-horizontal-xl>.list-group-item:first-child,html[data-netbox-color-mode=dark] .list-group-horizontal-xl>.list-group-item:first-child,html[data-netbox-color-mode=light] .list-group-horizontal-xl>.list-group-item:first-child{border-bottom-left-radius:.375rem;border-top-right-radius:0}html .list-group-horizontal-xl>.list-group-item:last-child,html[data-netbox-color-mode=dark] .list-group-horizontal-xl>.list-group-item:last-child,html[data-netbox-color-mode=light] .list-group-horizontal-xl>.list-group-item:last-child{border-top-right-radius:.375rem;border-bottom-left-radius:0}html .list-group-horizontal-xl>.list-group-item.active,html[data-netbox-color-mode=dark] .list-group-horizontal-xl>.list-group-item.active,html[data-netbox-color-mode=light] .list-group-horizontal-xl>.list-group-item.active{margin-top:0}html .list-group-horizontal-xl>.list-group-item+.list-group-item,html[data-netbox-color-mode=dark] .list-group-horizontal-xl>.list-group-item+.list-group-item,html[data-netbox-color-mode=light] .list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}html .list-group-horizontal-xl>.list-group-item+.list-group-item.active,html[data-netbox-color-mode=dark] .list-group-horizontal-xl>.list-group-item+.list-group-item.active,html[data-netbox-color-mode=light] .list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media print and (min-width: 1400px){html .list-group-horizontal-xxl,html[data-netbox-color-mode=dark] .list-group-horizontal-xxl,html[data-netbox-color-mode=light] .list-group-horizontal-xxl{flex-direction:row}html .list-group-horizontal-xxl>.list-group-item:first-child,html[data-netbox-color-mode=dark] .list-group-horizontal-xxl>.list-group-item:first-child,html[data-netbox-color-mode=light] .list-group-horizontal-xxl>.list-group-item:first-child{border-bottom-left-radius:.375rem;border-top-right-radius:0}html .list-group-horizontal-xxl>.list-group-item:last-child,html[data-netbox-color-mode=dark] .list-group-horizontal-xxl>.list-group-item:last-child,html[data-netbox-color-mode=light] .list-group-horizontal-xxl>.list-group-item:last-child{border-top-right-radius:.375rem;border-bottom-left-radius:0}html .list-group-horizontal-xxl>.list-group-item.active,html[data-netbox-color-mode=dark] .list-group-horizontal-xxl>.list-group-item.active,html[data-netbox-color-mode=light] .list-group-horizontal-xxl>.list-group-item.active{margin-top:0}html .list-group-horizontal-xxl>.list-group-item+.list-group-item,html[data-netbox-color-mode=dark] .list-group-horizontal-xxl>.list-group-item+.list-group-item,html[data-netbox-color-mode=light] .list-group-horizontal-xxl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}html .list-group-horizontal-xxl>.list-group-item+.list-group-item.active,html[data-netbox-color-mode=dark] .list-group-horizontal-xxl>.list-group-item+.list-group-item.active,html[data-netbox-color-mode=light] .list-group-horizontal-xxl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media print{html .list-group-flush,html[data-netbox-color-mode=dark] .list-group-flush,html[data-netbox-color-mode=light] .list-group-flush{border-radius:0}html .list-group-flush>.list-group-item,html[data-netbox-color-mode=dark] .list-group-flush>.list-group-item,html[data-netbox-color-mode=light] .list-group-flush>.list-group-item{border-width:0 0 1px}html .list-group-flush>.list-group-item:last-child,html[data-netbox-color-mode=dark] .list-group-flush>.list-group-item:last-child,html[data-netbox-color-mode=light] .list-group-flush>.list-group-item:last-child{border-bottom-width:0}}@media print{html .list-group-item-primary,html[data-netbox-color-mode=dark] .list-group-item-primary,html[data-netbox-color-mode=light] .list-group-item-primary{color:#1f496e;background-color:#d6e4f1}html .list-group-item-primary.list-group-item-action:hover,html .list-group-item-primary.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-primary.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-primary.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-primary.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-primary.list-group-item-action:focus{color:#1f496e;background-color:#c1cdd9}html .list-group-item-primary.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-primary.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#1f496e;border-color:#1f496e}}@media print{html .list-group-item-secondary,html[data-netbox-color-mode=dark] .list-group-item-secondary,html[data-netbox-color-mode=light] .list-group-item-secondary{color:#41464b;background-color:#e2e3e5}html .list-group-item-secondary.list-group-item-action:hover,html .list-group-item-secondary.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-secondary.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-secondary.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-secondary.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-secondary.list-group-item-action:focus{color:#41464b;background-color:#cbccce}html .list-group-item-secondary.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-secondary.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#41464b;border-color:#41464b}}@media print{html .list-group-item-success,html[data-netbox-color-mode=dark] .list-group-item-success,html[data-netbox-color-mode=light] .list-group-item-success{color:#0f5132;background-color:#d1e7dd}html .list-group-item-success.list-group-item-action:hover,html .list-group-item-success.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-success.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-success.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-success.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-success.list-group-item-action:focus{color:#0f5132;background-color:#bcd0c7}html .list-group-item-success.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-success.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-success.list-group-item-action.active{color:#fff;background-color:#0f5132;border-color:#0f5132}}@media print{html .list-group-item-info,html[data-netbox-color-mode=dark] .list-group-item-info,html[data-netbox-color-mode=light] .list-group-item-info{color:#055160;background-color:#cff4fc}html .list-group-item-info.list-group-item-action:hover,html .list-group-item-info.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-info.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-info.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-info.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-info.list-group-item-action:focus{color:#055160;background-color:#badce3}html .list-group-item-info.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-info.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-info.list-group-item-action.active{color:#fff;background-color:#055160;border-color:#055160}}@media print{html .list-group-item-warning,html[data-netbox-color-mode=dark] .list-group-item-warning,html[data-netbox-color-mode=light] .list-group-item-warning{color:#664d03;background-color:#fff3cd}html .list-group-item-warning.list-group-item-action:hover,html .list-group-item-warning.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-warning.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-warning.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-warning.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-warning.list-group-item-action:focus{color:#664d03;background-color:#e6dbb9}html .list-group-item-warning.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-warning.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#664d03;border-color:#664d03}}@media print{html .list-group-item-danger,html[data-netbox-color-mode=dark] .list-group-item-danger,html[data-netbox-color-mode=light] .list-group-item-danger{color:#842029;background-color:#f8d7da}html .list-group-item-danger.list-group-item-action:hover,html .list-group-item-danger.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-danger.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-danger.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-danger.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-danger.list-group-item-action:focus{color:#842029;background-color:#dfc2c4}html .list-group-item-danger.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-danger.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#842029;border-color:#842029}}@media print{html .list-group-item-light,html[data-netbox-color-mode=dark] .list-group-item-light,html[data-netbox-color-mode=light] .list-group-item-light{color:#636464;background-color:#fefefe}html .list-group-item-light.list-group-item-action:hover,html .list-group-item-light.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-light.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-light.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-light.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-light.list-group-item-action:focus{color:#636464;background-color:#e5e5e5}html .list-group-item-light.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-light.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-light.list-group-item-action.active{color:#fff;background-color:#636464;border-color:#636464}}@media print{html .list-group-item-dark,html[data-netbox-color-mode=dark] .list-group-item-dark,html[data-netbox-color-mode=light] .list-group-item-dark{color:#141619;background-color:#d3d3d4}html .list-group-item-dark.list-group-item-action:hover,html .list-group-item-dark.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-dark.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-dark.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-dark.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-dark.list-group-item-action:focus{color:#141619;background-color:#bebebf}html .list-group-item-dark.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-dark.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#141619;border-color:#141619}}@media print{html .list-group-item-red,html[data-netbox-color-mode=dark] .list-group-item-red,html[data-netbox-color-mode=light] .list-group-item-red{color:#842029;background-color:#f8d7da}html .list-group-item-red.list-group-item-action:hover,html .list-group-item-red.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-red.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-red.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-red.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-red.list-group-item-action:focus{color:#842029;background-color:#dfc2c4}html .list-group-item-red.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-red.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-red.list-group-item-action.active{color:#fff;background-color:#842029;border-color:#842029}}@media print{html .list-group-item-yellow,html[data-netbox-color-mode=dark] .list-group-item-yellow,html[data-netbox-color-mode=light] .list-group-item-yellow{color:#664d03;background-color:#fff3cd}html .list-group-item-yellow.list-group-item-action:hover,html .list-group-item-yellow.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-yellow.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-yellow.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-yellow.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-yellow.list-group-item-action:focus{color:#664d03;background-color:#e6dbb9}html .list-group-item-yellow.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-yellow.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-yellow.list-group-item-action.active{color:#fff;background-color:#664d03;border-color:#664d03}}@media print{html .list-group-item-green,html[data-netbox-color-mode=dark] .list-group-item-green,html[data-netbox-color-mode=light] .list-group-item-green{color:#0f5132;background-color:#d1e7dd}html .list-group-item-green.list-group-item-action:hover,html .list-group-item-green.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-green.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-green.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-green.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-green.list-group-item-action:focus{color:#0f5132;background-color:#bcd0c7}html .list-group-item-green.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-green.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-green.list-group-item-action.active{color:#fff;background-color:#0f5132;border-color:#0f5132}}@media print{html .list-group-item-blue,html[data-netbox-color-mode=dark] .list-group-item-blue,html[data-netbox-color-mode=light] .list-group-item-blue{color:#084298;background-color:#cfe2ff}html .list-group-item-blue.list-group-item-action:hover,html .list-group-item-blue.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-blue.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-blue.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-blue.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-blue.list-group-item-action:focus{color:#084298;background-color:#bacbe6}html .list-group-item-blue.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-blue.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-blue.list-group-item-action.active{color:#fff;background-color:#084298;border-color:#084298}}@media print{html .list-group-item-cyan,html[data-netbox-color-mode=dark] .list-group-item-cyan,html[data-netbox-color-mode=light] .list-group-item-cyan{color:#055160;background-color:#cff4fc}html .list-group-item-cyan.list-group-item-action:hover,html .list-group-item-cyan.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-cyan.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-cyan.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-cyan.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-cyan.list-group-item-action:focus{color:#055160;background-color:#badce3}html .list-group-item-cyan.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-cyan.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-cyan.list-group-item-action.active{color:#fff;background-color:#055160;border-color:#055160}}@media print{html .list-group-item-indigo,html[data-netbox-color-mode=dark] .list-group-item-indigo,html[data-netbox-color-mode=light] .list-group-item-indigo{color:#3d0a91;background-color:#e0cffc}html .list-group-item-indigo.list-group-item-action:hover,html .list-group-item-indigo.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-indigo.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-indigo.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-indigo.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-indigo.list-group-item-action:focus{color:#3d0a91;background-color:#cabae3}html .list-group-item-indigo.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-indigo.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-indigo.list-group-item-action.active{color:#fff;background-color:#3d0a91;border-color:#3d0a91}}@media print{html .list-group-item-purple,html[data-netbox-color-mode=dark] .list-group-item-purple,html[data-netbox-color-mode=light] .list-group-item-purple{color:#432874;background-color:#e2d9f3}html .list-group-item-purple.list-group-item-action:hover,html .list-group-item-purple.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-purple.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-purple.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-purple.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-purple.list-group-item-action:focus{color:#432874;background-color:#cbc3db}html .list-group-item-purple.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-purple.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-purple.list-group-item-action.active{color:#fff;background-color:#432874;border-color:#432874}}@media print{html .list-group-item-pink,html[data-netbox-color-mode=dark] .list-group-item-pink,html[data-netbox-color-mode=light] .list-group-item-pink{color:#801f4f;background-color:#f7d6e6}html .list-group-item-pink.list-group-item-action:hover,html .list-group-item-pink.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-pink.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-pink.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-pink.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-pink.list-group-item-action:focus{color:#801f4f;background-color:#dec1cf}html .list-group-item-pink.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-pink.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-pink.list-group-item-action.active{color:#fff;background-color:#801f4f;border-color:#801f4f}}@media print{html .list-group-item-darker,html[data-netbox-color-mode=dark] .list-group-item-darker,html[data-netbox-color-mode=light] .list-group-item-darker{color:#101314;background-color:#d1d2d3}html .list-group-item-darker.list-group-item-action:hover,html .list-group-item-darker.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-darker.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-darker.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-darker.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-darker.list-group-item-action:focus{color:#101314;background-color:#bcbdbe}html .list-group-item-darker.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-darker.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-darker.list-group-item-action.active{color:#fff;background-color:#101314;border-color:#101314}}@media print{html .list-group-item-darkest,html[data-netbox-color-mode=dark] .list-group-item-darkest,html[data-netbox-color-mode=light] .list-group-item-darkest{color:#0e1011;background-color:#d1d1d2}html .list-group-item-darkest.list-group-item-action:hover,html .list-group-item-darkest.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-darkest.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-darkest.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-darkest.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-darkest.list-group-item-action:focus{color:#0e1011;background-color:#bcbcbd}html .list-group-item-darkest.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-darkest.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-darkest.list-group-item-action.active{color:#fff;background-color:#0e1011;border-color:#0e1011}}@media print{html .list-group-item-gray,html[data-netbox-color-mode=dark] .list-group-item-gray,html[data-netbox-color-mode=light] .list-group-item-gray{color:#525557;background-color:#f5f6f8}html .list-group-item-gray.list-group-item-action:hover,html .list-group-item-gray.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-gray.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-gray.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-gray.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-gray.list-group-item-action:focus{color:#525557;background-color:#dddddf}html .list-group-item-gray.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-gray.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-gray.list-group-item-action.active{color:#fff;background-color:#525557;border-color:#525557}}@media print{html .list-group-item-gray-100,html[data-netbox-color-mode=dark] .list-group-item-gray-100,html[data-netbox-color-mode=light] .list-group-item-gray-100{color:#636464;background-color:#fefefe}html .list-group-item-gray-100.list-group-item-action:hover,html .list-group-item-gray-100.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-gray-100.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-gray-100.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-gray-100.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-gray-100.list-group-item-action:focus{color:#636464;background-color:#e5e5e5}html .list-group-item-gray-100.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-gray-100.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-gray-100.list-group-item-action.active{color:#fff;background-color:#636464;border-color:#636464}}@media print{html .list-group-item-gray-200,html[data-netbox-color-mode=dark] .list-group-item-gray-200,html[data-netbox-color-mode=light] .list-group-item-gray-200{color:#5d5e60;background-color:#fbfbfc}html .list-group-item-gray-200.list-group-item-action:hover,html .list-group-item-gray-200.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-gray-200.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-gray-200.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-gray-200.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-gray-200.list-group-item-action:focus{color:#5d5e60;background-color:#e2e2e3}html .list-group-item-gray-200.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-gray-200.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-gray-200.list-group-item-action.active{color:#fff;background-color:#5d5e60;border-color:#5d5e60}}@media print{html .list-group-item-gray-300,html[data-netbox-color-mode=dark] .list-group-item-gray-300,html[data-netbox-color-mode=light] .list-group-item-gray-300{color:#595a5c;background-color:#f8f9fa}html .list-group-item-gray-300.list-group-item-action:hover,html .list-group-item-gray-300.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-gray-300.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-gray-300.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-gray-300.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-gray-300.list-group-item-action:focus{color:#595a5c;background-color:#dfe0e1}html .list-group-item-gray-300.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-gray-300.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-gray-300.list-group-item-action.active{color:#fff;background-color:#595a5c;border-color:#595a5c}}@media print{html .list-group-item-gray-400,html[data-netbox-color-mode=dark] .list-group-item-gray-400,html[data-netbox-color-mode=light] .list-group-item-gray-400{color:#525557;background-color:#f5f6f8}html .list-group-item-gray-400.list-group-item-action:hover,html .list-group-item-gray-400.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-gray-400.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-gray-400.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-gray-400.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-gray-400.list-group-item-action:focus{color:#525557;background-color:#dddddf}html .list-group-item-gray-400.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-gray-400.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-gray-400.list-group-item-action.active{color:#fff;background-color:#525557;border-color:#525557}}@media print{html .list-group-item-gray-500,html[data-netbox-color-mode=dark] .list-group-item-gray-500,html[data-netbox-color-mode=light] .list-group-item-gray-500{color:#686d71;background-color:#eff0f2}html .list-group-item-gray-500.list-group-item-action:hover,html .list-group-item-gray-500.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-gray-500.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-gray-500.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-gray-500.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-gray-500.list-group-item-action:focus{color:#686d71;background-color:#d7d8da}html .list-group-item-gray-500.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-gray-500.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-gray-500.list-group-item-action.active{color:#fff;background-color:#686d71;border-color:#686d71}}@media print{html .list-group-item-gray-600,html[data-netbox-color-mode=dark] .list-group-item-gray-600,html[data-netbox-color-mode=light] .list-group-item-gray-600{color:#41464b;background-color:#e2e3e5}html .list-group-item-gray-600.list-group-item-action:hover,html .list-group-item-gray-600.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-gray-600.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-gray-600.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-gray-600.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-gray-600.list-group-item-action:focus{color:#41464b;background-color:#cbccce}html .list-group-item-gray-600.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-gray-600.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-gray-600.list-group-item-action.active{color:#fff;background-color:#41464b;border-color:#41464b}}@media print{html .list-group-item-gray-700,html[data-netbox-color-mode=dark] .list-group-item-gray-700,html[data-netbox-color-mode=light] .list-group-item-gray-700{color:#2c3034;background-color:#dbdcdd}html .list-group-item-gray-700.list-group-item-action:hover,html .list-group-item-gray-700.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-gray-700.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-gray-700.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-gray-700.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-gray-700.list-group-item-action:focus{color:#2c3034;background-color:#c5c6c7}html .list-group-item-gray-700.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-gray-700.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-gray-700.list-group-item-action.active{color:#fff;background-color:#2c3034;border-color:#2c3034}}@media print{html .list-group-item-gray-800,html[data-netbox-color-mode=dark] .list-group-item-gray-800,html[data-netbox-color-mode=light] .list-group-item-gray-800{color:#1f2326;background-color:#d6d8d9}html .list-group-item-gray-800.list-group-item-action:hover,html .list-group-item-gray-800.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-gray-800.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-gray-800.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-gray-800.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-gray-800.list-group-item-action:focus{color:#1f2326;background-color:#c1c2c3}html .list-group-item-gray-800.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-gray-800.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-gray-800.list-group-item-action.active{color:#fff;background-color:#1f2326;border-color:#1f2326}}@media print{html .list-group-item-gray-900,html[data-netbox-color-mode=dark] .list-group-item-gray-900,html[data-netbox-color-mode=light] .list-group-item-gray-900{color:#141619;background-color:#d3d3d4}html .list-group-item-gray-900.list-group-item-action:hover,html .list-group-item-gray-900.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-gray-900.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-gray-900.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-gray-900.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-gray-900.list-group-item-action:focus{color:#141619;background-color:#bebebf}html .list-group-item-gray-900.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-gray-900.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-gray-900.list-group-item-action.active{color:#fff;background-color:#141619;border-color:#141619}}@media print{html .list-group-item-red-100,html[data-netbox-color-mode=dark] .list-group-item-red-100,html[data-netbox-color-mode=light] .list-group-item-red-100{color:#635657;background-color:#fef7f8}html .list-group-item-red-100.list-group-item-action:hover,html .list-group-item-red-100.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-red-100.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-red-100.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-red-100.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-red-100.list-group-item-action:focus{color:#635657;background-color:#e5dedf}html .list-group-item-red-100.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-red-100.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-red-100.list-group-item-action.active{color:#fff;background-color:#635657;border-color:#635657}}@media print{html .list-group-item-red-200,html[data-netbox-color-mode=dark] .list-group-item-red-200,html[data-netbox-color-mode=light] .list-group-item-red-200{color:#604648;background-color:#fceff0}html .list-group-item-red-200.list-group-item-action:hover,html .list-group-item-red-200.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-red-200.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-red-200.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-red-200.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-red-200.list-group-item-action:focus{color:#604648;background-color:#e3d7d8}html .list-group-item-red-200.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-red-200.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-red-200.list-group-item-action.active{color:#fff;background-color:#604648;border-color:#604648}}@media print{html .list-group-item-red-300,html[data-netbox-color-mode=dark] .list-group-item-red-300,html[data-netbox-color-mode=light] .list-group-item-red-300{color:#8c5056;background-color:#fbe7e9}html .list-group-item-red-300.list-group-item-action:hover,html .list-group-item-red-300.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-red-300.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-red-300.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-red-300.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-red-300.list-group-item-action:focus{color:#8c5056;background-color:#e2d0d2}html .list-group-item-red-300.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-red-300.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-red-300.list-group-item-action.active{color:#fff;background-color:#8c5056;border-color:#8c5056}}@media print{html .list-group-item-red-400,html[data-netbox-color-mode=dark] .list-group-item-red-400,html[data-netbox-color-mode=light] .list-group-item-red-400{color:#883840;background-color:#f9dfe1}html .list-group-item-red-400.list-group-item-action:hover,html .list-group-item-red-400.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-red-400.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-red-400.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-red-400.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-red-400.list-group-item-action:focus{color:#883840;background-color:#e0c9cb}html .list-group-item-red-400.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-red-400.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-red-400.list-group-item-action.active{color:#fff;background-color:#883840;border-color:#883840}}@media print{html .list-group-item-red-500,html[data-netbox-color-mode=dark] .list-group-item-red-500,html[data-netbox-color-mode=light] .list-group-item-red-500{color:#842029;background-color:#f8d7da}html .list-group-item-red-500.list-group-item-action:hover,html .list-group-item-red-500.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-red-500.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-red-500.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-red-500.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-red-500.list-group-item-action:focus{color:#842029;background-color:#dfc2c4}html .list-group-item-red-500.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-red-500.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-red-500.list-group-item-action.active{color:#fff;background-color:#842029;border-color:#842029}}@media print{html .list-group-item-red-600,html[data-netbox-color-mode=dark] .list-group-item-red-600,html[data-netbox-color-mode=light] .list-group-item-red-600{color:#6a1921;background-color:#efd4d7}html .list-group-item-red-600.list-group-item-action:hover,html .list-group-item-red-600.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-red-600.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-red-600.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-red-600.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-red-600.list-group-item-action:focus{color:#6a1921;background-color:#d7bfc2}html .list-group-item-red-600.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-red-600.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-red-600.list-group-item-action.active{color:#fff;background-color:#6a1921;border-color:#6a1921}}@media print{html .list-group-item-red-700,html[data-netbox-color-mode=dark] .list-group-item-red-700,html[data-netbox-color-mode=light] .list-group-item-red-700{color:#4f1319;background-color:#e6d2d4}html .list-group-item-red-700.list-group-item-action:hover,html .list-group-item-red-700.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-red-700.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-red-700.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-red-700.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-red-700.list-group-item-action:focus{color:#4f1319;background-color:#cfbdbf}html .list-group-item-red-700.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-red-700.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-red-700.list-group-item-action.active{color:#fff;background-color:#4f1319;border-color:#4f1319}}@media print{html .list-group-item-red-800,html[data-netbox-color-mode=dark] .list-group-item-red-800,html[data-netbox-color-mode=light] .list-group-item-red-800{color:#350d11;background-color:#ded0d2}html .list-group-item-red-800.list-group-item-action:hover,html .list-group-item-red-800.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-red-800.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-red-800.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-red-800.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-red-800.list-group-item-action:focus{color:#350d11;background-color:#c8bbbd}html .list-group-item-red-800.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-red-800.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-red-800.list-group-item-action.active{color:#fff;background-color:#350d11;border-color:#350d11}}@media print{html .list-group-item-red-900,html[data-netbox-color-mode=dark] .list-group-item-red-900,html[data-netbox-color-mode=light] .list-group-item-red-900{color:#1a0708;background-color:#d5cecf}html .list-group-item-red-900.list-group-item-action:hover,html .list-group-item-red-900.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-red-900.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-red-900.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-red-900.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-red-900.list-group-item-action:focus{color:#1a0708;background-color:#c0b9ba}html .list-group-item-red-900.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-red-900.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-red-900.list-group-item-action.active{color:#fff;background-color:#1a0708;border-color:#1a0708}}@media print{html .list-group-item-yellow-100,html[data-netbox-color-mode=dark] .list-group-item-yellow-100,html[data-netbox-color-mode=light] .list-group-item-yellow-100{color:#666152;background-color:#fffdf5}html .list-group-item-yellow-100.list-group-item-action:hover,html .list-group-item-yellow-100.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-yellow-100.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-yellow-100.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-yellow-100.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-yellow-100.list-group-item-action:focus{color:#666152;background-color:#e6e4dd}html .list-group-item-yellow-100.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-yellow-100.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-yellow-100.list-group-item-action.active{color:#fff;background-color:#666152;border-color:#666152}}@media print{html .list-group-item-yellow-200,html[data-netbox-color-mode=dark] .list-group-item-yellow-200,html[data-netbox-color-mode=light] .list-group-item-yellow-200{color:#665c3e;background-color:#fffaeb}html .list-group-item-yellow-200.list-group-item-action:hover,html .list-group-item-yellow-200.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-yellow-200.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-yellow-200.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-yellow-200.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-yellow-200.list-group-item-action:focus{color:#665c3e;background-color:#e6e1d4}html .list-group-item-yellow-200.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-yellow-200.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-yellow-200.list-group-item-action.active{color:#fff;background-color:#665c3e;border-color:#665c3e}}@media print{html .list-group-item-yellow-300,html[data-netbox-color-mode=dark] .list-group-item-yellow-300,html[data-netbox-color-mode=light] .list-group-item-yellow-300{color:#66572a;background-color:#fff8e1}html .list-group-item-yellow-300.list-group-item-action:hover,html .list-group-item-yellow-300.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-yellow-300.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-yellow-300.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-yellow-300.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-yellow-300.list-group-item-action:focus{color:#66572a;background-color:#e6dfcb}html .list-group-item-yellow-300.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-yellow-300.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-yellow-300.list-group-item-action.active{color:#fff;background-color:#66572a;border-color:#66572a}}@media print{html .list-group-item-yellow-400,html[data-netbox-color-mode=dark] .list-group-item-yellow-400,html[data-netbox-color-mode=light] .list-group-item-yellow-400{color:#665217;background-color:#fff5d7}html .list-group-item-yellow-400.list-group-item-action:hover,html .list-group-item-yellow-400.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-yellow-400.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-yellow-400.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-yellow-400.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-yellow-400.list-group-item-action:focus{color:#665217;background-color:#e6ddc2}html .list-group-item-yellow-400.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-yellow-400.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-yellow-400.list-group-item-action.active{color:#fff;background-color:#665217;border-color:#665217}}@media print{html .list-group-item-yellow-500,html[data-netbox-color-mode=dark] .list-group-item-yellow-500,html[data-netbox-color-mode=light] .list-group-item-yellow-500{color:#664d03;background-color:#fff3cd}html .list-group-item-yellow-500.list-group-item-action:hover,html .list-group-item-yellow-500.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-yellow-500.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-yellow-500.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-yellow-500.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-yellow-500.list-group-item-action:focus{color:#664d03;background-color:#e6dbb9}html .list-group-item-yellow-500.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-yellow-500.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-yellow-500.list-group-item-action.active{color:#fff;background-color:#664d03;border-color:#664d03}}@media print{html .list-group-item-yellow-600,html[data-netbox-color-mode=dark] .list-group-item-yellow-600,html[data-netbox-color-mode=light] .list-group-item-yellow-600{color:#7a5c04;background-color:#f5ebcd}html .list-group-item-yellow-600.list-group-item-action:hover,html .list-group-item-yellow-600.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-yellow-600.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-yellow-600.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-yellow-600.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-yellow-600.list-group-item-action:focus{color:#7a5c04;background-color:#ddd4b9}html .list-group-item-yellow-600.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-yellow-600.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-yellow-600.list-group-item-action.active{color:#fff;background-color:#7a5c04;border-color:#7a5c04}}@media print{html .list-group-item-yellow-700,html[data-netbox-color-mode=dark] .list-group-item-yellow-700,html[data-netbox-color-mode=light] .list-group-item-yellow-700{color:#5c4602;background-color:#ebe3cd}html .list-group-item-yellow-700.list-group-item-action:hover,html .list-group-item-yellow-700.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-yellow-700.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-yellow-700.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-yellow-700.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-yellow-700.list-group-item-action:focus{color:#5c4602;background-color:#d4ccb9}html .list-group-item-yellow-700.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-yellow-700.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-yellow-700.list-group-item-action.active{color:#fff;background-color:#5c4602;border-color:#5c4602}}@media print{html .list-group-item-yellow-800,html[data-netbox-color-mode=dark] .list-group-item-yellow-800,html[data-netbox-color-mode=light] .list-group-item-yellow-800{color:#3d2e02;background-color:#e0dbcd}html .list-group-item-yellow-800.list-group-item-action:hover,html .list-group-item-yellow-800.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-yellow-800.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-yellow-800.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-yellow-800.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-yellow-800.list-group-item-action:focus{color:#3d2e02;background-color:#cac5b9}html .list-group-item-yellow-800.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-yellow-800.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-yellow-800.list-group-item-action.active{color:#fff;background-color:#3d2e02;border-color:#3d2e02}}@media print{html .list-group-item-yellow-900,html[data-netbox-color-mode=dark] .list-group-item-yellow-900,html[data-netbox-color-mode=light] .list-group-item-yellow-900{color:#1f1701;background-color:#d6d4cc}html .list-group-item-yellow-900.list-group-item-action:hover,html .list-group-item-yellow-900.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-yellow-900.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-yellow-900.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-yellow-900.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-yellow-900.list-group-item-action:focus{color:#1f1701;background-color:#c1bfb8}html .list-group-item-yellow-900.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-yellow-900.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-yellow-900.list-group-item-action.active{color:#fff;background-color:#1f1701;border-color:#1f1701}}@media print{html .list-group-item-green-100,html[data-netbox-color-mode=dark] .list-group-item-green-100,html[data-netbox-color-mode=light] .list-group-item-green-100{color:#545c58;background-color:#f6faf8}html .list-group-item-green-100.list-group-item-action:hover,html .list-group-item-green-100.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-green-100.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-green-100.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-green-100.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-green-100.list-group-item-action:focus{color:#545c58;background-color:#dde1df}html .list-group-item-green-100.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-green-100.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-green-100.list-group-item-action.active{color:#fff;background-color:#545c58;border-color:#545c58}}@media print{html .list-group-item-green-200,html[data-netbox-color-mode=dark] .list-group-item-green-200,html[data-netbox-color-mode=light] .list-group-item-green-200{color:#41534b;background-color:#edf5f1}html .list-group-item-green-200.list-group-item-action:hover,html .list-group-item-green-200.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-green-200.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-green-200.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-green-200.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-green-200.list-group-item-action:focus{color:#41534b;background-color:#d5ddd9}html .list-group-item-green-200.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-green-200.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-green-200.list-group-item-action.active{color:#fff;background-color:#41534b;border-color:#41534b}}@media print{html .list-group-item-green-300,html[data-netbox-color-mode=dark] .list-group-item-green-300,html[data-netbox-color-mode=light] .list-group-item-green-300{color:#466e5b;background-color:#e3f1ea}html .list-group-item-green-300.list-group-item-action:hover,html .list-group-item-green-300.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-green-300.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-green-300.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-green-300.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-green-300.list-group-item-action:focus{color:#466e5b;background-color:#ccd9d3}html .list-group-item-green-300.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-green-300.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-green-300.list-group-item-action.active{color:#fff;background-color:#466e5b;border-color:#466e5b}}@media print{html .list-group-item-green-400,html[data-netbox-color-mode=dark] .list-group-item-green-400,html[data-netbox-color-mode=light] .list-group-item-green-400{color:#2b5f47;background-color:#daece4}html .list-group-item-green-400.list-group-item-action:hover,html .list-group-item-green-400.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-green-400.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-green-400.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-green-400.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-green-400.list-group-item-action:focus{color:#2b5f47;background-color:#c4d4cd}html .list-group-item-green-400.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-green-400.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-green-400.list-group-item-action.active{color:#fff;background-color:#2b5f47;border-color:#2b5f47}}@media print{html .list-group-item-green-500,html[data-netbox-color-mode=dark] .list-group-item-green-500,html[data-netbox-color-mode=light] .list-group-item-green-500{color:#0f5132;background-color:#d1e7dd}html .list-group-item-green-500.list-group-item-action:hover,html .list-group-item-green-500.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-green-500.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-green-500.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-green-500.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-green-500.list-group-item-action:focus{color:#0f5132;background-color:#bcd0c7}html .list-group-item-green-500.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-green-500.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-green-500.list-group-item-action.active{color:#fff;background-color:#0f5132;border-color:#0f5132}}@media print{html .list-group-item-green-600,html[data-netbox-color-mode=dark] .list-group-item-green-600,html[data-netbox-color-mode=light] .list-group-item-green-600{color:#0c4128;background-color:#d0e2d9}html .list-group-item-green-600.list-group-item-action:hover,html .list-group-item-green-600.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-green-600.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-green-600.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-green-600.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-green-600.list-group-item-action:focus{color:#0c4128;background-color:#bbcbc3}html .list-group-item-green-600.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-green-600.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-green-600.list-group-item-action.active{color:#fff;background-color:#0c4128;border-color:#0c4128}}@media print{html .list-group-item-green-700,html[data-netbox-color-mode=dark] .list-group-item-green-700,html[data-netbox-color-mode=light] .list-group-item-green-700{color:#09311e;background-color:#cfdcd6}html .list-group-item-green-700.list-group-item-action:hover,html .list-group-item-green-700.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-green-700.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-green-700.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-green-700.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-green-700.list-group-item-action:focus{color:#09311e;background-color:#bac6c1}html .list-group-item-green-700.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-green-700.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-green-700.list-group-item-action.active{color:#fff;background-color:#09311e;border-color:#09311e}}@media print{html .list-group-item-green-800,html[data-netbox-color-mode=dark] .list-group-item-green-800,html[data-netbox-color-mode=light] .list-group-item-green-800{color:#062014;background-color:#ced7d3}html .list-group-item-green-800.list-group-item-action:hover,html .list-group-item-green-800.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-green-800.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-green-800.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-green-800.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-green-800.list-group-item-action:focus{color:#062014;background-color:#b9c2be}html .list-group-item-green-800.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-green-800.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-green-800.list-group-item-action.active{color:#fff;background-color:#062014;border-color:#062014}}@media print{html .list-group-item-green-900,html[data-netbox-color-mode=dark] .list-group-item-green-900,html[data-netbox-color-mode=light] .list-group-item-green-900{color:#03100a;background-color:#cdd1cf}html .list-group-item-green-900.list-group-item-action:hover,html .list-group-item-green-900.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-green-900.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-green-900.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-green-900.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-green-900.list-group-item-action:focus{color:#03100a;background-color:#b9bcba}html .list-group-item-green-900.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-green-900.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-green-900.list-group-item-action.active{color:#fff;background-color:#03100a;border-color:#03100a}}@media print{html .list-group-item-blue-100,html[data-netbox-color-mode=dark] .list-group-item-blue-100,html[data-netbox-color-mode=light] .list-group-item-blue-100{color:#535a66;background-color:#f5f9ff}html .list-group-item-blue-100.list-group-item-action:hover,html .list-group-item-blue-100.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-blue-100.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-blue-100.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-blue-100.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-blue-100.list-group-item-action:focus{color:#535a66;background-color:#dde0e6}html .list-group-item-blue-100.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-blue-100.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-blue-100.list-group-item-action.active{color:#fff;background-color:#535a66;border-color:#535a66}}@media print{html .list-group-item-blue-200,html[data-netbox-color-mode=dark] .list-group-item-blue-200,html[data-netbox-color-mode=light] .list-group-item-blue-200{color:#3f4f66;background-color:#ecf3ff}html .list-group-item-blue-200.list-group-item-action:hover,html .list-group-item-blue-200.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-blue-200.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-blue-200.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-blue-200.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-blue-200.list-group-item-action:focus{color:#3f4f66;background-color:#d4dbe6}html .list-group-item-blue-200.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-blue-200.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-blue-200.list-group-item-action.active{color:#fff;background-color:#3f4f66;border-color:#3f4f66}}@media print{html .list-group-item-blue-300,html[data-netbox-color-mode=dark] .list-group-item-blue-300,html[data-netbox-color-mode=light] .list-group-item-blue-300{color:#426598;background-color:#e2eeff}html .list-group-item-blue-300.list-group-item-action:hover,html .list-group-item-blue-300.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-blue-300.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-blue-300.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-blue-300.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-blue-300.list-group-item-action:focus{color:#426598;background-color:#cbd6e6}html .list-group-item-blue-300.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-blue-300.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-blue-300.list-group-item-action.active{color:#fff;background-color:#426598;border-color:#426598}}@media print{html .list-group-item-blue-400,html[data-netbox-color-mode=dark] .list-group-item-blue-400,html[data-netbox-color-mode=light] .list-group-item-blue-400{color:#255398;background-color:#d8e8ff}html .list-group-item-blue-400.list-group-item-action:hover,html .list-group-item-blue-400.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-blue-400.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-blue-400.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-blue-400.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-blue-400.list-group-item-action:focus{color:#255398;background-color:#c2d1e6}html .list-group-item-blue-400.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-blue-400.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-blue-400.list-group-item-action.active{color:#fff;background-color:#255398;border-color:#255398}}@media print{html .list-group-item-blue-500,html[data-netbox-color-mode=dark] .list-group-item-blue-500,html[data-netbox-color-mode=light] .list-group-item-blue-500{color:#084298;background-color:#cfe2ff}html .list-group-item-blue-500.list-group-item-action:hover,html .list-group-item-blue-500.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-blue-500.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-blue-500.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-blue-500.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-blue-500.list-group-item-action:focus{color:#084298;background-color:#bacbe6}html .list-group-item-blue-500.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-blue-500.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-blue-500.list-group-item-action.active{color:#fff;background-color:#084298;border-color:#084298}}@media print{html .list-group-item-blue-600,html[data-netbox-color-mode=dark] .list-group-item-blue-600,html[data-netbox-color-mode=light] .list-group-item-blue-600{color:#063579;background-color:#cedef4}html .list-group-item-blue-600.list-group-item-action:hover,html .list-group-item-blue-600.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-blue-600.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-blue-600.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-blue-600.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-blue-600.list-group-item-action:focus{color:#063579;background-color:#b9c8dc}html .list-group-item-blue-600.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-blue-600.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-blue-600.list-group-item-action.active{color:#fff;background-color:#063579;border-color:#063579}}@media print{html .list-group-item-blue-700,html[data-netbox-color-mode=dark] .list-group-item-blue-700,html[data-netbox-color-mode=light] .list-group-item-blue-700{color:#05285b;background-color:#ced9ea}html .list-group-item-blue-700.list-group-item-action:hover,html .list-group-item-blue-700.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-blue-700.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-blue-700.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-blue-700.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-blue-700.list-group-item-action:focus{color:#05285b;background-color:#b9c3d3}html .list-group-item-blue-700.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-blue-700.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-blue-700.list-group-item-action.active{color:#fff;background-color:#05285b;border-color:#05285b}}@media print{html .list-group-item-blue-800,html[data-netbox-color-mode=dark] .list-group-item-blue-800,html[data-netbox-color-mode=light] .list-group-item-blue-800{color:#031a3d;background-color:#cdd5e0}html .list-group-item-blue-800.list-group-item-action:hover,html .list-group-item-blue-800.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-blue-800.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-blue-800.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-blue-800.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-blue-800.list-group-item-action:focus{color:#031a3d;background-color:#b9c0ca}html .list-group-item-blue-800.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-blue-800.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-blue-800.list-group-item-action.active{color:#fff;background-color:#031a3d;border-color:#031a3d}}@media print{html .list-group-item-blue-900,html[data-netbox-color-mode=dark] .list-group-item-blue-900,html[data-netbox-color-mode=light] .list-group-item-blue-900{color:#020d1f;background-color:#cdd0d6}html .list-group-item-blue-900.list-group-item-action:hover,html .list-group-item-blue-900.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-blue-900.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-blue-900.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-blue-900.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-blue-900.list-group-item-action:focus{color:#020d1f;background-color:#b9bbc1}html .list-group-item-blue-900.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-blue-900.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-blue-900.list-group-item-action.active{color:#fff;background-color:#020d1f;border-color:#020d1f}}@media print{html .list-group-item-cyan-100,html[data-netbox-color-mode=dark] .list-group-item-cyan-100,html[data-netbox-color-mode=light] .list-group-item-cyan-100{color:#536265;background-color:#f5fdfe}html .list-group-item-cyan-100.list-group-item-action:hover,html .list-group-item-cyan-100.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-cyan-100.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-cyan-100.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-cyan-100.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-cyan-100.list-group-item-action:focus{color:#536265;background-color:#dde4e5}html .list-group-item-cyan-100.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-cyan-100.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-cyan-100.list-group-item-action.active{color:#fff;background-color:#536265;border-color:#536265}}@media print{html .list-group-item-cyan-200,html[data-netbox-color-mode=dark] .list-group-item-cyan-200,html[data-netbox-color-mode=light] .list-group-item-cyan-200{color:#3f5e64;background-color:#ecfbfe}html .list-group-item-cyan-200.list-group-item-action:hover,html .list-group-item-cyan-200.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-cyan-200.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-cyan-200.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-cyan-200.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-cyan-200.list-group-item-action:focus{color:#3f5e64;background-color:#d4e2e5}html .list-group-item-cyan-200.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-cyan-200.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-cyan-200.list-group-item-action.active{color:#fff;background-color:#3f5e64;border-color:#3f5e64}}@media print{html .list-group-item-cyan-300,html[data-netbox-color-mode=dark] .list-group-item-cyan-300,html[data-netbox-color-mode=light] .list-group-item-cyan-300{color:#2c5962;background-color:#e2f9fd}html .list-group-item-cyan-300.list-group-item-action:hover,html .list-group-item-cyan-300.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-cyan-300.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-cyan-300.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-cyan-300.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-cyan-300.list-group-item-action:focus{color:#2c5962;background-color:#cbe0e4}html .list-group-item-cyan-300.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-cyan-300.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-cyan-300.list-group-item-action.active{color:#fff;background-color:#2c5962;border-color:#2c5962}}@media print{html .list-group-item-cyan-400,html[data-netbox-color-mode=dark] .list-group-item-cyan-400,html[data-netbox-color-mode=light] .list-group-item-cyan-400{color:#185561;background-color:#d8f7fd}html .list-group-item-cyan-400.list-group-item-action:hover,html .list-group-item-cyan-400.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-cyan-400.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-cyan-400.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-cyan-400.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-cyan-400.list-group-item-action:focus{color:#185561;background-color:#c2dee4}html .list-group-item-cyan-400.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-cyan-400.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-cyan-400.list-group-item-action.active{color:#fff;background-color:#185561;border-color:#185561}}@media print{html .list-group-item-cyan-500,html[data-netbox-color-mode=dark] .list-group-item-cyan-500,html[data-netbox-color-mode=light] .list-group-item-cyan-500{color:#055160;background-color:#cff4fc}html .list-group-item-cyan-500.list-group-item-action:hover,html .list-group-item-cyan-500.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-cyan-500.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-cyan-500.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-cyan-500.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-cyan-500.list-group-item-action:focus{color:#055160;background-color:#badce3}html .list-group-item-cyan-500.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-cyan-500.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-cyan-500.list-group-item-action.active{color:#fff;background-color:#055160;border-color:#055160}}@media print{html .list-group-item-cyan-600,html[data-netbox-color-mode=dark] .list-group-item-cyan-600,html[data-netbox-color-mode=light] .list-group-item-cyan-600{color:#066173;background-color:#ceecf2}html .list-group-item-cyan-600.list-group-item-action:hover,html .list-group-item-cyan-600.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-cyan-600.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-cyan-600.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-cyan-600.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-cyan-600.list-group-item-action:focus{color:#066173;background-color:#b9d4da}html .list-group-item-cyan-600.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-cyan-600.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-cyan-600.list-group-item-action.active{color:#fff;background-color:#066173;border-color:#066173}}@media print{html .list-group-item-cyan-700,html[data-netbox-color-mode=dark] .list-group-item-cyan-700,html[data-netbox-color-mode=light] .list-group-item-cyan-700{color:#054956;background-color:#cee4e9}html .list-group-item-cyan-700.list-group-item-action:hover,html .list-group-item-cyan-700.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-cyan-700.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-cyan-700.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-cyan-700.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-cyan-700.list-group-item-action:focus{color:#054956;background-color:#b9cdd2}html .list-group-item-cyan-700.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-cyan-700.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-cyan-700.list-group-item-action.active{color:#fff;background-color:#054956;border-color:#054956}}@media print{html .list-group-item-cyan-800,html[data-netbox-color-mode=dark] .list-group-item-cyan-800,html[data-netbox-color-mode=light] .list-group-item-cyan-800{color:#03313a;background-color:#cddcdf}html .list-group-item-cyan-800.list-group-item-action:hover,html .list-group-item-cyan-800.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-cyan-800.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-cyan-800.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-cyan-800.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-cyan-800.list-group-item-action:focus{color:#03313a;background-color:#b9c6c9}html .list-group-item-cyan-800.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-cyan-800.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-cyan-800.list-group-item-action.active{color:#fff;background-color:#03313a;border-color:#03313a}}@media print{html .list-group-item-cyan-900,html[data-netbox-color-mode=dark] .list-group-item-cyan-900,html[data-netbox-color-mode=light] .list-group-item-cyan-900{color:#02181d;background-color:#cdd4d6}html .list-group-item-cyan-900.list-group-item-action:hover,html .list-group-item-cyan-900.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-cyan-900.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-cyan-900.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-cyan-900.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-cyan-900.list-group-item-action:focus{color:#02181d;background-color:#b9bfc1}html .list-group-item-cyan-900.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-cyan-900.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-cyan-900.list-group-item-action.active{color:#fff;background-color:#02181d;border-color:#02181d}}@media print{html .list-group-item-indigo-100,html[data-netbox-color-mode=dark] .list-group-item-indigo-100,html[data-netbox-color-mode=light] .list-group-item-indigo-100{color:#5a5365;background-color:#f9f5fe}html .list-group-item-indigo-100.list-group-item-action:hover,html .list-group-item-indigo-100.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-indigo-100.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-indigo-100.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-indigo-100.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-indigo-100.list-group-item-action:focus{color:#5a5365;background-color:#e0dde5}html .list-group-item-indigo-100.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-indigo-100.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-indigo-100.list-group-item-action.active{color:#fff;background-color:#5a5365;border-color:#5a5365}}@media print{html .list-group-item-indigo-200,html[data-netbox-color-mode=dark] .list-group-item-indigo-200,html[data-netbox-color-mode=light] .list-group-item-indigo-200{color:#745f96;background-color:#f3ecfe}html .list-group-item-indigo-200.list-group-item-action:hover,html .list-group-item-indigo-200.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-indigo-200.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-indigo-200.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-indigo-200.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-indigo-200.list-group-item-action:focus{color:#745f96;background-color:#dbd4e5}html .list-group-item-indigo-200.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-indigo-200.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-indigo-200.list-group-item-action.active{color:#fff;background-color:#745f96;border-color:#745f96}}@media print{html .list-group-item-indigo-300,html[data-netbox-color-mode=dark] .list-group-item-indigo-300,html[data-netbox-color-mode=light] .list-group-item-indigo-300{color:#624394;background-color:#ede2fd}html .list-group-item-indigo-300.list-group-item-action:hover,html .list-group-item-indigo-300.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-indigo-300.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-indigo-300.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-indigo-300.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-indigo-300.list-group-item-action:focus{color:#624394;background-color:#d5cbe4}html .list-group-item-indigo-300.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-indigo-300.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-indigo-300.list-group-item-action.active{color:#fff;background-color:#624394;border-color:#624394}}@media print{html .list-group-item-indigo-400,html[data-netbox-color-mode=dark] .list-group-item-indigo-400,html[data-netbox-color-mode=light] .list-group-item-indigo-400{color:#502693;background-color:#e7d9fd}html .list-group-item-indigo-400.list-group-item-action:hover,html .list-group-item-indigo-400.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-indigo-400.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-indigo-400.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-indigo-400.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-indigo-400.list-group-item-action:focus{color:#502693;background-color:#d0c3e4}html .list-group-item-indigo-400.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-indigo-400.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-indigo-400.list-group-item-action.active{color:#fff;background-color:#502693;border-color:#502693}}@media print{html .list-group-item-indigo-500,html[data-netbox-color-mode=dark] .list-group-item-indigo-500,html[data-netbox-color-mode=light] .list-group-item-indigo-500{color:#3d0a91;background-color:#e0cffc}html .list-group-item-indigo-500.list-group-item-action:hover,html .list-group-item-indigo-500.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-indigo-500.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-indigo-500.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-indigo-500.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-indigo-500.list-group-item-action:focus{color:#3d0a91;background-color:#cabae3}html .list-group-item-indigo-500.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-indigo-500.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-indigo-500.list-group-item-action.active{color:#fff;background-color:#3d0a91;border-color:#3d0a91}}@media print{html .list-group-item-indigo-600,html[data-netbox-color-mode=dark] .list-group-item-indigo-600,html[data-netbox-color-mode=light] .list-group-item-indigo-600{color:#310874;background-color:#dccff3}html .list-group-item-indigo-600.list-group-item-action:hover,html .list-group-item-indigo-600.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-indigo-600.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-indigo-600.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-indigo-600.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-indigo-600.list-group-item-action:focus{color:#310874;background-color:#c6badb}html .list-group-item-indigo-600.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-indigo-600.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-indigo-600.list-group-item-action.active{color:#fff;background-color:#310874;border-color:#310874}}@media print{html .list-group-item-indigo-700,html[data-netbox-color-mode=dark] .list-group-item-indigo-700,html[data-netbox-color-mode=light] .list-group-item-indigo-700{color:#250657;background-color:#d8cee9}html .list-group-item-indigo-700.list-group-item-action:hover,html .list-group-item-indigo-700.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-indigo-700.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-indigo-700.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-indigo-700.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-indigo-700.list-group-item-action:focus{color:#250657;background-color:#c2b9d2}html .list-group-item-indigo-700.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-indigo-700.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-indigo-700.list-group-item-action.active{color:#fff;background-color:#250657;border-color:#250657}}@media print{html .list-group-item-indigo-800,html[data-netbox-color-mode=dark] .list-group-item-indigo-800,html[data-netbox-color-mode=light] .list-group-item-indigo-800{color:#19043a;background-color:#d4cddf}html .list-group-item-indigo-800.list-group-item-action:hover,html .list-group-item-indigo-800.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-indigo-800.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-indigo-800.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-indigo-800.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-indigo-800.list-group-item-action:focus{color:#19043a;background-color:#bfb9c9}html .list-group-item-indigo-800.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-indigo-800.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-indigo-800.list-group-item-action.active{color:#fff;background-color:#19043a;border-color:#19043a}}@media print{html .list-group-item-indigo-900,html[data-netbox-color-mode=dark] .list-group-item-indigo-900,html[data-netbox-color-mode=light] .list-group-item-indigo-900{color:#0c021d;background-color:#d0cdd6}html .list-group-item-indigo-900.list-group-item-action:hover,html .list-group-item-indigo-900.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-indigo-900.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-indigo-900.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-indigo-900.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-indigo-900.list-group-item-action:focus{color:#0c021d;background-color:#bbb9c1}html .list-group-item-indigo-900.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-indigo-900.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-indigo-900.list-group-item-action.active{color:#fff;background-color:#0c021d;border-color:#0c021d}}@media print{html .list-group-item-purple-100,html[data-netbox-color-mode=dark] .list-group-item-purple-100,html[data-netbox-color-mode=light] .list-group-item-purple-100{color:#5a5761;background-color:#f9f7fd}html .list-group-item-purple-100.list-group-item-action:hover,html .list-group-item-purple-100.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-purple-100.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-purple-100.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-purple-100.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-purple-100.list-group-item-action:focus{color:#5a5761;background-color:#e0dee4}html .list-group-item-purple-100.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-purple-100.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-purple-100.list-group-item-action.active{color:#fff;background-color:#5a5761;border-color:#5a5761}}@media print{html .list-group-item-purple-200,html[data-netbox-color-mode=dark] .list-group-item-purple-200,html[data-netbox-color-mode=light] .list-group-item-purple-200{color:#4f485c;background-color:#f3f0fa}html .list-group-item-purple-200.list-group-item-action:hover,html .list-group-item-purple-200.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-purple-200.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-purple-200.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-purple-200.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-purple-200.list-group-item-action:focus{color:#4f485c;background-color:#dbd8e1}html .list-group-item-purple-200.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-purple-200.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-purple-200.list-group-item-action.active{color:#fff;background-color:#4f485c;border-color:#4f485c}}@media print{html .list-group-item-purple-300,html[data-netbox-color-mode=dark] .list-group-item-purple-300,html[data-netbox-color-mode=light] .list-group-item-purple-300{color:#655583;background-color:#eee8f8}html .list-group-item-purple-300.list-group-item-action:hover,html .list-group-item-purple-300.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-purple-300.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-purple-300.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-purple-300.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-purple-300.list-group-item-action:focus{color:#655583;background-color:#d6d1df}html .list-group-item-purple-300.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-purple-300.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-purple-300.list-group-item-action.active{color:#fff;background-color:#655583;border-color:#655583}}@media print{html .list-group-item-purple-400,html[data-netbox-color-mode=dark] .list-group-item-purple-400,html[data-netbox-color-mode=light] .list-group-item-purple-400{color:#543e7b;background-color:#e8e1f5}html .list-group-item-purple-400.list-group-item-action:hover,html .list-group-item-purple-400.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-purple-400.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-purple-400.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-purple-400.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-purple-400.list-group-item-action:focus{color:#543e7b;background-color:#d1cbdd}html .list-group-item-purple-400.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-purple-400.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-purple-400.list-group-item-action.active{color:#fff;background-color:#543e7b;border-color:#543e7b}}@media print{html .list-group-item-purple-500,html[data-netbox-color-mode=dark] .list-group-item-purple-500,html[data-netbox-color-mode=light] .list-group-item-purple-500{color:#432874;background-color:#e2d9f3}html .list-group-item-purple-500.list-group-item-action:hover,html .list-group-item-purple-500.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-purple-500.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-purple-500.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-purple-500.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-purple-500.list-group-item-action:focus{color:#432874;background-color:#cbc3db}html .list-group-item-purple-500.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-purple-500.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-purple-500.list-group-item-action.active{color:#fff;background-color:#432874;border-color:#432874}}@media print{html .list-group-item-purple-600,html[data-netbox-color-mode=dark] .list-group-item-purple-600,html[data-netbox-color-mode=light] .list-group-item-purple-600{color:#35205c;background-color:#ded7eb}html .list-group-item-purple-600.list-group-item-action:hover,html .list-group-item-purple-600.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-purple-600.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-purple-600.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-purple-600.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-purple-600.list-group-item-action:focus{color:#35205c;background-color:#c8c2d4}html .list-group-item-purple-600.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-purple-600.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-purple-600.list-group-item-action.active{color:#fff;background-color:#35205c;border-color:#35205c}}@media print{html .list-group-item-purple-700,html[data-netbox-color-mode=dark] .list-group-item-purple-700,html[data-netbox-color-mode=light] .list-group-item-purple-700{color:#281846;background-color:#d9d4e3}html .list-group-item-purple-700.list-group-item-action:hover,html .list-group-item-purple-700.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-purple-700.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-purple-700.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-purple-700.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-purple-700.list-group-item-action:focus{color:#281846;background-color:#c3bfcc}html .list-group-item-purple-700.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-purple-700.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-purple-700.list-group-item-action.active{color:#fff;background-color:#281846;border-color:#281846}}@media print{html .list-group-item-purple-800,html[data-netbox-color-mode=dark] .list-group-item-purple-800,html[data-netbox-color-mode=light] .list-group-item-purple-800{color:#1a102e;background-color:#d5d1db}html .list-group-item-purple-800.list-group-item-action:hover,html .list-group-item-purple-800.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-purple-800.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-purple-800.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-purple-800.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-purple-800.list-group-item-action:focus{color:#1a102e;background-color:#c0bcc5}html .list-group-item-purple-800.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-purple-800.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-purple-800.list-group-item-action.active{color:#fff;background-color:#1a102e;border-color:#1a102e}}@media print{html .list-group-item-purple-900,html[data-netbox-color-mode=dark] .list-group-item-purple-900,html[data-netbox-color-mode=light] .list-group-item-purple-900{color:#0d0817;background-color:#d0cfd4}html .list-group-item-purple-900.list-group-item-action:hover,html .list-group-item-purple-900.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-purple-900.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-purple-900.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-purple-900.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-purple-900.list-group-item-action:focus{color:#0d0817;background-color:#bbbabf}html .list-group-item-purple-900.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-purple-900.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-purple-900.list-group-item-action.active{color:#fff;background-color:#0d0817;border-color:#0d0817}}@media print{html .list-group-item-pink-100,html[data-netbox-color-mode=dark] .list-group-item-pink-100,html[data-netbox-color-mode=light] .list-group-item-pink-100{color:#63565c;background-color:#fdf7fa}html .list-group-item-pink-100.list-group-item-action:hover,html .list-group-item-pink-100.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-pink-100.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-pink-100.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-pink-100.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-pink-100.list-group-item-action:focus{color:#63565c;background-color:#e4dee1}html .list-group-item-pink-100.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-pink-100.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-pink-100.list-group-item-action.active{color:#fff;background-color:#63565c;border-color:#63565c}}@media print{html .list-group-item-pink-200,html[data-netbox-color-mode=dark] .list-group-item-pink-200,html[data-netbox-color-mode=light] .list-group-item-pink-200{color:#604552;background-color:#fceff5}html .list-group-item-pink-200.list-group-item-action:hover,html .list-group-item-pink-200.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-pink-200.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-pink-200.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-pink-200.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-pink-200.list-group-item-action:focus{color:#604552;background-color:#e3d7dd}html .list-group-item-pink-200.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-pink-200.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-pink-200.list-group-item-action.active{color:#fff;background-color:#604552;border-color:#604552}}@media print{html .list-group-item-pink-300,html[data-netbox-color-mode=dark] .list-group-item-pink-300,html[data-netbox-color-mode=light] .list-group-item-pink-300{color:#8a506d;background-color:#fae7f0}html .list-group-item-pink-300.list-group-item-action:hover,html .list-group-item-pink-300.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-pink-300.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-pink-300.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-pink-300.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-pink-300.list-group-item-action:focus{color:#8a506d;background-color:#e1d0d8}html .list-group-item-pink-300.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-pink-300.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-pink-300.list-group-item-action.active{color:#fff;background-color:#8a506d;border-color:#8a506d}}@media print{html .list-group-item-pink-400,html[data-netbox-color-mode=dark] .list-group-item-pink-400,html[data-netbox-color-mode=light] .list-group-item-pink-400{color:#85375e;background-color:#f8deeb}html .list-group-item-pink-400.list-group-item-action:hover,html .list-group-item-pink-400.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-pink-400.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-pink-400.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-pink-400.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-pink-400.list-group-item-action:focus{color:#85375e;background-color:#dfc8d4}html .list-group-item-pink-400.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-pink-400.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-pink-400.list-group-item-action.active{color:#fff;background-color:#85375e;border-color:#85375e}}@media print{html .list-group-item-pink-500,html[data-netbox-color-mode=dark] .list-group-item-pink-500,html[data-netbox-color-mode=light] .list-group-item-pink-500{color:#801f4f;background-color:#f7d6e6}html .list-group-item-pink-500.list-group-item-action:hover,html .list-group-item-pink-500.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-pink-500.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-pink-500.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-pink-500.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-pink-500.list-group-item-action:focus{color:#801f4f;background-color:#dec1cf}html .list-group-item-pink-500.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-pink-500.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-pink-500.list-group-item-action.active{color:#fff;background-color:#801f4f;border-color:#801f4f}}@media print{html .list-group-item-pink-600,html[data-netbox-color-mode=dark] .list-group-item-pink-600,html[data-netbox-color-mode=light] .list-group-item-pink-600{color:#671940;background-color:#eed4e1}html .list-group-item-pink-600.list-group-item-action:hover,html .list-group-item-pink-600.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-pink-600.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-pink-600.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-pink-600.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-pink-600.list-group-item-action:focus{color:#671940;background-color:#d6bfcb}html .list-group-item-pink-600.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-pink-600.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-pink-600.list-group-item-action.active{color:#fff;background-color:#671940;border-color:#671940}}@media print{html .list-group-item-pink-700,html[data-netbox-color-mode=dark] .list-group-item-pink-700,html[data-netbox-color-mode=light] .list-group-item-pink-700{color:#4d132f;background-color:#e6d2dc}html .list-group-item-pink-700.list-group-item-action:hover,html .list-group-item-pink-700.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-pink-700.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-pink-700.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-pink-700.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-pink-700.list-group-item-action:focus{color:#4d132f;background-color:#cfbdc6}html .list-group-item-pink-700.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-pink-700.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-pink-700.list-group-item-action.active{color:#fff;background-color:#4d132f;border-color:#4d132f}}@media print{html .list-group-item-pink-800,html[data-netbox-color-mode=dark] .list-group-item-pink-800,html[data-netbox-color-mode=light] .list-group-item-pink-800{color:#340c20;background-color:#ddd0d7}html .list-group-item-pink-800.list-group-item-action:hover,html .list-group-item-pink-800.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-pink-800.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-pink-800.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-pink-800.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-pink-800.list-group-item-action:focus{color:#340c20;background-color:#c7bbc2}html .list-group-item-pink-800.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-pink-800.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-pink-800.list-group-item-action.active{color:#fff;background-color:#340c20;border-color:#340c20}}@media print{html .list-group-item-pink-900,html[data-netbox-color-mode=dark] .list-group-item-pink-900,html[data-netbox-color-mode=light] .list-group-item-pink-900{color:#1a0610;background-color:#d5ced1}html .list-group-item-pink-900.list-group-item-action:hover,html .list-group-item-pink-900.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-pink-900.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-pink-900.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-pink-900.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-pink-900.list-group-item-action:focus{color:#1a0610;background-color:#c0b9bc}html .list-group-item-pink-900.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-pink-900.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-pink-900.list-group-item-action.active{color:#fff;background-color:#1a0610;border-color:#1a0610}}@media print{html .btn-close,html[data-netbox-color-mode=dark] .btn-close,html[data-netbox-color-mode=light] .btn-close{box-sizing:content-box;width:1em;height:1em;padding:.25em;color:#000;background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat;border:0;border-radius:.375rem;opacity:.5}html .btn-close:hover,html[data-netbox-color-mode=dark] .btn-close:hover,html[data-netbox-color-mode=light] .btn-close:hover{color:#000;text-decoration:none;opacity:.75}html .btn-close:focus,html[data-netbox-color-mode=dark] .btn-close:focus,html[data-netbox-color-mode=light] .btn-close:focus{outline:0;box-shadow:0 0 0 .25rem #0d6efd40;opacity:1}html .btn-close:disabled,html .btn-close.disabled,html[data-netbox-color-mode=dark] .btn-close:disabled,html[data-netbox-color-mode=dark] .btn-close.disabled,html[data-netbox-color-mode=light] .btn-close:disabled,html[data-netbox-color-mode=light] .btn-close.disabled{pointer-events:none;user-select:none;opacity:.25}}@media print{html .btn-close-white,html[data-netbox-color-mode=dark] .btn-close-white,html[data-netbox-color-mode=light] .btn-close-white{filter:invert(1) grayscale(100%) brightness(200%)}}@media print{html .toast,html[data-netbox-color-mode=dark] .toast,html[data-netbox-color-mode=light] .toast{width:350px;max-width:100%;font-size:.875rem;pointer-events:auto;background-color:#ffffffd9;background-clip:padding-box;border:1px solid rgba(0,0,0,.1);box-shadow:0 .5rem 1rem #00000026;border-radius:.375rem}html .toast:not(.showing):not(.show),html[data-netbox-color-mode=dark] .toast:not(.showing):not(.show),html[data-netbox-color-mode=light] .toast:not(.showing):not(.show){opacity:0}html .toast.hide,html[data-netbox-color-mode=dark] .toast.hide,html[data-netbox-color-mode=light] .toast.hide{display:none}}@media print{html .toast-container,html[data-netbox-color-mode=dark] .toast-container,html[data-netbox-color-mode=light] .toast-container{width:max-content;max-width:100%;pointer-events:none}html .toast-container>:not(:last-child),html[data-netbox-color-mode=dark] .toast-container>:not(:last-child),html[data-netbox-color-mode=light] .toast-container>:not(:last-child){margin-bottom:.75rem}}@media print{html .toast-header,html[data-netbox-color-mode=dark] .toast-header,html[data-netbox-color-mode=light] .toast-header{display:flex;align-items:center;padding:.5rem .75rem;color:#6c757d;background-color:#ffffffd9;background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,.05);border-top-left-radius:calc(.375rem - 1px);border-top-right-radius:calc(.375rem - 1px)}html .toast-header .btn-close,html[data-netbox-color-mode=dark] .toast-header .btn-close,html[data-netbox-color-mode=light] .toast-header .btn-close{margin-right:-.375rem;margin-left:.75rem}}@media print{html .toast-body,html[data-netbox-color-mode=dark] .toast-body,html[data-netbox-color-mode=light] .toast-body{padding:.75rem;word-wrap:break-word}}@media print{html .modal,html[data-netbox-color-mode=dark] .modal,html[data-netbox-color-mode=light] .modal{position:fixed;top:0;left:0;z-index:1060;display:none;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;outline:0}}@media print{html .modal-dialog,html[data-netbox-color-mode=dark] .modal-dialog,html[data-netbox-color-mode=light] .modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade html .modal-dialog,.modal.fade html[data-netbox-color-mode=dark] .modal-dialog,.modal.fade html[data-netbox-color-mode=light] .modal-dialog{transition:transform .3s ease-out;transform:translateY(-50px)}}@media print and (prefers-reduced-motion: reduce){.modal.fade html .modal-dialog,.modal.fade html[data-netbox-color-mode=dark] .modal-dialog,.modal.fade html[data-netbox-color-mode=light] .modal-dialog{transition:none}}@media print{.modal.show html .modal-dialog,.modal.show html[data-netbox-color-mode=dark] .modal-dialog,.modal.show html[data-netbox-color-mode=light] .modal-dialog{transform:none}}@media print{.modal.modal-static html .modal-dialog,.modal.modal-static html[data-netbox-color-mode=dark] .modal-dialog,.modal.modal-static html[data-netbox-color-mode=light] .modal-dialog{transform:scale(1.02)}}@media print{html .modal-dialog-scrollable,html[data-netbox-color-mode=dark] .modal-dialog-scrollable,html[data-netbox-color-mode=light] .modal-dialog-scrollable{height:calc(100% - 1rem)}html .modal-dialog-scrollable .modal-content,html[data-netbox-color-mode=dark] .modal-dialog-scrollable .modal-content,html[data-netbox-color-mode=light] .modal-dialog-scrollable .modal-content{max-height:100%;overflow:hidden}html .modal-dialog-scrollable .modal-body,html[data-netbox-color-mode=dark] .modal-dialog-scrollable .modal-body,html[data-netbox-color-mode=light] .modal-dialog-scrollable .modal-body{overflow-y:auto}}@media print{html .modal-dialog-centered,html[data-netbox-color-mode=dark] .modal-dialog-centered,html[data-netbox-color-mode=light] .modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - 1rem)}}@media print{html .modal-content,html[data-netbox-color-mode=dark] .modal-content,html[data-netbox-color-mode=light] .modal-content{position:relative;display:flex;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.75rem;outline:0}}@media print{html .modal-backdrop,html[data-netbox-color-mode=dark] .modal-backdrop,html[data-netbox-color-mode=light] .modal-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}html .modal-backdrop.fade,html[data-netbox-color-mode=dark] .modal-backdrop.fade,html[data-netbox-color-mode=light] .modal-backdrop.fade{opacity:0}html .modal-backdrop.show,html[data-netbox-color-mode=dark] .modal-backdrop.show,html[data-netbox-color-mode=light] .modal-backdrop.show{opacity:.5}}@media print{html .modal-header,html[data-netbox-color-mode=dark] .modal-header,html[data-netbox-color-mode=light] .modal-header{display:flex;flex-shrink:0;align-items:center;justify-content:space-between;padding:1rem;border-bottom:1px solid #dee2e6;border-top-left-radius:calc(.75rem - 1px);border-top-right-radius:calc(.75rem - 1px)}html .modal-header .btn-close,html[data-netbox-color-mode=dark] .modal-header .btn-close,html[data-netbox-color-mode=light] .modal-header .btn-close{padding:.5rem;margin:-.5rem -.5rem -.5rem auto}}@media print{html .modal-title,html[data-netbox-color-mode=dark] .modal-title,html[data-netbox-color-mode=light] .modal-title{margin-bottom:0;line-height:1.5}}@media print{html .modal-body,html[data-netbox-color-mode=dark] .modal-body,html[data-netbox-color-mode=light] .modal-body{position:relative;flex:1 1 auto;padding:1rem}}@media print{html .modal-footer,html[data-netbox-color-mode=dark] .modal-footer,html[data-netbox-color-mode=light] .modal-footer{display:flex;flex-wrap:wrap;flex-shrink:0;align-items:center;justify-content:flex-end;padding:.75rem;border-top:1px solid #dee2e6;border-bottom-right-radius:calc(.75rem - 1px);border-bottom-left-radius:calc(.75rem - 1px)}html .modal-footer>*,html[data-netbox-color-mode=dark] .modal-footer>*,html[data-netbox-color-mode=light] .modal-footer>*{margin:.25rem}}@media print and (min-width: 576px){html .modal-dialog,html[data-netbox-color-mode=dark] .modal-dialog,html[data-netbox-color-mode=light] .modal-dialog{max-width:500px;margin:1.75rem auto}html .modal-dialog-scrollable,html[data-netbox-color-mode=dark] .modal-dialog-scrollable,html[data-netbox-color-mode=light] .modal-dialog-scrollable{height:calc(100% - 3.5rem)}html .modal-dialog-centered,html[data-netbox-color-mode=dark] .modal-dialog-centered,html[data-netbox-color-mode=light] .modal-dialog-centered{min-height:calc(100% - 3.5rem)}html .modal-sm,html[data-netbox-color-mode=dark] .modal-sm,html[data-netbox-color-mode=light] .modal-sm{max-width:300px}}@media print and (min-width: 992px){html .modal-lg,html .modal-xl,html[data-netbox-color-mode=dark] .modal-lg,html[data-netbox-color-mode=dark] .modal-xl,html[data-netbox-color-mode=light] .modal-lg,html[data-netbox-color-mode=light] .modal-xl{max-width:800px}}@media print and (min-width: 1200px){html .modal-xl,html[data-netbox-color-mode=dark] .modal-xl,html[data-netbox-color-mode=light] .modal-xl{max-width:1140px}}@media print{html .modal-fullscreen,html[data-netbox-color-mode=dark] .modal-fullscreen,html[data-netbox-color-mode=light] .modal-fullscreen{width:100vw;max-width:none;height:100%;margin:0}html .modal-fullscreen .modal-content,html[data-netbox-color-mode=dark] .modal-fullscreen .modal-content,html[data-netbox-color-mode=light] .modal-fullscreen .modal-content{height:100%;border:0;border-radius:0}html .modal-fullscreen .modal-header,html[data-netbox-color-mode=dark] .modal-fullscreen .modal-header,html[data-netbox-color-mode=light] .modal-fullscreen .modal-header{border-radius:0}html .modal-fullscreen .modal-body,html[data-netbox-color-mode=dark] .modal-fullscreen .modal-body,html[data-netbox-color-mode=light] .modal-fullscreen .modal-body{overflow-y:auto}html .modal-fullscreen .modal-footer,html[data-netbox-color-mode=dark] .modal-fullscreen .modal-footer,html[data-netbox-color-mode=light] .modal-fullscreen .modal-footer{border-radius:0}}@media print and (max-width: 575.98px){html .modal-fullscreen-sm-down,html[data-netbox-color-mode=dark] .modal-fullscreen-sm-down,html[data-netbox-color-mode=light] .modal-fullscreen-sm-down{width:100vw;max-width:none;height:100%;margin:0}html .modal-fullscreen-sm-down .modal-content,html[data-netbox-color-mode=dark] .modal-fullscreen-sm-down .modal-content,html[data-netbox-color-mode=light] .modal-fullscreen-sm-down .modal-content{height:100%;border:0;border-radius:0}html .modal-fullscreen-sm-down .modal-header,html[data-netbox-color-mode=dark] .modal-fullscreen-sm-down .modal-header,html[data-netbox-color-mode=light] .modal-fullscreen-sm-down .modal-header{border-radius:0}html .modal-fullscreen-sm-down .modal-body,html[data-netbox-color-mode=dark] .modal-fullscreen-sm-down .modal-body,html[data-netbox-color-mode=light] .modal-fullscreen-sm-down .modal-body{overflow-y:auto}html .modal-fullscreen-sm-down .modal-footer,html[data-netbox-color-mode=dark] .modal-fullscreen-sm-down .modal-footer,html[data-netbox-color-mode=light] .modal-fullscreen-sm-down .modal-footer{border-radius:0}}@media print and (max-width: 767.98px){html .modal-fullscreen-md-down,html[data-netbox-color-mode=dark] .modal-fullscreen-md-down,html[data-netbox-color-mode=light] .modal-fullscreen-md-down{width:100vw;max-width:none;height:100%;margin:0}html .modal-fullscreen-md-down .modal-content,html[data-netbox-color-mode=dark] .modal-fullscreen-md-down .modal-content,html[data-netbox-color-mode=light] .modal-fullscreen-md-down .modal-content{height:100%;border:0;border-radius:0}html .modal-fullscreen-md-down .modal-header,html[data-netbox-color-mode=dark] .modal-fullscreen-md-down .modal-header,html[data-netbox-color-mode=light] .modal-fullscreen-md-down .modal-header{border-radius:0}html .modal-fullscreen-md-down .modal-body,html[data-netbox-color-mode=dark] .modal-fullscreen-md-down .modal-body,html[data-netbox-color-mode=light] .modal-fullscreen-md-down .modal-body{overflow-y:auto}html .modal-fullscreen-md-down .modal-footer,html[data-netbox-color-mode=dark] .modal-fullscreen-md-down .modal-footer,html[data-netbox-color-mode=light] .modal-fullscreen-md-down .modal-footer{border-radius:0}}@media print and (max-width: 991.98px){html .modal-fullscreen-lg-down,html[data-netbox-color-mode=dark] .modal-fullscreen-lg-down,html[data-netbox-color-mode=light] .modal-fullscreen-lg-down{width:100vw;max-width:none;height:100%;margin:0}html .modal-fullscreen-lg-down .modal-content,html[data-netbox-color-mode=dark] .modal-fullscreen-lg-down .modal-content,html[data-netbox-color-mode=light] .modal-fullscreen-lg-down .modal-content{height:100%;border:0;border-radius:0}html .modal-fullscreen-lg-down .modal-header,html[data-netbox-color-mode=dark] .modal-fullscreen-lg-down .modal-header,html[data-netbox-color-mode=light] .modal-fullscreen-lg-down .modal-header{border-radius:0}html .modal-fullscreen-lg-down .modal-body,html[data-netbox-color-mode=dark] .modal-fullscreen-lg-down .modal-body,html[data-netbox-color-mode=light] .modal-fullscreen-lg-down .modal-body{overflow-y:auto}html .modal-fullscreen-lg-down .modal-footer,html[data-netbox-color-mode=dark] .modal-fullscreen-lg-down .modal-footer,html[data-netbox-color-mode=light] .modal-fullscreen-lg-down .modal-footer{border-radius:0}}@media print and (max-width: 1199.98px){html .modal-fullscreen-xl-down,html[data-netbox-color-mode=dark] .modal-fullscreen-xl-down,html[data-netbox-color-mode=light] .modal-fullscreen-xl-down{width:100vw;max-width:none;height:100%;margin:0}html .modal-fullscreen-xl-down .modal-content,html[data-netbox-color-mode=dark] .modal-fullscreen-xl-down .modal-content,html[data-netbox-color-mode=light] .modal-fullscreen-xl-down .modal-content{height:100%;border:0;border-radius:0}html .modal-fullscreen-xl-down .modal-header,html[data-netbox-color-mode=dark] .modal-fullscreen-xl-down .modal-header,html[data-netbox-color-mode=light] .modal-fullscreen-xl-down .modal-header{border-radius:0}html .modal-fullscreen-xl-down .modal-body,html[data-netbox-color-mode=dark] .modal-fullscreen-xl-down .modal-body,html[data-netbox-color-mode=light] .modal-fullscreen-xl-down .modal-body{overflow-y:auto}html .modal-fullscreen-xl-down .modal-footer,html[data-netbox-color-mode=dark] .modal-fullscreen-xl-down .modal-footer,html[data-netbox-color-mode=light] .modal-fullscreen-xl-down .modal-footer{border-radius:0}}@media print and (max-width: 1399.98px){html .modal-fullscreen-xxl-down,html[data-netbox-color-mode=dark] .modal-fullscreen-xxl-down,html[data-netbox-color-mode=light] .modal-fullscreen-xxl-down{width:100vw;max-width:none;height:100%;margin:0}html .modal-fullscreen-xxl-down .modal-content,html[data-netbox-color-mode=dark] .modal-fullscreen-xxl-down .modal-content,html[data-netbox-color-mode=light] .modal-fullscreen-xxl-down .modal-content{height:100%;border:0;border-radius:0}html .modal-fullscreen-xxl-down .modal-header,html[data-netbox-color-mode=dark] .modal-fullscreen-xxl-down .modal-header,html[data-netbox-color-mode=light] .modal-fullscreen-xxl-down .modal-header{border-radius:0}html .modal-fullscreen-xxl-down .modal-body,html[data-netbox-color-mode=dark] .modal-fullscreen-xxl-down .modal-body,html[data-netbox-color-mode=light] .modal-fullscreen-xxl-down .modal-body{overflow-y:auto}html .modal-fullscreen-xxl-down .modal-footer,html[data-netbox-color-mode=dark] .modal-fullscreen-xxl-down .modal-footer,html[data-netbox-color-mode=light] .modal-fullscreen-xxl-down .modal-footer{border-radius:0}}@media print{html .tooltip,html[data-netbox-color-mode=dark] .tooltip,html[data-netbox-color-mode=light] .tooltip{position:absolute;z-index:1080;display:block;margin:0;font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}html .tooltip.show,html[data-netbox-color-mode=dark] .tooltip.show,html[data-netbox-color-mode=light] .tooltip.show{opacity:.9}html .tooltip .tooltip-arrow,html[data-netbox-color-mode=dark] .tooltip .tooltip-arrow,html[data-netbox-color-mode=light] .tooltip .tooltip-arrow{position:absolute;display:block;width:.8rem;height:.4rem}html .tooltip .tooltip-arrow:before,html[data-netbox-color-mode=dark] .tooltip .tooltip-arrow:before,html[data-netbox-color-mode=light] .tooltip .tooltip-arrow:before{position:absolute;content:"";border-color:transparent;border-style:solid}}@media print{html .bs-tooltip-top,html .bs-tooltip-auto[data-popper-placement^=top],html[data-netbox-color-mode=dark] .bs-tooltip-top,html[data-netbox-color-mode=light] .bs-tooltip-top{padding:.4rem 0}html .bs-tooltip-top .tooltip-arrow,html .bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow,html[data-netbox-color-mode=dark] .bs-tooltip-top .tooltip-arrow,html[data-netbox-color-mode=light] .bs-tooltip-top .tooltip-arrow{bottom:0}html .bs-tooltip-top .tooltip-arrow:before,html .bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow:before,html[data-netbox-color-mode=dark] .bs-tooltip-top .tooltip-arrow:before,html[data-netbox-color-mode=light] .bs-tooltip-top .tooltip-arrow:before{top:-1px;border-width:.4rem .4rem 0;border-top-color:#000}}@media print{html .bs-tooltip-end,html .bs-tooltip-auto[data-popper-placement^=right],html[data-netbox-color-mode=dark] .bs-tooltip-end,html[data-netbox-color-mode=light] .bs-tooltip-end{padding:0 .4rem}html .bs-tooltip-end .tooltip-arrow,html .bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow,html[data-netbox-color-mode=dark] .bs-tooltip-end .tooltip-arrow,html[data-netbox-color-mode=light] .bs-tooltip-end .tooltip-arrow{left:0;width:.4rem;height:.8rem}html .bs-tooltip-end .tooltip-arrow:before,html .bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow:before,html[data-netbox-color-mode=dark] .bs-tooltip-end .tooltip-arrow:before,html[data-netbox-color-mode=light] .bs-tooltip-end .tooltip-arrow:before{right:-1px;border-width:.4rem .4rem .4rem 0;border-right-color:#000}}@media print{html .bs-tooltip-bottom,html .bs-tooltip-auto[data-popper-placement^=bottom],html[data-netbox-color-mode=dark] .bs-tooltip-bottom,html[data-netbox-color-mode=light] .bs-tooltip-bottom{padding:.4rem 0}html .bs-tooltip-bottom .tooltip-arrow,html .bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow,html[data-netbox-color-mode=dark] .bs-tooltip-bottom .tooltip-arrow,html[data-netbox-color-mode=light] .bs-tooltip-bottom .tooltip-arrow{top:0}html .bs-tooltip-bottom .tooltip-arrow:before,html .bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow:before,html[data-netbox-color-mode=dark] .bs-tooltip-bottom .tooltip-arrow:before,html[data-netbox-color-mode=light] .bs-tooltip-bottom .tooltip-arrow:before{bottom:-1px;border-width:0 .4rem .4rem;border-bottom-color:#000}}@media print{html .bs-tooltip-start,html .bs-tooltip-auto[data-popper-placement^=left],html[data-netbox-color-mode=dark] .bs-tooltip-start,html[data-netbox-color-mode=light] .bs-tooltip-start{padding:0 .4rem}html .bs-tooltip-start .tooltip-arrow,html .bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow,html[data-netbox-color-mode=dark] .bs-tooltip-start .tooltip-arrow,html[data-netbox-color-mode=light] .bs-tooltip-start .tooltip-arrow{right:0;width:.4rem;height:.8rem}html .bs-tooltip-start .tooltip-arrow:before,html .bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow:before,html[data-netbox-color-mode=dark] .bs-tooltip-start .tooltip-arrow:before,html[data-netbox-color-mode=light] .bs-tooltip-start .tooltip-arrow:before{left:-1px;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}}@media print{html .tooltip-inner,html[data-netbox-color-mode=dark] .tooltip-inner,html[data-netbox-color-mode=light] .tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.375rem}}@media print{html .popover,html[data-netbox-color-mode=dark] .popover,html[data-netbox-color-mode=light] .popover{position:absolute;top:0;left:0;z-index:1070;display:block;max-width:276px;font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.75rem}html .popover .popover-arrow,html[data-netbox-color-mode=dark] .popover .popover-arrow,html[data-netbox-color-mode=light] .popover .popover-arrow{position:absolute;display:block;width:1rem;height:.5rem}html .popover .popover-arrow:before,html .popover .popover-arrow:after,html[data-netbox-color-mode=dark] .popover .popover-arrow:before,html[data-netbox-color-mode=dark] .popover .popover-arrow:after,html[data-netbox-color-mode=light] .popover .popover-arrow:before,html[data-netbox-color-mode=light] .popover .popover-arrow:after{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}}@media print{html .bs-popover-top>.popover-arrow,html .bs-popover-auto[data-popper-placement^=top]>.popover-arrow,html[data-netbox-color-mode=dark] .bs-popover-top>.popover-arrow,html[data-netbox-color-mode=light] .bs-popover-top>.popover-arrow{bottom:calc(-.5rem - 1px)}html .bs-popover-top>.popover-arrow:before,html .bs-popover-auto[data-popper-placement^=top]>.popover-arrow:before,html[data-netbox-color-mode=dark] .bs-popover-top>.popover-arrow:before,html[data-netbox-color-mode=light] .bs-popover-top>.popover-arrow:before{bottom:0;border-width:.5rem .5rem 0;border-top-color:#00000040}html .bs-popover-top>.popover-arrow:after,html .bs-popover-auto[data-popper-placement^=top]>.popover-arrow:after,html[data-netbox-color-mode=dark] .bs-popover-top>.popover-arrow:after,html[data-netbox-color-mode=light] .bs-popover-top>.popover-arrow:after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}}@media print{html .bs-popover-end>.popover-arrow,html .bs-popover-auto[data-popper-placement^=right]>.popover-arrow,html[data-netbox-color-mode=dark] .bs-popover-end>.popover-arrow,html[data-netbox-color-mode=light] .bs-popover-end>.popover-arrow{left:calc(-.5rem - 1px);width:.5rem;height:1rem}html .bs-popover-end>.popover-arrow:before,html .bs-popover-auto[data-popper-placement^=right]>.popover-arrow:before,html[data-netbox-color-mode=dark] .bs-popover-end>.popover-arrow:before,html[data-netbox-color-mode=light] .bs-popover-end>.popover-arrow:before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:#00000040}html .bs-popover-end>.popover-arrow:after,html .bs-popover-auto[data-popper-placement^=right]>.popover-arrow:after,html[data-netbox-color-mode=dark] .bs-popover-end>.popover-arrow:after,html[data-netbox-color-mode=light] .bs-popover-end>.popover-arrow:after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}}@media print{html .bs-popover-bottom>.popover-arrow,html .bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow,html[data-netbox-color-mode=dark] .bs-popover-bottom>.popover-arrow,html[data-netbox-color-mode=light] .bs-popover-bottom>.popover-arrow{top:calc(-.5rem - 1px)}html .bs-popover-bottom>.popover-arrow:before,html .bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow:before,html[data-netbox-color-mode=dark] .bs-popover-bottom>.popover-arrow:before,html[data-netbox-color-mode=light] .bs-popover-bottom>.popover-arrow:before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:#00000040}html .bs-popover-bottom>.popover-arrow:after,html .bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow:after,html[data-netbox-color-mode=dark] .bs-popover-bottom>.popover-arrow:after,html[data-netbox-color-mode=light] .bs-popover-bottom>.popover-arrow:after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#fff}html .bs-popover-bottom .popover-header:before,html .bs-popover-auto[data-popper-placement^=bottom] .popover-header:before,html[data-netbox-color-mode=dark] .bs-popover-bottom .popover-header:before,html[data-netbox-color-mode=light] .bs-popover-bottom .popover-header:before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f0f0f0}}@media print{html .bs-popover-start>.popover-arrow,html .bs-popover-auto[data-popper-placement^=left]>.popover-arrow,html[data-netbox-color-mode=dark] .bs-popover-start>.popover-arrow,html[data-netbox-color-mode=light] .bs-popover-start>.popover-arrow{right:calc(-.5rem - 1px);width:.5rem;height:1rem}html .bs-popover-start>.popover-arrow:before,html .bs-popover-auto[data-popper-placement^=left]>.popover-arrow:before,html[data-netbox-color-mode=dark] .bs-popover-start>.popover-arrow:before,html[data-netbox-color-mode=light] .bs-popover-start>.popover-arrow:before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:#00000040}html .bs-popover-start>.popover-arrow:after,html .bs-popover-auto[data-popper-placement^=left]>.popover-arrow:after,html[data-netbox-color-mode=dark] .bs-popover-start>.popover-arrow:after,html[data-netbox-color-mode=light] .bs-popover-start>.popover-arrow:after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}}@media print{html .popover-header,html[data-netbox-color-mode=dark] .popover-header,html[data-netbox-color-mode=light] .popover-header{padding:.5rem 1rem;margin-bottom:0;font-size:1rem;background-color:#f0f0f0;border-bottom:1px solid rgba(0,0,0,.2);border-top-left-radius:calc(.75rem - 1px);border-top-right-radius:calc(.75rem - 1px)}html .popover-header:empty,html[data-netbox-color-mode=dark] .popover-header:empty,html[data-netbox-color-mode=light] .popover-header:empty{display:none}}@media print{html .popover-body,html[data-netbox-color-mode=dark] .popover-body,html[data-netbox-color-mode=light] .popover-body{padding:1rem;color:#212529}}@media print{html .carousel,html[data-netbox-color-mode=dark] .carousel,html[data-netbox-color-mode=light] .carousel{position:relative}}@media print{html .carousel.pointer-event,html[data-netbox-color-mode=dark] .carousel.pointer-event,html[data-netbox-color-mode=light] .carousel.pointer-event{touch-action:pan-y}}@media print{html .carousel-inner,html[data-netbox-color-mode=dark] .carousel-inner,html[data-netbox-color-mode=light] .carousel-inner{position:relative;width:100%;overflow:hidden}html .carousel-inner:after,html[data-netbox-color-mode=dark] .carousel-inner:after,html[data-netbox-color-mode=light] .carousel-inner:after{display:block;clear:both;content:""}}@media print{html .carousel-item,html[data-netbox-color-mode=dark] .carousel-item,html[data-netbox-color-mode=light] .carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;backface-visibility:hidden;transition:transform .6s ease-in-out}}@media print and (prefers-reduced-motion: reduce){html .carousel-item,html[data-netbox-color-mode=dark] .carousel-item,html[data-netbox-color-mode=light] .carousel-item{transition:none}}@media print{html .carousel-item.active,html .carousel-item-next,html .carousel-item-prev,html[data-netbox-color-mode=dark] .carousel-item.active,html[data-netbox-color-mode=dark] .carousel-item-next,html[data-netbox-color-mode=dark] .carousel-item-prev,html[data-netbox-color-mode=light] .carousel-item.active,html[data-netbox-color-mode=light] .carousel-item-next,html[data-netbox-color-mode=light] .carousel-item-prev{display:block}}@media print{html .carousel-item-next:not(.carousel-item-start),html .active.carousel-item-end,html[data-netbox-color-mode=dark] .carousel-item-next:not(.carousel-item-start),html[data-netbox-color-mode=dark] .active.carousel-item-end,html[data-netbox-color-mode=light] .carousel-item-next:not(.carousel-item-start),html[data-netbox-color-mode=light] .active.carousel-item-end{transform:translate(100%)}}@media print{html .carousel-item-prev:not(.carousel-item-end),html .active.carousel-item-start,html[data-netbox-color-mode=dark] .carousel-item-prev:not(.carousel-item-end),html[data-netbox-color-mode=dark] .active.carousel-item-start,html[data-netbox-color-mode=light] .carousel-item-prev:not(.carousel-item-end),html[data-netbox-color-mode=light] .active.carousel-item-start{transform:translate(-100%)}}@media print{html .carousel-fade .carousel-item,html[data-netbox-color-mode=dark] .carousel-fade .carousel-item,html[data-netbox-color-mode=light] .carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}html .carousel-fade .carousel-item.active,html .carousel-fade .carousel-item-next.carousel-item-start,html .carousel-fade .carousel-item-prev.carousel-item-end,html[data-netbox-color-mode=dark] .carousel-fade .carousel-item.active,html[data-netbox-color-mode=dark] .carousel-fade .carousel-item-next.carousel-item-start,html[data-netbox-color-mode=dark] .carousel-fade .carousel-item-prev.carousel-item-end,html[data-netbox-color-mode=light] .carousel-fade .carousel-item.active,html[data-netbox-color-mode=light] .carousel-fade .carousel-item-next.carousel-item-start,html[data-netbox-color-mode=light] .carousel-fade .carousel-item-prev.carousel-item-end{z-index:1;opacity:1}html .carousel-fade .active.carousel-item-start,html .carousel-fade .active.carousel-item-end,html[data-netbox-color-mode=dark] .carousel-fade .active.carousel-item-start,html[data-netbox-color-mode=dark] .carousel-fade .active.carousel-item-end,html[data-netbox-color-mode=light] .carousel-fade .active.carousel-item-start,html[data-netbox-color-mode=light] .carousel-fade .active.carousel-item-end{z-index:0;opacity:0;transition:opacity 0s .6s}}@media print and (prefers-reduced-motion: reduce){html .carousel-fade .active.carousel-item-start,html .carousel-fade .active.carousel-item-end,html[data-netbox-color-mode=dark] .carousel-fade .active.carousel-item-start,html[data-netbox-color-mode=dark] .carousel-fade .active.carousel-item-end,html[data-netbox-color-mode=light] .carousel-fade .active.carousel-item-start,html[data-netbox-color-mode=light] .carousel-fade .active.carousel-item-end{transition:none}}@media print{html .carousel-control-prev,html .carousel-control-next,html[data-netbox-color-mode=dark] .carousel-control-prev,html[data-netbox-color-mode=dark] .carousel-control-next,html[data-netbox-color-mode=light] .carousel-control-prev,html[data-netbox-color-mode=light] .carousel-control-next{position:absolute;top:0;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:none;border:0;opacity:.5;transition:opacity .15s ease}}@media print and (prefers-reduced-motion: reduce){html .carousel-control-prev,html .carousel-control-next,html[data-netbox-color-mode=dark] .carousel-control-prev,html[data-netbox-color-mode=dark] .carousel-control-next,html[data-netbox-color-mode=light] .carousel-control-prev,html[data-netbox-color-mode=light] .carousel-control-next{transition:none}}@media print{html .carousel-control-prev:hover,html .carousel-control-prev:focus,html .carousel-control-next:hover,html .carousel-control-next:focus,html[data-netbox-color-mode=dark] .carousel-control-prev:hover,html[data-netbox-color-mode=dark] .carousel-control-prev:focus,html[data-netbox-color-mode=dark] .carousel-control-next:hover,html[data-netbox-color-mode=dark] .carousel-control-next:focus,html[data-netbox-color-mode=light] .carousel-control-prev:hover,html[data-netbox-color-mode=light] .carousel-control-prev:focus,html[data-netbox-color-mode=light] .carousel-control-next:hover,html[data-netbox-color-mode=light] .carousel-control-next:focus{color:#fff;text-decoration:none;outline:0;opacity:.9}}@media print{html .carousel-control-prev,html[data-netbox-color-mode=dark] .carousel-control-prev,html[data-netbox-color-mode=light] .carousel-control-prev{left:0}}@media print{html .carousel-control-next,html[data-netbox-color-mode=dark] .carousel-control-next,html[data-netbox-color-mode=light] .carousel-control-next{right:0}}@media print{html .carousel-control-prev-icon,html .carousel-control-next-icon,html[data-netbox-color-mode=dark] .carousel-control-prev-icon,html[data-netbox-color-mode=dark] .carousel-control-next-icon,html[data-netbox-color-mode=light] .carousel-control-prev-icon,html[data-netbox-color-mode=light] .carousel-control-next-icon{display:inline-block;width:2rem;height:2rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}}@media print{html .carousel-control-prev-icon,html[data-netbox-color-mode=dark] .carousel-control-prev-icon,html[data-netbox-color-mode=light] .carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e")}}@media print{html .carousel-control-next-icon,html[data-netbox-color-mode=dark] .carousel-control-next-icon,html[data-netbox-color-mode=light] .carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}}@media print{html .carousel-indicators,html[data-netbox-color-mode=dark] .carousel-indicators,html[data-netbox-color-mode=light] .carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:2;display:flex;justify-content:center;padding:0;margin-right:15%;margin-bottom:1rem;margin-left:15%;list-style:none}html .carousel-indicators [data-bs-target],html[data-netbox-color-mode=dark] .carousel-indicators [data-bs-target],html[data-netbox-color-mode=light] .carousel-indicators [data-bs-target]{box-sizing:content-box;flex:0 1 auto;width:30px;height:3px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border:0;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}}@media print and (prefers-reduced-motion: reduce){html .carousel-indicators [data-bs-target],html[data-netbox-color-mode=dark] .carousel-indicators [data-bs-target],html[data-netbox-color-mode=light] .carousel-indicators [data-bs-target]{transition:none}}@media print{html .carousel-indicators .active,html[data-netbox-color-mode=dark] .carousel-indicators .active,html[data-netbox-color-mode=light] .carousel-indicators .active{opacity:1}}@media print{html .carousel-caption,html[data-netbox-color-mode=dark] .carousel-caption,html[data-netbox-color-mode=light] .carousel-caption{position:absolute;right:15%;bottom:1.25rem;left:15%;padding-top:1.25rem;padding-bottom:1.25rem;color:#fff;text-align:center}}@media print{html .carousel-dark .carousel-control-prev-icon,html .carousel-dark .carousel-control-next-icon,html[data-netbox-color-mode=dark] .carousel-dark .carousel-control-prev-icon,html[data-netbox-color-mode=dark] .carousel-dark .carousel-control-next-icon,html[data-netbox-color-mode=light] .carousel-dark .carousel-control-prev-icon,html[data-netbox-color-mode=light] .carousel-dark .carousel-control-next-icon{filter:invert(1) grayscale(100)}html .carousel-dark .carousel-indicators [data-bs-target],html[data-netbox-color-mode=dark] .carousel-dark .carousel-indicators [data-bs-target],html[data-netbox-color-mode=light] .carousel-dark .carousel-indicators [data-bs-target]{background-color:#000}html .carousel-dark .carousel-caption,html[data-netbox-color-mode=dark] .carousel-dark .carousel-caption,html[data-netbox-color-mode=light] .carousel-dark .carousel-caption{color:#000}}@media print{@keyframes spinner-border{to{transform:rotate(360deg)}}}@media print{html .spinner-border,html[data-netbox-color-mode=dark] .spinner-border,html[data-netbox-color-mode=light] .spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:-.125em;border:.25em solid currentColor;border-right-color:transparent;border-radius:50%;animation:.75s linear infinite spinner-border}}@media print{html .spinner-border-sm,html[data-netbox-color-mode=dark] .spinner-border-sm,html[data-netbox-color-mode=light] .spinner-border-sm{width:1rem;height:1rem;border-width:.2em}}@media print{@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}}@media print{html .spinner-grow,html[data-netbox-color-mode=dark] .spinner-grow,html[data-netbox-color-mode=light] .spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:-.125em;background-color:currentColor;border-radius:50%;opacity:0;animation:.75s linear infinite spinner-grow}}@media print{html .spinner-grow-sm,html[data-netbox-color-mode=dark] .spinner-grow-sm,html[data-netbox-color-mode=light] .spinner-grow-sm{width:1rem;height:1rem}}@media print and (prefers-reduced-motion: reduce){html .spinner-border,html .spinner-grow,html[data-netbox-color-mode=dark] .spinner-border,html[data-netbox-color-mode=dark] .spinner-grow,html[data-netbox-color-mode=light] .spinner-border,html[data-netbox-color-mode=light] .spinner-grow{animation-duration:1.5s}}@media print{html .clearfix:after,html[data-netbox-color-mode=dark] .clearfix:after,html[data-netbox-color-mode=light] .clearfix:after{display:block;clear:both;content:""}}@media print{html .link-primary,html[data-netbox-color-mode=dark] .link-primary,html[data-netbox-color-mode=light] .link-primary{color:#337ab7}html .link-primary:hover,html .link-primary:focus,html[data-netbox-color-mode=dark] .link-primary:hover,html[data-netbox-color-mode=dark] .link-primary:focus,html[data-netbox-color-mode=light] .link-primary:hover,html[data-netbox-color-mode=light] .link-primary:focus{color:#296292}}@media print{html .link-secondary,html[data-netbox-color-mode=dark] .link-secondary,html[data-netbox-color-mode=light] .link-secondary{color:#6c757d}html .link-secondary:hover,html .link-secondary:focus,html[data-netbox-color-mode=dark] .link-secondary:hover,html[data-netbox-color-mode=dark] .link-secondary:focus,html[data-netbox-color-mode=light] .link-secondary:hover,html[data-netbox-color-mode=light] .link-secondary:focus{color:#565e64}}@media print{html .link-success,html[data-netbox-color-mode=dark] .link-success,html[data-netbox-color-mode=light] .link-success{color:#198754}html .link-success:hover,html .link-success:focus,html[data-netbox-color-mode=dark] .link-success:hover,html[data-netbox-color-mode=dark] .link-success:focus,html[data-netbox-color-mode=light] .link-success:hover,html[data-netbox-color-mode=light] .link-success:focus{color:#146c43}}@media print{html .link-info,html[data-netbox-color-mode=dark] .link-info,html[data-netbox-color-mode=light] .link-info{color:#0dcaf0}html .link-info:hover,html .link-info:focus,html[data-netbox-color-mode=dark] .link-info:hover,html[data-netbox-color-mode=dark] .link-info:focus,html[data-netbox-color-mode=light] .link-info:hover,html[data-netbox-color-mode=light] .link-info:focus{color:#3dd5f3}}@media print{html .link-warning,html[data-netbox-color-mode=dark] .link-warning,html[data-netbox-color-mode=light] .link-warning{color:#ffc107}html .link-warning:hover,html .link-warning:focus,html[data-netbox-color-mode=dark] .link-warning:hover,html[data-netbox-color-mode=dark] .link-warning:focus,html[data-netbox-color-mode=light] .link-warning:hover,html[data-netbox-color-mode=light] .link-warning:focus{color:#ffcd39}}@media print{html .link-danger,html[data-netbox-color-mode=dark] .link-danger,html[data-netbox-color-mode=light] .link-danger{color:#dc3545}html .link-danger:hover,html .link-danger:focus,html[data-netbox-color-mode=dark] .link-danger:hover,html[data-netbox-color-mode=dark] .link-danger:focus,html[data-netbox-color-mode=light] .link-danger:hover,html[data-netbox-color-mode=light] .link-danger:focus{color:#b02a37}}@media print{html .link-light,html[data-netbox-color-mode=dark] .link-light,html[data-netbox-color-mode=light] .link-light{color:#f8f9fa}html .link-light:hover,html .link-light:focus,html[data-netbox-color-mode=dark] .link-light:hover,html[data-netbox-color-mode=dark] .link-light:focus,html[data-netbox-color-mode=light] .link-light:hover,html[data-netbox-color-mode=light] .link-light:focus{color:#f9fafb}}@media print{html .link-dark,html[data-netbox-color-mode=dark] .link-dark,html[data-netbox-color-mode=light] .link-dark{color:#212529}html .link-dark:hover,html .link-dark:focus,html[data-netbox-color-mode=dark] .link-dark:hover,html[data-netbox-color-mode=dark] .link-dark:focus,html[data-netbox-color-mode=light] .link-dark:hover,html[data-netbox-color-mode=light] .link-dark:focus{color:#1a1e21}}@media print{html .link-red,html[data-netbox-color-mode=dark] .link-red,html[data-netbox-color-mode=light] .link-red{color:#dc3545}html .link-red:hover,html .link-red:focus,html[data-netbox-color-mode=dark] .link-red:hover,html[data-netbox-color-mode=dark] .link-red:focus,html[data-netbox-color-mode=light] .link-red:hover,html[data-netbox-color-mode=light] .link-red:focus{color:#b02a37}}@media print{html .link-yellow,html[data-netbox-color-mode=dark] .link-yellow,html[data-netbox-color-mode=light] .link-yellow{color:#ffc107}html .link-yellow:hover,html .link-yellow:focus,html[data-netbox-color-mode=dark] .link-yellow:hover,html[data-netbox-color-mode=dark] .link-yellow:focus,html[data-netbox-color-mode=light] .link-yellow:hover,html[data-netbox-color-mode=light] .link-yellow:focus{color:#ffcd39}}@media print{html .link-green,html[data-netbox-color-mode=dark] .link-green,html[data-netbox-color-mode=light] .link-green{color:#198754}html .link-green:hover,html .link-green:focus,html[data-netbox-color-mode=dark] .link-green:hover,html[data-netbox-color-mode=dark] .link-green:focus,html[data-netbox-color-mode=light] .link-green:hover,html[data-netbox-color-mode=light] .link-green:focus{color:#146c43}}@media print{html .link-blue,html[data-netbox-color-mode=dark] .link-blue,html[data-netbox-color-mode=light] .link-blue{color:#0d6efd}html .link-blue:hover,html .link-blue:focus,html[data-netbox-color-mode=dark] .link-blue:hover,html[data-netbox-color-mode=dark] .link-blue:focus,html[data-netbox-color-mode=light] .link-blue:hover,html[data-netbox-color-mode=light] .link-blue:focus{color:#0a58ca}}@media print{html .link-cyan,html[data-netbox-color-mode=dark] .link-cyan,html[data-netbox-color-mode=light] .link-cyan{color:#0dcaf0}html .link-cyan:hover,html .link-cyan:focus,html[data-netbox-color-mode=dark] .link-cyan:hover,html[data-netbox-color-mode=dark] .link-cyan:focus,html[data-netbox-color-mode=light] .link-cyan:hover,html[data-netbox-color-mode=light] .link-cyan:focus{color:#3dd5f3}}@media print{html .link-indigo,html[data-netbox-color-mode=dark] .link-indigo,html[data-netbox-color-mode=light] .link-indigo{color:#6610f2}html .link-indigo:hover,html .link-indigo:focus,html[data-netbox-color-mode=dark] .link-indigo:hover,html[data-netbox-color-mode=dark] .link-indigo:focus,html[data-netbox-color-mode=light] .link-indigo:hover,html[data-netbox-color-mode=light] .link-indigo:focus{color:#520dc2}}@media print{html .link-purple,html[data-netbox-color-mode=dark] .link-purple,html[data-netbox-color-mode=light] .link-purple{color:#6f42c1}html .link-purple:hover,html .link-purple:focus,html[data-netbox-color-mode=dark] .link-purple:hover,html[data-netbox-color-mode=dark] .link-purple:focus,html[data-netbox-color-mode=light] .link-purple:hover,html[data-netbox-color-mode=light] .link-purple:focus{color:#59359a}}@media print{html .link-pink,html[data-netbox-color-mode=dark] .link-pink,html[data-netbox-color-mode=light] .link-pink{color:#d63384}html .link-pink:hover,html .link-pink:focus,html[data-netbox-color-mode=dark] .link-pink:hover,html[data-netbox-color-mode=dark] .link-pink:focus,html[data-netbox-color-mode=light] .link-pink:hover,html[data-netbox-color-mode=light] .link-pink:focus{color:#ab296a}}@media print{html .link-darker,html[data-netbox-color-mode=dark] .link-darker,html[data-netbox-color-mode=light] .link-darker{color:#1b1f22}html .link-darker:hover,html .link-darker:focus,html[data-netbox-color-mode=dark] .link-darker:hover,html[data-netbox-color-mode=dark] .link-darker:focus,html[data-netbox-color-mode=light] .link-darker:hover,html[data-netbox-color-mode=light] .link-darker:focus{color:#16191b}}@media print{html .link-darkest,html[data-netbox-color-mode=dark] .link-darkest,html[data-netbox-color-mode=light] .link-darkest{color:#171b1d}html .link-darkest:hover,html .link-darkest:focus,html[data-netbox-color-mode=dark] .link-darkest:hover,html[data-netbox-color-mode=dark] .link-darkest:focus,html[data-netbox-color-mode=light] .link-darkest:hover,html[data-netbox-color-mode=light] .link-darkest:focus{color:#121617}}@media print{html .link-gray,html[data-netbox-color-mode=dark] .link-gray,html[data-netbox-color-mode=light] .link-gray{color:#ced4da}html .link-gray:hover,html .link-gray:focus,html[data-netbox-color-mode=dark] .link-gray:hover,html[data-netbox-color-mode=dark] .link-gray:focus,html[data-netbox-color-mode=light] .link-gray:hover,html[data-netbox-color-mode=light] .link-gray:focus{color:#d8dde1}}@media print{html .link-gray-100,html[data-netbox-color-mode=dark] .link-gray-100,html[data-netbox-color-mode=light] .link-gray-100{color:#f8f9fa}html .link-gray-100:hover,html .link-gray-100:focus,html[data-netbox-color-mode=dark] .link-gray-100:hover,html[data-netbox-color-mode=dark] .link-gray-100:focus,html[data-netbox-color-mode=light] .link-gray-100:hover,html[data-netbox-color-mode=light] .link-gray-100:focus{color:#f9fafb}}@media print{html .link-gray-200,html[data-netbox-color-mode=dark] .link-gray-200,html[data-netbox-color-mode=light] .link-gray-200{color:#e9ecef}html .link-gray-200:hover,html .link-gray-200:focus,html[data-netbox-color-mode=dark] .link-gray-200:hover,html[data-netbox-color-mode=dark] .link-gray-200:focus,html[data-netbox-color-mode=light] .link-gray-200:hover,html[data-netbox-color-mode=light] .link-gray-200:focus{color:#edf0f2}}@media print{html .link-gray-300,html[data-netbox-color-mode=dark] .link-gray-300,html[data-netbox-color-mode=light] .link-gray-300{color:#dee2e6}html .link-gray-300:hover,html .link-gray-300:focus,html[data-netbox-color-mode=dark] .link-gray-300:hover,html[data-netbox-color-mode=dark] .link-gray-300:focus,html[data-netbox-color-mode=light] .link-gray-300:hover,html[data-netbox-color-mode=light] .link-gray-300:focus{color:#e5e8eb}}@media print{html .link-gray-400,html[data-netbox-color-mode=dark] .link-gray-400,html[data-netbox-color-mode=light] .link-gray-400{color:#ced4da}html .link-gray-400:hover,html .link-gray-400:focus,html[data-netbox-color-mode=dark] .link-gray-400:hover,html[data-netbox-color-mode=dark] .link-gray-400:focus,html[data-netbox-color-mode=light] .link-gray-400:hover,html[data-netbox-color-mode=light] .link-gray-400:focus{color:#d8dde1}}@media print{html .link-gray-500,html[data-netbox-color-mode=dark] .link-gray-500,html[data-netbox-color-mode=light] .link-gray-500{color:#adb5bd}html .link-gray-500:hover,html .link-gray-500:focus,html[data-netbox-color-mode=dark] .link-gray-500:hover,html[data-netbox-color-mode=dark] .link-gray-500:focus,html[data-netbox-color-mode=light] .link-gray-500:hover,html[data-netbox-color-mode=light] .link-gray-500:focus{color:#bdc4ca}}@media print{html .link-gray-600,html[data-netbox-color-mode=dark] .link-gray-600,html[data-netbox-color-mode=light] .link-gray-600{color:#6c757d}html .link-gray-600:hover,html .link-gray-600:focus,html[data-netbox-color-mode=dark] .link-gray-600:hover,html[data-netbox-color-mode=dark] .link-gray-600:focus,html[data-netbox-color-mode=light] .link-gray-600:hover,html[data-netbox-color-mode=light] .link-gray-600:focus{color:#565e64}}@media print{html .link-gray-700,html[data-netbox-color-mode=dark] .link-gray-700,html[data-netbox-color-mode=light] .link-gray-700{color:#495057}html .link-gray-700:hover,html .link-gray-700:focus,html[data-netbox-color-mode=dark] .link-gray-700:hover,html[data-netbox-color-mode=dark] .link-gray-700:focus,html[data-netbox-color-mode=light] .link-gray-700:hover,html[data-netbox-color-mode=light] .link-gray-700:focus{color:#3a4046}}@media print{html .link-gray-800,html[data-netbox-color-mode=dark] .link-gray-800,html[data-netbox-color-mode=light] .link-gray-800{color:#343a40}html .link-gray-800:hover,html .link-gray-800:focus,html[data-netbox-color-mode=dark] .link-gray-800:hover,html[data-netbox-color-mode=dark] .link-gray-800:focus,html[data-netbox-color-mode=light] .link-gray-800:hover,html[data-netbox-color-mode=light] .link-gray-800:focus{color:#2a2e33}}@media print{html .link-gray-900,html[data-netbox-color-mode=dark] .link-gray-900,html[data-netbox-color-mode=light] .link-gray-900{color:#212529}html .link-gray-900:hover,html .link-gray-900:focus,html[data-netbox-color-mode=dark] .link-gray-900:hover,html[data-netbox-color-mode=dark] .link-gray-900:focus,html[data-netbox-color-mode=light] .link-gray-900:hover,html[data-netbox-color-mode=light] .link-gray-900:focus{color:#1a1e21}}@media print{html .link-red-100,html[data-netbox-color-mode=dark] .link-red-100,html[data-netbox-color-mode=light] .link-red-100{color:#f8d7da}html .link-red-100:hover,html .link-red-100:focus,html[data-netbox-color-mode=dark] .link-red-100:hover,html[data-netbox-color-mode=dark] .link-red-100:focus,html[data-netbox-color-mode=light] .link-red-100:hover,html[data-netbox-color-mode=light] .link-red-100:focus{color:#f9dfe1}}@media print{html .link-red-200,html[data-netbox-color-mode=dark] .link-red-200,html[data-netbox-color-mode=light] .link-red-200{color:#f1aeb5}html .link-red-200:hover,html .link-red-200:focus,html[data-netbox-color-mode=dark] .link-red-200:hover,html[data-netbox-color-mode=dark] .link-red-200:focus,html[data-netbox-color-mode=light] .link-red-200:hover,html[data-netbox-color-mode=light] .link-red-200:focus{color:#f4bec4}}@media print{html .link-red-300,html[data-netbox-color-mode=dark] .link-red-300,html[data-netbox-color-mode=light] .link-red-300{color:#ea868f}html .link-red-300:hover,html .link-red-300:focus,html[data-netbox-color-mode=dark] .link-red-300:hover,html[data-netbox-color-mode=dark] .link-red-300:focus,html[data-netbox-color-mode=light] .link-red-300:hover,html[data-netbox-color-mode=light] .link-red-300:focus{color:#ee9ea5}}@media print{html .link-red-400,html[data-netbox-color-mode=dark] .link-red-400,html[data-netbox-color-mode=light] .link-red-400{color:#e35d6a}html .link-red-400:hover,html .link-red-400:focus,html[data-netbox-color-mode=dark] .link-red-400:hover,html[data-netbox-color-mode=dark] .link-red-400:focus,html[data-netbox-color-mode=light] .link-red-400:hover,html[data-netbox-color-mode=light] .link-red-400:focus{color:#e97d88}}@media print{html .link-red-500,html[data-netbox-color-mode=dark] .link-red-500,html[data-netbox-color-mode=light] .link-red-500{color:#dc3545}html .link-red-500:hover,html .link-red-500:focus,html[data-netbox-color-mode=dark] .link-red-500:hover,html[data-netbox-color-mode=dark] .link-red-500:focus,html[data-netbox-color-mode=light] .link-red-500:hover,html[data-netbox-color-mode=light] .link-red-500:focus{color:#b02a37}}@media print{html .link-red-600,html[data-netbox-color-mode=dark] .link-red-600,html[data-netbox-color-mode=light] .link-red-600{color:#b02a37}html .link-red-600:hover,html .link-red-600:focus,html[data-netbox-color-mode=dark] .link-red-600:hover,html[data-netbox-color-mode=dark] .link-red-600:focus,html[data-netbox-color-mode=light] .link-red-600:hover,html[data-netbox-color-mode=light] .link-red-600:focus{color:#8d222c}}@media print{html .link-red-700,html[data-netbox-color-mode=dark] .link-red-700,html[data-netbox-color-mode=light] .link-red-700{color:#842029}html .link-red-700:hover,html .link-red-700:focus,html[data-netbox-color-mode=dark] .link-red-700:hover,html[data-netbox-color-mode=dark] .link-red-700:focus,html[data-netbox-color-mode=light] .link-red-700:hover,html[data-netbox-color-mode=light] .link-red-700:focus{color:#6a1a21}}@media print{html .link-red-800,html[data-netbox-color-mode=dark] .link-red-800,html[data-netbox-color-mode=light] .link-red-800{color:#58151c}html .link-red-800:hover,html .link-red-800:focus,html[data-netbox-color-mode=dark] .link-red-800:hover,html[data-netbox-color-mode=dark] .link-red-800:focus,html[data-netbox-color-mode=light] .link-red-800:hover,html[data-netbox-color-mode=light] .link-red-800:focus{color:#461116}}@media print{html .link-red-900,html[data-netbox-color-mode=dark] .link-red-900,html[data-netbox-color-mode=light] .link-red-900{color:#2c0b0e}html .link-red-900:hover,html .link-red-900:focus,html[data-netbox-color-mode=dark] .link-red-900:hover,html[data-netbox-color-mode=dark] .link-red-900:focus,html[data-netbox-color-mode=light] .link-red-900:hover,html[data-netbox-color-mode=light] .link-red-900:focus{color:#23090b}}@media print{html .link-yellow-100,html[data-netbox-color-mode=dark] .link-yellow-100,html[data-netbox-color-mode=light] .link-yellow-100{color:#fff3cd}html .link-yellow-100:hover,html .link-yellow-100:focus,html[data-netbox-color-mode=dark] .link-yellow-100:hover,html[data-netbox-color-mode=dark] .link-yellow-100:focus,html[data-netbox-color-mode=light] .link-yellow-100:hover,html[data-netbox-color-mode=light] .link-yellow-100:focus{color:#fff5d7}}@media print{html .link-yellow-200,html[data-netbox-color-mode=dark] .link-yellow-200,html[data-netbox-color-mode=light] .link-yellow-200{color:#ffe69c}html .link-yellow-200:hover,html .link-yellow-200:focus,html[data-netbox-color-mode=dark] .link-yellow-200:hover,html[data-netbox-color-mode=dark] .link-yellow-200:focus,html[data-netbox-color-mode=light] .link-yellow-200:hover,html[data-netbox-color-mode=light] .link-yellow-200:focus{color:#ffebb0}}@media print{html .link-yellow-300,html[data-netbox-color-mode=dark] .link-yellow-300,html[data-netbox-color-mode=light] .link-yellow-300{color:#ffda6a}html .link-yellow-300:hover,html .link-yellow-300:focus,html[data-netbox-color-mode=dark] .link-yellow-300:hover,html[data-netbox-color-mode=dark] .link-yellow-300:focus,html[data-netbox-color-mode=light] .link-yellow-300:hover,html[data-netbox-color-mode=light] .link-yellow-300:focus{color:#ffe188}}@media print{html .link-yellow-400,html[data-netbox-color-mode=dark] .link-yellow-400,html[data-netbox-color-mode=light] .link-yellow-400{color:#ffcd39}html .link-yellow-400:hover,html .link-yellow-400:focus,html[data-netbox-color-mode=dark] .link-yellow-400:hover,html[data-netbox-color-mode=dark] .link-yellow-400:focus,html[data-netbox-color-mode=light] .link-yellow-400:hover,html[data-netbox-color-mode=light] .link-yellow-400:focus{color:#ffd761}}@media print{html .link-yellow-500,html[data-netbox-color-mode=dark] .link-yellow-500,html[data-netbox-color-mode=light] .link-yellow-500{color:#ffc107}html .link-yellow-500:hover,html .link-yellow-500:focus,html[data-netbox-color-mode=dark] .link-yellow-500:hover,html[data-netbox-color-mode=dark] .link-yellow-500:focus,html[data-netbox-color-mode=light] .link-yellow-500:hover,html[data-netbox-color-mode=light] .link-yellow-500:focus{color:#ffcd39}}@media print{html .link-yellow-600,html[data-netbox-color-mode=dark] .link-yellow-600,html[data-netbox-color-mode=light] .link-yellow-600{color:#cc9a06}html .link-yellow-600:hover,html .link-yellow-600:focus,html[data-netbox-color-mode=dark] .link-yellow-600:hover,html[data-netbox-color-mode=dark] .link-yellow-600:focus,html[data-netbox-color-mode=light] .link-yellow-600:hover,html[data-netbox-color-mode=light] .link-yellow-600:focus{color:#d6ae38}}@media print{html .link-yellow-700,html[data-netbox-color-mode=dark] .link-yellow-700,html[data-netbox-color-mode=light] .link-yellow-700{color:#997404}html .link-yellow-700:hover,html .link-yellow-700:focus,html[data-netbox-color-mode=dark] .link-yellow-700:hover,html[data-netbox-color-mode=dark] .link-yellow-700:focus,html[data-netbox-color-mode=light] .link-yellow-700:hover,html[data-netbox-color-mode=light] .link-yellow-700:focus{color:#ad9036}}@media print{html .link-yellow-800,html[data-netbox-color-mode=dark] .link-yellow-800,html[data-netbox-color-mode=light] .link-yellow-800{color:#664d03}html .link-yellow-800:hover,html .link-yellow-800:focus,html[data-netbox-color-mode=dark] .link-yellow-800:hover,html[data-netbox-color-mode=dark] .link-yellow-800:focus,html[data-netbox-color-mode=light] .link-yellow-800:hover,html[data-netbox-color-mode=light] .link-yellow-800:focus{color:#523e02}}@media print{html .link-yellow-900,html[data-netbox-color-mode=dark] .link-yellow-900,html[data-netbox-color-mode=light] .link-yellow-900{color:#332701}html .link-yellow-900:hover,html .link-yellow-900:focus,html[data-netbox-color-mode=dark] .link-yellow-900:hover,html[data-netbox-color-mode=dark] .link-yellow-900:focus,html[data-netbox-color-mode=light] .link-yellow-900:hover,html[data-netbox-color-mode=light] .link-yellow-900:focus{color:#291f01}}@media print{html .link-green-100,html[data-netbox-color-mode=dark] .link-green-100,html[data-netbox-color-mode=light] .link-green-100{color:#d1e7dd}html .link-green-100:hover,html .link-green-100:focus,html[data-netbox-color-mode=dark] .link-green-100:hover,html[data-netbox-color-mode=dark] .link-green-100:focus,html[data-netbox-color-mode=light] .link-green-100:hover,html[data-netbox-color-mode=light] .link-green-100:focus{color:#daece4}}@media print{html .link-green-200,html[data-netbox-color-mode=dark] .link-green-200,html[data-netbox-color-mode=light] .link-green-200{color:#a3cfbb}html .link-green-200:hover,html .link-green-200:focus,html[data-netbox-color-mode=dark] .link-green-200:hover,html[data-netbox-color-mode=dark] .link-green-200:focus,html[data-netbox-color-mode=light] .link-green-200:hover,html[data-netbox-color-mode=light] .link-green-200:focus{color:#b5d9c9}}@media print{html .link-green-300,html[data-netbox-color-mode=dark] .link-green-300,html[data-netbox-color-mode=light] .link-green-300{color:#75b798}html .link-green-300:hover,html .link-green-300:focus,html[data-netbox-color-mode=dark] .link-green-300:hover,html[data-netbox-color-mode=dark] .link-green-300:focus,html[data-netbox-color-mode=light] .link-green-300:hover,html[data-netbox-color-mode=light] .link-green-300:focus{color:#91c5ad}}@media print{html .link-green-400,html[data-netbox-color-mode=dark] .link-green-400,html[data-netbox-color-mode=light] .link-green-400{color:#479f76}html .link-green-400:hover,html .link-green-400:focus,html[data-netbox-color-mode=dark] .link-green-400:hover,html[data-netbox-color-mode=dark] .link-green-400:focus,html[data-netbox-color-mode=light] .link-green-400:hover,html[data-netbox-color-mode=light] .link-green-400:focus{color:#6cb291}}@media print{html .link-green-500,html[data-netbox-color-mode=dark] .link-green-500,html[data-netbox-color-mode=light] .link-green-500{color:#198754}html .link-green-500:hover,html .link-green-500:focus,html[data-netbox-color-mode=dark] .link-green-500:hover,html[data-netbox-color-mode=dark] .link-green-500:focus,html[data-netbox-color-mode=light] .link-green-500:hover,html[data-netbox-color-mode=light] .link-green-500:focus{color:#146c43}}@media print{html .link-green-600,html[data-netbox-color-mode=dark] .link-green-600,html[data-netbox-color-mode=light] .link-green-600{color:#146c43}html .link-green-600:hover,html .link-green-600:focus,html[data-netbox-color-mode=dark] .link-green-600:hover,html[data-netbox-color-mode=dark] .link-green-600:focus,html[data-netbox-color-mode=light] .link-green-600:hover,html[data-netbox-color-mode=light] .link-green-600:focus{color:#105636}}@media print{html .link-green-700,html[data-netbox-color-mode=dark] .link-green-700,html[data-netbox-color-mode=light] .link-green-700{color:#0f5132}html .link-green-700:hover,html .link-green-700:focus,html[data-netbox-color-mode=dark] .link-green-700:hover,html[data-netbox-color-mode=dark] .link-green-700:focus,html[data-netbox-color-mode=light] .link-green-700:hover,html[data-netbox-color-mode=light] .link-green-700:focus{color:#0c4128}}@media print{html .link-green-800,html[data-netbox-color-mode=dark] .link-green-800,html[data-netbox-color-mode=light] .link-green-800{color:#0a3622}html .link-green-800:hover,html .link-green-800:focus,html[data-netbox-color-mode=dark] .link-green-800:hover,html[data-netbox-color-mode=dark] .link-green-800:focus,html[data-netbox-color-mode=light] .link-green-800:hover,html[data-netbox-color-mode=light] .link-green-800:focus{color:#082b1b}}@media print{html .link-green-900,html[data-netbox-color-mode=dark] .link-green-900,html[data-netbox-color-mode=light] .link-green-900{color:#051b11}html .link-green-900:hover,html .link-green-900:focus,html[data-netbox-color-mode=dark] .link-green-900:hover,html[data-netbox-color-mode=dark] .link-green-900:focus,html[data-netbox-color-mode=light] .link-green-900:hover,html[data-netbox-color-mode=light] .link-green-900:focus{color:#04160e}}@media print{html .link-blue-100,html[data-netbox-color-mode=dark] .link-blue-100,html[data-netbox-color-mode=light] .link-blue-100{color:#cfe2ff}html .link-blue-100:hover,html .link-blue-100:focus,html[data-netbox-color-mode=dark] .link-blue-100:hover,html[data-netbox-color-mode=dark] .link-blue-100:focus,html[data-netbox-color-mode=light] .link-blue-100:hover,html[data-netbox-color-mode=light] .link-blue-100:focus{color:#d9e8ff}}@media print{html .link-blue-200,html[data-netbox-color-mode=dark] .link-blue-200,html[data-netbox-color-mode=light] .link-blue-200{color:#9ec5fe}html .link-blue-200:hover,html .link-blue-200:focus,html[data-netbox-color-mode=dark] .link-blue-200:hover,html[data-netbox-color-mode=dark] .link-blue-200:focus,html[data-netbox-color-mode=light] .link-blue-200:hover,html[data-netbox-color-mode=light] .link-blue-200:focus{color:#b1d1fe}}@media print{html .link-blue-300,html[data-netbox-color-mode=dark] .link-blue-300,html[data-netbox-color-mode=light] .link-blue-300{color:#6ea8fe}html .link-blue-300:hover,html .link-blue-300:focus,html[data-netbox-color-mode=dark] .link-blue-300:hover,html[data-netbox-color-mode=dark] .link-blue-300:focus,html[data-netbox-color-mode=light] .link-blue-300:hover,html[data-netbox-color-mode=light] .link-blue-300:focus{color:#8bb9fe}}@media print{html .link-blue-400,html[data-netbox-color-mode=dark] .link-blue-400,html[data-netbox-color-mode=light] .link-blue-400{color:#3d8bfd}html .link-blue-400:hover,html .link-blue-400:focus,html[data-netbox-color-mode=dark] .link-blue-400:hover,html[data-netbox-color-mode=dark] .link-blue-400:focus,html[data-netbox-color-mode=light] .link-blue-400:hover,html[data-netbox-color-mode=light] .link-blue-400:focus{color:#64a2fd}}@media print{html .link-blue-500,html[data-netbox-color-mode=dark] .link-blue-500,html[data-netbox-color-mode=light] .link-blue-500{color:#0d6efd}html .link-blue-500:hover,html .link-blue-500:focus,html[data-netbox-color-mode=dark] .link-blue-500:hover,html[data-netbox-color-mode=dark] .link-blue-500:focus,html[data-netbox-color-mode=light] .link-blue-500:hover,html[data-netbox-color-mode=light] .link-blue-500:focus{color:#0a58ca}}@media print{html .link-blue-600,html[data-netbox-color-mode=dark] .link-blue-600,html[data-netbox-color-mode=light] .link-blue-600{color:#0a58ca}html .link-blue-600:hover,html .link-blue-600:focus,html[data-netbox-color-mode=dark] .link-blue-600:hover,html[data-netbox-color-mode=dark] .link-blue-600:focus,html[data-netbox-color-mode=light] .link-blue-600:hover,html[data-netbox-color-mode=light] .link-blue-600:focus{color:#0846a2}}@media print{html .link-blue-700,html[data-netbox-color-mode=dark] .link-blue-700,html[data-netbox-color-mode=light] .link-blue-700{color:#084298}html .link-blue-700:hover,html .link-blue-700:focus,html[data-netbox-color-mode=dark] .link-blue-700:hover,html[data-netbox-color-mode=dark] .link-blue-700:focus,html[data-netbox-color-mode=light] .link-blue-700:hover,html[data-netbox-color-mode=light] .link-blue-700:focus{color:#06357a}}@media print{html .link-blue-800,html[data-netbox-color-mode=dark] .link-blue-800,html[data-netbox-color-mode=light] .link-blue-800{color:#052c65}html .link-blue-800:hover,html .link-blue-800:focus,html[data-netbox-color-mode=dark] .link-blue-800:hover,html[data-netbox-color-mode=dark] .link-blue-800:focus,html[data-netbox-color-mode=light] .link-blue-800:hover,html[data-netbox-color-mode=light] .link-blue-800:focus{color:#042351}}@media print{html .link-blue-900,html[data-netbox-color-mode=dark] .link-blue-900,html[data-netbox-color-mode=light] .link-blue-900{color:#031633}html .link-blue-900:hover,html .link-blue-900:focus,html[data-netbox-color-mode=dark] .link-blue-900:hover,html[data-netbox-color-mode=dark] .link-blue-900:focus,html[data-netbox-color-mode=light] .link-blue-900:hover,html[data-netbox-color-mode=light] .link-blue-900:focus{color:#021229}}@media print{html .link-cyan-100,html[data-netbox-color-mode=dark] .link-cyan-100,html[data-netbox-color-mode=light] .link-cyan-100{color:#cff4fc}html .link-cyan-100:hover,html .link-cyan-100:focus,html[data-netbox-color-mode=dark] .link-cyan-100:hover,html[data-netbox-color-mode=dark] .link-cyan-100:focus,html[data-netbox-color-mode=light] .link-cyan-100:hover,html[data-netbox-color-mode=light] .link-cyan-100:focus{color:#d9f6fd}}@media print{html .link-cyan-200,html[data-netbox-color-mode=dark] .link-cyan-200,html[data-netbox-color-mode=light] .link-cyan-200{color:#9eeaf9}html .link-cyan-200:hover,html .link-cyan-200:focus,html[data-netbox-color-mode=dark] .link-cyan-200:hover,html[data-netbox-color-mode=dark] .link-cyan-200:focus,html[data-netbox-color-mode=light] .link-cyan-200:hover,html[data-netbox-color-mode=light] .link-cyan-200:focus{color:#b1eefa}}@media print{html .link-cyan-300,html[data-netbox-color-mode=dark] .link-cyan-300,html[data-netbox-color-mode=light] .link-cyan-300{color:#6edff6}html .link-cyan-300:hover,html .link-cyan-300:focus,html[data-netbox-color-mode=dark] .link-cyan-300:hover,html[data-netbox-color-mode=dark] .link-cyan-300:focus,html[data-netbox-color-mode=light] .link-cyan-300:hover,html[data-netbox-color-mode=light] .link-cyan-300:focus{color:#8be5f8}}@media print{html .link-cyan-400,html[data-netbox-color-mode=dark] .link-cyan-400,html[data-netbox-color-mode=light] .link-cyan-400{color:#3dd5f3}html .link-cyan-400:hover,html .link-cyan-400:focus,html[data-netbox-color-mode=dark] .link-cyan-400:hover,html[data-netbox-color-mode=dark] .link-cyan-400:focus,html[data-netbox-color-mode=light] .link-cyan-400:hover,html[data-netbox-color-mode=light] .link-cyan-400:focus{color:#64ddf5}}@media print{html .link-cyan-500,html[data-netbox-color-mode=dark] .link-cyan-500,html[data-netbox-color-mode=light] .link-cyan-500{color:#0dcaf0}html .link-cyan-500:hover,html .link-cyan-500:focus,html[data-netbox-color-mode=dark] .link-cyan-500:hover,html[data-netbox-color-mode=dark] .link-cyan-500:focus,html[data-netbox-color-mode=light] .link-cyan-500:hover,html[data-netbox-color-mode=light] .link-cyan-500:focus{color:#3dd5f3}}@media print{html .link-cyan-600,html[data-netbox-color-mode=dark] .link-cyan-600,html[data-netbox-color-mode=light] .link-cyan-600{color:#0aa2c0}html .link-cyan-600:hover,html .link-cyan-600:focus,html[data-netbox-color-mode=dark] .link-cyan-600:hover,html[data-netbox-color-mode=dark] .link-cyan-600:focus,html[data-netbox-color-mode=light] .link-cyan-600:hover,html[data-netbox-color-mode=light] .link-cyan-600:focus{color:#3bb5cd}}@media print{html .link-cyan-700,html[data-netbox-color-mode=dark] .link-cyan-700,html[data-netbox-color-mode=light] .link-cyan-700{color:#087990}html .link-cyan-700:hover,html .link-cyan-700:focus,html[data-netbox-color-mode=dark] .link-cyan-700:hover,html[data-netbox-color-mode=dark] .link-cyan-700:focus,html[data-netbox-color-mode=light] .link-cyan-700:hover,html[data-netbox-color-mode=light] .link-cyan-700:focus{color:#066173}}@media print{html .link-cyan-800,html[data-netbox-color-mode=dark] .link-cyan-800,html[data-netbox-color-mode=light] .link-cyan-800{color:#055160}html .link-cyan-800:hover,html .link-cyan-800:focus,html[data-netbox-color-mode=dark] .link-cyan-800:hover,html[data-netbox-color-mode=dark] .link-cyan-800:focus,html[data-netbox-color-mode=light] .link-cyan-800:hover,html[data-netbox-color-mode=light] .link-cyan-800:focus{color:#04414d}}@media print{html .link-cyan-900,html[data-netbox-color-mode=dark] .link-cyan-900,html[data-netbox-color-mode=light] .link-cyan-900{color:#032830}html .link-cyan-900:hover,html .link-cyan-900:focus,html[data-netbox-color-mode=dark] .link-cyan-900:hover,html[data-netbox-color-mode=dark] .link-cyan-900:focus,html[data-netbox-color-mode=light] .link-cyan-900:hover,html[data-netbox-color-mode=light] .link-cyan-900:focus{color:#022026}}@media print{html .link-indigo-100,html[data-netbox-color-mode=dark] .link-indigo-100,html[data-netbox-color-mode=light] .link-indigo-100{color:#e0cffc}html .link-indigo-100:hover,html .link-indigo-100:focus,html[data-netbox-color-mode=dark] .link-indigo-100:hover,html[data-netbox-color-mode=dark] .link-indigo-100:focus,html[data-netbox-color-mode=light] .link-indigo-100:hover,html[data-netbox-color-mode=light] .link-indigo-100:focus{color:#e6d9fd}}@media print{html .link-indigo-200,html[data-netbox-color-mode=dark] .link-indigo-200,html[data-netbox-color-mode=light] .link-indigo-200{color:#c29ffa}html .link-indigo-200:hover,html .link-indigo-200:focus,html[data-netbox-color-mode=dark] .link-indigo-200:hover,html[data-netbox-color-mode=dark] .link-indigo-200:focus,html[data-netbox-color-mode=light] .link-indigo-200:hover,html[data-netbox-color-mode=light] .link-indigo-200:focus{color:#ceb2fb}}@media print{html .link-indigo-300,html[data-netbox-color-mode=dark] .link-indigo-300,html[data-netbox-color-mode=light] .link-indigo-300{color:#a370f7}html .link-indigo-300:hover,html .link-indigo-300:focus,html[data-netbox-color-mode=dark] .link-indigo-300:hover,html[data-netbox-color-mode=dark] .link-indigo-300:focus,html[data-netbox-color-mode=light] .link-indigo-300:hover,html[data-netbox-color-mode=light] .link-indigo-300:focus{color:#b58df9}}@media print{html .link-indigo-400,html[data-netbox-color-mode=dark] .link-indigo-400,html[data-netbox-color-mode=light] .link-indigo-400{color:#8540f5}html .link-indigo-400:hover,html .link-indigo-400:focus,html[data-netbox-color-mode=dark] .link-indigo-400:hover,html[data-netbox-color-mode=dark] .link-indigo-400:focus,html[data-netbox-color-mode=light] .link-indigo-400:hover,html[data-netbox-color-mode=light] .link-indigo-400:focus{color:#6a33c4}}@media print{html .link-indigo-500,html[data-netbox-color-mode=dark] .link-indigo-500,html[data-netbox-color-mode=light] .link-indigo-500{color:#6610f2}html .link-indigo-500:hover,html .link-indigo-500:focus,html[data-netbox-color-mode=dark] .link-indigo-500:hover,html[data-netbox-color-mode=dark] .link-indigo-500:focus,html[data-netbox-color-mode=light] .link-indigo-500:hover,html[data-netbox-color-mode=light] .link-indigo-500:focus{color:#520dc2}}@media print{html .link-indigo-600,html[data-netbox-color-mode=dark] .link-indigo-600,html[data-netbox-color-mode=light] .link-indigo-600{color:#520dc2}html .link-indigo-600:hover,html .link-indigo-600:focus,html[data-netbox-color-mode=dark] .link-indigo-600:hover,html[data-netbox-color-mode=dark] .link-indigo-600:focus,html[data-netbox-color-mode=light] .link-indigo-600:hover,html[data-netbox-color-mode=light] .link-indigo-600:focus{color:#420a9b}}@media print{html .link-indigo-700,html[data-netbox-color-mode=dark] .link-indigo-700,html[data-netbox-color-mode=light] .link-indigo-700{color:#3d0a91}html .link-indigo-700:hover,html .link-indigo-700:focus,html[data-netbox-color-mode=dark] .link-indigo-700:hover,html[data-netbox-color-mode=dark] .link-indigo-700:focus,html[data-netbox-color-mode=light] .link-indigo-700:hover,html[data-netbox-color-mode=light] .link-indigo-700:focus{color:#310874}}@media print{html .link-indigo-800,html[data-netbox-color-mode=dark] .link-indigo-800,html[data-netbox-color-mode=light] .link-indigo-800{color:#290661}html .link-indigo-800:hover,html .link-indigo-800:focus,html[data-netbox-color-mode=dark] .link-indigo-800:hover,html[data-netbox-color-mode=dark] .link-indigo-800:focus,html[data-netbox-color-mode=light] .link-indigo-800:hover,html[data-netbox-color-mode=light] .link-indigo-800:focus{color:#21054e}}@media print{html .link-indigo-900,html[data-netbox-color-mode=dark] .link-indigo-900,html[data-netbox-color-mode=light] .link-indigo-900{color:#140330}html .link-indigo-900:hover,html .link-indigo-900:focus,html[data-netbox-color-mode=dark] .link-indigo-900:hover,html[data-netbox-color-mode=dark] .link-indigo-900:focus,html[data-netbox-color-mode=light] .link-indigo-900:hover,html[data-netbox-color-mode=light] .link-indigo-900:focus{color:#100226}}@media print{html .link-purple-100,html[data-netbox-color-mode=dark] .link-purple-100,html[data-netbox-color-mode=light] .link-purple-100{color:#e2d9f3}html .link-purple-100:hover,html .link-purple-100:focus,html[data-netbox-color-mode=dark] .link-purple-100:hover,html[data-netbox-color-mode=dark] .link-purple-100:focus,html[data-netbox-color-mode=light] .link-purple-100:hover,html[data-netbox-color-mode=light] .link-purple-100:focus{color:#e8e1f5}}@media print{html .link-purple-200,html[data-netbox-color-mode=dark] .link-purple-200,html[data-netbox-color-mode=light] .link-purple-200{color:#c5b3e6}html .link-purple-200:hover,html .link-purple-200:focus,html[data-netbox-color-mode=dark] .link-purple-200:hover,html[data-netbox-color-mode=dark] .link-purple-200:focus,html[data-netbox-color-mode=light] .link-purple-200:hover,html[data-netbox-color-mode=light] .link-purple-200:focus{color:#d1c2eb}}@media print{html .link-purple-300,html[data-netbox-color-mode=dark] .link-purple-300,html[data-netbox-color-mode=light] .link-purple-300{color:#a98eda}html .link-purple-300:hover,html .link-purple-300:focus,html[data-netbox-color-mode=dark] .link-purple-300:hover,html[data-netbox-color-mode=dark] .link-purple-300:focus,html[data-netbox-color-mode=light] .link-purple-300:hover,html[data-netbox-color-mode=light] .link-purple-300:focus{color:#baa5e1}}@media print{html .link-purple-400,html[data-netbox-color-mode=dark] .link-purple-400,html[data-netbox-color-mode=light] .link-purple-400{color:#8c68cd}html .link-purple-400:hover,html .link-purple-400:focus,html[data-netbox-color-mode=dark] .link-purple-400:hover,html[data-netbox-color-mode=dark] .link-purple-400:focus,html[data-netbox-color-mode=light] .link-purple-400:hover,html[data-netbox-color-mode=light] .link-purple-400:focus{color:#a386d7}}@media print{html .link-purple-500,html[data-netbox-color-mode=dark] .link-purple-500,html[data-netbox-color-mode=light] .link-purple-500{color:#6f42c1}html .link-purple-500:hover,html .link-purple-500:focus,html[data-netbox-color-mode=dark] .link-purple-500:hover,html[data-netbox-color-mode=dark] .link-purple-500:focus,html[data-netbox-color-mode=light] .link-purple-500:hover,html[data-netbox-color-mode=light] .link-purple-500:focus{color:#59359a}}@media print{html .link-purple-600,html[data-netbox-color-mode=dark] .link-purple-600,html[data-netbox-color-mode=light] .link-purple-600{color:#59359a}html .link-purple-600:hover,html .link-purple-600:focus,html[data-netbox-color-mode=dark] .link-purple-600:hover,html[data-netbox-color-mode=dark] .link-purple-600:focus,html[data-netbox-color-mode=light] .link-purple-600:hover,html[data-netbox-color-mode=light] .link-purple-600:focus{color:#472a7b}}@media print{html .link-purple-700,html[data-netbox-color-mode=dark] .link-purple-700,html[data-netbox-color-mode=light] .link-purple-700{color:#432874}html .link-purple-700:hover,html .link-purple-700:focus,html[data-netbox-color-mode=dark] .link-purple-700:hover,html[data-netbox-color-mode=dark] .link-purple-700:focus,html[data-netbox-color-mode=light] .link-purple-700:hover,html[data-netbox-color-mode=light] .link-purple-700:focus{color:#36205d}}@media print{html .link-purple-800,html[data-netbox-color-mode=dark] .link-purple-800,html[data-netbox-color-mode=light] .link-purple-800{color:#2c1a4d}html .link-purple-800:hover,html .link-purple-800:focus,html[data-netbox-color-mode=dark] .link-purple-800:hover,html[data-netbox-color-mode=dark] .link-purple-800:focus,html[data-netbox-color-mode=light] .link-purple-800:hover,html[data-netbox-color-mode=light] .link-purple-800:focus{color:#23153e}}@media print{html .link-purple-900,html[data-netbox-color-mode=dark] .link-purple-900,html[data-netbox-color-mode=light] .link-purple-900{color:#160d27}html .link-purple-900:hover,html .link-purple-900:focus,html[data-netbox-color-mode=dark] .link-purple-900:hover,html[data-netbox-color-mode=dark] .link-purple-900:focus,html[data-netbox-color-mode=light] .link-purple-900:hover,html[data-netbox-color-mode=light] .link-purple-900:focus{color:#120a1f}}@media print{html .link-pink-100,html[data-netbox-color-mode=dark] .link-pink-100,html[data-netbox-color-mode=light] .link-pink-100{color:#f7d6e6}html .link-pink-100:hover,html .link-pink-100:focus,html[data-netbox-color-mode=dark] .link-pink-100:hover,html[data-netbox-color-mode=dark] .link-pink-100:focus,html[data-netbox-color-mode=light] .link-pink-100:hover,html[data-netbox-color-mode=light] .link-pink-100:focus{color:#f9deeb}}@media print{html .link-pink-200,html[data-netbox-color-mode=dark] .link-pink-200,html[data-netbox-color-mode=light] .link-pink-200{color:#efadce}html .link-pink-200:hover,html .link-pink-200:focus,html[data-netbox-color-mode=dark] .link-pink-200:hover,html[data-netbox-color-mode=dark] .link-pink-200:focus,html[data-netbox-color-mode=light] .link-pink-200:hover,html[data-netbox-color-mode=light] .link-pink-200:focus{color:#f2bdd8}}@media print{html .link-pink-300,html[data-netbox-color-mode=dark] .link-pink-300,html[data-netbox-color-mode=light] .link-pink-300{color:#e685b5}html .link-pink-300:hover,html .link-pink-300:focus,html[data-netbox-color-mode=dark] .link-pink-300:hover,html[data-netbox-color-mode=dark] .link-pink-300:focus,html[data-netbox-color-mode=light] .link-pink-300:hover,html[data-netbox-color-mode=light] .link-pink-300:focus{color:#eb9dc4}}@media print{html .link-pink-400,html[data-netbox-color-mode=dark] .link-pink-400,html[data-netbox-color-mode=light] .link-pink-400{color:#de5c9d}html .link-pink-400:hover,html .link-pink-400:focus,html[data-netbox-color-mode=dark] .link-pink-400:hover,html[data-netbox-color-mode=dark] .link-pink-400:focus,html[data-netbox-color-mode=light] .link-pink-400:hover,html[data-netbox-color-mode=light] .link-pink-400:focus{color:#e57db1}}@media print{html .link-pink-500,html[data-netbox-color-mode=dark] .link-pink-500,html[data-netbox-color-mode=light] .link-pink-500{color:#d63384}html .link-pink-500:hover,html .link-pink-500:focus,html[data-netbox-color-mode=dark] .link-pink-500:hover,html[data-netbox-color-mode=dark] .link-pink-500:focus,html[data-netbox-color-mode=light] .link-pink-500:hover,html[data-netbox-color-mode=light] .link-pink-500:focus{color:#ab296a}}@media print{html .link-pink-600,html[data-netbox-color-mode=dark] .link-pink-600,html[data-netbox-color-mode=light] .link-pink-600{color:#ab296a}html .link-pink-600:hover,html .link-pink-600:focus,html[data-netbox-color-mode=dark] .link-pink-600:hover,html[data-netbox-color-mode=dark] .link-pink-600:focus,html[data-netbox-color-mode=light] .link-pink-600:hover,html[data-netbox-color-mode=light] .link-pink-600:focus{color:#892155}}@media print{html .link-pink-700,html[data-netbox-color-mode=dark] .link-pink-700,html[data-netbox-color-mode=light] .link-pink-700{color:#801f4f}html .link-pink-700:hover,html .link-pink-700:focus,html[data-netbox-color-mode=dark] .link-pink-700:hover,html[data-netbox-color-mode=dark] .link-pink-700:focus,html[data-netbox-color-mode=light] .link-pink-700:hover,html[data-netbox-color-mode=light] .link-pink-700:focus{color:#66193f}}@media print{html .link-pink-800,html[data-netbox-color-mode=dark] .link-pink-800,html[data-netbox-color-mode=light] .link-pink-800{color:#561435}html .link-pink-800:hover,html .link-pink-800:focus,html[data-netbox-color-mode=dark] .link-pink-800:hover,html[data-netbox-color-mode=dark] .link-pink-800:focus,html[data-netbox-color-mode=light] .link-pink-800:hover,html[data-netbox-color-mode=light] .link-pink-800:focus{color:#45102a}}@media print{html .link-pink-900,html[data-netbox-color-mode=dark] .link-pink-900,html[data-netbox-color-mode=light] .link-pink-900{color:#2b0a1a}html .link-pink-900:hover,html .link-pink-900:focus,html[data-netbox-color-mode=dark] .link-pink-900:hover,html[data-netbox-color-mode=dark] .link-pink-900:focus,html[data-netbox-color-mode=light] .link-pink-900:hover,html[data-netbox-color-mode=light] .link-pink-900:focus{color:#220815}}@media print{html .ratio,html[data-netbox-color-mode=dark] .ratio,html[data-netbox-color-mode=light] .ratio{position:relative;width:100%}html .ratio:before,html[data-netbox-color-mode=dark] .ratio:before,html[data-netbox-color-mode=light] .ratio:before{display:block;padding-top:var(--bs-aspect-ratio);content:""}html .ratio>*,html[data-netbox-color-mode=dark] .ratio>*,html[data-netbox-color-mode=light] .ratio>*{position:absolute;top:0;left:0;width:100%;height:100%}}@media print{html .ratio-1x1,html[data-netbox-color-mode=dark] .ratio-1x1,html[data-netbox-color-mode=light] .ratio-1x1{--bs-aspect-ratio: 100%}}@media print{html .ratio-4x3,html[data-netbox-color-mode=dark] .ratio-4x3,html[data-netbox-color-mode=light] .ratio-4x3{--bs-aspect-ratio: calc(3 / 4 * 100%)}}@media print{html .ratio-16x9,html[data-netbox-color-mode=dark] .ratio-16x9,html[data-netbox-color-mode=light] .ratio-16x9{--bs-aspect-ratio: calc(9 / 16 * 100%)}}@media print{html .ratio-21x9,html[data-netbox-color-mode=dark] .ratio-21x9,html[data-netbox-color-mode=light] .ratio-21x9{--bs-aspect-ratio: calc(9 / 21 * 100%)}}@media print{html .fixed-top,html[data-netbox-color-mode=dark] .fixed-top,html[data-netbox-color-mode=light] .fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}}@media print{html .fixed-bottom,html[data-netbox-color-mode=dark] .fixed-bottom,html[data-netbox-color-mode=light] .fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}}@media print{html .sticky-top,html[data-netbox-color-mode=dark] .sticky-top,html[data-netbox-color-mode=light] .sticky-top{position:sticky;top:0;z-index:1020}}@media print and (min-width: 576px){html .sticky-sm-top,html[data-netbox-color-mode=dark] .sticky-sm-top,html[data-netbox-color-mode=light] .sticky-sm-top{position:sticky;top:0;z-index:1020}}@media print and (min-width: 768px){html .sticky-md-top,html[data-netbox-color-mode=dark] .sticky-md-top,html[data-netbox-color-mode=light] .sticky-md-top{position:sticky;top:0;z-index:1020}}@media print and (min-width: 992px){html .sticky-lg-top,html[data-netbox-color-mode=dark] .sticky-lg-top,html[data-netbox-color-mode=light] .sticky-lg-top{position:sticky;top:0;z-index:1020}}@media print and (min-width: 1200px){html .sticky-xl-top,html[data-netbox-color-mode=dark] .sticky-xl-top,html[data-netbox-color-mode=light] .sticky-xl-top{position:sticky;top:0;z-index:1020}}@media print and (min-width: 1400px){html .sticky-xxl-top,html[data-netbox-color-mode=dark] .sticky-xxl-top,html[data-netbox-color-mode=light] .sticky-xxl-top{position:sticky;top:0;z-index:1020}}@media print{html .visually-hidden,html .visually-hidden-focusable:not(:focus):not(:focus-within),html[data-netbox-color-mode=dark] .visually-hidden,html[data-netbox-color-mode=dark] .visually-hidden-focusable:not(:focus):not(:focus-within),html[data-netbox-color-mode=light] .visually-hidden,html[data-netbox-color-mode=light] .visually-hidden-focusable:not(:focus):not(:focus-within){position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}}@media print{html .stretched-link:after,html[data-netbox-color-mode=dark] .stretched-link:after,html[data-netbox-color-mode=light] .stretched-link:after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;content:""}}@media print{html .text-truncate,html[data-netbox-color-mode=dark] .text-truncate,html[data-netbox-color-mode=light] .text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}@media print{html .align-baseline,html[data-netbox-color-mode=dark] .align-baseline,html[data-netbox-color-mode=light] .align-baseline{vertical-align:baseline!important}}@media print{html .align-top,html[data-netbox-color-mode=dark] .align-top,html[data-netbox-color-mode=light] .align-top{vertical-align:top!important}}@media print{html .align-middle,html[data-netbox-color-mode=dark] .align-middle,html[data-netbox-color-mode=light] .align-middle{vertical-align:middle!important}}@media print{html .align-bottom,html[data-netbox-color-mode=dark] .align-bottom,html[data-netbox-color-mode=light] .align-bottom{vertical-align:bottom!important}}@media print{html .align-text-bottom,html[data-netbox-color-mode=dark] .align-text-bottom,html[data-netbox-color-mode=light] .align-text-bottom{vertical-align:text-bottom!important}}@media print{html .align-text-top,html[data-netbox-color-mode=dark] .align-text-top,html[data-netbox-color-mode=light] .align-text-top{vertical-align:text-top!important}}@media print{html .float-start,html[data-netbox-color-mode=dark] .float-start,html[data-netbox-color-mode=light] .float-start{float:left!important}}@media print{html .float-end,html[data-netbox-color-mode=dark] .float-end,html[data-netbox-color-mode=light] .float-end{float:right!important}}@media print{html .float-none,html[data-netbox-color-mode=dark] .float-none,html[data-netbox-color-mode=light] .float-none{float:none!important}}@media print{html .overflow-auto,html[data-netbox-color-mode=dark] .overflow-auto,html[data-netbox-color-mode=light] .overflow-auto{overflow:auto!important}}@media print{html .overflow-hidden,html[data-netbox-color-mode=dark] .overflow-hidden,html[data-netbox-color-mode=light] .overflow-hidden{overflow:hidden!important}}@media print{html .overflow-visible,html[data-netbox-color-mode=dark] .overflow-visible,html[data-netbox-color-mode=light] .overflow-visible{overflow:visible!important}}@media print{html .overflow-scroll,html[data-netbox-color-mode=dark] .overflow-scroll,html[data-netbox-color-mode=light] .overflow-scroll{overflow:scroll!important}}@media print{html .d-inline,html[data-netbox-color-mode=dark] .d-inline,html[data-netbox-color-mode=light] .d-inline{display:inline!important}}@media print{html .d-inline-block,html[data-netbox-color-mode=dark] .d-inline-block,html[data-netbox-color-mode=light] .d-inline-block{display:inline-block!important}}@media print{html .d-block,html[data-netbox-color-mode=dark] .d-block,html[data-netbox-color-mode=light] .d-block{display:block!important}}@media print{html .d-grid,html[data-netbox-color-mode=dark] .d-grid,html[data-netbox-color-mode=light] .d-grid{display:grid!important}}@media print{html .d-table,html[data-netbox-color-mode=dark] .d-table,html[data-netbox-color-mode=light] .d-table{display:table!important}}@media print{html .d-table-row,html[data-netbox-color-mode=dark] .d-table-row,html[data-netbox-color-mode=light] .d-table-row{display:table-row!important}}@media print{html .d-table-cell,html[data-netbox-color-mode=dark] .d-table-cell,html[data-netbox-color-mode=light] .d-table-cell{display:table-cell!important}}@media print{html .d-flex,html[data-netbox-color-mode=dark] .d-flex,html[data-netbox-color-mode=light] .d-flex{display:flex!important}}@media print{html .d-inline-flex,html[data-netbox-color-mode=dark] .d-inline-flex,html[data-netbox-color-mode=light] .d-inline-flex{display:inline-flex!important}}@media print{html .d-none,html[data-netbox-color-mode=dark] .d-none,html[data-netbox-color-mode=light] .d-none{display:none!important}}@media print{html .shadow,html[data-netbox-color-mode=dark] .shadow,html[data-netbox-color-mode=light] .shadow{box-shadow:0 .5rem 1rem #00000026!important}}@media print{html .shadow-sm,html[data-netbox-color-mode=dark] .shadow-sm,html[data-netbox-color-mode=light] .shadow-sm{box-shadow:0 .125rem .25rem #00000013!important}}@media print{html .shadow-lg,html[data-netbox-color-mode=dark] .shadow-lg,html[data-netbox-color-mode=light] .shadow-lg{box-shadow:0 1rem 3rem #0000002d!important}}@media print{html .shadow-none,html[data-netbox-color-mode=dark] .shadow-none,html[data-netbox-color-mode=light] .shadow-none{box-shadow:none!important}}@media print{html .position-static,html[data-netbox-color-mode=dark] .position-static,html[data-netbox-color-mode=light] .position-static{position:static!important}}@media print{html .position-relative,html[data-netbox-color-mode=dark] .position-relative,html[data-netbox-color-mode=light] .position-relative{position:relative!important}}@media print{html .position-absolute,html[data-netbox-color-mode=dark] .position-absolute,html[data-netbox-color-mode=light] .position-absolute{position:absolute!important}}@media print{html .position-fixed,html[data-netbox-color-mode=dark] .position-fixed,html[data-netbox-color-mode=light] .position-fixed{position:fixed!important}}@media print{html .position-sticky,html[data-netbox-color-mode=dark] .position-sticky,html[data-netbox-color-mode=light] .position-sticky{position:sticky!important}}@media print{html .top-0,html[data-netbox-color-mode=dark] .top-0,html[data-netbox-color-mode=light] .top-0{top:0!important}}@media print{html .top-50,html[data-netbox-color-mode=dark] .top-50,html[data-netbox-color-mode=light] .top-50{top:50%!important}}@media print{html .top-100,html[data-netbox-color-mode=dark] .top-100,html[data-netbox-color-mode=light] .top-100{top:100%!important}}@media print{html .bottom-0,html[data-netbox-color-mode=dark] .bottom-0,html[data-netbox-color-mode=light] .bottom-0{bottom:0!important}}@media print{html .bottom-50,html[data-netbox-color-mode=dark] .bottom-50,html[data-netbox-color-mode=light] .bottom-50{bottom:50%!important}}@media print{html .bottom-100,html[data-netbox-color-mode=dark] .bottom-100,html[data-netbox-color-mode=light] .bottom-100{bottom:100%!important}}@media print{html .start-0,html[data-netbox-color-mode=dark] .start-0,html[data-netbox-color-mode=light] .start-0{left:0!important}}@media print{html .start-50,html[data-netbox-color-mode=dark] .start-50,html[data-netbox-color-mode=light] .start-50{left:50%!important}}@media print{html .start-100,html[data-netbox-color-mode=dark] .start-100,html[data-netbox-color-mode=light] .start-100{left:100%!important}}@media print{html .end-0,html[data-netbox-color-mode=dark] .end-0,html[data-netbox-color-mode=light] .end-0{right:0!important}}@media print{html .end-50,html[data-netbox-color-mode=dark] .end-50,html[data-netbox-color-mode=light] .end-50{right:50%!important}}@media print{html .end-100,html[data-netbox-color-mode=dark] .end-100,html[data-netbox-color-mode=light] .end-100{right:100%!important}}@media print{html .translate-middle,html[data-netbox-color-mode=dark] .translate-middle,html[data-netbox-color-mode=light] .translate-middle{transform:translate(-50%,-50%)!important}}@media print{html .translate-middle-x,html[data-netbox-color-mode=dark] .translate-middle-x,html[data-netbox-color-mode=light] .translate-middle-x{transform:translate(-50%)!important}}@media print{html .translate-middle-y,html[data-netbox-color-mode=dark] .translate-middle-y,html[data-netbox-color-mode=light] .translate-middle-y{transform:translateY(-50%)!important}}@media print{html .border,html[data-netbox-color-mode=dark] .border,html[data-netbox-color-mode=light] .border{border:1px solid #dee2e6!important}}@media print{html .border-0,html[data-netbox-color-mode=dark] .border-0,html[data-netbox-color-mode=light] .border-0{border:0!important}}@media print{html .border-top,html[data-netbox-color-mode=dark] .border-top,html[data-netbox-color-mode=light] .border-top{border-top:1px solid #dee2e6!important}}@media print{html .border-top-0,html[data-netbox-color-mode=dark] .border-top-0,html[data-netbox-color-mode=light] .border-top-0{border-top:0!important}}@media print{html .border-end,html[data-netbox-color-mode=dark] .border-end,html[data-netbox-color-mode=light] .border-end{border-right:1px solid #dee2e6!important}}@media print{html .border-end-0,html[data-netbox-color-mode=dark] .border-end-0,html[data-netbox-color-mode=light] .border-end-0{border-right:0!important}}@media print{html .border-bottom,html[data-netbox-color-mode=dark] .border-bottom,html[data-netbox-color-mode=light] .border-bottom{border-bottom:1px solid #dee2e6!important}}@media print{html .border-bottom-0,html[data-netbox-color-mode=dark] .border-bottom-0,html[data-netbox-color-mode=light] .border-bottom-0{border-bottom:0!important}}@media print{html .border-start,html[data-netbox-color-mode=dark] .border-start,html[data-netbox-color-mode=light] .border-start{border-left:1px solid #dee2e6!important}}@media print{html .border-start-0,html[data-netbox-color-mode=dark] .border-start-0,html[data-netbox-color-mode=light] .border-start-0{border-left:0!important}}@media print{html .border-primary,html[data-netbox-color-mode=dark] .border-primary,html[data-netbox-color-mode=light] .border-primary{border-color:#337ab7!important}}@media print{html .border-secondary,html[data-netbox-color-mode=dark] .border-secondary,html[data-netbox-color-mode=light] .border-secondary{border-color:#6c757d!important}}@media print{html .border-success,html[data-netbox-color-mode=dark] .border-success,html[data-netbox-color-mode=light] .border-success{border-color:#198754!important}}@media print{html .border-info,html[data-netbox-color-mode=dark] .border-info,html[data-netbox-color-mode=light] .border-info{border-color:#0dcaf0!important}}@media print{html .border-warning,html[data-netbox-color-mode=dark] .border-warning,html[data-netbox-color-mode=light] .border-warning{border-color:#ffc107!important}}@media print{html .border-danger,html[data-netbox-color-mode=dark] .border-danger,html[data-netbox-color-mode=light] .border-danger{border-color:#dc3545!important}}@media print{html .border-light,html[data-netbox-color-mode=dark] .border-light,html[data-netbox-color-mode=light] .border-light{border-color:#f8f9fa!important}}@media print{html .border-dark,html[data-netbox-color-mode=dark] .border-dark,html[data-netbox-color-mode=light] .border-dark{border-color:#212529!important}}@media print{html .border-red,html[data-netbox-color-mode=dark] .border-red,html[data-netbox-color-mode=light] .border-red{border-color:#dc3545!important}}@media print{html .border-yellow,html[data-netbox-color-mode=dark] .border-yellow,html[data-netbox-color-mode=light] .border-yellow{border-color:#ffc107!important}}@media print{html .border-green,html[data-netbox-color-mode=dark] .border-green,html[data-netbox-color-mode=light] .border-green{border-color:#198754!important}}@media print{html .border-blue,html[data-netbox-color-mode=dark] .border-blue,html[data-netbox-color-mode=light] .border-blue{border-color:#0d6efd!important}}@media print{html .border-cyan,html[data-netbox-color-mode=dark] .border-cyan,html[data-netbox-color-mode=light] .border-cyan{border-color:#0dcaf0!important}}@media print{html .border-indigo,html[data-netbox-color-mode=dark] .border-indigo,html[data-netbox-color-mode=light] .border-indigo{border-color:#6610f2!important}}@media print{html .border-purple,html[data-netbox-color-mode=dark] .border-purple,html[data-netbox-color-mode=light] .border-purple{border-color:#6f42c1!important}}@media print{html .border-pink,html[data-netbox-color-mode=dark] .border-pink,html[data-netbox-color-mode=light] .border-pink{border-color:#d63384!important}}@media print{html .border-darker,html[data-netbox-color-mode=dark] .border-darker,html[data-netbox-color-mode=light] .border-darker{border-color:#1b1f22!important}}@media print{html .border-darkest,html[data-netbox-color-mode=dark] .border-darkest,html[data-netbox-color-mode=light] .border-darkest{border-color:#171b1d!important}}@media print{html .border-gray,html[data-netbox-color-mode=dark] .border-gray,html[data-netbox-color-mode=light] .border-gray{border-color:#ced4da!important}}@media print{html .border-gray-100,html[data-netbox-color-mode=dark] .border-gray-100,html[data-netbox-color-mode=light] .border-gray-100{border-color:#f8f9fa!important}}@media print{html .border-gray-200,html[data-netbox-color-mode=dark] .border-gray-200,html[data-netbox-color-mode=light] .border-gray-200{border-color:#e9ecef!important}}@media print{html .border-gray-300,html[data-netbox-color-mode=dark] .border-gray-300,html[data-netbox-color-mode=light] .border-gray-300{border-color:#dee2e6!important}}@media print{html .border-gray-400,html[data-netbox-color-mode=dark] .border-gray-400,html[data-netbox-color-mode=light] .border-gray-400{border-color:#ced4da!important}}@media print{html .border-gray-500,html[data-netbox-color-mode=dark] .border-gray-500,html[data-netbox-color-mode=light] .border-gray-500{border-color:#adb5bd!important}}@media print{html .border-gray-600,html[data-netbox-color-mode=dark] .border-gray-600,html[data-netbox-color-mode=light] .border-gray-600{border-color:#6c757d!important}}@media print{html .border-gray-700,html[data-netbox-color-mode=dark] .border-gray-700,html[data-netbox-color-mode=light] .border-gray-700{border-color:#495057!important}}@media print{html .border-gray-800,html[data-netbox-color-mode=dark] .border-gray-800,html[data-netbox-color-mode=light] .border-gray-800{border-color:#343a40!important}}@media print{html .border-gray-900,html[data-netbox-color-mode=dark] .border-gray-900,html[data-netbox-color-mode=light] .border-gray-900{border-color:#212529!important}}@media print{html .border-red-100,html[data-netbox-color-mode=dark] .border-red-100,html[data-netbox-color-mode=light] .border-red-100{border-color:#f8d7da!important}}@media print{html .border-red-200,html[data-netbox-color-mode=dark] .border-red-200,html[data-netbox-color-mode=light] .border-red-200{border-color:#f1aeb5!important}}@media print{html .border-red-300,html[data-netbox-color-mode=dark] .border-red-300,html[data-netbox-color-mode=light] .border-red-300{border-color:#ea868f!important}}@media print{html .border-red-400,html[data-netbox-color-mode=dark] .border-red-400,html[data-netbox-color-mode=light] .border-red-400{border-color:#e35d6a!important}}@media print{html .border-red-500,html[data-netbox-color-mode=dark] .border-red-500,html[data-netbox-color-mode=light] .border-red-500{border-color:#dc3545!important}}@media print{html .border-red-600,html[data-netbox-color-mode=dark] .border-red-600,html[data-netbox-color-mode=light] .border-red-600{border-color:#b02a37!important}}@media print{html .border-red-700,html[data-netbox-color-mode=dark] .border-red-700,html[data-netbox-color-mode=light] .border-red-700{border-color:#842029!important}}@media print{html .border-red-800,html[data-netbox-color-mode=dark] .border-red-800,html[data-netbox-color-mode=light] .border-red-800{border-color:#58151c!important}}@media print{html .border-red-900,html[data-netbox-color-mode=dark] .border-red-900,html[data-netbox-color-mode=light] .border-red-900{border-color:#2c0b0e!important}}@media print{html .border-yellow-100,html[data-netbox-color-mode=dark] .border-yellow-100,html[data-netbox-color-mode=light] .border-yellow-100{border-color:#fff3cd!important}}@media print{html .border-yellow-200,html[data-netbox-color-mode=dark] .border-yellow-200,html[data-netbox-color-mode=light] .border-yellow-200{border-color:#ffe69c!important}}@media print{html .border-yellow-300,html[data-netbox-color-mode=dark] .border-yellow-300,html[data-netbox-color-mode=light] .border-yellow-300{border-color:#ffda6a!important}}@media print{html .border-yellow-400,html[data-netbox-color-mode=dark] .border-yellow-400,html[data-netbox-color-mode=light] .border-yellow-400{border-color:#ffcd39!important}}@media print{html .border-yellow-500,html[data-netbox-color-mode=dark] .border-yellow-500,html[data-netbox-color-mode=light] .border-yellow-500{border-color:#ffc107!important}}@media print{html .border-yellow-600,html[data-netbox-color-mode=dark] .border-yellow-600,html[data-netbox-color-mode=light] .border-yellow-600{border-color:#cc9a06!important}}@media print{html .border-yellow-700,html[data-netbox-color-mode=dark] .border-yellow-700,html[data-netbox-color-mode=light] .border-yellow-700{border-color:#997404!important}}@media print{html .border-yellow-800,html[data-netbox-color-mode=dark] .border-yellow-800,html[data-netbox-color-mode=light] .border-yellow-800{border-color:#664d03!important}}@media print{html .border-yellow-900,html[data-netbox-color-mode=dark] .border-yellow-900,html[data-netbox-color-mode=light] .border-yellow-900{border-color:#332701!important}}@media print{html .border-green-100,html[data-netbox-color-mode=dark] .border-green-100,html[data-netbox-color-mode=light] .border-green-100{border-color:#d1e7dd!important}}@media print{html .border-green-200,html[data-netbox-color-mode=dark] .border-green-200,html[data-netbox-color-mode=light] .border-green-200{border-color:#a3cfbb!important}}@media print{html .border-green-300,html[data-netbox-color-mode=dark] .border-green-300,html[data-netbox-color-mode=light] .border-green-300{border-color:#75b798!important}}@media print{html .border-green-400,html[data-netbox-color-mode=dark] .border-green-400,html[data-netbox-color-mode=light] .border-green-400{border-color:#479f76!important}}@media print{html .border-green-500,html[data-netbox-color-mode=dark] .border-green-500,html[data-netbox-color-mode=light] .border-green-500{border-color:#198754!important}}@media print{html .border-green-600,html[data-netbox-color-mode=dark] .border-green-600,html[data-netbox-color-mode=light] .border-green-600{border-color:#146c43!important}}@media print{html .border-green-700,html[data-netbox-color-mode=dark] .border-green-700,html[data-netbox-color-mode=light] .border-green-700{border-color:#0f5132!important}}@media print{html .border-green-800,html[data-netbox-color-mode=dark] .border-green-800,html[data-netbox-color-mode=light] .border-green-800{border-color:#0a3622!important}}@media print{html .border-green-900,html[data-netbox-color-mode=dark] .border-green-900,html[data-netbox-color-mode=light] .border-green-900{border-color:#051b11!important}}@media print{html .border-blue-100,html[data-netbox-color-mode=dark] .border-blue-100,html[data-netbox-color-mode=light] .border-blue-100{border-color:#cfe2ff!important}}@media print{html .border-blue-200,html[data-netbox-color-mode=dark] .border-blue-200,html[data-netbox-color-mode=light] .border-blue-200{border-color:#9ec5fe!important}}@media print{html .border-blue-300,html[data-netbox-color-mode=dark] .border-blue-300,html[data-netbox-color-mode=light] .border-blue-300{border-color:#6ea8fe!important}}@media print{html .border-blue-400,html[data-netbox-color-mode=dark] .border-blue-400,html[data-netbox-color-mode=light] .border-blue-400{border-color:#3d8bfd!important}}@media print{html .border-blue-500,html[data-netbox-color-mode=dark] .border-blue-500,html[data-netbox-color-mode=light] .border-blue-500{border-color:#0d6efd!important}}@media print{html .border-blue-600,html[data-netbox-color-mode=dark] .border-blue-600,html[data-netbox-color-mode=light] .border-blue-600{border-color:#0a58ca!important}}@media print{html .border-blue-700,html[data-netbox-color-mode=dark] .border-blue-700,html[data-netbox-color-mode=light] .border-blue-700{border-color:#084298!important}}@media print{html .border-blue-800,html[data-netbox-color-mode=dark] .border-blue-800,html[data-netbox-color-mode=light] .border-blue-800{border-color:#052c65!important}}@media print{html .border-blue-900,html[data-netbox-color-mode=dark] .border-blue-900,html[data-netbox-color-mode=light] .border-blue-900{border-color:#031633!important}}@media print{html .border-cyan-100,html[data-netbox-color-mode=dark] .border-cyan-100,html[data-netbox-color-mode=light] .border-cyan-100{border-color:#cff4fc!important}}@media print{html .border-cyan-200,html[data-netbox-color-mode=dark] .border-cyan-200,html[data-netbox-color-mode=light] .border-cyan-200{border-color:#9eeaf9!important}}@media print{html .border-cyan-300,html[data-netbox-color-mode=dark] .border-cyan-300,html[data-netbox-color-mode=light] .border-cyan-300{border-color:#6edff6!important}}@media print{html .border-cyan-400,html[data-netbox-color-mode=dark] .border-cyan-400,html[data-netbox-color-mode=light] .border-cyan-400{border-color:#3dd5f3!important}}@media print{html .border-cyan-500,html[data-netbox-color-mode=dark] .border-cyan-500,html[data-netbox-color-mode=light] .border-cyan-500{border-color:#0dcaf0!important}}@media print{html .border-cyan-600,html[data-netbox-color-mode=dark] .border-cyan-600,html[data-netbox-color-mode=light] .border-cyan-600{border-color:#0aa2c0!important}}@media print{html .border-cyan-700,html[data-netbox-color-mode=dark] .border-cyan-700,html[data-netbox-color-mode=light] .border-cyan-700{border-color:#087990!important}}@media print{html .border-cyan-800,html[data-netbox-color-mode=dark] .border-cyan-800,html[data-netbox-color-mode=light] .border-cyan-800{border-color:#055160!important}}@media print{html .border-cyan-900,html[data-netbox-color-mode=dark] .border-cyan-900,html[data-netbox-color-mode=light] .border-cyan-900{border-color:#032830!important}}@media print{html .border-indigo-100,html[data-netbox-color-mode=dark] .border-indigo-100,html[data-netbox-color-mode=light] .border-indigo-100{border-color:#e0cffc!important}}@media print{html .border-indigo-200,html[data-netbox-color-mode=dark] .border-indigo-200,html[data-netbox-color-mode=light] .border-indigo-200{border-color:#c29ffa!important}}@media print{html .border-indigo-300,html[data-netbox-color-mode=dark] .border-indigo-300,html[data-netbox-color-mode=light] .border-indigo-300{border-color:#a370f7!important}}@media print{html .border-indigo-400,html[data-netbox-color-mode=dark] .border-indigo-400,html[data-netbox-color-mode=light] .border-indigo-400{border-color:#8540f5!important}}@media print{html .border-indigo-500,html[data-netbox-color-mode=dark] .border-indigo-500,html[data-netbox-color-mode=light] .border-indigo-500{border-color:#6610f2!important}}@media print{html .border-indigo-600,html[data-netbox-color-mode=dark] .border-indigo-600,html[data-netbox-color-mode=light] .border-indigo-600{border-color:#520dc2!important}}@media print{html .border-indigo-700,html[data-netbox-color-mode=dark] .border-indigo-700,html[data-netbox-color-mode=light] .border-indigo-700{border-color:#3d0a91!important}}@media print{html .border-indigo-800,html[data-netbox-color-mode=dark] .border-indigo-800,html[data-netbox-color-mode=light] .border-indigo-800{border-color:#290661!important}}@media print{html .border-indigo-900,html[data-netbox-color-mode=dark] .border-indigo-900,html[data-netbox-color-mode=light] .border-indigo-900{border-color:#140330!important}}@media print{html .border-purple-100,html[data-netbox-color-mode=dark] .border-purple-100,html[data-netbox-color-mode=light] .border-purple-100{border-color:#e2d9f3!important}}@media print{html .border-purple-200,html[data-netbox-color-mode=dark] .border-purple-200,html[data-netbox-color-mode=light] .border-purple-200{border-color:#c5b3e6!important}}@media print{html .border-purple-300,html[data-netbox-color-mode=dark] .border-purple-300,html[data-netbox-color-mode=light] .border-purple-300{border-color:#a98eda!important}}@media print{html .border-purple-400,html[data-netbox-color-mode=dark] .border-purple-400,html[data-netbox-color-mode=light] .border-purple-400{border-color:#8c68cd!important}}@media print{html .border-purple-500,html[data-netbox-color-mode=dark] .border-purple-500,html[data-netbox-color-mode=light] .border-purple-500{border-color:#6f42c1!important}}@media print{html .border-purple-600,html[data-netbox-color-mode=dark] .border-purple-600,html[data-netbox-color-mode=light] .border-purple-600{border-color:#59359a!important}}@media print{html .border-purple-700,html[data-netbox-color-mode=dark] .border-purple-700,html[data-netbox-color-mode=light] .border-purple-700{border-color:#432874!important}}@media print{html .border-purple-800,html[data-netbox-color-mode=dark] .border-purple-800,html[data-netbox-color-mode=light] .border-purple-800{border-color:#2c1a4d!important}}@media print{html .border-purple-900,html[data-netbox-color-mode=dark] .border-purple-900,html[data-netbox-color-mode=light] .border-purple-900{border-color:#160d27!important}}@media print{html .border-pink-100,html[data-netbox-color-mode=dark] .border-pink-100,html[data-netbox-color-mode=light] .border-pink-100{border-color:#f7d6e6!important}}@media print{html .border-pink-200,html[data-netbox-color-mode=dark] .border-pink-200,html[data-netbox-color-mode=light] .border-pink-200{border-color:#efadce!important}}@media print{html .border-pink-300,html[data-netbox-color-mode=dark] .border-pink-300,html[data-netbox-color-mode=light] .border-pink-300{border-color:#e685b5!important}}@media print{html .border-pink-400,html[data-netbox-color-mode=dark] .border-pink-400,html[data-netbox-color-mode=light] .border-pink-400{border-color:#de5c9d!important}}@media print{html .border-pink-500,html[data-netbox-color-mode=dark] .border-pink-500,html[data-netbox-color-mode=light] .border-pink-500{border-color:#d63384!important}}@media print{html .border-pink-600,html[data-netbox-color-mode=dark] .border-pink-600,html[data-netbox-color-mode=light] .border-pink-600{border-color:#ab296a!important}}@media print{html .border-pink-700,html[data-netbox-color-mode=dark] .border-pink-700,html[data-netbox-color-mode=light] .border-pink-700{border-color:#801f4f!important}}@media print{html .border-pink-800,html[data-netbox-color-mode=dark] .border-pink-800,html[data-netbox-color-mode=light] .border-pink-800{border-color:#561435!important}}@media print{html .border-pink-900,html[data-netbox-color-mode=dark] .border-pink-900,html[data-netbox-color-mode=light] .border-pink-900{border-color:#2b0a1a!important}}@media print{html .border-white,html[data-netbox-color-mode=dark] .border-white,html[data-netbox-color-mode=light] .border-white{border-color:#fff!important}}@media print{html .border-1,html[data-netbox-color-mode=dark] .border-1,html[data-netbox-color-mode=light] .border-1{border-width:1px!important}}@media print{html .border-2,html[data-netbox-color-mode=dark] .border-2,html[data-netbox-color-mode=light] .border-2{border-width:2px!important}}@media print{html .border-3,html[data-netbox-color-mode=dark] .border-3,html[data-netbox-color-mode=light] .border-3{border-width:3px!important}}@media print{html .border-4,html[data-netbox-color-mode=dark] .border-4,html[data-netbox-color-mode=light] .border-4{border-width:4px!important}}@media print{html .border-5,html[data-netbox-color-mode=dark] .border-5,html[data-netbox-color-mode=light] .border-5{border-width:5px!important}}@media print{html .w-25,html[data-netbox-color-mode=dark] .w-25,html[data-netbox-color-mode=light] .w-25{width:25%!important}}@media print{html .w-50,html[data-netbox-color-mode=dark] .w-50,html[data-netbox-color-mode=light] .w-50{width:50%!important}}@media print{html .w-75,html[data-netbox-color-mode=dark] .w-75,html[data-netbox-color-mode=light] .w-75{width:75%!important}}@media print{html .w-100,html[data-netbox-color-mode=dark] .w-100,html[data-netbox-color-mode=light] .w-100{width:100%!important}}@media print{html .w-auto,html[data-netbox-color-mode=dark] .w-auto,html[data-netbox-color-mode=light] .w-auto{width:auto!important}}@media print{html .mw-100,html[data-netbox-color-mode=dark] .mw-100,html[data-netbox-color-mode=light] .mw-100{max-width:100%!important}}@media print{html .vw-100,html[data-netbox-color-mode=dark] .vw-100,html[data-netbox-color-mode=light] .vw-100{width:100vw!important}}@media print{html .min-vw-100,html[data-netbox-color-mode=dark] .min-vw-100,html[data-netbox-color-mode=light] .min-vw-100{min-width:100vw!important}}@media print{html .h-25,html[data-netbox-color-mode=dark] .h-25,html[data-netbox-color-mode=light] .h-25{height:25%!important}}@media print{html .h-50,html[data-netbox-color-mode=dark] .h-50,html[data-netbox-color-mode=light] .h-50{height:50%!important}}@media print{html .h-75,html[data-netbox-color-mode=dark] .h-75,html[data-netbox-color-mode=light] .h-75{height:75%!important}}@media print{html .h-100,html[data-netbox-color-mode=dark] .h-100,html[data-netbox-color-mode=light] .h-100{height:100%!important}}@media print{html .h-auto,html[data-netbox-color-mode=dark] .h-auto,html[data-netbox-color-mode=light] .h-auto{height:auto!important}}@media print{html .mh-100,html[data-netbox-color-mode=dark] .mh-100,html[data-netbox-color-mode=light] .mh-100{max-height:100%!important}}@media print{html .vh-100,html[data-netbox-color-mode=dark] .vh-100,html[data-netbox-color-mode=light] .vh-100{height:100vh!important}}@media print{html .min-vh-100,html[data-netbox-color-mode=dark] .min-vh-100,html[data-netbox-color-mode=light] .min-vh-100{min-height:100vh!important}}@media print{html .flex-fill,html[data-netbox-color-mode=dark] .flex-fill,html[data-netbox-color-mode=light] .flex-fill{flex:1 1 auto!important}}@media print{html .flex-row,html[data-netbox-color-mode=dark] .flex-row,html[data-netbox-color-mode=light] .flex-row{flex-direction:row!important}}@media print{html .flex-column,html[data-netbox-color-mode=dark] .flex-column,html[data-netbox-color-mode=light] .flex-column{flex-direction:column!important}}@media print{html .flex-row-reverse,html[data-netbox-color-mode=dark] .flex-row-reverse,html[data-netbox-color-mode=light] .flex-row-reverse{flex-direction:row-reverse!important}}@media print{html .flex-column-reverse,html[data-netbox-color-mode=dark] .flex-column-reverse,html[data-netbox-color-mode=light] .flex-column-reverse{flex-direction:column-reverse!important}}@media print{html .flex-grow-0,html[data-netbox-color-mode=dark] .flex-grow-0,html[data-netbox-color-mode=light] .flex-grow-0{flex-grow:0!important}}@media print{html .flex-grow-1,html[data-netbox-color-mode=dark] .flex-grow-1,html[data-netbox-color-mode=light] .flex-grow-1{flex-grow:1!important}}@media print{html .flex-shrink-0,html[data-netbox-color-mode=dark] .flex-shrink-0,html[data-netbox-color-mode=light] .flex-shrink-0{flex-shrink:0!important}}@media print{html .flex-shrink-1,html[data-netbox-color-mode=dark] .flex-shrink-1,html[data-netbox-color-mode=light] .flex-shrink-1{flex-shrink:1!important}}@media print{html .flex-wrap,html[data-netbox-color-mode=dark] .flex-wrap,html[data-netbox-color-mode=light] .flex-wrap{flex-wrap:wrap!important}}@media print{html .flex-nowrap,html[data-netbox-color-mode=dark] .flex-nowrap,html[data-netbox-color-mode=light] .flex-nowrap{flex-wrap:nowrap!important}}@media print{html .flex-wrap-reverse,html[data-netbox-color-mode=dark] .flex-wrap-reverse,html[data-netbox-color-mode=light] .flex-wrap-reverse{flex-wrap:wrap-reverse!important}}@media print{html .gap-0,html[data-netbox-color-mode=dark] .gap-0,html[data-netbox-color-mode=light] .gap-0{gap:0!important}}@media print{html .gap-1,html[data-netbox-color-mode=dark] .gap-1,html[data-netbox-color-mode=light] .gap-1{gap:.25rem!important}}@media print{html .gap-2,html[data-netbox-color-mode=dark] .gap-2,html[data-netbox-color-mode=light] .gap-2{gap:.5rem!important}}@media print{html .gap-3,html[data-netbox-color-mode=dark] .gap-3,html[data-netbox-color-mode=light] .gap-3{gap:1rem!important}}@media print{html .gap-4,html[data-netbox-color-mode=dark] .gap-4,html[data-netbox-color-mode=light] .gap-4{gap:1.5rem!important}}@media print{html .gap-5,html[data-netbox-color-mode=dark] .gap-5,html[data-netbox-color-mode=light] .gap-5{gap:3rem!important}}@media print{html .justify-content-start,html[data-netbox-color-mode=dark] .justify-content-start,html[data-netbox-color-mode=light] .justify-content-start{justify-content:flex-start!important}}@media print{html .justify-content-end,html[data-netbox-color-mode=dark] .justify-content-end,html[data-netbox-color-mode=light] .justify-content-end{justify-content:flex-end!important}}@media print{html .justify-content-center,html[data-netbox-color-mode=dark] .justify-content-center,html[data-netbox-color-mode=light] .justify-content-center{justify-content:center!important}}@media print{html .justify-content-between,html[data-netbox-color-mode=dark] .justify-content-between,html[data-netbox-color-mode=light] .justify-content-between{justify-content:space-between!important}}@media print{html .justify-content-around,html[data-netbox-color-mode=dark] .justify-content-around,html[data-netbox-color-mode=light] .justify-content-around{justify-content:space-around!important}}@media print{html .justify-content-evenly,html[data-netbox-color-mode=dark] .justify-content-evenly,html[data-netbox-color-mode=light] .justify-content-evenly{justify-content:space-evenly!important}}@media print{html .align-items-start,html[data-netbox-color-mode=dark] .align-items-start,html[data-netbox-color-mode=light] .align-items-start{align-items:flex-start!important}}@media print{html .align-items-end,html[data-netbox-color-mode=dark] .align-items-end,html[data-netbox-color-mode=light] .align-items-end{align-items:flex-end!important}}@media print{html .align-items-center,html[data-netbox-color-mode=dark] .align-items-center,html[data-netbox-color-mode=light] .align-items-center{align-items:center!important}}@media print{html .align-items-baseline,html[data-netbox-color-mode=dark] .align-items-baseline,html[data-netbox-color-mode=light] .align-items-baseline{align-items:baseline!important}}@media print{html .align-items-stretch,html[data-netbox-color-mode=dark] .align-items-stretch,html[data-netbox-color-mode=light] .align-items-stretch{align-items:stretch!important}}@media print{html .align-content-start,html[data-netbox-color-mode=dark] .align-content-start,html[data-netbox-color-mode=light] .align-content-start{align-content:flex-start!important}}@media print{html .align-content-end,html[data-netbox-color-mode=dark] .align-content-end,html[data-netbox-color-mode=light] .align-content-end{align-content:flex-end!important}}@media print{html .align-content-center,html[data-netbox-color-mode=dark] .align-content-center,html[data-netbox-color-mode=light] .align-content-center{align-content:center!important}}@media print{html .align-content-between,html[data-netbox-color-mode=dark] .align-content-between,html[data-netbox-color-mode=light] .align-content-between{align-content:space-between!important}}@media print{html .align-content-around,html[data-netbox-color-mode=dark] .align-content-around,html[data-netbox-color-mode=light] .align-content-around{align-content:space-around!important}}@media print{html .align-content-stretch,html[data-netbox-color-mode=dark] .align-content-stretch,html[data-netbox-color-mode=light] .align-content-stretch{align-content:stretch!important}}@media print{html .align-self-auto,html[data-netbox-color-mode=dark] .align-self-auto,html[data-netbox-color-mode=light] .align-self-auto{align-self:auto!important}}@media print{html .align-self-start,html[data-netbox-color-mode=dark] .align-self-start,html[data-netbox-color-mode=light] .align-self-start{align-self:flex-start!important}}@media print{html .align-self-end,html[data-netbox-color-mode=dark] .align-self-end,html[data-netbox-color-mode=light] .align-self-end{align-self:flex-end!important}}@media print{html .align-self-center,html[data-netbox-color-mode=dark] .align-self-center,html[data-netbox-color-mode=light] .align-self-center{align-self:center!important}}@media print{html .align-self-baseline,html[data-netbox-color-mode=dark] .align-self-baseline,html[data-netbox-color-mode=light] .align-self-baseline{align-self:baseline!important}}@media print{html .align-self-stretch,html[data-netbox-color-mode=dark] .align-self-stretch,html[data-netbox-color-mode=light] .align-self-stretch{align-self:stretch!important}}@media print{html .order-first,html[data-netbox-color-mode=dark] .order-first,html[data-netbox-color-mode=light] .order-first{order:-1!important}}@media print{html .order-0,html[data-netbox-color-mode=dark] .order-0,html[data-netbox-color-mode=light] .order-0{order:0!important}}@media print{html .order-1,html[data-netbox-color-mode=dark] .order-1,html[data-netbox-color-mode=light] .order-1{order:1!important}}@media print{html .order-2,html[data-netbox-color-mode=dark] .order-2,html[data-netbox-color-mode=light] .order-2{order:2!important}}@media print{html .order-3,html[data-netbox-color-mode=dark] .order-3,html[data-netbox-color-mode=light] .order-3{order:3!important}}@media print{html .order-4,html[data-netbox-color-mode=dark] .order-4,html[data-netbox-color-mode=light] .order-4{order:4!important}}@media print{html .order-5,html[data-netbox-color-mode=dark] .order-5,html[data-netbox-color-mode=light] .order-5{order:5!important}}@media print{html .order-last,html[data-netbox-color-mode=dark] .order-last,html[data-netbox-color-mode=light] .order-last{order:6!important}}@media print{html .m-0,html[data-netbox-color-mode=dark] .m-0,html[data-netbox-color-mode=light] .m-0{margin:0!important}}@media print{html .m-1,html[data-netbox-color-mode=dark] .m-1,html[data-netbox-color-mode=light] .m-1{margin:.25rem!important}}@media print{html .m-2,html[data-netbox-color-mode=dark] .m-2,html[data-netbox-color-mode=light] .m-2{margin:.5rem!important}}@media print{html .m-3,html[data-netbox-color-mode=dark] .m-3,html[data-netbox-color-mode=light] .m-3{margin:1rem!important}}@media print{html .m-4,html[data-netbox-color-mode=dark] .m-4,html[data-netbox-color-mode=light] .m-4{margin:1.5rem!important}}@media print{html .m-5,html[data-netbox-color-mode=dark] .m-5,html[data-netbox-color-mode=light] .m-5{margin:3rem!important}}@media print{html .m-auto,html[data-netbox-color-mode=dark] .m-auto,html[data-netbox-color-mode=light] .m-auto{margin:auto!important}}@media print{html .mx-0,html[data-netbox-color-mode=dark] .mx-0,html[data-netbox-color-mode=light] .mx-0{margin-right:0!important;margin-left:0!important}}@media print{html .mx-1,html[data-netbox-color-mode=dark] .mx-1,html[data-netbox-color-mode=light] .mx-1{margin-right:.25rem!important;margin-left:.25rem!important}}@media print{html .mx-2,html[data-netbox-color-mode=dark] .mx-2,html[data-netbox-color-mode=light] .mx-2{margin-right:.5rem!important;margin-left:.5rem!important}}@media print{html .mx-3,html[data-netbox-color-mode=dark] .mx-3,html[data-netbox-color-mode=light] .mx-3{margin-right:1rem!important;margin-left:1rem!important}}@media print{html .mx-4,html[data-netbox-color-mode=dark] .mx-4,html[data-netbox-color-mode=light] .mx-4{margin-right:1.5rem!important;margin-left:1.5rem!important}}@media print{html .mx-5,html[data-netbox-color-mode=dark] .mx-5,html[data-netbox-color-mode=light] .mx-5{margin-right:3rem!important;margin-left:3rem!important}}@media print{html .mx-auto,html[data-netbox-color-mode=dark] .mx-auto,html[data-netbox-color-mode=light] .mx-auto{margin-right:auto!important;margin-left:auto!important}}@media print{html .my-0,html[data-netbox-color-mode=dark] .my-0,html[data-netbox-color-mode=light] .my-0{margin-top:0!important;margin-bottom:0!important}}@media print{html .my-1,html[data-netbox-color-mode=dark] .my-1,html[data-netbox-color-mode=light] .my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}}@media print{html .my-2,html[data-netbox-color-mode=dark] .my-2,html[data-netbox-color-mode=light] .my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}}@media print{html .my-3,html[data-netbox-color-mode=dark] .my-3,html[data-netbox-color-mode=light] .my-3{margin-top:1rem!important;margin-bottom:1rem!important}}@media print{html .my-4,html[data-netbox-color-mode=dark] .my-4,html[data-netbox-color-mode=light] .my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}}@media print{html .my-5,html[data-netbox-color-mode=dark] .my-5,html[data-netbox-color-mode=light] .my-5{margin-top:3rem!important;margin-bottom:3rem!important}}@media print{html .my-auto,html[data-netbox-color-mode=dark] .my-auto,html[data-netbox-color-mode=light] .my-auto{margin-top:auto!important;margin-bottom:auto!important}}@media print{html .mt-0,html[data-netbox-color-mode=dark] .mt-0,html[data-netbox-color-mode=light] .mt-0{margin-top:0!important}}@media print{html .mt-1,html[data-netbox-color-mode=dark] .mt-1,html[data-netbox-color-mode=light] .mt-1{margin-top:.25rem!important}}@media print{html .mt-2,html[data-netbox-color-mode=dark] .mt-2,html[data-netbox-color-mode=light] .mt-2{margin-top:.5rem!important}}@media print{html .mt-3,html[data-netbox-color-mode=dark] .mt-3,html[data-netbox-color-mode=light] .mt-3{margin-top:1rem!important}}@media print{html .mt-4,html[data-netbox-color-mode=dark] .mt-4,html[data-netbox-color-mode=light] .mt-4{margin-top:1.5rem!important}}@media print{html .mt-5,html[data-netbox-color-mode=dark] .mt-5,html[data-netbox-color-mode=light] .mt-5{margin-top:3rem!important}}@media print{html .mt-auto,html[data-netbox-color-mode=dark] .mt-auto,html[data-netbox-color-mode=light] .mt-auto{margin-top:auto!important}}@media print{html .me-0,html[data-netbox-color-mode=dark] .me-0,html[data-netbox-color-mode=light] .me-0{margin-right:0!important}}@media print{html .me-1,html[data-netbox-color-mode=dark] .me-1,html[data-netbox-color-mode=light] .me-1{margin-right:.25rem!important}}@media print{html .me-2,html[data-netbox-color-mode=dark] .me-2,html[data-netbox-color-mode=light] .me-2{margin-right:.5rem!important}}@media print{html .me-3,html[data-netbox-color-mode=dark] .me-3,html[data-netbox-color-mode=light] .me-3{margin-right:1rem!important}}@media print{html .me-4,html[data-netbox-color-mode=dark] .me-4,html[data-netbox-color-mode=light] .me-4{margin-right:1.5rem!important}}@media print{html .me-5,html[data-netbox-color-mode=dark] .me-5,html[data-netbox-color-mode=light] .me-5{margin-right:3rem!important}}@media print{html .me-auto,html[data-netbox-color-mode=dark] .me-auto,html[data-netbox-color-mode=light] .me-auto{margin-right:auto!important}}@media print{html .mb-0,html[data-netbox-color-mode=dark] .mb-0,html[data-netbox-color-mode=light] .mb-0{margin-bottom:0!important}}@media print{html .mb-1,html[data-netbox-color-mode=dark] .mb-1,html[data-netbox-color-mode=light] .mb-1{margin-bottom:.25rem!important}}@media print{html .mb-2,html[data-netbox-color-mode=dark] .mb-2,html[data-netbox-color-mode=light] .mb-2{margin-bottom:.5rem!important}}@media print{html .mb-3,html[data-netbox-color-mode=dark] .mb-3,html[data-netbox-color-mode=light] .mb-3{margin-bottom:1rem!important}}@media print{html .mb-4,html[data-netbox-color-mode=dark] .mb-4,html[data-netbox-color-mode=light] .mb-4{margin-bottom:1.5rem!important}}@media print{html .mb-5,html[data-netbox-color-mode=dark] .mb-5,html[data-netbox-color-mode=light] .mb-5{margin-bottom:3rem!important}}@media print{html .mb-auto,html[data-netbox-color-mode=dark] .mb-auto,html[data-netbox-color-mode=light] .mb-auto{margin-bottom:auto!important}}@media print{html .ms-0,html[data-netbox-color-mode=dark] .ms-0,html[data-netbox-color-mode=light] .ms-0{margin-left:0!important}}@media print{html .ms-1,html[data-netbox-color-mode=dark] .ms-1,html[data-netbox-color-mode=light] .ms-1{margin-left:.25rem!important}}@media print{html .ms-2,html[data-netbox-color-mode=dark] .ms-2,html[data-netbox-color-mode=light] .ms-2{margin-left:.5rem!important}}@media print{html .ms-3,html[data-netbox-color-mode=dark] .ms-3,html[data-netbox-color-mode=light] .ms-3{margin-left:1rem!important}}@media print{html .ms-4,html[data-netbox-color-mode=dark] .ms-4,html[data-netbox-color-mode=light] .ms-4{margin-left:1.5rem!important}}@media print{html .ms-5,html[data-netbox-color-mode=dark] .ms-5,html[data-netbox-color-mode=light] .ms-5{margin-left:3rem!important}}@media print{html .ms-auto,html[data-netbox-color-mode=dark] .ms-auto,html[data-netbox-color-mode=light] .ms-auto{margin-left:auto!important}}@media print{html .p-0,html[data-netbox-color-mode=dark] .p-0,html[data-netbox-color-mode=light] .p-0{padding:0!important}}@media print{html .p-1,html[data-netbox-color-mode=dark] .p-1,html[data-netbox-color-mode=light] .p-1{padding:.25rem!important}}@media print{html .p-2,html[data-netbox-color-mode=dark] .p-2,html[data-netbox-color-mode=light] .p-2{padding:.5rem!important}}@media print{html .p-3,html[data-netbox-color-mode=dark] .p-3,html[data-netbox-color-mode=light] .p-3{padding:1rem!important}}@media print{html .p-4,html[data-netbox-color-mode=dark] .p-4,html[data-netbox-color-mode=light] .p-4{padding:1.5rem!important}}@media print{html .p-5,html[data-netbox-color-mode=dark] .p-5,html[data-netbox-color-mode=light] .p-5{padding:3rem!important}}@media print{html .px-0,html[data-netbox-color-mode=dark] .px-0,html[data-netbox-color-mode=light] .px-0{padding-right:0!important;padding-left:0!important}}@media print{html .px-1,html[data-netbox-color-mode=dark] .px-1,html[data-netbox-color-mode=light] .px-1{padding-right:.25rem!important;padding-left:.25rem!important}}@media print{html .px-2,html[data-netbox-color-mode=dark] .px-2,html[data-netbox-color-mode=light] .px-2{padding-right:.5rem!important;padding-left:.5rem!important}}@media print{html .px-3,html[data-netbox-color-mode=dark] .px-3,html[data-netbox-color-mode=light] .px-3{padding-right:1rem!important;padding-left:1rem!important}}@media print{html .px-4,html[data-netbox-color-mode=dark] .px-4,html[data-netbox-color-mode=light] .px-4{padding-right:1.5rem!important;padding-left:1.5rem!important}}@media print{html .px-5,html[data-netbox-color-mode=dark] .px-5,html[data-netbox-color-mode=light] .px-5{padding-right:3rem!important;padding-left:3rem!important}}@media print{html .py-0,html[data-netbox-color-mode=dark] .py-0,html[data-netbox-color-mode=light] .py-0{padding-top:0!important;padding-bottom:0!important}}@media print{html .py-1,html[data-netbox-color-mode=dark] .py-1,html[data-netbox-color-mode=light] .py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}}@media print{html .py-2,html[data-netbox-color-mode=dark] .py-2,html[data-netbox-color-mode=light] .py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}}@media print{html .py-3,html[data-netbox-color-mode=dark] .py-3,html[data-netbox-color-mode=light] .py-3{padding-top:1rem!important;padding-bottom:1rem!important}}@media print{html .py-4,html[data-netbox-color-mode=dark] .py-4,html[data-netbox-color-mode=light] .py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}}@media print{html .py-5,html[data-netbox-color-mode=dark] .py-5,html[data-netbox-color-mode=light] .py-5{padding-top:3rem!important;padding-bottom:3rem!important}}@media print{html .pt-0,html[data-netbox-color-mode=dark] .pt-0,html[data-netbox-color-mode=light] .pt-0{padding-top:0!important}}@media print{html .pt-1,html[data-netbox-color-mode=dark] .pt-1,html[data-netbox-color-mode=light] .pt-1{padding-top:.25rem!important}}@media print{html .pt-2,html[data-netbox-color-mode=dark] .pt-2,html[data-netbox-color-mode=light] .pt-2{padding-top:.5rem!important}}@media print{html .pt-3,html[data-netbox-color-mode=dark] .pt-3,html[data-netbox-color-mode=light] .pt-3{padding-top:1rem!important}}@media print{html .pt-4,html[data-netbox-color-mode=dark] .pt-4,html[data-netbox-color-mode=light] .pt-4{padding-top:1.5rem!important}}@media print{html .pt-5,html[data-netbox-color-mode=dark] .pt-5,html[data-netbox-color-mode=light] .pt-5{padding-top:3rem!important}}@media print{html .pe-0,html[data-netbox-color-mode=dark] .pe-0,html[data-netbox-color-mode=light] .pe-0{padding-right:0!important}}@media print{html .pe-1,html[data-netbox-color-mode=dark] .pe-1,html[data-netbox-color-mode=light] .pe-1{padding-right:.25rem!important}}@media print{html .pe-2,html[data-netbox-color-mode=dark] .pe-2,html[data-netbox-color-mode=light] .pe-2{padding-right:.5rem!important}}@media print{html .pe-3,html[data-netbox-color-mode=dark] .pe-3,html[data-netbox-color-mode=light] .pe-3{padding-right:1rem!important}}@media print{html .pe-4,html[data-netbox-color-mode=dark] .pe-4,html[data-netbox-color-mode=light] .pe-4{padding-right:1.5rem!important}}@media print{html .pe-5,html[data-netbox-color-mode=dark] .pe-5,html[data-netbox-color-mode=light] .pe-5{padding-right:3rem!important}}@media print{html .pb-0,html[data-netbox-color-mode=dark] .pb-0,html[data-netbox-color-mode=light] .pb-0{padding-bottom:0!important}}@media print{html .pb-1,html[data-netbox-color-mode=dark] .pb-1,html[data-netbox-color-mode=light] .pb-1{padding-bottom:.25rem!important}}@media print{html .pb-2,html[data-netbox-color-mode=dark] .pb-2,html[data-netbox-color-mode=light] .pb-2{padding-bottom:.5rem!important}}@media print{html .pb-3,html[data-netbox-color-mode=dark] .pb-3,html[data-netbox-color-mode=light] .pb-3{padding-bottom:1rem!important}}@media print{html .pb-4,html[data-netbox-color-mode=dark] .pb-4,html[data-netbox-color-mode=light] .pb-4{padding-bottom:1.5rem!important}}@media print{html .pb-5,html[data-netbox-color-mode=dark] .pb-5,html[data-netbox-color-mode=light] .pb-5{padding-bottom:3rem!important}}@media print{html .ps-0,html[data-netbox-color-mode=dark] .ps-0,html[data-netbox-color-mode=light] .ps-0{padding-left:0!important}}@media print{html .ps-1,html[data-netbox-color-mode=dark] .ps-1,html[data-netbox-color-mode=light] .ps-1{padding-left:.25rem!important}}@media print{html .ps-2,html[data-netbox-color-mode=dark] .ps-2,html[data-netbox-color-mode=light] .ps-2{padding-left:.5rem!important}}@media print{html .ps-3,html[data-netbox-color-mode=dark] .ps-3,html[data-netbox-color-mode=light] .ps-3{padding-left:1rem!important}}@media print{html .ps-4,html[data-netbox-color-mode=dark] .ps-4,html[data-netbox-color-mode=light] .ps-4{padding-left:1.5rem!important}}@media print{html .ps-5,html[data-netbox-color-mode=dark] .ps-5,html[data-netbox-color-mode=light] .ps-5{padding-left:3rem!important}}@media print{html .font-monospace,html[data-netbox-color-mode=dark] .font-monospace,html[data-netbox-color-mode=light] .font-monospace{font-family:var(--bs-font-monospace)!important}}@media print{html .fs-1,html[data-netbox-color-mode=dark] .fs-1,html[data-netbox-color-mode=light] .fs-1{font-size:calc(1.375rem + 1.5vw)!important}}@media print{html .fs-2,html[data-netbox-color-mode=dark] .fs-2,html[data-netbox-color-mode=light] .fs-2{font-size:calc(1.325rem + .9vw)!important}}@media print{html .fs-3,html[data-netbox-color-mode=dark] .fs-3,html[data-netbox-color-mode=light] .fs-3{font-size:calc(1.3rem + .6vw)!important}}@media print{html .fs-4,html[data-netbox-color-mode=dark] .fs-4,html[data-netbox-color-mode=light] .fs-4{font-size:calc(1.275rem + .3vw)!important}}@media print{html .fs-5,html[data-netbox-color-mode=dark] .fs-5,html[data-netbox-color-mode=light] .fs-5{font-size:1.25rem!important}}@media print{html .fs-6,html[data-netbox-color-mode=dark] .fs-6,html[data-netbox-color-mode=light] .fs-6{font-size:1rem!important}}@media print{html .fst-italic,html[data-netbox-color-mode=dark] .fst-italic,html[data-netbox-color-mode=light] .fst-italic{font-style:italic!important}}@media print{html .fst-normal,html[data-netbox-color-mode=dark] .fst-normal,html[data-netbox-color-mode=light] .fst-normal{font-style:normal!important}}@media print{html .fw-light,html[data-netbox-color-mode=dark] .fw-light,html[data-netbox-color-mode=light] .fw-light{font-weight:300!important}}@media print{html .fw-lighter,html[data-netbox-color-mode=dark] .fw-lighter,html[data-netbox-color-mode=light] .fw-lighter{font-weight:200!important}}@media print{html .fw-normal,html[data-netbox-color-mode=dark] .fw-normal,html[data-netbox-color-mode=light] .fw-normal{font-weight:400!important}}@media print{html .fw-bold,html[data-netbox-color-mode=dark] .fw-bold,html[data-netbox-color-mode=light] .fw-bold{font-weight:700!important}}@media print{html .fw-bolder,html[data-netbox-color-mode=dark] .fw-bolder,html[data-netbox-color-mode=light] .fw-bolder{font-weight:800!important}}@media print{html .lh-1,html[data-netbox-color-mode=dark] .lh-1,html[data-netbox-color-mode=light] .lh-1{line-height:1!important}}@media print{html .lh-sm,html[data-netbox-color-mode=dark] .lh-sm,html[data-netbox-color-mode=light] .lh-sm{line-height:1.25!important}}@media print{html .lh-base,html[data-netbox-color-mode=dark] .lh-base,html[data-netbox-color-mode=light] .lh-base{line-height:1.5!important}}@media print{html .lh-lg,html[data-netbox-color-mode=dark] .lh-lg,html[data-netbox-color-mode=light] .lh-lg{line-height:1.75!important}}@media print{html .text-start,html[data-netbox-color-mode=dark] .text-start,html[data-netbox-color-mode=light] .text-start{text-align:left!important}}@media print{html .text-end,html[data-netbox-color-mode=dark] .text-end,html[data-netbox-color-mode=light] .text-end{text-align:right!important}}@media print{html .text-center,html[data-netbox-color-mode=dark] .text-center,html[data-netbox-color-mode=light] .text-center{text-align:center!important}}@media print{html .text-decoration-none,html[data-netbox-color-mode=dark] .text-decoration-none,html[data-netbox-color-mode=light] .text-decoration-none{text-decoration:none!important}}@media print{html .text-decoration-underline,html[data-netbox-color-mode=dark] .text-decoration-underline,html[data-netbox-color-mode=light] .text-decoration-underline{text-decoration:underline!important}}@media print{html .text-decoration-line-through,html[data-netbox-color-mode=dark] .text-decoration-line-through,html[data-netbox-color-mode=light] .text-decoration-line-through{text-decoration:line-through!important}}@media print{html .text-lowercase,html[data-netbox-color-mode=dark] .text-lowercase,html[data-netbox-color-mode=light] .text-lowercase{text-transform:lowercase!important}}@media print{html .text-uppercase,html[data-netbox-color-mode=dark] .text-uppercase,html[data-netbox-color-mode=light] .text-uppercase{text-transform:uppercase!important}}@media print{html .text-capitalize,html[data-netbox-color-mode=dark] .text-capitalize,html[data-netbox-color-mode=light] .text-capitalize{text-transform:capitalize!important}}@media print{html .text-wrap,html[data-netbox-color-mode=dark] .text-wrap,html[data-netbox-color-mode=light] .text-wrap{white-space:normal!important}}@media print{html .text-nowrap,html[data-netbox-color-mode=dark] .text-nowrap,html[data-netbox-color-mode=light] .text-nowrap{white-space:nowrap!important}}@media print{html .text-break,html[data-netbox-color-mode=dark] .text-break,html[data-netbox-color-mode=light] .text-break{word-wrap:break-word!important;word-break:break-word!important}}@media print{html .text-primary,html[data-netbox-color-mode=dark] .text-primary,html[data-netbox-color-mode=light] .text-primary{color:#337ab7!important}}@media print{html .text-secondary,html[data-netbox-color-mode=dark] .text-secondary,html[data-netbox-color-mode=light] .text-secondary{color:#6c757d!important}}@media print{html .text-success,html[data-netbox-color-mode=dark] .text-success,html[data-netbox-color-mode=light] .text-success{color:#198754!important}}@media print{html .text-info,html[data-netbox-color-mode=dark] .text-info,html[data-netbox-color-mode=light] .text-info{color:#0dcaf0!important}}@media print{html .text-warning,html[data-netbox-color-mode=dark] .text-warning,html[data-netbox-color-mode=light] .text-warning{color:#ffc107!important}}@media print{html .text-danger,html[data-netbox-color-mode=dark] .text-danger,html[data-netbox-color-mode=light] .text-danger{color:#dc3545!important}}@media print{html .text-light,html[data-netbox-color-mode=dark] .text-light,html[data-netbox-color-mode=light] .text-light{color:#f8f9fa!important}}@media print{html .text-dark,html[data-netbox-color-mode=dark] .text-dark,html[data-netbox-color-mode=light] .text-dark{color:#212529!important}}@media print{html .text-red,html[data-netbox-color-mode=dark] .text-red,html[data-netbox-color-mode=light] .text-red{color:#dc3545!important}}@media print{html .text-yellow,html[data-netbox-color-mode=dark] .text-yellow,html[data-netbox-color-mode=light] .text-yellow{color:#ffc107!important}}@media print{html .text-green,html[data-netbox-color-mode=dark] .text-green,html[data-netbox-color-mode=light] .text-green{color:#198754!important}}@media print{html .text-blue,html[data-netbox-color-mode=dark] .text-blue,html[data-netbox-color-mode=light] .text-blue{color:#0d6efd!important}}@media print{html .text-cyan,html[data-netbox-color-mode=dark] .text-cyan,html[data-netbox-color-mode=light] .text-cyan{color:#0dcaf0!important}}@media print{html .text-indigo,html[data-netbox-color-mode=dark] .text-indigo,html[data-netbox-color-mode=light] .text-indigo{color:#6610f2!important}}@media print{html .text-purple,html[data-netbox-color-mode=dark] .text-purple,html[data-netbox-color-mode=light] .text-purple{color:#6f42c1!important}}@media print{html .text-pink,html[data-netbox-color-mode=dark] .text-pink,html[data-netbox-color-mode=light] .text-pink{color:#d63384!important}}@media print{html .text-darker,html[data-netbox-color-mode=dark] .text-darker,html[data-netbox-color-mode=light] .text-darker{color:#1b1f22!important}}@media print{html .text-darkest,html[data-netbox-color-mode=dark] .text-darkest,html[data-netbox-color-mode=light] .text-darkest{color:#171b1d!important}}@media print{html .text-gray,html[data-netbox-color-mode=dark] .text-gray,html[data-netbox-color-mode=light] .text-gray{color:#ced4da!important}}@media print{html .text-gray-100,html[data-netbox-color-mode=dark] .text-gray-100,html[data-netbox-color-mode=light] .text-gray-100{color:#f8f9fa!important}}@media print{html .text-gray-200,html[data-netbox-color-mode=dark] .text-gray-200,html[data-netbox-color-mode=light] .text-gray-200{color:#e9ecef!important}}@media print{html .text-gray-300,html[data-netbox-color-mode=dark] .text-gray-300,html[data-netbox-color-mode=light] .text-gray-300{color:#dee2e6!important}}@media print{html .text-gray-400,html[data-netbox-color-mode=dark] .text-gray-400,html[data-netbox-color-mode=light] .text-gray-400{color:#ced4da!important}}@media print{html .text-gray-500,html[data-netbox-color-mode=dark] .text-gray-500,html[data-netbox-color-mode=light] .text-gray-500{color:#adb5bd!important}}@media print{html .text-gray-600,html[data-netbox-color-mode=dark] .text-gray-600,html[data-netbox-color-mode=light] .text-gray-600{color:#6c757d!important}}@media print{html .text-gray-700,html[data-netbox-color-mode=dark] .text-gray-700,html[data-netbox-color-mode=light] .text-gray-700{color:#495057!important}}@media print{html .text-gray-800,html[data-netbox-color-mode=dark] .text-gray-800,html[data-netbox-color-mode=light] .text-gray-800{color:#343a40!important}}@media print{html .text-gray-900,html[data-netbox-color-mode=dark] .text-gray-900,html[data-netbox-color-mode=light] .text-gray-900{color:#212529!important}}@media print{html .text-red-100,html[data-netbox-color-mode=dark] .text-red-100,html[data-netbox-color-mode=light] .text-red-100{color:#f8d7da!important}}@media print{html .text-red-200,html[data-netbox-color-mode=dark] .text-red-200,html[data-netbox-color-mode=light] .text-red-200{color:#f1aeb5!important}}@media print{html .text-red-300,html[data-netbox-color-mode=dark] .text-red-300,html[data-netbox-color-mode=light] .text-red-300{color:#ea868f!important}}@media print{html .text-red-400,html[data-netbox-color-mode=dark] .text-red-400,html[data-netbox-color-mode=light] .text-red-400{color:#e35d6a!important}}@media print{html .text-red-500,html[data-netbox-color-mode=dark] .text-red-500,html[data-netbox-color-mode=light] .text-red-500{color:#dc3545!important}}@media print{html .text-red-600,html[data-netbox-color-mode=dark] .text-red-600,html[data-netbox-color-mode=light] .text-red-600{color:#b02a37!important}}@media print{html .text-red-700,html[data-netbox-color-mode=dark] .text-red-700,html[data-netbox-color-mode=light] .text-red-700{color:#842029!important}}@media print{html .text-red-800,html[data-netbox-color-mode=dark] .text-red-800,html[data-netbox-color-mode=light] .text-red-800{color:#58151c!important}}@media print{html .text-red-900,html[data-netbox-color-mode=dark] .text-red-900,html[data-netbox-color-mode=light] .text-red-900{color:#2c0b0e!important}}@media print{html .text-yellow-100,html[data-netbox-color-mode=dark] .text-yellow-100,html[data-netbox-color-mode=light] .text-yellow-100{color:#fff3cd!important}}@media print{html .text-yellow-200,html[data-netbox-color-mode=dark] .text-yellow-200,html[data-netbox-color-mode=light] .text-yellow-200{color:#ffe69c!important}}@media print{html .text-yellow-300,html[data-netbox-color-mode=dark] .text-yellow-300,html[data-netbox-color-mode=light] .text-yellow-300{color:#ffda6a!important}}@media print{html .text-yellow-400,html[data-netbox-color-mode=dark] .text-yellow-400,html[data-netbox-color-mode=light] .text-yellow-400{color:#ffcd39!important}}@media print{html .text-yellow-500,html[data-netbox-color-mode=dark] .text-yellow-500,html[data-netbox-color-mode=light] .text-yellow-500{color:#ffc107!important}}@media print{html .text-yellow-600,html[data-netbox-color-mode=dark] .text-yellow-600,html[data-netbox-color-mode=light] .text-yellow-600{color:#cc9a06!important}}@media print{html .text-yellow-700,html[data-netbox-color-mode=dark] .text-yellow-700,html[data-netbox-color-mode=light] .text-yellow-700{color:#997404!important}}@media print{html .text-yellow-800,html[data-netbox-color-mode=dark] .text-yellow-800,html[data-netbox-color-mode=light] .text-yellow-800{color:#664d03!important}}@media print{html .text-yellow-900,html[data-netbox-color-mode=dark] .text-yellow-900,html[data-netbox-color-mode=light] .text-yellow-900{color:#332701!important}}@media print{html .text-green-100,html[data-netbox-color-mode=dark] .text-green-100,html[data-netbox-color-mode=light] .text-green-100{color:#d1e7dd!important}}@media print{html .text-green-200,html[data-netbox-color-mode=dark] .text-green-200,html[data-netbox-color-mode=light] .text-green-200{color:#a3cfbb!important}}@media print{html .text-green-300,html[data-netbox-color-mode=dark] .text-green-300,html[data-netbox-color-mode=light] .text-green-300{color:#75b798!important}}@media print{html .text-green-400,html[data-netbox-color-mode=dark] .text-green-400,html[data-netbox-color-mode=light] .text-green-400{color:#479f76!important}}@media print{html .text-green-500,html[data-netbox-color-mode=dark] .text-green-500,html[data-netbox-color-mode=light] .text-green-500{color:#198754!important}}@media print{html .text-green-600,html[data-netbox-color-mode=dark] .text-green-600,html[data-netbox-color-mode=light] .text-green-600{color:#146c43!important}}@media print{html .text-green-700,html[data-netbox-color-mode=dark] .text-green-700,html[data-netbox-color-mode=light] .text-green-700{color:#0f5132!important}}@media print{html .text-green-800,html[data-netbox-color-mode=dark] .text-green-800,html[data-netbox-color-mode=light] .text-green-800{color:#0a3622!important}}@media print{html .text-green-900,html[data-netbox-color-mode=dark] .text-green-900,html[data-netbox-color-mode=light] .text-green-900{color:#051b11!important}}@media print{html .text-blue-100,html[data-netbox-color-mode=dark] .text-blue-100,html[data-netbox-color-mode=light] .text-blue-100{color:#cfe2ff!important}}@media print{html .text-blue-200,html[data-netbox-color-mode=dark] .text-blue-200,html[data-netbox-color-mode=light] .text-blue-200{color:#9ec5fe!important}}@media print{html .text-blue-300,html[data-netbox-color-mode=dark] .text-blue-300,html[data-netbox-color-mode=light] .text-blue-300{color:#6ea8fe!important}}@media print{html .text-blue-400,html[data-netbox-color-mode=dark] .text-blue-400,html[data-netbox-color-mode=light] .text-blue-400{color:#3d8bfd!important}}@media print{html .text-blue-500,html[data-netbox-color-mode=dark] .text-blue-500,html[data-netbox-color-mode=light] .text-blue-500{color:#0d6efd!important}}@media print{html .text-blue-600,html[data-netbox-color-mode=dark] .text-blue-600,html[data-netbox-color-mode=light] .text-blue-600{color:#0a58ca!important}}@media print{html .text-blue-700,html[data-netbox-color-mode=dark] .text-blue-700,html[data-netbox-color-mode=light] .text-blue-700{color:#084298!important}}@media print{html .text-blue-800,html[data-netbox-color-mode=dark] .text-blue-800,html[data-netbox-color-mode=light] .text-blue-800{color:#052c65!important}}@media print{html .text-blue-900,html[data-netbox-color-mode=dark] .text-blue-900,html[data-netbox-color-mode=light] .text-blue-900{color:#031633!important}}@media print{html .text-cyan-100,html[data-netbox-color-mode=dark] .text-cyan-100,html[data-netbox-color-mode=light] .text-cyan-100{color:#cff4fc!important}}@media print{html .text-cyan-200,html[data-netbox-color-mode=dark] .text-cyan-200,html[data-netbox-color-mode=light] .text-cyan-200{color:#9eeaf9!important}}@media print{html .text-cyan-300,html[data-netbox-color-mode=dark] .text-cyan-300,html[data-netbox-color-mode=light] .text-cyan-300{color:#6edff6!important}}@media print{html .text-cyan-400,html[data-netbox-color-mode=dark] .text-cyan-400,html[data-netbox-color-mode=light] .text-cyan-400{color:#3dd5f3!important}}@media print{html .text-cyan-500,html[data-netbox-color-mode=dark] .text-cyan-500,html[data-netbox-color-mode=light] .text-cyan-500{color:#0dcaf0!important}}@media print{html .text-cyan-600,html[data-netbox-color-mode=dark] .text-cyan-600,html[data-netbox-color-mode=light] .text-cyan-600{color:#0aa2c0!important}}@media print{html .text-cyan-700,html[data-netbox-color-mode=dark] .text-cyan-700,html[data-netbox-color-mode=light] .text-cyan-700{color:#087990!important}}@media print{html .text-cyan-800,html[data-netbox-color-mode=dark] .text-cyan-800,html[data-netbox-color-mode=light] .text-cyan-800{color:#055160!important}}@media print{html .text-cyan-900,html[data-netbox-color-mode=dark] .text-cyan-900,html[data-netbox-color-mode=light] .text-cyan-900{color:#032830!important}}@media print{html .text-indigo-100,html[data-netbox-color-mode=dark] .text-indigo-100,html[data-netbox-color-mode=light] .text-indigo-100{color:#e0cffc!important}}@media print{html .text-indigo-200,html[data-netbox-color-mode=dark] .text-indigo-200,html[data-netbox-color-mode=light] .text-indigo-200{color:#c29ffa!important}}@media print{html .text-indigo-300,html[data-netbox-color-mode=dark] .text-indigo-300,html[data-netbox-color-mode=light] .text-indigo-300{color:#a370f7!important}}@media print{html .text-indigo-400,html[data-netbox-color-mode=dark] .text-indigo-400,html[data-netbox-color-mode=light] .text-indigo-400{color:#8540f5!important}}@media print{html .text-indigo-500,html[data-netbox-color-mode=dark] .text-indigo-500,html[data-netbox-color-mode=light] .text-indigo-500{color:#6610f2!important}}@media print{html .text-indigo-600,html[data-netbox-color-mode=dark] .text-indigo-600,html[data-netbox-color-mode=light] .text-indigo-600{color:#520dc2!important}}@media print{html .text-indigo-700,html[data-netbox-color-mode=dark] .text-indigo-700,html[data-netbox-color-mode=light] .text-indigo-700{color:#3d0a91!important}}@media print{html .text-indigo-800,html[data-netbox-color-mode=dark] .text-indigo-800,html[data-netbox-color-mode=light] .text-indigo-800{color:#290661!important}}@media print{html .text-indigo-900,html[data-netbox-color-mode=dark] .text-indigo-900,html[data-netbox-color-mode=light] .text-indigo-900{color:#140330!important}}@media print{html .text-purple-100,html[data-netbox-color-mode=dark] .text-purple-100,html[data-netbox-color-mode=light] .text-purple-100{color:#e2d9f3!important}}@media print{html .text-purple-200,html[data-netbox-color-mode=dark] .text-purple-200,html[data-netbox-color-mode=light] .text-purple-200{color:#c5b3e6!important}}@media print{html .text-purple-300,html[data-netbox-color-mode=dark] .text-purple-300,html[data-netbox-color-mode=light] .text-purple-300{color:#a98eda!important}}@media print{html .text-purple-400,html[data-netbox-color-mode=dark] .text-purple-400,html[data-netbox-color-mode=light] .text-purple-400{color:#8c68cd!important}}@media print{html .text-purple-500,html[data-netbox-color-mode=dark] .text-purple-500,html[data-netbox-color-mode=light] .text-purple-500{color:#6f42c1!important}}@media print{html .text-purple-600,html[data-netbox-color-mode=dark] .text-purple-600,html[data-netbox-color-mode=light] .text-purple-600{color:#59359a!important}}@media print{html .text-purple-700,html[data-netbox-color-mode=dark] .text-purple-700,html[data-netbox-color-mode=light] .text-purple-700{color:#432874!important}}@media print{html .text-purple-800,html[data-netbox-color-mode=dark] .text-purple-800,html[data-netbox-color-mode=light] .text-purple-800{color:#2c1a4d!important}}@media print{html .text-purple-900,html[data-netbox-color-mode=dark] .text-purple-900,html[data-netbox-color-mode=light] .text-purple-900{color:#160d27!important}}@media print{html .text-pink-100,html[data-netbox-color-mode=dark] .text-pink-100,html[data-netbox-color-mode=light] .text-pink-100{color:#f7d6e6!important}}@media print{html .text-pink-200,html[data-netbox-color-mode=dark] .text-pink-200,html[data-netbox-color-mode=light] .text-pink-200{color:#efadce!important}}@media print{html .text-pink-300,html[data-netbox-color-mode=dark] .text-pink-300,html[data-netbox-color-mode=light] .text-pink-300{color:#e685b5!important}}@media print{html .text-pink-400,html[data-netbox-color-mode=dark] .text-pink-400,html[data-netbox-color-mode=light] .text-pink-400{color:#de5c9d!important}}@media print{html .text-pink-500,html[data-netbox-color-mode=dark] .text-pink-500,html[data-netbox-color-mode=light] .text-pink-500{color:#d63384!important}}@media print{html .text-pink-600,html[data-netbox-color-mode=dark] .text-pink-600,html[data-netbox-color-mode=light] .text-pink-600{color:#ab296a!important}}@media print{html .text-pink-700,html[data-netbox-color-mode=dark] .text-pink-700,html[data-netbox-color-mode=light] .text-pink-700{color:#801f4f!important}}@media print{html .text-pink-800,html[data-netbox-color-mode=dark] .text-pink-800,html[data-netbox-color-mode=light] .text-pink-800{color:#561435!important}}@media print{html .text-pink-900,html[data-netbox-color-mode=dark] .text-pink-900,html[data-netbox-color-mode=light] .text-pink-900{color:#2b0a1a!important}}@media print{html .text-white,html[data-netbox-color-mode=dark] .text-white,html[data-netbox-color-mode=light] .text-white{color:#fff!important}}@media print{html .text-body,html[data-netbox-color-mode=dark] .text-body,html[data-netbox-color-mode=light] .text-body{color:#212529!important}}@media print{html .text-muted,html[data-netbox-color-mode=dark] .text-muted,html[data-netbox-color-mode=light] .text-muted{color:#6c757d!important}}@media print{html .text-black-50,html[data-netbox-color-mode=dark] .text-black-50,html[data-netbox-color-mode=light] .text-black-50{color:#00000080!important}}@media print{html .text-white-50,html[data-netbox-color-mode=dark] .text-white-50,html[data-netbox-color-mode=light] .text-white-50{color:#ffffff80!important}}@media print{html .text-reset,html[data-netbox-color-mode=dark] .text-reset,html[data-netbox-color-mode=light] .text-reset{color:inherit!important}}@media print{html .bg-primary,html[data-netbox-color-mode=dark] .bg-primary,html[data-netbox-color-mode=light] .bg-primary{background-color:#337ab7!important}}@media print{html .bg-secondary,html[data-netbox-color-mode=dark] .bg-secondary,html[data-netbox-color-mode=light] .bg-secondary{background-color:#6c757d!important}}@media print{html .bg-success,html[data-netbox-color-mode=dark] .bg-success,html[data-netbox-color-mode=light] .bg-success{background-color:#198754!important}}@media print{html .bg-info,html[data-netbox-color-mode=dark] .bg-info,html[data-netbox-color-mode=light] .bg-info{background-color:#0dcaf0!important}}@media print{html .bg-warning,html[data-netbox-color-mode=dark] .bg-warning,html[data-netbox-color-mode=light] .bg-warning{background-color:#ffc107!important}}@media print{html .bg-danger,html[data-netbox-color-mode=dark] .bg-danger,html[data-netbox-color-mode=light] .bg-danger{background-color:#dc3545!important}}@media print{html .bg-light,html[data-netbox-color-mode=dark] .bg-light,html[data-netbox-color-mode=light] .bg-light{background-color:#f8f9fa!important}}@media print{html .bg-dark,html[data-netbox-color-mode=dark] .bg-dark,html[data-netbox-color-mode=light] .bg-dark{background-color:#212529!important}}@media print{html .bg-red,html[data-netbox-color-mode=dark] .bg-red,html[data-netbox-color-mode=light] .bg-red{background-color:#dc3545!important}}@media print{html .bg-yellow,html[data-netbox-color-mode=dark] .bg-yellow,html[data-netbox-color-mode=light] .bg-yellow{background-color:#ffc107!important}}@media print{html .bg-green,html[data-netbox-color-mode=dark] .bg-green,html[data-netbox-color-mode=light] .bg-green{background-color:#198754!important}}@media print{html .bg-blue,html[data-netbox-color-mode=dark] .bg-blue,html[data-netbox-color-mode=light] .bg-blue{background-color:#0d6efd!important}}@media print{html .bg-cyan,html[data-netbox-color-mode=dark] .bg-cyan,html[data-netbox-color-mode=light] .bg-cyan{background-color:#0dcaf0!important}}@media print{html .bg-indigo,html[data-netbox-color-mode=dark] .bg-indigo,html[data-netbox-color-mode=light] .bg-indigo{background-color:#6610f2!important}}@media print{html .bg-purple,html[data-netbox-color-mode=dark] .bg-purple,html[data-netbox-color-mode=light] .bg-purple{background-color:#6f42c1!important}}@media print{html .bg-pink,html[data-netbox-color-mode=dark] .bg-pink,html[data-netbox-color-mode=light] .bg-pink{background-color:#d63384!important}}@media print{html .bg-darker,html[data-netbox-color-mode=dark] .bg-darker,html[data-netbox-color-mode=light] .bg-darker{background-color:#1b1f22!important}}@media print{html .bg-darkest,html[data-netbox-color-mode=dark] .bg-darkest,html[data-netbox-color-mode=light] .bg-darkest{background-color:#171b1d!important}}@media print{html .bg-gray,html[data-netbox-color-mode=dark] .bg-gray,html[data-netbox-color-mode=light] .bg-gray{background-color:#ced4da!important}}@media print{html .bg-gray-100,html[data-netbox-color-mode=dark] .bg-gray-100,html[data-netbox-color-mode=light] .bg-gray-100{background-color:#f8f9fa!important}}@media print{html .bg-gray-200,html[data-netbox-color-mode=dark] .bg-gray-200,html[data-netbox-color-mode=light] .bg-gray-200{background-color:#e9ecef!important}}@media print{html .bg-gray-300,html[data-netbox-color-mode=dark] .bg-gray-300,html[data-netbox-color-mode=light] .bg-gray-300{background-color:#dee2e6!important}}@media print{html .bg-gray-400,html[data-netbox-color-mode=dark] .bg-gray-400,html[data-netbox-color-mode=light] .bg-gray-400{background-color:#ced4da!important}}@media print{html .bg-gray-500,html[data-netbox-color-mode=dark] .bg-gray-500,html[data-netbox-color-mode=light] .bg-gray-500{background-color:#adb5bd!important}}@media print{html .bg-gray-600,html[data-netbox-color-mode=dark] .bg-gray-600,html[data-netbox-color-mode=light] .bg-gray-600{background-color:#6c757d!important}}@media print{html .bg-gray-700,html[data-netbox-color-mode=dark] .bg-gray-700,html[data-netbox-color-mode=light] .bg-gray-700{background-color:#495057!important}}@media print{html .bg-gray-800,html[data-netbox-color-mode=dark] .bg-gray-800,html[data-netbox-color-mode=light] .bg-gray-800{background-color:#343a40!important}}@media print{html .bg-gray-900,html[data-netbox-color-mode=dark] .bg-gray-900,html[data-netbox-color-mode=light] .bg-gray-900{background-color:#212529!important}}@media print{html .bg-red-100,html[data-netbox-color-mode=dark] .bg-red-100,html[data-netbox-color-mode=light] .bg-red-100{background-color:#f8d7da!important}}@media print{html .bg-red-200,html[data-netbox-color-mode=dark] .bg-red-200,html[data-netbox-color-mode=light] .bg-red-200{background-color:#f1aeb5!important}}@media print{html .bg-red-300,html[data-netbox-color-mode=dark] .bg-red-300,html[data-netbox-color-mode=light] .bg-red-300{background-color:#ea868f!important}}@media print{html .bg-red-400,html[data-netbox-color-mode=dark] .bg-red-400,html[data-netbox-color-mode=light] .bg-red-400{background-color:#e35d6a!important}}@media print{html .bg-red-500,html[data-netbox-color-mode=dark] .bg-red-500,html[data-netbox-color-mode=light] .bg-red-500{background-color:#dc3545!important}}@media print{html .bg-red-600,html[data-netbox-color-mode=dark] .bg-red-600,html[data-netbox-color-mode=light] .bg-red-600{background-color:#b02a37!important}}@media print{html .bg-red-700,html[data-netbox-color-mode=dark] .bg-red-700,html[data-netbox-color-mode=light] .bg-red-700{background-color:#842029!important}}@media print{html .bg-red-800,html[data-netbox-color-mode=dark] .bg-red-800,html[data-netbox-color-mode=light] .bg-red-800{background-color:#58151c!important}}@media print{html .bg-red-900,html[data-netbox-color-mode=dark] .bg-red-900,html[data-netbox-color-mode=light] .bg-red-900{background-color:#2c0b0e!important}}@media print{html .bg-yellow-100,html[data-netbox-color-mode=dark] .bg-yellow-100,html[data-netbox-color-mode=light] .bg-yellow-100{background-color:#fff3cd!important}}@media print{html .bg-yellow-200,html[data-netbox-color-mode=dark] .bg-yellow-200,html[data-netbox-color-mode=light] .bg-yellow-200{background-color:#ffe69c!important}}@media print{html .bg-yellow-300,html[data-netbox-color-mode=dark] .bg-yellow-300,html[data-netbox-color-mode=light] .bg-yellow-300{background-color:#ffda6a!important}}@media print{html .bg-yellow-400,html[data-netbox-color-mode=dark] .bg-yellow-400,html[data-netbox-color-mode=light] .bg-yellow-400{background-color:#ffcd39!important}}@media print{html .bg-yellow-500,html[data-netbox-color-mode=dark] .bg-yellow-500,html[data-netbox-color-mode=light] .bg-yellow-500{background-color:#ffc107!important}}@media print{html .bg-yellow-600,html[data-netbox-color-mode=dark] .bg-yellow-600,html[data-netbox-color-mode=light] .bg-yellow-600{background-color:#cc9a06!important}}@media print{html .bg-yellow-700,html[data-netbox-color-mode=dark] .bg-yellow-700,html[data-netbox-color-mode=light] .bg-yellow-700{background-color:#997404!important}}@media print{html .bg-yellow-800,html[data-netbox-color-mode=dark] .bg-yellow-800,html[data-netbox-color-mode=light] .bg-yellow-800{background-color:#664d03!important}}@media print{html .bg-yellow-900,html[data-netbox-color-mode=dark] .bg-yellow-900,html[data-netbox-color-mode=light] .bg-yellow-900{background-color:#332701!important}}@media print{html .bg-green-100,html[data-netbox-color-mode=dark] .bg-green-100,html[data-netbox-color-mode=light] .bg-green-100{background-color:#d1e7dd!important}}@media print{html .bg-green-200,html[data-netbox-color-mode=dark] .bg-green-200,html[data-netbox-color-mode=light] .bg-green-200{background-color:#a3cfbb!important}}@media print{html .bg-green-300,html[data-netbox-color-mode=dark] .bg-green-300,html[data-netbox-color-mode=light] .bg-green-300{background-color:#75b798!important}}@media print{html .bg-green-400,html[data-netbox-color-mode=dark] .bg-green-400,html[data-netbox-color-mode=light] .bg-green-400{background-color:#479f76!important}}@media print{html .bg-green-500,html[data-netbox-color-mode=dark] .bg-green-500,html[data-netbox-color-mode=light] .bg-green-500{background-color:#198754!important}}@media print{html .bg-green-600,html[data-netbox-color-mode=dark] .bg-green-600,html[data-netbox-color-mode=light] .bg-green-600{background-color:#146c43!important}}@media print{html .bg-green-700,html[data-netbox-color-mode=dark] .bg-green-700,html[data-netbox-color-mode=light] .bg-green-700{background-color:#0f5132!important}}@media print{html .bg-green-800,html[data-netbox-color-mode=dark] .bg-green-800,html[data-netbox-color-mode=light] .bg-green-800{background-color:#0a3622!important}}@media print{html .bg-green-900,html[data-netbox-color-mode=dark] .bg-green-900,html[data-netbox-color-mode=light] .bg-green-900{background-color:#051b11!important}}@media print{html .bg-blue-100,html[data-netbox-color-mode=dark] .bg-blue-100,html[data-netbox-color-mode=light] .bg-blue-100{background-color:#cfe2ff!important}}@media print{html .bg-blue-200,html[data-netbox-color-mode=dark] .bg-blue-200,html[data-netbox-color-mode=light] .bg-blue-200{background-color:#9ec5fe!important}}@media print{html .bg-blue-300,html[data-netbox-color-mode=dark] .bg-blue-300,html[data-netbox-color-mode=light] .bg-blue-300{background-color:#6ea8fe!important}}@media print{html .bg-blue-400,html[data-netbox-color-mode=dark] .bg-blue-400,html[data-netbox-color-mode=light] .bg-blue-400{background-color:#3d8bfd!important}}@media print{html .bg-blue-500,html[data-netbox-color-mode=dark] .bg-blue-500,html[data-netbox-color-mode=light] .bg-blue-500{background-color:#0d6efd!important}}@media print{html .bg-blue-600,html[data-netbox-color-mode=dark] .bg-blue-600,html[data-netbox-color-mode=light] .bg-blue-600{background-color:#0a58ca!important}}@media print{html .bg-blue-700,html[data-netbox-color-mode=dark] .bg-blue-700,html[data-netbox-color-mode=light] .bg-blue-700{background-color:#084298!important}}@media print{html .bg-blue-800,html[data-netbox-color-mode=dark] .bg-blue-800,html[data-netbox-color-mode=light] .bg-blue-800{background-color:#052c65!important}}@media print{html .bg-blue-900,html[data-netbox-color-mode=dark] .bg-blue-900,html[data-netbox-color-mode=light] .bg-blue-900{background-color:#031633!important}}@media print{html .bg-cyan-100,html[data-netbox-color-mode=dark] .bg-cyan-100,html[data-netbox-color-mode=light] .bg-cyan-100{background-color:#cff4fc!important}}@media print{html .bg-cyan-200,html[data-netbox-color-mode=dark] .bg-cyan-200,html[data-netbox-color-mode=light] .bg-cyan-200{background-color:#9eeaf9!important}}@media print{html .bg-cyan-300,html[data-netbox-color-mode=dark] .bg-cyan-300,html[data-netbox-color-mode=light] .bg-cyan-300{background-color:#6edff6!important}}@media print{html .bg-cyan-400,html[data-netbox-color-mode=dark] .bg-cyan-400,html[data-netbox-color-mode=light] .bg-cyan-400{background-color:#3dd5f3!important}}@media print{html .bg-cyan-500,html[data-netbox-color-mode=dark] .bg-cyan-500,html[data-netbox-color-mode=light] .bg-cyan-500{background-color:#0dcaf0!important}}@media print{html .bg-cyan-600,html[data-netbox-color-mode=dark] .bg-cyan-600,html[data-netbox-color-mode=light] .bg-cyan-600{background-color:#0aa2c0!important}}@media print{html .bg-cyan-700,html[data-netbox-color-mode=dark] .bg-cyan-700,html[data-netbox-color-mode=light] .bg-cyan-700{background-color:#087990!important}}@media print{html .bg-cyan-800,html[data-netbox-color-mode=dark] .bg-cyan-800,html[data-netbox-color-mode=light] .bg-cyan-800{background-color:#055160!important}}@media print{html .bg-cyan-900,html[data-netbox-color-mode=dark] .bg-cyan-900,html[data-netbox-color-mode=light] .bg-cyan-900{background-color:#032830!important}}@media print{html .bg-indigo-100,html[data-netbox-color-mode=dark] .bg-indigo-100,html[data-netbox-color-mode=light] .bg-indigo-100{background-color:#e0cffc!important}}@media print{html .bg-indigo-200,html[data-netbox-color-mode=dark] .bg-indigo-200,html[data-netbox-color-mode=light] .bg-indigo-200{background-color:#c29ffa!important}}@media print{html .bg-indigo-300,html[data-netbox-color-mode=dark] .bg-indigo-300,html[data-netbox-color-mode=light] .bg-indigo-300{background-color:#a370f7!important}}@media print{html .bg-indigo-400,html[data-netbox-color-mode=dark] .bg-indigo-400,html[data-netbox-color-mode=light] .bg-indigo-400{background-color:#8540f5!important}}@media print{html .bg-indigo-500,html[data-netbox-color-mode=dark] .bg-indigo-500,html[data-netbox-color-mode=light] .bg-indigo-500{background-color:#6610f2!important}}@media print{html .bg-indigo-600,html[data-netbox-color-mode=dark] .bg-indigo-600,html[data-netbox-color-mode=light] .bg-indigo-600{background-color:#520dc2!important}}@media print{html .bg-indigo-700,html[data-netbox-color-mode=dark] .bg-indigo-700,html[data-netbox-color-mode=light] .bg-indigo-700{background-color:#3d0a91!important}}@media print{html .bg-indigo-800,html[data-netbox-color-mode=dark] .bg-indigo-800,html[data-netbox-color-mode=light] .bg-indigo-800{background-color:#290661!important}}@media print{html .bg-indigo-900,html[data-netbox-color-mode=dark] .bg-indigo-900,html[data-netbox-color-mode=light] .bg-indigo-900{background-color:#140330!important}}@media print{html .bg-purple-100,html[data-netbox-color-mode=dark] .bg-purple-100,html[data-netbox-color-mode=light] .bg-purple-100{background-color:#e2d9f3!important}}@media print{html .bg-purple-200,html[data-netbox-color-mode=dark] .bg-purple-200,html[data-netbox-color-mode=light] .bg-purple-200{background-color:#c5b3e6!important}}@media print{html .bg-purple-300,html[data-netbox-color-mode=dark] .bg-purple-300,html[data-netbox-color-mode=light] .bg-purple-300{background-color:#a98eda!important}}@media print{html .bg-purple-400,html[data-netbox-color-mode=dark] .bg-purple-400,html[data-netbox-color-mode=light] .bg-purple-400{background-color:#8c68cd!important}}@media print{html .bg-purple-500,html[data-netbox-color-mode=dark] .bg-purple-500,html[data-netbox-color-mode=light] .bg-purple-500{background-color:#6f42c1!important}}@media print{html .bg-purple-600,html[data-netbox-color-mode=dark] .bg-purple-600,html[data-netbox-color-mode=light] .bg-purple-600{background-color:#59359a!important}}@media print{html .bg-purple-700,html[data-netbox-color-mode=dark] .bg-purple-700,html[data-netbox-color-mode=light] .bg-purple-700{background-color:#432874!important}}@media print{html .bg-purple-800,html[data-netbox-color-mode=dark] .bg-purple-800,html[data-netbox-color-mode=light] .bg-purple-800{background-color:#2c1a4d!important}}@media print{html .bg-purple-900,html[data-netbox-color-mode=dark] .bg-purple-900,html[data-netbox-color-mode=light] .bg-purple-900{background-color:#160d27!important}}@media print{html .bg-pink-100,html[data-netbox-color-mode=dark] .bg-pink-100,html[data-netbox-color-mode=light] .bg-pink-100{background-color:#f7d6e6!important}}@media print{html .bg-pink-200,html[data-netbox-color-mode=dark] .bg-pink-200,html[data-netbox-color-mode=light] .bg-pink-200{background-color:#efadce!important}}@media print{html .bg-pink-300,html[data-netbox-color-mode=dark] .bg-pink-300,html[data-netbox-color-mode=light] .bg-pink-300{background-color:#e685b5!important}}@media print{html .bg-pink-400,html[data-netbox-color-mode=dark] .bg-pink-400,html[data-netbox-color-mode=light] .bg-pink-400{background-color:#de5c9d!important}}@media print{html .bg-pink-500,html[data-netbox-color-mode=dark] .bg-pink-500,html[data-netbox-color-mode=light] .bg-pink-500{background-color:#d63384!important}}@media print{html .bg-pink-600,html[data-netbox-color-mode=dark] .bg-pink-600,html[data-netbox-color-mode=light] .bg-pink-600{background-color:#ab296a!important}}@media print{html .bg-pink-700,html[data-netbox-color-mode=dark] .bg-pink-700,html[data-netbox-color-mode=light] .bg-pink-700{background-color:#801f4f!important}}@media print{html .bg-pink-800,html[data-netbox-color-mode=dark] .bg-pink-800,html[data-netbox-color-mode=light] .bg-pink-800{background-color:#561435!important}}@media print{html .bg-pink-900,html[data-netbox-color-mode=dark] .bg-pink-900,html[data-netbox-color-mode=light] .bg-pink-900{background-color:#2b0a1a!important}}@media print{html .bg-body,html[data-netbox-color-mode=dark] .bg-body,html[data-netbox-color-mode=light] .bg-body{background-color:#fff!important}}@media print{html .bg-white,html[data-netbox-color-mode=dark] .bg-white,html[data-netbox-color-mode=light] .bg-white{background-color:#fff!important}}@media print{html .bg-transparent,html[data-netbox-color-mode=dark] .bg-transparent,html[data-netbox-color-mode=light] .bg-transparent{background-color:transparent!important}}@media print{html .bg-gradient,html[data-netbox-color-mode=dark] .bg-gradient,html[data-netbox-color-mode=light] .bg-gradient{background-image:var(--bs-gradient)!important}}@media print{html .user-select-all,html[data-netbox-color-mode=dark] .user-select-all,html[data-netbox-color-mode=light] .user-select-all{user-select:all!important}}@media print{html .user-select-auto,html[data-netbox-color-mode=dark] .user-select-auto,html[data-netbox-color-mode=light] .user-select-auto{user-select:auto!important}}@media print{html .user-select-none,html[data-netbox-color-mode=dark] .user-select-none,html[data-netbox-color-mode=light] .user-select-none{user-select:none!important}}@media print{html .pe-none,html[data-netbox-color-mode=dark] .pe-none,html[data-netbox-color-mode=light] .pe-none{pointer-events:none!important}}@media print{html .pe-auto,html[data-netbox-color-mode=dark] .pe-auto,html[data-netbox-color-mode=light] .pe-auto{pointer-events:auto!important}}@media print{html .rounded,html[data-netbox-color-mode=dark] .rounded,html[data-netbox-color-mode=light] .rounded{border-radius:.375rem!important}}@media print{html .rounded-0,html[data-netbox-color-mode=dark] .rounded-0,html[data-netbox-color-mode=light] .rounded-0{border-radius:0!important}}@media print{html .rounded-1,html[data-netbox-color-mode=dark] .rounded-1,html[data-netbox-color-mode=light] .rounded-1{border-radius:.375rem!important}}@media print{html .rounded-2,html[data-netbox-color-mode=dark] .rounded-2,html[data-netbox-color-mode=light] .rounded-2{border-radius:.375rem!important}}@media print{html .rounded-3,html[data-netbox-color-mode=dark] .rounded-3,html[data-netbox-color-mode=light] .rounded-3{border-radius:.75rem!important}}@media print{html .rounded-circle,html[data-netbox-color-mode=dark] .rounded-circle,html[data-netbox-color-mode=light] .rounded-circle{border-radius:50%!important}}@media print{html .rounded-pill,html[data-netbox-color-mode=dark] .rounded-pill,html[data-netbox-color-mode=light] .rounded-pill{border-radius:50rem!important}}@media print{html .rounded-top,html[data-netbox-color-mode=dark] .rounded-top,html[data-netbox-color-mode=light] .rounded-top{border-top-left-radius:.375rem!important;border-top-right-radius:.375rem!important}}@media print{html .rounded-end,html[data-netbox-color-mode=dark] .rounded-end,html[data-netbox-color-mode=light] .rounded-end{border-top-right-radius:.375rem!important;border-bottom-right-radius:.375rem!important}}@media print{html .rounded-bottom,html[data-netbox-color-mode=dark] .rounded-bottom,html[data-netbox-color-mode=light] .rounded-bottom{border-bottom-right-radius:.375rem!important;border-bottom-left-radius:.375rem!important}}@media print{html .rounded-start,html[data-netbox-color-mode=dark] .rounded-start,html[data-netbox-color-mode=light] .rounded-start{border-bottom-left-radius:.375rem!important;border-top-left-radius:.375rem!important}}@media print{html .visible,html[data-netbox-color-mode=dark] .visible,html[data-netbox-color-mode=light] .visible{visibility:visible!important}}@media print{html .invisible,html[data-netbox-color-mode=dark] .invisible,html[data-netbox-color-mode=light] .invisible{visibility:hidden!important}}@media print and (min-width: 576px){html .float-sm-start,html[data-netbox-color-mode=dark] .float-sm-start,html[data-netbox-color-mode=light] .float-sm-start{float:left!important}html .float-sm-end,html[data-netbox-color-mode=dark] .float-sm-end,html[data-netbox-color-mode=light] .float-sm-end{float:right!important}html .float-sm-none,html[data-netbox-color-mode=dark] .float-sm-none,html[data-netbox-color-mode=light] .float-sm-none{float:none!important}html .d-sm-inline,html[data-netbox-color-mode=dark] .d-sm-inline,html[data-netbox-color-mode=light] .d-sm-inline{display:inline!important}html .d-sm-inline-block,html[data-netbox-color-mode=dark] .d-sm-inline-block,html[data-netbox-color-mode=light] .d-sm-inline-block{display:inline-block!important}html .d-sm-block,html[data-netbox-color-mode=dark] .d-sm-block,html[data-netbox-color-mode=light] .d-sm-block{display:block!important}html .d-sm-grid,html[data-netbox-color-mode=dark] .d-sm-grid,html[data-netbox-color-mode=light] .d-sm-grid{display:grid!important}html .d-sm-table,html[data-netbox-color-mode=dark] .d-sm-table,html[data-netbox-color-mode=light] .d-sm-table{display:table!important}html .d-sm-table-row,html[data-netbox-color-mode=dark] .d-sm-table-row,html[data-netbox-color-mode=light] .d-sm-table-row{display:table-row!important}html .d-sm-table-cell,html[data-netbox-color-mode=dark] .d-sm-table-cell,html[data-netbox-color-mode=light] .d-sm-table-cell{display:table-cell!important}html .d-sm-flex,html[data-netbox-color-mode=dark] .d-sm-flex,html[data-netbox-color-mode=light] .d-sm-flex{display:flex!important}html .d-sm-inline-flex,html[data-netbox-color-mode=dark] .d-sm-inline-flex,html[data-netbox-color-mode=light] .d-sm-inline-flex{display:inline-flex!important}html .d-sm-none,html[data-netbox-color-mode=dark] .d-sm-none,html[data-netbox-color-mode=light] .d-sm-none{display:none!important}html .flex-sm-fill,html[data-netbox-color-mode=dark] .flex-sm-fill,html[data-netbox-color-mode=light] .flex-sm-fill{flex:1 1 auto!important}html .flex-sm-row,html[data-netbox-color-mode=dark] .flex-sm-row,html[data-netbox-color-mode=light] .flex-sm-row{flex-direction:row!important}html .flex-sm-column,html[data-netbox-color-mode=dark] .flex-sm-column,html[data-netbox-color-mode=light] .flex-sm-column{flex-direction:column!important}html .flex-sm-row-reverse,html[data-netbox-color-mode=dark] .flex-sm-row-reverse,html[data-netbox-color-mode=light] .flex-sm-row-reverse{flex-direction:row-reverse!important}html .flex-sm-column-reverse,html[data-netbox-color-mode=dark] .flex-sm-column-reverse,html[data-netbox-color-mode=light] .flex-sm-column-reverse{flex-direction:column-reverse!important}html .flex-sm-grow-0,html[data-netbox-color-mode=dark] .flex-sm-grow-0,html[data-netbox-color-mode=light] .flex-sm-grow-0{flex-grow:0!important}html .flex-sm-grow-1,html[data-netbox-color-mode=dark] .flex-sm-grow-1,html[data-netbox-color-mode=light] .flex-sm-grow-1{flex-grow:1!important}html .flex-sm-shrink-0,html[data-netbox-color-mode=dark] .flex-sm-shrink-0,html[data-netbox-color-mode=light] .flex-sm-shrink-0{flex-shrink:0!important}html .flex-sm-shrink-1,html[data-netbox-color-mode=dark] .flex-sm-shrink-1,html[data-netbox-color-mode=light] .flex-sm-shrink-1{flex-shrink:1!important}html .flex-sm-wrap,html[data-netbox-color-mode=dark] .flex-sm-wrap,html[data-netbox-color-mode=light] .flex-sm-wrap{flex-wrap:wrap!important}html .flex-sm-nowrap,html[data-netbox-color-mode=dark] .flex-sm-nowrap,html[data-netbox-color-mode=light] .flex-sm-nowrap{flex-wrap:nowrap!important}html .flex-sm-wrap-reverse,html[data-netbox-color-mode=dark] .flex-sm-wrap-reverse,html[data-netbox-color-mode=light] .flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}html .gap-sm-0,html[data-netbox-color-mode=dark] .gap-sm-0,html[data-netbox-color-mode=light] .gap-sm-0{gap:0!important}html .gap-sm-1,html[data-netbox-color-mode=dark] .gap-sm-1,html[data-netbox-color-mode=light] .gap-sm-1{gap:.25rem!important}html .gap-sm-2,html[data-netbox-color-mode=dark] .gap-sm-2,html[data-netbox-color-mode=light] .gap-sm-2{gap:.5rem!important}html .gap-sm-3,html[data-netbox-color-mode=dark] .gap-sm-3,html[data-netbox-color-mode=light] .gap-sm-3{gap:1rem!important}html .gap-sm-4,html[data-netbox-color-mode=dark] .gap-sm-4,html[data-netbox-color-mode=light] .gap-sm-4{gap:1.5rem!important}html .gap-sm-5,html[data-netbox-color-mode=dark] .gap-sm-5,html[data-netbox-color-mode=light] .gap-sm-5{gap:3rem!important}html .justify-content-sm-start,html[data-netbox-color-mode=dark] .justify-content-sm-start,html[data-netbox-color-mode=light] .justify-content-sm-start{justify-content:flex-start!important}html .justify-content-sm-end,html[data-netbox-color-mode=dark] .justify-content-sm-end,html[data-netbox-color-mode=light] .justify-content-sm-end{justify-content:flex-end!important}html .justify-content-sm-center,html[data-netbox-color-mode=dark] .justify-content-sm-center,html[data-netbox-color-mode=light] .justify-content-sm-center{justify-content:center!important}html .justify-content-sm-between,html[data-netbox-color-mode=dark] .justify-content-sm-between,html[data-netbox-color-mode=light] .justify-content-sm-between{justify-content:space-between!important}html .justify-content-sm-around,html[data-netbox-color-mode=dark] .justify-content-sm-around,html[data-netbox-color-mode=light] .justify-content-sm-around{justify-content:space-around!important}html .justify-content-sm-evenly,html[data-netbox-color-mode=dark] .justify-content-sm-evenly,html[data-netbox-color-mode=light] .justify-content-sm-evenly{justify-content:space-evenly!important}html .align-items-sm-start,html[data-netbox-color-mode=dark] .align-items-sm-start,html[data-netbox-color-mode=light] .align-items-sm-start{align-items:flex-start!important}html .align-items-sm-end,html[data-netbox-color-mode=dark] .align-items-sm-end,html[data-netbox-color-mode=light] .align-items-sm-end{align-items:flex-end!important}html .align-items-sm-center,html[data-netbox-color-mode=dark] .align-items-sm-center,html[data-netbox-color-mode=light] .align-items-sm-center{align-items:center!important}html .align-items-sm-baseline,html[data-netbox-color-mode=dark] .align-items-sm-baseline,html[data-netbox-color-mode=light] .align-items-sm-baseline{align-items:baseline!important}html .align-items-sm-stretch,html[data-netbox-color-mode=dark] .align-items-sm-stretch,html[data-netbox-color-mode=light] .align-items-sm-stretch{align-items:stretch!important}html .align-content-sm-start,html[data-netbox-color-mode=dark] .align-content-sm-start,html[data-netbox-color-mode=light] .align-content-sm-start{align-content:flex-start!important}html .align-content-sm-end,html[data-netbox-color-mode=dark] .align-content-sm-end,html[data-netbox-color-mode=light] .align-content-sm-end{align-content:flex-end!important}html .align-content-sm-center,html[data-netbox-color-mode=dark] .align-content-sm-center,html[data-netbox-color-mode=light] .align-content-sm-center{align-content:center!important}html .align-content-sm-between,html[data-netbox-color-mode=dark] .align-content-sm-between,html[data-netbox-color-mode=light] .align-content-sm-between{align-content:space-between!important}html .align-content-sm-around,html[data-netbox-color-mode=dark] .align-content-sm-around,html[data-netbox-color-mode=light] .align-content-sm-around{align-content:space-around!important}html .align-content-sm-stretch,html[data-netbox-color-mode=dark] .align-content-sm-stretch,html[data-netbox-color-mode=light] .align-content-sm-stretch{align-content:stretch!important}html .align-self-sm-auto,html[data-netbox-color-mode=dark] .align-self-sm-auto,html[data-netbox-color-mode=light] .align-self-sm-auto{align-self:auto!important}html .align-self-sm-start,html[data-netbox-color-mode=dark] .align-self-sm-start,html[data-netbox-color-mode=light] .align-self-sm-start{align-self:flex-start!important}html .align-self-sm-end,html[data-netbox-color-mode=dark] .align-self-sm-end,html[data-netbox-color-mode=light] .align-self-sm-end{align-self:flex-end!important}html .align-self-sm-center,html[data-netbox-color-mode=dark] .align-self-sm-center,html[data-netbox-color-mode=light] .align-self-sm-center{align-self:center!important}html .align-self-sm-baseline,html[data-netbox-color-mode=dark] .align-self-sm-baseline,html[data-netbox-color-mode=light] .align-self-sm-baseline{align-self:baseline!important}html .align-self-sm-stretch,html[data-netbox-color-mode=dark] .align-self-sm-stretch,html[data-netbox-color-mode=light] .align-self-sm-stretch{align-self:stretch!important}html .order-sm-first,html[data-netbox-color-mode=dark] .order-sm-first,html[data-netbox-color-mode=light] .order-sm-first{order:-1!important}html .order-sm-0,html[data-netbox-color-mode=dark] .order-sm-0,html[data-netbox-color-mode=light] .order-sm-0{order:0!important}html .order-sm-1,html[data-netbox-color-mode=dark] .order-sm-1,html[data-netbox-color-mode=light] .order-sm-1{order:1!important}html .order-sm-2,html[data-netbox-color-mode=dark] .order-sm-2,html[data-netbox-color-mode=light] .order-sm-2{order:2!important}html .order-sm-3,html[data-netbox-color-mode=dark] .order-sm-3,html[data-netbox-color-mode=light] .order-sm-3{order:3!important}html .order-sm-4,html[data-netbox-color-mode=dark] .order-sm-4,html[data-netbox-color-mode=light] .order-sm-4{order:4!important}html .order-sm-5,html[data-netbox-color-mode=dark] .order-sm-5,html[data-netbox-color-mode=light] .order-sm-5{order:5!important}html .order-sm-last,html[data-netbox-color-mode=dark] .order-sm-last,html[data-netbox-color-mode=light] .order-sm-last{order:6!important}html .m-sm-0,html[data-netbox-color-mode=dark] .m-sm-0,html[data-netbox-color-mode=light] .m-sm-0{margin:0!important}html .m-sm-1,html[data-netbox-color-mode=dark] .m-sm-1,html[data-netbox-color-mode=light] .m-sm-1{margin:.25rem!important}html .m-sm-2,html[data-netbox-color-mode=dark] .m-sm-2,html[data-netbox-color-mode=light] .m-sm-2{margin:.5rem!important}html .m-sm-3,html[data-netbox-color-mode=dark] .m-sm-3,html[data-netbox-color-mode=light] .m-sm-3{margin:1rem!important}html .m-sm-4,html[data-netbox-color-mode=dark] .m-sm-4,html[data-netbox-color-mode=light] .m-sm-4{margin:1.5rem!important}html .m-sm-5,html[data-netbox-color-mode=dark] .m-sm-5,html[data-netbox-color-mode=light] .m-sm-5{margin:3rem!important}html .m-sm-auto,html[data-netbox-color-mode=dark] .m-sm-auto,html[data-netbox-color-mode=light] .m-sm-auto{margin:auto!important}html .mx-sm-0,html[data-netbox-color-mode=dark] .mx-sm-0,html[data-netbox-color-mode=light] .mx-sm-0{margin-right:0!important;margin-left:0!important}html .mx-sm-1,html[data-netbox-color-mode=dark] .mx-sm-1,html[data-netbox-color-mode=light] .mx-sm-1{margin-right:.25rem!important;margin-left:.25rem!important}html .mx-sm-2,html[data-netbox-color-mode=dark] .mx-sm-2,html[data-netbox-color-mode=light] .mx-sm-2{margin-right:.5rem!important;margin-left:.5rem!important}html .mx-sm-3,html[data-netbox-color-mode=dark] .mx-sm-3,html[data-netbox-color-mode=light] .mx-sm-3{margin-right:1rem!important;margin-left:1rem!important}html .mx-sm-4,html[data-netbox-color-mode=dark] .mx-sm-4,html[data-netbox-color-mode=light] .mx-sm-4{margin-right:1.5rem!important;margin-left:1.5rem!important}html .mx-sm-5,html[data-netbox-color-mode=dark] .mx-sm-5,html[data-netbox-color-mode=light] .mx-sm-5{margin-right:3rem!important;margin-left:3rem!important}html .mx-sm-auto,html[data-netbox-color-mode=dark] .mx-sm-auto,html[data-netbox-color-mode=light] .mx-sm-auto{margin-right:auto!important;margin-left:auto!important}html .my-sm-0,html[data-netbox-color-mode=dark] .my-sm-0,html[data-netbox-color-mode=light] .my-sm-0{margin-top:0!important;margin-bottom:0!important}html .my-sm-1,html[data-netbox-color-mode=dark] .my-sm-1,html[data-netbox-color-mode=light] .my-sm-1{margin-top:.25rem!important;margin-bottom:.25rem!important}html .my-sm-2,html[data-netbox-color-mode=dark] .my-sm-2,html[data-netbox-color-mode=light] .my-sm-2{margin-top:.5rem!important;margin-bottom:.5rem!important}html .my-sm-3,html[data-netbox-color-mode=dark] .my-sm-3,html[data-netbox-color-mode=light] .my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important}html .my-sm-4,html[data-netbox-color-mode=dark] .my-sm-4,html[data-netbox-color-mode=light] .my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}html .my-sm-5,html[data-netbox-color-mode=dark] .my-sm-5,html[data-netbox-color-mode=light] .my-sm-5{margin-top:3rem!important;margin-bottom:3rem!important}html .my-sm-auto,html[data-netbox-color-mode=dark] .my-sm-auto,html[data-netbox-color-mode=light] .my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}html .mt-sm-0,html[data-netbox-color-mode=dark] .mt-sm-0,html[data-netbox-color-mode=light] .mt-sm-0{margin-top:0!important}html .mt-sm-1,html[data-netbox-color-mode=dark] .mt-sm-1,html[data-netbox-color-mode=light] .mt-sm-1{margin-top:.25rem!important}html .mt-sm-2,html[data-netbox-color-mode=dark] .mt-sm-2,html[data-netbox-color-mode=light] .mt-sm-2{margin-top:.5rem!important}html .mt-sm-3,html[data-netbox-color-mode=dark] .mt-sm-3,html[data-netbox-color-mode=light] .mt-sm-3{margin-top:1rem!important}html .mt-sm-4,html[data-netbox-color-mode=dark] .mt-sm-4,html[data-netbox-color-mode=light] .mt-sm-4{margin-top:1.5rem!important}html .mt-sm-5,html[data-netbox-color-mode=dark] .mt-sm-5,html[data-netbox-color-mode=light] .mt-sm-5{margin-top:3rem!important}html .mt-sm-auto,html[data-netbox-color-mode=dark] .mt-sm-auto,html[data-netbox-color-mode=light] .mt-sm-auto{margin-top:auto!important}html .me-sm-0,html[data-netbox-color-mode=dark] .me-sm-0,html[data-netbox-color-mode=light] .me-sm-0{margin-right:0!important}html .me-sm-1,html[data-netbox-color-mode=dark] .me-sm-1,html[data-netbox-color-mode=light] .me-sm-1{margin-right:.25rem!important}html .me-sm-2,html[data-netbox-color-mode=dark] .me-sm-2,html[data-netbox-color-mode=light] .me-sm-2{margin-right:.5rem!important}html .me-sm-3,html[data-netbox-color-mode=dark] .me-sm-3,html[data-netbox-color-mode=light] .me-sm-3{margin-right:1rem!important}html .me-sm-4,html[data-netbox-color-mode=dark] .me-sm-4,html[data-netbox-color-mode=light] .me-sm-4{margin-right:1.5rem!important}html .me-sm-5,html[data-netbox-color-mode=dark] .me-sm-5,html[data-netbox-color-mode=light] .me-sm-5{margin-right:3rem!important}html .me-sm-auto,html[data-netbox-color-mode=dark] .me-sm-auto,html[data-netbox-color-mode=light] .me-sm-auto{margin-right:auto!important}html .mb-sm-0,html[data-netbox-color-mode=dark] .mb-sm-0,html[data-netbox-color-mode=light] .mb-sm-0{margin-bottom:0!important}html .mb-sm-1,html[data-netbox-color-mode=dark] .mb-sm-1,html[data-netbox-color-mode=light] .mb-sm-1{margin-bottom:.25rem!important}html .mb-sm-2,html[data-netbox-color-mode=dark] .mb-sm-2,html[data-netbox-color-mode=light] .mb-sm-2{margin-bottom:.5rem!important}html .mb-sm-3,html[data-netbox-color-mode=dark] .mb-sm-3,html[data-netbox-color-mode=light] .mb-sm-3{margin-bottom:1rem!important}html .mb-sm-4,html[data-netbox-color-mode=dark] .mb-sm-4,html[data-netbox-color-mode=light] .mb-sm-4{margin-bottom:1.5rem!important}html .mb-sm-5,html[data-netbox-color-mode=dark] .mb-sm-5,html[data-netbox-color-mode=light] .mb-sm-5{margin-bottom:3rem!important}html .mb-sm-auto,html[data-netbox-color-mode=dark] .mb-sm-auto,html[data-netbox-color-mode=light] .mb-sm-auto{margin-bottom:auto!important}html .ms-sm-0,html[data-netbox-color-mode=dark] .ms-sm-0,html[data-netbox-color-mode=light] .ms-sm-0{margin-left:0!important}html .ms-sm-1,html[data-netbox-color-mode=dark] .ms-sm-1,html[data-netbox-color-mode=light] .ms-sm-1{margin-left:.25rem!important}html .ms-sm-2,html[data-netbox-color-mode=dark] .ms-sm-2,html[data-netbox-color-mode=light] .ms-sm-2{margin-left:.5rem!important}html .ms-sm-3,html[data-netbox-color-mode=dark] .ms-sm-3,html[data-netbox-color-mode=light] .ms-sm-3{margin-left:1rem!important}html .ms-sm-4,html[data-netbox-color-mode=dark] .ms-sm-4,html[data-netbox-color-mode=light] .ms-sm-4{margin-left:1.5rem!important}html .ms-sm-5,html[data-netbox-color-mode=dark] .ms-sm-5,html[data-netbox-color-mode=light] .ms-sm-5{margin-left:3rem!important}html .ms-sm-auto,html[data-netbox-color-mode=dark] .ms-sm-auto,html[data-netbox-color-mode=light] .ms-sm-auto{margin-left:auto!important}html .p-sm-0,html[data-netbox-color-mode=dark] .p-sm-0,html[data-netbox-color-mode=light] .p-sm-0{padding:0!important}html .p-sm-1,html[data-netbox-color-mode=dark] .p-sm-1,html[data-netbox-color-mode=light] .p-sm-1{padding:.25rem!important}html .p-sm-2,html[data-netbox-color-mode=dark] .p-sm-2,html[data-netbox-color-mode=light] .p-sm-2{padding:.5rem!important}html .p-sm-3,html[data-netbox-color-mode=dark] .p-sm-3,html[data-netbox-color-mode=light] .p-sm-3{padding:1rem!important}html .p-sm-4,html[data-netbox-color-mode=dark] .p-sm-4,html[data-netbox-color-mode=light] .p-sm-4{padding:1.5rem!important}html .p-sm-5,html[data-netbox-color-mode=dark] .p-sm-5,html[data-netbox-color-mode=light] .p-sm-5{padding:3rem!important}html .px-sm-0,html[data-netbox-color-mode=dark] .px-sm-0,html[data-netbox-color-mode=light] .px-sm-0{padding-right:0!important;padding-left:0!important}html .px-sm-1,html[data-netbox-color-mode=dark] .px-sm-1,html[data-netbox-color-mode=light] .px-sm-1{padding-right:.25rem!important;padding-left:.25rem!important}html .px-sm-2,html[data-netbox-color-mode=dark] .px-sm-2,html[data-netbox-color-mode=light] .px-sm-2{padding-right:.5rem!important;padding-left:.5rem!important}html .px-sm-3,html[data-netbox-color-mode=dark] .px-sm-3,html[data-netbox-color-mode=light] .px-sm-3{padding-right:1rem!important;padding-left:1rem!important}html .px-sm-4,html[data-netbox-color-mode=dark] .px-sm-4,html[data-netbox-color-mode=light] .px-sm-4{padding-right:1.5rem!important;padding-left:1.5rem!important}html .px-sm-5,html[data-netbox-color-mode=dark] .px-sm-5,html[data-netbox-color-mode=light] .px-sm-5{padding-right:3rem!important;padding-left:3rem!important}html .py-sm-0,html[data-netbox-color-mode=dark] .py-sm-0,html[data-netbox-color-mode=light] .py-sm-0{padding-top:0!important;padding-bottom:0!important}html .py-sm-1,html[data-netbox-color-mode=dark] .py-sm-1,html[data-netbox-color-mode=light] .py-sm-1{padding-top:.25rem!important;padding-bottom:.25rem!important}html .py-sm-2,html[data-netbox-color-mode=dark] .py-sm-2,html[data-netbox-color-mode=light] .py-sm-2{padding-top:.5rem!important;padding-bottom:.5rem!important}html .py-sm-3,html[data-netbox-color-mode=dark] .py-sm-3,html[data-netbox-color-mode=light] .py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important}html .py-sm-4,html[data-netbox-color-mode=dark] .py-sm-4,html[data-netbox-color-mode=light] .py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}html .py-sm-5,html[data-netbox-color-mode=dark] .py-sm-5,html[data-netbox-color-mode=light] .py-sm-5{padding-top:3rem!important;padding-bottom:3rem!important}html .pt-sm-0,html[data-netbox-color-mode=dark] .pt-sm-0,html[data-netbox-color-mode=light] .pt-sm-0{padding-top:0!important}html .pt-sm-1,html[data-netbox-color-mode=dark] .pt-sm-1,html[data-netbox-color-mode=light] .pt-sm-1{padding-top:.25rem!important}html .pt-sm-2,html[data-netbox-color-mode=dark] .pt-sm-2,html[data-netbox-color-mode=light] .pt-sm-2{padding-top:.5rem!important}html .pt-sm-3,html[data-netbox-color-mode=dark] .pt-sm-3,html[data-netbox-color-mode=light] .pt-sm-3{padding-top:1rem!important}html .pt-sm-4,html[data-netbox-color-mode=dark] .pt-sm-4,html[data-netbox-color-mode=light] .pt-sm-4{padding-top:1.5rem!important}html .pt-sm-5,html[data-netbox-color-mode=dark] .pt-sm-5,html[data-netbox-color-mode=light] .pt-sm-5{padding-top:3rem!important}html .pe-sm-0,html[data-netbox-color-mode=dark] .pe-sm-0,html[data-netbox-color-mode=light] .pe-sm-0{padding-right:0!important}html .pe-sm-1,html[data-netbox-color-mode=dark] .pe-sm-1,html[data-netbox-color-mode=light] .pe-sm-1{padding-right:.25rem!important}html .pe-sm-2,html[data-netbox-color-mode=dark] .pe-sm-2,html[data-netbox-color-mode=light] .pe-sm-2{padding-right:.5rem!important}html .pe-sm-3,html[data-netbox-color-mode=dark] .pe-sm-3,html[data-netbox-color-mode=light] .pe-sm-3{padding-right:1rem!important}html .pe-sm-4,html[data-netbox-color-mode=dark] .pe-sm-4,html[data-netbox-color-mode=light] .pe-sm-4{padding-right:1.5rem!important}html .pe-sm-5,html[data-netbox-color-mode=dark] .pe-sm-5,html[data-netbox-color-mode=light] .pe-sm-5{padding-right:3rem!important}html .pb-sm-0,html[data-netbox-color-mode=dark] .pb-sm-0,html[data-netbox-color-mode=light] .pb-sm-0{padding-bottom:0!important}html .pb-sm-1,html[data-netbox-color-mode=dark] .pb-sm-1,html[data-netbox-color-mode=light] .pb-sm-1{padding-bottom:.25rem!important}html .pb-sm-2,html[data-netbox-color-mode=dark] .pb-sm-2,html[data-netbox-color-mode=light] .pb-sm-2{padding-bottom:.5rem!important}html .pb-sm-3,html[data-netbox-color-mode=dark] .pb-sm-3,html[data-netbox-color-mode=light] .pb-sm-3{padding-bottom:1rem!important}html .pb-sm-4,html[data-netbox-color-mode=dark] .pb-sm-4,html[data-netbox-color-mode=light] .pb-sm-4{padding-bottom:1.5rem!important}html .pb-sm-5,html[data-netbox-color-mode=dark] .pb-sm-5,html[data-netbox-color-mode=light] .pb-sm-5{padding-bottom:3rem!important}html .ps-sm-0,html[data-netbox-color-mode=dark] .ps-sm-0,html[data-netbox-color-mode=light] .ps-sm-0{padding-left:0!important}html .ps-sm-1,html[data-netbox-color-mode=dark] .ps-sm-1,html[data-netbox-color-mode=light] .ps-sm-1{padding-left:.25rem!important}html .ps-sm-2,html[data-netbox-color-mode=dark] .ps-sm-2,html[data-netbox-color-mode=light] .ps-sm-2{padding-left:.5rem!important}html .ps-sm-3,html[data-netbox-color-mode=dark] .ps-sm-3,html[data-netbox-color-mode=light] .ps-sm-3{padding-left:1rem!important}html .ps-sm-4,html[data-netbox-color-mode=dark] .ps-sm-4,html[data-netbox-color-mode=light] .ps-sm-4{padding-left:1.5rem!important}html .ps-sm-5,html[data-netbox-color-mode=dark] .ps-sm-5,html[data-netbox-color-mode=light] .ps-sm-5{padding-left:3rem!important}html .text-sm-start,html[data-netbox-color-mode=dark] .text-sm-start,html[data-netbox-color-mode=light] .text-sm-start{text-align:left!important}html .text-sm-end,html[data-netbox-color-mode=dark] .text-sm-end,html[data-netbox-color-mode=light] .text-sm-end{text-align:right!important}html .text-sm-center,html[data-netbox-color-mode=dark] .text-sm-center,html[data-netbox-color-mode=light] .text-sm-center{text-align:center!important}}@media print and (min-width: 768px){html .float-md-start,html[data-netbox-color-mode=dark] .float-md-start,html[data-netbox-color-mode=light] .float-md-start{float:left!important}html .float-md-end,html[data-netbox-color-mode=dark] .float-md-end,html[data-netbox-color-mode=light] .float-md-end{float:right!important}html .float-md-none,html[data-netbox-color-mode=dark] .float-md-none,html[data-netbox-color-mode=light] .float-md-none{float:none!important}html .d-md-inline,html[data-netbox-color-mode=dark] .d-md-inline,html[data-netbox-color-mode=light] .d-md-inline{display:inline!important}html .d-md-inline-block,html[data-netbox-color-mode=dark] .d-md-inline-block,html[data-netbox-color-mode=light] .d-md-inline-block{display:inline-block!important}html .d-md-block,html[data-netbox-color-mode=dark] .d-md-block,html[data-netbox-color-mode=light] .d-md-block{display:block!important}html .d-md-grid,html[data-netbox-color-mode=dark] .d-md-grid,html[data-netbox-color-mode=light] .d-md-grid{display:grid!important}html .d-md-table,html[data-netbox-color-mode=dark] .d-md-table,html[data-netbox-color-mode=light] .d-md-table{display:table!important}html .d-md-table-row,html[data-netbox-color-mode=dark] .d-md-table-row,html[data-netbox-color-mode=light] .d-md-table-row{display:table-row!important}html .d-md-table-cell,html[data-netbox-color-mode=dark] .d-md-table-cell,html[data-netbox-color-mode=light] .d-md-table-cell{display:table-cell!important}html .d-md-flex,html[data-netbox-color-mode=dark] .d-md-flex,html[data-netbox-color-mode=light] .d-md-flex{display:flex!important}html .d-md-inline-flex,html[data-netbox-color-mode=dark] .d-md-inline-flex,html[data-netbox-color-mode=light] .d-md-inline-flex{display:inline-flex!important}html .d-md-none,html[data-netbox-color-mode=dark] .d-md-none,html[data-netbox-color-mode=light] .d-md-none{display:none!important}html .flex-md-fill,html[data-netbox-color-mode=dark] .flex-md-fill,html[data-netbox-color-mode=light] .flex-md-fill{flex:1 1 auto!important}html .flex-md-row,html[data-netbox-color-mode=dark] .flex-md-row,html[data-netbox-color-mode=light] .flex-md-row{flex-direction:row!important}html .flex-md-column,html[data-netbox-color-mode=dark] .flex-md-column,html[data-netbox-color-mode=light] .flex-md-column{flex-direction:column!important}html .flex-md-row-reverse,html[data-netbox-color-mode=dark] .flex-md-row-reverse,html[data-netbox-color-mode=light] .flex-md-row-reverse{flex-direction:row-reverse!important}html .flex-md-column-reverse,html[data-netbox-color-mode=dark] .flex-md-column-reverse,html[data-netbox-color-mode=light] .flex-md-column-reverse{flex-direction:column-reverse!important}html .flex-md-grow-0,html[data-netbox-color-mode=dark] .flex-md-grow-0,html[data-netbox-color-mode=light] .flex-md-grow-0{flex-grow:0!important}html .flex-md-grow-1,html[data-netbox-color-mode=dark] .flex-md-grow-1,html[data-netbox-color-mode=light] .flex-md-grow-1{flex-grow:1!important}html .flex-md-shrink-0,html[data-netbox-color-mode=dark] .flex-md-shrink-0,html[data-netbox-color-mode=light] .flex-md-shrink-0{flex-shrink:0!important}html .flex-md-shrink-1,html[data-netbox-color-mode=dark] .flex-md-shrink-1,html[data-netbox-color-mode=light] .flex-md-shrink-1{flex-shrink:1!important}html .flex-md-wrap,html[data-netbox-color-mode=dark] .flex-md-wrap,html[data-netbox-color-mode=light] .flex-md-wrap{flex-wrap:wrap!important}html .flex-md-nowrap,html[data-netbox-color-mode=dark] .flex-md-nowrap,html[data-netbox-color-mode=light] .flex-md-nowrap{flex-wrap:nowrap!important}html .flex-md-wrap-reverse,html[data-netbox-color-mode=dark] .flex-md-wrap-reverse,html[data-netbox-color-mode=light] .flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}html .gap-md-0,html[data-netbox-color-mode=dark] .gap-md-0,html[data-netbox-color-mode=light] .gap-md-0{gap:0!important}html .gap-md-1,html[data-netbox-color-mode=dark] .gap-md-1,html[data-netbox-color-mode=light] .gap-md-1{gap:.25rem!important}html .gap-md-2,html[data-netbox-color-mode=dark] .gap-md-2,html[data-netbox-color-mode=light] .gap-md-2{gap:.5rem!important}html .gap-md-3,html[data-netbox-color-mode=dark] .gap-md-3,html[data-netbox-color-mode=light] .gap-md-3{gap:1rem!important}html .gap-md-4,html[data-netbox-color-mode=dark] .gap-md-4,html[data-netbox-color-mode=light] .gap-md-4{gap:1.5rem!important}html .gap-md-5,html[data-netbox-color-mode=dark] .gap-md-5,html[data-netbox-color-mode=light] .gap-md-5{gap:3rem!important}html .justify-content-md-start,html[data-netbox-color-mode=dark] .justify-content-md-start,html[data-netbox-color-mode=light] .justify-content-md-start{justify-content:flex-start!important}html .justify-content-md-end,html[data-netbox-color-mode=dark] .justify-content-md-end,html[data-netbox-color-mode=light] .justify-content-md-end{justify-content:flex-end!important}html .justify-content-md-center,html[data-netbox-color-mode=dark] .justify-content-md-center,html[data-netbox-color-mode=light] .justify-content-md-center{justify-content:center!important}html .justify-content-md-between,html[data-netbox-color-mode=dark] .justify-content-md-between,html[data-netbox-color-mode=light] .justify-content-md-between{justify-content:space-between!important}html .justify-content-md-around,html[data-netbox-color-mode=dark] .justify-content-md-around,html[data-netbox-color-mode=light] .justify-content-md-around{justify-content:space-around!important}html .justify-content-md-evenly,html[data-netbox-color-mode=dark] .justify-content-md-evenly,html[data-netbox-color-mode=light] .justify-content-md-evenly{justify-content:space-evenly!important}html .align-items-md-start,html[data-netbox-color-mode=dark] .align-items-md-start,html[data-netbox-color-mode=light] .align-items-md-start{align-items:flex-start!important}html .align-items-md-end,html[data-netbox-color-mode=dark] .align-items-md-end,html[data-netbox-color-mode=light] .align-items-md-end{align-items:flex-end!important}html .align-items-md-center,html[data-netbox-color-mode=dark] .align-items-md-center,html[data-netbox-color-mode=light] .align-items-md-center{align-items:center!important}html .align-items-md-baseline,html[data-netbox-color-mode=dark] .align-items-md-baseline,html[data-netbox-color-mode=light] .align-items-md-baseline{align-items:baseline!important}html .align-items-md-stretch,html[data-netbox-color-mode=dark] .align-items-md-stretch,html[data-netbox-color-mode=light] .align-items-md-stretch{align-items:stretch!important}html .align-content-md-start,html[data-netbox-color-mode=dark] .align-content-md-start,html[data-netbox-color-mode=light] .align-content-md-start{align-content:flex-start!important}html .align-content-md-end,html[data-netbox-color-mode=dark] .align-content-md-end,html[data-netbox-color-mode=light] .align-content-md-end{align-content:flex-end!important}html .align-content-md-center,html[data-netbox-color-mode=dark] .align-content-md-center,html[data-netbox-color-mode=light] .align-content-md-center{align-content:center!important}html .align-content-md-between,html[data-netbox-color-mode=dark] .align-content-md-between,html[data-netbox-color-mode=light] .align-content-md-between{align-content:space-between!important}html .align-content-md-around,html[data-netbox-color-mode=dark] .align-content-md-around,html[data-netbox-color-mode=light] .align-content-md-around{align-content:space-around!important}html .align-content-md-stretch,html[data-netbox-color-mode=dark] .align-content-md-stretch,html[data-netbox-color-mode=light] .align-content-md-stretch{align-content:stretch!important}html .align-self-md-auto,html[data-netbox-color-mode=dark] .align-self-md-auto,html[data-netbox-color-mode=light] .align-self-md-auto{align-self:auto!important}html .align-self-md-start,html[data-netbox-color-mode=dark] .align-self-md-start,html[data-netbox-color-mode=light] .align-self-md-start{align-self:flex-start!important}html .align-self-md-end,html[data-netbox-color-mode=dark] .align-self-md-end,html[data-netbox-color-mode=light] .align-self-md-end{align-self:flex-end!important}html .align-self-md-center,html[data-netbox-color-mode=dark] .align-self-md-center,html[data-netbox-color-mode=light] .align-self-md-center{align-self:center!important}html .align-self-md-baseline,html[data-netbox-color-mode=dark] .align-self-md-baseline,html[data-netbox-color-mode=light] .align-self-md-baseline{align-self:baseline!important}html .align-self-md-stretch,html[data-netbox-color-mode=dark] .align-self-md-stretch,html[data-netbox-color-mode=light] .align-self-md-stretch{align-self:stretch!important}html .order-md-first,html[data-netbox-color-mode=dark] .order-md-first,html[data-netbox-color-mode=light] .order-md-first{order:-1!important}html .order-md-0,html[data-netbox-color-mode=dark] .order-md-0,html[data-netbox-color-mode=light] .order-md-0{order:0!important}html .order-md-1,html[data-netbox-color-mode=dark] .order-md-1,html[data-netbox-color-mode=light] .order-md-1{order:1!important}html .order-md-2,html[data-netbox-color-mode=dark] .order-md-2,html[data-netbox-color-mode=light] .order-md-2{order:2!important}html .order-md-3,html[data-netbox-color-mode=dark] .order-md-3,html[data-netbox-color-mode=light] .order-md-3{order:3!important}html .order-md-4,html[data-netbox-color-mode=dark] .order-md-4,html[data-netbox-color-mode=light] .order-md-4{order:4!important}html .order-md-5,html[data-netbox-color-mode=dark] .order-md-5,html[data-netbox-color-mode=light] .order-md-5{order:5!important}html .order-md-last,html[data-netbox-color-mode=dark] .order-md-last,html[data-netbox-color-mode=light] .order-md-last{order:6!important}html .m-md-0,html[data-netbox-color-mode=dark] .m-md-0,html[data-netbox-color-mode=light] .m-md-0{margin:0!important}html .m-md-1,html[data-netbox-color-mode=dark] .m-md-1,html[data-netbox-color-mode=light] .m-md-1{margin:.25rem!important}html .m-md-2,html[data-netbox-color-mode=dark] .m-md-2,html[data-netbox-color-mode=light] .m-md-2{margin:.5rem!important}html .m-md-3,html[data-netbox-color-mode=dark] .m-md-3,html[data-netbox-color-mode=light] .m-md-3{margin:1rem!important}html .m-md-4,html[data-netbox-color-mode=dark] .m-md-4,html[data-netbox-color-mode=light] .m-md-4{margin:1.5rem!important}html .m-md-5,html[data-netbox-color-mode=dark] .m-md-5,html[data-netbox-color-mode=light] .m-md-5{margin:3rem!important}html .m-md-auto,html[data-netbox-color-mode=dark] .m-md-auto,html[data-netbox-color-mode=light] .m-md-auto{margin:auto!important}html .mx-md-0,html[data-netbox-color-mode=dark] .mx-md-0,html[data-netbox-color-mode=light] .mx-md-0{margin-right:0!important;margin-left:0!important}html .mx-md-1,html[data-netbox-color-mode=dark] .mx-md-1,html[data-netbox-color-mode=light] .mx-md-1{margin-right:.25rem!important;margin-left:.25rem!important}html .mx-md-2,html[data-netbox-color-mode=dark] .mx-md-2,html[data-netbox-color-mode=light] .mx-md-2{margin-right:.5rem!important;margin-left:.5rem!important}html .mx-md-3,html[data-netbox-color-mode=dark] .mx-md-3,html[data-netbox-color-mode=light] .mx-md-3{margin-right:1rem!important;margin-left:1rem!important}html .mx-md-4,html[data-netbox-color-mode=dark] .mx-md-4,html[data-netbox-color-mode=light] .mx-md-4{margin-right:1.5rem!important;margin-left:1.5rem!important}html .mx-md-5,html[data-netbox-color-mode=dark] .mx-md-5,html[data-netbox-color-mode=light] .mx-md-5{margin-right:3rem!important;margin-left:3rem!important}html .mx-md-auto,html[data-netbox-color-mode=dark] .mx-md-auto,html[data-netbox-color-mode=light] .mx-md-auto{margin-right:auto!important;margin-left:auto!important}html .my-md-0,html[data-netbox-color-mode=dark] .my-md-0,html[data-netbox-color-mode=light] .my-md-0{margin-top:0!important;margin-bottom:0!important}html .my-md-1,html[data-netbox-color-mode=dark] .my-md-1,html[data-netbox-color-mode=light] .my-md-1{margin-top:.25rem!important;margin-bottom:.25rem!important}html .my-md-2,html[data-netbox-color-mode=dark] .my-md-2,html[data-netbox-color-mode=light] .my-md-2{margin-top:.5rem!important;margin-bottom:.5rem!important}html .my-md-3,html[data-netbox-color-mode=dark] .my-md-3,html[data-netbox-color-mode=light] .my-md-3{margin-top:1rem!important;margin-bottom:1rem!important}html .my-md-4,html[data-netbox-color-mode=dark] .my-md-4,html[data-netbox-color-mode=light] .my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}html .my-md-5,html[data-netbox-color-mode=dark] .my-md-5,html[data-netbox-color-mode=light] .my-md-5{margin-top:3rem!important;margin-bottom:3rem!important}html .my-md-auto,html[data-netbox-color-mode=dark] .my-md-auto,html[data-netbox-color-mode=light] .my-md-auto{margin-top:auto!important;margin-bottom:auto!important}html .mt-md-0,html[data-netbox-color-mode=dark] .mt-md-0,html[data-netbox-color-mode=light] .mt-md-0{margin-top:0!important}html .mt-md-1,html[data-netbox-color-mode=dark] .mt-md-1,html[data-netbox-color-mode=light] .mt-md-1{margin-top:.25rem!important}html .mt-md-2,html[data-netbox-color-mode=dark] .mt-md-2,html[data-netbox-color-mode=light] .mt-md-2{margin-top:.5rem!important}html .mt-md-3,html[data-netbox-color-mode=dark] .mt-md-3,html[data-netbox-color-mode=light] .mt-md-3{margin-top:1rem!important}html .mt-md-4,html[data-netbox-color-mode=dark] .mt-md-4,html[data-netbox-color-mode=light] .mt-md-4{margin-top:1.5rem!important}html .mt-md-5,html[data-netbox-color-mode=dark] .mt-md-5,html[data-netbox-color-mode=light] .mt-md-5{margin-top:3rem!important}html .mt-md-auto,html[data-netbox-color-mode=dark] .mt-md-auto,html[data-netbox-color-mode=light] .mt-md-auto{margin-top:auto!important}html .me-md-0,html[data-netbox-color-mode=dark] .me-md-0,html[data-netbox-color-mode=light] .me-md-0{margin-right:0!important}html .me-md-1,html[data-netbox-color-mode=dark] .me-md-1,html[data-netbox-color-mode=light] .me-md-1{margin-right:.25rem!important}html .me-md-2,html[data-netbox-color-mode=dark] .me-md-2,html[data-netbox-color-mode=light] .me-md-2{margin-right:.5rem!important}html .me-md-3,html[data-netbox-color-mode=dark] .me-md-3,html[data-netbox-color-mode=light] .me-md-3{margin-right:1rem!important}html .me-md-4,html[data-netbox-color-mode=dark] .me-md-4,html[data-netbox-color-mode=light] .me-md-4{margin-right:1.5rem!important}html .me-md-5,html[data-netbox-color-mode=dark] .me-md-5,html[data-netbox-color-mode=light] .me-md-5{margin-right:3rem!important}html .me-md-auto,html[data-netbox-color-mode=dark] .me-md-auto,html[data-netbox-color-mode=light] .me-md-auto{margin-right:auto!important}html .mb-md-0,html[data-netbox-color-mode=dark] .mb-md-0,html[data-netbox-color-mode=light] .mb-md-0{margin-bottom:0!important}html .mb-md-1,html[data-netbox-color-mode=dark] .mb-md-1,html[data-netbox-color-mode=light] .mb-md-1{margin-bottom:.25rem!important}html .mb-md-2,html[data-netbox-color-mode=dark] .mb-md-2,html[data-netbox-color-mode=light] .mb-md-2{margin-bottom:.5rem!important}html .mb-md-3,html[data-netbox-color-mode=dark] .mb-md-3,html[data-netbox-color-mode=light] .mb-md-3{margin-bottom:1rem!important}html .mb-md-4,html[data-netbox-color-mode=dark] .mb-md-4,html[data-netbox-color-mode=light] .mb-md-4{margin-bottom:1.5rem!important}html .mb-md-5,html[data-netbox-color-mode=dark] .mb-md-5,html[data-netbox-color-mode=light] .mb-md-5{margin-bottom:3rem!important}html .mb-md-auto,html[data-netbox-color-mode=dark] .mb-md-auto,html[data-netbox-color-mode=light] .mb-md-auto{margin-bottom:auto!important}html .ms-md-0,html[data-netbox-color-mode=dark] .ms-md-0,html[data-netbox-color-mode=light] .ms-md-0{margin-left:0!important}html .ms-md-1,html[data-netbox-color-mode=dark] .ms-md-1,html[data-netbox-color-mode=light] .ms-md-1{margin-left:.25rem!important}html .ms-md-2,html[data-netbox-color-mode=dark] .ms-md-2,html[data-netbox-color-mode=light] .ms-md-2{margin-left:.5rem!important}html .ms-md-3,html[data-netbox-color-mode=dark] .ms-md-3,html[data-netbox-color-mode=light] .ms-md-3{margin-left:1rem!important}html .ms-md-4,html[data-netbox-color-mode=dark] .ms-md-4,html[data-netbox-color-mode=light] .ms-md-4{margin-left:1.5rem!important}html .ms-md-5,html[data-netbox-color-mode=dark] .ms-md-5,html[data-netbox-color-mode=light] .ms-md-5{margin-left:3rem!important}html .ms-md-auto,html[data-netbox-color-mode=dark] .ms-md-auto,html[data-netbox-color-mode=light] .ms-md-auto{margin-left:auto!important}html .p-md-0,html[data-netbox-color-mode=dark] .p-md-0,html[data-netbox-color-mode=light] .p-md-0{padding:0!important}html .p-md-1,html[data-netbox-color-mode=dark] .p-md-1,html[data-netbox-color-mode=light] .p-md-1{padding:.25rem!important}html .p-md-2,html[data-netbox-color-mode=dark] .p-md-2,html[data-netbox-color-mode=light] .p-md-2{padding:.5rem!important}html .p-md-3,html[data-netbox-color-mode=dark] .p-md-3,html[data-netbox-color-mode=light] .p-md-3{padding:1rem!important}html .p-md-4,html[data-netbox-color-mode=dark] .p-md-4,html[data-netbox-color-mode=light] .p-md-4{padding:1.5rem!important}html .p-md-5,html[data-netbox-color-mode=dark] .p-md-5,html[data-netbox-color-mode=light] .p-md-5{padding:3rem!important}html .px-md-0,html[data-netbox-color-mode=dark] .px-md-0,html[data-netbox-color-mode=light] .px-md-0{padding-right:0!important;padding-left:0!important}html .px-md-1,html[data-netbox-color-mode=dark] .px-md-1,html[data-netbox-color-mode=light] .px-md-1{padding-right:.25rem!important;padding-left:.25rem!important}html .px-md-2,html[data-netbox-color-mode=dark] .px-md-2,html[data-netbox-color-mode=light] .px-md-2{padding-right:.5rem!important;padding-left:.5rem!important}html .px-md-3,html[data-netbox-color-mode=dark] .px-md-3,html[data-netbox-color-mode=light] .px-md-3{padding-right:1rem!important;padding-left:1rem!important}html .px-md-4,html[data-netbox-color-mode=dark] .px-md-4,html[data-netbox-color-mode=light] .px-md-4{padding-right:1.5rem!important;padding-left:1.5rem!important}html .px-md-5,html[data-netbox-color-mode=dark] .px-md-5,html[data-netbox-color-mode=light] .px-md-5{padding-right:3rem!important;padding-left:3rem!important}html .py-md-0,html[data-netbox-color-mode=dark] .py-md-0,html[data-netbox-color-mode=light] .py-md-0{padding-top:0!important;padding-bottom:0!important}html .py-md-1,html[data-netbox-color-mode=dark] .py-md-1,html[data-netbox-color-mode=light] .py-md-1{padding-top:.25rem!important;padding-bottom:.25rem!important}html .py-md-2,html[data-netbox-color-mode=dark] .py-md-2,html[data-netbox-color-mode=light] .py-md-2{padding-top:.5rem!important;padding-bottom:.5rem!important}html .py-md-3,html[data-netbox-color-mode=dark] .py-md-3,html[data-netbox-color-mode=light] .py-md-3{padding-top:1rem!important;padding-bottom:1rem!important}html .py-md-4,html[data-netbox-color-mode=dark] .py-md-4,html[data-netbox-color-mode=light] .py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}html .py-md-5,html[data-netbox-color-mode=dark] .py-md-5,html[data-netbox-color-mode=light] .py-md-5{padding-top:3rem!important;padding-bottom:3rem!important}html .pt-md-0,html[data-netbox-color-mode=dark] .pt-md-0,html[data-netbox-color-mode=light] .pt-md-0{padding-top:0!important}html .pt-md-1,html[data-netbox-color-mode=dark] .pt-md-1,html[data-netbox-color-mode=light] .pt-md-1{padding-top:.25rem!important}html .pt-md-2,html[data-netbox-color-mode=dark] .pt-md-2,html[data-netbox-color-mode=light] .pt-md-2{padding-top:.5rem!important}html .pt-md-3,html[data-netbox-color-mode=dark] .pt-md-3,html[data-netbox-color-mode=light] .pt-md-3{padding-top:1rem!important}html .pt-md-4,html[data-netbox-color-mode=dark] .pt-md-4,html[data-netbox-color-mode=light] .pt-md-4{padding-top:1.5rem!important}html .pt-md-5,html[data-netbox-color-mode=dark] .pt-md-5,html[data-netbox-color-mode=light] .pt-md-5{padding-top:3rem!important}html .pe-md-0,html[data-netbox-color-mode=dark] .pe-md-0,html[data-netbox-color-mode=light] .pe-md-0{padding-right:0!important}html .pe-md-1,html[data-netbox-color-mode=dark] .pe-md-1,html[data-netbox-color-mode=light] .pe-md-1{padding-right:.25rem!important}html .pe-md-2,html[data-netbox-color-mode=dark] .pe-md-2,html[data-netbox-color-mode=light] .pe-md-2{padding-right:.5rem!important}html .pe-md-3,html[data-netbox-color-mode=dark] .pe-md-3,html[data-netbox-color-mode=light] .pe-md-3{padding-right:1rem!important}html .pe-md-4,html[data-netbox-color-mode=dark] .pe-md-4,html[data-netbox-color-mode=light] .pe-md-4{padding-right:1.5rem!important}html .pe-md-5,html[data-netbox-color-mode=dark] .pe-md-5,html[data-netbox-color-mode=light] .pe-md-5{padding-right:3rem!important}html .pb-md-0,html[data-netbox-color-mode=dark] .pb-md-0,html[data-netbox-color-mode=light] .pb-md-0{padding-bottom:0!important}html .pb-md-1,html[data-netbox-color-mode=dark] .pb-md-1,html[data-netbox-color-mode=light] .pb-md-1{padding-bottom:.25rem!important}html .pb-md-2,html[data-netbox-color-mode=dark] .pb-md-2,html[data-netbox-color-mode=light] .pb-md-2{padding-bottom:.5rem!important}html .pb-md-3,html[data-netbox-color-mode=dark] .pb-md-3,html[data-netbox-color-mode=light] .pb-md-3{padding-bottom:1rem!important}html .pb-md-4,html[data-netbox-color-mode=dark] .pb-md-4,html[data-netbox-color-mode=light] .pb-md-4{padding-bottom:1.5rem!important}html .pb-md-5,html[data-netbox-color-mode=dark] .pb-md-5,html[data-netbox-color-mode=light] .pb-md-5{padding-bottom:3rem!important}html .ps-md-0,html[data-netbox-color-mode=dark] .ps-md-0,html[data-netbox-color-mode=light] .ps-md-0{padding-left:0!important}html .ps-md-1,html[data-netbox-color-mode=dark] .ps-md-1,html[data-netbox-color-mode=light] .ps-md-1{padding-left:.25rem!important}html .ps-md-2,html[data-netbox-color-mode=dark] .ps-md-2,html[data-netbox-color-mode=light] .ps-md-2{padding-left:.5rem!important}html .ps-md-3,html[data-netbox-color-mode=dark] .ps-md-3,html[data-netbox-color-mode=light] .ps-md-3{padding-left:1rem!important}html .ps-md-4,html[data-netbox-color-mode=dark] .ps-md-4,html[data-netbox-color-mode=light] .ps-md-4{padding-left:1.5rem!important}html .ps-md-5,html[data-netbox-color-mode=dark] .ps-md-5,html[data-netbox-color-mode=light] .ps-md-5{padding-left:3rem!important}html .text-md-start,html[data-netbox-color-mode=dark] .text-md-start,html[data-netbox-color-mode=light] .text-md-start{text-align:left!important}html .text-md-end,html[data-netbox-color-mode=dark] .text-md-end,html[data-netbox-color-mode=light] .text-md-end{text-align:right!important}html .text-md-center,html[data-netbox-color-mode=dark] .text-md-center,html[data-netbox-color-mode=light] .text-md-center{text-align:center!important}}@media print and (min-width: 992px){html .float-lg-start,html[data-netbox-color-mode=dark] .float-lg-start,html[data-netbox-color-mode=light] .float-lg-start{float:left!important}html .float-lg-end,html[data-netbox-color-mode=dark] .float-lg-end,html[data-netbox-color-mode=light] .float-lg-end{float:right!important}html .float-lg-none,html[data-netbox-color-mode=dark] .float-lg-none,html[data-netbox-color-mode=light] .float-lg-none{float:none!important}html .d-lg-inline,html[data-netbox-color-mode=dark] .d-lg-inline,html[data-netbox-color-mode=light] .d-lg-inline{display:inline!important}html .d-lg-inline-block,html[data-netbox-color-mode=dark] .d-lg-inline-block,html[data-netbox-color-mode=light] .d-lg-inline-block{display:inline-block!important}html .d-lg-block,html[data-netbox-color-mode=dark] .d-lg-block,html[data-netbox-color-mode=light] .d-lg-block{display:block!important}html .d-lg-grid,html[data-netbox-color-mode=dark] .d-lg-grid,html[data-netbox-color-mode=light] .d-lg-grid{display:grid!important}html .d-lg-table,html[data-netbox-color-mode=dark] .d-lg-table,html[data-netbox-color-mode=light] .d-lg-table{display:table!important}html .d-lg-table-row,html[data-netbox-color-mode=dark] .d-lg-table-row,html[data-netbox-color-mode=light] .d-lg-table-row{display:table-row!important}html .d-lg-table-cell,html[data-netbox-color-mode=dark] .d-lg-table-cell,html[data-netbox-color-mode=light] .d-lg-table-cell{display:table-cell!important}html .d-lg-flex,html[data-netbox-color-mode=dark] .d-lg-flex,html[data-netbox-color-mode=light] .d-lg-flex{display:flex!important}html .d-lg-inline-flex,html[data-netbox-color-mode=dark] .d-lg-inline-flex,html[data-netbox-color-mode=light] .d-lg-inline-flex{display:inline-flex!important}html .d-lg-none,html[data-netbox-color-mode=dark] .d-lg-none,html[data-netbox-color-mode=light] .d-lg-none{display:none!important}html .flex-lg-fill,html[data-netbox-color-mode=dark] .flex-lg-fill,html[data-netbox-color-mode=light] .flex-lg-fill{flex:1 1 auto!important}html .flex-lg-row,html[data-netbox-color-mode=dark] .flex-lg-row,html[data-netbox-color-mode=light] .flex-lg-row{flex-direction:row!important}html .flex-lg-column,html[data-netbox-color-mode=dark] .flex-lg-column,html[data-netbox-color-mode=light] .flex-lg-column{flex-direction:column!important}html .flex-lg-row-reverse,html[data-netbox-color-mode=dark] .flex-lg-row-reverse,html[data-netbox-color-mode=light] .flex-lg-row-reverse{flex-direction:row-reverse!important}html .flex-lg-column-reverse,html[data-netbox-color-mode=dark] .flex-lg-column-reverse,html[data-netbox-color-mode=light] .flex-lg-column-reverse{flex-direction:column-reverse!important}html .flex-lg-grow-0,html[data-netbox-color-mode=dark] .flex-lg-grow-0,html[data-netbox-color-mode=light] .flex-lg-grow-0{flex-grow:0!important}html .flex-lg-grow-1,html[data-netbox-color-mode=dark] .flex-lg-grow-1,html[data-netbox-color-mode=light] .flex-lg-grow-1{flex-grow:1!important}html .flex-lg-shrink-0,html[data-netbox-color-mode=dark] .flex-lg-shrink-0,html[data-netbox-color-mode=light] .flex-lg-shrink-0{flex-shrink:0!important}html .flex-lg-shrink-1,html[data-netbox-color-mode=dark] .flex-lg-shrink-1,html[data-netbox-color-mode=light] .flex-lg-shrink-1{flex-shrink:1!important}html .flex-lg-wrap,html[data-netbox-color-mode=dark] .flex-lg-wrap,html[data-netbox-color-mode=light] .flex-lg-wrap{flex-wrap:wrap!important}html .flex-lg-nowrap,html[data-netbox-color-mode=dark] .flex-lg-nowrap,html[data-netbox-color-mode=light] .flex-lg-nowrap{flex-wrap:nowrap!important}html .flex-lg-wrap-reverse,html[data-netbox-color-mode=dark] .flex-lg-wrap-reverse,html[data-netbox-color-mode=light] .flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}html .gap-lg-0,html[data-netbox-color-mode=dark] .gap-lg-0,html[data-netbox-color-mode=light] .gap-lg-0{gap:0!important}html .gap-lg-1,html[data-netbox-color-mode=dark] .gap-lg-1,html[data-netbox-color-mode=light] .gap-lg-1{gap:.25rem!important}html .gap-lg-2,html[data-netbox-color-mode=dark] .gap-lg-2,html[data-netbox-color-mode=light] .gap-lg-2{gap:.5rem!important}html .gap-lg-3,html[data-netbox-color-mode=dark] .gap-lg-3,html[data-netbox-color-mode=light] .gap-lg-3{gap:1rem!important}html .gap-lg-4,html[data-netbox-color-mode=dark] .gap-lg-4,html[data-netbox-color-mode=light] .gap-lg-4{gap:1.5rem!important}html .gap-lg-5,html[data-netbox-color-mode=dark] .gap-lg-5,html[data-netbox-color-mode=light] .gap-lg-5{gap:3rem!important}html .justify-content-lg-start,html[data-netbox-color-mode=dark] .justify-content-lg-start,html[data-netbox-color-mode=light] .justify-content-lg-start{justify-content:flex-start!important}html .justify-content-lg-end,html[data-netbox-color-mode=dark] .justify-content-lg-end,html[data-netbox-color-mode=light] .justify-content-lg-end{justify-content:flex-end!important}html .justify-content-lg-center,html[data-netbox-color-mode=dark] .justify-content-lg-center,html[data-netbox-color-mode=light] .justify-content-lg-center{justify-content:center!important}html .justify-content-lg-between,html[data-netbox-color-mode=dark] .justify-content-lg-between,html[data-netbox-color-mode=light] .justify-content-lg-between{justify-content:space-between!important}html .justify-content-lg-around,html[data-netbox-color-mode=dark] .justify-content-lg-around,html[data-netbox-color-mode=light] .justify-content-lg-around{justify-content:space-around!important}html .justify-content-lg-evenly,html[data-netbox-color-mode=dark] .justify-content-lg-evenly,html[data-netbox-color-mode=light] .justify-content-lg-evenly{justify-content:space-evenly!important}html .align-items-lg-start,html[data-netbox-color-mode=dark] .align-items-lg-start,html[data-netbox-color-mode=light] .align-items-lg-start{align-items:flex-start!important}html .align-items-lg-end,html[data-netbox-color-mode=dark] .align-items-lg-end,html[data-netbox-color-mode=light] .align-items-lg-end{align-items:flex-end!important}html .align-items-lg-center,html[data-netbox-color-mode=dark] .align-items-lg-center,html[data-netbox-color-mode=light] .align-items-lg-center{align-items:center!important}html .align-items-lg-baseline,html[data-netbox-color-mode=dark] .align-items-lg-baseline,html[data-netbox-color-mode=light] .align-items-lg-baseline{align-items:baseline!important}html .align-items-lg-stretch,html[data-netbox-color-mode=dark] .align-items-lg-stretch,html[data-netbox-color-mode=light] .align-items-lg-stretch{align-items:stretch!important}html .align-content-lg-start,html[data-netbox-color-mode=dark] .align-content-lg-start,html[data-netbox-color-mode=light] .align-content-lg-start{align-content:flex-start!important}html .align-content-lg-end,html[data-netbox-color-mode=dark] .align-content-lg-end,html[data-netbox-color-mode=light] .align-content-lg-end{align-content:flex-end!important}html .align-content-lg-center,html[data-netbox-color-mode=dark] .align-content-lg-center,html[data-netbox-color-mode=light] .align-content-lg-center{align-content:center!important}html .align-content-lg-between,html[data-netbox-color-mode=dark] .align-content-lg-between,html[data-netbox-color-mode=light] .align-content-lg-between{align-content:space-between!important}html .align-content-lg-around,html[data-netbox-color-mode=dark] .align-content-lg-around,html[data-netbox-color-mode=light] .align-content-lg-around{align-content:space-around!important}html .align-content-lg-stretch,html[data-netbox-color-mode=dark] .align-content-lg-stretch,html[data-netbox-color-mode=light] .align-content-lg-stretch{align-content:stretch!important}html .align-self-lg-auto,html[data-netbox-color-mode=dark] .align-self-lg-auto,html[data-netbox-color-mode=light] .align-self-lg-auto{align-self:auto!important}html .align-self-lg-start,html[data-netbox-color-mode=dark] .align-self-lg-start,html[data-netbox-color-mode=light] .align-self-lg-start{align-self:flex-start!important}html .align-self-lg-end,html[data-netbox-color-mode=dark] .align-self-lg-end,html[data-netbox-color-mode=light] .align-self-lg-end{align-self:flex-end!important}html .align-self-lg-center,html[data-netbox-color-mode=dark] .align-self-lg-center,html[data-netbox-color-mode=light] .align-self-lg-center{align-self:center!important}html .align-self-lg-baseline,html[data-netbox-color-mode=dark] .align-self-lg-baseline,html[data-netbox-color-mode=light] .align-self-lg-baseline{align-self:baseline!important}html .align-self-lg-stretch,html[data-netbox-color-mode=dark] .align-self-lg-stretch,html[data-netbox-color-mode=light] .align-self-lg-stretch{align-self:stretch!important}html .order-lg-first,html[data-netbox-color-mode=dark] .order-lg-first,html[data-netbox-color-mode=light] .order-lg-first{order:-1!important}html .order-lg-0,html[data-netbox-color-mode=dark] .order-lg-0,html[data-netbox-color-mode=light] .order-lg-0{order:0!important}html .order-lg-1,html[data-netbox-color-mode=dark] .order-lg-1,html[data-netbox-color-mode=light] .order-lg-1{order:1!important}html .order-lg-2,html[data-netbox-color-mode=dark] .order-lg-2,html[data-netbox-color-mode=light] .order-lg-2{order:2!important}html .order-lg-3,html[data-netbox-color-mode=dark] .order-lg-3,html[data-netbox-color-mode=light] .order-lg-3{order:3!important}html .order-lg-4,html[data-netbox-color-mode=dark] .order-lg-4,html[data-netbox-color-mode=light] .order-lg-4{order:4!important}html .order-lg-5,html[data-netbox-color-mode=dark] .order-lg-5,html[data-netbox-color-mode=light] .order-lg-5{order:5!important}html .order-lg-last,html[data-netbox-color-mode=dark] .order-lg-last,html[data-netbox-color-mode=light] .order-lg-last{order:6!important}html .m-lg-0,html[data-netbox-color-mode=dark] .m-lg-0,html[data-netbox-color-mode=light] .m-lg-0{margin:0!important}html .m-lg-1,html[data-netbox-color-mode=dark] .m-lg-1,html[data-netbox-color-mode=light] .m-lg-1{margin:.25rem!important}html .m-lg-2,html[data-netbox-color-mode=dark] .m-lg-2,html[data-netbox-color-mode=light] .m-lg-2{margin:.5rem!important}html .m-lg-3,html[data-netbox-color-mode=dark] .m-lg-3,html[data-netbox-color-mode=light] .m-lg-3{margin:1rem!important}html .m-lg-4,html[data-netbox-color-mode=dark] .m-lg-4,html[data-netbox-color-mode=light] .m-lg-4{margin:1.5rem!important}html .m-lg-5,html[data-netbox-color-mode=dark] .m-lg-5,html[data-netbox-color-mode=light] .m-lg-5{margin:3rem!important}html .m-lg-auto,html[data-netbox-color-mode=dark] .m-lg-auto,html[data-netbox-color-mode=light] .m-lg-auto{margin:auto!important}html .mx-lg-0,html[data-netbox-color-mode=dark] .mx-lg-0,html[data-netbox-color-mode=light] .mx-lg-0{margin-right:0!important;margin-left:0!important}html .mx-lg-1,html[data-netbox-color-mode=dark] .mx-lg-1,html[data-netbox-color-mode=light] .mx-lg-1{margin-right:.25rem!important;margin-left:.25rem!important}html .mx-lg-2,html[data-netbox-color-mode=dark] .mx-lg-2,html[data-netbox-color-mode=light] .mx-lg-2{margin-right:.5rem!important;margin-left:.5rem!important}html .mx-lg-3,html[data-netbox-color-mode=dark] .mx-lg-3,html[data-netbox-color-mode=light] .mx-lg-3{margin-right:1rem!important;margin-left:1rem!important}html .mx-lg-4,html[data-netbox-color-mode=dark] .mx-lg-4,html[data-netbox-color-mode=light] .mx-lg-4{margin-right:1.5rem!important;margin-left:1.5rem!important}html .mx-lg-5,html[data-netbox-color-mode=dark] .mx-lg-5,html[data-netbox-color-mode=light] .mx-lg-5{margin-right:3rem!important;margin-left:3rem!important}html .mx-lg-auto,html[data-netbox-color-mode=dark] .mx-lg-auto,html[data-netbox-color-mode=light] .mx-lg-auto{margin-right:auto!important;margin-left:auto!important}html .my-lg-0,html[data-netbox-color-mode=dark] .my-lg-0,html[data-netbox-color-mode=light] .my-lg-0{margin-top:0!important;margin-bottom:0!important}html .my-lg-1,html[data-netbox-color-mode=dark] .my-lg-1,html[data-netbox-color-mode=light] .my-lg-1{margin-top:.25rem!important;margin-bottom:.25rem!important}html .my-lg-2,html[data-netbox-color-mode=dark] .my-lg-2,html[data-netbox-color-mode=light] .my-lg-2{margin-top:.5rem!important;margin-bottom:.5rem!important}html .my-lg-3,html[data-netbox-color-mode=dark] .my-lg-3,html[data-netbox-color-mode=light] .my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important}html .my-lg-4,html[data-netbox-color-mode=dark] .my-lg-4,html[data-netbox-color-mode=light] .my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}html .my-lg-5,html[data-netbox-color-mode=dark] .my-lg-5,html[data-netbox-color-mode=light] .my-lg-5{margin-top:3rem!important;margin-bottom:3rem!important}html .my-lg-auto,html[data-netbox-color-mode=dark] .my-lg-auto,html[data-netbox-color-mode=light] .my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}html .mt-lg-0,html[data-netbox-color-mode=dark] .mt-lg-0,html[data-netbox-color-mode=light] .mt-lg-0{margin-top:0!important}html .mt-lg-1,html[data-netbox-color-mode=dark] .mt-lg-1,html[data-netbox-color-mode=light] .mt-lg-1{margin-top:.25rem!important}html .mt-lg-2,html[data-netbox-color-mode=dark] .mt-lg-2,html[data-netbox-color-mode=light] .mt-lg-2{margin-top:.5rem!important}html .mt-lg-3,html[data-netbox-color-mode=dark] .mt-lg-3,html[data-netbox-color-mode=light] .mt-lg-3{margin-top:1rem!important}html .mt-lg-4,html[data-netbox-color-mode=dark] .mt-lg-4,html[data-netbox-color-mode=light] .mt-lg-4{margin-top:1.5rem!important}html .mt-lg-5,html[data-netbox-color-mode=dark] .mt-lg-5,html[data-netbox-color-mode=light] .mt-lg-5{margin-top:3rem!important}html .mt-lg-auto,html[data-netbox-color-mode=dark] .mt-lg-auto,html[data-netbox-color-mode=light] .mt-lg-auto{margin-top:auto!important}html .me-lg-0,html[data-netbox-color-mode=dark] .me-lg-0,html[data-netbox-color-mode=light] .me-lg-0{margin-right:0!important}html .me-lg-1,html[data-netbox-color-mode=dark] .me-lg-1,html[data-netbox-color-mode=light] .me-lg-1{margin-right:.25rem!important}html .me-lg-2,html[data-netbox-color-mode=dark] .me-lg-2,html[data-netbox-color-mode=light] .me-lg-2{margin-right:.5rem!important}html .me-lg-3,html[data-netbox-color-mode=dark] .me-lg-3,html[data-netbox-color-mode=light] .me-lg-3{margin-right:1rem!important}html .me-lg-4,html[data-netbox-color-mode=dark] .me-lg-4,html[data-netbox-color-mode=light] .me-lg-4{margin-right:1.5rem!important}html .me-lg-5,html[data-netbox-color-mode=dark] .me-lg-5,html[data-netbox-color-mode=light] .me-lg-5{margin-right:3rem!important}html .me-lg-auto,html[data-netbox-color-mode=dark] .me-lg-auto,html[data-netbox-color-mode=light] .me-lg-auto{margin-right:auto!important}html .mb-lg-0,html[data-netbox-color-mode=dark] .mb-lg-0,html[data-netbox-color-mode=light] .mb-lg-0{margin-bottom:0!important}html .mb-lg-1,html[data-netbox-color-mode=dark] .mb-lg-1,html[data-netbox-color-mode=light] .mb-lg-1{margin-bottom:.25rem!important}html .mb-lg-2,html[data-netbox-color-mode=dark] .mb-lg-2,html[data-netbox-color-mode=light] .mb-lg-2{margin-bottom:.5rem!important}html .mb-lg-3,html[data-netbox-color-mode=dark] .mb-lg-3,html[data-netbox-color-mode=light] .mb-lg-3{margin-bottom:1rem!important}html .mb-lg-4,html[data-netbox-color-mode=dark] .mb-lg-4,html[data-netbox-color-mode=light] .mb-lg-4{margin-bottom:1.5rem!important}html .mb-lg-5,html[data-netbox-color-mode=dark] .mb-lg-5,html[data-netbox-color-mode=light] .mb-lg-5{margin-bottom:3rem!important}html .mb-lg-auto,html[data-netbox-color-mode=dark] .mb-lg-auto,html[data-netbox-color-mode=light] .mb-lg-auto{margin-bottom:auto!important}html .ms-lg-0,html[data-netbox-color-mode=dark] .ms-lg-0,html[data-netbox-color-mode=light] .ms-lg-0{margin-left:0!important}html .ms-lg-1,html[data-netbox-color-mode=dark] .ms-lg-1,html[data-netbox-color-mode=light] .ms-lg-1{margin-left:.25rem!important}html .ms-lg-2,html[data-netbox-color-mode=dark] .ms-lg-2,html[data-netbox-color-mode=light] .ms-lg-2{margin-left:.5rem!important}html .ms-lg-3,html[data-netbox-color-mode=dark] .ms-lg-3,html[data-netbox-color-mode=light] .ms-lg-3{margin-left:1rem!important}html .ms-lg-4,html[data-netbox-color-mode=dark] .ms-lg-4,html[data-netbox-color-mode=light] .ms-lg-4{margin-left:1.5rem!important}html .ms-lg-5,html[data-netbox-color-mode=dark] .ms-lg-5,html[data-netbox-color-mode=light] .ms-lg-5{margin-left:3rem!important}html .ms-lg-auto,html[data-netbox-color-mode=dark] .ms-lg-auto,html[data-netbox-color-mode=light] .ms-lg-auto{margin-left:auto!important}html .p-lg-0,html[data-netbox-color-mode=dark] .p-lg-0,html[data-netbox-color-mode=light] .p-lg-0{padding:0!important}html .p-lg-1,html[data-netbox-color-mode=dark] .p-lg-1,html[data-netbox-color-mode=light] .p-lg-1{padding:.25rem!important}html .p-lg-2,html[data-netbox-color-mode=dark] .p-lg-2,html[data-netbox-color-mode=light] .p-lg-2{padding:.5rem!important}html .p-lg-3,html[data-netbox-color-mode=dark] .p-lg-3,html[data-netbox-color-mode=light] .p-lg-3{padding:1rem!important}html .p-lg-4,html[data-netbox-color-mode=dark] .p-lg-4,html[data-netbox-color-mode=light] .p-lg-4{padding:1.5rem!important}html .p-lg-5,html[data-netbox-color-mode=dark] .p-lg-5,html[data-netbox-color-mode=light] .p-lg-5{padding:3rem!important}html .px-lg-0,html[data-netbox-color-mode=dark] .px-lg-0,html[data-netbox-color-mode=light] .px-lg-0{padding-right:0!important;padding-left:0!important}html .px-lg-1,html[data-netbox-color-mode=dark] .px-lg-1,html[data-netbox-color-mode=light] .px-lg-1{padding-right:.25rem!important;padding-left:.25rem!important}html .px-lg-2,html[data-netbox-color-mode=dark] .px-lg-2,html[data-netbox-color-mode=light] .px-lg-2{padding-right:.5rem!important;padding-left:.5rem!important}html .px-lg-3,html[data-netbox-color-mode=dark] .px-lg-3,html[data-netbox-color-mode=light] .px-lg-3{padding-right:1rem!important;padding-left:1rem!important}html .px-lg-4,html[data-netbox-color-mode=dark] .px-lg-4,html[data-netbox-color-mode=light] .px-lg-4{padding-right:1.5rem!important;padding-left:1.5rem!important}html .px-lg-5,html[data-netbox-color-mode=dark] .px-lg-5,html[data-netbox-color-mode=light] .px-lg-5{padding-right:3rem!important;padding-left:3rem!important}html .py-lg-0,html[data-netbox-color-mode=dark] .py-lg-0,html[data-netbox-color-mode=light] .py-lg-0{padding-top:0!important;padding-bottom:0!important}html .py-lg-1,html[data-netbox-color-mode=dark] .py-lg-1,html[data-netbox-color-mode=light] .py-lg-1{padding-top:.25rem!important;padding-bottom:.25rem!important}html .py-lg-2,html[data-netbox-color-mode=dark] .py-lg-2,html[data-netbox-color-mode=light] .py-lg-2{padding-top:.5rem!important;padding-bottom:.5rem!important}html .py-lg-3,html[data-netbox-color-mode=dark] .py-lg-3,html[data-netbox-color-mode=light] .py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important}html .py-lg-4,html[data-netbox-color-mode=dark] .py-lg-4,html[data-netbox-color-mode=light] .py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}html .py-lg-5,html[data-netbox-color-mode=dark] .py-lg-5,html[data-netbox-color-mode=light] .py-lg-5{padding-top:3rem!important;padding-bottom:3rem!important}html .pt-lg-0,html[data-netbox-color-mode=dark] .pt-lg-0,html[data-netbox-color-mode=light] .pt-lg-0{padding-top:0!important}html .pt-lg-1,html[data-netbox-color-mode=dark] .pt-lg-1,html[data-netbox-color-mode=light] .pt-lg-1{padding-top:.25rem!important}html .pt-lg-2,html[data-netbox-color-mode=dark] .pt-lg-2,html[data-netbox-color-mode=light] .pt-lg-2{padding-top:.5rem!important}html .pt-lg-3,html[data-netbox-color-mode=dark] .pt-lg-3,html[data-netbox-color-mode=light] .pt-lg-3{padding-top:1rem!important}html .pt-lg-4,html[data-netbox-color-mode=dark] .pt-lg-4,html[data-netbox-color-mode=light] .pt-lg-4{padding-top:1.5rem!important}html .pt-lg-5,html[data-netbox-color-mode=dark] .pt-lg-5,html[data-netbox-color-mode=light] .pt-lg-5{padding-top:3rem!important}html .pe-lg-0,html[data-netbox-color-mode=dark] .pe-lg-0,html[data-netbox-color-mode=light] .pe-lg-0{padding-right:0!important}html .pe-lg-1,html[data-netbox-color-mode=dark] .pe-lg-1,html[data-netbox-color-mode=light] .pe-lg-1{padding-right:.25rem!important}html .pe-lg-2,html[data-netbox-color-mode=dark] .pe-lg-2,html[data-netbox-color-mode=light] .pe-lg-2{padding-right:.5rem!important}html .pe-lg-3,html[data-netbox-color-mode=dark] .pe-lg-3,html[data-netbox-color-mode=light] .pe-lg-3{padding-right:1rem!important}html .pe-lg-4,html[data-netbox-color-mode=dark] .pe-lg-4,html[data-netbox-color-mode=light] .pe-lg-4{padding-right:1.5rem!important}html .pe-lg-5,html[data-netbox-color-mode=dark] .pe-lg-5,html[data-netbox-color-mode=light] .pe-lg-5{padding-right:3rem!important}html .pb-lg-0,html[data-netbox-color-mode=dark] .pb-lg-0,html[data-netbox-color-mode=light] .pb-lg-0{padding-bottom:0!important}html .pb-lg-1,html[data-netbox-color-mode=dark] .pb-lg-1,html[data-netbox-color-mode=light] .pb-lg-1{padding-bottom:.25rem!important}html .pb-lg-2,html[data-netbox-color-mode=dark] .pb-lg-2,html[data-netbox-color-mode=light] .pb-lg-2{padding-bottom:.5rem!important}html .pb-lg-3,html[data-netbox-color-mode=dark] .pb-lg-3,html[data-netbox-color-mode=light] .pb-lg-3{padding-bottom:1rem!important}html .pb-lg-4,html[data-netbox-color-mode=dark] .pb-lg-4,html[data-netbox-color-mode=light] .pb-lg-4{padding-bottom:1.5rem!important}html .pb-lg-5,html[data-netbox-color-mode=dark] .pb-lg-5,html[data-netbox-color-mode=light] .pb-lg-5{padding-bottom:3rem!important}html .ps-lg-0,html[data-netbox-color-mode=dark] .ps-lg-0,html[data-netbox-color-mode=light] .ps-lg-0{padding-left:0!important}html .ps-lg-1,html[data-netbox-color-mode=dark] .ps-lg-1,html[data-netbox-color-mode=light] .ps-lg-1{padding-left:.25rem!important}html .ps-lg-2,html[data-netbox-color-mode=dark] .ps-lg-2,html[data-netbox-color-mode=light] .ps-lg-2{padding-left:.5rem!important}html .ps-lg-3,html[data-netbox-color-mode=dark] .ps-lg-3,html[data-netbox-color-mode=light] .ps-lg-3{padding-left:1rem!important}html .ps-lg-4,html[data-netbox-color-mode=dark] .ps-lg-4,html[data-netbox-color-mode=light] .ps-lg-4{padding-left:1.5rem!important}html .ps-lg-5,html[data-netbox-color-mode=dark] .ps-lg-5,html[data-netbox-color-mode=light] .ps-lg-5{padding-left:3rem!important}html .text-lg-start,html[data-netbox-color-mode=dark] .text-lg-start,html[data-netbox-color-mode=light] .text-lg-start{text-align:left!important}html .text-lg-end,html[data-netbox-color-mode=dark] .text-lg-end,html[data-netbox-color-mode=light] .text-lg-end{text-align:right!important}html .text-lg-center,html[data-netbox-color-mode=dark] .text-lg-center,html[data-netbox-color-mode=light] .text-lg-center{text-align:center!important}}@media print and (min-width: 1200px){html .float-xl-start,html[data-netbox-color-mode=dark] .float-xl-start,html[data-netbox-color-mode=light] .float-xl-start{float:left!important}html .float-xl-end,html[data-netbox-color-mode=dark] .float-xl-end,html[data-netbox-color-mode=light] .float-xl-end{float:right!important}html .float-xl-none,html[data-netbox-color-mode=dark] .float-xl-none,html[data-netbox-color-mode=light] .float-xl-none{float:none!important}html .d-xl-inline,html[data-netbox-color-mode=dark] .d-xl-inline,html[data-netbox-color-mode=light] .d-xl-inline{display:inline!important}html .d-xl-inline-block,html[data-netbox-color-mode=dark] .d-xl-inline-block,html[data-netbox-color-mode=light] .d-xl-inline-block{display:inline-block!important}html .d-xl-block,html[data-netbox-color-mode=dark] .d-xl-block,html[data-netbox-color-mode=light] .d-xl-block{display:block!important}html .d-xl-grid,html[data-netbox-color-mode=dark] .d-xl-grid,html[data-netbox-color-mode=light] .d-xl-grid{display:grid!important}html .d-xl-table,html[data-netbox-color-mode=dark] .d-xl-table,html[data-netbox-color-mode=light] .d-xl-table{display:table!important}html .d-xl-table-row,html[data-netbox-color-mode=dark] .d-xl-table-row,html[data-netbox-color-mode=light] .d-xl-table-row{display:table-row!important}html .d-xl-table-cell,html[data-netbox-color-mode=dark] .d-xl-table-cell,html[data-netbox-color-mode=light] .d-xl-table-cell{display:table-cell!important}html .d-xl-flex,html[data-netbox-color-mode=dark] .d-xl-flex,html[data-netbox-color-mode=light] .d-xl-flex{display:flex!important}html .d-xl-inline-flex,html[data-netbox-color-mode=dark] .d-xl-inline-flex,html[data-netbox-color-mode=light] .d-xl-inline-flex{display:inline-flex!important}html .d-xl-none,html[data-netbox-color-mode=dark] .d-xl-none,html[data-netbox-color-mode=light] .d-xl-none{display:none!important}html .flex-xl-fill,html[data-netbox-color-mode=dark] .flex-xl-fill,html[data-netbox-color-mode=light] .flex-xl-fill{flex:1 1 auto!important}html .flex-xl-row,html[data-netbox-color-mode=dark] .flex-xl-row,html[data-netbox-color-mode=light] .flex-xl-row{flex-direction:row!important}html .flex-xl-column,html[data-netbox-color-mode=dark] .flex-xl-column,html[data-netbox-color-mode=light] .flex-xl-column{flex-direction:column!important}html .flex-xl-row-reverse,html[data-netbox-color-mode=dark] .flex-xl-row-reverse,html[data-netbox-color-mode=light] .flex-xl-row-reverse{flex-direction:row-reverse!important}html .flex-xl-column-reverse,html[data-netbox-color-mode=dark] .flex-xl-column-reverse,html[data-netbox-color-mode=light] .flex-xl-column-reverse{flex-direction:column-reverse!important}html .flex-xl-grow-0,html[data-netbox-color-mode=dark] .flex-xl-grow-0,html[data-netbox-color-mode=light] .flex-xl-grow-0{flex-grow:0!important}html .flex-xl-grow-1,html[data-netbox-color-mode=dark] .flex-xl-grow-1,html[data-netbox-color-mode=light] .flex-xl-grow-1{flex-grow:1!important}html .flex-xl-shrink-0,html[data-netbox-color-mode=dark] .flex-xl-shrink-0,html[data-netbox-color-mode=light] .flex-xl-shrink-0{flex-shrink:0!important}html .flex-xl-shrink-1,html[data-netbox-color-mode=dark] .flex-xl-shrink-1,html[data-netbox-color-mode=light] .flex-xl-shrink-1{flex-shrink:1!important}html .flex-xl-wrap,html[data-netbox-color-mode=dark] .flex-xl-wrap,html[data-netbox-color-mode=light] .flex-xl-wrap{flex-wrap:wrap!important}html .flex-xl-nowrap,html[data-netbox-color-mode=dark] .flex-xl-nowrap,html[data-netbox-color-mode=light] .flex-xl-nowrap{flex-wrap:nowrap!important}html .flex-xl-wrap-reverse,html[data-netbox-color-mode=dark] .flex-xl-wrap-reverse,html[data-netbox-color-mode=light] .flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}html .gap-xl-0,html[data-netbox-color-mode=dark] .gap-xl-0,html[data-netbox-color-mode=light] .gap-xl-0{gap:0!important}html .gap-xl-1,html[data-netbox-color-mode=dark] .gap-xl-1,html[data-netbox-color-mode=light] .gap-xl-1{gap:.25rem!important}html .gap-xl-2,html[data-netbox-color-mode=dark] .gap-xl-2,html[data-netbox-color-mode=light] .gap-xl-2{gap:.5rem!important}html .gap-xl-3,html[data-netbox-color-mode=dark] .gap-xl-3,html[data-netbox-color-mode=light] .gap-xl-3{gap:1rem!important}html .gap-xl-4,html[data-netbox-color-mode=dark] .gap-xl-4,html[data-netbox-color-mode=light] .gap-xl-4{gap:1.5rem!important}html .gap-xl-5,html[data-netbox-color-mode=dark] .gap-xl-5,html[data-netbox-color-mode=light] .gap-xl-5{gap:3rem!important}html .justify-content-xl-start,html[data-netbox-color-mode=dark] .justify-content-xl-start,html[data-netbox-color-mode=light] .justify-content-xl-start{justify-content:flex-start!important}html .justify-content-xl-end,html[data-netbox-color-mode=dark] .justify-content-xl-end,html[data-netbox-color-mode=light] .justify-content-xl-end{justify-content:flex-end!important}html .justify-content-xl-center,html[data-netbox-color-mode=dark] .justify-content-xl-center,html[data-netbox-color-mode=light] .justify-content-xl-center{justify-content:center!important}html .justify-content-xl-between,html[data-netbox-color-mode=dark] .justify-content-xl-between,html[data-netbox-color-mode=light] .justify-content-xl-between{justify-content:space-between!important}html .justify-content-xl-around,html[data-netbox-color-mode=dark] .justify-content-xl-around,html[data-netbox-color-mode=light] .justify-content-xl-around{justify-content:space-around!important}html .justify-content-xl-evenly,html[data-netbox-color-mode=dark] .justify-content-xl-evenly,html[data-netbox-color-mode=light] .justify-content-xl-evenly{justify-content:space-evenly!important}html .align-items-xl-start,html[data-netbox-color-mode=dark] .align-items-xl-start,html[data-netbox-color-mode=light] .align-items-xl-start{align-items:flex-start!important}html .align-items-xl-end,html[data-netbox-color-mode=dark] .align-items-xl-end,html[data-netbox-color-mode=light] .align-items-xl-end{align-items:flex-end!important}html .align-items-xl-center,html[data-netbox-color-mode=dark] .align-items-xl-center,html[data-netbox-color-mode=light] .align-items-xl-center{align-items:center!important}html .align-items-xl-baseline,html[data-netbox-color-mode=dark] .align-items-xl-baseline,html[data-netbox-color-mode=light] .align-items-xl-baseline{align-items:baseline!important}html .align-items-xl-stretch,html[data-netbox-color-mode=dark] .align-items-xl-stretch,html[data-netbox-color-mode=light] .align-items-xl-stretch{align-items:stretch!important}html .align-content-xl-start,html[data-netbox-color-mode=dark] .align-content-xl-start,html[data-netbox-color-mode=light] .align-content-xl-start{align-content:flex-start!important}html .align-content-xl-end,html[data-netbox-color-mode=dark] .align-content-xl-end,html[data-netbox-color-mode=light] .align-content-xl-end{align-content:flex-end!important}html .align-content-xl-center,html[data-netbox-color-mode=dark] .align-content-xl-center,html[data-netbox-color-mode=light] .align-content-xl-center{align-content:center!important}html .align-content-xl-between,html[data-netbox-color-mode=dark] .align-content-xl-between,html[data-netbox-color-mode=light] .align-content-xl-between{align-content:space-between!important}html .align-content-xl-around,html[data-netbox-color-mode=dark] .align-content-xl-around,html[data-netbox-color-mode=light] .align-content-xl-around{align-content:space-around!important}html .align-content-xl-stretch,html[data-netbox-color-mode=dark] .align-content-xl-stretch,html[data-netbox-color-mode=light] .align-content-xl-stretch{align-content:stretch!important}html .align-self-xl-auto,html[data-netbox-color-mode=dark] .align-self-xl-auto,html[data-netbox-color-mode=light] .align-self-xl-auto{align-self:auto!important}html .align-self-xl-start,html[data-netbox-color-mode=dark] .align-self-xl-start,html[data-netbox-color-mode=light] .align-self-xl-start{align-self:flex-start!important}html .align-self-xl-end,html[data-netbox-color-mode=dark] .align-self-xl-end,html[data-netbox-color-mode=light] .align-self-xl-end{align-self:flex-end!important}html .align-self-xl-center,html[data-netbox-color-mode=dark] .align-self-xl-center,html[data-netbox-color-mode=light] .align-self-xl-center{align-self:center!important}html .align-self-xl-baseline,html[data-netbox-color-mode=dark] .align-self-xl-baseline,html[data-netbox-color-mode=light] .align-self-xl-baseline{align-self:baseline!important}html .align-self-xl-stretch,html[data-netbox-color-mode=dark] .align-self-xl-stretch,html[data-netbox-color-mode=light] .align-self-xl-stretch{align-self:stretch!important}html .order-xl-first,html[data-netbox-color-mode=dark] .order-xl-first,html[data-netbox-color-mode=light] .order-xl-first{order:-1!important}html .order-xl-0,html[data-netbox-color-mode=dark] .order-xl-0,html[data-netbox-color-mode=light] .order-xl-0{order:0!important}html .order-xl-1,html[data-netbox-color-mode=dark] .order-xl-1,html[data-netbox-color-mode=light] .order-xl-1{order:1!important}html .order-xl-2,html[data-netbox-color-mode=dark] .order-xl-2,html[data-netbox-color-mode=light] .order-xl-2{order:2!important}html .order-xl-3,html[data-netbox-color-mode=dark] .order-xl-3,html[data-netbox-color-mode=light] .order-xl-3{order:3!important}html .order-xl-4,html[data-netbox-color-mode=dark] .order-xl-4,html[data-netbox-color-mode=light] .order-xl-4{order:4!important}html .order-xl-5,html[data-netbox-color-mode=dark] .order-xl-5,html[data-netbox-color-mode=light] .order-xl-5{order:5!important}html .order-xl-last,html[data-netbox-color-mode=dark] .order-xl-last,html[data-netbox-color-mode=light] .order-xl-last{order:6!important}html .m-xl-0,html[data-netbox-color-mode=dark] .m-xl-0,html[data-netbox-color-mode=light] .m-xl-0{margin:0!important}html .m-xl-1,html[data-netbox-color-mode=dark] .m-xl-1,html[data-netbox-color-mode=light] .m-xl-1{margin:.25rem!important}html .m-xl-2,html[data-netbox-color-mode=dark] .m-xl-2,html[data-netbox-color-mode=light] .m-xl-2{margin:.5rem!important}html .m-xl-3,html[data-netbox-color-mode=dark] .m-xl-3,html[data-netbox-color-mode=light] .m-xl-3{margin:1rem!important}html .m-xl-4,html[data-netbox-color-mode=dark] .m-xl-4,html[data-netbox-color-mode=light] .m-xl-4{margin:1.5rem!important}html .m-xl-5,html[data-netbox-color-mode=dark] .m-xl-5,html[data-netbox-color-mode=light] .m-xl-5{margin:3rem!important}html .m-xl-auto,html[data-netbox-color-mode=dark] .m-xl-auto,html[data-netbox-color-mode=light] .m-xl-auto{margin:auto!important}html .mx-xl-0,html[data-netbox-color-mode=dark] .mx-xl-0,html[data-netbox-color-mode=light] .mx-xl-0{margin-right:0!important;margin-left:0!important}html .mx-xl-1,html[data-netbox-color-mode=dark] .mx-xl-1,html[data-netbox-color-mode=light] .mx-xl-1{margin-right:.25rem!important;margin-left:.25rem!important}html .mx-xl-2,html[data-netbox-color-mode=dark] .mx-xl-2,html[data-netbox-color-mode=light] .mx-xl-2{margin-right:.5rem!important;margin-left:.5rem!important}html .mx-xl-3,html[data-netbox-color-mode=dark] .mx-xl-3,html[data-netbox-color-mode=light] .mx-xl-3{margin-right:1rem!important;margin-left:1rem!important}html .mx-xl-4,html[data-netbox-color-mode=dark] .mx-xl-4,html[data-netbox-color-mode=light] .mx-xl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}html .mx-xl-5,html[data-netbox-color-mode=dark] .mx-xl-5,html[data-netbox-color-mode=light] .mx-xl-5{margin-right:3rem!important;margin-left:3rem!important}html .mx-xl-auto,html[data-netbox-color-mode=dark] .mx-xl-auto,html[data-netbox-color-mode=light] .mx-xl-auto{margin-right:auto!important;margin-left:auto!important}html .my-xl-0,html[data-netbox-color-mode=dark] .my-xl-0,html[data-netbox-color-mode=light] .my-xl-0{margin-top:0!important;margin-bottom:0!important}html .my-xl-1,html[data-netbox-color-mode=dark] .my-xl-1,html[data-netbox-color-mode=light] .my-xl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}html .my-xl-2,html[data-netbox-color-mode=dark] .my-xl-2,html[data-netbox-color-mode=light] .my-xl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}html .my-xl-3,html[data-netbox-color-mode=dark] .my-xl-3,html[data-netbox-color-mode=light] .my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important}html .my-xl-4,html[data-netbox-color-mode=dark] .my-xl-4,html[data-netbox-color-mode=light] .my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}html .my-xl-5,html[data-netbox-color-mode=dark] .my-xl-5,html[data-netbox-color-mode=light] .my-xl-5{margin-top:3rem!important;margin-bottom:3rem!important}html .my-xl-auto,html[data-netbox-color-mode=dark] .my-xl-auto,html[data-netbox-color-mode=light] .my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}html .mt-xl-0,html[data-netbox-color-mode=dark] .mt-xl-0,html[data-netbox-color-mode=light] .mt-xl-0{margin-top:0!important}html .mt-xl-1,html[data-netbox-color-mode=dark] .mt-xl-1,html[data-netbox-color-mode=light] .mt-xl-1{margin-top:.25rem!important}html .mt-xl-2,html[data-netbox-color-mode=dark] .mt-xl-2,html[data-netbox-color-mode=light] .mt-xl-2{margin-top:.5rem!important}html .mt-xl-3,html[data-netbox-color-mode=dark] .mt-xl-3,html[data-netbox-color-mode=light] .mt-xl-3{margin-top:1rem!important}html .mt-xl-4,html[data-netbox-color-mode=dark] .mt-xl-4,html[data-netbox-color-mode=light] .mt-xl-4{margin-top:1.5rem!important}html .mt-xl-5,html[data-netbox-color-mode=dark] .mt-xl-5,html[data-netbox-color-mode=light] .mt-xl-5{margin-top:3rem!important}html .mt-xl-auto,html[data-netbox-color-mode=dark] .mt-xl-auto,html[data-netbox-color-mode=light] .mt-xl-auto{margin-top:auto!important}html .me-xl-0,html[data-netbox-color-mode=dark] .me-xl-0,html[data-netbox-color-mode=light] .me-xl-0{margin-right:0!important}html .me-xl-1,html[data-netbox-color-mode=dark] .me-xl-1,html[data-netbox-color-mode=light] .me-xl-1{margin-right:.25rem!important}html .me-xl-2,html[data-netbox-color-mode=dark] .me-xl-2,html[data-netbox-color-mode=light] .me-xl-2{margin-right:.5rem!important}html .me-xl-3,html[data-netbox-color-mode=dark] .me-xl-3,html[data-netbox-color-mode=light] .me-xl-3{margin-right:1rem!important}html .me-xl-4,html[data-netbox-color-mode=dark] .me-xl-4,html[data-netbox-color-mode=light] .me-xl-4{margin-right:1.5rem!important}html .me-xl-5,html[data-netbox-color-mode=dark] .me-xl-5,html[data-netbox-color-mode=light] .me-xl-5{margin-right:3rem!important}html .me-xl-auto,html[data-netbox-color-mode=dark] .me-xl-auto,html[data-netbox-color-mode=light] .me-xl-auto{margin-right:auto!important}html .mb-xl-0,html[data-netbox-color-mode=dark] .mb-xl-0,html[data-netbox-color-mode=light] .mb-xl-0{margin-bottom:0!important}html .mb-xl-1,html[data-netbox-color-mode=dark] .mb-xl-1,html[data-netbox-color-mode=light] .mb-xl-1{margin-bottom:.25rem!important}html .mb-xl-2,html[data-netbox-color-mode=dark] .mb-xl-2,html[data-netbox-color-mode=light] .mb-xl-2{margin-bottom:.5rem!important}html .mb-xl-3,html[data-netbox-color-mode=dark] .mb-xl-3,html[data-netbox-color-mode=light] .mb-xl-3{margin-bottom:1rem!important}html .mb-xl-4,html[data-netbox-color-mode=dark] .mb-xl-4,html[data-netbox-color-mode=light] .mb-xl-4{margin-bottom:1.5rem!important}html .mb-xl-5,html[data-netbox-color-mode=dark] .mb-xl-5,html[data-netbox-color-mode=light] .mb-xl-5{margin-bottom:3rem!important}html .mb-xl-auto,html[data-netbox-color-mode=dark] .mb-xl-auto,html[data-netbox-color-mode=light] .mb-xl-auto{margin-bottom:auto!important}html .ms-xl-0,html[data-netbox-color-mode=dark] .ms-xl-0,html[data-netbox-color-mode=light] .ms-xl-0{margin-left:0!important}html .ms-xl-1,html[data-netbox-color-mode=dark] .ms-xl-1,html[data-netbox-color-mode=light] .ms-xl-1{margin-left:.25rem!important}html .ms-xl-2,html[data-netbox-color-mode=dark] .ms-xl-2,html[data-netbox-color-mode=light] .ms-xl-2{margin-left:.5rem!important}html .ms-xl-3,html[data-netbox-color-mode=dark] .ms-xl-3,html[data-netbox-color-mode=light] .ms-xl-3{margin-left:1rem!important}html .ms-xl-4,html[data-netbox-color-mode=dark] .ms-xl-4,html[data-netbox-color-mode=light] .ms-xl-4{margin-left:1.5rem!important}html .ms-xl-5,html[data-netbox-color-mode=dark] .ms-xl-5,html[data-netbox-color-mode=light] .ms-xl-5{margin-left:3rem!important}html .ms-xl-auto,html[data-netbox-color-mode=dark] .ms-xl-auto,html[data-netbox-color-mode=light] .ms-xl-auto{margin-left:auto!important}html .p-xl-0,html[data-netbox-color-mode=dark] .p-xl-0,html[data-netbox-color-mode=light] .p-xl-0{padding:0!important}html .p-xl-1,html[data-netbox-color-mode=dark] .p-xl-1,html[data-netbox-color-mode=light] .p-xl-1{padding:.25rem!important}html .p-xl-2,html[data-netbox-color-mode=dark] .p-xl-2,html[data-netbox-color-mode=light] .p-xl-2{padding:.5rem!important}html .p-xl-3,html[data-netbox-color-mode=dark] .p-xl-3,html[data-netbox-color-mode=light] .p-xl-3{padding:1rem!important}html .p-xl-4,html[data-netbox-color-mode=dark] .p-xl-4,html[data-netbox-color-mode=light] .p-xl-4{padding:1.5rem!important}html .p-xl-5,html[data-netbox-color-mode=dark] .p-xl-5,html[data-netbox-color-mode=light] .p-xl-5{padding:3rem!important}html .px-xl-0,html[data-netbox-color-mode=dark] .px-xl-0,html[data-netbox-color-mode=light] .px-xl-0{padding-right:0!important;padding-left:0!important}html .px-xl-1,html[data-netbox-color-mode=dark] .px-xl-1,html[data-netbox-color-mode=light] .px-xl-1{padding-right:.25rem!important;padding-left:.25rem!important}html .px-xl-2,html[data-netbox-color-mode=dark] .px-xl-2,html[data-netbox-color-mode=light] .px-xl-2{padding-right:.5rem!important;padding-left:.5rem!important}html .px-xl-3,html[data-netbox-color-mode=dark] .px-xl-3,html[data-netbox-color-mode=light] .px-xl-3{padding-right:1rem!important;padding-left:1rem!important}html .px-xl-4,html[data-netbox-color-mode=dark] .px-xl-4,html[data-netbox-color-mode=light] .px-xl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}html .px-xl-5,html[data-netbox-color-mode=dark] .px-xl-5,html[data-netbox-color-mode=light] .px-xl-5{padding-right:3rem!important;padding-left:3rem!important}html .py-xl-0,html[data-netbox-color-mode=dark] .py-xl-0,html[data-netbox-color-mode=light] .py-xl-0{padding-top:0!important;padding-bottom:0!important}html .py-xl-1,html[data-netbox-color-mode=dark] .py-xl-1,html[data-netbox-color-mode=light] .py-xl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}html .py-xl-2,html[data-netbox-color-mode=dark] .py-xl-2,html[data-netbox-color-mode=light] .py-xl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}html .py-xl-3,html[data-netbox-color-mode=dark] .py-xl-3,html[data-netbox-color-mode=light] .py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important}html .py-xl-4,html[data-netbox-color-mode=dark] .py-xl-4,html[data-netbox-color-mode=light] .py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}html .py-xl-5,html[data-netbox-color-mode=dark] .py-xl-5,html[data-netbox-color-mode=light] .py-xl-5{padding-top:3rem!important;padding-bottom:3rem!important}html .pt-xl-0,html[data-netbox-color-mode=dark] .pt-xl-0,html[data-netbox-color-mode=light] .pt-xl-0{padding-top:0!important}html .pt-xl-1,html[data-netbox-color-mode=dark] .pt-xl-1,html[data-netbox-color-mode=light] .pt-xl-1{padding-top:.25rem!important}html .pt-xl-2,html[data-netbox-color-mode=dark] .pt-xl-2,html[data-netbox-color-mode=light] .pt-xl-2{padding-top:.5rem!important}html .pt-xl-3,html[data-netbox-color-mode=dark] .pt-xl-3,html[data-netbox-color-mode=light] .pt-xl-3{padding-top:1rem!important}html .pt-xl-4,html[data-netbox-color-mode=dark] .pt-xl-4,html[data-netbox-color-mode=light] .pt-xl-4{padding-top:1.5rem!important}html .pt-xl-5,html[data-netbox-color-mode=dark] .pt-xl-5,html[data-netbox-color-mode=light] .pt-xl-5{padding-top:3rem!important}html .pe-xl-0,html[data-netbox-color-mode=dark] .pe-xl-0,html[data-netbox-color-mode=light] .pe-xl-0{padding-right:0!important}html .pe-xl-1,html[data-netbox-color-mode=dark] .pe-xl-1,html[data-netbox-color-mode=light] .pe-xl-1{padding-right:.25rem!important}html .pe-xl-2,html[data-netbox-color-mode=dark] .pe-xl-2,html[data-netbox-color-mode=light] .pe-xl-2{padding-right:.5rem!important}html .pe-xl-3,html[data-netbox-color-mode=dark] .pe-xl-3,html[data-netbox-color-mode=light] .pe-xl-3{padding-right:1rem!important}html .pe-xl-4,html[data-netbox-color-mode=dark] .pe-xl-4,html[data-netbox-color-mode=light] .pe-xl-4{padding-right:1.5rem!important}html .pe-xl-5,html[data-netbox-color-mode=dark] .pe-xl-5,html[data-netbox-color-mode=light] .pe-xl-5{padding-right:3rem!important}html .pb-xl-0,html[data-netbox-color-mode=dark] .pb-xl-0,html[data-netbox-color-mode=light] .pb-xl-0{padding-bottom:0!important}html .pb-xl-1,html[data-netbox-color-mode=dark] .pb-xl-1,html[data-netbox-color-mode=light] .pb-xl-1{padding-bottom:.25rem!important}html .pb-xl-2,html[data-netbox-color-mode=dark] .pb-xl-2,html[data-netbox-color-mode=light] .pb-xl-2{padding-bottom:.5rem!important}html .pb-xl-3,html[data-netbox-color-mode=dark] .pb-xl-3,html[data-netbox-color-mode=light] .pb-xl-3{padding-bottom:1rem!important}html .pb-xl-4,html[data-netbox-color-mode=dark] .pb-xl-4,html[data-netbox-color-mode=light] .pb-xl-4{padding-bottom:1.5rem!important}html .pb-xl-5,html[data-netbox-color-mode=dark] .pb-xl-5,html[data-netbox-color-mode=light] .pb-xl-5{padding-bottom:3rem!important}html .ps-xl-0,html[data-netbox-color-mode=dark] .ps-xl-0,html[data-netbox-color-mode=light] .ps-xl-0{padding-left:0!important}html .ps-xl-1,html[data-netbox-color-mode=dark] .ps-xl-1,html[data-netbox-color-mode=light] .ps-xl-1{padding-left:.25rem!important}html .ps-xl-2,html[data-netbox-color-mode=dark] .ps-xl-2,html[data-netbox-color-mode=light] .ps-xl-2{padding-left:.5rem!important}html .ps-xl-3,html[data-netbox-color-mode=dark] .ps-xl-3,html[data-netbox-color-mode=light] .ps-xl-3{padding-left:1rem!important}html .ps-xl-4,html[data-netbox-color-mode=dark] .ps-xl-4,html[data-netbox-color-mode=light] .ps-xl-4{padding-left:1.5rem!important}html .ps-xl-5,html[data-netbox-color-mode=dark] .ps-xl-5,html[data-netbox-color-mode=light] .ps-xl-5{padding-left:3rem!important}html .text-xl-start,html[data-netbox-color-mode=dark] .text-xl-start,html[data-netbox-color-mode=light] .text-xl-start{text-align:left!important}html .text-xl-end,html[data-netbox-color-mode=dark] .text-xl-end,html[data-netbox-color-mode=light] .text-xl-end{text-align:right!important}html .text-xl-center,html[data-netbox-color-mode=dark] .text-xl-center,html[data-netbox-color-mode=light] .text-xl-center{text-align:center!important}}@media print and (min-width: 1400px){html .float-xxl-start,html[data-netbox-color-mode=dark] .float-xxl-start,html[data-netbox-color-mode=light] .float-xxl-start{float:left!important}html .float-xxl-end,html[data-netbox-color-mode=dark] .float-xxl-end,html[data-netbox-color-mode=light] .float-xxl-end{float:right!important}html .float-xxl-none,html[data-netbox-color-mode=dark] .float-xxl-none,html[data-netbox-color-mode=light] .float-xxl-none{float:none!important}html .d-xxl-inline,html[data-netbox-color-mode=dark] .d-xxl-inline,html[data-netbox-color-mode=light] .d-xxl-inline{display:inline!important}html .d-xxl-inline-block,html[data-netbox-color-mode=dark] .d-xxl-inline-block,html[data-netbox-color-mode=light] .d-xxl-inline-block{display:inline-block!important}html .d-xxl-block,html[data-netbox-color-mode=dark] .d-xxl-block,html[data-netbox-color-mode=light] .d-xxl-block{display:block!important}html .d-xxl-grid,html[data-netbox-color-mode=dark] .d-xxl-grid,html[data-netbox-color-mode=light] .d-xxl-grid{display:grid!important}html .d-xxl-table,html[data-netbox-color-mode=dark] .d-xxl-table,html[data-netbox-color-mode=light] .d-xxl-table{display:table!important}html .d-xxl-table-row,html[data-netbox-color-mode=dark] .d-xxl-table-row,html[data-netbox-color-mode=light] .d-xxl-table-row{display:table-row!important}html .d-xxl-table-cell,html[data-netbox-color-mode=dark] .d-xxl-table-cell,html[data-netbox-color-mode=light] .d-xxl-table-cell{display:table-cell!important}html .d-xxl-flex,html[data-netbox-color-mode=dark] .d-xxl-flex,html[data-netbox-color-mode=light] .d-xxl-flex{display:flex!important}html .d-xxl-inline-flex,html[data-netbox-color-mode=dark] .d-xxl-inline-flex,html[data-netbox-color-mode=light] .d-xxl-inline-flex{display:inline-flex!important}html .d-xxl-none,html[data-netbox-color-mode=dark] .d-xxl-none,html[data-netbox-color-mode=light] .d-xxl-none{display:none!important}html .flex-xxl-fill,html[data-netbox-color-mode=dark] .flex-xxl-fill,html[data-netbox-color-mode=light] .flex-xxl-fill{flex:1 1 auto!important}html .flex-xxl-row,html[data-netbox-color-mode=dark] .flex-xxl-row,html[data-netbox-color-mode=light] .flex-xxl-row{flex-direction:row!important}html .flex-xxl-column,html[data-netbox-color-mode=dark] .flex-xxl-column,html[data-netbox-color-mode=light] .flex-xxl-column{flex-direction:column!important}html .flex-xxl-row-reverse,html[data-netbox-color-mode=dark] .flex-xxl-row-reverse,html[data-netbox-color-mode=light] .flex-xxl-row-reverse{flex-direction:row-reverse!important}html .flex-xxl-column-reverse,html[data-netbox-color-mode=dark] .flex-xxl-column-reverse,html[data-netbox-color-mode=light] .flex-xxl-column-reverse{flex-direction:column-reverse!important}html .flex-xxl-grow-0,html[data-netbox-color-mode=dark] .flex-xxl-grow-0,html[data-netbox-color-mode=light] .flex-xxl-grow-0{flex-grow:0!important}html .flex-xxl-grow-1,html[data-netbox-color-mode=dark] .flex-xxl-grow-1,html[data-netbox-color-mode=light] .flex-xxl-grow-1{flex-grow:1!important}html .flex-xxl-shrink-0,html[data-netbox-color-mode=dark] .flex-xxl-shrink-0,html[data-netbox-color-mode=light] .flex-xxl-shrink-0{flex-shrink:0!important}html .flex-xxl-shrink-1,html[data-netbox-color-mode=dark] .flex-xxl-shrink-1,html[data-netbox-color-mode=light] .flex-xxl-shrink-1{flex-shrink:1!important}html .flex-xxl-wrap,html[data-netbox-color-mode=dark] .flex-xxl-wrap,html[data-netbox-color-mode=light] .flex-xxl-wrap{flex-wrap:wrap!important}html .flex-xxl-nowrap,html[data-netbox-color-mode=dark] .flex-xxl-nowrap,html[data-netbox-color-mode=light] .flex-xxl-nowrap{flex-wrap:nowrap!important}html .flex-xxl-wrap-reverse,html[data-netbox-color-mode=dark] .flex-xxl-wrap-reverse,html[data-netbox-color-mode=light] .flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}html .gap-xxl-0,html[data-netbox-color-mode=dark] .gap-xxl-0,html[data-netbox-color-mode=light] .gap-xxl-0{gap:0!important}html .gap-xxl-1,html[data-netbox-color-mode=dark] .gap-xxl-1,html[data-netbox-color-mode=light] .gap-xxl-1{gap:.25rem!important}html .gap-xxl-2,html[data-netbox-color-mode=dark] .gap-xxl-2,html[data-netbox-color-mode=light] .gap-xxl-2{gap:.5rem!important}html .gap-xxl-3,html[data-netbox-color-mode=dark] .gap-xxl-3,html[data-netbox-color-mode=light] .gap-xxl-3{gap:1rem!important}html .gap-xxl-4,html[data-netbox-color-mode=dark] .gap-xxl-4,html[data-netbox-color-mode=light] .gap-xxl-4{gap:1.5rem!important}html .gap-xxl-5,html[data-netbox-color-mode=dark] .gap-xxl-5,html[data-netbox-color-mode=light] .gap-xxl-5{gap:3rem!important}html .justify-content-xxl-start,html[data-netbox-color-mode=dark] .justify-content-xxl-start,html[data-netbox-color-mode=light] .justify-content-xxl-start{justify-content:flex-start!important}html .justify-content-xxl-end,html[data-netbox-color-mode=dark] .justify-content-xxl-end,html[data-netbox-color-mode=light] .justify-content-xxl-end{justify-content:flex-end!important}html .justify-content-xxl-center,html[data-netbox-color-mode=dark] .justify-content-xxl-center,html[data-netbox-color-mode=light] .justify-content-xxl-center{justify-content:center!important}html .justify-content-xxl-between,html[data-netbox-color-mode=dark] .justify-content-xxl-between,html[data-netbox-color-mode=light] .justify-content-xxl-between{justify-content:space-between!important}html .justify-content-xxl-around,html[data-netbox-color-mode=dark] .justify-content-xxl-around,html[data-netbox-color-mode=light] .justify-content-xxl-around{justify-content:space-around!important}html .justify-content-xxl-evenly,html[data-netbox-color-mode=dark] .justify-content-xxl-evenly,html[data-netbox-color-mode=light] .justify-content-xxl-evenly{justify-content:space-evenly!important}html .align-items-xxl-start,html[data-netbox-color-mode=dark] .align-items-xxl-start,html[data-netbox-color-mode=light] .align-items-xxl-start{align-items:flex-start!important}html .align-items-xxl-end,html[data-netbox-color-mode=dark] .align-items-xxl-end,html[data-netbox-color-mode=light] .align-items-xxl-end{align-items:flex-end!important}html .align-items-xxl-center,html[data-netbox-color-mode=dark] .align-items-xxl-center,html[data-netbox-color-mode=light] .align-items-xxl-center{align-items:center!important}html .align-items-xxl-baseline,html[data-netbox-color-mode=dark] .align-items-xxl-baseline,html[data-netbox-color-mode=light] .align-items-xxl-baseline{align-items:baseline!important}html .align-items-xxl-stretch,html[data-netbox-color-mode=dark] .align-items-xxl-stretch,html[data-netbox-color-mode=light] .align-items-xxl-stretch{align-items:stretch!important}html .align-content-xxl-start,html[data-netbox-color-mode=dark] .align-content-xxl-start,html[data-netbox-color-mode=light] .align-content-xxl-start{align-content:flex-start!important}html .align-content-xxl-end,html[data-netbox-color-mode=dark] .align-content-xxl-end,html[data-netbox-color-mode=light] .align-content-xxl-end{align-content:flex-end!important}html .align-content-xxl-center,html[data-netbox-color-mode=dark] .align-content-xxl-center,html[data-netbox-color-mode=light] .align-content-xxl-center{align-content:center!important}html .align-content-xxl-between,html[data-netbox-color-mode=dark] .align-content-xxl-between,html[data-netbox-color-mode=light] .align-content-xxl-between{align-content:space-between!important}html .align-content-xxl-around,html[data-netbox-color-mode=dark] .align-content-xxl-around,html[data-netbox-color-mode=light] .align-content-xxl-around{align-content:space-around!important}html .align-content-xxl-stretch,html[data-netbox-color-mode=dark] .align-content-xxl-stretch,html[data-netbox-color-mode=light] .align-content-xxl-stretch{align-content:stretch!important}html .align-self-xxl-auto,html[data-netbox-color-mode=dark] .align-self-xxl-auto,html[data-netbox-color-mode=light] .align-self-xxl-auto{align-self:auto!important}html .align-self-xxl-start,html[data-netbox-color-mode=dark] .align-self-xxl-start,html[data-netbox-color-mode=light] .align-self-xxl-start{align-self:flex-start!important}html .align-self-xxl-end,html[data-netbox-color-mode=dark] .align-self-xxl-end,html[data-netbox-color-mode=light] .align-self-xxl-end{align-self:flex-end!important}html .align-self-xxl-center,html[data-netbox-color-mode=dark] .align-self-xxl-center,html[data-netbox-color-mode=light] .align-self-xxl-center{align-self:center!important}html .align-self-xxl-baseline,html[data-netbox-color-mode=dark] .align-self-xxl-baseline,html[data-netbox-color-mode=light] .align-self-xxl-baseline{align-self:baseline!important}html .align-self-xxl-stretch,html[data-netbox-color-mode=dark] .align-self-xxl-stretch,html[data-netbox-color-mode=light] .align-self-xxl-stretch{align-self:stretch!important}html .order-xxl-first,html[data-netbox-color-mode=dark] .order-xxl-first,html[data-netbox-color-mode=light] .order-xxl-first{order:-1!important}html .order-xxl-0,html[data-netbox-color-mode=dark] .order-xxl-0,html[data-netbox-color-mode=light] .order-xxl-0{order:0!important}html .order-xxl-1,html[data-netbox-color-mode=dark] .order-xxl-1,html[data-netbox-color-mode=light] .order-xxl-1{order:1!important}html .order-xxl-2,html[data-netbox-color-mode=dark] .order-xxl-2,html[data-netbox-color-mode=light] .order-xxl-2{order:2!important}html .order-xxl-3,html[data-netbox-color-mode=dark] .order-xxl-3,html[data-netbox-color-mode=light] .order-xxl-3{order:3!important}html .order-xxl-4,html[data-netbox-color-mode=dark] .order-xxl-4,html[data-netbox-color-mode=light] .order-xxl-4{order:4!important}html .order-xxl-5,html[data-netbox-color-mode=dark] .order-xxl-5,html[data-netbox-color-mode=light] .order-xxl-5{order:5!important}html .order-xxl-last,html[data-netbox-color-mode=dark] .order-xxl-last,html[data-netbox-color-mode=light] .order-xxl-last{order:6!important}html .m-xxl-0,html[data-netbox-color-mode=dark] .m-xxl-0,html[data-netbox-color-mode=light] .m-xxl-0{margin:0!important}html .m-xxl-1,html[data-netbox-color-mode=dark] .m-xxl-1,html[data-netbox-color-mode=light] .m-xxl-1{margin:.25rem!important}html .m-xxl-2,html[data-netbox-color-mode=dark] .m-xxl-2,html[data-netbox-color-mode=light] .m-xxl-2{margin:.5rem!important}html .m-xxl-3,html[data-netbox-color-mode=dark] .m-xxl-3,html[data-netbox-color-mode=light] .m-xxl-3{margin:1rem!important}html .m-xxl-4,html[data-netbox-color-mode=dark] .m-xxl-4,html[data-netbox-color-mode=light] .m-xxl-4{margin:1.5rem!important}html .m-xxl-5,html[data-netbox-color-mode=dark] .m-xxl-5,html[data-netbox-color-mode=light] .m-xxl-5{margin:3rem!important}html .m-xxl-auto,html[data-netbox-color-mode=dark] .m-xxl-auto,html[data-netbox-color-mode=light] .m-xxl-auto{margin:auto!important}html .mx-xxl-0,html[data-netbox-color-mode=dark] .mx-xxl-0,html[data-netbox-color-mode=light] .mx-xxl-0{margin-right:0!important;margin-left:0!important}html .mx-xxl-1,html[data-netbox-color-mode=dark] .mx-xxl-1,html[data-netbox-color-mode=light] .mx-xxl-1{margin-right:.25rem!important;margin-left:.25rem!important}html .mx-xxl-2,html[data-netbox-color-mode=dark] .mx-xxl-2,html[data-netbox-color-mode=light] .mx-xxl-2{margin-right:.5rem!important;margin-left:.5rem!important}html .mx-xxl-3,html[data-netbox-color-mode=dark] .mx-xxl-3,html[data-netbox-color-mode=light] .mx-xxl-3{margin-right:1rem!important;margin-left:1rem!important}html .mx-xxl-4,html[data-netbox-color-mode=dark] .mx-xxl-4,html[data-netbox-color-mode=light] .mx-xxl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}html .mx-xxl-5,html[data-netbox-color-mode=dark] .mx-xxl-5,html[data-netbox-color-mode=light] .mx-xxl-5{margin-right:3rem!important;margin-left:3rem!important}html .mx-xxl-auto,html[data-netbox-color-mode=dark] .mx-xxl-auto,html[data-netbox-color-mode=light] .mx-xxl-auto{margin-right:auto!important;margin-left:auto!important}html .my-xxl-0,html[data-netbox-color-mode=dark] .my-xxl-0,html[data-netbox-color-mode=light] .my-xxl-0{margin-top:0!important;margin-bottom:0!important}html .my-xxl-1,html[data-netbox-color-mode=dark] .my-xxl-1,html[data-netbox-color-mode=light] .my-xxl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}html .my-xxl-2,html[data-netbox-color-mode=dark] .my-xxl-2,html[data-netbox-color-mode=light] .my-xxl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}html .my-xxl-3,html[data-netbox-color-mode=dark] .my-xxl-3,html[data-netbox-color-mode=light] .my-xxl-3{margin-top:1rem!important;margin-bottom:1rem!important}html .my-xxl-4,html[data-netbox-color-mode=dark] .my-xxl-4,html[data-netbox-color-mode=light] .my-xxl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}html .my-xxl-5,html[data-netbox-color-mode=dark] .my-xxl-5,html[data-netbox-color-mode=light] .my-xxl-5{margin-top:3rem!important;margin-bottom:3rem!important}html .my-xxl-auto,html[data-netbox-color-mode=dark] .my-xxl-auto,html[data-netbox-color-mode=light] .my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important}html .mt-xxl-0,html[data-netbox-color-mode=dark] .mt-xxl-0,html[data-netbox-color-mode=light] .mt-xxl-0{margin-top:0!important}html .mt-xxl-1,html[data-netbox-color-mode=dark] .mt-xxl-1,html[data-netbox-color-mode=light] .mt-xxl-1{margin-top:.25rem!important}html .mt-xxl-2,html[data-netbox-color-mode=dark] .mt-xxl-2,html[data-netbox-color-mode=light] .mt-xxl-2{margin-top:.5rem!important}html .mt-xxl-3,html[data-netbox-color-mode=dark] .mt-xxl-3,html[data-netbox-color-mode=light] .mt-xxl-3{margin-top:1rem!important}html .mt-xxl-4,html[data-netbox-color-mode=dark] .mt-xxl-4,html[data-netbox-color-mode=light] .mt-xxl-4{margin-top:1.5rem!important}html .mt-xxl-5,html[data-netbox-color-mode=dark] .mt-xxl-5,html[data-netbox-color-mode=light] .mt-xxl-5{margin-top:3rem!important}html .mt-xxl-auto,html[data-netbox-color-mode=dark] .mt-xxl-auto,html[data-netbox-color-mode=light] .mt-xxl-auto{margin-top:auto!important}html .me-xxl-0,html[data-netbox-color-mode=dark] .me-xxl-0,html[data-netbox-color-mode=light] .me-xxl-0{margin-right:0!important}html .me-xxl-1,html[data-netbox-color-mode=dark] .me-xxl-1,html[data-netbox-color-mode=light] .me-xxl-1{margin-right:.25rem!important}html .me-xxl-2,html[data-netbox-color-mode=dark] .me-xxl-2,html[data-netbox-color-mode=light] .me-xxl-2{margin-right:.5rem!important}html .me-xxl-3,html[data-netbox-color-mode=dark] .me-xxl-3,html[data-netbox-color-mode=light] .me-xxl-3{margin-right:1rem!important}html .me-xxl-4,html[data-netbox-color-mode=dark] .me-xxl-4,html[data-netbox-color-mode=light] .me-xxl-4{margin-right:1.5rem!important}html .me-xxl-5,html[data-netbox-color-mode=dark] .me-xxl-5,html[data-netbox-color-mode=light] .me-xxl-5{margin-right:3rem!important}html .me-xxl-auto,html[data-netbox-color-mode=dark] .me-xxl-auto,html[data-netbox-color-mode=light] .me-xxl-auto{margin-right:auto!important}html .mb-xxl-0,html[data-netbox-color-mode=dark] .mb-xxl-0,html[data-netbox-color-mode=light] .mb-xxl-0{margin-bottom:0!important}html .mb-xxl-1,html[data-netbox-color-mode=dark] .mb-xxl-1,html[data-netbox-color-mode=light] .mb-xxl-1{margin-bottom:.25rem!important}html .mb-xxl-2,html[data-netbox-color-mode=dark] .mb-xxl-2,html[data-netbox-color-mode=light] .mb-xxl-2{margin-bottom:.5rem!important}html .mb-xxl-3,html[data-netbox-color-mode=dark] .mb-xxl-3,html[data-netbox-color-mode=light] .mb-xxl-3{margin-bottom:1rem!important}html .mb-xxl-4,html[data-netbox-color-mode=dark] .mb-xxl-4,html[data-netbox-color-mode=light] .mb-xxl-4{margin-bottom:1.5rem!important}html .mb-xxl-5,html[data-netbox-color-mode=dark] .mb-xxl-5,html[data-netbox-color-mode=light] .mb-xxl-5{margin-bottom:3rem!important}html .mb-xxl-auto,html[data-netbox-color-mode=dark] .mb-xxl-auto,html[data-netbox-color-mode=light] .mb-xxl-auto{margin-bottom:auto!important}html .ms-xxl-0,html[data-netbox-color-mode=dark] .ms-xxl-0,html[data-netbox-color-mode=light] .ms-xxl-0{margin-left:0!important}html .ms-xxl-1,html[data-netbox-color-mode=dark] .ms-xxl-1,html[data-netbox-color-mode=light] .ms-xxl-1{margin-left:.25rem!important}html .ms-xxl-2,html[data-netbox-color-mode=dark] .ms-xxl-2,html[data-netbox-color-mode=light] .ms-xxl-2{margin-left:.5rem!important}html .ms-xxl-3,html[data-netbox-color-mode=dark] .ms-xxl-3,html[data-netbox-color-mode=light] .ms-xxl-3{margin-left:1rem!important}html .ms-xxl-4,html[data-netbox-color-mode=dark] .ms-xxl-4,html[data-netbox-color-mode=light] .ms-xxl-4{margin-left:1.5rem!important}html .ms-xxl-5,html[data-netbox-color-mode=dark] .ms-xxl-5,html[data-netbox-color-mode=light] .ms-xxl-5{margin-left:3rem!important}html .ms-xxl-auto,html[data-netbox-color-mode=dark] .ms-xxl-auto,html[data-netbox-color-mode=light] .ms-xxl-auto{margin-left:auto!important}html .p-xxl-0,html[data-netbox-color-mode=dark] .p-xxl-0,html[data-netbox-color-mode=light] .p-xxl-0{padding:0!important}html .p-xxl-1,html[data-netbox-color-mode=dark] .p-xxl-1,html[data-netbox-color-mode=light] .p-xxl-1{padding:.25rem!important}html .p-xxl-2,html[data-netbox-color-mode=dark] .p-xxl-2,html[data-netbox-color-mode=light] .p-xxl-2{padding:.5rem!important}html .p-xxl-3,html[data-netbox-color-mode=dark] .p-xxl-3,html[data-netbox-color-mode=light] .p-xxl-3{padding:1rem!important}html .p-xxl-4,html[data-netbox-color-mode=dark] .p-xxl-4,html[data-netbox-color-mode=light] .p-xxl-4{padding:1.5rem!important}html .p-xxl-5,html[data-netbox-color-mode=dark] .p-xxl-5,html[data-netbox-color-mode=light] .p-xxl-5{padding:3rem!important}html .px-xxl-0,html[data-netbox-color-mode=dark] .px-xxl-0,html[data-netbox-color-mode=light] .px-xxl-0{padding-right:0!important;padding-left:0!important}html .px-xxl-1,html[data-netbox-color-mode=dark] .px-xxl-1,html[data-netbox-color-mode=light] .px-xxl-1{padding-right:.25rem!important;padding-left:.25rem!important}html .px-xxl-2,html[data-netbox-color-mode=dark] .px-xxl-2,html[data-netbox-color-mode=light] .px-xxl-2{padding-right:.5rem!important;padding-left:.5rem!important}html .px-xxl-3,html[data-netbox-color-mode=dark] .px-xxl-3,html[data-netbox-color-mode=light] .px-xxl-3{padding-right:1rem!important;padding-left:1rem!important}html .px-xxl-4,html[data-netbox-color-mode=dark] .px-xxl-4,html[data-netbox-color-mode=light] .px-xxl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}html .px-xxl-5,html[data-netbox-color-mode=dark] .px-xxl-5,html[data-netbox-color-mode=light] .px-xxl-5{padding-right:3rem!important;padding-left:3rem!important}html .py-xxl-0,html[data-netbox-color-mode=dark] .py-xxl-0,html[data-netbox-color-mode=light] .py-xxl-0{padding-top:0!important;padding-bottom:0!important}html .py-xxl-1,html[data-netbox-color-mode=dark] .py-xxl-1,html[data-netbox-color-mode=light] .py-xxl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}html .py-xxl-2,html[data-netbox-color-mode=dark] .py-xxl-2,html[data-netbox-color-mode=light] .py-xxl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}html .py-xxl-3,html[data-netbox-color-mode=dark] .py-xxl-3,html[data-netbox-color-mode=light] .py-xxl-3{padding-top:1rem!important;padding-bottom:1rem!important}html .py-xxl-4,html[data-netbox-color-mode=dark] .py-xxl-4,html[data-netbox-color-mode=light] .py-xxl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}html .py-xxl-5,html[data-netbox-color-mode=dark] .py-xxl-5,html[data-netbox-color-mode=light] .py-xxl-5{padding-top:3rem!important;padding-bottom:3rem!important}html .pt-xxl-0,html[data-netbox-color-mode=dark] .pt-xxl-0,html[data-netbox-color-mode=light] .pt-xxl-0{padding-top:0!important}html .pt-xxl-1,html[data-netbox-color-mode=dark] .pt-xxl-1,html[data-netbox-color-mode=light] .pt-xxl-1{padding-top:.25rem!important}html .pt-xxl-2,html[data-netbox-color-mode=dark] .pt-xxl-2,html[data-netbox-color-mode=light] .pt-xxl-2{padding-top:.5rem!important}html .pt-xxl-3,html[data-netbox-color-mode=dark] .pt-xxl-3,html[data-netbox-color-mode=light] .pt-xxl-3{padding-top:1rem!important}html .pt-xxl-4,html[data-netbox-color-mode=dark] .pt-xxl-4,html[data-netbox-color-mode=light] .pt-xxl-4{padding-top:1.5rem!important}html .pt-xxl-5,html[data-netbox-color-mode=dark] .pt-xxl-5,html[data-netbox-color-mode=light] .pt-xxl-5{padding-top:3rem!important}html .pe-xxl-0,html[data-netbox-color-mode=dark] .pe-xxl-0,html[data-netbox-color-mode=light] .pe-xxl-0{padding-right:0!important}html .pe-xxl-1,html[data-netbox-color-mode=dark] .pe-xxl-1,html[data-netbox-color-mode=light] .pe-xxl-1{padding-right:.25rem!important}html .pe-xxl-2,html[data-netbox-color-mode=dark] .pe-xxl-2,html[data-netbox-color-mode=light] .pe-xxl-2{padding-right:.5rem!important}html .pe-xxl-3,html[data-netbox-color-mode=dark] .pe-xxl-3,html[data-netbox-color-mode=light] .pe-xxl-3{padding-right:1rem!important}html .pe-xxl-4,html[data-netbox-color-mode=dark] .pe-xxl-4,html[data-netbox-color-mode=light] .pe-xxl-4{padding-right:1.5rem!important}html .pe-xxl-5,html[data-netbox-color-mode=dark] .pe-xxl-5,html[data-netbox-color-mode=light] .pe-xxl-5{padding-right:3rem!important}html .pb-xxl-0,html[data-netbox-color-mode=dark] .pb-xxl-0,html[data-netbox-color-mode=light] .pb-xxl-0{padding-bottom:0!important}html .pb-xxl-1,html[data-netbox-color-mode=dark] .pb-xxl-1,html[data-netbox-color-mode=light] .pb-xxl-1{padding-bottom:.25rem!important}html .pb-xxl-2,html[data-netbox-color-mode=dark] .pb-xxl-2,html[data-netbox-color-mode=light] .pb-xxl-2{padding-bottom:.5rem!important}html .pb-xxl-3,html[data-netbox-color-mode=dark] .pb-xxl-3,html[data-netbox-color-mode=light] .pb-xxl-3{padding-bottom:1rem!important}html .pb-xxl-4,html[data-netbox-color-mode=dark] .pb-xxl-4,html[data-netbox-color-mode=light] .pb-xxl-4{padding-bottom:1.5rem!important}html .pb-xxl-5,html[data-netbox-color-mode=dark] .pb-xxl-5,html[data-netbox-color-mode=light] .pb-xxl-5{padding-bottom:3rem!important}html .ps-xxl-0,html[data-netbox-color-mode=dark] .ps-xxl-0,html[data-netbox-color-mode=light] .ps-xxl-0{padding-left:0!important}html .ps-xxl-1,html[data-netbox-color-mode=dark] .ps-xxl-1,html[data-netbox-color-mode=light] .ps-xxl-1{padding-left:.25rem!important}html .ps-xxl-2,html[data-netbox-color-mode=dark] .ps-xxl-2,html[data-netbox-color-mode=light] .ps-xxl-2{padding-left:.5rem!important}html .ps-xxl-3,html[data-netbox-color-mode=dark] .ps-xxl-3,html[data-netbox-color-mode=light] .ps-xxl-3{padding-left:1rem!important}html .ps-xxl-4,html[data-netbox-color-mode=dark] .ps-xxl-4,html[data-netbox-color-mode=light] .ps-xxl-4{padding-left:1.5rem!important}html .ps-xxl-5,html[data-netbox-color-mode=dark] .ps-xxl-5,html[data-netbox-color-mode=light] .ps-xxl-5{padding-left:3rem!important}html .text-xxl-start,html[data-netbox-color-mode=dark] .text-xxl-start,html[data-netbox-color-mode=light] .text-xxl-start{text-align:left!important}html .text-xxl-end,html[data-netbox-color-mode=dark] .text-xxl-end,html[data-netbox-color-mode=light] .text-xxl-end{text-align:right!important}html .text-xxl-center,html[data-netbox-color-mode=dark] .text-xxl-center,html[data-netbox-color-mode=light] .text-xxl-center{text-align:center!important}}@media print and (min-width: 1200px){html .fs-1,html[data-netbox-color-mode=dark] .fs-1,html[data-netbox-color-mode=light] .fs-1{font-size:2.5rem!important}html .fs-2,html[data-netbox-color-mode=dark] .fs-2,html[data-netbox-color-mode=light] .fs-2{font-size:2rem!important}html .fs-3,html[data-netbox-color-mode=dark] .fs-3,html[data-netbox-color-mode=light] .fs-3{font-size:1.75rem!important}html .fs-4,html[data-netbox-color-mode=dark] .fs-4,html[data-netbox-color-mode=light] .fs-4{font-size:1.5rem!important}}@media print{html .d-print-inline,html[data-netbox-color-mode=dark] .d-print-inline,html[data-netbox-color-mode=light] .d-print-inline{display:inline!important}html .d-print-inline-block,html[data-netbox-color-mode=dark] .d-print-inline-block,html[data-netbox-color-mode=light] .d-print-inline-block{display:inline-block!important}html .d-print-block,html[data-netbox-color-mode=dark] .d-print-block,html[data-netbox-color-mode=light] .d-print-block{display:block!important}html .d-print-grid,html[data-netbox-color-mode=dark] .d-print-grid,html[data-netbox-color-mode=light] .d-print-grid{display:grid!important}html .d-print-table,html[data-netbox-color-mode=dark] .d-print-table,html[data-netbox-color-mode=light] .d-print-table{display:table!important}html .d-print-table-row,html[data-netbox-color-mode=dark] .d-print-table-row,html[data-netbox-color-mode=light] .d-print-table-row{display:table-row!important}html .d-print-table-cell,html[data-netbox-color-mode=dark] .d-print-table-cell,html[data-netbox-color-mode=light] .d-print-table-cell{display:table-cell!important}html .d-print-flex,html[data-netbox-color-mode=dark] .d-print-flex,html[data-netbox-color-mode=light] .d-print-flex{display:flex!important}html .d-print-inline-flex,html[data-netbox-color-mode=dark] .d-print-inline-flex,html[data-netbox-color-mode=light] .d-print-inline-flex{display:inline-flex!important}html .d-print-none,html[data-netbox-color-mode=dark] .d-print-none,html[data-netbox-color-mode=light] .d-print-none{display:none!important}}@media print{html :root,html[data-netbox-color-mode=dark] :root,html[data-netbox-color-mode=light] :root{--nbx-select-content-bg: #fff;--nbx-select-option-selected-bg: #dee2e6;--nbx-select-option-hover-bg: #0d6efd;--nbx-select-option-hover-color: #fff;--nbx-select-placeholder-color: #adb5bd;--nbx-select-value-color: #fff}html :root[data-netbox-color-mode=dark],html[data-netbox-color-mode=dark] :root[data-netbox-color-mode=dark],html[data-netbox-color-mode=light] :root[data-netbox-color-mode=dark]{--nbx-select-content-bg: #212529;--nbx-select-option-selected-bg: #adb5bd;--nbx-select-option-hover-bg: #9ec5fe;--nbx-select-option-hover-color: #000;--nbx-select-placeholder-color: #495057;--nbx-select-value-color: #000}}@media print{html .ss-main,html[data-netbox-color-mode=dark] .ss-main,html[data-netbox-color-mode=light] .ss-main{position:relative;display:inline-block;user-select:none;color:#212529;width:100%}html .ss-main .ss-single-selected,html[data-netbox-color-mode=dark] .ss-main .ss-single-selected,html[data-netbox-color-mode=light] .ss-main .ss-single-selected{display:flex;cursor:pointer;width:100%;height:calc(1.5em + (.75rem + 2px));padding:.75rem;border:1px solid #ced4da;border-radius:.375rem;background-color:#fff;outline:0;box-sizing:border-box;transition:background-color .2s}html .ss-main .ss-single-selected.ss-disabled,html[data-netbox-color-mode=dark] .ss-main .ss-single-selected.ss-disabled,html[data-netbox-color-mode=light] .ss-main .ss-single-selected.ss-disabled{background-color:#ced4da;cursor:not-allowed}html .ss-main .ss-single-selected.ss-open-above,html[data-netbox-color-mode=dark] .ss-main .ss-single-selected.ss-open-above,html[data-netbox-color-mode=light] .ss-main .ss-single-selected.ss-open-above{border-top-left-radius:0;border-top-right-radius:0}html .ss-main .ss-single-selected.ss-open-below,html[data-netbox-color-mode=dark] .ss-main .ss-single-selected.ss-open-below,html[data-netbox-color-mode=light] .ss-main .ss-single-selected.ss-open-below{border-bottom-left-radius:0;border-bottom-right-radius:0}html .ss-main .ss-single-selected .placeholder,html[data-netbox-color-mode=dark] .ss-main .ss-single-selected .placeholder,html[data-netbox-color-mode=light] .ss-main .ss-single-selected .placeholder{display:flex;flex:1 1 100%;align-items:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:left;width:calc(100% - 30px);line-height:1em;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}html .ss-main .ss-single-selected .placeholder *,html[data-netbox-color-mode=dark] .ss-main .ss-single-selected .placeholder *,html[data-netbox-color-mode=light] .ss-main .ss-single-selected .placeholder *{display:flex;align-items:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:auto}html .ss-main .ss-single-selected .placeholder .ss-disabled,html[data-netbox-color-mode=dark] .ss-main .ss-single-selected .placeholder .ss-disabled,html[data-netbox-color-mode=light] .ss-main .ss-single-selected .placeholder .ss-disabled{color:#6c757d}html .ss-main .ss-single-selected .ss-deselect,html[data-netbox-color-mode=dark] .ss-main .ss-single-selected .ss-deselect,html[data-netbox-color-mode=light] .ss-main .ss-single-selected .ss-deselect{display:flex;align-items:center;justify-content:flex-end;flex:0 1 auto;margin:0 .75rem;font-weight:bold}html .ss-main .ss-single-selected .ss-deselect.ss-hide,html[data-netbox-color-mode=dark] .ss-main .ss-single-selected .ss-deselect.ss-hide,html[data-netbox-color-mode=light] .ss-main .ss-single-selected .ss-deselect.ss-hide{display:none}html .ss-main .ss-single-selected .ss-arrow,html[data-netbox-color-mode=dark] .ss-main .ss-single-selected .ss-arrow,html[data-netbox-color-mode=light] .ss-main .ss-single-selected .ss-arrow{display:flex;align-items:center;justify-content:flex-end;flex:0 1 auto;margin:0 .75rem}html .ss-main .ss-single-selected .ss-arrow span,html[data-netbox-color-mode=dark] .ss-main .ss-single-selected .ss-arrow span,html[data-netbox-color-mode=light] .ss-main .ss-single-selected .ss-arrow span{border:solid #212529;border-width:0 2px 2px 0;display:inline-block;padding:3px;transition:transform .2s,margin .2s}html .ss-main .ss-single-selected .ss-arrow span.arrow-up,html[data-netbox-color-mode=dark] .ss-main .ss-single-selected .ss-arrow span.arrow-up,html[data-netbox-color-mode=light] .ss-main .ss-single-selected .ss-arrow span.arrow-up{transform:rotate(-135deg);margin:3px 0 0}html .ss-main .ss-single-selected .ss-arrow span.arrow-down,html[data-netbox-color-mode=dark] .ss-main .ss-single-selected .ss-arrow span.arrow-down,html[data-netbox-color-mode=light] .ss-main .ss-single-selected .ss-arrow span.arrow-down{transform:rotate(45deg);margin:-3px 0 0}html .ss-main .ss-multi-selected,html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected,html[data-netbox-color-mode=light] .ss-main .ss-multi-selected{display:flex;flex-direction:row;cursor:pointer;min-height:calc(1.5em + (.75rem + 2px));width:100%;padding:0 0 0 3px;border:1px solid #ced4da;border-radius:.375rem;background-color:#fff;outline:0;box-sizing:border-box;transition:background-color .2s}html .ss-main .ss-multi-selected.ss-disabled,html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected.ss-disabled,html[data-netbox-color-mode=light] .ss-main .ss-multi-selected.ss-disabled{background-color:#ced4da;cursor:not-allowed}html .ss-main .ss-multi-selected.ss-disabled .ss-values .ss-disabled,html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected.ss-disabled .ss-values .ss-disabled,html[data-netbox-color-mode=light] .ss-main .ss-multi-selected.ss-disabled .ss-values .ss-disabled{color:#212529}html .ss-main .ss-multi-selected.ss-disabled .ss-values .ss-value .ss-value-delete,html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected.ss-disabled .ss-values .ss-value .ss-value-delete,html[data-netbox-color-mode=light] .ss-main .ss-multi-selected.ss-disabled .ss-values .ss-value .ss-value-delete{cursor:not-allowed}html .ss-main .ss-multi-selected.ss-open-above,html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected.ss-open-above,html[data-netbox-color-mode=light] .ss-main .ss-multi-selected.ss-open-above{border-top-left-radius:0;border-top-right-radius:0}html .ss-main .ss-multi-selected.ss-open-below,html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected.ss-open-below,html[data-netbox-color-mode=light] .ss-main .ss-multi-selected.ss-open-below{border-bottom-left-radius:0;border-bottom-right-radius:0}html .ss-main .ss-multi-selected .ss-values,html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-values,html[data-netbox-color-mode=light] .ss-main .ss-multi-selected .ss-values{display:flex;flex-wrap:wrap;justify-content:flex-start;flex:1 1 100%;width:calc(100% - 30px)}html .ss-main .ss-multi-selected .ss-values .ss-disabled,html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-values .ss-disabled,html[data-netbox-color-mode=light] .ss-main .ss-multi-selected .ss-values .ss-disabled{display:flex;padding:4px 5px;margin:2px 0;line-height:1em;align-items:center;width:100%;color:#6c757d;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@keyframes scaleIn{0%{transform:scale(0);opacity:0}to{transform:scale(1);opacity:1}}@keyframes scaleOut{0%{transform:scale(1);opacity:1}to{transform:scale(0);opacity:0}}html .ss-main .ss-multi-selected .ss-values .ss-value,html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-values .ss-value,html[data-netbox-color-mode=light] .ss-main .ss-multi-selected .ss-values .ss-value{display:flex;user-select:none;align-items:center;font-size:12px;padding:3px 5px;margin:3px 5px 3px 0;color:#fff;background-color:#0d6efd;border-radius:.375rem;animation-name:scaleIn;animation-duration:.2s;animation-timing-function:ease-out;animation-fill-mode:both}html .ss-main .ss-multi-selected .ss-values .ss-value.ss-out,html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-values .ss-value.ss-out,html[data-netbox-color-mode=light] .ss-main .ss-multi-selected .ss-values .ss-value.ss-out{animation-name:scaleOut;animation-duration:.2s;animation-timing-function:ease-out}html .ss-main .ss-multi-selected .ss-values .ss-value .ss-value-delete,html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-values .ss-value .ss-value-delete,html[data-netbox-color-mode=light] .ss-main .ss-multi-selected .ss-values .ss-value .ss-value-delete{margin:0 0 0 5px;cursor:pointer}html .ss-main .ss-multi-selected .ss-add,html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-add,html[data-netbox-color-mode=light] .ss-main .ss-multi-selected .ss-add{display:flex;flex:0 1 3px;margin:9px 12px 0 5px}html .ss-main .ss-multi-selected .ss-add .ss-plus,html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-add .ss-plus,html[data-netbox-color-mode=light] .ss-main .ss-multi-selected .ss-add .ss-plus{display:flex;justify-content:center;align-items:center;background:#212529;position:relative;height:10px;width:2px;transition:transform .2s}html .ss-main .ss-multi-selected .ss-add .ss-plus:after,html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-add .ss-plus:after,html[data-netbox-color-mode=light] .ss-main .ss-multi-selected .ss-add .ss-plus:after{background:#212529;content:"";position:absolute;height:2px;width:10px;left:-4px;top:4px}html .ss-main .ss-multi-selected .ss-add .ss-plus.ss-cross,html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-add .ss-plus.ss-cross,html[data-netbox-color-mode=light] .ss-main .ss-multi-selected .ss-add .ss-plus.ss-cross{transform:rotate(45deg)}}@media print{html .ss-content,html[data-netbox-color-mode=dark] .ss-content,html[data-netbox-color-mode=light] .ss-content{position:absolute;width:100%;margin:-1px 0 0;box-sizing:border-box;border:solid 1px #ced4da;z-index:1010;background-color:#fff;transform-origin:center top;transition:transform .2s,opacity .2s;opacity:0;transform:scaleY(0)}html .ss-content.ss-open,html[data-netbox-color-mode=dark] .ss-content.ss-open,html[data-netbox-color-mode=light] .ss-content.ss-open{display:block;opacity:1;transform:scaleY(1)}html .ss-content .ss-search,html[data-netbox-color-mode=dark] .ss-content .ss-search,html[data-netbox-color-mode=light] .ss-content .ss-search{display:flex;flex-direction:row;padding:.75rem}html .ss-content .ss-search.ss-hide,html[data-netbox-color-mode=dark] .ss-content .ss-search.ss-hide,html[data-netbox-color-mode=light] .ss-content .ss-search.ss-hide{height:0px;opacity:0;padding:0;margin:0}html .ss-content .ss-search.ss-hide input,html[data-netbox-color-mode=dark] .ss-content .ss-search.ss-hide input,html[data-netbox-color-mode=light] .ss-content .ss-search.ss-hide input{height:0px;opacity:0;padding:0;margin:0}html .ss-content .ss-search input,html[data-netbox-color-mode=dark] .ss-content .ss-search input,html[data-netbox-color-mode=light] .ss-content .ss-search input{display:inline-flex;font-size:inherit;line-height:inherit;flex:1 1 auto;width:100%;min-width:0px;height:30px;padding:.75rem;margin:0;border:1px solid #ced4da;border-radius:.375rem;background-color:#fff;outline:0;text-align:left;box-sizing:border-box;-webkit-box-sizing:border-box;-webkit-appearance:textfield}html .ss-content .ss-search input::placeholder,html[data-netbox-color-mode=dark] .ss-content .ss-search input::placeholder,html[data-netbox-color-mode=light] .ss-content .ss-search input::placeholder{color:#adb5bd;vertical-align:middle}html .ss-content .ss-search input:focus,html[data-netbox-color-mode=dark] .ss-content .ss-search input:focus,html[data-netbox-color-mode=light] .ss-content .ss-search input:focus{box-shadow:0 0 5px #0d6efd}html .ss-content .ss-search .ss-addable,html[data-netbox-color-mode=dark] .ss-content .ss-search .ss-addable,html[data-netbox-color-mode=light] .ss-content .ss-search .ss-addable{display:inline-flex;justify-content:center;align-items:center;cursor:pointer;font-size:22px;font-weight:bold;flex:0 0 30px;height:30px;margin:0 0 0 8px;border:1px solid #ced4da;border-radius:.375rem;box-sizing:border-box}html .ss-content .ss-addable,html[data-netbox-color-mode=dark] .ss-content .ss-addable,html[data-netbox-color-mode=light] .ss-content .ss-addable{padding-top:0}html .ss-content .ss-list,html[data-netbox-color-mode=dark] .ss-content .ss-list,html[data-netbox-color-mode=light] .ss-content .ss-list{max-height:200px;overflow-x:hidden;overflow-y:auto;text-align:left}html .ss-content .ss-list .ss-optgroup .ss-optgroup-label,html[data-netbox-color-mode=dark] .ss-content .ss-list .ss-optgroup .ss-optgroup-label,html[data-netbox-color-mode=light] .ss-content .ss-list .ss-optgroup .ss-optgroup-label{padding:6px 10px;font-weight:bold}html .ss-content .ss-list .ss-optgroup .ss-option,html[data-netbox-color-mode=dark] .ss-content .ss-list .ss-optgroup .ss-option,html[data-netbox-color-mode=light] .ss-content .ss-list .ss-optgroup .ss-option{padding:6px 6px 6px 25px}html .ss-content .ss-list .ss-optgroup-label-selectable,html[data-netbox-color-mode=dark] .ss-content .ss-list .ss-optgroup-label-selectable,html[data-netbox-color-mode=light] .ss-content .ss-list .ss-optgroup-label-selectable{cursor:pointer}html .ss-content .ss-list .ss-optgroup-label-selectable:hover,html[data-netbox-color-mode=dark] .ss-content .ss-list .ss-optgroup-label-selectable:hover,html[data-netbox-color-mode=light] .ss-content .ss-list .ss-optgroup-label-selectable:hover{color:#fff;background-color:#0d6efd}html .ss-content .ss-list .ss-option,html[data-netbox-color-mode=dark] .ss-content .ss-list .ss-option,html[data-netbox-color-mode=light] .ss-content .ss-list .ss-option{padding:6px 10px;cursor:pointer;user-select:none}html .ss-content .ss-list .ss-option *,html[data-netbox-color-mode=dark] .ss-content .ss-list .ss-option *,html[data-netbox-color-mode=light] .ss-content .ss-list .ss-option *{display:inline-block}html .ss-content .ss-list .ss-option:hover,html .ss-content .ss-list .ss-option.ss-highlighted,html[data-netbox-color-mode=dark] .ss-content .ss-list .ss-option:hover,html[data-netbox-color-mode=dark] .ss-content .ss-list .ss-option.ss-highlighted,html[data-netbox-color-mode=light] .ss-content .ss-list .ss-option:hover,html[data-netbox-color-mode=light] .ss-content .ss-list .ss-option.ss-highlighted{color:#fff;background-color:#0d6efd}html .ss-content .ss-list .ss-option.ss-disabled,html[data-netbox-color-mode=dark] .ss-content .ss-list .ss-option.ss-disabled,html[data-netbox-color-mode=light] .ss-content .ss-list .ss-option.ss-disabled{cursor:not-allowed;color:#6c757d;background-color:#fff}html .ss-content .ss-list .ss-option:not(.ss-disabled).ss-option-selected,html[data-netbox-color-mode=dark] .ss-content .ss-list .ss-option:not(.ss-disabled).ss-option-selected,html[data-netbox-color-mode=light] .ss-content .ss-list .ss-option:not(.ss-disabled).ss-option-selected{color:#212529;background-color:#0d6efd1a}html .ss-content .ss-list .ss-option.ss-hide,html[data-netbox-color-mode=dark] .ss-content .ss-list .ss-option.ss-hide,html[data-netbox-color-mode=light] .ss-content .ss-list .ss-option.ss-hide{display:none}html .ss-content .ss-list .ss-option .ss-search-highlight,html[data-netbox-color-mode=dark] .ss-content .ss-list .ss-option .ss-search-highlight,html[data-netbox-color-mode=light] .ss-content .ss-list .ss-option .ss-search-highlight{background-color:#ffc107}}@media print{html .ss-main,html[data-netbox-color-mode=dark] .ss-main,html[data-netbox-color-mode=light] .ss-main{color:#212529}html .ss-main.is-invalid .ss-single-selected,html .ss-main.is-invalid .ss-multi-selected,html[data-netbox-color-mode=dark] .ss-main.is-invalid .ss-single-selected,html[data-netbox-color-mode=dark] .ss-main.is-invalid .ss-multi-selected,html[data-netbox-color-mode=light] .ss-main.is-invalid .ss-single-selected,html[data-netbox-color-mode=light] .ss-main.is-invalid .ss-multi-selected{border-color:#dc3545}html .ss-main.is-valid .ss-single-selected,html .ss-main.is-valid .ss-multi-selected,html[data-netbox-color-mode=dark] .ss-main.is-valid .ss-single-selected,html[data-netbox-color-mode=dark] .ss-main.is-valid .ss-multi-selected,html[data-netbox-color-mode=light] .ss-main.is-valid .ss-single-selected,html[data-netbox-color-mode=light] .ss-main.is-valid .ss-multi-selected{border-color:#198754}html .ss-main .ss-single-selected,html .ss-main .ss-multi-selected,html[data-netbox-color-mode=dark] .ss-main .ss-single-selected,html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected,html[data-netbox-color-mode=light] .ss-main .ss-single-selected,html[data-netbox-color-mode=light] .ss-main .ss-multi-selected{padding:.375rem .75rem;background-color:#fff;border:1px solid #e9ecef}html .ss-main .ss-single-selected[disabled],html .ss-main .ss-multi-selected[disabled],html[data-netbox-color-mode=dark] .ss-main .ss-single-selected[disabled],html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected[disabled],html[data-netbox-color-mode=light] .ss-main .ss-single-selected[disabled],html[data-netbox-color-mode=light] .ss-main .ss-multi-selected[disabled]{color:#6c757d;background-color:#e9ecef}html .ss-main div.ss-multi-selected .ss-values .ss-disabled,html .ss-main div.ss-single-selected span.placeholder .ss-disabled,html[data-netbox-color-mode=dark] .ss-main div.ss-multi-selected .ss-values .ss-disabled,html[data-netbox-color-mode=dark] .ss-main div.ss-single-selected span.placeholder .ss-disabled,html[data-netbox-color-mode=light] .ss-main div.ss-multi-selected .ss-values .ss-disabled,html[data-netbox-color-mode=light] .ss-main div.ss-single-selected span.placeholder .ss-disabled{color:var(--nbx-select-placeholder-color)}html .ss-main .ss-single-selected span.ss-arrow span.arrow-down,html .ss-main .ss-single-selected span.ss-arrow span.arrow-up,html[data-netbox-color-mode=dark] .ss-main .ss-single-selected span.ss-arrow span.arrow-down,html[data-netbox-color-mode=dark] .ss-main .ss-single-selected span.ss-arrow span.arrow-up,html[data-netbox-color-mode=light] .ss-main .ss-single-selected span.ss-arrow span.arrow-down,html[data-netbox-color-mode=light] .ss-main .ss-single-selected span.ss-arrow span.arrow-up{border-color:currentColor;color:#6c757d}html .ss-main .ss-single-selected .placeholder .depth,html[data-netbox-color-mode=dark] .ss-main .ss-single-selected .placeholder .depth,html[data-netbox-color-mode=light] .ss-main .ss-single-selected .placeholder .depth{display:none}html .ss-main .ss-single-selected span.placeholder>*,html .ss-main .ss-single-selected span.placeholder,html[data-netbox-color-mode=dark] .ss-main .ss-single-selected span.placeholder>*,html[data-netbox-color-mode=dark] .ss-main .ss-single-selected span.placeholder,html[data-netbox-color-mode=light] .ss-main .ss-single-selected span.placeholder>*,html[data-netbox-color-mode=light] .ss-main .ss-single-selected span.placeholder{line-height:1.5}html .ss-main .ss-multi-selected,html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected,html[data-netbox-color-mode=light] .ss-main .ss-multi-selected{align-items:center;padding-right:.75rem;padding-left:.75rem}html .ss-main .ss-multi-selected .ss-values .ss-disabled,html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-values .ss-disabled,html[data-netbox-color-mode=light] .ss-main .ss-multi-selected .ss-values .ss-disabled{padding:4px 0}html .ss-main .ss-multi-selected .ss-values .ss-value,html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-values .ss-value,html[data-netbox-color-mode=light] .ss-main .ss-multi-selected .ss-values .ss-value{color:var(--nbx-select-value-color);border-radius:.375rem}html .ss-main .ss-multi-selected .ss-values .ss-value .depth,html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-values .ss-value .depth,html[data-netbox-color-mode=light] .ss-main .ss-multi-selected .ss-values .ss-value .depth{display:none}html .ss-main .ss-multi-selected .ss-add,html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-add,html[data-netbox-color-mode=light] .ss-main .ss-multi-selected .ss-add{margin:0 .75rem}html .ss-main .ss-content,html[data-netbox-color-mode=dark] .ss-main .ss-content,html[data-netbox-color-mode=light] .ss-main .ss-content{background-color:var(--nbx-select-content-bg);border-bottom-right-radius:.375rem;border-bottom-left-radius:.375rem}html .ss-main .ss-content .ss-list .ss-option.ss-option-selected,html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-list .ss-option.ss-option-selected,html[data-netbox-color-mode=light] .ss-main .ss-content .ss-list .ss-option.ss-option-selected{color:#212529;background-color:var(--nbx-select-option-selected-bg)}html .ss-main .ss-content .ss-list .ss-option:hover,html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-list .ss-option:hover,html[data-netbox-color-mode=light] .ss-main .ss-content .ss-list .ss-option:hover{color:var(--nbx-select-option-hover-color);background-color:var(--nbx-select-option-hover-bg)}html .ss-main .ss-content .ss-list .ss-option:last-child,html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-list .ss-option:last-child,html[data-netbox-color-mode=light] .ss-main .ss-content .ss-list .ss-option:last-child{border-bottom-right-radius:.375rem;border-bottom-left-radius:.375rem}html .ss-main .ss-content .ss-list .ss-option.ss-disabled,html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-list .ss-option.ss-disabled,html[data-netbox-color-mode=light] .ss-main .ss-content .ss-list .ss-option.ss-disabled{background-color:unset}html .ss-main .ss-content .ss-list .ss-option.ss-disabled:hover,html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-list .ss-option.ss-disabled:hover,html[data-netbox-color-mode=light] .ss-main .ss-content .ss-list .ss-option.ss-disabled:hover{color:#6c757d}html .ss-main .ss-content .ss-list .ss-option .depth,html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-list .ss-option .depth,html[data-netbox-color-mode=light] .ss-main .ss-content .ss-list .ss-option .depth{opacity:.3}html .ss-main .ss-content .ss-list::-webkit-scrollbar,html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-list::-webkit-scrollbar,html[data-netbox-color-mode=light] .ss-main .ss-content .ss-list::-webkit-scrollbar{right:0;width:4px}html .ss-main .ss-content .ss-list::-webkit-scrollbar:hover,html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-list::-webkit-scrollbar:hover,html[data-netbox-color-mode=light] .ss-main .ss-content .ss-list::-webkit-scrollbar:hover{opacity:.8}html .ss-main .ss-content .ss-list::-webkit-scrollbar-track,html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-list::-webkit-scrollbar-track,html[data-netbox-color-mode=light] .ss-main .ss-content .ss-list::-webkit-scrollbar-track{background:transparent}html .ss-main .ss-content .ss-list::-webkit-scrollbar-thumb,html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-list::-webkit-scrollbar-thumb,html[data-netbox-color-mode=light] .ss-main .ss-content .ss-list::-webkit-scrollbar-thumb{right:0;width:2px;background-color:var(--nbx-sidebar-scroll)}html .ss-main .ss-content .ss-search,html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-search,html[data-netbox-color-mode=light] .ss-main .ss-content .ss-search{padding-right:.5rem}html .ss-main .ss-content .ss-search button,html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-search button,html[data-netbox-color-mode=light] .ss-main .ss-content .ss-search button{margin-left:.75rem}html .ss-main .ss-content .ss-search input[type=search],html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-search input[type=search],html[data-netbox-color-mode=light] .ss-main .ss-content .ss-search input[type=search]{color:#212529;background-color:#fff;border:1px solid #e9ecef}html .ss-main .ss-content .ss-search input[type=search]:focus,html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-search input[type=search]:focus,html[data-netbox-color-mode=light] .ss-main .ss-content .ss-search input[type=search]:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}}@media print{html .sidenav,html[data-netbox-color-mode=dark] .sidenav,html[data-netbox-color-mode=light] .sidenav{position:fixed;top:0;bottom:0;left:0;z-index:1050;display:block;width:100%;max-width:3rem;padding-top:0;padding-right:0;padding-left:0;background-color:var(--nbx-sidebar-bg);border-right:1px solid #ced4da;transition:all .1s ease-in-out}}@media print and (max-width: 991.98px){html .sidenav,html[data-netbox-color-mode=dark] .sidenav,html[data-netbox-color-mode=light] .sidenav{transform:translate(-3rem)}html .sidenav+.content-container[class],html[data-netbox-color-mode=dark] .sidenav+.content-container[class],html[data-netbox-color-mode=light] .sidenav+.content-container[class]{margin-left:0}html .sidenav .profile-button-container[class],html[data-netbox-color-mode=dark] .sidenav .profile-button-container[class],html[data-netbox-color-mode=light] .sidenav .profile-button-container[class]{display:block}}@media print{html .sidenav .profile-button-container,html[data-netbox-color-mode=dark] .sidenav .profile-button-container,html[data-netbox-color-mode=light] .sidenav .profile-button-container{display:none;padding:.5rem 1rem}}@media print{html .sidenav+.content-container,html[data-netbox-color-mode=dark] .sidenav+.content-container,html[data-netbox-color-mode=light] .sidenav+.content-container{margin-left:3rem;transition:all .1s ease-in-out}}@media print{html .sidenav .sidenav-brand,html[data-netbox-color-mode=dark] .sidenav .sidenav-brand,html[data-netbox-color-mode=light] .sidenav .sidenav-brand{margin-right:0;transition:opacity .1s ease-in-out}}@media print{html .sidenav .sidenav-brand-icon,html[data-netbox-color-mode=dark] .sidenav .sidenav-brand-icon,html[data-netbox-color-mode=light] .sidenav .sidenav-brand-icon{transition:opacity .1s ease-in-out}}@media print{html .sidenav .sidenav-inner,html[data-netbox-color-mode=dark] .sidenav .sidenav-inner,html[data-netbox-color-mode=light] .sidenav .sidenav-inner{padding-right:1.5rem;padding-left:1.5rem}}@media print and (min-width: 768px){html .sidenav .sidenav-inner,html[data-netbox-color-mode=dark] .sidenav .sidenav-inner,html[data-netbox-color-mode=light] .sidenav .sidenav-inner{padding-right:0;padding-left:0}}@media print{html .sidenav .sidenav-brand-img,html .sidenav .sidenav-brand>img,html[data-netbox-color-mode=dark] .sidenav .sidenav-brand-img,html[data-netbox-color-mode=dark] .sidenav .sidenav-brand>img,html[data-netbox-color-mode=light] .sidenav .sidenav-brand-img,html[data-netbox-color-mode=light] .sidenav .sidenav-brand>img{max-width:100%;max-height:calc(16rem - 1rem)}}@media print{html .sidenav .navbar-heading,html[data-netbox-color-mode=dark] .sidenav .navbar-heading,html[data-netbox-color-mode=light] .sidenav .navbar-heading{padding-top:.5rem;padding-bottom:.5rem;font-size:.75rem;text-transform:uppercase;letter-spacing:.04em}}@media print{html .sidenav .sidenav-header,html[data-netbox-color-mode=dark] .sidenav .sidenav-header,html[data-netbox-color-mode=light] .sidenav .sidenav-header{position:relative;display:flex;align-items:center;justify-content:space-between;height:78px;padding:1rem;transition:all .1s ease-in-out}}@media print{html .sidenav .sidenav-toggle,html[data-netbox-color-mode=dark] .sidenav .sidenav-toggle,html[data-netbox-color-mode=light] .sidenav .sidenav-toggle{position:absolute;display:inline-block;opacity:0;transition:opacity 10ms ease-in-out;transition-delay:.1s}}@media print{html .sidenav .sidenav-collapse,html[data-netbox-color-mode=dark] .sidenav .sidenav-collapse,html[data-netbox-color-mode=light] .sidenav .sidenav-collapse{display:flex;flex:1;flex-direction:column;align-items:stretch;padding-right:1.5rem;padding-left:1.5rem;margin-right:-1.5rem;margin-left:-1.5rem}}@media print{html .sidenav .sidenav-collapse>*,html[data-netbox-color-mode=dark] .sidenav .sidenav-collapse>*,html[data-netbox-color-mode=light] .sidenav .sidenav-collapse>*{min-width:100%}}@media print and (min-width: 768px){html .sidenav .sidenav-collapse,html[data-netbox-color-mode=dark] .sidenav .sidenav-collapse,html[data-netbox-color-mode=light] .sidenav .sidenav-collapse{margin-right:0;margin-left:0}}@media print{html .sidenav .nav-group-header,html[data-netbox-color-mode=dark] .sidenav .nav-group-header,html[data-netbox-color-mode=light] .sidenav .nav-group-header{padding:.25rem 1rem;margin-top:.5rem;margin-bottom:0}}@media print{html .sidenav .nav .nav-item,html[data-netbox-color-mode=dark] .sidenav .nav .nav-item,html[data-netbox-color-mode=light] .sidenav .nav .nav-item{display:flex;align-items:center;justify-content:space-between;width:100%}}@media print{html .sidenav .nav .nav-item.no-buttons,html[data-netbox-color-mode=dark] .sidenav .nav .nav-item.no-buttons,html[data-netbox-color-mode=light] .sidenav .nav .nav-item.no-buttons{padding-right:5rem}}@media print{html .sidenav .collapse .nav .nav-item .nav-link,html[data-netbox-color-mode=dark] .sidenav .collapse .nav .nav-item .nav-link,html[data-netbox-color-mode=light] .sidenav .collapse .nav .nav-item .nav-link{width:100%;padding:.25rem .25rem .25rem 1rem;margin-top:0;margin-bottom:0;border-top-right-radius:.375rem;border-bottom-right-radius:.375rem}}@media print{html .sidenav .collapse .nav .nav-item .nav-link .sidenav-mini-icon,html[data-netbox-color-mode=dark] .sidenav .collapse .nav .nav-item .nav-link .sidenav-mini-icon,html[data-netbox-color-mode=light] .sidenav .collapse .nav .nav-item .nav-link .sidenav-mini-icon{width:1rem;text-align:center;transition:all .1s ease-in-out}}@media print{html .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle],html[data-netbox-color-mode=dark] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle],html[data-netbox-color-mode=light] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle]{width:unset;height:100%;padding-left:.5rem;font-weight:700;color:var(--nbx-sidenav-parent-color)}}@media print{html .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle].active,html[data-netbox-color-mode=dark] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle].active,html[data-netbox-color-mode=light] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle].active{color:#343a40;background:#cfe2ff}}@media print{html .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle]:after,html[data-netbox-color-mode=dark] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle]:after,html[data-netbox-color-mode=light] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle]:after{display:inline-block;margin-left:auto;font-family:"Material Design Icons";font-style:normal;font-weight:700;font-variant:normal;color:#6c757d;text-rendering:auto;-webkit-font-smoothing:antialiased;content:"\f0142";transition:all .1s ease-in-out}}@media print{html .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle][aria-expanded=true].active:after,html[data-netbox-color-mode=dark] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle][aria-expanded=true].active:after,html[data-netbox-color-mode=light] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle][aria-expanded=true].active:after{color:#343a40}}@media print{html .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle][aria-expanded=true]:after,html[data-netbox-color-mode=dark] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle][aria-expanded=true]:after,html[data-netbox-color-mode=light] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle][aria-expanded=true]:after{color:#0d6efd;transform:rotate(90deg)}}@media print{html .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle] .nav-link-text,html[data-netbox-color-mode=dark] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle] .nav-link-text,html[data-netbox-color-mode=light] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle] .nav-link-text{padding-left:.25rem;transition:all .1s ease-in-out}}@media print{html .sidenav .navbar-nav,html[data-netbox-color-mode=dark] .sidenav .navbar-nav,html[data-netbox-color-mode=light] .sidenav .navbar-nav{flex-direction:column;margin-right:-1.5rem;margin-left:-1.5rem}}@media print{html .sidenav .navbar-nav .nav-item,html[data-netbox-color-mode=dark] .sidenav .navbar-nav .nav-item,html[data-netbox-color-mode=light] .sidenav .navbar-nav .nav-item{margin-top:2px}}@media print{html .sidenav .navbar-nav .nav-item.disabled,html[data-netbox-color-mode=dark] .sidenav .navbar-nav .nav-item.disabled,html[data-netbox-color-mode=light] .sidenav .navbar-nav .nav-item.disabled{cursor:not-allowed;opacity:.8}}@media print{html .sidenav .navbar-nav .nav-item .nav-link,html[data-netbox-color-mode=dark] .sidenav .navbar-nav .nav-item .nav-link,html[data-netbox-color-mode=light] .sidenav .navbar-nav .nav-item .nav-link{position:relative;display:flex;align-items:center;width:100%;padding:.5rem 1rem;font-size:.875rem;color:var(--nbx-sidenav-link-color);white-space:nowrap;transition:all .1s ease-in-out}}@media print{html .sidenav .navbar-nav .nav-item .nav-link.active,html[data-netbox-color-mode=dark] .sidenav .navbar-nav .nav-item .nav-link.active,html[data-netbox-color-mode=light] .sidenav .navbar-nav .nav-item .nav-link.active{background-color:var(--nbx-sidebar-link-active-bg)}}@media print{html .sidenav .navbar-nav .nav-item .nav-link:hover:not(.active),html[data-netbox-color-mode=dark] .sidenav .navbar-nav .nav-item .nav-link:hover:not(.active),html[data-netbox-color-mode=light] .sidenav .navbar-nav .nav-item .nav-link:hover:not(.active){color:var(--nbx-body-color);background-color:var(--nbx-sidebar-link-hover-bg)}}@media print{html .sidenav .navbar-nav .nav-item .nav-link>i,html[data-netbox-color-mode=dark] .sidenav .navbar-nav .nav-item .nav-link>i,html[data-netbox-color-mode=light] .sidenav .navbar-nav .nav-item .nav-link>i{min-width:2rem;font-size:calc(45px / 2);text-align:center}}@media print{html .sidenav .navbar-nav .nav-group-label,html[data-netbox-color-mode=dark] .sidenav .navbar-nav .nav-group-label,html[data-netbox-color-mode=light] .sidenav .navbar-nav .nav-group-label{display:block;font-size:.75rem;font-weight:700;color:var(--nbx-sidenav-group-color);text-transform:uppercase;white-space:nowrap}}@media print{html body[data-sidenav-pinned] .sidenav .sidenav-toggle-icon,html[data-netbox-color-mode=dark] body[data-sidenav-pinned] .sidenav .sidenav-toggle-icon,html[data-netbox-color-mode=light] body[data-sidenav-pinned] .sidenav .sidenav-toggle-icon{color:var(--nbx-sidenav-pin-color);transform:rotate(90deg)}}@media print and (min-width: 1200px){html body[data-sidenav-pinned] .sidenav+.content-container,html[data-netbox-color-mode=dark] body[data-sidenav-pinned] .sidenav+.content-container,html[data-netbox-color-mode=light] body[data-sidenav-pinned] .sidenav+.content-container{margin-left:16rem}}@media print{html .g-sidenav-show:not(.g-sidenav-pinned) .sidenav .sidenav-toggle-icon,html[data-netbox-color-mode=dark] .g-sidenav-show:not(.g-sidenav-pinned) .sidenav .sidenav-toggle-icon,html[data-netbox-color-mode=light] .g-sidenav-show:not(.g-sidenav-pinned) .sidenav .sidenav-toggle-icon{transform:rotate(0)}}@media print{html body[data-sidenav-show] .sidenav,html body[data-sidenav-pinned] .sidenav,html[data-netbox-color-mode=dark] body[data-sidenav-show] .sidenav,html[data-netbox-color-mode=dark] body[data-sidenav-pinned] .sidenav,html[data-netbox-color-mode=light] body[data-sidenav-show] .sidenav,html[data-netbox-color-mode=light] body[data-sidenav-pinned] .sidenav{max-width:16rem}}@media print{html body[data-sidenav-show] .sidenav .sidenav-brand,html body[data-sidenav-show] .sidenav .navbar-heading,html body[data-sidenav-pinned] .sidenav .sidenav-brand,html body[data-sidenav-pinned] .sidenav .navbar-heading,html[data-netbox-color-mode=dark] body[data-sidenav-show] .sidenav .sidenav-brand,html[data-netbox-color-mode=dark] body[data-sidenav-show] .sidenav .navbar-heading,html[data-netbox-color-mode=dark] body[data-sidenav-pinned] .sidenav .sidenav-brand,html[data-netbox-color-mode=dark] body[data-sidenav-pinned] .sidenav .navbar-heading,html[data-netbox-color-mode=light] body[data-sidenav-show] .sidenav .sidenav-brand,html[data-netbox-color-mode=light] body[data-sidenav-show] .sidenav .navbar-heading,html[data-netbox-color-mode=light] body[data-sidenav-pinned] .sidenav .sidenav-brand,html[data-netbox-color-mode=light] body[data-sidenav-pinned] .sidenav .navbar-heading{display:block}}@media print{html body[data-sidenav-show] .sidenav .sidenav-brand,html body[data-sidenav-pinned] .sidenav .sidenav-brand,html[data-netbox-color-mode=dark] body[data-sidenav-show] .sidenav .sidenav-brand,html[data-netbox-color-mode=dark] body[data-sidenav-pinned] .sidenav .sidenav-brand,html[data-netbox-color-mode=light] body[data-sidenav-show] .sidenav .sidenav-brand,html[data-netbox-color-mode=light] body[data-sidenav-pinned] .sidenav .sidenav-brand{opacity:1;transform:translate(0)}}@media print{html body[data-sidenav-show] .sidenav .sidenav-brand-icon,html body[data-sidenav-pinned] .sidenav .sidenav-brand-icon,html[data-netbox-color-mode=dark] body[data-sidenav-show] .sidenav .sidenav-brand-icon,html[data-netbox-color-mode=dark] body[data-sidenav-pinned] .sidenav .sidenav-brand-icon,html[data-netbox-color-mode=light] body[data-sidenav-show] .sidenav .sidenav-brand-icon,html[data-netbox-color-mode=light] body[data-sidenav-pinned] .sidenav .sidenav-brand-icon{position:absolute;opacity:0}}@media print and (max-width: 991.98px){html body[data-sidenav-show] .sidenav,html body[data-sidenav-pinned] .sidenav,html[data-netbox-color-mode=dark] body[data-sidenav-show] .sidenav,html[data-netbox-color-mode=dark] body[data-sidenav-pinned] .sidenav,html[data-netbox-color-mode=light] body[data-sidenav-show] .sidenav,html[data-netbox-color-mode=light] body[data-sidenav-pinned] .sidenav{transform:translate(0)}}@media print{html body[data-sidenav-hide] .sidenav .sidenav-header,html body[data-sidenav-hidden] .sidenav .sidenav-header,html[data-netbox-color-mode=dark] body[data-sidenav-hide] .sidenav .sidenav-header,html[data-netbox-color-mode=dark] body[data-sidenav-hidden] .sidenav .sidenav-header,html[data-netbox-color-mode=light] body[data-sidenav-hide] .sidenav .sidenav-header,html[data-netbox-color-mode=light] body[data-sidenav-hidden] .sidenav .sidenav-header{padding:.5rem}}@media print{html body[data-sidenav-hide] .sidenav .sidenav-brand,html body[data-sidenav-hidden] .sidenav .sidenav-brand,html[data-netbox-color-mode=dark] body[data-sidenav-hide] .sidenav .sidenav-brand,html[data-netbox-color-mode=dark] body[data-sidenav-hidden] .sidenav .sidenav-brand,html[data-netbox-color-mode=light] body[data-sidenav-hide] .sidenav .sidenav-brand,html[data-netbox-color-mode=light] body[data-sidenav-hidden] .sidenav .sidenav-brand{position:absolute;opacity:0}}@media print{html body[data-sidenav-hide] .sidenav .sidenav-brand-icon,html body[data-sidenav-hidden] .sidenav .sidenav-brand-icon,html[data-netbox-color-mode=dark] body[data-sidenav-hide] .sidenav .sidenav-brand-icon,html[data-netbox-color-mode=dark] body[data-sidenav-hidden] .sidenav .sidenav-brand-icon,html[data-netbox-color-mode=light] body[data-sidenav-hide] .sidenav .sidenav-brand-icon,html[data-netbox-color-mode=light] body[data-sidenav-hidden] .sidenav .sidenav-brand-icon{opacity:1}}@media print{html body[data-sidenav-hide] .sidenav .sidenav-toggle,html body[data-sidenav-hidden] .sidenav .sidenav-toggle,html[data-netbox-color-mode=dark] body[data-sidenav-hide] .sidenav .sidenav-toggle,html[data-netbox-color-mode=dark] body[data-sidenav-hidden] .sidenav .sidenav-toggle,html[data-netbox-color-mode=light] body[data-sidenav-hide] .sidenav .sidenav-toggle,html[data-netbox-color-mode=light] body[data-sidenav-hidden] .sidenav .sidenav-toggle{opacity:0;position:absolute;transition:unset;transition-delay:0ms}}@media print{html body[data-sidenav-hide] .sidenav .navbar-nav>.nav-item>.nav-link:after,html body[data-sidenav-hidden] .sidenav .navbar-nav>.nav-item>.nav-link:after,html[data-netbox-color-mode=dark] body[data-sidenav-hide] .sidenav .navbar-nav>.nav-item>.nav-link:after,html[data-netbox-color-mode=dark] body[data-sidenav-hidden] .sidenav .navbar-nav>.nav-item>.nav-link:after,html[data-netbox-color-mode=light] body[data-sidenav-hide] .sidenav .navbar-nav>.nav-item>.nav-link:after,html[data-netbox-color-mode=light] body[data-sidenav-hidden] .sidenav .navbar-nav>.nav-item>.nav-link:after{content:""}}@media print{html body[data-sidenav-hide] .sidenav .nav-item .collapse,html body[data-sidenav-hidden] .sidenav .nav-item .collapse,html[data-netbox-color-mode=dark] body[data-sidenav-hide] .sidenav .nav-item .collapse,html[data-netbox-color-mode=dark] body[data-sidenav-hidden] .sidenav .nav-item .collapse,html[data-netbox-color-mode=light] body[data-sidenav-hide] .sidenav .nav-item .collapse,html[data-netbox-color-mode=light] body[data-sidenav-hidden] .sidenav .nav-item .collapse{display:none}}@media print{html body[data-sidenav-hide] .sidenav .nav-link-text,html body[data-sidenav-hidden] .sidenav .nav-link-text,html[data-netbox-color-mode=dark] body[data-sidenav-hide] .sidenav .nav-link-text,html[data-netbox-color-mode=dark] body[data-sidenav-hidden] .sidenav .nav-link-text,html[data-netbox-color-mode=light] body[data-sidenav-hide] .sidenav .nav-link-text,html[data-netbox-color-mode=light] body[data-sidenav-hidden] .sidenav .nav-link-text{opacity:0}}@media print{html body[data-sidenav-hide] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle].active,html body[data-sidenav-hidden] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle].active,html[data-netbox-color-mode=dark] body[data-sidenav-hide] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle].active,html[data-netbox-color-mode=dark] body[data-sidenav-hidden] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle].active,html[data-netbox-color-mode=light] body[data-sidenav-hide] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle].active,html[data-netbox-color-mode=light] body[data-sidenav-hidden] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle].active{margin-right:0;margin-left:0;border-radius:unset}}@media print{html body[data-sidenav-show] .sidenav .sidenav-brand,html[data-netbox-color-mode=dark] body[data-sidenav-show] .sidenav .sidenav-brand,html[data-netbox-color-mode=light] body[data-sidenav-show] .sidenav .sidenav-brand{display:block}}@media print{html body[data-sidenav-show] .sidenav .nav-item .collapse,html[data-netbox-color-mode=dark] body[data-sidenav-show] .sidenav .nav-item .collapse,html[data-netbox-color-mode=light] body[data-sidenav-show] .sidenav .nav-item .collapse{height:auto;transition:all .1s ease-in-out}}@media print{html body[data-sidenav-show] .sidenav .nav-item .nav-link .nav-link-text,html[data-netbox-color-mode=dark] body[data-sidenav-show] .sidenav .nav-item .nav-link .nav-link-text,html[data-netbox-color-mode=light] body[data-sidenav-show] .sidenav .nav-item .nav-link .nav-link-text{opacity:1}}@media print{html body[data-sidenav-show] .sidenav .nav-item .sidenav-mini-icon,html[data-netbox-color-mode=dark] body[data-sidenav-show] .sidenav .nav-item .sidenav-mini-icon,html[data-netbox-color-mode=light] body[data-sidenav-show] .sidenav .nav-item .sidenav-mini-icon{opacity:0}}@media print and (min-width: 992px){html body[data-sidenav-show] .sidenav .sidenav-toggle,html[data-netbox-color-mode=dark] body[data-sidenav-show] .sidenav .sidenav-toggle,html[data-netbox-color-mode=light] body[data-sidenav-show] .sidenav .sidenav-toggle{position:relative;opacity:1}}@media print{html .simplebar-track.simplebar-vertical,html[data-netbox-color-mode=dark] .simplebar-track.simplebar-vertical,html[data-netbox-color-mode=light] .simplebar-track.simplebar-vertical{right:0;width:6px;background-color:transparent}}@media print{html .simplebar-track.simplebar-vertical .simplebar-scrollbar,html[data-netbox-color-mode=dark] .simplebar-track.simplebar-vertical .simplebar-scrollbar,html[data-netbox-color-mode=light] .simplebar-track.simplebar-vertical .simplebar-scrollbar{transition:none}}@media print{html .simplebar-track.simplebar-vertical .simplebar-scrollbar:before,html[data-netbox-color-mode=dark] .simplebar-track.simplebar-vertical .simplebar-scrollbar:before,html[data-netbox-color-mode=light] .simplebar-track.simplebar-vertical .simplebar-scrollbar:before{right:0;width:3px;background:var(--nbx-sidebar-scroll);border-radius:.375rem}}@media print{html .simplebar-track.simplebar-vertical.simplebar-hover .simplebar-scrollbar:before,html[data-netbox-color-mode=dark] .simplebar-track.simplebar-vertical.simplebar-hover .simplebar-scrollbar:before,html[data-netbox-color-mode=light] .simplebar-track.simplebar-vertical.simplebar-hover .simplebar-scrollbar:before{width:5px}}@media print{html body,html[data-netbox-color-mode=dark] body,html[data-netbox-color-mode=light] body{color:var(--nbx-body-color);background-color:var(--nbx-body-bg);font-size:.875rem}}@media print{html pre,html[data-netbox-color-mode=dark] pre,html[data-netbox-color-mode=light] pre{padding:1rem;white-space:pre;background-color:var(--nbx-pre-bg);border:1px solid var(--nbx-pre-border-color);border-radius:.375rem}}@media print{html small,html .small,html[data-netbox-color-mode=dark] .small,html[data-netbox-color-mode=light] .small,html[data-netbox-color-mode=dark] small,html[data-netbox-color-mode=light] small{font-size:smaller!important}}@media print{html a[type=button],html[data-netbox-color-mode=dark] a[type=button],html[data-netbox-color-mode=light] a[type=button]{-webkit-appearance:unset!important}}@media print{html *[data-href],html[data-netbox-color-mode=dark] *[data-href],html[data-netbox-color-mode=light] *[data-href]{cursor:pointer}}@media print{html .form-control:not([type=file]),html[data-netbox-color-mode=dark] .form-control:not([type=file]),html[data-netbox-color-mode=light] .form-control:not([type=file]){font-size:inherit}}@media print{html .badge,html[data-netbox-color-mode=dark] .badge,html[data-netbox-color-mode=light] .badge{font-size:.75rem}}@media print{html .text-xs,html[data-netbox-color-mode=dark] .text-xs,html[data-netbox-color-mode=light] .text-xs{font-size:.75rem!important;line-height:1.25!important}}@media print{html .border-input,html[data-netbox-color-mode=dark] .border-input,html[data-netbox-color-mode=light] .border-input{border:1px solid #e9ecef!important}}@media print{html .ws-nowrap,html[data-netbox-color-mode=dark] .ws-nowrap,html[data-netbox-color-mode=light] .ws-nowrap{white-space:nowrap!important}}@media print{html table tr .vertical-align,html table td .vertical-align,html[data-netbox-color-mode=dark] table tr .vertical-align,html[data-netbox-color-mode=dark] table td .vertical-align,html[data-netbox-color-mode=light] table tr .vertical-align,html[data-netbox-color-mode=light] table td .vertical-align{vertical-align:middle}}@media print{html .noprint,html[data-netbox-color-mode=dark] .noprint,html[data-netbox-color-mode=light] .noprint{display:none!important;visibility:hidden!important}}@media print{html .printonly,html[data-netbox-color-mode=dark] .printonly,html[data-netbox-color-mode=light] .printonly{display:none!important;visibility:hidden!important}}@media print{html .printonly,html[data-netbox-color-mode=dark] .printonly,html[data-netbox-color-mode=light] .printonly{display:block!important;visibility:visible!important}}@media print{html :root,html[data-netbox-color-mode=dark] :root,html[data-netbox-color-mode=light] :root{--nbx-sidebar-bg: #e9ecef;--nbx-sidebar-scroll: #adb5bd;--nbx-sidebar-link-hover-bg: rgba(108, 117, 125, .15);--nbx-sidebar-link-active-bg: #cfe2ff;--nbx-sidebar-title-color: #6c757d;--nbx-sidebar-shadow: inset 0px -25px 20px -25px rgba(0, 0, 0, .25);--nbx-breadcrumb-bg: #e9ecef;--nbx-body-bg: #fff;--nbx-body-color: #343a40;--nbx-pre-bg: #f8f9fa;--nbx-pre-border-color: #6c757d;--nbx-change-added: rgba(25, 135, 84, .4);--nbx-change-removed: rgba(220, 53, 69, .4);--nbx-cable-node-bg: #f8f9fa;--nbx-cable-node-border-color: #e9ecef;--nbx-cable-termination-bg: #e9ecef;--nbx-cable-termination-border-color: #dee2e6;--nbx-search-filter-border-left-color: #dee2e6;--nbx-color-mode-toggle-color: #0d6efd;--nbx-sidenav-link-color: #343a40;--nbx-sidenav-pin-color: #fd7e14;--nbx-sidenav-parent-color: #343a40;--nbx-sidenav-group-color: #343a40}}@media print{html :root[data-netbox-color-mode=dark],html[data-netbox-color-mode=dark] :root[data-netbox-color-mode=dark],html[data-netbox-color-mode=light] :root[data-netbox-color-mode=dark]{--nbx-sidebar-bg: #212529;--nbx-sidebar-scroll: #495057;--nbx-sidebar-link-active-bg: rgba(110, 168, 254, .25);--nbx-sidebar-link-hover-bg: rgba(173, 181, 189, .15);--nbx-sidebar-title-color: #6c757d;--nbx-sidebar-shadow: inset 0px -25px 20px -25px rgba(255, 255, 255, .05);--nbx-breadcrumb-bg: #343a40;--nbx-body-bg: #1b1f22;--nbx-body-color: #f8f9fa;--nbx-pre-bg: #495057;--nbx-pre-border-color: #6c757d;--nbx-change-added: rgba(117, 183, 152, .4);--nbx-change-removed: rgba(234, 134, 143, .4);--nbx-cable-node-bg: #495057;--nbx-cable-node-border-color: #6c757d;--nbx-cable-termination-bg: #343a40;--nbx-cable-termination-border-color: #495057;--nbx-search-filter-border-left-color: #6c757d;--nbx-color-mode-toggle-color: #ffda6a;--nbx-sidenav-link-color: #e9ecef;--nbx-sidenav-pin-color: #ffc107;--nbx-sidenav-parent-color: #e9ecef;--nbx-sidenav-group-color: #6c757d}}@media print{html .bg-primary button.btn-close,html[data-netbox-color-mode=dark] .bg-primary button.btn-close,html[data-netbox-color-mode=light] .bg-primary button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%231f496e'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-primary,html[data-netbox-color-mode=dark] .btn.btn-ghost-primary,html[data-netbox-color-mode=light] .btn.btn-ghost-primary{color:#337ab7}}@media print{html .btn.btn-ghost-primary:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-primary:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-primary:hover{background-color:#337ab71f}}@media print{html .alert.alert-primary a:not(.btn),html .table-primary a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-primary a:not(.btn),html[data-netbox-color-mode=dark] .table-primary a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-primary a:not(.btn),html[data-netbox-color-mode=light] .table-primary a:not(.btn){font-weight:700;color:#1f496e}}@media print{html .alert.alert-primary .btn:not([class*=btn-outline]),html .table-primary .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-primary .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-primary .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-primary .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-primary .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-primary a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-primary a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-primary a:not(.btn){font-weight:700;color:#adcae2}}@media print{html .badge.bg-primary,html .toast.bg-primary,html .toast-header.bg-primary,html .progress-bar.bg-primary,html[data-netbox-color-mode=dark] .badge.bg-primary,html[data-netbox-color-mode=dark] .toast.bg-primary,html[data-netbox-color-mode=dark] .toast-header.bg-primary,html[data-netbox-color-mode=dark] .progress-bar.bg-primary,html[data-netbox-color-mode=light] .badge.bg-primary,html[data-netbox-color-mode=light] .toast.bg-primary,html[data-netbox-color-mode=light] .toast-header.bg-primary,html[data-netbox-color-mode=light] .progress-bar.bg-primary{color:#fff}}@media print{html .bg-secondary button.btn-close,html[data-netbox-color-mode=dark] .bg-secondary button.btn-close,html[data-netbox-color-mode=light] .bg-secondary button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%2341464b'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-secondary,html[data-netbox-color-mode=dark] .btn.btn-ghost-secondary,html[data-netbox-color-mode=light] .btn.btn-ghost-secondary{color:#6c757d}}@media print{html .btn.btn-ghost-secondary:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-secondary:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-secondary:hover{background-color:#6c757d1f}}@media print{html .alert.alert-secondary a:not(.btn),html .table-secondary a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-secondary a:not(.btn),html[data-netbox-color-mode=dark] .table-secondary a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-secondary a:not(.btn),html[data-netbox-color-mode=light] .table-secondary a:not(.btn){font-weight:700;color:#41464b}}@media print{html .alert.alert-secondary .btn:not([class*=btn-outline]),html .table-secondary .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-secondary .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-secondary .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-secondary .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-secondary .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-secondary a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-secondary a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-secondary a:not(.btn){font-weight:700;color:#c4c8cb}}@media print{html .badge.bg-secondary,html .toast.bg-secondary,html .toast-header.bg-secondary,html .progress-bar.bg-secondary,html[data-netbox-color-mode=dark] .badge.bg-secondary,html[data-netbox-color-mode=dark] .toast.bg-secondary,html[data-netbox-color-mode=dark] .toast-header.bg-secondary,html[data-netbox-color-mode=dark] .progress-bar.bg-secondary,html[data-netbox-color-mode=light] .badge.bg-secondary,html[data-netbox-color-mode=light] .toast.bg-secondary,html[data-netbox-color-mode=light] .toast-header.bg-secondary,html[data-netbox-color-mode=light] .progress-bar.bg-secondary{color:#fff}}@media print{html .bg-success button.btn-close,html[data-netbox-color-mode=dark] .bg-success button.btn-close,html[data-netbox-color-mode=light] .bg-success button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230f5132'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-success,html[data-netbox-color-mode=dark] .btn.btn-ghost-success,html[data-netbox-color-mode=light] .btn.btn-ghost-success{color:#198754}}@media print{html .btn.btn-ghost-success:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-success:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-success:hover{background-color:#1987541f}}@media print{html .alert.alert-success a:not(.btn),html .table-success a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-success a:not(.btn),html[data-netbox-color-mode=dark] .table-success a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-success a:not(.btn),html[data-netbox-color-mode=light] .table-success a:not(.btn){font-weight:700;color:#0f5132}}@media print{html .alert.alert-success .btn:not([class*=btn-outline]),html .table-success .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-success .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-success .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-success .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-success .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-success a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-success a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-success a:not(.btn){font-weight:700;color:#a3cfbb}}@media print{html .badge.bg-success,html .toast.bg-success,html .toast-header.bg-success,html .progress-bar.bg-success,html[data-netbox-color-mode=dark] .badge.bg-success,html[data-netbox-color-mode=dark] .toast.bg-success,html[data-netbox-color-mode=dark] .toast-header.bg-success,html[data-netbox-color-mode=dark] .progress-bar.bg-success,html[data-netbox-color-mode=light] .badge.bg-success,html[data-netbox-color-mode=light] .toast.bg-success,html[data-netbox-color-mode=light] .toast-header.bg-success,html[data-netbox-color-mode=light] .progress-bar.bg-success{color:#fff}}@media print{html .bg-info button.btn-close,html[data-netbox-color-mode=dark] .bg-info button.btn-close,html[data-netbox-color-mode=light] .bg-info button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23055160'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-info,html[data-netbox-color-mode=dark] .btn.btn-ghost-info,html[data-netbox-color-mode=light] .btn.btn-ghost-info{color:#0dcaf0}}@media print{html .btn.btn-ghost-info:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-info:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-info:hover{background-color:#0dcaf01f}}@media print{html .alert.alert-info a:not(.btn),html .table-info a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-info a:not(.btn),html[data-netbox-color-mode=dark] .table-info a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-info a:not(.btn),html[data-netbox-color-mode=light] .table-info a:not(.btn){font-weight:700;color:#055160}}@media print{html .alert.alert-info .btn:not([class*=btn-outline]),html .table-info .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-info .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-info .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-info .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-info .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-info a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-info a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-info a:not(.btn){font-weight:700;color:#055160}}@media print{html .badge.bg-info,html .toast.bg-info,html .toast-header.bg-info,html .progress-bar.bg-info,html[data-netbox-color-mode=dark] .badge.bg-info,html[data-netbox-color-mode=dark] .toast.bg-info,html[data-netbox-color-mode=dark] .toast-header.bg-info,html[data-netbox-color-mode=dark] .progress-bar.bg-info,html[data-netbox-color-mode=light] .badge.bg-info,html[data-netbox-color-mode=light] .toast.bg-info,html[data-netbox-color-mode=light] .toast-header.bg-info,html[data-netbox-color-mode=light] .progress-bar.bg-info{color:#000}}@media print{html .bg-warning button.btn-close,html[data-netbox-color-mode=dark] .bg-warning button.btn-close,html[data-netbox-color-mode=light] .bg-warning button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23664d03'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-warning,html[data-netbox-color-mode=dark] .btn.btn-ghost-warning,html[data-netbox-color-mode=light] .btn.btn-ghost-warning{color:#ffc107}}@media print{html .btn.btn-ghost-warning:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-warning:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-warning:hover{background-color:#ffc1071f}}@media print{html .alert.alert-warning a:not(.btn),html .table-warning a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-warning a:not(.btn),html[data-netbox-color-mode=dark] .table-warning a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-warning a:not(.btn),html[data-netbox-color-mode=light] .table-warning a:not(.btn){font-weight:700;color:#664d03}}@media print{html .alert.alert-warning .btn:not([class*=btn-outline]),html .table-warning .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-warning .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-warning .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-warning .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-warning .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-warning a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-warning a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-warning a:not(.btn){font-weight:700;color:#664d03}}@media print{html .badge.bg-warning,html .toast.bg-warning,html .toast-header.bg-warning,html .progress-bar.bg-warning,html[data-netbox-color-mode=dark] .badge.bg-warning,html[data-netbox-color-mode=dark] .toast.bg-warning,html[data-netbox-color-mode=dark] .toast-header.bg-warning,html[data-netbox-color-mode=dark] .progress-bar.bg-warning,html[data-netbox-color-mode=light] .badge.bg-warning,html[data-netbox-color-mode=light] .toast.bg-warning,html[data-netbox-color-mode=light] .toast-header.bg-warning,html[data-netbox-color-mode=light] .progress-bar.bg-warning{color:#000}}@media print{html .bg-danger button.btn-close,html[data-netbox-color-mode=dark] .bg-danger button.btn-close,html[data-netbox-color-mode=light] .bg-danger button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23842029'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-danger,html[data-netbox-color-mode=dark] .btn.btn-ghost-danger,html[data-netbox-color-mode=light] .btn.btn-ghost-danger{color:#dc3545}}@media print{html .btn.btn-ghost-danger:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-danger:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-danger:hover{background-color:#dc35451f}}@media print{html .alert.alert-danger a:not(.btn),html .table-danger a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-danger a:not(.btn),html[data-netbox-color-mode=dark] .table-danger a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-danger a:not(.btn),html[data-netbox-color-mode=light] .table-danger a:not(.btn){font-weight:700;color:#842029}}@media print{html .alert.alert-danger .btn:not([class*=btn-outline]),html .table-danger .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-danger .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-danger .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-danger .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-danger .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-danger a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-danger a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-danger a:not(.btn){font-weight:700;color:#f1aeb5}}@media print{html .badge.bg-danger,html .toast.bg-danger,html .toast-header.bg-danger,html .progress-bar.bg-danger,html[data-netbox-color-mode=dark] .badge.bg-danger,html[data-netbox-color-mode=dark] .toast.bg-danger,html[data-netbox-color-mode=dark] .toast-header.bg-danger,html[data-netbox-color-mode=dark] .progress-bar.bg-danger,html[data-netbox-color-mode=light] .badge.bg-danger,html[data-netbox-color-mode=light] .toast.bg-danger,html[data-netbox-color-mode=light] .toast-header.bg-danger,html[data-netbox-color-mode=light] .progress-bar.bg-danger{color:#fff}}@media print{html .bg-light button.btn-close,html[data-netbox-color-mode=dark] .bg-light button.btn-close,html[data-netbox-color-mode=light] .bg-light button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23636464'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-light,html[data-netbox-color-mode=dark] .btn.btn-ghost-light,html[data-netbox-color-mode=light] .btn.btn-ghost-light{color:#f8f9fa}}@media print{html .btn.btn-ghost-light:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-light:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-light:hover{background-color:#f8f9fa1f}}@media print{html .alert.alert-light a:not(.btn),html .table-light a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-light a:not(.btn),html[data-netbox-color-mode=dark] .table-light a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-light a:not(.btn),html[data-netbox-color-mode=light] .table-light a:not(.btn){font-weight:700;color:#636464}}@media print{html .alert.alert-light .btn:not([class*=btn-outline]),html .table-light .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-light .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-light .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-light .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-light .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-light a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-light a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-light a:not(.btn){font-weight:700;color:#636464}}@media print{html .badge.bg-light,html .toast.bg-light,html .toast-header.bg-light,html .progress-bar.bg-light,html[data-netbox-color-mode=dark] .badge.bg-light,html[data-netbox-color-mode=dark] .toast.bg-light,html[data-netbox-color-mode=dark] .toast-header.bg-light,html[data-netbox-color-mode=dark] .progress-bar.bg-light,html[data-netbox-color-mode=light] .badge.bg-light,html[data-netbox-color-mode=light] .toast.bg-light,html[data-netbox-color-mode=light] .toast-header.bg-light,html[data-netbox-color-mode=light] .progress-bar.bg-light{color:#000}}@media print{html .bg-dark button.btn-close,html[data-netbox-color-mode=dark] .bg-dark button.btn-close,html[data-netbox-color-mode=light] .bg-dark button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23141619'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-dark,html[data-netbox-color-mode=dark] .btn.btn-ghost-dark,html[data-netbox-color-mode=light] .btn.btn-ghost-dark{color:#212529}}@media print{html .btn.btn-ghost-dark:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-dark:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-dark:hover{background-color:#2125291f}}@media print{html .alert.alert-dark a:not(.btn),html .table-dark a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-dark a:not(.btn),html[data-netbox-color-mode=dark] .table-dark a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-dark a:not(.btn),html[data-netbox-color-mode=light] .table-dark a:not(.btn){font-weight:700;color:#141619}}@media print{html .alert.alert-dark .btn:not([class*=btn-outline]),html .table-dark .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-dark .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-dark .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-dark .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-dark .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-dark a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-dark a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-dark a:not(.btn){font-weight:700;color:#a6a8a9}}@media print{html .badge.bg-dark,html .toast.bg-dark,html .toast-header.bg-dark,html .progress-bar.bg-dark,html[data-netbox-color-mode=dark] .badge.bg-dark,html[data-netbox-color-mode=dark] .toast.bg-dark,html[data-netbox-color-mode=dark] .toast-header.bg-dark,html[data-netbox-color-mode=dark] .progress-bar.bg-dark,html[data-netbox-color-mode=light] .badge.bg-dark,html[data-netbox-color-mode=light] .toast.bg-dark,html[data-netbox-color-mode=light] .toast-header.bg-dark,html[data-netbox-color-mode=light] .progress-bar.bg-dark{color:#fff}}@media print{html .bg-red button.btn-close,html[data-netbox-color-mode=dark] .bg-red button.btn-close,html[data-netbox-color-mode=light] .bg-red button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23842029'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-red,html[data-netbox-color-mode=dark] .btn.btn-ghost-red,html[data-netbox-color-mode=light] .btn.btn-ghost-red{color:#dc3545}}@media print{html .btn.btn-ghost-red:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-red:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-red:hover{background-color:#dc35451f}}@media print{html .alert.alert-red a:not(.btn),html .table-red a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-red a:not(.btn),html[data-netbox-color-mode=dark] .table-red a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-red a:not(.btn),html[data-netbox-color-mode=light] .table-red a:not(.btn){font-weight:700;color:#842029}}@media print{html .alert.alert-red .btn:not([class*=btn-outline]),html .table-red .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-red .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-red .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-red .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-red .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-red a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-red a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-red a:not(.btn){font-weight:700;color:#f1aeb5}}@media print{html .badge.bg-red,html .toast.bg-red,html .toast-header.bg-red,html .progress-bar.bg-red,html[data-netbox-color-mode=dark] .badge.bg-red,html[data-netbox-color-mode=dark] .toast.bg-red,html[data-netbox-color-mode=dark] .toast-header.bg-red,html[data-netbox-color-mode=dark] .progress-bar.bg-red,html[data-netbox-color-mode=light] .badge.bg-red,html[data-netbox-color-mode=light] .toast.bg-red,html[data-netbox-color-mode=light] .toast-header.bg-red,html[data-netbox-color-mode=light] .progress-bar.bg-red{color:#fff}}@media print{html .bg-yellow button.btn-close,html[data-netbox-color-mode=dark] .bg-yellow button.btn-close,html[data-netbox-color-mode=light] .bg-yellow button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23664d03'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-yellow,html[data-netbox-color-mode=dark] .btn.btn-ghost-yellow,html[data-netbox-color-mode=light] .btn.btn-ghost-yellow{color:#ffc107}}@media print{html .btn.btn-ghost-yellow:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-yellow:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-yellow:hover{background-color:#ffc1071f}}@media print{html .alert.alert-yellow a:not(.btn),html .table-yellow a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-yellow a:not(.btn),html[data-netbox-color-mode=dark] .table-yellow a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-yellow a:not(.btn),html[data-netbox-color-mode=light] .table-yellow a:not(.btn){font-weight:700;color:#664d03}}@media print{html .alert.alert-yellow .btn:not([class*=btn-outline]),html .table-yellow .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-yellow .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-yellow .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-yellow .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-yellow .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-yellow a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-yellow a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-yellow a:not(.btn){font-weight:700;color:#664d03}}@media print{html .badge.bg-yellow,html .toast.bg-yellow,html .toast-header.bg-yellow,html .progress-bar.bg-yellow,html[data-netbox-color-mode=dark] .badge.bg-yellow,html[data-netbox-color-mode=dark] .toast.bg-yellow,html[data-netbox-color-mode=dark] .toast-header.bg-yellow,html[data-netbox-color-mode=dark] .progress-bar.bg-yellow,html[data-netbox-color-mode=light] .badge.bg-yellow,html[data-netbox-color-mode=light] .toast.bg-yellow,html[data-netbox-color-mode=light] .toast-header.bg-yellow,html[data-netbox-color-mode=light] .progress-bar.bg-yellow{color:#000}}@media print{html .bg-green button.btn-close,html[data-netbox-color-mode=dark] .bg-green button.btn-close,html[data-netbox-color-mode=light] .bg-green button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230f5132'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-green,html[data-netbox-color-mode=dark] .btn.btn-ghost-green,html[data-netbox-color-mode=light] .btn.btn-ghost-green{color:#198754}}@media print{html .btn.btn-ghost-green:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-green:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-green:hover{background-color:#1987541f}}@media print{html .alert.alert-green a:not(.btn),html .table-green a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-green a:not(.btn),html[data-netbox-color-mode=dark] .table-green a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-green a:not(.btn),html[data-netbox-color-mode=light] .table-green a:not(.btn){font-weight:700;color:#0f5132}}@media print{html .alert.alert-green .btn:not([class*=btn-outline]),html .table-green .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-green .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-green .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-green .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-green .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-green a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-green a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-green a:not(.btn){font-weight:700;color:#a3cfbb}}@media print{html .badge.bg-green,html .toast.bg-green,html .toast-header.bg-green,html .progress-bar.bg-green,html[data-netbox-color-mode=dark] .badge.bg-green,html[data-netbox-color-mode=dark] .toast.bg-green,html[data-netbox-color-mode=dark] .toast-header.bg-green,html[data-netbox-color-mode=dark] .progress-bar.bg-green,html[data-netbox-color-mode=light] .badge.bg-green,html[data-netbox-color-mode=light] .toast.bg-green,html[data-netbox-color-mode=light] .toast-header.bg-green,html[data-netbox-color-mode=light] .progress-bar.bg-green{color:#fff}}@media print{html .bg-blue button.btn-close,html[data-netbox-color-mode=dark] .bg-blue button.btn-close,html[data-netbox-color-mode=light] .bg-blue button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23084298'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-blue,html[data-netbox-color-mode=dark] .btn.btn-ghost-blue,html[data-netbox-color-mode=light] .btn.btn-ghost-blue{color:#0d6efd}}@media print{html .btn.btn-ghost-blue:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-blue:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-blue:hover{background-color:#0d6efd1f}}@media print{html .alert.alert-blue a:not(.btn),html .table-blue a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-blue a:not(.btn),html[data-netbox-color-mode=dark] .table-blue a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-blue a:not(.btn),html[data-netbox-color-mode=light] .table-blue a:not(.btn){font-weight:700;color:#084298}}@media print{html .alert.alert-blue .btn:not([class*=btn-outline]),html .table-blue .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-blue .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-blue .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-blue .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-blue .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-blue a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-blue a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-blue a:not(.btn){font-weight:700;color:#9ec5fe}}@media print{html .badge.bg-blue,html .toast.bg-blue,html .toast-header.bg-blue,html .progress-bar.bg-blue,html[data-netbox-color-mode=dark] .badge.bg-blue,html[data-netbox-color-mode=dark] .toast.bg-blue,html[data-netbox-color-mode=dark] .toast-header.bg-blue,html[data-netbox-color-mode=dark] .progress-bar.bg-blue,html[data-netbox-color-mode=light] .badge.bg-blue,html[data-netbox-color-mode=light] .toast.bg-blue,html[data-netbox-color-mode=light] .toast-header.bg-blue,html[data-netbox-color-mode=light] .progress-bar.bg-blue{color:#fff}}@media print{html .bg-cyan button.btn-close,html[data-netbox-color-mode=dark] .bg-cyan button.btn-close,html[data-netbox-color-mode=light] .bg-cyan button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23055160'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-cyan,html[data-netbox-color-mode=dark] .btn.btn-ghost-cyan,html[data-netbox-color-mode=light] .btn.btn-ghost-cyan{color:#0dcaf0}}@media print{html .btn.btn-ghost-cyan:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-cyan:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-cyan:hover{background-color:#0dcaf01f}}@media print{html .alert.alert-cyan a:not(.btn),html .table-cyan a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-cyan a:not(.btn),html[data-netbox-color-mode=dark] .table-cyan a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-cyan a:not(.btn),html[data-netbox-color-mode=light] .table-cyan a:not(.btn){font-weight:700;color:#055160}}@media print{html .alert.alert-cyan .btn:not([class*=btn-outline]),html .table-cyan .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-cyan .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-cyan .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-cyan .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-cyan .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-cyan a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-cyan a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-cyan a:not(.btn){font-weight:700;color:#055160}}@media print{html .badge.bg-cyan,html .toast.bg-cyan,html .toast-header.bg-cyan,html .progress-bar.bg-cyan,html[data-netbox-color-mode=dark] .badge.bg-cyan,html[data-netbox-color-mode=dark] .toast.bg-cyan,html[data-netbox-color-mode=dark] .toast-header.bg-cyan,html[data-netbox-color-mode=dark] .progress-bar.bg-cyan,html[data-netbox-color-mode=light] .badge.bg-cyan,html[data-netbox-color-mode=light] .toast.bg-cyan,html[data-netbox-color-mode=light] .toast-header.bg-cyan,html[data-netbox-color-mode=light] .progress-bar.bg-cyan{color:#000}}@media print{html .bg-indigo button.btn-close,html[data-netbox-color-mode=dark] .bg-indigo button.btn-close,html[data-netbox-color-mode=light] .bg-indigo button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%233d0a91'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-indigo,html[data-netbox-color-mode=dark] .btn.btn-ghost-indigo,html[data-netbox-color-mode=light] .btn.btn-ghost-indigo{color:#6610f2}}@media print{html .btn.btn-ghost-indigo:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-indigo:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-indigo:hover{background-color:#6610f21f}}@media print{html .alert.alert-indigo a:not(.btn),html .table-indigo a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-indigo a:not(.btn),html[data-netbox-color-mode=dark] .table-indigo a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-indigo a:not(.btn),html[data-netbox-color-mode=light] .table-indigo a:not(.btn){font-weight:700;color:#3d0a91}}@media print{html .alert.alert-indigo .btn:not([class*=btn-outline]),html .table-indigo .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-indigo .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-indigo .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-indigo .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-indigo .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-indigo a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-indigo a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-indigo a:not(.btn){font-weight:700;color:#c29ffa}}@media print{html .badge.bg-indigo,html .toast.bg-indigo,html .toast-header.bg-indigo,html .progress-bar.bg-indigo,html[data-netbox-color-mode=dark] .badge.bg-indigo,html[data-netbox-color-mode=dark] .toast.bg-indigo,html[data-netbox-color-mode=dark] .toast-header.bg-indigo,html[data-netbox-color-mode=dark] .progress-bar.bg-indigo,html[data-netbox-color-mode=light] .badge.bg-indigo,html[data-netbox-color-mode=light] .toast.bg-indigo,html[data-netbox-color-mode=light] .toast-header.bg-indigo,html[data-netbox-color-mode=light] .progress-bar.bg-indigo{color:#fff}}@media print{html .bg-purple button.btn-close,html[data-netbox-color-mode=dark] .bg-purple button.btn-close,html[data-netbox-color-mode=light] .bg-purple button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23432874'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-purple,html[data-netbox-color-mode=dark] .btn.btn-ghost-purple,html[data-netbox-color-mode=light] .btn.btn-ghost-purple{color:#6f42c1}}@media print{html .btn.btn-ghost-purple:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-purple:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-purple:hover{background-color:#6f42c11f}}@media print{html .alert.alert-purple a:not(.btn),html .table-purple a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-purple a:not(.btn),html[data-netbox-color-mode=dark] .table-purple a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-purple a:not(.btn),html[data-netbox-color-mode=light] .table-purple a:not(.btn){font-weight:700;color:#432874}}@media print{html .alert.alert-purple .btn:not([class*=btn-outline]),html .table-purple .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-purple .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-purple .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-purple .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-purple .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-purple a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-purple a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-purple a:not(.btn){font-weight:700;color:#c5b3e6}}@media print{html .badge.bg-purple,html .toast.bg-purple,html .toast-header.bg-purple,html .progress-bar.bg-purple,html[data-netbox-color-mode=dark] .badge.bg-purple,html[data-netbox-color-mode=dark] .toast.bg-purple,html[data-netbox-color-mode=dark] .toast-header.bg-purple,html[data-netbox-color-mode=dark] .progress-bar.bg-purple,html[data-netbox-color-mode=light] .badge.bg-purple,html[data-netbox-color-mode=light] .toast.bg-purple,html[data-netbox-color-mode=light] .toast-header.bg-purple,html[data-netbox-color-mode=light] .progress-bar.bg-purple{color:#fff}}@media print{html .bg-pink button.btn-close,html[data-netbox-color-mode=dark] .bg-pink button.btn-close,html[data-netbox-color-mode=light] .bg-pink button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23801f4f'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-pink,html[data-netbox-color-mode=dark] .btn.btn-ghost-pink,html[data-netbox-color-mode=light] .btn.btn-ghost-pink{color:#d63384}}@media print{html .btn.btn-ghost-pink:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-pink:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-pink:hover{background-color:#d633841f}}@media print{html .alert.alert-pink a:not(.btn),html .table-pink a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-pink a:not(.btn),html[data-netbox-color-mode=dark] .table-pink a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-pink a:not(.btn),html[data-netbox-color-mode=light] .table-pink a:not(.btn){font-weight:700;color:#801f4f}}@media print{html .alert.alert-pink .btn:not([class*=btn-outline]),html .table-pink .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-pink .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-pink .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-pink .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-pink .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-pink a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-pink a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-pink a:not(.btn){font-weight:700;color:#efadce}}@media print{html .badge.bg-pink,html .toast.bg-pink,html .toast-header.bg-pink,html .progress-bar.bg-pink,html[data-netbox-color-mode=dark] .badge.bg-pink,html[data-netbox-color-mode=dark] .toast.bg-pink,html[data-netbox-color-mode=dark] .toast-header.bg-pink,html[data-netbox-color-mode=dark] .progress-bar.bg-pink,html[data-netbox-color-mode=light] .badge.bg-pink,html[data-netbox-color-mode=light] .toast.bg-pink,html[data-netbox-color-mode=light] .toast-header.bg-pink,html[data-netbox-color-mode=light] .progress-bar.bg-pink{color:#fff}}@media print{html .bg-darker button.btn-close,html[data-netbox-color-mode=dark] .bg-darker button.btn-close,html[data-netbox-color-mode=light] .bg-darker button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23101314'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-darker,html[data-netbox-color-mode=dark] .btn.btn-ghost-darker,html[data-netbox-color-mode=light] .btn.btn-ghost-darker{color:#1b1f22}}@media print{html .btn.btn-ghost-darker:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-darker:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-darker:hover{background-color:#1b1f221f}}@media print{html .alert.alert-darker a:not(.btn),html .table-darker a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-darker a:not(.btn),html[data-netbox-color-mode=dark] .table-darker a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-darker a:not(.btn),html[data-netbox-color-mode=light] .table-darker a:not(.btn){font-weight:700;color:#101314}}@media print{html .alert.alert-darker .btn:not([class*=btn-outline]),html .table-darker .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-darker .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-darker .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-darker .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-darker .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-darker a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-darker a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-darker a:not(.btn){font-weight:700;color:#a4a5a7}}@media print{html .badge.bg-darker,html .toast.bg-darker,html .toast-header.bg-darker,html .progress-bar.bg-darker,html[data-netbox-color-mode=dark] .badge.bg-darker,html[data-netbox-color-mode=dark] .toast.bg-darker,html[data-netbox-color-mode=dark] .toast-header.bg-darker,html[data-netbox-color-mode=dark] .progress-bar.bg-darker,html[data-netbox-color-mode=light] .badge.bg-darker,html[data-netbox-color-mode=light] .toast.bg-darker,html[data-netbox-color-mode=light] .toast-header.bg-darker,html[data-netbox-color-mode=light] .progress-bar.bg-darker{color:#fff}}@media print{html .bg-darkest button.btn-close,html[data-netbox-color-mode=dark] .bg-darkest button.btn-close,html[data-netbox-color-mode=light] .bg-darkest button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230e1011'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-darkest,html[data-netbox-color-mode=dark] .btn.btn-ghost-darkest,html[data-netbox-color-mode=light] .btn.btn-ghost-darkest{color:#171b1d}}@media print{html .btn.btn-ghost-darkest:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-darkest:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-darkest:hover{background-color:#171b1d1f}}@media print{html .alert.alert-darkest a:not(.btn),html .table-darkest a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-darkest a:not(.btn),html[data-netbox-color-mode=dark] .table-darkest a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-darkest a:not(.btn),html[data-netbox-color-mode=light] .table-darkest a:not(.btn){font-weight:700;color:#0e1011}}@media print{html .alert.alert-darkest .btn:not([class*=btn-outline]),html .table-darkest .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-darkest .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-darkest .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-darkest .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-darkest .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-darkest a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-darkest a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-darkest a:not(.btn){font-weight:700;color:#a2a4a5}}@media print{html .badge.bg-darkest,html .toast.bg-darkest,html .toast-header.bg-darkest,html .progress-bar.bg-darkest,html[data-netbox-color-mode=dark] .badge.bg-darkest,html[data-netbox-color-mode=dark] .toast.bg-darkest,html[data-netbox-color-mode=dark] .toast-header.bg-darkest,html[data-netbox-color-mode=dark] .progress-bar.bg-darkest,html[data-netbox-color-mode=light] .badge.bg-darkest,html[data-netbox-color-mode=light] .toast.bg-darkest,html[data-netbox-color-mode=light] .toast-header.bg-darkest,html[data-netbox-color-mode=light] .progress-bar.bg-darkest{color:#fff}}@media print{html .bg-gray button.btn-close,html[data-netbox-color-mode=dark] .bg-gray button.btn-close,html[data-netbox-color-mode=light] .bg-gray button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23525557'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-gray,html[data-netbox-color-mode=dark] .btn.btn-ghost-gray,html[data-netbox-color-mode=light] .btn.btn-ghost-gray{color:#ced4da}}@media print{html .btn.btn-ghost-gray:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-gray:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-gray:hover{background-color:#ced4da1f}}@media print{html .alert.alert-gray a:not(.btn),html .table-gray a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-gray a:not(.btn),html[data-netbox-color-mode=dark] .table-gray a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-gray a:not(.btn),html[data-netbox-color-mode=light] .table-gray a:not(.btn){font-weight:700;color:#525557}}@media print{html .alert.alert-gray .btn:not([class*=btn-outline]),html .table-gray .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-gray .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-gray .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-gray .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-gray .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-gray a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-gray a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-gray a:not(.btn){font-weight:700;color:#525557}}@media print{html .badge.bg-gray,html .toast.bg-gray,html .toast-header.bg-gray,html .progress-bar.bg-gray,html[data-netbox-color-mode=dark] .badge.bg-gray,html[data-netbox-color-mode=dark] .toast.bg-gray,html[data-netbox-color-mode=dark] .toast-header.bg-gray,html[data-netbox-color-mode=dark] .progress-bar.bg-gray,html[data-netbox-color-mode=light] .badge.bg-gray,html[data-netbox-color-mode=light] .toast.bg-gray,html[data-netbox-color-mode=light] .toast-header.bg-gray,html[data-netbox-color-mode=light] .progress-bar.bg-gray{color:#000}}@media print{html .bg-gray-100 button.btn-close,html[data-netbox-color-mode=dark] .bg-gray-100 button.btn-close,html[data-netbox-color-mode=light] .bg-gray-100 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23636464'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-gray-100,html[data-netbox-color-mode=dark] .btn.btn-ghost-gray-100,html[data-netbox-color-mode=light] .btn.btn-ghost-gray-100{color:#f8f9fa}}@media print{html .btn.btn-ghost-gray-100:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-gray-100:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-gray-100:hover{background-color:#f8f9fa1f}}@media print{html .alert.alert-gray-100 a:not(.btn),html .table-gray-100 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-gray-100 a:not(.btn),html[data-netbox-color-mode=dark] .table-gray-100 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-gray-100 a:not(.btn),html[data-netbox-color-mode=light] .table-gray-100 a:not(.btn){font-weight:700;color:#636464}}@media print{html .alert.alert-gray-100 .btn:not([class*=btn-outline]),html .table-gray-100 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-gray-100 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-gray-100 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-gray-100 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-gray-100 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-gray-100 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-gray-100 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-gray-100 a:not(.btn){font-weight:700;color:#636464}}@media print{html .badge.bg-gray-100,html .toast.bg-gray-100,html .toast-header.bg-gray-100,html .progress-bar.bg-gray-100,html[data-netbox-color-mode=dark] .badge.bg-gray-100,html[data-netbox-color-mode=dark] .toast.bg-gray-100,html[data-netbox-color-mode=dark] .toast-header.bg-gray-100,html[data-netbox-color-mode=dark] .progress-bar.bg-gray-100,html[data-netbox-color-mode=light] .badge.bg-gray-100,html[data-netbox-color-mode=light] .toast.bg-gray-100,html[data-netbox-color-mode=light] .toast-header.bg-gray-100,html[data-netbox-color-mode=light] .progress-bar.bg-gray-100{color:#000}}@media print{html .bg-gray-200 button.btn-close,html[data-netbox-color-mode=dark] .bg-gray-200 button.btn-close,html[data-netbox-color-mode=light] .bg-gray-200 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%235d5e60'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-gray-200,html[data-netbox-color-mode=dark] .btn.btn-ghost-gray-200,html[data-netbox-color-mode=light] .btn.btn-ghost-gray-200{color:#e9ecef}}@media print{html .btn.btn-ghost-gray-200:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-gray-200:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-gray-200:hover{background-color:#e9ecef1f}}@media print{html .alert.alert-gray-200 a:not(.btn),html .table-gray-200 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-gray-200 a:not(.btn),html[data-netbox-color-mode=dark] .table-gray-200 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-gray-200 a:not(.btn),html[data-netbox-color-mode=light] .table-gray-200 a:not(.btn){font-weight:700;color:#5d5e60}}@media print{html .alert.alert-gray-200 .btn:not([class*=btn-outline]),html .table-gray-200 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-gray-200 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-gray-200 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-gray-200 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-gray-200 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-gray-200 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-gray-200 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-gray-200 a:not(.btn){font-weight:700;color:#5d5e60}}@media print{html .badge.bg-gray-200,html .toast.bg-gray-200,html .toast-header.bg-gray-200,html .progress-bar.bg-gray-200,html[data-netbox-color-mode=dark] .badge.bg-gray-200,html[data-netbox-color-mode=dark] .toast.bg-gray-200,html[data-netbox-color-mode=dark] .toast-header.bg-gray-200,html[data-netbox-color-mode=dark] .progress-bar.bg-gray-200,html[data-netbox-color-mode=light] .badge.bg-gray-200,html[data-netbox-color-mode=light] .toast.bg-gray-200,html[data-netbox-color-mode=light] .toast-header.bg-gray-200,html[data-netbox-color-mode=light] .progress-bar.bg-gray-200{color:#000}}@media print{html .bg-gray-300 button.btn-close,html[data-netbox-color-mode=dark] .bg-gray-300 button.btn-close,html[data-netbox-color-mode=light] .bg-gray-300 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23595a5c'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-gray-300,html[data-netbox-color-mode=dark] .btn.btn-ghost-gray-300,html[data-netbox-color-mode=light] .btn.btn-ghost-gray-300{color:#dee2e6}}@media print{html .btn.btn-ghost-gray-300:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-gray-300:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-gray-300:hover{background-color:#dee2e61f}}@media print{html .alert.alert-gray-300 a:not(.btn),html .table-gray-300 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-gray-300 a:not(.btn),html[data-netbox-color-mode=dark] .table-gray-300 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-gray-300 a:not(.btn),html[data-netbox-color-mode=light] .table-gray-300 a:not(.btn){font-weight:700;color:#595a5c}}@media print{html .alert.alert-gray-300 .btn:not([class*=btn-outline]),html .table-gray-300 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-gray-300 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-gray-300 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-gray-300 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-gray-300 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-gray-300 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-gray-300 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-gray-300 a:not(.btn){font-weight:700;color:#595a5c}}@media print{html .badge.bg-gray-300,html .toast.bg-gray-300,html .toast-header.bg-gray-300,html .progress-bar.bg-gray-300,html[data-netbox-color-mode=dark] .badge.bg-gray-300,html[data-netbox-color-mode=dark] .toast.bg-gray-300,html[data-netbox-color-mode=dark] .toast-header.bg-gray-300,html[data-netbox-color-mode=dark] .progress-bar.bg-gray-300,html[data-netbox-color-mode=light] .badge.bg-gray-300,html[data-netbox-color-mode=light] .toast.bg-gray-300,html[data-netbox-color-mode=light] .toast-header.bg-gray-300,html[data-netbox-color-mode=light] .progress-bar.bg-gray-300{color:#000}}@media print{html .bg-gray-400 button.btn-close,html[data-netbox-color-mode=dark] .bg-gray-400 button.btn-close,html[data-netbox-color-mode=light] .bg-gray-400 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23525557'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-gray-400,html[data-netbox-color-mode=dark] .btn.btn-ghost-gray-400,html[data-netbox-color-mode=light] .btn.btn-ghost-gray-400{color:#ced4da}}@media print{html .btn.btn-ghost-gray-400:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-gray-400:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-gray-400:hover{background-color:#ced4da1f}}@media print{html .alert.alert-gray-400 a:not(.btn),html .table-gray-400 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-gray-400 a:not(.btn),html[data-netbox-color-mode=dark] .table-gray-400 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-gray-400 a:not(.btn),html[data-netbox-color-mode=light] .table-gray-400 a:not(.btn){font-weight:700;color:#525557}}@media print{html .alert.alert-gray-400 .btn:not([class*=btn-outline]),html .table-gray-400 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-gray-400 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-gray-400 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-gray-400 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-gray-400 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-gray-400 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-gray-400 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-gray-400 a:not(.btn){font-weight:700;color:#525557}}@media print{html .badge.bg-gray-400,html .toast.bg-gray-400,html .toast-header.bg-gray-400,html .progress-bar.bg-gray-400,html[data-netbox-color-mode=dark] .badge.bg-gray-400,html[data-netbox-color-mode=dark] .toast.bg-gray-400,html[data-netbox-color-mode=dark] .toast-header.bg-gray-400,html[data-netbox-color-mode=dark] .progress-bar.bg-gray-400,html[data-netbox-color-mode=light] .badge.bg-gray-400,html[data-netbox-color-mode=light] .toast.bg-gray-400,html[data-netbox-color-mode=light] .toast-header.bg-gray-400,html[data-netbox-color-mode=light] .progress-bar.bg-gray-400{color:#000}}@media print{html .bg-gray-500 button.btn-close,html[data-netbox-color-mode=dark] .bg-gray-500 button.btn-close,html[data-netbox-color-mode=light] .bg-gray-500 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23686d71'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-gray-500,html[data-netbox-color-mode=dark] .btn.btn-ghost-gray-500,html[data-netbox-color-mode=light] .btn.btn-ghost-gray-500{color:#adb5bd}}@media print{html .btn.btn-ghost-gray-500:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-gray-500:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-gray-500:hover{background-color:#adb5bd1f}}@media print{html .alert.alert-gray-500 a:not(.btn),html .table-gray-500 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-gray-500 a:not(.btn),html[data-netbox-color-mode=dark] .table-gray-500 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-gray-500 a:not(.btn),html[data-netbox-color-mode=light] .table-gray-500 a:not(.btn){font-weight:700;color:#686d71}}@media print{html .alert.alert-gray-500 .btn:not([class*=btn-outline]),html .table-gray-500 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-gray-500 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-gray-500 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-gray-500 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-gray-500 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-gray-500 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-gray-500 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-gray-500 a:not(.btn){font-weight:700;color:#45484c}}@media print{html .badge.bg-gray-500,html .toast.bg-gray-500,html .toast-header.bg-gray-500,html .progress-bar.bg-gray-500,html[data-netbox-color-mode=dark] .badge.bg-gray-500,html[data-netbox-color-mode=dark] .toast.bg-gray-500,html[data-netbox-color-mode=dark] .toast-header.bg-gray-500,html[data-netbox-color-mode=dark] .progress-bar.bg-gray-500,html[data-netbox-color-mode=light] .badge.bg-gray-500,html[data-netbox-color-mode=light] .toast.bg-gray-500,html[data-netbox-color-mode=light] .toast-header.bg-gray-500,html[data-netbox-color-mode=light] .progress-bar.bg-gray-500{color:#000}}@media print{html .bg-gray-600 button.btn-close,html[data-netbox-color-mode=dark] .bg-gray-600 button.btn-close,html[data-netbox-color-mode=light] .bg-gray-600 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%2341464b'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-gray-600,html[data-netbox-color-mode=dark] .btn.btn-ghost-gray-600,html[data-netbox-color-mode=light] .btn.btn-ghost-gray-600{color:#6c757d}}@media print{html .btn.btn-ghost-gray-600:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-gray-600:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-gray-600:hover{background-color:#6c757d1f}}@media print{html .alert.alert-gray-600 a:not(.btn),html .table-gray-600 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-gray-600 a:not(.btn),html[data-netbox-color-mode=dark] .table-gray-600 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-gray-600 a:not(.btn),html[data-netbox-color-mode=light] .table-gray-600 a:not(.btn){font-weight:700;color:#41464b}}@media print{html .alert.alert-gray-600 .btn:not([class*=btn-outline]),html .table-gray-600 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-gray-600 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-gray-600 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-gray-600 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-gray-600 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-gray-600 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-gray-600 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-gray-600 a:not(.btn){font-weight:700;color:#c4c8cb}}@media print{html .badge.bg-gray-600,html .toast.bg-gray-600,html .toast-header.bg-gray-600,html .progress-bar.bg-gray-600,html[data-netbox-color-mode=dark] .badge.bg-gray-600,html[data-netbox-color-mode=dark] .toast.bg-gray-600,html[data-netbox-color-mode=dark] .toast-header.bg-gray-600,html[data-netbox-color-mode=dark] .progress-bar.bg-gray-600,html[data-netbox-color-mode=light] .badge.bg-gray-600,html[data-netbox-color-mode=light] .toast.bg-gray-600,html[data-netbox-color-mode=light] .toast-header.bg-gray-600,html[data-netbox-color-mode=light] .progress-bar.bg-gray-600{color:#fff}}@media print{html .bg-gray-700 button.btn-close,html[data-netbox-color-mode=dark] .bg-gray-700 button.btn-close,html[data-netbox-color-mode=light] .bg-gray-700 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%232c3034'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-gray-700,html[data-netbox-color-mode=dark] .btn.btn-ghost-gray-700,html[data-netbox-color-mode=light] .btn.btn-ghost-gray-700{color:#495057}}@media print{html .btn.btn-ghost-gray-700:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-gray-700:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-gray-700:hover{background-color:#4950571f}}@media print{html .alert.alert-gray-700 a:not(.btn),html .table-gray-700 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-gray-700 a:not(.btn),html[data-netbox-color-mode=dark] .table-gray-700 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-gray-700 a:not(.btn),html[data-netbox-color-mode=light] .table-gray-700 a:not(.btn){font-weight:700;color:#2c3034}}@media print{html .alert.alert-gray-700 .btn:not([class*=btn-outline]),html .table-gray-700 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-gray-700 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-gray-700 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-gray-700 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-gray-700 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-gray-700 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-gray-700 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-gray-700 a:not(.btn){font-weight:700;color:#b6b9bc}}@media print{html .badge.bg-gray-700,html .toast.bg-gray-700,html .toast-header.bg-gray-700,html .progress-bar.bg-gray-700,html[data-netbox-color-mode=dark] .badge.bg-gray-700,html[data-netbox-color-mode=dark] .toast.bg-gray-700,html[data-netbox-color-mode=dark] .toast-header.bg-gray-700,html[data-netbox-color-mode=dark] .progress-bar.bg-gray-700,html[data-netbox-color-mode=light] .badge.bg-gray-700,html[data-netbox-color-mode=light] .toast.bg-gray-700,html[data-netbox-color-mode=light] .toast-header.bg-gray-700,html[data-netbox-color-mode=light] .progress-bar.bg-gray-700{color:#fff}}@media print{html .bg-gray-800 button.btn-close,html[data-netbox-color-mode=dark] .bg-gray-800 button.btn-close,html[data-netbox-color-mode=light] .bg-gray-800 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%231f2326'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-gray-800,html[data-netbox-color-mode=dark] .btn.btn-ghost-gray-800,html[data-netbox-color-mode=light] .btn.btn-ghost-gray-800{color:#343a40}}@media print{html .btn.btn-ghost-gray-800:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-gray-800:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-gray-800:hover{background-color:#343a401f}}@media print{html .alert.alert-gray-800 a:not(.btn),html .table-gray-800 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-gray-800 a:not(.btn),html[data-netbox-color-mode=dark] .table-gray-800 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-gray-800 a:not(.btn),html[data-netbox-color-mode=light] .table-gray-800 a:not(.btn){font-weight:700;color:#1f2326}}@media print{html .alert.alert-gray-800 .btn:not([class*=btn-outline]),html .table-gray-800 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-gray-800 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-gray-800 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-gray-800 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-gray-800 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-gray-800 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-gray-800 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-gray-800 a:not(.btn){font-weight:700;color:#aeb0b3}}@media print{html .badge.bg-gray-800,html .toast.bg-gray-800,html .toast-header.bg-gray-800,html .progress-bar.bg-gray-800,html[data-netbox-color-mode=dark] .badge.bg-gray-800,html[data-netbox-color-mode=dark] .toast.bg-gray-800,html[data-netbox-color-mode=dark] .toast-header.bg-gray-800,html[data-netbox-color-mode=dark] .progress-bar.bg-gray-800,html[data-netbox-color-mode=light] .badge.bg-gray-800,html[data-netbox-color-mode=light] .toast.bg-gray-800,html[data-netbox-color-mode=light] .toast-header.bg-gray-800,html[data-netbox-color-mode=light] .progress-bar.bg-gray-800{color:#fff}}@media print{html .bg-gray-900 button.btn-close,html[data-netbox-color-mode=dark] .bg-gray-900 button.btn-close,html[data-netbox-color-mode=light] .bg-gray-900 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23141619'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-gray-900,html[data-netbox-color-mode=dark] .btn.btn-ghost-gray-900,html[data-netbox-color-mode=light] .btn.btn-ghost-gray-900{color:#212529}}@media print{html .btn.btn-ghost-gray-900:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-gray-900:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-gray-900:hover{background-color:#2125291f}}@media print{html .alert.alert-gray-900 a:not(.btn),html .table-gray-900 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-gray-900 a:not(.btn),html[data-netbox-color-mode=dark] .table-gray-900 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-gray-900 a:not(.btn),html[data-netbox-color-mode=light] .table-gray-900 a:not(.btn){font-weight:700;color:#141619}}@media print{html .alert.alert-gray-900 .btn:not([class*=btn-outline]),html .table-gray-900 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-gray-900 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-gray-900 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-gray-900 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-gray-900 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-gray-900 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-gray-900 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-gray-900 a:not(.btn){font-weight:700;color:#a6a8a9}}@media print{html .badge.bg-gray-900,html .toast.bg-gray-900,html .toast-header.bg-gray-900,html .progress-bar.bg-gray-900,html[data-netbox-color-mode=dark] .badge.bg-gray-900,html[data-netbox-color-mode=dark] .toast.bg-gray-900,html[data-netbox-color-mode=dark] .toast-header.bg-gray-900,html[data-netbox-color-mode=dark] .progress-bar.bg-gray-900,html[data-netbox-color-mode=light] .badge.bg-gray-900,html[data-netbox-color-mode=light] .toast.bg-gray-900,html[data-netbox-color-mode=light] .toast-header.bg-gray-900,html[data-netbox-color-mode=light] .progress-bar.bg-gray-900{color:#fff}}@media print{html .bg-red-100 button.btn-close,html[data-netbox-color-mode=dark] .bg-red-100 button.btn-close,html[data-netbox-color-mode=light] .bg-red-100 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23635657'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-red-100,html[data-netbox-color-mode=dark] .btn.btn-ghost-red-100,html[data-netbox-color-mode=light] .btn.btn-ghost-red-100{color:#f8d7da}}@media print{html .btn.btn-ghost-red-100:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-red-100:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-red-100:hover{background-color:#f8d7da1f}}@media print{html .alert.alert-red-100 a:not(.btn),html .table-red-100 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-red-100 a:not(.btn),html[data-netbox-color-mode=dark] .table-red-100 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-red-100 a:not(.btn),html[data-netbox-color-mode=light] .table-red-100 a:not(.btn){font-weight:700;color:#635657}}@media print{html .alert.alert-red-100 .btn:not([class*=btn-outline]),html .table-red-100 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-red-100 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-red-100 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-red-100 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-red-100 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-red-100 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-red-100 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-red-100 a:not(.btn){font-weight:700;color:#635657}}@media print{html .badge.bg-red-100,html .toast.bg-red-100,html .toast-header.bg-red-100,html .progress-bar.bg-red-100,html[data-netbox-color-mode=dark] .badge.bg-red-100,html[data-netbox-color-mode=dark] .toast.bg-red-100,html[data-netbox-color-mode=dark] .toast-header.bg-red-100,html[data-netbox-color-mode=dark] .progress-bar.bg-red-100,html[data-netbox-color-mode=light] .badge.bg-red-100,html[data-netbox-color-mode=light] .toast.bg-red-100,html[data-netbox-color-mode=light] .toast-header.bg-red-100,html[data-netbox-color-mode=light] .progress-bar.bg-red-100{color:#000}}@media print{html .bg-red-200 button.btn-close,html[data-netbox-color-mode=dark] .bg-red-200 button.btn-close,html[data-netbox-color-mode=light] .bg-red-200 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23604648'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-red-200,html[data-netbox-color-mode=dark] .btn.btn-ghost-red-200,html[data-netbox-color-mode=light] .btn.btn-ghost-red-200{color:#f1aeb5}}@media print{html .btn.btn-ghost-red-200:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-red-200:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-red-200:hover{background-color:#f1aeb51f}}@media print{html .alert.alert-red-200 a:not(.btn),html .table-red-200 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-red-200 a:not(.btn),html[data-netbox-color-mode=dark] .table-red-200 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-red-200 a:not(.btn),html[data-netbox-color-mode=light] .table-red-200 a:not(.btn){font-weight:700;color:#604648}}@media print{html .alert.alert-red-200 .btn:not([class*=btn-outline]),html .table-red-200 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-red-200 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-red-200 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-red-200 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-red-200 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-red-200 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-red-200 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-red-200 a:not(.btn){font-weight:700;color:#604648}}@media print{html .badge.bg-red-200,html .toast.bg-red-200,html .toast-header.bg-red-200,html .progress-bar.bg-red-200,html[data-netbox-color-mode=dark] .badge.bg-red-200,html[data-netbox-color-mode=dark] .toast.bg-red-200,html[data-netbox-color-mode=dark] .toast-header.bg-red-200,html[data-netbox-color-mode=dark] .progress-bar.bg-red-200,html[data-netbox-color-mode=light] .badge.bg-red-200,html[data-netbox-color-mode=light] .toast.bg-red-200,html[data-netbox-color-mode=light] .toast-header.bg-red-200,html[data-netbox-color-mode=light] .progress-bar.bg-red-200{color:#000}}@media print{html .bg-red-300 button.btn-close,html[data-netbox-color-mode=dark] .bg-red-300 button.btn-close,html[data-netbox-color-mode=light] .bg-red-300 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%238c5056'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-red-300,html[data-netbox-color-mode=dark] .btn.btn-ghost-red-300,html[data-netbox-color-mode=light] .btn.btn-ghost-red-300{color:#ea868f}}@media print{html .btn.btn-ghost-red-300:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-red-300:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-red-300:hover{background-color:#ea868f1f}}@media print{html .alert.alert-red-300 a:not(.btn),html .table-red-300 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-red-300 a:not(.btn),html[data-netbox-color-mode=dark] .table-red-300 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-red-300 a:not(.btn),html[data-netbox-color-mode=light] .table-red-300 a:not(.btn){font-weight:700;color:#8c5056}}@media print{html .alert.alert-red-300 .btn:not([class*=btn-outline]),html .table-red-300 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-red-300 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-red-300 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-red-300 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-red-300 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-red-300 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-red-300 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-red-300 a:not(.btn){font-weight:700;color:#5e3639}}@media print{html .badge.bg-red-300,html .toast.bg-red-300,html .toast-header.bg-red-300,html .progress-bar.bg-red-300,html[data-netbox-color-mode=dark] .badge.bg-red-300,html[data-netbox-color-mode=dark] .toast.bg-red-300,html[data-netbox-color-mode=dark] .toast-header.bg-red-300,html[data-netbox-color-mode=dark] .progress-bar.bg-red-300,html[data-netbox-color-mode=light] .badge.bg-red-300,html[data-netbox-color-mode=light] .toast.bg-red-300,html[data-netbox-color-mode=light] .toast-header.bg-red-300,html[data-netbox-color-mode=light] .progress-bar.bg-red-300{color:#000}}@media print{html .bg-red-400 button.btn-close,html[data-netbox-color-mode=dark] .bg-red-400 button.btn-close,html[data-netbox-color-mode=light] .bg-red-400 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23883840'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-red-400,html[data-netbox-color-mode=dark] .btn.btn-ghost-red-400,html[data-netbox-color-mode=light] .btn.btn-ghost-red-400{color:#e35d6a}}@media print{html .btn.btn-ghost-red-400:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-red-400:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-red-400:hover{background-color:#e35d6a1f}}@media print{html .alert.alert-red-400 a:not(.btn),html .table-red-400 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-red-400 a:not(.btn),html[data-netbox-color-mode=dark] .table-red-400 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-red-400 a:not(.btn),html[data-netbox-color-mode=light] .table-red-400 a:not(.btn){font-weight:700;color:#883840}}@media print{html .alert.alert-red-400 .btn:not([class*=btn-outline]),html .table-red-400 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-red-400 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-red-400 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-red-400 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-red-400 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-red-400 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-red-400 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-red-400 a:not(.btn){font-weight:700;color:#5b252a}}@media print{html .badge.bg-red-400,html .toast.bg-red-400,html .toast-header.bg-red-400,html .progress-bar.bg-red-400,html[data-netbox-color-mode=dark] .badge.bg-red-400,html[data-netbox-color-mode=dark] .toast.bg-red-400,html[data-netbox-color-mode=dark] .toast-header.bg-red-400,html[data-netbox-color-mode=dark] .progress-bar.bg-red-400,html[data-netbox-color-mode=light] .badge.bg-red-400,html[data-netbox-color-mode=light] .toast.bg-red-400,html[data-netbox-color-mode=light] .toast-header.bg-red-400,html[data-netbox-color-mode=light] .progress-bar.bg-red-400{color:#000}}@media print{html .bg-red-500 button.btn-close,html[data-netbox-color-mode=dark] .bg-red-500 button.btn-close,html[data-netbox-color-mode=light] .bg-red-500 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23842029'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-red-500,html[data-netbox-color-mode=dark] .btn.btn-ghost-red-500,html[data-netbox-color-mode=light] .btn.btn-ghost-red-500{color:#dc3545}}@media print{html .btn.btn-ghost-red-500:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-red-500:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-red-500:hover{background-color:#dc35451f}}@media print{html .alert.alert-red-500 a:not(.btn),html .table-red-500 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-red-500 a:not(.btn),html[data-netbox-color-mode=dark] .table-red-500 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-red-500 a:not(.btn),html[data-netbox-color-mode=light] .table-red-500 a:not(.btn){font-weight:700;color:#842029}}@media print{html .alert.alert-red-500 .btn:not([class*=btn-outline]),html .table-red-500 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-red-500 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-red-500 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-red-500 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-red-500 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-red-500 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-red-500 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-red-500 a:not(.btn){font-weight:700;color:#f1aeb5}}@media print{html .badge.bg-red-500,html .toast.bg-red-500,html .toast-header.bg-red-500,html .progress-bar.bg-red-500,html[data-netbox-color-mode=dark] .badge.bg-red-500,html[data-netbox-color-mode=dark] .toast.bg-red-500,html[data-netbox-color-mode=dark] .toast-header.bg-red-500,html[data-netbox-color-mode=dark] .progress-bar.bg-red-500,html[data-netbox-color-mode=light] .badge.bg-red-500,html[data-netbox-color-mode=light] .toast.bg-red-500,html[data-netbox-color-mode=light] .toast-header.bg-red-500,html[data-netbox-color-mode=light] .progress-bar.bg-red-500{color:#fff}}@media print{html .bg-red-600 button.btn-close,html[data-netbox-color-mode=dark] .bg-red-600 button.btn-close,html[data-netbox-color-mode=light] .bg-red-600 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236a1921'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-red-600,html[data-netbox-color-mode=dark] .btn.btn-ghost-red-600,html[data-netbox-color-mode=light] .btn.btn-ghost-red-600{color:#b02a37}}@media print{html .btn.btn-ghost-red-600:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-red-600:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-red-600:hover{background-color:#b02a371f}}@media print{html .alert.alert-red-600 a:not(.btn),html .table-red-600 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-red-600 a:not(.btn),html[data-netbox-color-mode=dark] .table-red-600 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-red-600 a:not(.btn),html[data-netbox-color-mode=light] .table-red-600 a:not(.btn){font-weight:700;color:#6a1921}}@media print{html .alert.alert-red-600 .btn:not([class*=btn-outline]),html .table-red-600 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-red-600 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-red-600 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-red-600 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-red-600 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-red-600 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-red-600 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-red-600 a:not(.btn){font-weight:700;color:#dfaaaf}}@media print{html .badge.bg-red-600,html .toast.bg-red-600,html .toast-header.bg-red-600,html .progress-bar.bg-red-600,html[data-netbox-color-mode=dark] .badge.bg-red-600,html[data-netbox-color-mode=dark] .toast.bg-red-600,html[data-netbox-color-mode=dark] .toast-header.bg-red-600,html[data-netbox-color-mode=dark] .progress-bar.bg-red-600,html[data-netbox-color-mode=light] .badge.bg-red-600,html[data-netbox-color-mode=light] .toast.bg-red-600,html[data-netbox-color-mode=light] .toast-header.bg-red-600,html[data-netbox-color-mode=light] .progress-bar.bg-red-600{color:#fff}}@media print{html .bg-red-700 button.btn-close,html[data-netbox-color-mode=dark] .bg-red-700 button.btn-close,html[data-netbox-color-mode=light] .bg-red-700 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%234f1319'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-red-700,html[data-netbox-color-mode=dark] .btn.btn-ghost-red-700,html[data-netbox-color-mode=light] .btn.btn-ghost-red-700{color:#842029}}@media print{html .btn.btn-ghost-red-700:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-red-700:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-red-700:hover{background-color:#8420291f}}@media print{html .alert.alert-red-700 a:not(.btn),html .table-red-700 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-red-700 a:not(.btn),html[data-netbox-color-mode=dark] .table-red-700 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-red-700 a:not(.btn),html[data-netbox-color-mode=light] .table-red-700 a:not(.btn){font-weight:700;color:#4f1319}}@media print{html .alert.alert-red-700 .btn:not([class*=btn-outline]),html .table-red-700 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-red-700 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-red-700 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-red-700 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-red-700 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-red-700 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-red-700 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-red-700 a:not(.btn){font-weight:700;color:#cea6a9}}@media print{html .badge.bg-red-700,html .toast.bg-red-700,html .toast-header.bg-red-700,html .progress-bar.bg-red-700,html[data-netbox-color-mode=dark] .badge.bg-red-700,html[data-netbox-color-mode=dark] .toast.bg-red-700,html[data-netbox-color-mode=dark] .toast-header.bg-red-700,html[data-netbox-color-mode=dark] .progress-bar.bg-red-700,html[data-netbox-color-mode=light] .badge.bg-red-700,html[data-netbox-color-mode=light] .toast.bg-red-700,html[data-netbox-color-mode=light] .toast-header.bg-red-700,html[data-netbox-color-mode=light] .progress-bar.bg-red-700{color:#fff}}@media print{html .bg-red-800 button.btn-close,html[data-netbox-color-mode=dark] .bg-red-800 button.btn-close,html[data-netbox-color-mode=light] .bg-red-800 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23350d11'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-red-800,html[data-netbox-color-mode=dark] .btn.btn-ghost-red-800,html[data-netbox-color-mode=light] .btn.btn-ghost-red-800{color:#58151c}}@media print{html .btn.btn-ghost-red-800:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-red-800:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-red-800:hover{background-color:#58151c1f}}@media print{html .alert.alert-red-800 a:not(.btn),html .table-red-800 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-red-800 a:not(.btn),html[data-netbox-color-mode=dark] .table-red-800 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-red-800 a:not(.btn),html[data-netbox-color-mode=light] .table-red-800 a:not(.btn){font-weight:700;color:#350d11}}@media print{html .alert.alert-red-800 .btn:not([class*=btn-outline]),html .table-red-800 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-red-800 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-red-800 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-red-800 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-red-800 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-red-800 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-red-800 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-red-800 a:not(.btn){font-weight:700;color:#bca1a4}}@media print{html .badge.bg-red-800,html .toast.bg-red-800,html .toast-header.bg-red-800,html .progress-bar.bg-red-800,html[data-netbox-color-mode=dark] .badge.bg-red-800,html[data-netbox-color-mode=dark] .toast.bg-red-800,html[data-netbox-color-mode=dark] .toast-header.bg-red-800,html[data-netbox-color-mode=dark] .progress-bar.bg-red-800,html[data-netbox-color-mode=light] .badge.bg-red-800,html[data-netbox-color-mode=light] .toast.bg-red-800,html[data-netbox-color-mode=light] .toast-header.bg-red-800,html[data-netbox-color-mode=light] .progress-bar.bg-red-800{color:#fff}}@media print{html .bg-red-900 button.btn-close,html[data-netbox-color-mode=dark] .bg-red-900 button.btn-close,html[data-netbox-color-mode=light] .bg-red-900 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%231a0708'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-red-900,html[data-netbox-color-mode=dark] .btn.btn-ghost-red-900,html[data-netbox-color-mode=light] .btn.btn-ghost-red-900{color:#2c0b0e}}@media print{html .btn.btn-ghost-red-900:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-red-900:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-red-900:hover{background-color:#2c0b0e1f}}@media print{html .alert.alert-red-900 a:not(.btn),html .table-red-900 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-red-900 a:not(.btn),html[data-netbox-color-mode=dark] .table-red-900 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-red-900 a:not(.btn),html[data-netbox-color-mode=light] .table-red-900 a:not(.btn){font-weight:700;color:#1a0708}}@media print{html .alert.alert-red-900 .btn:not([class*=btn-outline]),html .table-red-900 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-red-900 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-red-900 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-red-900 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-red-900 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-red-900 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-red-900 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-red-900 a:not(.btn){font-weight:700;color:#ab9d9f}}@media print{html .badge.bg-red-900,html .toast.bg-red-900,html .toast-header.bg-red-900,html .progress-bar.bg-red-900,html[data-netbox-color-mode=dark] .badge.bg-red-900,html[data-netbox-color-mode=dark] .toast.bg-red-900,html[data-netbox-color-mode=dark] .toast-header.bg-red-900,html[data-netbox-color-mode=dark] .progress-bar.bg-red-900,html[data-netbox-color-mode=light] .badge.bg-red-900,html[data-netbox-color-mode=light] .toast.bg-red-900,html[data-netbox-color-mode=light] .toast-header.bg-red-900,html[data-netbox-color-mode=light] .progress-bar.bg-red-900{color:#fff}}@media print{html .bg-yellow-100 button.btn-close,html[data-netbox-color-mode=dark] .bg-yellow-100 button.btn-close,html[data-netbox-color-mode=light] .bg-yellow-100 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23666152'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-yellow-100,html[data-netbox-color-mode=dark] .btn.btn-ghost-yellow-100,html[data-netbox-color-mode=light] .btn.btn-ghost-yellow-100{color:#fff3cd}}@media print{html .btn.btn-ghost-yellow-100:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-yellow-100:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-yellow-100:hover{background-color:#fff3cd1f}}@media print{html .alert.alert-yellow-100 a:not(.btn),html .table-yellow-100 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-yellow-100 a:not(.btn),html[data-netbox-color-mode=dark] .table-yellow-100 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-yellow-100 a:not(.btn),html[data-netbox-color-mode=light] .table-yellow-100 a:not(.btn){font-weight:700;color:#666152}}@media print{html .alert.alert-yellow-100 .btn:not([class*=btn-outline]),html .table-yellow-100 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-yellow-100 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-yellow-100 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-yellow-100 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-yellow-100 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-yellow-100 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-yellow-100 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-yellow-100 a:not(.btn){font-weight:700;color:#666152}}@media print{html .badge.bg-yellow-100,html .toast.bg-yellow-100,html .toast-header.bg-yellow-100,html .progress-bar.bg-yellow-100,html[data-netbox-color-mode=dark] .badge.bg-yellow-100,html[data-netbox-color-mode=dark] .toast.bg-yellow-100,html[data-netbox-color-mode=dark] .toast-header.bg-yellow-100,html[data-netbox-color-mode=dark] .progress-bar.bg-yellow-100,html[data-netbox-color-mode=light] .badge.bg-yellow-100,html[data-netbox-color-mode=light] .toast.bg-yellow-100,html[data-netbox-color-mode=light] .toast-header.bg-yellow-100,html[data-netbox-color-mode=light] .progress-bar.bg-yellow-100{color:#000}}@media print{html .bg-yellow-200 button.btn-close,html[data-netbox-color-mode=dark] .bg-yellow-200 button.btn-close,html[data-netbox-color-mode=light] .bg-yellow-200 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23665c3e'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-yellow-200,html[data-netbox-color-mode=dark] .btn.btn-ghost-yellow-200,html[data-netbox-color-mode=light] .btn.btn-ghost-yellow-200{color:#ffe69c}}@media print{html .btn.btn-ghost-yellow-200:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-yellow-200:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-yellow-200:hover{background-color:#ffe69c1f}}@media print{html .alert.alert-yellow-200 a:not(.btn),html .table-yellow-200 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-yellow-200 a:not(.btn),html[data-netbox-color-mode=dark] .table-yellow-200 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-yellow-200 a:not(.btn),html[data-netbox-color-mode=light] .table-yellow-200 a:not(.btn){font-weight:700;color:#665c3e}}@media print{html .alert.alert-yellow-200 .btn:not([class*=btn-outline]),html .table-yellow-200 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-yellow-200 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-yellow-200 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-yellow-200 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-yellow-200 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-yellow-200 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-yellow-200 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-yellow-200 a:not(.btn){font-weight:700;color:#665c3e}}@media print{html .badge.bg-yellow-200,html .toast.bg-yellow-200,html .toast-header.bg-yellow-200,html .progress-bar.bg-yellow-200,html[data-netbox-color-mode=dark] .badge.bg-yellow-200,html[data-netbox-color-mode=dark] .toast.bg-yellow-200,html[data-netbox-color-mode=dark] .toast-header.bg-yellow-200,html[data-netbox-color-mode=dark] .progress-bar.bg-yellow-200,html[data-netbox-color-mode=light] .badge.bg-yellow-200,html[data-netbox-color-mode=light] .toast.bg-yellow-200,html[data-netbox-color-mode=light] .toast-header.bg-yellow-200,html[data-netbox-color-mode=light] .progress-bar.bg-yellow-200{color:#000}}@media print{html .bg-yellow-300 button.btn-close,html[data-netbox-color-mode=dark] .bg-yellow-300 button.btn-close,html[data-netbox-color-mode=light] .bg-yellow-300 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%2366572a'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-yellow-300,html[data-netbox-color-mode=dark] .btn.btn-ghost-yellow-300,html[data-netbox-color-mode=light] .btn.btn-ghost-yellow-300{color:#ffda6a}}@media print{html .btn.btn-ghost-yellow-300:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-yellow-300:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-yellow-300:hover{background-color:#ffda6a1f}}@media print{html .alert.alert-yellow-300 a:not(.btn),html .table-yellow-300 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-yellow-300 a:not(.btn),html[data-netbox-color-mode=dark] .table-yellow-300 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-yellow-300 a:not(.btn),html[data-netbox-color-mode=light] .table-yellow-300 a:not(.btn){font-weight:700;color:#66572a}}@media print{html .alert.alert-yellow-300 .btn:not([class*=btn-outline]),html .table-yellow-300 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-yellow-300 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-yellow-300 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-yellow-300 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-yellow-300 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-yellow-300 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-yellow-300 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-yellow-300 a:not(.btn){font-weight:700;color:#66572a}}@media print{html .badge.bg-yellow-300,html .toast.bg-yellow-300,html .toast-header.bg-yellow-300,html .progress-bar.bg-yellow-300,html[data-netbox-color-mode=dark] .badge.bg-yellow-300,html[data-netbox-color-mode=dark] .toast.bg-yellow-300,html[data-netbox-color-mode=dark] .toast-header.bg-yellow-300,html[data-netbox-color-mode=dark] .progress-bar.bg-yellow-300,html[data-netbox-color-mode=light] .badge.bg-yellow-300,html[data-netbox-color-mode=light] .toast.bg-yellow-300,html[data-netbox-color-mode=light] .toast-header.bg-yellow-300,html[data-netbox-color-mode=light] .progress-bar.bg-yellow-300{color:#000}}@media print{html .bg-yellow-400 button.btn-close,html[data-netbox-color-mode=dark] .bg-yellow-400 button.btn-close,html[data-netbox-color-mode=light] .bg-yellow-400 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23665217'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-yellow-400,html[data-netbox-color-mode=dark] .btn.btn-ghost-yellow-400,html[data-netbox-color-mode=light] .btn.btn-ghost-yellow-400{color:#ffcd39}}@media print{html .btn.btn-ghost-yellow-400:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-yellow-400:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-yellow-400:hover{background-color:#ffcd391f}}@media print{html .alert.alert-yellow-400 a:not(.btn),html .table-yellow-400 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-yellow-400 a:not(.btn),html[data-netbox-color-mode=dark] .table-yellow-400 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-yellow-400 a:not(.btn),html[data-netbox-color-mode=light] .table-yellow-400 a:not(.btn){font-weight:700;color:#665217}}@media print{html .alert.alert-yellow-400 .btn:not([class*=btn-outline]),html .table-yellow-400 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-yellow-400 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-yellow-400 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-yellow-400 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-yellow-400 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-yellow-400 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-yellow-400 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-yellow-400 a:not(.btn){font-weight:700;color:#665217}}@media print{html .badge.bg-yellow-400,html .toast.bg-yellow-400,html .toast-header.bg-yellow-400,html .progress-bar.bg-yellow-400,html[data-netbox-color-mode=dark] .badge.bg-yellow-400,html[data-netbox-color-mode=dark] .toast.bg-yellow-400,html[data-netbox-color-mode=dark] .toast-header.bg-yellow-400,html[data-netbox-color-mode=dark] .progress-bar.bg-yellow-400,html[data-netbox-color-mode=light] .badge.bg-yellow-400,html[data-netbox-color-mode=light] .toast.bg-yellow-400,html[data-netbox-color-mode=light] .toast-header.bg-yellow-400,html[data-netbox-color-mode=light] .progress-bar.bg-yellow-400{color:#000}}@media print{html .bg-yellow-500 button.btn-close,html[data-netbox-color-mode=dark] .bg-yellow-500 button.btn-close,html[data-netbox-color-mode=light] .bg-yellow-500 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23664d03'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-yellow-500,html[data-netbox-color-mode=dark] .btn.btn-ghost-yellow-500,html[data-netbox-color-mode=light] .btn.btn-ghost-yellow-500{color:#ffc107}}@media print{html .btn.btn-ghost-yellow-500:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-yellow-500:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-yellow-500:hover{background-color:#ffc1071f}}@media print{html .alert.alert-yellow-500 a:not(.btn),html .table-yellow-500 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-yellow-500 a:not(.btn),html[data-netbox-color-mode=dark] .table-yellow-500 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-yellow-500 a:not(.btn),html[data-netbox-color-mode=light] .table-yellow-500 a:not(.btn){font-weight:700;color:#664d03}}@media print{html .alert.alert-yellow-500 .btn:not([class*=btn-outline]),html .table-yellow-500 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-yellow-500 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-yellow-500 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-yellow-500 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-yellow-500 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-yellow-500 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-yellow-500 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-yellow-500 a:not(.btn){font-weight:700;color:#664d03}}@media print{html .badge.bg-yellow-500,html .toast.bg-yellow-500,html .toast-header.bg-yellow-500,html .progress-bar.bg-yellow-500,html[data-netbox-color-mode=dark] .badge.bg-yellow-500,html[data-netbox-color-mode=dark] .toast.bg-yellow-500,html[data-netbox-color-mode=dark] .toast-header.bg-yellow-500,html[data-netbox-color-mode=dark] .progress-bar.bg-yellow-500,html[data-netbox-color-mode=light] .badge.bg-yellow-500,html[data-netbox-color-mode=light] .toast.bg-yellow-500,html[data-netbox-color-mode=light] .toast-header.bg-yellow-500,html[data-netbox-color-mode=light] .progress-bar.bg-yellow-500{color:#000}}@media print{html .bg-yellow-600 button.btn-close,html[data-netbox-color-mode=dark] .bg-yellow-600 button.btn-close,html[data-netbox-color-mode=light] .bg-yellow-600 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%237a5c04'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-yellow-600,html[data-netbox-color-mode=dark] .btn.btn-ghost-yellow-600,html[data-netbox-color-mode=light] .btn.btn-ghost-yellow-600{color:#cc9a06}}@media print{html .btn.btn-ghost-yellow-600:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-yellow-600:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-yellow-600:hover{background-color:#cc9a061f}}@media print{html .alert.alert-yellow-600 a:not(.btn),html .table-yellow-600 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-yellow-600 a:not(.btn),html[data-netbox-color-mode=dark] .table-yellow-600 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-yellow-600 a:not(.btn),html[data-netbox-color-mode=light] .table-yellow-600 a:not(.btn){font-weight:700;color:#7a5c04}}@media print{html .alert.alert-yellow-600 .btn:not([class*=btn-outline]),html .table-yellow-600 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-yellow-600 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-yellow-600 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-yellow-600 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-yellow-600 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-yellow-600 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-yellow-600 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-yellow-600 a:not(.btn){font-weight:700;color:#523e02}}@media print{html .badge.bg-yellow-600,html .toast.bg-yellow-600,html .toast-header.bg-yellow-600,html .progress-bar.bg-yellow-600,html[data-netbox-color-mode=dark] .badge.bg-yellow-600,html[data-netbox-color-mode=dark] .toast.bg-yellow-600,html[data-netbox-color-mode=dark] .toast-header.bg-yellow-600,html[data-netbox-color-mode=dark] .progress-bar.bg-yellow-600,html[data-netbox-color-mode=light] .badge.bg-yellow-600,html[data-netbox-color-mode=light] .toast.bg-yellow-600,html[data-netbox-color-mode=light] .toast-header.bg-yellow-600,html[data-netbox-color-mode=light] .progress-bar.bg-yellow-600{color:#000}}@media print{html .bg-yellow-700 button.btn-close,html[data-netbox-color-mode=dark] .bg-yellow-700 button.btn-close,html[data-netbox-color-mode=light] .bg-yellow-700 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%235c4602'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-yellow-700,html[data-netbox-color-mode=dark] .btn.btn-ghost-yellow-700,html[data-netbox-color-mode=light] .btn.btn-ghost-yellow-700{color:#997404}}@media print{html .btn.btn-ghost-yellow-700:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-yellow-700:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-yellow-700:hover{background-color:#9974041f}}@media print{html .alert.alert-yellow-700 a:not(.btn),html .table-yellow-700 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-yellow-700 a:not(.btn),html[data-netbox-color-mode=dark] .table-yellow-700 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-yellow-700 a:not(.btn),html[data-netbox-color-mode=light] .table-yellow-700 a:not(.btn){font-weight:700;color:#5c4602}}@media print{html .alert.alert-yellow-700 .btn:not([class*=btn-outline]),html .table-yellow-700 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-yellow-700 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-yellow-700 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-yellow-700 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-yellow-700 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-yellow-700 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-yellow-700 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-yellow-700 a:not(.btn){font-weight:700;color:#3d2e02}}@media print{html .badge.bg-yellow-700,html .toast.bg-yellow-700,html .toast-header.bg-yellow-700,html .progress-bar.bg-yellow-700,html[data-netbox-color-mode=dark] .badge.bg-yellow-700,html[data-netbox-color-mode=dark] .toast.bg-yellow-700,html[data-netbox-color-mode=dark] .toast-header.bg-yellow-700,html[data-netbox-color-mode=dark] .progress-bar.bg-yellow-700,html[data-netbox-color-mode=light] .badge.bg-yellow-700,html[data-netbox-color-mode=light] .toast.bg-yellow-700,html[data-netbox-color-mode=light] .toast-header.bg-yellow-700,html[data-netbox-color-mode=light] .progress-bar.bg-yellow-700{color:#000}}@media print{html .bg-yellow-800 button.btn-close,html[data-netbox-color-mode=dark] .bg-yellow-800 button.btn-close,html[data-netbox-color-mode=light] .bg-yellow-800 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%233d2e02'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-yellow-800,html[data-netbox-color-mode=dark] .btn.btn-ghost-yellow-800,html[data-netbox-color-mode=light] .btn.btn-ghost-yellow-800{color:#664d03}}@media print{html .btn.btn-ghost-yellow-800:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-yellow-800:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-yellow-800:hover{background-color:#664d031f}}@media print{html .alert.alert-yellow-800 a:not(.btn),html .table-yellow-800 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-yellow-800 a:not(.btn),html[data-netbox-color-mode=dark] .table-yellow-800 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-yellow-800 a:not(.btn),html[data-netbox-color-mode=light] .table-yellow-800 a:not(.btn){font-weight:700;color:#3d2e02}}@media print{html .alert.alert-yellow-800 .btn:not([class*=btn-outline]),html .table-yellow-800 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-yellow-800 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-yellow-800 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-yellow-800 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-yellow-800 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-yellow-800 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-yellow-800 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-yellow-800 a:not(.btn){font-weight:700;color:#c2b89a}}@media print{html .badge.bg-yellow-800,html .toast.bg-yellow-800,html .toast-header.bg-yellow-800,html .progress-bar.bg-yellow-800,html[data-netbox-color-mode=dark] .badge.bg-yellow-800,html[data-netbox-color-mode=dark] .toast.bg-yellow-800,html[data-netbox-color-mode=dark] .toast-header.bg-yellow-800,html[data-netbox-color-mode=dark] .progress-bar.bg-yellow-800,html[data-netbox-color-mode=light] .badge.bg-yellow-800,html[data-netbox-color-mode=light] .toast.bg-yellow-800,html[data-netbox-color-mode=light] .toast-header.bg-yellow-800,html[data-netbox-color-mode=light] .progress-bar.bg-yellow-800{color:#fff}}@media print{html .bg-yellow-900 button.btn-close,html[data-netbox-color-mode=dark] .bg-yellow-900 button.btn-close,html[data-netbox-color-mode=light] .bg-yellow-900 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%231f1701'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-yellow-900,html[data-netbox-color-mode=dark] .btn.btn-ghost-yellow-900,html[data-netbox-color-mode=light] .btn.btn-ghost-yellow-900{color:#332701}}@media print{html .btn.btn-ghost-yellow-900:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-yellow-900:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-yellow-900:hover{background-color:#3327011f}}@media print{html .alert.alert-yellow-900 a:not(.btn),html .table-yellow-900 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-yellow-900 a:not(.btn),html[data-netbox-color-mode=dark] .table-yellow-900 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-yellow-900 a:not(.btn),html[data-netbox-color-mode=light] .table-yellow-900 a:not(.btn){font-weight:700;color:#1f1701}}@media print{html .alert.alert-yellow-900 .btn:not([class*=btn-outline]),html .table-yellow-900 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-yellow-900 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-yellow-900 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-yellow-900 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-yellow-900 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-yellow-900 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-yellow-900 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-yellow-900 a:not(.btn){font-weight:700;color:#ada999}}@media print{html .badge.bg-yellow-900,html .toast.bg-yellow-900,html .toast-header.bg-yellow-900,html .progress-bar.bg-yellow-900,html[data-netbox-color-mode=dark] .badge.bg-yellow-900,html[data-netbox-color-mode=dark] .toast.bg-yellow-900,html[data-netbox-color-mode=dark] .toast-header.bg-yellow-900,html[data-netbox-color-mode=dark] .progress-bar.bg-yellow-900,html[data-netbox-color-mode=light] .badge.bg-yellow-900,html[data-netbox-color-mode=light] .toast.bg-yellow-900,html[data-netbox-color-mode=light] .toast-header.bg-yellow-900,html[data-netbox-color-mode=light] .progress-bar.bg-yellow-900{color:#fff}}@media print{html .bg-green-100 button.btn-close,html[data-netbox-color-mode=dark] .bg-green-100 button.btn-close,html[data-netbox-color-mode=light] .bg-green-100 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23545c58'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-green-100,html[data-netbox-color-mode=dark] .btn.btn-ghost-green-100,html[data-netbox-color-mode=light] .btn.btn-ghost-green-100{color:#d1e7dd}}@media print{html .btn.btn-ghost-green-100:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-green-100:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-green-100:hover{background-color:#d1e7dd1f}}@media print{html .alert.alert-green-100 a:not(.btn),html .table-green-100 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-green-100 a:not(.btn),html[data-netbox-color-mode=dark] .table-green-100 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-green-100 a:not(.btn),html[data-netbox-color-mode=light] .table-green-100 a:not(.btn){font-weight:700;color:#545c58}}@media print{html .alert.alert-green-100 .btn:not([class*=btn-outline]),html .table-green-100 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-green-100 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-green-100 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-green-100 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-green-100 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-green-100 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-green-100 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-green-100 a:not(.btn){font-weight:700;color:#545c58}}@media print{html .badge.bg-green-100,html .toast.bg-green-100,html .toast-header.bg-green-100,html .progress-bar.bg-green-100,html[data-netbox-color-mode=dark] .badge.bg-green-100,html[data-netbox-color-mode=dark] .toast.bg-green-100,html[data-netbox-color-mode=dark] .toast-header.bg-green-100,html[data-netbox-color-mode=dark] .progress-bar.bg-green-100,html[data-netbox-color-mode=light] .badge.bg-green-100,html[data-netbox-color-mode=light] .toast.bg-green-100,html[data-netbox-color-mode=light] .toast-header.bg-green-100,html[data-netbox-color-mode=light] .progress-bar.bg-green-100{color:#000}}@media print{html .bg-green-200 button.btn-close,html[data-netbox-color-mode=dark] .bg-green-200 button.btn-close,html[data-netbox-color-mode=light] .bg-green-200 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%2341534b'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-green-200,html[data-netbox-color-mode=dark] .btn.btn-ghost-green-200,html[data-netbox-color-mode=light] .btn.btn-ghost-green-200{color:#a3cfbb}}@media print{html .btn.btn-ghost-green-200:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-green-200:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-green-200:hover{background-color:#a3cfbb1f}}@media print{html .alert.alert-green-200 a:not(.btn),html .table-green-200 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-green-200 a:not(.btn),html[data-netbox-color-mode=dark] .table-green-200 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-green-200 a:not(.btn),html[data-netbox-color-mode=light] .table-green-200 a:not(.btn){font-weight:700;color:#41534b}}@media print{html .alert.alert-green-200 .btn:not([class*=btn-outline]),html .table-green-200 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-green-200 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-green-200 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-green-200 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-green-200 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-green-200 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-green-200 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-green-200 a:not(.btn){font-weight:700;color:#41534b}}@media print{html .badge.bg-green-200,html .toast.bg-green-200,html .toast-header.bg-green-200,html .progress-bar.bg-green-200,html[data-netbox-color-mode=dark] .badge.bg-green-200,html[data-netbox-color-mode=dark] .toast.bg-green-200,html[data-netbox-color-mode=dark] .toast-header.bg-green-200,html[data-netbox-color-mode=dark] .progress-bar.bg-green-200,html[data-netbox-color-mode=light] .badge.bg-green-200,html[data-netbox-color-mode=light] .toast.bg-green-200,html[data-netbox-color-mode=light] .toast-header.bg-green-200,html[data-netbox-color-mode=light] .progress-bar.bg-green-200{color:#000}}@media print{html .bg-green-300 button.btn-close,html[data-netbox-color-mode=dark] .bg-green-300 button.btn-close,html[data-netbox-color-mode=light] .bg-green-300 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23466e5b'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-green-300,html[data-netbox-color-mode=dark] .btn.btn-ghost-green-300,html[data-netbox-color-mode=light] .btn.btn-ghost-green-300{color:#75b798}}@media print{html .btn.btn-ghost-green-300:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-green-300:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-green-300:hover{background-color:#75b7981f}}@media print{html .alert.alert-green-300 a:not(.btn),html .table-green-300 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-green-300 a:not(.btn),html[data-netbox-color-mode=dark] .table-green-300 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-green-300 a:not(.btn),html[data-netbox-color-mode=light] .table-green-300 a:not(.btn){font-weight:700;color:#466e5b}}@media print{html .alert.alert-green-300 .btn:not([class*=btn-outline]),html .table-green-300 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-green-300 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-green-300 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-green-300 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-green-300 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-green-300 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-green-300 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-green-300 a:not(.btn){font-weight:700;color:#2f493d}}@media print{html .badge.bg-green-300,html .toast.bg-green-300,html .toast-header.bg-green-300,html .progress-bar.bg-green-300,html[data-netbox-color-mode=dark] .badge.bg-green-300,html[data-netbox-color-mode=dark] .toast.bg-green-300,html[data-netbox-color-mode=dark] .toast-header.bg-green-300,html[data-netbox-color-mode=dark] .progress-bar.bg-green-300,html[data-netbox-color-mode=light] .badge.bg-green-300,html[data-netbox-color-mode=light] .toast.bg-green-300,html[data-netbox-color-mode=light] .toast-header.bg-green-300,html[data-netbox-color-mode=light] .progress-bar.bg-green-300{color:#000}}@media print{html .bg-green-400 button.btn-close,html[data-netbox-color-mode=dark] .bg-green-400 button.btn-close,html[data-netbox-color-mode=light] .bg-green-400 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%232b5f47'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-green-400,html[data-netbox-color-mode=dark] .btn.btn-ghost-green-400,html[data-netbox-color-mode=light] .btn.btn-ghost-green-400{color:#479f76}}@media print{html .btn.btn-ghost-green-400:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-green-400:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-green-400:hover{background-color:#479f761f}}@media print{html .alert.alert-green-400 a:not(.btn),html .table-green-400 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-green-400 a:not(.btn),html[data-netbox-color-mode=dark] .table-green-400 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-green-400 a:not(.btn),html[data-netbox-color-mode=light] .table-green-400 a:not(.btn){font-weight:700;color:#2b5f47}}@media print{html .alert.alert-green-400 .btn:not([class*=btn-outline]),html .table-green-400 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-green-400 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-green-400 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-green-400 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-green-400 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-green-400 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-green-400 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-green-400 a:not(.btn){font-weight:700;color:#1c402f}}@media print{html .badge.bg-green-400,html .toast.bg-green-400,html .toast-header.bg-green-400,html .progress-bar.bg-green-400,html[data-netbox-color-mode=dark] .badge.bg-green-400,html[data-netbox-color-mode=dark] .toast.bg-green-400,html[data-netbox-color-mode=dark] .toast-header.bg-green-400,html[data-netbox-color-mode=dark] .progress-bar.bg-green-400,html[data-netbox-color-mode=light] .badge.bg-green-400,html[data-netbox-color-mode=light] .toast.bg-green-400,html[data-netbox-color-mode=light] .toast-header.bg-green-400,html[data-netbox-color-mode=light] .progress-bar.bg-green-400{color:#000}}@media print{html .bg-green-500 button.btn-close,html[data-netbox-color-mode=dark] .bg-green-500 button.btn-close,html[data-netbox-color-mode=light] .bg-green-500 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230f5132'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-green-500,html[data-netbox-color-mode=dark] .btn.btn-ghost-green-500,html[data-netbox-color-mode=light] .btn.btn-ghost-green-500{color:#198754}}@media print{html .btn.btn-ghost-green-500:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-green-500:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-green-500:hover{background-color:#1987541f}}@media print{html .alert.alert-green-500 a:not(.btn),html .table-green-500 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-green-500 a:not(.btn),html[data-netbox-color-mode=dark] .table-green-500 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-green-500 a:not(.btn),html[data-netbox-color-mode=light] .table-green-500 a:not(.btn){font-weight:700;color:#0f5132}}@media print{html .alert.alert-green-500 .btn:not([class*=btn-outline]),html .table-green-500 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-green-500 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-green-500 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-green-500 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-green-500 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-green-500 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-green-500 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-green-500 a:not(.btn){font-weight:700;color:#a3cfbb}}@media print{html .badge.bg-green-500,html .toast.bg-green-500,html .toast-header.bg-green-500,html .progress-bar.bg-green-500,html[data-netbox-color-mode=dark] .badge.bg-green-500,html[data-netbox-color-mode=dark] .toast.bg-green-500,html[data-netbox-color-mode=dark] .toast-header.bg-green-500,html[data-netbox-color-mode=dark] .progress-bar.bg-green-500,html[data-netbox-color-mode=light] .badge.bg-green-500,html[data-netbox-color-mode=light] .toast.bg-green-500,html[data-netbox-color-mode=light] .toast-header.bg-green-500,html[data-netbox-color-mode=light] .progress-bar.bg-green-500{color:#fff}}@media print{html .bg-green-600 button.btn-close,html[data-netbox-color-mode=dark] .bg-green-600 button.btn-close,html[data-netbox-color-mode=light] .bg-green-600 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230c4128'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-green-600,html[data-netbox-color-mode=dark] .btn.btn-ghost-green-600,html[data-netbox-color-mode=light] .btn.btn-ghost-green-600{color:#146c43}}@media print{html .btn.btn-ghost-green-600:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-green-600:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-green-600:hover{background-color:#146c431f}}@media print{html .alert.alert-green-600 a:not(.btn),html .table-green-600 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-green-600 a:not(.btn),html[data-netbox-color-mode=dark] .table-green-600 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-green-600 a:not(.btn),html[data-netbox-color-mode=light] .table-green-600 a:not(.btn){font-weight:700;color:#0c4128}}@media print{html .alert.alert-green-600 .btn:not([class*=btn-outline]),html .table-green-600 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-green-600 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-green-600 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-green-600 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-green-600 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-green-600 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-green-600 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-green-600 a:not(.btn){font-weight:700;color:#a1c4b4}}@media print{html .badge.bg-green-600,html .toast.bg-green-600,html .toast-header.bg-green-600,html .progress-bar.bg-green-600,html[data-netbox-color-mode=dark] .badge.bg-green-600,html[data-netbox-color-mode=dark] .toast.bg-green-600,html[data-netbox-color-mode=dark] .toast-header.bg-green-600,html[data-netbox-color-mode=dark] .progress-bar.bg-green-600,html[data-netbox-color-mode=light] .badge.bg-green-600,html[data-netbox-color-mode=light] .toast.bg-green-600,html[data-netbox-color-mode=light] .toast-header.bg-green-600,html[data-netbox-color-mode=light] .progress-bar.bg-green-600{color:#fff}}@media print{html .bg-green-700 button.btn-close,html[data-netbox-color-mode=dark] .bg-green-700 button.btn-close,html[data-netbox-color-mode=light] .bg-green-700 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%2309311e'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-green-700,html[data-netbox-color-mode=dark] .btn.btn-ghost-green-700,html[data-netbox-color-mode=light] .btn.btn-ghost-green-700{color:#0f5132}}@media print{html .btn.btn-ghost-green-700:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-green-700:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-green-700:hover{background-color:#0f51321f}}@media print{html .alert.alert-green-700 a:not(.btn),html .table-green-700 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-green-700 a:not(.btn),html[data-netbox-color-mode=dark] .table-green-700 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-green-700 a:not(.btn),html[data-netbox-color-mode=light] .table-green-700 a:not(.btn){font-weight:700;color:#09311e}}@media print{html .alert.alert-green-700 .btn:not([class*=btn-outline]),html .table-green-700 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-green-700 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-green-700 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-green-700 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-green-700 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-green-700 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-green-700 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-green-700 a:not(.btn){font-weight:700;color:#9fb9ad}}@media print{html .badge.bg-green-700,html .toast.bg-green-700,html .toast-header.bg-green-700,html .progress-bar.bg-green-700,html[data-netbox-color-mode=dark] .badge.bg-green-700,html[data-netbox-color-mode=dark] .toast.bg-green-700,html[data-netbox-color-mode=dark] .toast-header.bg-green-700,html[data-netbox-color-mode=dark] .progress-bar.bg-green-700,html[data-netbox-color-mode=light] .badge.bg-green-700,html[data-netbox-color-mode=light] .toast.bg-green-700,html[data-netbox-color-mode=light] .toast-header.bg-green-700,html[data-netbox-color-mode=light] .progress-bar.bg-green-700{color:#fff}}@media print{html .bg-green-800 button.btn-close,html[data-netbox-color-mode=dark] .bg-green-800 button.btn-close,html[data-netbox-color-mode=light] .bg-green-800 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23062014'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-green-800,html[data-netbox-color-mode=dark] .btn.btn-ghost-green-800,html[data-netbox-color-mode=light] .btn.btn-ghost-green-800{color:#0a3622}}@media print{html .btn.btn-ghost-green-800:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-green-800:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-green-800:hover{background-color:#0a36221f}}@media print{html .alert.alert-green-800 a:not(.btn),html .table-green-800 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-green-800 a:not(.btn),html[data-netbox-color-mode=dark] .table-green-800 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-green-800 a:not(.btn),html[data-netbox-color-mode=light] .table-green-800 a:not(.btn){font-weight:700;color:#062014}}@media print{html .alert.alert-green-800 .btn:not([class*=btn-outline]),html .table-green-800 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-green-800 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-green-800 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-green-800 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-green-800 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-green-800 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-green-800 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-green-800 a:not(.btn){font-weight:700;color:#9dafa7}}@media print{html .badge.bg-green-800,html .toast.bg-green-800,html .toast-header.bg-green-800,html .progress-bar.bg-green-800,html[data-netbox-color-mode=dark] .badge.bg-green-800,html[data-netbox-color-mode=dark] .toast.bg-green-800,html[data-netbox-color-mode=dark] .toast-header.bg-green-800,html[data-netbox-color-mode=dark] .progress-bar.bg-green-800,html[data-netbox-color-mode=light] .badge.bg-green-800,html[data-netbox-color-mode=light] .toast.bg-green-800,html[data-netbox-color-mode=light] .toast-header.bg-green-800,html[data-netbox-color-mode=light] .progress-bar.bg-green-800{color:#fff}}@media print{html .bg-green-900 button.btn-close,html[data-netbox-color-mode=dark] .bg-green-900 button.btn-close,html[data-netbox-color-mode=light] .bg-green-900 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%2303100a'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-green-900,html[data-netbox-color-mode=dark] .btn.btn-ghost-green-900,html[data-netbox-color-mode=light] .btn.btn-ghost-green-900{color:#051b11}}@media print{html .btn.btn-ghost-green-900:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-green-900:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-green-900:hover{background-color:#051b111f}}@media print{html .alert.alert-green-900 a:not(.btn),html .table-green-900 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-green-900 a:not(.btn),html[data-netbox-color-mode=dark] .table-green-900 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-green-900 a:not(.btn),html[data-netbox-color-mode=light] .table-green-900 a:not(.btn){font-weight:700;color:#03100a}}@media print{html .alert.alert-green-900 .btn:not([class*=btn-outline]),html .table-green-900 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-green-900 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-green-900 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-green-900 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-green-900 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-green-900 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-green-900 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-green-900 a:not(.btn){font-weight:700;color:#9ba4a0}}@media print{html .badge.bg-green-900,html .toast.bg-green-900,html .toast-header.bg-green-900,html .progress-bar.bg-green-900,html[data-netbox-color-mode=dark] .badge.bg-green-900,html[data-netbox-color-mode=dark] .toast.bg-green-900,html[data-netbox-color-mode=dark] .toast-header.bg-green-900,html[data-netbox-color-mode=dark] .progress-bar.bg-green-900,html[data-netbox-color-mode=light] .badge.bg-green-900,html[data-netbox-color-mode=light] .toast.bg-green-900,html[data-netbox-color-mode=light] .toast-header.bg-green-900,html[data-netbox-color-mode=light] .progress-bar.bg-green-900{color:#fff}}@media print{html .bg-blue-100 button.btn-close,html[data-netbox-color-mode=dark] .bg-blue-100 button.btn-close,html[data-netbox-color-mode=light] .bg-blue-100 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23535a66'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-blue-100,html[data-netbox-color-mode=dark] .btn.btn-ghost-blue-100,html[data-netbox-color-mode=light] .btn.btn-ghost-blue-100{color:#cfe2ff}}@media print{html .btn.btn-ghost-blue-100:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-blue-100:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-blue-100:hover{background-color:#cfe2ff1f}}@media print{html .alert.alert-blue-100 a:not(.btn),html .table-blue-100 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-blue-100 a:not(.btn),html[data-netbox-color-mode=dark] .table-blue-100 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-blue-100 a:not(.btn),html[data-netbox-color-mode=light] .table-blue-100 a:not(.btn){font-weight:700;color:#535a66}}@media print{html .alert.alert-blue-100 .btn:not([class*=btn-outline]),html .table-blue-100 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-blue-100 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-blue-100 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-blue-100 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-blue-100 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-blue-100 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-blue-100 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-blue-100 a:not(.btn){font-weight:700;color:#535a66}}@media print{html .badge.bg-blue-100,html .toast.bg-blue-100,html .toast-header.bg-blue-100,html .progress-bar.bg-blue-100,html[data-netbox-color-mode=dark] .badge.bg-blue-100,html[data-netbox-color-mode=dark] .toast.bg-blue-100,html[data-netbox-color-mode=dark] .toast-header.bg-blue-100,html[data-netbox-color-mode=dark] .progress-bar.bg-blue-100,html[data-netbox-color-mode=light] .badge.bg-blue-100,html[data-netbox-color-mode=light] .toast.bg-blue-100,html[data-netbox-color-mode=light] .toast-header.bg-blue-100,html[data-netbox-color-mode=light] .progress-bar.bg-blue-100{color:#000}}@media print{html .bg-blue-200 button.btn-close,html[data-netbox-color-mode=dark] .bg-blue-200 button.btn-close,html[data-netbox-color-mode=light] .bg-blue-200 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%233f4f66'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-blue-200,html[data-netbox-color-mode=dark] .btn.btn-ghost-blue-200,html[data-netbox-color-mode=light] .btn.btn-ghost-blue-200{color:#9ec5fe}}@media print{html .btn.btn-ghost-blue-200:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-blue-200:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-blue-200:hover{background-color:#9ec5fe1f}}@media print{html .alert.alert-blue-200 a:not(.btn),html .table-blue-200 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-blue-200 a:not(.btn),html[data-netbox-color-mode=dark] .table-blue-200 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-blue-200 a:not(.btn),html[data-netbox-color-mode=light] .table-blue-200 a:not(.btn){font-weight:700;color:#3f4f66}}@media print{html .alert.alert-blue-200 .btn:not([class*=btn-outline]),html .table-blue-200 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-blue-200 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-blue-200 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-blue-200 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-blue-200 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-blue-200 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-blue-200 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-blue-200 a:not(.btn){font-weight:700;color:#3f4f66}}@media print{html .badge.bg-blue-200,html .toast.bg-blue-200,html .toast-header.bg-blue-200,html .progress-bar.bg-blue-200,html[data-netbox-color-mode=dark] .badge.bg-blue-200,html[data-netbox-color-mode=dark] .toast.bg-blue-200,html[data-netbox-color-mode=dark] .toast-header.bg-blue-200,html[data-netbox-color-mode=dark] .progress-bar.bg-blue-200,html[data-netbox-color-mode=light] .badge.bg-blue-200,html[data-netbox-color-mode=light] .toast.bg-blue-200,html[data-netbox-color-mode=light] .toast-header.bg-blue-200,html[data-netbox-color-mode=light] .progress-bar.bg-blue-200{color:#000}}@media print{html .bg-blue-300 button.btn-close,html[data-netbox-color-mode=dark] .bg-blue-300 button.btn-close,html[data-netbox-color-mode=light] .bg-blue-300 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23426598'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-blue-300,html[data-netbox-color-mode=dark] .btn.btn-ghost-blue-300,html[data-netbox-color-mode=light] .btn.btn-ghost-blue-300{color:#6ea8fe}}@media print{html .btn.btn-ghost-blue-300:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-blue-300:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-blue-300:hover{background-color:#6ea8fe1f}}@media print{html .alert.alert-blue-300 a:not(.btn),html .table-blue-300 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-blue-300 a:not(.btn),html[data-netbox-color-mode=dark] .table-blue-300 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-blue-300 a:not(.btn),html[data-netbox-color-mode=light] .table-blue-300 a:not(.btn){font-weight:700;color:#426598}}@media print{html .alert.alert-blue-300 .btn:not([class*=btn-outline]),html .table-blue-300 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-blue-300 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-blue-300 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-blue-300 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-blue-300 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-blue-300 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-blue-300 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-blue-300 a:not(.btn){font-weight:700;color:#2c4366}}@media print{html .badge.bg-blue-300,html .toast.bg-blue-300,html .toast-header.bg-blue-300,html .progress-bar.bg-blue-300,html[data-netbox-color-mode=dark] .badge.bg-blue-300,html[data-netbox-color-mode=dark] .toast.bg-blue-300,html[data-netbox-color-mode=dark] .toast-header.bg-blue-300,html[data-netbox-color-mode=dark] .progress-bar.bg-blue-300,html[data-netbox-color-mode=light] .badge.bg-blue-300,html[data-netbox-color-mode=light] .toast.bg-blue-300,html[data-netbox-color-mode=light] .toast-header.bg-blue-300,html[data-netbox-color-mode=light] .progress-bar.bg-blue-300{color:#000}}@media print{html .bg-blue-400 button.btn-close,html[data-netbox-color-mode=dark] .bg-blue-400 button.btn-close,html[data-netbox-color-mode=light] .bg-blue-400 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23255398'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-blue-400,html[data-netbox-color-mode=dark] .btn.btn-ghost-blue-400,html[data-netbox-color-mode=light] .btn.btn-ghost-blue-400{color:#3d8bfd}}@media print{html .btn.btn-ghost-blue-400:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-blue-400:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-blue-400:hover{background-color:#3d8bfd1f}}@media print{html .alert.alert-blue-400 a:not(.btn),html .table-blue-400 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-blue-400 a:not(.btn),html[data-netbox-color-mode=dark] .table-blue-400 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-blue-400 a:not(.btn),html[data-netbox-color-mode=light] .table-blue-400 a:not(.btn){font-weight:700;color:#255398}}@media print{html .alert.alert-blue-400 .btn:not([class*=btn-outline]),html .table-blue-400 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-blue-400 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-blue-400 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-blue-400 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-blue-400 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-blue-400 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-blue-400 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-blue-400 a:not(.btn){font-weight:700;color:#183865}}@media print{html .badge.bg-blue-400,html .toast.bg-blue-400,html .toast-header.bg-blue-400,html .progress-bar.bg-blue-400,html[data-netbox-color-mode=dark] .badge.bg-blue-400,html[data-netbox-color-mode=dark] .toast.bg-blue-400,html[data-netbox-color-mode=dark] .toast-header.bg-blue-400,html[data-netbox-color-mode=dark] .progress-bar.bg-blue-400,html[data-netbox-color-mode=light] .badge.bg-blue-400,html[data-netbox-color-mode=light] .toast.bg-blue-400,html[data-netbox-color-mode=light] .toast-header.bg-blue-400,html[data-netbox-color-mode=light] .progress-bar.bg-blue-400{color:#000}}@media print{html .bg-blue-500 button.btn-close,html[data-netbox-color-mode=dark] .bg-blue-500 button.btn-close,html[data-netbox-color-mode=light] .bg-blue-500 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23084298'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-blue-500,html[data-netbox-color-mode=dark] .btn.btn-ghost-blue-500,html[data-netbox-color-mode=light] .btn.btn-ghost-blue-500{color:#0d6efd}}@media print{html .btn.btn-ghost-blue-500:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-blue-500:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-blue-500:hover{background-color:#0d6efd1f}}@media print{html .alert.alert-blue-500 a:not(.btn),html .table-blue-500 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-blue-500 a:not(.btn),html[data-netbox-color-mode=dark] .table-blue-500 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-blue-500 a:not(.btn),html[data-netbox-color-mode=light] .table-blue-500 a:not(.btn){font-weight:700;color:#084298}}@media print{html .alert.alert-blue-500 .btn:not([class*=btn-outline]),html .table-blue-500 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-blue-500 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-blue-500 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-blue-500 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-blue-500 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-blue-500 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-blue-500 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-blue-500 a:not(.btn){font-weight:700;color:#9ec5fe}}@media print{html .badge.bg-blue-500,html .toast.bg-blue-500,html .toast-header.bg-blue-500,html .progress-bar.bg-blue-500,html[data-netbox-color-mode=dark] .badge.bg-blue-500,html[data-netbox-color-mode=dark] .toast.bg-blue-500,html[data-netbox-color-mode=dark] .toast-header.bg-blue-500,html[data-netbox-color-mode=dark] .progress-bar.bg-blue-500,html[data-netbox-color-mode=light] .badge.bg-blue-500,html[data-netbox-color-mode=light] .toast.bg-blue-500,html[data-netbox-color-mode=light] .toast-header.bg-blue-500,html[data-netbox-color-mode=light] .progress-bar.bg-blue-500{color:#fff}}@media print{html .bg-blue-600 button.btn-close,html[data-netbox-color-mode=dark] .bg-blue-600 button.btn-close,html[data-netbox-color-mode=light] .bg-blue-600 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23063579'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-blue-600,html[data-netbox-color-mode=dark] .btn.btn-ghost-blue-600,html[data-netbox-color-mode=light] .btn.btn-ghost-blue-600{color:#0a58ca}}@media print{html .btn.btn-ghost-blue-600:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-blue-600:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-blue-600:hover{background-color:#0a58ca1f}}@media print{html .alert.alert-blue-600 a:not(.btn),html .table-blue-600 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-blue-600 a:not(.btn),html[data-netbox-color-mode=dark] .table-blue-600 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-blue-600 a:not(.btn),html[data-netbox-color-mode=light] .table-blue-600 a:not(.btn){font-weight:700;color:#063579}}@media print{html .alert.alert-blue-600 .btn:not([class*=btn-outline]),html .table-blue-600 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-blue-600 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-blue-600 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-blue-600 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-blue-600 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-blue-600 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-blue-600 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-blue-600 a:not(.btn){font-weight:700;color:#9dbcea}}@media print{html .badge.bg-blue-600,html .toast.bg-blue-600,html .toast-header.bg-blue-600,html .progress-bar.bg-blue-600,html[data-netbox-color-mode=dark] .badge.bg-blue-600,html[data-netbox-color-mode=dark] .toast.bg-blue-600,html[data-netbox-color-mode=dark] .toast-header.bg-blue-600,html[data-netbox-color-mode=dark] .progress-bar.bg-blue-600,html[data-netbox-color-mode=light] .badge.bg-blue-600,html[data-netbox-color-mode=light] .toast.bg-blue-600,html[data-netbox-color-mode=light] .toast-header.bg-blue-600,html[data-netbox-color-mode=light] .progress-bar.bg-blue-600{color:#fff}}@media print{html .bg-blue-700 button.btn-close,html[data-netbox-color-mode=dark] .bg-blue-700 button.btn-close,html[data-netbox-color-mode=light] .bg-blue-700 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%2305285b'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-blue-700,html[data-netbox-color-mode=dark] .btn.btn-ghost-blue-700,html[data-netbox-color-mode=light] .btn.btn-ghost-blue-700{color:#084298}}@media print{html .btn.btn-ghost-blue-700:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-blue-700:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-blue-700:hover{background-color:#0842981f}}@media print{html .alert.alert-blue-700 a:not(.btn),html .table-blue-700 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-blue-700 a:not(.btn),html[data-netbox-color-mode=dark] .table-blue-700 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-blue-700 a:not(.btn),html[data-netbox-color-mode=light] .table-blue-700 a:not(.btn){font-weight:700;color:#05285b}}@media print{html .alert.alert-blue-700 .btn:not([class*=btn-outline]),html .table-blue-700 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-blue-700 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-blue-700 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-blue-700 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-blue-700 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-blue-700 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-blue-700 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-blue-700 a:not(.btn){font-weight:700;color:#9cb3d6}}@media print{html .badge.bg-blue-700,html .toast.bg-blue-700,html .toast-header.bg-blue-700,html .progress-bar.bg-blue-700,html[data-netbox-color-mode=dark] .badge.bg-blue-700,html[data-netbox-color-mode=dark] .toast.bg-blue-700,html[data-netbox-color-mode=dark] .toast-header.bg-blue-700,html[data-netbox-color-mode=dark] .progress-bar.bg-blue-700,html[data-netbox-color-mode=light] .badge.bg-blue-700,html[data-netbox-color-mode=light] .toast.bg-blue-700,html[data-netbox-color-mode=light] .toast-header.bg-blue-700,html[data-netbox-color-mode=light] .progress-bar.bg-blue-700{color:#fff}}@media print{html .bg-blue-800 button.btn-close,html[data-netbox-color-mode=dark] .bg-blue-800 button.btn-close,html[data-netbox-color-mode=light] .bg-blue-800 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23031a3d'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-blue-800,html[data-netbox-color-mode=dark] .btn.btn-ghost-blue-800,html[data-netbox-color-mode=light] .btn.btn-ghost-blue-800{color:#052c65}}@media print{html .btn.btn-ghost-blue-800:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-blue-800:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-blue-800:hover{background-color:#052c651f}}@media print{html .alert.alert-blue-800 a:not(.btn),html .table-blue-800 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-blue-800 a:not(.btn),html[data-netbox-color-mode=dark] .table-blue-800 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-blue-800 a:not(.btn),html[data-netbox-color-mode=light] .table-blue-800 a:not(.btn){font-weight:700;color:#031a3d}}@media print{html .alert.alert-blue-800 .btn:not([class*=btn-outline]),html .table-blue-800 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-blue-800 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-blue-800 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-blue-800 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-blue-800 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-blue-800 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-blue-800 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-blue-800 a:not(.btn){font-weight:700;color:#9babc1}}@media print{html .badge.bg-blue-800,html .toast.bg-blue-800,html .toast-header.bg-blue-800,html .progress-bar.bg-blue-800,html[data-netbox-color-mode=dark] .badge.bg-blue-800,html[data-netbox-color-mode=dark] .toast.bg-blue-800,html[data-netbox-color-mode=dark] .toast-header.bg-blue-800,html[data-netbox-color-mode=dark] .progress-bar.bg-blue-800,html[data-netbox-color-mode=light] .badge.bg-blue-800,html[data-netbox-color-mode=light] .toast.bg-blue-800,html[data-netbox-color-mode=light] .toast-header.bg-blue-800,html[data-netbox-color-mode=light] .progress-bar.bg-blue-800{color:#fff}}@media print{html .bg-blue-900 button.btn-close,html[data-netbox-color-mode=dark] .bg-blue-900 button.btn-close,html[data-netbox-color-mode=light] .bg-blue-900 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23020d1f'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-blue-900,html[data-netbox-color-mode=dark] .btn.btn-ghost-blue-900,html[data-netbox-color-mode=light] .btn.btn-ghost-blue-900{color:#031633}}@media print{html .btn.btn-ghost-blue-900:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-blue-900:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-blue-900:hover{background-color:#0316331f}}@media print{html .alert.alert-blue-900 a:not(.btn),html .table-blue-900 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-blue-900 a:not(.btn),html[data-netbox-color-mode=dark] .table-blue-900 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-blue-900 a:not(.btn),html[data-netbox-color-mode=light] .table-blue-900 a:not(.btn){font-weight:700;color:#020d1f}}@media print{html .alert.alert-blue-900 .btn:not([class*=btn-outline]),html .table-blue-900 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-blue-900 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-blue-900 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-blue-900 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-blue-900 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-blue-900 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-blue-900 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-blue-900 a:not(.btn){font-weight:700;color:#9aa2ad}}@media print{html .badge.bg-blue-900,html .toast.bg-blue-900,html .toast-header.bg-blue-900,html .progress-bar.bg-blue-900,html[data-netbox-color-mode=dark] .badge.bg-blue-900,html[data-netbox-color-mode=dark] .toast.bg-blue-900,html[data-netbox-color-mode=dark] .toast-header.bg-blue-900,html[data-netbox-color-mode=dark] .progress-bar.bg-blue-900,html[data-netbox-color-mode=light] .badge.bg-blue-900,html[data-netbox-color-mode=light] .toast.bg-blue-900,html[data-netbox-color-mode=light] .toast-header.bg-blue-900,html[data-netbox-color-mode=light] .progress-bar.bg-blue-900{color:#fff}}@media print{html .bg-cyan-100 button.btn-close,html[data-netbox-color-mode=dark] .bg-cyan-100 button.btn-close,html[data-netbox-color-mode=light] .bg-cyan-100 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23536265'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-cyan-100,html[data-netbox-color-mode=dark] .btn.btn-ghost-cyan-100,html[data-netbox-color-mode=light] .btn.btn-ghost-cyan-100{color:#cff4fc}}@media print{html .btn.btn-ghost-cyan-100:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-cyan-100:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-cyan-100:hover{background-color:#cff4fc1f}}@media print{html .alert.alert-cyan-100 a:not(.btn),html .table-cyan-100 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-cyan-100 a:not(.btn),html[data-netbox-color-mode=dark] .table-cyan-100 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-cyan-100 a:not(.btn),html[data-netbox-color-mode=light] .table-cyan-100 a:not(.btn){font-weight:700;color:#536265}}@media print{html .alert.alert-cyan-100 .btn:not([class*=btn-outline]),html .table-cyan-100 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-cyan-100 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-cyan-100 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-cyan-100 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-cyan-100 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-cyan-100 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-cyan-100 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-cyan-100 a:not(.btn){font-weight:700;color:#536265}}@media print{html .badge.bg-cyan-100,html .toast.bg-cyan-100,html .toast-header.bg-cyan-100,html .progress-bar.bg-cyan-100,html[data-netbox-color-mode=dark] .badge.bg-cyan-100,html[data-netbox-color-mode=dark] .toast.bg-cyan-100,html[data-netbox-color-mode=dark] .toast-header.bg-cyan-100,html[data-netbox-color-mode=dark] .progress-bar.bg-cyan-100,html[data-netbox-color-mode=light] .badge.bg-cyan-100,html[data-netbox-color-mode=light] .toast.bg-cyan-100,html[data-netbox-color-mode=light] .toast-header.bg-cyan-100,html[data-netbox-color-mode=light] .progress-bar.bg-cyan-100{color:#000}}@media print{html .bg-cyan-200 button.btn-close,html[data-netbox-color-mode=dark] .bg-cyan-200 button.btn-close,html[data-netbox-color-mode=light] .bg-cyan-200 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%233f5e64'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-cyan-200,html[data-netbox-color-mode=dark] .btn.btn-ghost-cyan-200,html[data-netbox-color-mode=light] .btn.btn-ghost-cyan-200{color:#9eeaf9}}@media print{html .btn.btn-ghost-cyan-200:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-cyan-200:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-cyan-200:hover{background-color:#9eeaf91f}}@media print{html .alert.alert-cyan-200 a:not(.btn),html .table-cyan-200 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-cyan-200 a:not(.btn),html[data-netbox-color-mode=dark] .table-cyan-200 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-cyan-200 a:not(.btn),html[data-netbox-color-mode=light] .table-cyan-200 a:not(.btn){font-weight:700;color:#3f5e64}}@media print{html .alert.alert-cyan-200 .btn:not([class*=btn-outline]),html .table-cyan-200 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-cyan-200 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-cyan-200 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-cyan-200 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-cyan-200 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-cyan-200 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-cyan-200 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-cyan-200 a:not(.btn){font-weight:700;color:#3f5e64}}@media print{html .badge.bg-cyan-200,html .toast.bg-cyan-200,html .toast-header.bg-cyan-200,html .progress-bar.bg-cyan-200,html[data-netbox-color-mode=dark] .badge.bg-cyan-200,html[data-netbox-color-mode=dark] .toast.bg-cyan-200,html[data-netbox-color-mode=dark] .toast-header.bg-cyan-200,html[data-netbox-color-mode=dark] .progress-bar.bg-cyan-200,html[data-netbox-color-mode=light] .badge.bg-cyan-200,html[data-netbox-color-mode=light] .toast.bg-cyan-200,html[data-netbox-color-mode=light] .toast-header.bg-cyan-200,html[data-netbox-color-mode=light] .progress-bar.bg-cyan-200{color:#000}}@media print{html .bg-cyan-300 button.btn-close,html[data-netbox-color-mode=dark] .bg-cyan-300 button.btn-close,html[data-netbox-color-mode=light] .bg-cyan-300 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%232c5962'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-cyan-300,html[data-netbox-color-mode=dark] .btn.btn-ghost-cyan-300,html[data-netbox-color-mode=light] .btn.btn-ghost-cyan-300{color:#6edff6}}@media print{html .btn.btn-ghost-cyan-300:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-cyan-300:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-cyan-300:hover{background-color:#6edff61f}}@media print{html .alert.alert-cyan-300 a:not(.btn),html .table-cyan-300 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-cyan-300 a:not(.btn),html[data-netbox-color-mode=dark] .table-cyan-300 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-cyan-300 a:not(.btn),html[data-netbox-color-mode=light] .table-cyan-300 a:not(.btn){font-weight:700;color:#2c5962}}@media print{html .alert.alert-cyan-300 .btn:not([class*=btn-outline]),html .table-cyan-300 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-cyan-300 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-cyan-300 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-cyan-300 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-cyan-300 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-cyan-300 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-cyan-300 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-cyan-300 a:not(.btn){font-weight:700;color:#2c5962}}@media print{html .badge.bg-cyan-300,html .toast.bg-cyan-300,html .toast-header.bg-cyan-300,html .progress-bar.bg-cyan-300,html[data-netbox-color-mode=dark] .badge.bg-cyan-300,html[data-netbox-color-mode=dark] .toast.bg-cyan-300,html[data-netbox-color-mode=dark] .toast-header.bg-cyan-300,html[data-netbox-color-mode=dark] .progress-bar.bg-cyan-300,html[data-netbox-color-mode=light] .badge.bg-cyan-300,html[data-netbox-color-mode=light] .toast.bg-cyan-300,html[data-netbox-color-mode=light] .toast-header.bg-cyan-300,html[data-netbox-color-mode=light] .progress-bar.bg-cyan-300{color:#000}}@media print{html .bg-cyan-400 button.btn-close,html[data-netbox-color-mode=dark] .bg-cyan-400 button.btn-close,html[data-netbox-color-mode=light] .bg-cyan-400 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23185561'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-cyan-400,html[data-netbox-color-mode=dark] .btn.btn-ghost-cyan-400,html[data-netbox-color-mode=light] .btn.btn-ghost-cyan-400{color:#3dd5f3}}@media print{html .btn.btn-ghost-cyan-400:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-cyan-400:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-cyan-400:hover{background-color:#3dd5f31f}}@media print{html .alert.alert-cyan-400 a:not(.btn),html .table-cyan-400 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-cyan-400 a:not(.btn),html[data-netbox-color-mode=dark] .table-cyan-400 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-cyan-400 a:not(.btn),html[data-netbox-color-mode=light] .table-cyan-400 a:not(.btn){font-weight:700;color:#185561}}@media print{html .alert.alert-cyan-400 .btn:not([class*=btn-outline]),html .table-cyan-400 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-cyan-400 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-cyan-400 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-cyan-400 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-cyan-400 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-cyan-400 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-cyan-400 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-cyan-400 a:not(.btn){font-weight:700;color:#185561}}@media print{html .badge.bg-cyan-400,html .toast.bg-cyan-400,html .toast-header.bg-cyan-400,html .progress-bar.bg-cyan-400,html[data-netbox-color-mode=dark] .badge.bg-cyan-400,html[data-netbox-color-mode=dark] .toast.bg-cyan-400,html[data-netbox-color-mode=dark] .toast-header.bg-cyan-400,html[data-netbox-color-mode=dark] .progress-bar.bg-cyan-400,html[data-netbox-color-mode=light] .badge.bg-cyan-400,html[data-netbox-color-mode=light] .toast.bg-cyan-400,html[data-netbox-color-mode=light] .toast-header.bg-cyan-400,html[data-netbox-color-mode=light] .progress-bar.bg-cyan-400{color:#000}}@media print{html .bg-cyan-500 button.btn-close,html[data-netbox-color-mode=dark] .bg-cyan-500 button.btn-close,html[data-netbox-color-mode=light] .bg-cyan-500 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23055160'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-cyan-500,html[data-netbox-color-mode=dark] .btn.btn-ghost-cyan-500,html[data-netbox-color-mode=light] .btn.btn-ghost-cyan-500{color:#0dcaf0}}@media print{html .btn.btn-ghost-cyan-500:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-cyan-500:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-cyan-500:hover{background-color:#0dcaf01f}}@media print{html .alert.alert-cyan-500 a:not(.btn),html .table-cyan-500 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-cyan-500 a:not(.btn),html[data-netbox-color-mode=dark] .table-cyan-500 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-cyan-500 a:not(.btn),html[data-netbox-color-mode=light] .table-cyan-500 a:not(.btn){font-weight:700;color:#055160}}@media print{html .alert.alert-cyan-500 .btn:not([class*=btn-outline]),html .table-cyan-500 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-cyan-500 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-cyan-500 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-cyan-500 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-cyan-500 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-cyan-500 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-cyan-500 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-cyan-500 a:not(.btn){font-weight:700;color:#055160}}@media print{html .badge.bg-cyan-500,html .toast.bg-cyan-500,html .toast-header.bg-cyan-500,html .progress-bar.bg-cyan-500,html[data-netbox-color-mode=dark] .badge.bg-cyan-500,html[data-netbox-color-mode=dark] .toast.bg-cyan-500,html[data-netbox-color-mode=dark] .toast-header.bg-cyan-500,html[data-netbox-color-mode=dark] .progress-bar.bg-cyan-500,html[data-netbox-color-mode=light] .badge.bg-cyan-500,html[data-netbox-color-mode=light] .toast.bg-cyan-500,html[data-netbox-color-mode=light] .toast-header.bg-cyan-500,html[data-netbox-color-mode=light] .progress-bar.bg-cyan-500{color:#000}}@media print{html .bg-cyan-600 button.btn-close,html[data-netbox-color-mode=dark] .bg-cyan-600 button.btn-close,html[data-netbox-color-mode=light] .bg-cyan-600 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23066173'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-cyan-600,html[data-netbox-color-mode=dark] .btn.btn-ghost-cyan-600,html[data-netbox-color-mode=light] .btn.btn-ghost-cyan-600{color:#0aa2c0}}@media print{html .btn.btn-ghost-cyan-600:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-cyan-600:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-cyan-600:hover{background-color:#0aa2c01f}}@media print{html .alert.alert-cyan-600 a:not(.btn),html .table-cyan-600 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-cyan-600 a:not(.btn),html[data-netbox-color-mode=dark] .table-cyan-600 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-cyan-600 a:not(.btn),html[data-netbox-color-mode=light] .table-cyan-600 a:not(.btn){font-weight:700;color:#066173}}@media print{html .alert.alert-cyan-600 .btn:not([class*=btn-outline]),html .table-cyan-600 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-cyan-600 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-cyan-600 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-cyan-600 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-cyan-600 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-cyan-600 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-cyan-600 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-cyan-600 a:not(.btn){font-weight:700;color:#04414d}}@media print{html .badge.bg-cyan-600,html .toast.bg-cyan-600,html .toast-header.bg-cyan-600,html .progress-bar.bg-cyan-600,html[data-netbox-color-mode=dark] .badge.bg-cyan-600,html[data-netbox-color-mode=dark] .toast.bg-cyan-600,html[data-netbox-color-mode=dark] .toast-header.bg-cyan-600,html[data-netbox-color-mode=dark] .progress-bar.bg-cyan-600,html[data-netbox-color-mode=light] .badge.bg-cyan-600,html[data-netbox-color-mode=light] .toast.bg-cyan-600,html[data-netbox-color-mode=light] .toast-header.bg-cyan-600,html[data-netbox-color-mode=light] .progress-bar.bg-cyan-600{color:#000}}@media print{html .bg-cyan-700 button.btn-close,html[data-netbox-color-mode=dark] .bg-cyan-700 button.btn-close,html[data-netbox-color-mode=light] .bg-cyan-700 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23054956'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-cyan-700,html[data-netbox-color-mode=dark] .btn.btn-ghost-cyan-700,html[data-netbox-color-mode=light] .btn.btn-ghost-cyan-700{color:#087990}}@media print{html .btn.btn-ghost-cyan-700:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-cyan-700:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-cyan-700:hover{background-color:#0879901f}}@media print{html .alert.alert-cyan-700 a:not(.btn),html .table-cyan-700 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-cyan-700 a:not(.btn),html[data-netbox-color-mode=dark] .table-cyan-700 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-cyan-700 a:not(.btn),html[data-netbox-color-mode=light] .table-cyan-700 a:not(.btn){font-weight:700;color:#054956}}@media print{html .alert.alert-cyan-700 .btn:not([class*=btn-outline]),html .table-cyan-700 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-cyan-700 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-cyan-700 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-cyan-700 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-cyan-700 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-cyan-700 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-cyan-700 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-cyan-700 a:not(.btn){font-weight:700;color:#9cc9d3}}@media print{html .badge.bg-cyan-700,html .toast.bg-cyan-700,html .toast-header.bg-cyan-700,html .progress-bar.bg-cyan-700,html[data-netbox-color-mode=dark] .badge.bg-cyan-700,html[data-netbox-color-mode=dark] .toast.bg-cyan-700,html[data-netbox-color-mode=dark] .toast-header.bg-cyan-700,html[data-netbox-color-mode=dark] .progress-bar.bg-cyan-700,html[data-netbox-color-mode=light] .badge.bg-cyan-700,html[data-netbox-color-mode=light] .toast.bg-cyan-700,html[data-netbox-color-mode=light] .toast-header.bg-cyan-700,html[data-netbox-color-mode=light] .progress-bar.bg-cyan-700{color:#fff}}@media print{html .bg-cyan-800 button.btn-close,html[data-netbox-color-mode=dark] .bg-cyan-800 button.btn-close,html[data-netbox-color-mode=light] .bg-cyan-800 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%2303313a'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-cyan-800,html[data-netbox-color-mode=dark] .btn.btn-ghost-cyan-800,html[data-netbox-color-mode=light] .btn.btn-ghost-cyan-800{color:#055160}}@media print{html .btn.btn-ghost-cyan-800:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-cyan-800:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-cyan-800:hover{background-color:#0551601f}}@media print{html .alert.alert-cyan-800 a:not(.btn),html .table-cyan-800 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-cyan-800 a:not(.btn),html[data-netbox-color-mode=dark] .table-cyan-800 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-cyan-800 a:not(.btn),html[data-netbox-color-mode=light] .table-cyan-800 a:not(.btn){font-weight:700;color:#03313a}}@media print{html .alert.alert-cyan-800 .btn:not([class*=btn-outline]),html .table-cyan-800 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-cyan-800 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-cyan-800 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-cyan-800 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-cyan-800 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-cyan-800 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-cyan-800 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-cyan-800 a:not(.btn){font-weight:700;color:#9bb9bf}}@media print{html .badge.bg-cyan-800,html .toast.bg-cyan-800,html .toast-header.bg-cyan-800,html .progress-bar.bg-cyan-800,html[data-netbox-color-mode=dark] .badge.bg-cyan-800,html[data-netbox-color-mode=dark] .toast.bg-cyan-800,html[data-netbox-color-mode=dark] .toast-header.bg-cyan-800,html[data-netbox-color-mode=dark] .progress-bar.bg-cyan-800,html[data-netbox-color-mode=light] .badge.bg-cyan-800,html[data-netbox-color-mode=light] .toast.bg-cyan-800,html[data-netbox-color-mode=light] .toast-header.bg-cyan-800,html[data-netbox-color-mode=light] .progress-bar.bg-cyan-800{color:#fff}}@media print{html .bg-cyan-900 button.btn-close,html[data-netbox-color-mode=dark] .bg-cyan-900 button.btn-close,html[data-netbox-color-mode=light] .bg-cyan-900 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%2302181d'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-cyan-900,html[data-netbox-color-mode=dark] .btn.btn-ghost-cyan-900,html[data-netbox-color-mode=light] .btn.btn-ghost-cyan-900{color:#032830}}@media print{html .btn.btn-ghost-cyan-900:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-cyan-900:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-cyan-900:hover{background-color:#0328301f}}@media print{html .alert.alert-cyan-900 a:not(.btn),html .table-cyan-900 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-cyan-900 a:not(.btn),html[data-netbox-color-mode=dark] .table-cyan-900 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-cyan-900 a:not(.btn),html[data-netbox-color-mode=light] .table-cyan-900 a:not(.btn){font-weight:700;color:#02181d}}@media print{html .alert.alert-cyan-900 .btn:not([class*=btn-outline]),html .table-cyan-900 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-cyan-900 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-cyan-900 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-cyan-900 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-cyan-900 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-cyan-900 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-cyan-900 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-cyan-900 a:not(.btn){font-weight:700;color:#9aa9ac}}@media print{html .badge.bg-cyan-900,html .toast.bg-cyan-900,html .toast-header.bg-cyan-900,html .progress-bar.bg-cyan-900,html[data-netbox-color-mode=dark] .badge.bg-cyan-900,html[data-netbox-color-mode=dark] .toast.bg-cyan-900,html[data-netbox-color-mode=dark] .toast-header.bg-cyan-900,html[data-netbox-color-mode=dark] .progress-bar.bg-cyan-900,html[data-netbox-color-mode=light] .badge.bg-cyan-900,html[data-netbox-color-mode=light] .toast.bg-cyan-900,html[data-netbox-color-mode=light] .toast-header.bg-cyan-900,html[data-netbox-color-mode=light] .progress-bar.bg-cyan-900{color:#fff}}@media print{html .bg-indigo-100 button.btn-close,html[data-netbox-color-mode=dark] .bg-indigo-100 button.btn-close,html[data-netbox-color-mode=light] .bg-indigo-100 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%235a5365'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-indigo-100,html[data-netbox-color-mode=dark] .btn.btn-ghost-indigo-100,html[data-netbox-color-mode=light] .btn.btn-ghost-indigo-100{color:#e0cffc}}@media print{html .btn.btn-ghost-indigo-100:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-indigo-100:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-indigo-100:hover{background-color:#e0cffc1f}}@media print{html .alert.alert-indigo-100 a:not(.btn),html .table-indigo-100 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-indigo-100 a:not(.btn),html[data-netbox-color-mode=dark] .table-indigo-100 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-indigo-100 a:not(.btn),html[data-netbox-color-mode=light] .table-indigo-100 a:not(.btn){font-weight:700;color:#5a5365}}@media print{html .alert.alert-indigo-100 .btn:not([class*=btn-outline]),html .table-indigo-100 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-indigo-100 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-indigo-100 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-indigo-100 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-indigo-100 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-indigo-100 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-indigo-100 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-indigo-100 a:not(.btn){font-weight:700;color:#5a5365}}@media print{html .badge.bg-indigo-100,html .toast.bg-indigo-100,html .toast-header.bg-indigo-100,html .progress-bar.bg-indigo-100,html[data-netbox-color-mode=dark] .badge.bg-indigo-100,html[data-netbox-color-mode=dark] .toast.bg-indigo-100,html[data-netbox-color-mode=dark] .toast-header.bg-indigo-100,html[data-netbox-color-mode=dark] .progress-bar.bg-indigo-100,html[data-netbox-color-mode=light] .badge.bg-indigo-100,html[data-netbox-color-mode=light] .toast.bg-indigo-100,html[data-netbox-color-mode=light] .toast-header.bg-indigo-100,html[data-netbox-color-mode=light] .progress-bar.bg-indigo-100{color:#000}}@media print{html .bg-indigo-200 button.btn-close,html[data-netbox-color-mode=dark] .bg-indigo-200 button.btn-close,html[data-netbox-color-mode=light] .bg-indigo-200 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23745f96'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-indigo-200,html[data-netbox-color-mode=dark] .btn.btn-ghost-indigo-200,html[data-netbox-color-mode=light] .btn.btn-ghost-indigo-200{color:#c29ffa}}@media print{html .btn.btn-ghost-indigo-200:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-indigo-200:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-indigo-200:hover{background-color:#c29ffa1f}}@media print{html .alert.alert-indigo-200 a:not(.btn),html .table-indigo-200 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-indigo-200 a:not(.btn),html[data-netbox-color-mode=dark] .table-indigo-200 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-indigo-200 a:not(.btn),html[data-netbox-color-mode=light] .table-indigo-200 a:not(.btn){font-weight:700;color:#745f96}}@media print{html .alert.alert-indigo-200 .btn:not([class*=btn-outline]),html .table-indigo-200 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-indigo-200 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-indigo-200 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-indigo-200 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-indigo-200 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-indigo-200 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-indigo-200 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-indigo-200 a:not(.btn){font-weight:700;color:#4e4064}}@media print{html .badge.bg-indigo-200,html .toast.bg-indigo-200,html .toast-header.bg-indigo-200,html .progress-bar.bg-indigo-200,html[data-netbox-color-mode=dark] .badge.bg-indigo-200,html[data-netbox-color-mode=dark] .toast.bg-indigo-200,html[data-netbox-color-mode=dark] .toast-header.bg-indigo-200,html[data-netbox-color-mode=dark] .progress-bar.bg-indigo-200,html[data-netbox-color-mode=light] .badge.bg-indigo-200,html[data-netbox-color-mode=light] .toast.bg-indigo-200,html[data-netbox-color-mode=light] .toast-header.bg-indigo-200,html[data-netbox-color-mode=light] .progress-bar.bg-indigo-200{color:#000}}@media print{html .bg-indigo-300 button.btn-close,html[data-netbox-color-mode=dark] .bg-indigo-300 button.btn-close,html[data-netbox-color-mode=light] .bg-indigo-300 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23624394'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-indigo-300,html[data-netbox-color-mode=dark] .btn.btn-ghost-indigo-300,html[data-netbox-color-mode=light] .btn.btn-ghost-indigo-300{color:#a370f7}}@media print{html .btn.btn-ghost-indigo-300:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-indigo-300:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-indigo-300:hover{background-color:#a370f71f}}@media print{html .alert.alert-indigo-300 a:not(.btn),html .table-indigo-300 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-indigo-300 a:not(.btn),html[data-netbox-color-mode=dark] .table-indigo-300 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-indigo-300 a:not(.btn),html[data-netbox-color-mode=light] .table-indigo-300 a:not(.btn){font-weight:700;color:#624394}}@media print{html .alert.alert-indigo-300 .btn:not([class*=btn-outline]),html .table-indigo-300 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-indigo-300 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-indigo-300 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-indigo-300 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-indigo-300 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-indigo-300 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-indigo-300 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-indigo-300 a:not(.btn){font-weight:700;color:#412d63}}@media print{html .badge.bg-indigo-300,html .toast.bg-indigo-300,html .toast-header.bg-indigo-300,html .progress-bar.bg-indigo-300,html[data-netbox-color-mode=dark] .badge.bg-indigo-300,html[data-netbox-color-mode=dark] .toast.bg-indigo-300,html[data-netbox-color-mode=dark] .toast-header.bg-indigo-300,html[data-netbox-color-mode=dark] .progress-bar.bg-indigo-300,html[data-netbox-color-mode=light] .badge.bg-indigo-300,html[data-netbox-color-mode=light] .toast.bg-indigo-300,html[data-netbox-color-mode=light] .toast-header.bg-indigo-300,html[data-netbox-color-mode=light] .progress-bar.bg-indigo-300{color:#000}}@media print{html .bg-indigo-400 button.btn-close,html[data-netbox-color-mode=dark] .bg-indigo-400 button.btn-close,html[data-netbox-color-mode=light] .bg-indigo-400 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23502693'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-indigo-400,html[data-netbox-color-mode=dark] .btn.btn-ghost-indigo-400,html[data-netbox-color-mode=light] .btn.btn-ghost-indigo-400{color:#8540f5}}@media print{html .btn.btn-ghost-indigo-400:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-indigo-400:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-indigo-400:hover{background-color:#8540f51f}}@media print{html .alert.alert-indigo-400 a:not(.btn),html .table-indigo-400 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-indigo-400 a:not(.btn),html[data-netbox-color-mode=dark] .table-indigo-400 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-indigo-400 a:not(.btn),html[data-netbox-color-mode=light] .table-indigo-400 a:not(.btn){font-weight:700;color:#502693}}@media print{html .alert.alert-indigo-400 .btn:not([class*=btn-outline]),html .table-indigo-400 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-indigo-400 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-indigo-400 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-indigo-400 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-indigo-400 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-indigo-400 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-indigo-400 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-indigo-400 a:not(.btn){font-weight:700;color:#ceb3fb}}@media print{html .badge.bg-indigo-400,html .toast.bg-indigo-400,html .toast-header.bg-indigo-400,html .progress-bar.bg-indigo-400,html[data-netbox-color-mode=dark] .badge.bg-indigo-400,html[data-netbox-color-mode=dark] .toast.bg-indigo-400,html[data-netbox-color-mode=dark] .toast-header.bg-indigo-400,html[data-netbox-color-mode=dark] .progress-bar.bg-indigo-400,html[data-netbox-color-mode=light] .badge.bg-indigo-400,html[data-netbox-color-mode=light] .toast.bg-indigo-400,html[data-netbox-color-mode=light] .toast-header.bg-indigo-400,html[data-netbox-color-mode=light] .progress-bar.bg-indigo-400{color:#fff}}@media print{html .bg-indigo-500 button.btn-close,html[data-netbox-color-mode=dark] .bg-indigo-500 button.btn-close,html[data-netbox-color-mode=light] .bg-indigo-500 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%233d0a91'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-indigo-500,html[data-netbox-color-mode=dark] .btn.btn-ghost-indigo-500,html[data-netbox-color-mode=light] .btn.btn-ghost-indigo-500{color:#6610f2}}@media print{html .btn.btn-ghost-indigo-500:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-indigo-500:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-indigo-500:hover{background-color:#6610f21f}}@media print{html .alert.alert-indigo-500 a:not(.btn),html .table-indigo-500 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-indigo-500 a:not(.btn),html[data-netbox-color-mode=dark] .table-indigo-500 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-indigo-500 a:not(.btn),html[data-netbox-color-mode=light] .table-indigo-500 a:not(.btn){font-weight:700;color:#3d0a91}}@media print{html .alert.alert-indigo-500 .btn:not([class*=btn-outline]),html .table-indigo-500 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-indigo-500 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-indigo-500 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-indigo-500 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-indigo-500 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-indigo-500 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-indigo-500 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-indigo-500 a:not(.btn){font-weight:700;color:#c29ffa}}@media print{html .badge.bg-indigo-500,html .toast.bg-indigo-500,html .toast-header.bg-indigo-500,html .progress-bar.bg-indigo-500,html[data-netbox-color-mode=dark] .badge.bg-indigo-500,html[data-netbox-color-mode=dark] .toast.bg-indigo-500,html[data-netbox-color-mode=dark] .toast-header.bg-indigo-500,html[data-netbox-color-mode=dark] .progress-bar.bg-indigo-500,html[data-netbox-color-mode=light] .badge.bg-indigo-500,html[data-netbox-color-mode=light] .toast.bg-indigo-500,html[data-netbox-color-mode=light] .toast-header.bg-indigo-500,html[data-netbox-color-mode=light] .progress-bar.bg-indigo-500{color:#fff}}@media print{html .bg-indigo-600 button.btn-close,html[data-netbox-color-mode=dark] .bg-indigo-600 button.btn-close,html[data-netbox-color-mode=light] .bg-indigo-600 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23310874'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-indigo-600,html[data-netbox-color-mode=dark] .btn.btn-ghost-indigo-600,html[data-netbox-color-mode=light] .btn.btn-ghost-indigo-600{color:#520dc2}}@media print{html .btn.btn-ghost-indigo-600:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-indigo-600:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-indigo-600:hover{background-color:#520dc21f}}@media print{html .alert.alert-indigo-600 a:not(.btn),html .table-indigo-600 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-indigo-600 a:not(.btn),html[data-netbox-color-mode=dark] .table-indigo-600 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-indigo-600 a:not(.btn),html[data-netbox-color-mode=light] .table-indigo-600 a:not(.btn){font-weight:700;color:#310874}}@media print{html .alert.alert-indigo-600 .btn:not([class*=btn-outline]),html .table-indigo-600 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-indigo-600 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-indigo-600 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-indigo-600 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-indigo-600 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-indigo-600 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-indigo-600 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-indigo-600 a:not(.btn){font-weight:700;color:#ba9ee7}}@media print{html .badge.bg-indigo-600,html .toast.bg-indigo-600,html .toast-header.bg-indigo-600,html .progress-bar.bg-indigo-600,html[data-netbox-color-mode=dark] .badge.bg-indigo-600,html[data-netbox-color-mode=dark] .toast.bg-indigo-600,html[data-netbox-color-mode=dark] .toast-header.bg-indigo-600,html[data-netbox-color-mode=dark] .progress-bar.bg-indigo-600,html[data-netbox-color-mode=light] .badge.bg-indigo-600,html[data-netbox-color-mode=light] .toast.bg-indigo-600,html[data-netbox-color-mode=light] .toast-header.bg-indigo-600,html[data-netbox-color-mode=light] .progress-bar.bg-indigo-600{color:#fff}}@media print{html .bg-indigo-700 button.btn-close,html[data-netbox-color-mode=dark] .bg-indigo-700 button.btn-close,html[data-netbox-color-mode=light] .bg-indigo-700 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23250657'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-indigo-700,html[data-netbox-color-mode=dark] .btn.btn-ghost-indigo-700,html[data-netbox-color-mode=light] .btn.btn-ghost-indigo-700{color:#3d0a91}}@media print{html .btn.btn-ghost-indigo-700:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-indigo-700:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-indigo-700:hover{background-color:#3d0a911f}}@media print{html .alert.alert-indigo-700 a:not(.btn),html .table-indigo-700 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-indigo-700 a:not(.btn),html[data-netbox-color-mode=dark] .table-indigo-700 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-indigo-700 a:not(.btn),html[data-netbox-color-mode=light] .table-indigo-700 a:not(.btn){font-weight:700;color:#250657}}@media print{html .alert.alert-indigo-700 .btn:not([class*=btn-outline]),html .table-indigo-700 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-indigo-700 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-indigo-700 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-indigo-700 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-indigo-700 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-indigo-700 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-indigo-700 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-indigo-700 a:not(.btn){font-weight:700;color:#b19dd3}}@media print{html .badge.bg-indigo-700,html .toast.bg-indigo-700,html .toast-header.bg-indigo-700,html .progress-bar.bg-indigo-700,html[data-netbox-color-mode=dark] .badge.bg-indigo-700,html[data-netbox-color-mode=dark] .toast.bg-indigo-700,html[data-netbox-color-mode=dark] .toast-header.bg-indigo-700,html[data-netbox-color-mode=dark] .progress-bar.bg-indigo-700,html[data-netbox-color-mode=light] .badge.bg-indigo-700,html[data-netbox-color-mode=light] .toast.bg-indigo-700,html[data-netbox-color-mode=light] .toast-header.bg-indigo-700,html[data-netbox-color-mode=light] .progress-bar.bg-indigo-700{color:#fff}}@media print{html .bg-indigo-800 button.btn-close,html[data-netbox-color-mode=dark] .bg-indigo-800 button.btn-close,html[data-netbox-color-mode=light] .bg-indigo-800 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%2319043a'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-indigo-800,html[data-netbox-color-mode=dark] .btn.btn-ghost-indigo-800,html[data-netbox-color-mode=light] .btn.btn-ghost-indigo-800{color:#290661}}@media print{html .btn.btn-ghost-indigo-800:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-indigo-800:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-indigo-800:hover{background-color:#2906611f}}@media print{html .alert.alert-indigo-800 a:not(.btn),html .table-indigo-800 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-indigo-800 a:not(.btn),html[data-netbox-color-mode=dark] .table-indigo-800 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-indigo-800 a:not(.btn),html[data-netbox-color-mode=light] .table-indigo-800 a:not(.btn){font-weight:700;color:#19043a}}@media print{html .alert.alert-indigo-800 .btn:not([class*=btn-outline]),html .table-indigo-800 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-indigo-800 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-indigo-800 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-indigo-800 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-indigo-800 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-indigo-800 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-indigo-800 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-indigo-800 a:not(.btn){font-weight:700;color:#a99bc0}}@media print{html .badge.bg-indigo-800,html .toast.bg-indigo-800,html .toast-header.bg-indigo-800,html .progress-bar.bg-indigo-800,html[data-netbox-color-mode=dark] .badge.bg-indigo-800,html[data-netbox-color-mode=dark] .toast.bg-indigo-800,html[data-netbox-color-mode=dark] .toast-header.bg-indigo-800,html[data-netbox-color-mode=dark] .progress-bar.bg-indigo-800,html[data-netbox-color-mode=light] .badge.bg-indigo-800,html[data-netbox-color-mode=light] .toast.bg-indigo-800,html[data-netbox-color-mode=light] .toast-header.bg-indigo-800,html[data-netbox-color-mode=light] .progress-bar.bg-indigo-800{color:#fff}}@media print{html .bg-indigo-900 button.btn-close,html[data-netbox-color-mode=dark] .bg-indigo-900 button.btn-close,html[data-netbox-color-mode=light] .bg-indigo-900 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230c021d'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-indigo-900,html[data-netbox-color-mode=dark] .btn.btn-ghost-indigo-900,html[data-netbox-color-mode=light] .btn.btn-ghost-indigo-900{color:#140330}}@media print{html .btn.btn-ghost-indigo-900:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-indigo-900:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-indigo-900:hover{background-color:#1403301f}}@media print{html .alert.alert-indigo-900 a:not(.btn),html .table-indigo-900 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-indigo-900 a:not(.btn),html[data-netbox-color-mode=dark] .table-indigo-900 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-indigo-900 a:not(.btn),html[data-netbox-color-mode=light] .table-indigo-900 a:not(.btn){font-weight:700;color:#0c021d}}@media print{html .alert.alert-indigo-900 .btn:not([class*=btn-outline]),html .table-indigo-900 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-indigo-900 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-indigo-900 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-indigo-900 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-indigo-900 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-indigo-900 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-indigo-900 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-indigo-900 a:not(.btn){font-weight:700;color:#a19aac}}@media print{html .badge.bg-indigo-900,html .toast.bg-indigo-900,html .toast-header.bg-indigo-900,html .progress-bar.bg-indigo-900,html[data-netbox-color-mode=dark] .badge.bg-indigo-900,html[data-netbox-color-mode=dark] .toast.bg-indigo-900,html[data-netbox-color-mode=dark] .toast-header.bg-indigo-900,html[data-netbox-color-mode=dark] .progress-bar.bg-indigo-900,html[data-netbox-color-mode=light] .badge.bg-indigo-900,html[data-netbox-color-mode=light] .toast.bg-indigo-900,html[data-netbox-color-mode=light] .toast-header.bg-indigo-900,html[data-netbox-color-mode=light] .progress-bar.bg-indigo-900{color:#fff}}@media print{html .bg-purple-100 button.btn-close,html[data-netbox-color-mode=dark] .bg-purple-100 button.btn-close,html[data-netbox-color-mode=light] .bg-purple-100 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%235a5761'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-purple-100,html[data-netbox-color-mode=dark] .btn.btn-ghost-purple-100,html[data-netbox-color-mode=light] .btn.btn-ghost-purple-100{color:#e2d9f3}}@media print{html .btn.btn-ghost-purple-100:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-purple-100:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-purple-100:hover{background-color:#e2d9f31f}}@media print{html .alert.alert-purple-100 a:not(.btn),html .table-purple-100 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-purple-100 a:not(.btn),html[data-netbox-color-mode=dark] .table-purple-100 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-purple-100 a:not(.btn),html[data-netbox-color-mode=light] .table-purple-100 a:not(.btn){font-weight:700;color:#5a5761}}@media print{html .alert.alert-purple-100 .btn:not([class*=btn-outline]),html .table-purple-100 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-purple-100 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-purple-100 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-purple-100 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-purple-100 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-purple-100 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-purple-100 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-purple-100 a:not(.btn){font-weight:700;color:#5a5761}}@media print{html .badge.bg-purple-100,html .toast.bg-purple-100,html .toast-header.bg-purple-100,html .progress-bar.bg-purple-100,html[data-netbox-color-mode=dark] .badge.bg-purple-100,html[data-netbox-color-mode=dark] .toast.bg-purple-100,html[data-netbox-color-mode=dark] .toast-header.bg-purple-100,html[data-netbox-color-mode=dark] .progress-bar.bg-purple-100,html[data-netbox-color-mode=light] .badge.bg-purple-100,html[data-netbox-color-mode=light] .toast.bg-purple-100,html[data-netbox-color-mode=light] .toast-header.bg-purple-100,html[data-netbox-color-mode=light] .progress-bar.bg-purple-100{color:#000}}@media print{html .bg-purple-200 button.btn-close,html[data-netbox-color-mode=dark] .bg-purple-200 button.btn-close,html[data-netbox-color-mode=light] .bg-purple-200 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%234f485c'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-purple-200,html[data-netbox-color-mode=dark] .btn.btn-ghost-purple-200,html[data-netbox-color-mode=light] .btn.btn-ghost-purple-200{color:#c5b3e6}}@media print{html .btn.btn-ghost-purple-200:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-purple-200:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-purple-200:hover{background-color:#c5b3e61f}}@media print{html .alert.alert-purple-200 a:not(.btn),html .table-purple-200 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-purple-200 a:not(.btn),html[data-netbox-color-mode=dark] .table-purple-200 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-purple-200 a:not(.btn),html[data-netbox-color-mode=light] .table-purple-200 a:not(.btn){font-weight:700;color:#4f485c}}@media print{html .alert.alert-purple-200 .btn:not([class*=btn-outline]),html .table-purple-200 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-purple-200 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-purple-200 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-purple-200 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-purple-200 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-purple-200 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-purple-200 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-purple-200 a:not(.btn){font-weight:700;color:#4f485c}}@media print{html .badge.bg-purple-200,html .toast.bg-purple-200,html .toast-header.bg-purple-200,html .progress-bar.bg-purple-200,html[data-netbox-color-mode=dark] .badge.bg-purple-200,html[data-netbox-color-mode=dark] .toast.bg-purple-200,html[data-netbox-color-mode=dark] .toast-header.bg-purple-200,html[data-netbox-color-mode=dark] .progress-bar.bg-purple-200,html[data-netbox-color-mode=light] .badge.bg-purple-200,html[data-netbox-color-mode=light] .toast.bg-purple-200,html[data-netbox-color-mode=light] .toast-header.bg-purple-200,html[data-netbox-color-mode=light] .progress-bar.bg-purple-200{color:#000}}@media print{html .bg-purple-300 button.btn-close,html[data-netbox-color-mode=dark] .bg-purple-300 button.btn-close,html[data-netbox-color-mode=light] .bg-purple-300 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23655583'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-purple-300,html[data-netbox-color-mode=dark] .btn.btn-ghost-purple-300,html[data-netbox-color-mode=light] .btn.btn-ghost-purple-300{color:#a98eda}}@media print{html .btn.btn-ghost-purple-300:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-purple-300:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-purple-300:hover{background-color:#a98eda1f}}@media print{html .alert.alert-purple-300 a:not(.btn),html .table-purple-300 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-purple-300 a:not(.btn),html[data-netbox-color-mode=dark] .table-purple-300 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-purple-300 a:not(.btn),html[data-netbox-color-mode=light] .table-purple-300 a:not(.btn){font-weight:700;color:#655583}}@media print{html .alert.alert-purple-300 .btn:not([class*=btn-outline]),html .table-purple-300 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-purple-300 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-purple-300 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-purple-300 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-purple-300 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-purple-300 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-purple-300 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-purple-300 a:not(.btn){font-weight:700;color:#443957}}@media print{html .badge.bg-purple-300,html .toast.bg-purple-300,html .toast-header.bg-purple-300,html .progress-bar.bg-purple-300,html[data-netbox-color-mode=dark] .badge.bg-purple-300,html[data-netbox-color-mode=dark] .toast.bg-purple-300,html[data-netbox-color-mode=dark] .toast-header.bg-purple-300,html[data-netbox-color-mode=dark] .progress-bar.bg-purple-300,html[data-netbox-color-mode=light] .badge.bg-purple-300,html[data-netbox-color-mode=light] .toast.bg-purple-300,html[data-netbox-color-mode=light] .toast-header.bg-purple-300,html[data-netbox-color-mode=light] .progress-bar.bg-purple-300{color:#000}}@media print{html .bg-purple-400 button.btn-close,html[data-netbox-color-mode=dark] .bg-purple-400 button.btn-close,html[data-netbox-color-mode=light] .bg-purple-400 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23543e7b'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-purple-400,html[data-netbox-color-mode=dark] .btn.btn-ghost-purple-400,html[data-netbox-color-mode=light] .btn.btn-ghost-purple-400{color:#8c68cd}}@media print{html .btn.btn-ghost-purple-400:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-purple-400:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-purple-400:hover{background-color:#8c68cd1f}}@media print{html .alert.alert-purple-400 a:not(.btn),html .table-purple-400 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-purple-400 a:not(.btn),html[data-netbox-color-mode=dark] .table-purple-400 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-purple-400 a:not(.btn),html[data-netbox-color-mode=light] .table-purple-400 a:not(.btn){font-weight:700;color:#543e7b}}@media print{html .alert.alert-purple-400 .btn:not([class*=btn-outline]),html .table-purple-400 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-purple-400 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-purple-400 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-purple-400 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-purple-400 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-purple-400 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-purple-400 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-purple-400 a:not(.btn){font-weight:700;color:#382a52}}@media print{html .badge.bg-purple-400,html .toast.bg-purple-400,html .toast-header.bg-purple-400,html .progress-bar.bg-purple-400,html[data-netbox-color-mode=dark] .badge.bg-purple-400,html[data-netbox-color-mode=dark] .toast.bg-purple-400,html[data-netbox-color-mode=dark] .toast-header.bg-purple-400,html[data-netbox-color-mode=dark] .progress-bar.bg-purple-400,html[data-netbox-color-mode=light] .badge.bg-purple-400,html[data-netbox-color-mode=light] .toast.bg-purple-400,html[data-netbox-color-mode=light] .toast-header.bg-purple-400,html[data-netbox-color-mode=light] .progress-bar.bg-purple-400{color:#000}}@media print{html .bg-purple-500 button.btn-close,html[data-netbox-color-mode=dark] .bg-purple-500 button.btn-close,html[data-netbox-color-mode=light] .bg-purple-500 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23432874'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-purple-500,html[data-netbox-color-mode=dark] .btn.btn-ghost-purple-500,html[data-netbox-color-mode=light] .btn.btn-ghost-purple-500{color:#6f42c1}}@media print{html .btn.btn-ghost-purple-500:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-purple-500:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-purple-500:hover{background-color:#6f42c11f}}@media print{html .alert.alert-purple-500 a:not(.btn),html .table-purple-500 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-purple-500 a:not(.btn),html[data-netbox-color-mode=dark] .table-purple-500 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-purple-500 a:not(.btn),html[data-netbox-color-mode=light] .table-purple-500 a:not(.btn){font-weight:700;color:#432874}}@media print{html .alert.alert-purple-500 .btn:not([class*=btn-outline]),html .table-purple-500 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-purple-500 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-purple-500 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-purple-500 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-purple-500 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-purple-500 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-purple-500 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-purple-500 a:not(.btn){font-weight:700;color:#c5b3e6}}@media print{html .badge.bg-purple-500,html .toast.bg-purple-500,html .toast-header.bg-purple-500,html .progress-bar.bg-purple-500,html[data-netbox-color-mode=dark] .badge.bg-purple-500,html[data-netbox-color-mode=dark] .toast.bg-purple-500,html[data-netbox-color-mode=dark] .toast-header.bg-purple-500,html[data-netbox-color-mode=dark] .progress-bar.bg-purple-500,html[data-netbox-color-mode=light] .badge.bg-purple-500,html[data-netbox-color-mode=light] .toast.bg-purple-500,html[data-netbox-color-mode=light] .toast-header.bg-purple-500,html[data-netbox-color-mode=light] .progress-bar.bg-purple-500{color:#fff}}@media print{html .bg-purple-600 button.btn-close,html[data-netbox-color-mode=dark] .bg-purple-600 button.btn-close,html[data-netbox-color-mode=light] .bg-purple-600 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%2335205c'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-purple-600,html[data-netbox-color-mode=dark] .btn.btn-ghost-purple-600,html[data-netbox-color-mode=light] .btn.btn-ghost-purple-600{color:#59359a}}@media print{html .btn.btn-ghost-purple-600:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-purple-600:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-purple-600:hover{background-color:#59359a1f}}@media print{html .alert.alert-purple-600 a:not(.btn),html .table-purple-600 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-purple-600 a:not(.btn),html[data-netbox-color-mode=dark] .table-purple-600 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-purple-600 a:not(.btn),html[data-netbox-color-mode=light] .table-purple-600 a:not(.btn){font-weight:700;color:#35205c}}@media print{html .alert.alert-purple-600 .btn:not([class*=btn-outline]),html .table-purple-600 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-purple-600 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-purple-600 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-purple-600 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-purple-600 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-purple-600 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-purple-600 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-purple-600 a:not(.btn){font-weight:700;color:#bdaed7}}@media print{html .badge.bg-purple-600,html .toast.bg-purple-600,html .toast-header.bg-purple-600,html .progress-bar.bg-purple-600,html[data-netbox-color-mode=dark] .badge.bg-purple-600,html[data-netbox-color-mode=dark] .toast.bg-purple-600,html[data-netbox-color-mode=dark] .toast-header.bg-purple-600,html[data-netbox-color-mode=dark] .progress-bar.bg-purple-600,html[data-netbox-color-mode=light] .badge.bg-purple-600,html[data-netbox-color-mode=light] .toast.bg-purple-600,html[data-netbox-color-mode=light] .toast-header.bg-purple-600,html[data-netbox-color-mode=light] .progress-bar.bg-purple-600{color:#fff}}@media print{html .bg-purple-700 button.btn-close,html[data-netbox-color-mode=dark] .bg-purple-700 button.btn-close,html[data-netbox-color-mode=light] .bg-purple-700 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23281846'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-purple-700,html[data-netbox-color-mode=dark] .btn.btn-ghost-purple-700,html[data-netbox-color-mode=light] .btn.btn-ghost-purple-700{color:#432874}}@media print{html .btn.btn-ghost-purple-700:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-purple-700:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-purple-700:hover{background-color:#4328741f}}@media print{html .alert.alert-purple-700 a:not(.btn),html .table-purple-700 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-purple-700 a:not(.btn),html[data-netbox-color-mode=dark] .table-purple-700 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-purple-700 a:not(.btn),html[data-netbox-color-mode=light] .table-purple-700 a:not(.btn){font-weight:700;color:#281846}}@media print{html .alert.alert-purple-700 .btn:not([class*=btn-outline]),html .table-purple-700 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-purple-700 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-purple-700 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-purple-700 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-purple-700 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-purple-700 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-purple-700 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-purple-700 a:not(.btn){font-weight:700;color:#b4a9c7}}@media print{html .badge.bg-purple-700,html .toast.bg-purple-700,html .toast-header.bg-purple-700,html .progress-bar.bg-purple-700,html[data-netbox-color-mode=dark] .badge.bg-purple-700,html[data-netbox-color-mode=dark] .toast.bg-purple-700,html[data-netbox-color-mode=dark] .toast-header.bg-purple-700,html[data-netbox-color-mode=dark] .progress-bar.bg-purple-700,html[data-netbox-color-mode=light] .badge.bg-purple-700,html[data-netbox-color-mode=light] .toast.bg-purple-700,html[data-netbox-color-mode=light] .toast-header.bg-purple-700,html[data-netbox-color-mode=light] .progress-bar.bg-purple-700{color:#fff}}@media print{html .bg-purple-800 button.btn-close,html[data-netbox-color-mode=dark] .bg-purple-800 button.btn-close,html[data-netbox-color-mode=light] .bg-purple-800 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%231a102e'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-purple-800,html[data-netbox-color-mode=dark] .btn.btn-ghost-purple-800,html[data-netbox-color-mode=light] .btn.btn-ghost-purple-800{color:#2c1a4d}}@media print{html .btn.btn-ghost-purple-800:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-purple-800:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-purple-800:hover{background-color:#2c1a4d1f}}@media print{html .alert.alert-purple-800 a:not(.btn),html .table-purple-800 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-purple-800 a:not(.btn),html[data-netbox-color-mode=dark] .table-purple-800 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-purple-800 a:not(.btn),html[data-netbox-color-mode=light] .table-purple-800 a:not(.btn){font-weight:700;color:#1a102e}}@media print{html .alert.alert-purple-800 .btn:not([class*=btn-outline]),html .table-purple-800 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-purple-800 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-purple-800 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-purple-800 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-purple-800 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-purple-800 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-purple-800 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-purple-800 a:not(.btn){font-weight:700;color:#aba3b8}}@media print{html .badge.bg-purple-800,html .toast.bg-purple-800,html .toast-header.bg-purple-800,html .progress-bar.bg-purple-800,html[data-netbox-color-mode=dark] .badge.bg-purple-800,html[data-netbox-color-mode=dark] .toast.bg-purple-800,html[data-netbox-color-mode=dark] .toast-header.bg-purple-800,html[data-netbox-color-mode=dark] .progress-bar.bg-purple-800,html[data-netbox-color-mode=light] .badge.bg-purple-800,html[data-netbox-color-mode=light] .toast.bg-purple-800,html[data-netbox-color-mode=light] .toast-header.bg-purple-800,html[data-netbox-color-mode=light] .progress-bar.bg-purple-800{color:#fff}}@media print{html .bg-purple-900 button.btn-close,html[data-netbox-color-mode=dark] .bg-purple-900 button.btn-close,html[data-netbox-color-mode=light] .bg-purple-900 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230d0817'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-purple-900,html[data-netbox-color-mode=dark] .btn.btn-ghost-purple-900,html[data-netbox-color-mode=light] .btn.btn-ghost-purple-900{color:#160d27}}@media print{html .btn.btn-ghost-purple-900:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-purple-900:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-purple-900:hover{background-color:#160d271f}}@media print{html .alert.alert-purple-900 a:not(.btn),html .table-purple-900 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-purple-900 a:not(.btn),html[data-netbox-color-mode=dark] .table-purple-900 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-purple-900 a:not(.btn),html[data-netbox-color-mode=light] .table-purple-900 a:not(.btn){font-weight:700;color:#0d0817}}@media print{html .alert.alert-purple-900 .btn:not([class*=btn-outline]),html .table-purple-900 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-purple-900 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-purple-900 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-purple-900 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-purple-900 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-purple-900 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-purple-900 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-purple-900 a:not(.btn){font-weight:700;color:#a29ea9}}@media print{html .badge.bg-purple-900,html .toast.bg-purple-900,html .toast-header.bg-purple-900,html .progress-bar.bg-purple-900,html[data-netbox-color-mode=dark] .badge.bg-purple-900,html[data-netbox-color-mode=dark] .toast.bg-purple-900,html[data-netbox-color-mode=dark] .toast-header.bg-purple-900,html[data-netbox-color-mode=dark] .progress-bar.bg-purple-900,html[data-netbox-color-mode=light] .badge.bg-purple-900,html[data-netbox-color-mode=light] .toast.bg-purple-900,html[data-netbox-color-mode=light] .toast-header.bg-purple-900,html[data-netbox-color-mode=light] .progress-bar.bg-purple-900{color:#fff}}@media print{html .bg-pink-100 button.btn-close,html[data-netbox-color-mode=dark] .bg-pink-100 button.btn-close,html[data-netbox-color-mode=light] .bg-pink-100 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%2363565c'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-pink-100,html[data-netbox-color-mode=dark] .btn.btn-ghost-pink-100,html[data-netbox-color-mode=light] .btn.btn-ghost-pink-100{color:#f7d6e6}}@media print{html .btn.btn-ghost-pink-100:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-pink-100:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-pink-100:hover{background-color:#f7d6e61f}}@media print{html .alert.alert-pink-100 a:not(.btn),html .table-pink-100 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-pink-100 a:not(.btn),html[data-netbox-color-mode=dark] .table-pink-100 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-pink-100 a:not(.btn),html[data-netbox-color-mode=light] .table-pink-100 a:not(.btn){font-weight:700;color:#63565c}}@media print{html .alert.alert-pink-100 .btn:not([class*=btn-outline]),html .table-pink-100 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-pink-100 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-pink-100 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-pink-100 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-pink-100 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-pink-100 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-pink-100 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-pink-100 a:not(.btn){font-weight:700;color:#63565c}}@media print{html .badge.bg-pink-100,html .toast.bg-pink-100,html .toast-header.bg-pink-100,html .progress-bar.bg-pink-100,html[data-netbox-color-mode=dark] .badge.bg-pink-100,html[data-netbox-color-mode=dark] .toast.bg-pink-100,html[data-netbox-color-mode=dark] .toast-header.bg-pink-100,html[data-netbox-color-mode=dark] .progress-bar.bg-pink-100,html[data-netbox-color-mode=light] .badge.bg-pink-100,html[data-netbox-color-mode=light] .toast.bg-pink-100,html[data-netbox-color-mode=light] .toast-header.bg-pink-100,html[data-netbox-color-mode=light] .progress-bar.bg-pink-100{color:#000}}@media print{html .bg-pink-200 button.btn-close,html[data-netbox-color-mode=dark] .bg-pink-200 button.btn-close,html[data-netbox-color-mode=light] .bg-pink-200 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23604552'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-pink-200,html[data-netbox-color-mode=dark] .btn.btn-ghost-pink-200,html[data-netbox-color-mode=light] .btn.btn-ghost-pink-200{color:#efadce}}@media print{html .btn.btn-ghost-pink-200:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-pink-200:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-pink-200:hover{background-color:#efadce1f}}@media print{html .alert.alert-pink-200 a:not(.btn),html .table-pink-200 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-pink-200 a:not(.btn),html[data-netbox-color-mode=dark] .table-pink-200 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-pink-200 a:not(.btn),html[data-netbox-color-mode=light] .table-pink-200 a:not(.btn){font-weight:700;color:#604552}}@media print{html .alert.alert-pink-200 .btn:not([class*=btn-outline]),html .table-pink-200 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-pink-200 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-pink-200 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-pink-200 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-pink-200 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-pink-200 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-pink-200 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-pink-200 a:not(.btn){font-weight:700;color:#604552}}@media print{html .badge.bg-pink-200,html .toast.bg-pink-200,html .toast-header.bg-pink-200,html .progress-bar.bg-pink-200,html[data-netbox-color-mode=dark] .badge.bg-pink-200,html[data-netbox-color-mode=dark] .toast.bg-pink-200,html[data-netbox-color-mode=dark] .toast-header.bg-pink-200,html[data-netbox-color-mode=dark] .progress-bar.bg-pink-200,html[data-netbox-color-mode=light] .badge.bg-pink-200,html[data-netbox-color-mode=light] .toast.bg-pink-200,html[data-netbox-color-mode=light] .toast-header.bg-pink-200,html[data-netbox-color-mode=light] .progress-bar.bg-pink-200{color:#000}}@media print{html .bg-pink-300 button.btn-close,html[data-netbox-color-mode=dark] .bg-pink-300 button.btn-close,html[data-netbox-color-mode=light] .bg-pink-300 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%238a506d'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-pink-300,html[data-netbox-color-mode=dark] .btn.btn-ghost-pink-300,html[data-netbox-color-mode=light] .btn.btn-ghost-pink-300{color:#e685b5}}@media print{html .btn.btn-ghost-pink-300:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-pink-300:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-pink-300:hover{background-color:#e685b51f}}@media print{html .alert.alert-pink-300 a:not(.btn),html .table-pink-300 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-pink-300 a:not(.btn),html[data-netbox-color-mode=dark] .table-pink-300 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-pink-300 a:not(.btn),html[data-netbox-color-mode=light] .table-pink-300 a:not(.btn){font-weight:700;color:#8a506d}}@media print{html .alert.alert-pink-300 .btn:not([class*=btn-outline]),html .table-pink-300 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-pink-300 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-pink-300 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-pink-300 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-pink-300 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-pink-300 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-pink-300 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-pink-300 a:not(.btn){font-weight:700;color:#5c3548}}@media print{html .badge.bg-pink-300,html .toast.bg-pink-300,html .toast-header.bg-pink-300,html .progress-bar.bg-pink-300,html[data-netbox-color-mode=dark] .badge.bg-pink-300,html[data-netbox-color-mode=dark] .toast.bg-pink-300,html[data-netbox-color-mode=dark] .toast-header.bg-pink-300,html[data-netbox-color-mode=dark] .progress-bar.bg-pink-300,html[data-netbox-color-mode=light] .badge.bg-pink-300,html[data-netbox-color-mode=light] .toast.bg-pink-300,html[data-netbox-color-mode=light] .toast-header.bg-pink-300,html[data-netbox-color-mode=light] .progress-bar.bg-pink-300{color:#000}}@media print{html .bg-pink-400 button.btn-close,html[data-netbox-color-mode=dark] .bg-pink-400 button.btn-close,html[data-netbox-color-mode=light] .bg-pink-400 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%2385375e'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-pink-400,html[data-netbox-color-mode=dark] .btn.btn-ghost-pink-400,html[data-netbox-color-mode=light] .btn.btn-ghost-pink-400{color:#de5c9d}}@media print{html .btn.btn-ghost-pink-400:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-pink-400:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-pink-400:hover{background-color:#de5c9d1f}}@media print{html .alert.alert-pink-400 a:not(.btn),html .table-pink-400 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-pink-400 a:not(.btn),html[data-netbox-color-mode=dark] .table-pink-400 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-pink-400 a:not(.btn),html[data-netbox-color-mode=light] .table-pink-400 a:not(.btn){font-weight:700;color:#85375e}}@media print{html .alert.alert-pink-400 .btn:not([class*=btn-outline]),html .table-pink-400 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-pink-400 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-pink-400 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-pink-400 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-pink-400 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-pink-400 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-pink-400 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-pink-400 a:not(.btn){font-weight:700;color:#59253f}}@media print{html .badge.bg-pink-400,html .toast.bg-pink-400,html .toast-header.bg-pink-400,html .progress-bar.bg-pink-400,html[data-netbox-color-mode=dark] .badge.bg-pink-400,html[data-netbox-color-mode=dark] .toast.bg-pink-400,html[data-netbox-color-mode=dark] .toast-header.bg-pink-400,html[data-netbox-color-mode=dark] .progress-bar.bg-pink-400,html[data-netbox-color-mode=light] .badge.bg-pink-400,html[data-netbox-color-mode=light] .toast.bg-pink-400,html[data-netbox-color-mode=light] .toast-header.bg-pink-400,html[data-netbox-color-mode=light] .progress-bar.bg-pink-400{color:#000}}@media print{html .bg-pink-500 button.btn-close,html[data-netbox-color-mode=dark] .bg-pink-500 button.btn-close,html[data-netbox-color-mode=light] .bg-pink-500 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23801f4f'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-pink-500,html[data-netbox-color-mode=dark] .btn.btn-ghost-pink-500,html[data-netbox-color-mode=light] .btn.btn-ghost-pink-500{color:#d63384}}@media print{html .btn.btn-ghost-pink-500:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-pink-500:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-pink-500:hover{background-color:#d633841f}}@media print{html .alert.alert-pink-500 a:not(.btn),html .table-pink-500 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-pink-500 a:not(.btn),html[data-netbox-color-mode=dark] .table-pink-500 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-pink-500 a:not(.btn),html[data-netbox-color-mode=light] .table-pink-500 a:not(.btn){font-weight:700;color:#801f4f}}@media print{html .alert.alert-pink-500 .btn:not([class*=btn-outline]),html .table-pink-500 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-pink-500 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-pink-500 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-pink-500 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-pink-500 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-pink-500 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-pink-500 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-pink-500 a:not(.btn){font-weight:700;color:#efadce}}@media print{html .badge.bg-pink-500,html .toast.bg-pink-500,html .toast-header.bg-pink-500,html .progress-bar.bg-pink-500,html[data-netbox-color-mode=dark] .badge.bg-pink-500,html[data-netbox-color-mode=dark] .toast.bg-pink-500,html[data-netbox-color-mode=dark] .toast-header.bg-pink-500,html[data-netbox-color-mode=dark] .progress-bar.bg-pink-500,html[data-netbox-color-mode=light] .badge.bg-pink-500,html[data-netbox-color-mode=light] .toast.bg-pink-500,html[data-netbox-color-mode=light] .toast-header.bg-pink-500,html[data-netbox-color-mode=light] .progress-bar.bg-pink-500{color:#fff}}@media print{html .bg-pink-600 button.btn-close,html[data-netbox-color-mode=dark] .bg-pink-600 button.btn-close,html[data-netbox-color-mode=light] .bg-pink-600 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23671940'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-pink-600,html[data-netbox-color-mode=dark] .btn.btn-ghost-pink-600,html[data-netbox-color-mode=light] .btn.btn-ghost-pink-600{color:#ab296a}}@media print{html .btn.btn-ghost-pink-600:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-pink-600:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-pink-600:hover{background-color:#ab296a1f}}@media print{html .alert.alert-pink-600 a:not(.btn),html .table-pink-600 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-pink-600 a:not(.btn),html[data-netbox-color-mode=dark] .table-pink-600 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-pink-600 a:not(.btn),html[data-netbox-color-mode=light] .table-pink-600 a:not(.btn){font-weight:700;color:#671940}}@media print{html .alert.alert-pink-600 .btn:not([class*=btn-outline]),html .table-pink-600 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-pink-600 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-pink-600 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-pink-600 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-pink-600 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-pink-600 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-pink-600 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-pink-600 a:not(.btn){font-weight:700;color:#dda9c3}}@media print{html .badge.bg-pink-600,html .toast.bg-pink-600,html .toast-header.bg-pink-600,html .progress-bar.bg-pink-600,html[data-netbox-color-mode=dark] .badge.bg-pink-600,html[data-netbox-color-mode=dark] .toast.bg-pink-600,html[data-netbox-color-mode=dark] .toast-header.bg-pink-600,html[data-netbox-color-mode=dark] .progress-bar.bg-pink-600,html[data-netbox-color-mode=light] .badge.bg-pink-600,html[data-netbox-color-mode=light] .toast.bg-pink-600,html[data-netbox-color-mode=light] .toast-header.bg-pink-600,html[data-netbox-color-mode=light] .progress-bar.bg-pink-600{color:#fff}}@media print{html .bg-pink-700 button.btn-close,html[data-netbox-color-mode=dark] .bg-pink-700 button.btn-close,html[data-netbox-color-mode=light] .bg-pink-700 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%234d132f'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-pink-700,html[data-netbox-color-mode=dark] .btn.btn-ghost-pink-700,html[data-netbox-color-mode=light] .btn.btn-ghost-pink-700{color:#801f4f}}@media print{html .btn.btn-ghost-pink-700:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-pink-700:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-pink-700:hover{background-color:#801f4f1f}}@media print{html .alert.alert-pink-700 a:not(.btn),html .table-pink-700 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-pink-700 a:not(.btn),html[data-netbox-color-mode=dark] .table-pink-700 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-pink-700 a:not(.btn),html[data-netbox-color-mode=light] .table-pink-700 a:not(.btn){font-weight:700;color:#4d132f}}@media print{html .alert.alert-pink-700 .btn:not([class*=btn-outline]),html .table-pink-700 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-pink-700 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-pink-700 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-pink-700 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-pink-700 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-pink-700 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-pink-700 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-pink-700 a:not(.btn){font-weight:700;color:#cca5b9}}@media print{html .badge.bg-pink-700,html .toast.bg-pink-700,html .toast-header.bg-pink-700,html .progress-bar.bg-pink-700,html[data-netbox-color-mode=dark] .badge.bg-pink-700,html[data-netbox-color-mode=dark] .toast.bg-pink-700,html[data-netbox-color-mode=dark] .toast-header.bg-pink-700,html[data-netbox-color-mode=dark] .progress-bar.bg-pink-700,html[data-netbox-color-mode=light] .badge.bg-pink-700,html[data-netbox-color-mode=light] .toast.bg-pink-700,html[data-netbox-color-mode=light] .toast-header.bg-pink-700,html[data-netbox-color-mode=light] .progress-bar.bg-pink-700{color:#fff}}@media print{html .bg-pink-800 button.btn-close,html[data-netbox-color-mode=dark] .bg-pink-800 button.btn-close,html[data-netbox-color-mode=light] .bg-pink-800 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23340c20'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-pink-800,html[data-netbox-color-mode=dark] .btn.btn-ghost-pink-800,html[data-netbox-color-mode=light] .btn.btn-ghost-pink-800{color:#561435}}@media print{html .btn.btn-ghost-pink-800:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-pink-800:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-pink-800:hover{background-color:#5614351f}}@media print{html .alert.alert-pink-800 a:not(.btn),html .table-pink-800 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-pink-800 a:not(.btn),html[data-netbox-color-mode=dark] .table-pink-800 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-pink-800 a:not(.btn),html[data-netbox-color-mode=light] .table-pink-800 a:not(.btn){font-weight:700;color:#340c20}}@media print{html .alert.alert-pink-800 .btn:not([class*=btn-outline]),html .table-pink-800 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-pink-800 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-pink-800 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-pink-800 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-pink-800 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-pink-800 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-pink-800 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-pink-800 a:not(.btn){font-weight:700;color:#bba1ae}}@media print{html .badge.bg-pink-800,html .toast.bg-pink-800,html .toast-header.bg-pink-800,html .progress-bar.bg-pink-800,html[data-netbox-color-mode=dark] .badge.bg-pink-800,html[data-netbox-color-mode=dark] .toast.bg-pink-800,html[data-netbox-color-mode=dark] .toast-header.bg-pink-800,html[data-netbox-color-mode=dark] .progress-bar.bg-pink-800,html[data-netbox-color-mode=light] .badge.bg-pink-800,html[data-netbox-color-mode=light] .toast.bg-pink-800,html[data-netbox-color-mode=light] .toast-header.bg-pink-800,html[data-netbox-color-mode=light] .progress-bar.bg-pink-800{color:#fff}}@media print{html .bg-pink-900 button.btn-close,html[data-netbox-color-mode=dark] .bg-pink-900 button.btn-close,html[data-netbox-color-mode=light] .bg-pink-900 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%231a0610'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-pink-900,html[data-netbox-color-mode=dark] .btn.btn-ghost-pink-900,html[data-netbox-color-mode=light] .btn.btn-ghost-pink-900{color:#2b0a1a}}@media print{html .btn.btn-ghost-pink-900:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-pink-900:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-pink-900:hover{background-color:#2b0a1a1f}}@media print{html .alert.alert-pink-900 a:not(.btn),html .table-pink-900 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-pink-900 a:not(.btn),html[data-netbox-color-mode=dark] .table-pink-900 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-pink-900 a:not(.btn),html[data-netbox-color-mode=light] .table-pink-900 a:not(.btn){font-weight:700;color:#1a0610}}@media print{html .alert.alert-pink-900 .btn:not([class*=btn-outline]),html .table-pink-900 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-pink-900 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-pink-900 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-pink-900 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-pink-900 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-pink-900 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-pink-900 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-pink-900 a:not(.btn){font-weight:700;color:#aa9da3}}@media print{html .badge.bg-pink-900,html .toast.bg-pink-900,html .toast-header.bg-pink-900,html .progress-bar.bg-pink-900,html[data-netbox-color-mode=dark] .badge.bg-pink-900,html[data-netbox-color-mode=dark] .toast.bg-pink-900,html[data-netbox-color-mode=dark] .toast-header.bg-pink-900,html[data-netbox-color-mode=dark] .progress-bar.bg-pink-900,html[data-netbox-color-mode=light] .badge.bg-pink-900,html[data-netbox-color-mode=light] .toast.bg-pink-900,html[data-netbox-color-mode=light] .toast-header.bg-pink-900,html[data-netbox-color-mode=light] .progress-bar.bg-pink-900{color:#fff}}@media print{html table td>.progress,html[data-netbox-color-mode=dark] table td>.progress,html[data-netbox-color-mode=light] table td>.progress{min-width:6rem}}@media print{html .small .form-control,html[data-netbox-color-mode=dark] .small .form-control,html[data-netbox-color-mode=light] .small .form-control{font-size:.875rem}}@media print{html :not(.card-body)>.col:not(:last-child):not(:only-child),html[data-netbox-color-mode=dark] :not(.card-body)>.col:not(:last-child):not(:only-child),html[data-netbox-color-mode=light] :not(.card-body)>.col:not(:last-child):not(:only-child){margin-bottom:1rem}}@media print{html .nav-mobile,html[data-netbox-color-mode=dark] .nav-mobile,html[data-netbox-color-mode=light] .nav-mobile{display:none;flex-direction:column;align-items:center;justify-content:space-between;width:100%}}@media print and (max-width: 991.98px){html .nav-mobile,html[data-netbox-color-mode=dark] .nav-mobile,html[data-netbox-color-mode=light] .nav-mobile{display:flex}}@media print{html .nav-mobile .nav-mobile-top,html[data-netbox-color-mode=dark] .nav-mobile .nav-mobile-top,html[data-netbox-color-mode=light] .nav-mobile .nav-mobile-top{display:flex;align-items:center;justify-content:space-between;width:100%}}@media print{html .card>.table.table-flush,html[data-netbox-color-mode=dark] .card>.table.table-flush,html[data-netbox-color-mode=light] .card>.table.table-flush{margin-bottom:0;overflow:hidden;border-bottom-right-radius:.375rem;border-bottom-left-radius:.375rem}}@media print{html .card>.table.table-flush thead th[scope=col],html[data-netbox-color-mode=dark] .card>.table.table-flush thead th[scope=col],html[data-netbox-color-mode=light] .card>.table.table-flush thead th[scope=col]{padding-top:1rem;padding-bottom:1rem;text-transform:uppercase;vertical-align:middle;background-color:#f8f9fa;border-top:1px solid rgba(0,0,0,.125);border-bottom-color:#00000020}}@media print{html .card>.table.table-flush th,html .card>.table.table-flush td,html[data-netbox-color-mode=dark] .card>.table.table-flush th,html[data-netbox-color-mode=dark] .card>.table.table-flush td,html[data-netbox-color-mode=light] .card>.table.table-flush th,html[data-netbox-color-mode=light] .card>.table.table-flush td{padding-right:1.5rem!important;padding-left:1.5rem!important;border-right:0;border-left:0}}@media print{html .card>.table.table-flush tr[class],html[data-netbox-color-mode=dark] .card>.table.table-flush tr[class],html[data-netbox-color-mode=light] .card>.table.table-flush tr[class]{border-color:#00000020!important}}@media print{html .card>.table.table-flush tr[class]:last-of-type,html[data-netbox-color-mode=dark] .card>.table.table-flush tr[class]:last-of-type,html[data-netbox-color-mode=light] .card>.table.table-flush tr[class]:last-of-type{border-bottom-color:transparent!important;border-bottom-right-radius:.375rem;border-bottom-left-radius:.375rem}}@media print{html .header-alert-container,html[data-netbox-color-mode=dark] .header-alert-container,html[data-netbox-color-mode=light] .header-alert-container{display:flex;align-items:center;justify-content:center;padding:0 1rem}}@media print{html .header-alert-container .alert,html[data-netbox-color-mode=dark] .header-alert-container .alert,html[data-netbox-color-mode=light] .header-alert-container .alert{width:100%}}@media print and (min-width: 768px){html .header-alert-container .alert,html[data-netbox-color-mode=dark] .header-alert-container .alert,html[data-netbox-color-mode=light] .header-alert-container .alert{max-width:75%}}@media print and (min-width: 992px){html .header-alert-container .alert,html[data-netbox-color-mode=dark] .header-alert-container .alert,html[data-netbox-color-mode=light] .header-alert-container .alert{max-width:50%}}@media print{html span.profile-button .dropdown-menu,html[data-netbox-color-mode=dark] span.profile-button .dropdown-menu,html[data-netbox-color-mode=light] span.profile-button .dropdown-menu{right:0;left:auto;display:block!important;margin-top:.5rem;box-shadow:0 .5rem 1rem #00000026;transition:opacity .2s ease-in-out}}@media print{html span.profile-button .dropdown-menu:not(.show),html[data-netbox-color-mode=dark] span.profile-button .dropdown-menu:not(.show),html[data-netbox-color-mode=light] span.profile-button .dropdown-menu:not(.show){pointer-events:none;opacity:0}}@media print{html span.profile-button .dropdown-menu.show,html[data-netbox-color-mode=dark] span.profile-button .dropdown-menu.show,html[data-netbox-color-mode=light] span.profile-button .dropdown-menu.show{pointer-events:auto;opacity:1}}@media print{html div#advanced-search-content div.card div.card-body div.col:not(:last-child),html[data-netbox-color-mode=dark] div#advanced-search-content div.card div.card-body div.col:not(:last-child),html[data-netbox-color-mode=light] div#advanced-search-content div.card div.card-body div.col:not(:last-child){margin-right:1rem}}@media print{html table td a,html[data-netbox-color-mode=dark] table td a,html[data-netbox-color-mode=light] table td a{text-decoration:none}}@media print{html table td a:hover,html[data-netbox-color-mode=dark] table td a:hover,html[data-netbox-color-mode=light] table td a:hover{text-decoration:underline}}@media print{html table td .dropdown,html[data-netbox-color-mode=dark] table td .dropdown,html[data-netbox-color-mode=light] table td .dropdown{position:static}}@media print{html table th a,html table th a:hover,html[data-netbox-color-mode=dark] table th a,html[data-netbox-color-mode=dark] table th a:hover,html[data-netbox-color-mode=light] table th a,html[data-netbox-color-mode=light] table th a:hover{color:#212529;text-decoration:none}}@media print{html table td,html table th,html[data-netbox-color-mode=dark] table td,html[data-netbox-color-mode=dark] table th,html[data-netbox-color-mode=light] table td,html[data-netbox-color-mode=light] table th{font-size:.875rem;line-height:1.25;vertical-align:middle}}@media print{html table td.min-width,html table th.min-width,html[data-netbox-color-mode=dark] table td.min-width,html[data-netbox-color-mode=dark] table th.min-width,html[data-netbox-color-mode=light] table td.min-width,html[data-netbox-color-mode=light] table th.min-width{width:1%}}@media print{html table td .form-check-input,html table th .form-check-input,html[data-netbox-color-mode=dark] table td .form-check-input,html[data-netbox-color-mode=dark] table th .form-check-input,html[data-netbox-color-mode=light] table td .form-check-input,html[data-netbox-color-mode=light] table th .form-check-input{margin-top:.125em;font-size:1rem}}@media print{html table td .btn-sm,html table td .btn-group-sm>.btn,html table th .btn-sm,html table th .btn-group-sm>.btn,html[data-netbox-color-mode=dark] table td .btn-sm,html[data-netbox-color-mode=dark] table td html[data-netbox-color-mode=light] .btn-group-sm>.btn,html[data-netbox-color-mode=dark] table th .btn-sm,html[data-netbox-color-mode=dark] table th html[data-netbox-color-mode=light] .btn-group-sm>.btn,html[data-netbox-color-mode=light] table td .btn-sm,html[data-netbox-color-mode=light] table td html[data-netbox-color-mode=dark] .btn-group-sm>.btn,html[data-netbox-color-mode=light] table th .btn-sm,html[data-netbox-color-mode=light] table th html[data-netbox-color-mode=dark] .btn-group-sm>.btn{line-height:1}}@media print{html table td p,html table th p,html[data-netbox-color-mode=dark] table td p,html[data-netbox-color-mode=dark] table th p,html[data-netbox-color-mode=light] table td p,html[data-netbox-color-mode=light] table th p{margin-bottom:0}}@media print{html table.table>:not(caption)>*>*,html[data-netbox-color-mode=dark] table.table>:not(caption)>*>*,html[data-netbox-color-mode=light] table.table>:not(caption)>*>*{padding-right:.25rem!important;padding-left:.25rem!important}}@media print{html table.object-list th,html[data-netbox-color-mode=dark] table.object-list th,html[data-netbox-color-mode=light] table.object-list th{font-size:.75rem;line-height:1;vertical-align:bottom}}@media print{html table.attr-table th,html[data-netbox-color-mode=dark] table.attr-table th,html[data-netbox-color-mode=light] table.attr-table th{font-weight:normal;width:25%}}@media print{html div.title-container,html[data-netbox-color-mode=dark] div.title-container,html[data-netbox-color-mode=light] div.title-container{display:flex;flex-direction:column;flex-wrap:wrap;justify-content:space-between}}@media print and (min-width: 992px){html div.title-container,html[data-netbox-color-mode=dark] div.title-container,html[data-netbox-color-mode=light] div.title-container{flex-direction:row}}@media print{html div.title-container #content-title,html[data-netbox-color-mode=dark] div.title-container #content-title,html[data-netbox-color-mode=light] div.title-container #content-title{display:flex;flex:1 0;flex-direction:column;padding-bottom:.5rem}}@media print{html .controls,html[data-netbox-color-mode=dark] .controls,html[data-netbox-color-mode=light] .controls{margin-bottom:.5rem}}@media print{html .controls,html[data-netbox-color-mode=dark] .controls,html[data-netbox-color-mode=light] .controls{display:none!important}}@media print{html .controls .control-group,html[data-netbox-color-mode=dark] .controls .control-group,html[data-netbox-color-mode=light] .controls .control-group{display:flex;flex-wrap:wrap;justify-content:flex-start}}@media print and (min-width: 992px){html .controls .control-group,html[data-netbox-color-mode=dark] .controls .control-group,html[data-netbox-color-mode=light] .controls .control-group{justify-content:flex-end}}@media print{html .controls .control-group>*,html[data-netbox-color-mode=dark] .controls .control-group>*,html[data-netbox-color-mode=light] .controls .control-group>*{margin:.25rem}}@media print{html .controls .control-group>*:first-child,html[data-netbox-color-mode=dark] .controls .control-group>*:first-child,html[data-netbox-color-mode=light] .controls .control-group>*:first-child{margin-left:0}}@media print{html .controls .control-group>*:last-child,html[data-netbox-color-mode=dark] .controls .control-group>*:last-child,html[data-netbox-color-mode=light] .controls .control-group>*:last-child{margin-right:0}}@media print{html .object-subtitle,html[data-netbox-color-mode=dark] .object-subtitle,html[data-netbox-color-mode=light] .object-subtitle{display:block;font-size:.875rem;color:#6c757d}}@media print and (min-width: 768px){html .object-subtitle,html[data-netbox-color-mode=dark] .object-subtitle,html[data-netbox-color-mode=light] .object-subtitle{display:inline-block}}@media print{html .object-subtitle>span,html[data-netbox-color-mode=dark] .object-subtitle>span,html[data-netbox-color-mode=light] .object-subtitle>span{display:block}}@media print{html .object-subtitle>span.separator,html[data-netbox-color-mode=dark] .object-subtitle>span.separator,html[data-netbox-color-mode=light] .object-subtitle>span.separator{display:none}}@media print and (min-width: 768px){html .object-subtitle>span,html .object-subtitle>span.separator,html[data-netbox-color-mode=dark] .object-subtitle>span,html[data-netbox-color-mode=dark] .object-subtitle>span.separator,html[data-netbox-color-mode=light] .object-subtitle>span,html[data-netbox-color-mode=light] .object-subtitle>span.separator{display:inline-block}}@media print{html nav.search,html[data-netbox-color-mode=dark] nav.search,html[data-netbox-color-mode=light] nav.search{z-index:999;justify-content:center;background-color:var(--nbx-body-bg)}}@media print{html nav.search .search-container,html[data-netbox-color-mode=dark] nav.search .search-container,html[data-netbox-color-mode=light] nav.search .search-container{display:flex;width:100%}}@media print and (max-width: 991.98px){html nav.search .search-container,html[data-netbox-color-mode=dark] nav.search .search-container,html[data-netbox-color-mode=light] nav.search .search-container{display:none}}@media print{html nav.search .input-group .search-obj-selected,html[data-netbox-color-mode=dark] nav.search .input-group .search-obj-selected,html[data-netbox-color-mode=light] nav.search .input-group .search-obj-selected{border-color:#e9ecef}}@media print{html nav.search .input-group .dropdown-toggle,html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle,html[data-netbox-color-mode=light] nav.search .input-group .dropdown-toggle{color:#000;border-color:#e9ecef;margin-left:0;font-weight:400;line-height:1.5;color:#212529;background-color:#e9ecef;border:1px solid #e9ecef;border-radius:.375rem;border-left:1px solid var(--nbx-search-filter-border-left-color)}}@media print{html nav.search .input-group .dropdown-toggle:hover,html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle:hover,html[data-netbox-color-mode=light] nav.search .input-group .dropdown-toggle:hover{color:#000;background-color:#eceff1;border-color:#ebeef1}}@media print{.btn-check:focus+html nav.search .input-group .dropdown-toggle,html nav.search .input-group .dropdown-toggle:focus,.btn-check:focus+html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle,html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle:focus,.btn-check:focus+html[data-netbox-color-mode=light] nav.search .input-group .dropdown-toggle,html[data-netbox-color-mode=light] nav.search .input-group .dropdown-toggle:focus{color:#000;background-color:#eceff1;border-color:#ebeef1;box-shadow:0 0 0 .25rem #c6c9cb80}}@media print{.btn-check:checked+html nav.search .input-group .dropdown-toggle,.btn-check:active+html nav.search .input-group .dropdown-toggle,html nav.search .input-group .dropdown-toggle:active,html nav.search .input-group .dropdown-toggle.active,.show>html nav.search .input-group .dropdown-toggle.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle,.btn-check:active+html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle,html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle:active,html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle.active,.show>html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] nav.search .input-group .dropdown-toggle,.btn-check:active+html[data-netbox-color-mode=light] nav.search .input-group .dropdown-toggle,html[data-netbox-color-mode=light] nav.search .input-group .dropdown-toggle:active,html[data-netbox-color-mode=light] nav.search .input-group .dropdown-toggle.active,.show>html[data-netbox-color-mode=light] nav.search .input-group .dropdown-toggle.dropdown-toggle{color:#000;background-color:#edf0f2;border-color:#ebeef1}}@media print{.btn-check:checked+html nav.search .input-group .dropdown-toggle:focus,.btn-check:active+html nav.search .input-group .dropdown-toggle:focus,html nav.search .input-group .dropdown-toggle:active:focus,html nav.search .input-group .dropdown-toggle.active:focus,.show>html nav.search .input-group .dropdown-toggle.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle:focus,.btn-check:active+html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle:focus,html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle:active:focus,html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle.active:focus,.show>html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] nav.search .input-group .dropdown-toggle:focus,.btn-check:active+html[data-netbox-color-mode=light] nav.search .input-group .dropdown-toggle:focus,html[data-netbox-color-mode=light] nav.search .input-group .dropdown-toggle:active:focus,html[data-netbox-color-mode=light] nav.search .input-group .dropdown-toggle.active:focus,.show>html[data-netbox-color-mode=light] nav.search .input-group .dropdown-toggle.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #c6c9cb80}}@media print{html nav.search .input-group .dropdown-toggle:disabled,html nav.search .input-group .dropdown-toggle.disabled,html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle:disabled,html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle.disabled,html[data-netbox-color-mode=light] nav.search .input-group .dropdown-toggle:disabled,html[data-netbox-color-mode=light] nav.search .input-group .dropdown-toggle.disabled{color:#000;background-color:#e9ecef;border-color:#e9ecef}}@media print{html nav.search .input-group .dropdown-toggle:focus,html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle:focus,html[data-netbox-color-mode=light] nav.search .input-group .dropdown-toggle:focus{box-shadow:unset!important}}@media print{html nav.search .input-group .dropdown-toggle:after,html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle:after,html[data-netbox-color-mode=light] nav.search .input-group .dropdown-toggle:after{display:none}}@media print{html nav.search .input-group .search-obj-selector,html[data-netbox-color-mode=dark] nav.search .input-group .search-obj-selector,html[data-netbox-color-mode=light] nav.search .input-group .search-obj-selector{max-height:70vh;overflow-y:auto}}@media print{html nav.search .input-group .search-obj-selector .dropdown-item,html nav.search .input-group .search-obj-selector .dropdown-header,html[data-netbox-color-mode=dark] nav.search .input-group .search-obj-selector .dropdown-item,html[data-netbox-color-mode=dark] nav.search .input-group .search-obj-selector .dropdown-header,html[data-netbox-color-mode=light] nav.search .input-group .search-obj-selector .dropdown-item,html[data-netbox-color-mode=light] nav.search .input-group .search-obj-selector .dropdown-header{font-size:.875rem}}@media print{html nav.search .input-group .search-obj-selector .dropdown-header,html[data-netbox-color-mode=dark] nav.search .input-group .search-obj-selector .dropdown-header,html[data-netbox-color-mode=light] nav.search .input-group .search-obj-selector .dropdown-header{text-transform:uppercase}}@media print{html main.layout,html[data-netbox-color-mode=dark] main.layout,html[data-netbox-color-mode=light] main.layout{display:flex;flex-wrap:nowrap;height:100vh;height:-webkit-fill-available;max-height:100vh;overflow-x:auto;overflow-y:hidden}}@media print{html main.layout,html[data-netbox-color-mode=dark] main.layout,html[data-netbox-color-mode=light] main.layout{position:static!important;display:block!important;height:100%;overflow-x:visible!important;overflow-y:visible!important}}@media print{html main.login-container,html[data-netbox-color-mode=dark] main.login-container,html[data-netbox-color-mode=light] main.login-container{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;max-width:100vw;height:calc(100vh - 4rem);padding-top:40px;padding-bottom:40px}}@media print{html main.login-container+footer.footer button.color-mode-toggle,html[data-netbox-color-mode=dark] main.login-container+footer.footer button.color-mode-toggle,html[data-netbox-color-mode=light] main.login-container+footer.footer button.color-mode-toggle{color:var(--nbx-color-mode-toggle-color)}}@media print{html .footer,html[data-netbox-color-mode=dark] .footer,html[data-netbox-color-mode=light] .footer{padding:0}}@media print{html .footer .nav-link,html[data-netbox-color-mode=dark] .footer .nav-link,html[data-netbox-color-mode=light] .footer .nav-link{padding:.5rem}}@media print and (max-width: 767.98px){html .footer,html[data-netbox-color-mode=dark] .footer,html[data-netbox-color-mode=light] .footer{margin-bottom:8rem}}@media print{html footer.login-footer,html[data-netbox-color-mode=dark] footer.login-footer,html[data-netbox-color-mode=light] footer.login-footer{height:4rem;margin-top:auto}}@media print{html footer.login-footer .container-fluid,html footer.login-footer .container-sm,html footer.login-footer .container-md,html footer.login-footer .container-lg,html footer.login-footer .container-xl,html footer.login-footer .container-xxl,html[data-netbox-color-mode=dark] footer.login-footer .container-fluid,html[data-netbox-color-mode=light] footer.login-footer .container-fluid{display:flex;justify-content:flex-end;padding:.75rem 1.5rem}}@media print{html h1.accordion-item-title,html .accordion-item-title.h1,html h2.accordion-item-title,html .accordion-item-title.h2,html h3.accordion-item-title,html .accordion-item-title.h3,html h4.accordion-item-title,html .accordion-item-title.h4,html h5.accordion-item-title,html .accordion-item-title.h5,html h6.accordion-item-title,html .accordion-item-title.h6,html[data-netbox-color-mode=dark] h1.accordion-item-title,html[data-netbox-color-mode=dark] h2.accordion-item-title,html[data-netbox-color-mode=dark] h3.accordion-item-title,html[data-netbox-color-mode=dark] h4.accordion-item-title,html[data-netbox-color-mode=dark] h5.accordion-item-title,html[data-netbox-color-mode=dark] h6.accordion-item-title,html[data-netbox-color-mode=light] h1.accordion-item-title,html[data-netbox-color-mode=light] h2.accordion-item-title,html[data-netbox-color-mode=light] h3.accordion-item-title,html[data-netbox-color-mode=light] h4.accordion-item-title,html[data-netbox-color-mode=light] h5.accordion-item-title,html[data-netbox-color-mode=light] h6.accordion-item-title{padding:.25rem .5rem;font-size:.875rem;font-weight:700;color:var(--nbx-sidebar-title-color);text-transform:uppercase}}@media print{html .form-login,html[data-netbox-color-mode=dark] .form-login,html[data-netbox-color-mode=light] .form-login{width:100%;max-width:330px;padding:15px}}@media print{html .form-login input:focus,html[data-netbox-color-mode=dark] .form-login input:focus,html[data-netbox-color-mode=light] .form-login input:focus{z-index:1}}@media print{html .form-login input[type=text],html[data-netbox-color-mode=dark] .form-login input[type=text],html[data-netbox-color-mode=light] .form-login input[type=text]{margin-bottom:-1px;border-bottom-right-radius:0;border-bottom-left-radius:0}}@media print{html .form-login input[type=password],html[data-netbox-color-mode=dark] .form-login input[type=password],html[data-netbox-color-mode=light] .form-login input[type=password]{margin-bottom:10px;border-top-left-radius:0;border-top-right-radius:0}}@media print{html .form-login .form-control,html[data-netbox-color-mode=dark] .form-login .form-control,html[data-netbox-color-mode=light] .form-login .form-control{position:relative;box-sizing:border-box;height:auto;padding:10px;font-size:16px}}@media print{html .navbar-brand,html[data-netbox-color-mode=dark] .navbar-brand,html[data-netbox-color-mode=light] .navbar-brand{padding-top:.75rem;padding-bottom:.75rem;font-size:1rem}}@media print{html nav.nav.nav-pills .nav-item.nav-link,html[data-netbox-color-mode=dark] nav.nav.nav-pills .nav-item.nav-link,html[data-netbox-color-mode=light] nav.nav.nav-pills .nav-item.nav-link{padding:.25rem .5rem;font-size:.875rem;border-radius:.375rem}}@media print{html nav.nav.nav-pills .nav-item.nav-link:hover,html[data-netbox-color-mode=dark] nav.nav.nav-pills .nav-item.nav-link:hover,html[data-netbox-color-mode=light] nav.nav.nav-pills .nav-item.nav-link:hover{color:#343a40;background-color:#cfe2ff}}@media print{html div.content-container,html[data-netbox-color-mode=dark] div.content-container,html[data-netbox-color-mode=light] div.content-container{position:relative;display:flex;flex-direction:column;width:calc(100% - 3rem);min-height:100vh;overflow-x:hidden;overflow-y:auto}}@media print{html div.content-container:focus,html div.content-container:focus-visible,html[data-netbox-color-mode=dark] div.content-container:focus,html[data-netbox-color-mode=dark] div.content-container:focus-visible,html[data-netbox-color-mode=light] div.content-container:focus,html[data-netbox-color-mode=light] div.content-container:focus-visible{outline:0}}@media print{html div.content-container div.content,html[data-netbox-color-mode=dark] div.content-container div.content,html[data-netbox-color-mode=light] div.content-container div.content{flex:1}}@media print and (max-width: 991.98px){html div.content-container,html[data-netbox-color-mode=dark] div.content-container,html[data-netbox-color-mode=light] div.content-container{width:100%}}@media print{html div.content-container,html[data-netbox-color-mode=dark] div.content-container,html[data-netbox-color-mode=light] div.content-container{width:100%!important;margin-left:0!important}}@media print and (max-width: 768px){html .sidebar.collapse.show~.content-container>.content,html[data-netbox-color-mode=dark] .sidebar.collapse.show~.content-container>.content,html[data-netbox-color-mode=light] .sidebar.collapse.show~.content-container>.content{position:fixed;top:0;left:0;overflow-y:hidden}}@media print{html .tooltip,html[data-netbox-color-mode=dark] .tooltip,html[data-netbox-color-mode=light] .tooltip{pointer-events:none}}@media print{html span.color-label,html[data-netbox-color-mode=dark] span.color-label,html[data-netbox-color-mode=light] span.color-label{display:block;width:5rem;height:1rem;padding:.35em .65em;border:1px solid #303030;border-radius:.375rem;box-shadow:0 .125rem .25rem #00000013}}@media print{html .btn,html[data-netbox-color-mode=dark] .btn,html[data-netbox-color-mode=light] .btn{white-space:nowrap}}@media print{html .card,html[data-netbox-color-mode=dark] .card,html[data-netbox-color-mode=light] .card{box-shadow:0 .125rem .25rem #00000013}}@media print{html .card .card-header,html[data-netbox-color-mode=dark] .card .card-header,html[data-netbox-color-mode=light] .card .card-header{padding:1rem;color:var(--nbx-body-color);border-bottom:none}}@media print{html .card .card-header+.card-body,html[data-netbox-color-mode=dark] .card .card-header+.card-body,html[data-netbox-color-mode=light] .card .card-header+.card-body{padding-top:0}}@media print{html .card .card-body.small .form-control,html .card .card-body.small .form-select,html[data-netbox-color-mode=dark] .card .card-body.small .form-control,html[data-netbox-color-mode=dark] .card .card-body.small .form-select,html[data-netbox-color-mode=light] .card .card-body.small .form-control,html[data-netbox-color-mode=light] .card .card-body.small .form-select{font-size:.875rem}}@media print{html .card .card-divider,html[data-netbox-color-mode=dark] .card .card-divider,html[data-netbox-color-mode=light] .card .card-divider{width:100%;height:1px;margin:1rem 0;border-top:1px solid rgba(0,0,0,.125);opacity:.25}}@media print{html .card,html[data-netbox-color-mode=dark] .card,html[data-netbox-color-mode=light] .card{box-shadow:unset!important}}@media print{html .form-floating,html[data-netbox-color-mode=dark] .form-floating,html[data-netbox-color-mode=light] .form-floating{position:relative}}@media print{html .form-floating>.input-group>.form-control,html .form-floating>.input-group>.form-select,html[data-netbox-color-mode=dark] .form-floating>.input-group>.form-control,html[data-netbox-color-mode=dark] .form-floating>.input-group>.form-select,html[data-netbox-color-mode=light] .form-floating>.input-group>.form-control,html[data-netbox-color-mode=light] .form-floating>.input-group>.form-select{height:calc(3.5rem + 2px);padding:1rem .75rem}}@media print{html .form-floating>.input-group>label,html[data-netbox-color-mode=dark] .form-floating>.input-group>label,html[data-netbox-color-mode=light] .form-floating>.input-group>label{position:absolute;top:0;left:0;height:100%;padding:1rem .75rem;pointer-events:none;border:1px solid transparent;transform-origin:0 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out}}@media print and (prefers-reduced-motion: reduce){html .form-floating>.input-group>label,html[data-netbox-color-mode=dark] .form-floating>.input-group>label,html[data-netbox-color-mode=light] .form-floating>.input-group>label{transition:none}}@media print{html .form-floating>.input-group>.form-control::placeholder,html[data-netbox-color-mode=dark] .form-floating>.input-group>.form-control::placeholder,html[data-netbox-color-mode=light] .form-floating>.input-group>.form-control::placeholder{color:transparent}}@media print{html .form-floating>.input-group>.form-control:focus,html .form-floating>.input-group>.form-control:not(:placeholder-shown),html[data-netbox-color-mode=dark] .form-floating>.input-group>.form-control:focus,html[data-netbox-color-mode=dark] .form-floating>.input-group>.form-control:not(:placeholder-shown),html[data-netbox-color-mode=light] .form-floating>.input-group>.form-control:focus,html[data-netbox-color-mode=light] .form-floating>.input-group>.form-control:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}}@media print{html .form-floating>.input-group>.form-control:-webkit-autofill,html[data-netbox-color-mode=dark] .form-floating>.input-group>.form-control:-webkit-autofill,html[data-netbox-color-mode=light] .form-floating>.input-group>.form-control:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}}@media print{html .form-floating>.input-group>.form-select,html .form-floating>.choices>.choices__inner,html .form-floating>.ss-main span.placeholder,html .form-floating>.ss-main div.ss-values,html[data-netbox-color-mode=dark] .form-floating>.input-group>.form-select,html[data-netbox-color-mode=dark] .form-floating>.choices>.choices__inner,html[data-netbox-color-mode=dark] .form-floating>.ss-main span.placeholder,html[data-netbox-color-mode=dark] .form-floating>.ss-main div.ss-values,html[data-netbox-color-mode=light] .form-floating>.input-group>.form-select,html[data-netbox-color-mode=light] .form-floating>.choices>.choices__inner,html[data-netbox-color-mode=light] .form-floating>.ss-main span.placeholder,html[data-netbox-color-mode=light] .form-floating>.ss-main div.ss-values{padding-top:1.625rem;padding-bottom:.625rem}}@media print{html .form-floating>.input-group>.form-control:focus~label,html .form-floating>.input-group>.form-control:not(:placeholder-shown)~label,html .form-floating>.input-group>.form-select~label,html .form-floating>.choices~label,html .form-floating>.ss-main~label,html[data-netbox-color-mode=dark] .form-floating>.input-group>.form-control:focus~label,html[data-netbox-color-mode=dark] .form-floating>.input-group>.form-control:not(:placeholder-shown)~label,html[data-netbox-color-mode=dark] .form-floating>.input-group>.form-select~label,html[data-netbox-color-mode=dark] .form-floating>.choices~label,html[data-netbox-color-mode=dark] .form-floating>.ss-main~label,html[data-netbox-color-mode=light] .form-floating>.input-group>.form-control:focus~label,html[data-netbox-color-mode=light] .form-floating>.input-group>.form-control:not(:placeholder-shown)~label,html[data-netbox-color-mode=light] .form-floating>.input-group>.form-select~label,html[data-netbox-color-mode=light] .form-floating>.choices~label,html[data-netbox-color-mode=light] .form-floating>.ss-main~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translate(.15rem);z-index:4}}@media print{html .form-floating>.input-group>.form-control:-webkit-autofill~label,html[data-netbox-color-mode=dark] .form-floating>.input-group>.form-control:-webkit-autofill~label,html[data-netbox-color-mode=light] .form-floating>.input-group>.form-control:-webkit-autofill~label{z-index:4;opacity:.65;transform:scale(.85) translateY(-.5rem) translate(.15rem)}}@media print{html .form-object-edit,html[data-netbox-color-mode=dark] .form-object-edit,html[data-netbox-color-mode=light] .form-object-edit{margin:0 auto;max-width:800px}}@media print{html textarea.form-control[rows="10"],html[data-netbox-color-mode=dark] textarea.form-control[rows="10"],html[data-netbox-color-mode=light] textarea.form-control[rows="10"]{height:18rem}}@media print{html textarea#id_local_context_data,html textarea.markdown,html textarea#id_public_key,html textarea.form-control[name=csv],html textarea.form-control[name=data],html[data-netbox-color-mode=dark] textarea#id_local_context_data,html[data-netbox-color-mode=dark] textarea.markdown,html[data-netbox-color-mode=dark] textarea#id_public_key,html[data-netbox-color-mode=dark] textarea.form-control[name=csv],html[data-netbox-color-mode=dark] textarea.form-control[name=data],html[data-netbox-color-mode=light] textarea#id_local_context_data,html[data-netbox-color-mode=light] textarea.markdown,html[data-netbox-color-mode=light] textarea#id_public_key,html[data-netbox-color-mode=light] textarea.form-control[name=csv],html[data-netbox-color-mode=light] textarea.form-control[name=data]{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}}@media print{html .card:not(:only-of-type),html[data-netbox-color-mode=dark] .card:not(:only-of-type),html[data-netbox-color-mode=light] .card:not(:only-of-type){margin-bottom:1rem}}@media print{html .stat-btn,html[data-netbox-color-mode=dark] .stat-btn,html[data-netbox-color-mode=light] .stat-btn{min-width:3rem}}@media print{html nav.breadcrumb-container,html[data-netbox-color-mode=dark] nav.breadcrumb-container,html[data-netbox-color-mode=light] nav.breadcrumb-container{width:fit-content;padding:.35em .65em;font-size:.875rem}}@media print{html nav.breadcrumb-container ol.breadcrumb,html[data-netbox-color-mode=dark] nav.breadcrumb-container ol.breadcrumb,html[data-netbox-color-mode=light] nav.breadcrumb-container ol.breadcrumb{margin-bottom:0}}@media print{html nav.breadcrumb-container ol.breadcrumb li.breadcrumb-item>a,html[data-netbox-color-mode=dark] nav.breadcrumb-container ol.breadcrumb li.breadcrumb-item>a,html[data-netbox-color-mode=light] nav.breadcrumb-container ol.breadcrumb li.breadcrumb-item>a{text-decoration:none}}@media print{html nav.breadcrumb-container ol.breadcrumb li.breadcrumb-item>a:hover,html[data-netbox-color-mode=dark] nav.breadcrumb-container ol.breadcrumb li.breadcrumb-item>a:hover,html[data-netbox-color-mode=light] nav.breadcrumb-container ol.breadcrumb li.breadcrumb-item>a:hover{text-decoration:underline}}@media print{html div.paginator>form>div.input-group,html[data-netbox-color-mode=dark] div.paginator>form>div.input-group,html[data-netbox-color-mode=light] div.paginator>form>div.input-group{width:fit-content}}@media print{html label.required,html[data-netbox-color-mode=dark] label.required,html[data-netbox-color-mode=light] label.required{font-weight:700}}@media print{html label.required:after,html[data-netbox-color-mode=dark] label.required:after,html[data-netbox-color-mode=light] label.required:after{position:absolute;display:inline-block;margin:0 0 0 2px;font-family:"Material Design Icons";font-size:8px;font-style:normal;font-weight:600;text-decoration:none;content:"\f06c4"}}@media print{html div.bulk-buttons,html[data-netbox-color-mode=dark] div.bulk-buttons,html[data-netbox-color-mode=light] div.bulk-buttons{display:flex;justify-content:space-between;margin:.5rem 0}}@media print{html div.bulk-buttons>div.bulk-button-group,html[data-netbox-color-mode=dark] div.bulk-buttons>div.bulk-button-group,html[data-netbox-color-mode=light] div.bulk-buttons>div.bulk-button-group{display:flex;flex-wrap:wrap;align-items:flex-start}}@media print{html div.bulk-buttons>div.bulk-button-group:first-of-type:not(:last-of-type)>*:first-child,html[data-netbox-color-mode=dark] div.bulk-buttons>div.bulk-button-group:first-of-type:not(:last-of-type)>*:first-child,html[data-netbox-color-mode=light] div.bulk-buttons>div.bulk-button-group:first-of-type:not(:last-of-type)>*:first-child{margin-left:0}}@media print{html div.bulk-buttons>div.bulk-button-group:last-of-type:not(:first-of-type)>*:last-child,html[data-netbox-color-mode=dark] div.bulk-buttons>div.bulk-button-group:last-of-type:not(:first-of-type)>*:last-child,html[data-netbox-color-mode=light] div.bulk-buttons>div.bulk-button-group:last-of-type:not(:first-of-type)>*:last-child{margin-right:0}}@media print{html div.bulk-buttons>div.bulk-button-group>*,html[data-netbox-color-mode=dark] div.bulk-buttons>div.bulk-button-group>*,html[data-netbox-color-mode=light] div.bulk-buttons>div.bulk-button-group>*{margin:.25rem}}@media print{html table tbody tr.primary,html[data-netbox-color-mode=dark] table tbody tr.primary,html[data-netbox-color-mode=light] table tbody tr.primary{background-color:#337ab726;border-color:#adb5bd}}@media print{html table tbody tr.secondary,html[data-netbox-color-mode=dark] table tbody tr.secondary,html[data-netbox-color-mode=light] table tbody tr.secondary{background-color:#6c757d26;border-color:#adb5bd}}@media print{html table tbody tr.success,html[data-netbox-color-mode=dark] table tbody tr.success,html[data-netbox-color-mode=light] table tbody tr.success{background-color:#19875426;border-color:#adb5bd}}@media print{html table tbody tr.info,html[data-netbox-color-mode=dark] table tbody tr.info,html[data-netbox-color-mode=light] table tbody tr.info{background-color:#0dcaf026;border-color:#adb5bd}}@media print{html table tbody tr.warning,html[data-netbox-color-mode=dark] table tbody tr.warning,html[data-netbox-color-mode=light] table tbody tr.warning{background-color:#ffc10726;border-color:#adb5bd}}@media print{html table tbody tr.danger,html[data-netbox-color-mode=dark] table tbody tr.danger,html[data-netbox-color-mode=light] table tbody tr.danger{background-color:#dc354526;border-color:#adb5bd}}@media print{html table tbody tr.light,html[data-netbox-color-mode=dark] table tbody tr.light,html[data-netbox-color-mode=light] table tbody tr.light{background-color:#f8f9fa26;border-color:#adb5bd}}@media print{html table tbody tr.dark,html[data-netbox-color-mode=dark] table tbody tr.dark,html[data-netbox-color-mode=light] table tbody tr.dark{background-color:#21252926;border-color:#adb5bd}}@media print{html table tbody tr.red,html[data-netbox-color-mode=dark] table tbody tr.red,html[data-netbox-color-mode=light] table tbody tr.red{background-color:#dc354526;border-color:#adb5bd}}@media print{html table tbody tr.yellow,html[data-netbox-color-mode=dark] table tbody tr.yellow,html[data-netbox-color-mode=light] table tbody tr.yellow{background-color:#ffc10726;border-color:#adb5bd}}@media print{html table tbody tr.green,html[data-netbox-color-mode=dark] table tbody tr.green,html[data-netbox-color-mode=light] table tbody tr.green{background-color:#19875426;border-color:#adb5bd}}@media print{html table tbody tr.blue,html[data-netbox-color-mode=dark] table tbody tr.blue,html[data-netbox-color-mode=light] table tbody tr.blue{background-color:#0d6efd26;border-color:#adb5bd}}@media print{html table tbody tr.cyan,html[data-netbox-color-mode=dark] table tbody tr.cyan,html[data-netbox-color-mode=light] table tbody tr.cyan{background-color:#0dcaf026;border-color:#adb5bd}}@media print{html table tbody tr.indigo,html[data-netbox-color-mode=dark] table tbody tr.indigo,html[data-netbox-color-mode=light] table tbody tr.indigo{background-color:#6610f226;border-color:#adb5bd}}@media print{html table tbody tr.purple,html[data-netbox-color-mode=dark] table tbody tr.purple,html[data-netbox-color-mode=light] table tbody tr.purple{background-color:#6f42c126;border-color:#adb5bd}}@media print{html table tbody tr.pink,html[data-netbox-color-mode=dark] table tbody tr.pink,html[data-netbox-color-mode=light] table tbody tr.pink{background-color:#d6338426;border-color:#adb5bd}}@media print{html table tbody tr.darker,html[data-netbox-color-mode=dark] table tbody tr.darker,html[data-netbox-color-mode=light] table tbody tr.darker{background-color:#1b1f2226;border-color:#adb5bd}}@media print{html table tbody tr.darkest,html[data-netbox-color-mode=dark] table tbody tr.darkest,html[data-netbox-color-mode=light] table tbody tr.darkest{background-color:#171b1d26;border-color:#adb5bd}}@media print{html table tbody tr.gray,html[data-netbox-color-mode=dark] table tbody tr.gray,html[data-netbox-color-mode=light] table tbody tr.gray{background-color:#ced4da26;border-color:#adb5bd}}@media print{html table tbody tr.gray-100,html[data-netbox-color-mode=dark] table tbody tr.gray-100,html[data-netbox-color-mode=light] table tbody tr.gray-100{background-color:#f8f9fa26;border-color:#adb5bd}}@media print{html table tbody tr.gray-200,html[data-netbox-color-mode=dark] table tbody tr.gray-200,html[data-netbox-color-mode=light] table tbody tr.gray-200{background-color:#e9ecef26;border-color:#adb5bd}}@media print{html table tbody tr.gray-300,html[data-netbox-color-mode=dark] table tbody tr.gray-300,html[data-netbox-color-mode=light] table tbody tr.gray-300{background-color:#dee2e626;border-color:#adb5bd}}@media print{html table tbody tr.gray-400,html[data-netbox-color-mode=dark] table tbody tr.gray-400,html[data-netbox-color-mode=light] table tbody tr.gray-400{background-color:#ced4da26;border-color:#adb5bd}}@media print{html table tbody tr.gray-500,html[data-netbox-color-mode=dark] table tbody tr.gray-500,html[data-netbox-color-mode=light] table tbody tr.gray-500{background-color:#adb5bd26;border-color:#adb5bd}}@media print{html table tbody tr.gray-600,html[data-netbox-color-mode=dark] table tbody tr.gray-600,html[data-netbox-color-mode=light] table tbody tr.gray-600{background-color:#6c757d26;border-color:#adb5bd}}@media print{html table tbody tr.gray-700,html[data-netbox-color-mode=dark] table tbody tr.gray-700,html[data-netbox-color-mode=light] table tbody tr.gray-700{background-color:#49505726;border-color:#adb5bd}}@media print{html table tbody tr.gray-800,html[data-netbox-color-mode=dark] table tbody tr.gray-800,html[data-netbox-color-mode=light] table tbody tr.gray-800{background-color:#343a4026;border-color:#adb5bd}}@media print{html table tbody tr.gray-900,html[data-netbox-color-mode=dark] table tbody tr.gray-900,html[data-netbox-color-mode=light] table tbody tr.gray-900{background-color:#21252926;border-color:#adb5bd}}@media print{html table tbody tr.red-100,html[data-netbox-color-mode=dark] table tbody tr.red-100,html[data-netbox-color-mode=light] table tbody tr.red-100{background-color:#f8d7da26;border-color:#adb5bd}}@media print{html table tbody tr.red-200,html[data-netbox-color-mode=dark] table tbody tr.red-200,html[data-netbox-color-mode=light] table tbody tr.red-200{background-color:#f1aeb526;border-color:#adb5bd}}@media print{html table tbody tr.red-300,html[data-netbox-color-mode=dark] table tbody tr.red-300,html[data-netbox-color-mode=light] table tbody tr.red-300{background-color:#ea868f26;border-color:#adb5bd}}@media print{html table tbody tr.red-400,html[data-netbox-color-mode=dark] table tbody tr.red-400,html[data-netbox-color-mode=light] table tbody tr.red-400{background-color:#e35d6a26;border-color:#adb5bd}}@media print{html table tbody tr.red-500,html[data-netbox-color-mode=dark] table tbody tr.red-500,html[data-netbox-color-mode=light] table tbody tr.red-500{background-color:#dc354526;border-color:#adb5bd}}@media print{html table tbody tr.red-600,html[data-netbox-color-mode=dark] table tbody tr.red-600,html[data-netbox-color-mode=light] table tbody tr.red-600{background-color:#b02a3726;border-color:#adb5bd}}@media print{html table tbody tr.red-700,html[data-netbox-color-mode=dark] table tbody tr.red-700,html[data-netbox-color-mode=light] table tbody tr.red-700{background-color:#84202926;border-color:#adb5bd}}@media print{html table tbody tr.red-800,html[data-netbox-color-mode=dark] table tbody tr.red-800,html[data-netbox-color-mode=light] table tbody tr.red-800{background-color:#58151c26;border-color:#adb5bd}}@media print{html table tbody tr.red-900,html[data-netbox-color-mode=dark] table tbody tr.red-900,html[data-netbox-color-mode=light] table tbody tr.red-900{background-color:#2c0b0e26;border-color:#adb5bd}}@media print{html table tbody tr.yellow-100,html[data-netbox-color-mode=dark] table tbody tr.yellow-100,html[data-netbox-color-mode=light] table tbody tr.yellow-100{background-color:#fff3cd26;border-color:#adb5bd}}@media print{html table tbody tr.yellow-200,html[data-netbox-color-mode=dark] table tbody tr.yellow-200,html[data-netbox-color-mode=light] table tbody tr.yellow-200{background-color:#ffe69c26;border-color:#adb5bd}}@media print{html table tbody tr.yellow-300,html[data-netbox-color-mode=dark] table tbody tr.yellow-300,html[data-netbox-color-mode=light] table tbody tr.yellow-300{background-color:#ffda6a26;border-color:#adb5bd}}@media print{html table tbody tr.yellow-400,html[data-netbox-color-mode=dark] table tbody tr.yellow-400,html[data-netbox-color-mode=light] table tbody tr.yellow-400{background-color:#ffcd3926;border-color:#adb5bd}}@media print{html table tbody tr.yellow-500,html[data-netbox-color-mode=dark] table tbody tr.yellow-500,html[data-netbox-color-mode=light] table tbody tr.yellow-500{background-color:#ffc10726;border-color:#adb5bd}}@media print{html table tbody tr.yellow-600,html[data-netbox-color-mode=dark] table tbody tr.yellow-600,html[data-netbox-color-mode=light] table tbody tr.yellow-600{background-color:#cc9a0626;border-color:#adb5bd}}@media print{html table tbody tr.yellow-700,html[data-netbox-color-mode=dark] table tbody tr.yellow-700,html[data-netbox-color-mode=light] table tbody tr.yellow-700{background-color:#99740426;border-color:#adb5bd}}@media print{html table tbody tr.yellow-800,html[data-netbox-color-mode=dark] table tbody tr.yellow-800,html[data-netbox-color-mode=light] table tbody tr.yellow-800{background-color:#664d0326;border-color:#adb5bd}}@media print{html table tbody tr.yellow-900,html[data-netbox-color-mode=dark] table tbody tr.yellow-900,html[data-netbox-color-mode=light] table tbody tr.yellow-900{background-color:#33270126;border-color:#adb5bd}}@media print{html table tbody tr.green-100,html[data-netbox-color-mode=dark] table tbody tr.green-100,html[data-netbox-color-mode=light] table tbody tr.green-100{background-color:#d1e7dd26;border-color:#adb5bd}}@media print{html table tbody tr.green-200,html[data-netbox-color-mode=dark] table tbody tr.green-200,html[data-netbox-color-mode=light] table tbody tr.green-200{background-color:#a3cfbb26;border-color:#adb5bd}}@media print{html table tbody tr.green-300,html[data-netbox-color-mode=dark] table tbody tr.green-300,html[data-netbox-color-mode=light] table tbody tr.green-300{background-color:#75b79826;border-color:#adb5bd}}@media print{html table tbody tr.green-400,html[data-netbox-color-mode=dark] table tbody tr.green-400,html[data-netbox-color-mode=light] table tbody tr.green-400{background-color:#479f7626;border-color:#adb5bd}}@media print{html table tbody tr.green-500,html[data-netbox-color-mode=dark] table tbody tr.green-500,html[data-netbox-color-mode=light] table tbody tr.green-500{background-color:#19875426;border-color:#adb5bd}}@media print{html table tbody tr.green-600,html[data-netbox-color-mode=dark] table tbody tr.green-600,html[data-netbox-color-mode=light] table tbody tr.green-600{background-color:#146c4326;border-color:#adb5bd}}@media print{html table tbody tr.green-700,html[data-netbox-color-mode=dark] table tbody tr.green-700,html[data-netbox-color-mode=light] table tbody tr.green-700{background-color:#0f513226;border-color:#adb5bd}}@media print{html table tbody tr.green-800,html[data-netbox-color-mode=dark] table tbody tr.green-800,html[data-netbox-color-mode=light] table tbody tr.green-800{background-color:#0a362226;border-color:#adb5bd}}@media print{html table tbody tr.green-900,html[data-netbox-color-mode=dark] table tbody tr.green-900,html[data-netbox-color-mode=light] table tbody tr.green-900{background-color:#051b1126;border-color:#adb5bd}}@media print{html table tbody tr.blue-100,html[data-netbox-color-mode=dark] table tbody tr.blue-100,html[data-netbox-color-mode=light] table tbody tr.blue-100{background-color:#cfe2ff26;border-color:#adb5bd}}@media print{html table tbody tr.blue-200,html[data-netbox-color-mode=dark] table tbody tr.blue-200,html[data-netbox-color-mode=light] table tbody tr.blue-200{background-color:#9ec5fe26;border-color:#adb5bd}}@media print{html table tbody tr.blue-300,html[data-netbox-color-mode=dark] table tbody tr.blue-300,html[data-netbox-color-mode=light] table tbody tr.blue-300{background-color:#6ea8fe26;border-color:#adb5bd}}@media print{html table tbody tr.blue-400,html[data-netbox-color-mode=dark] table tbody tr.blue-400,html[data-netbox-color-mode=light] table tbody tr.blue-400{background-color:#3d8bfd26;border-color:#adb5bd}}@media print{html table tbody tr.blue-500,html[data-netbox-color-mode=dark] table tbody tr.blue-500,html[data-netbox-color-mode=light] table tbody tr.blue-500{background-color:#0d6efd26;border-color:#adb5bd}}@media print{html table tbody tr.blue-600,html[data-netbox-color-mode=dark] table tbody tr.blue-600,html[data-netbox-color-mode=light] table tbody tr.blue-600{background-color:#0a58ca26;border-color:#adb5bd}}@media print{html table tbody tr.blue-700,html[data-netbox-color-mode=dark] table tbody tr.blue-700,html[data-netbox-color-mode=light] table tbody tr.blue-700{background-color:#08429826;border-color:#adb5bd}}@media print{html table tbody tr.blue-800,html[data-netbox-color-mode=dark] table tbody tr.blue-800,html[data-netbox-color-mode=light] table tbody tr.blue-800{background-color:#052c6526;border-color:#adb5bd}}@media print{html table tbody tr.blue-900,html[data-netbox-color-mode=dark] table tbody tr.blue-900,html[data-netbox-color-mode=light] table tbody tr.blue-900{background-color:#03163326;border-color:#adb5bd}}@media print{html table tbody tr.cyan-100,html[data-netbox-color-mode=dark] table tbody tr.cyan-100,html[data-netbox-color-mode=light] table tbody tr.cyan-100{background-color:#cff4fc26;border-color:#adb5bd}}@media print{html table tbody tr.cyan-200,html[data-netbox-color-mode=dark] table tbody tr.cyan-200,html[data-netbox-color-mode=light] table tbody tr.cyan-200{background-color:#9eeaf926;border-color:#adb5bd}}@media print{html table tbody tr.cyan-300,html[data-netbox-color-mode=dark] table tbody tr.cyan-300,html[data-netbox-color-mode=light] table tbody tr.cyan-300{background-color:#6edff626;border-color:#adb5bd}}@media print{html table tbody tr.cyan-400,html[data-netbox-color-mode=dark] table tbody tr.cyan-400,html[data-netbox-color-mode=light] table tbody tr.cyan-400{background-color:#3dd5f326;border-color:#adb5bd}}@media print{html table tbody tr.cyan-500,html[data-netbox-color-mode=dark] table tbody tr.cyan-500,html[data-netbox-color-mode=light] table tbody tr.cyan-500{background-color:#0dcaf026;border-color:#adb5bd}}@media print{html table tbody tr.cyan-600,html[data-netbox-color-mode=dark] table tbody tr.cyan-600,html[data-netbox-color-mode=light] table tbody tr.cyan-600{background-color:#0aa2c026;border-color:#adb5bd}}@media print{html table tbody tr.cyan-700,html[data-netbox-color-mode=dark] table tbody tr.cyan-700,html[data-netbox-color-mode=light] table tbody tr.cyan-700{background-color:#08799026;border-color:#adb5bd}}@media print{html table tbody tr.cyan-800,html[data-netbox-color-mode=dark] table tbody tr.cyan-800,html[data-netbox-color-mode=light] table tbody tr.cyan-800{background-color:#05516026;border-color:#adb5bd}}@media print{html table tbody tr.cyan-900,html[data-netbox-color-mode=dark] table tbody tr.cyan-900,html[data-netbox-color-mode=light] table tbody tr.cyan-900{background-color:#03283026;border-color:#adb5bd}}@media print{html table tbody tr.indigo-100,html[data-netbox-color-mode=dark] table tbody tr.indigo-100,html[data-netbox-color-mode=light] table tbody tr.indigo-100{background-color:#e0cffc26;border-color:#adb5bd}}@media print{html table tbody tr.indigo-200,html[data-netbox-color-mode=dark] table tbody tr.indigo-200,html[data-netbox-color-mode=light] table tbody tr.indigo-200{background-color:#c29ffa26;border-color:#adb5bd}}@media print{html table tbody tr.indigo-300,html[data-netbox-color-mode=dark] table tbody tr.indigo-300,html[data-netbox-color-mode=light] table tbody tr.indigo-300{background-color:#a370f726;border-color:#adb5bd}}@media print{html table tbody tr.indigo-400,html[data-netbox-color-mode=dark] table tbody tr.indigo-400,html[data-netbox-color-mode=light] table tbody tr.indigo-400{background-color:#8540f526;border-color:#adb5bd}}@media print{html table tbody tr.indigo-500,html[data-netbox-color-mode=dark] table tbody tr.indigo-500,html[data-netbox-color-mode=light] table tbody tr.indigo-500{background-color:#6610f226;border-color:#adb5bd}}@media print{html table tbody tr.indigo-600,html[data-netbox-color-mode=dark] table tbody tr.indigo-600,html[data-netbox-color-mode=light] table tbody tr.indigo-600{background-color:#520dc226;border-color:#adb5bd}}@media print{html table tbody tr.indigo-700,html[data-netbox-color-mode=dark] table tbody tr.indigo-700,html[data-netbox-color-mode=light] table tbody tr.indigo-700{background-color:#3d0a9126;border-color:#adb5bd}}@media print{html table tbody tr.indigo-800,html[data-netbox-color-mode=dark] table tbody tr.indigo-800,html[data-netbox-color-mode=light] table tbody tr.indigo-800{background-color:#29066126;border-color:#adb5bd}}@media print{html table tbody tr.indigo-900,html[data-netbox-color-mode=dark] table tbody tr.indigo-900,html[data-netbox-color-mode=light] table tbody tr.indigo-900{background-color:#14033026;border-color:#adb5bd}}@media print{html table tbody tr.purple-100,html[data-netbox-color-mode=dark] table tbody tr.purple-100,html[data-netbox-color-mode=light] table tbody tr.purple-100{background-color:#e2d9f326;border-color:#adb5bd}}@media print{html table tbody tr.purple-200,html[data-netbox-color-mode=dark] table tbody tr.purple-200,html[data-netbox-color-mode=light] table tbody tr.purple-200{background-color:#c5b3e626;border-color:#adb5bd}}@media print{html table tbody tr.purple-300,html[data-netbox-color-mode=dark] table tbody tr.purple-300,html[data-netbox-color-mode=light] table tbody tr.purple-300{background-color:#a98eda26;border-color:#adb5bd}}@media print{html table tbody tr.purple-400,html[data-netbox-color-mode=dark] table tbody tr.purple-400,html[data-netbox-color-mode=light] table tbody tr.purple-400{background-color:#8c68cd26;border-color:#adb5bd}}@media print{html table tbody tr.purple-500,html[data-netbox-color-mode=dark] table tbody tr.purple-500,html[data-netbox-color-mode=light] table tbody tr.purple-500{background-color:#6f42c126;border-color:#adb5bd}}@media print{html table tbody tr.purple-600,html[data-netbox-color-mode=dark] table tbody tr.purple-600,html[data-netbox-color-mode=light] table tbody tr.purple-600{background-color:#59359a26;border-color:#adb5bd}}@media print{html table tbody tr.purple-700,html[data-netbox-color-mode=dark] table tbody tr.purple-700,html[data-netbox-color-mode=light] table tbody tr.purple-700{background-color:#43287426;border-color:#adb5bd}}@media print{html table tbody tr.purple-800,html[data-netbox-color-mode=dark] table tbody tr.purple-800,html[data-netbox-color-mode=light] table tbody tr.purple-800{background-color:#2c1a4d26;border-color:#adb5bd}}@media print{html table tbody tr.purple-900,html[data-netbox-color-mode=dark] table tbody tr.purple-900,html[data-netbox-color-mode=light] table tbody tr.purple-900{background-color:#160d2726;border-color:#adb5bd}}@media print{html table tbody tr.pink-100,html[data-netbox-color-mode=dark] table tbody tr.pink-100,html[data-netbox-color-mode=light] table tbody tr.pink-100{background-color:#f7d6e626;border-color:#adb5bd}}@media print{html table tbody tr.pink-200,html[data-netbox-color-mode=dark] table tbody tr.pink-200,html[data-netbox-color-mode=light] table tbody tr.pink-200{background-color:#efadce26;border-color:#adb5bd}}@media print{html table tbody tr.pink-300,html[data-netbox-color-mode=dark] table tbody tr.pink-300,html[data-netbox-color-mode=light] table tbody tr.pink-300{background-color:#e685b526;border-color:#adb5bd}}@media print{html table tbody tr.pink-400,html[data-netbox-color-mode=dark] table tbody tr.pink-400,html[data-netbox-color-mode=light] table tbody tr.pink-400{background-color:#de5c9d26;border-color:#adb5bd}}@media print{html table tbody tr.pink-500,html[data-netbox-color-mode=dark] table tbody tr.pink-500,html[data-netbox-color-mode=light] table tbody tr.pink-500{background-color:#d6338426;border-color:#adb5bd}}@media print{html table tbody tr.pink-600,html[data-netbox-color-mode=dark] table tbody tr.pink-600,html[data-netbox-color-mode=light] table tbody tr.pink-600{background-color:#ab296a26;border-color:#adb5bd}}@media print{html table tbody tr.pink-700,html[data-netbox-color-mode=dark] table tbody tr.pink-700,html[data-netbox-color-mode=light] table tbody tr.pink-700{background-color:#801f4f26;border-color:#adb5bd}}@media print{html table tbody tr.pink-800,html[data-netbox-color-mode=dark] table tbody tr.pink-800,html[data-netbox-color-mode=light] table tbody tr.pink-800{background-color:#56143526;border-color:#adb5bd}}@media print{html table tbody tr.pink-900,html[data-netbox-color-mode=dark] table tbody tr.pink-900,html[data-netbox-color-mode=light] table tbody tr.pink-900{background-color:#2b0a1a26;border-color:#adb5bd}}@media print{html table .table-badge-group .table-badge,html[data-netbox-color-mode=dark] table .table-badge-group .table-badge,html[data-netbox-color-mode=light] table .table-badge-group .table-badge{display:block;width:min-content;font-size:.875rem;font-weight:400}}@media print{html table .table-badge-group .table-badge:not(.badge),html[data-netbox-color-mode=dark] table .table-badge-group .table-badge:not(.badge),html[data-netbox-color-mode=light] table .table-badge-group .table-badge:not(.badge){padding:0 .65em}}@media print{html table .table-badge-group .table-badge.badge:not(:last-of-type):not(:only-child),html[data-netbox-color-mode=dark] table .table-badge-group .table-badge.badge:not(:last-of-type):not(:only-child),html[data-netbox-color-mode=light] table .table-badge-group .table-badge.badge:not(:last-of-type):not(:only-child){margin-bottom:.5rem}}@media print{html pre.change-data,html[data-netbox-color-mode=dark] pre.change-data,html[data-netbox-color-mode=light] pre.change-data{padding-right:0;padding-left:0}}@media print{html pre.change-data>span,html[data-netbox-color-mode=dark] pre.change-data>span,html[data-netbox-color-mode=light] pre.change-data>span{display:block;padding-right:1rem;padding-left:1rem}}@media print{html pre.change-data>span.added,html[data-netbox-color-mode=dark] pre.change-data>span.added,html[data-netbox-color-mode=light] pre.change-data>span.added{background-color:var(--nbx-change-added)}}@media print{html pre.change-data>span.removed,html[data-netbox-color-mode=dark] pre.change-data>span.removed,html[data-netbox-color-mode=light] pre.change-data>span.removed{background-color:var(--nbx-change-removed)}}@media print{html pre.change-diff,html[data-netbox-color-mode=dark] pre.change-diff,html[data-netbox-color-mode=light] pre.change-diff{border-color:transparent}}@media print{html pre.change-diff.change-removed,html[data-netbox-color-mode=dark] pre.change-diff.change-removed,html[data-netbox-color-mode=light] pre.change-diff.change-removed{background-color:var(--nbx-change-removed)}}@media print{html pre.change-diff.change-added,html[data-netbox-color-mode=dark] pre.change-diff.change-added,html[data-netbox-color-mode=light] pre.change-diff.change-added{background-color:var(--nbx-change-added)}}@media print{html div.card-overlay,html[data-netbox-color-mode=dark] div.card-overlay,html[data-netbox-color-mode=light] div.card-overlay{position:absolute;display:flex;align-items:center;justify-content:center;width:100%;height:100%;background-color:#ffffffbf;border-radius:.375rem}}@media print{html div.card-overlay>div.spinner-border,html[data-netbox-color-mode=dark] div.card-overlay>div.spinner-border,html[data-netbox-color-mode=light] div.card-overlay>div.spinner-border{width:6rem;height:6rem;color:#6c757d}}@media print{html .table-controls,html[data-netbox-color-mode=dark] .table-controls,html[data-netbox-color-mode=light] .table-controls{display:flex}}@media print and (min-width: 768px){html .table-controls,html[data-netbox-color-mode=dark] .table-controls,html[data-netbox-color-mode=light] .table-controls{margin-top:0!important;margin-bottom:0!important}}@media print{html .table-controls .table-configure,html[data-netbox-color-mode=dark] .table-controls .table-configure,html[data-netbox-color-mode=light] .table-controls .table-configure{justify-content:flex-start}}@media print and (min-width: 768px){html .table-controls .table-configure,html[data-netbox-color-mode=dark] .table-controls .table-configure,html[data-netbox-color-mode=light] .table-controls .table-configure{justify-content:flex-end}}@media print{html .table-controls .form-switch.form-check-inline,html[data-netbox-color-mode=dark] .table-controls .form-switch.form-check-inline,html[data-netbox-color-mode=light] .table-controls .form-switch.form-check-inline{flex:1 0 auto;font-size:.875rem}}@media print{html .paginator,html[data-netbox-color-mode=dark] .paginator,html[data-netbox-color-mode=light] .paginator{display:flex;flex-direction:column;align-items:flex-end;padding:1rem 0}}@media print{html .nav-tabs .nav-link:hover,html[data-netbox-color-mode=dark] .nav-tabs .nav-link:hover,html[data-netbox-color-mode=light] .nav-tabs .nav-link:hover{border-bottom-color:transparent}}@media print{html .nav-tabs .nav-link.active,html[data-netbox-color-mode=dark] .nav-tabs .nav-link.active,html[data-netbox-color-mode=light] .nav-tabs .nav-link.active{background-color:#f8f9fa;border-bottom-color:#f8f9fa;transform:translateY(1px)}}@media print{html .tab-content,html[data-netbox-color-mode=dark] .tab-content,html[data-netbox-color-mode=light] .tab-content{display:flex;flex-direction:column;padding:1rem;background-color:#f8f9fa;border-bottom:1px solid #dee2e6}}@media print{html .tab-content,html[data-netbox-color-mode=dark] .tab-content,html[data-netbox-color-mode=light] .tab-content{background-color:var(--nbx-body-bg)!important;border-bottom:none!important}}@media print{html .masonry,html[data-netbox-color-mode=dark] .masonry,html[data-netbox-color-mode=light] .masonry{position:static!important;display:block!important;height:unset!important}}@media print{html .masonry .masonry-item,html[data-netbox-color-mode=dark] .masonry .masonry-item,html[data-netbox-color-mode=light] .masonry .masonry-item{position:static!important;top:unset!important;left:unset!important;display:block!important}}@media print{html .record-depth,html[data-netbox-color-mode=dark] .record-depth,html[data-netbox-color-mode=light] .record-depth{display:inline;font-size:1rem;user-select:none;opacity:.33}}@media print{html .record-depth span:only-of-type,html .record-depth span:last-of-type,html[data-netbox-color-mode=dark] .record-depth span:only-of-type,html[data-netbox-color-mode=dark] .record-depth span:last-of-type,html[data-netbox-color-mode=light] .record-depth span:only-of-type,html[data-netbox-color-mode=light] .record-depth span:last-of-type{margin-right:.25rem}}@media print{html .popover.image-preview-popover,html[data-netbox-color-mode=dark] .popover.image-preview-popover,html[data-netbox-color-mode=light] .popover.image-preview-popover{max-width:unset}}@media print{html #django-messages,html[data-netbox-color-mode=dark] #django-messages,html[data-netbox-color-mode=light] #django-messages{position:fixed;right:1rem;bottom:0;margin:1rem}}@media print{html html[data-netbox-url-name=home] .content-container,html html[data-netbox-url-name=home] .search,html[data-netbox-color-mode=dark] html[data-netbox-url-name=home] .content-container,html[data-netbox-color-mode=dark] html[data-netbox-url-name=home] .search,html[data-netbox-color-mode=light] html[data-netbox-url-name=home] .content-container,html[data-netbox-color-mode=light] html[data-netbox-url-name=home] .search{background-color:#f8f9fa!important}}@media print{html html[data-netbox-url-name=home][data-netbox-color-mode=dark] .content-container,html html[data-netbox-url-name=home][data-netbox-color-mode=dark] .search,html[data-netbox-color-mode=dark] html[data-netbox-url-name=home][data-netbox-color-mode=dark] .content-container,html[data-netbox-color-mode=dark] html[data-netbox-url-name=home][data-netbox-color-mode=dark] .search,html[data-netbox-color-mode=light] html[data-netbox-url-name=home][data-netbox-color-mode=dark] .content-container,html[data-netbox-color-mode=light] html[data-netbox-url-name=home][data-netbox-color-mode=dark] .search{background-color:#171b1d!important}}@media print{html html[data-netbox-url-name=login] #django-messages,html[data-netbox-color-mode=dark] html[data-netbox-url-name=login] #django-messages,html[data-netbox-color-mode=light] html[data-netbox-url-name=login] #django-messages{display:none}} +@media print{:root{--nbx-body-bg: #fff !important;--nbx-body-color: #000 !important}html :root,html[data-netbox-color-mode=dark] :root,html[data-netbox-color-mode=light] :root{--bs-orange: #fd7e14;--bs-teal: #20c997;--bs-white: #fff;--bs-gray: #6c757d;--bs-gray-dark: #343a40;--bs-primary: #337ab7;--bs-secondary: #6c757d;--bs-success: #198754;--bs-info: #0dcaf0;--bs-warning: #ffc107;--bs-danger: #dc3545;--bs-light: #f8f9fa;--bs-dark: #212529;--bs-red: #dc3545;--bs-yellow: #ffc107;--bs-green: #198754;--bs-blue: #0d6efd;--bs-cyan: #0dcaf0;--bs-indigo: #6610f2;--bs-purple: #6f42c1;--bs-pink: #d63384;--bs-darker: #1b1f22;--bs-darkest: #171b1d;--bs-gray: #ced4da;--bs-gray-100: #f8f9fa;--bs-gray-200: #e9ecef;--bs-gray-300: #dee2e6;--bs-gray-400: #ced4da;--bs-gray-500: #adb5bd;--bs-gray-600: #6c757d;--bs-gray-700: #495057;--bs-gray-800: #343a40;--bs-gray-900: #212529;--bs-red-100: #f8d7da;--bs-red-200: #f1aeb5;--bs-red-300: #ea868f;--bs-red-400: #e35d6a;--bs-red-500: #dc3545;--bs-red-600: #b02a37;--bs-red-700: #842029;--bs-red-800: #58151c;--bs-red-900: #2c0b0e;--bs-yellow-100: #fff3cd;--bs-yellow-200: #ffe69c;--bs-yellow-300: #ffda6a;--bs-yellow-400: #ffcd39;--bs-yellow-500: #ffc107;--bs-yellow-600: #cc9a06;--bs-yellow-700: #997404;--bs-yellow-800: #664d03;--bs-yellow-900: #332701;--bs-green-100: #d1e7dd;--bs-green-200: #a3cfbb;--bs-green-300: #75b798;--bs-green-400: #479f76;--bs-green-500: #198754;--bs-green-600: #146c43;--bs-green-700: #0f5132;--bs-green-800: #0a3622;--bs-green-900: #051b11;--bs-blue-100: #cfe2ff;--bs-blue-200: #9ec5fe;--bs-blue-300: #6ea8fe;--bs-blue-400: #3d8bfd;--bs-blue-500: #0d6efd;--bs-blue-600: #0a58ca;--bs-blue-700: #084298;--bs-blue-800: #052c65;--bs-blue-900: #031633;--bs-cyan-100: #cff4fc;--bs-cyan-200: #9eeaf9;--bs-cyan-300: #6edff6;--bs-cyan-400: #3dd5f3;--bs-cyan-500: #0dcaf0;--bs-cyan-600: #0aa2c0;--bs-cyan-700: #087990;--bs-cyan-800: #055160;--bs-cyan-900: #032830;--bs-indigo-100: #e0cffc;--bs-indigo-200: #c29ffa;--bs-indigo-300: #a370f7;--bs-indigo-400: #8540f5;--bs-indigo-500: #6610f2;--bs-indigo-600: #520dc2;--bs-indigo-700: #3d0a91;--bs-indigo-800: #290661;--bs-indigo-900: #140330;--bs-purple-100: #e2d9f3;--bs-purple-200: #c5b3e6;--bs-purple-300: #a98eda;--bs-purple-400: #8c68cd;--bs-purple-500: #6f42c1;--bs-purple-600: #59359a;--bs-purple-700: #432874;--bs-purple-800: #2c1a4d;--bs-purple-900: #160d27;--bs-pink-100: #f7d6e6;--bs-pink-200: #efadce;--bs-pink-300: #e685b5;--bs-pink-400: #de5c9d;--bs-pink-500: #d63384;--bs-pink-600: #ab296a;--bs-pink-700: #801f4f;--bs-pink-800: #561435;--bs-pink-900: #2b0a1a;--bs-font-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, .15), rgba(255, 255, 255, 0))}html *,html *:before,html *:after,html[data-netbox-color-mode=dark] *,html[data-netbox-color-mode=dark] *:before,html[data-netbox-color-mode=dark] *:after,html[data-netbox-color-mode=light] *,html[data-netbox-color-mode=light] *:before,html[data-netbox-color-mode=light] *:after{box-sizing:border-box}}@media print and (prefers-reduced-motion: no-preference){html :root,html[data-netbox-color-mode=dark] :root,html[data-netbox-color-mode=light] :root{scroll-behavior:smooth}}@media print{html body,html[data-netbox-color-mode=dark] body,html[data-netbox-color-mode=light] body{margin:0;font-family:var(--bs-font-sans-serif);font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0)}}@media print{html hr,html[data-netbox-color-mode=dark] hr,html[data-netbox-color-mode=light] hr{margin:1rem 0;color:inherit;background-color:currentColor;border:0;opacity:.25}}@media print{html hr:not([size]),html[data-netbox-color-mode=dark] hr:not([size]),html[data-netbox-color-mode=light] hr:not([size]){height:1px}}@media print{html h6,html .h6,html[data-netbox-color-mode=dark] .h6,html[data-netbox-color-mode=light] .h6,html[data-netbox-color-mode=dark] h6,html[data-netbox-color-mode=light] h6,html h5,html .h5,html[data-netbox-color-mode=dark] .h5,html[data-netbox-color-mode=light] .h5,html[data-netbox-color-mode=dark] h5,html[data-netbox-color-mode=light] h5,html h4,html .h4,html[data-netbox-color-mode=dark] .h4,html[data-netbox-color-mode=light] .h4,html[data-netbox-color-mode=dark] h4,html[data-netbox-color-mode=light] h4,html h3,html .h3,html[data-netbox-color-mode=dark] .h3,html[data-netbox-color-mode=light] .h3,html[data-netbox-color-mode=dark] h3,html[data-netbox-color-mode=light] h3,html h2,html .h2,html[data-netbox-color-mode=dark] .h2,html[data-netbox-color-mode=light] .h2,html[data-netbox-color-mode=dark] h2,html[data-netbox-color-mode=light] h2,html h1,html .h1,html[data-netbox-color-mode=dark] .h1,html[data-netbox-color-mode=light] .h1,html[data-netbox-color-mode=dark] h1,html[data-netbox-color-mode=light] h1{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2}}@media print{html h1,html .h1,html[data-netbox-color-mode=dark] .h1,html[data-netbox-color-mode=light] .h1,html[data-netbox-color-mode=dark] h1,html[data-netbox-color-mode=light] h1{font-size:calc(1.375rem + 1.5vw)}}@media print and (min-width: 1200px){html h1,html .h1,html[data-netbox-color-mode=dark] .h1,html[data-netbox-color-mode=light] .h1,html[data-netbox-color-mode=dark] h1,html[data-netbox-color-mode=light] h1{font-size:2.5rem}}@media print{html h2,html .h2,html[data-netbox-color-mode=dark] .h2,html[data-netbox-color-mode=light] .h2,html[data-netbox-color-mode=dark] h2,html[data-netbox-color-mode=light] h2{font-size:calc(1.325rem + .9vw)}}@media print and (min-width: 1200px){html h2,html .h2,html[data-netbox-color-mode=dark] .h2,html[data-netbox-color-mode=light] .h2,html[data-netbox-color-mode=dark] h2,html[data-netbox-color-mode=light] h2{font-size:2rem}}@media print{html h3,html .h3,html[data-netbox-color-mode=dark] .h3,html[data-netbox-color-mode=light] .h3,html[data-netbox-color-mode=dark] h3,html[data-netbox-color-mode=light] h3{font-size:calc(1.3rem + .6vw)}}@media print and (min-width: 1200px){html h3,html .h3,html[data-netbox-color-mode=dark] .h3,html[data-netbox-color-mode=light] .h3,html[data-netbox-color-mode=dark] h3,html[data-netbox-color-mode=light] h3{font-size:1.75rem}}@media print{html h4,html .h4,html[data-netbox-color-mode=dark] .h4,html[data-netbox-color-mode=light] .h4,html[data-netbox-color-mode=dark] h4,html[data-netbox-color-mode=light] h4{font-size:calc(1.275rem + .3vw)}}@media print and (min-width: 1200px){html h4,html .h4,html[data-netbox-color-mode=dark] .h4,html[data-netbox-color-mode=light] .h4,html[data-netbox-color-mode=dark] h4,html[data-netbox-color-mode=light] h4{font-size:1.5rem}}@media print{html h5,html .h5,html[data-netbox-color-mode=dark] .h5,html[data-netbox-color-mode=light] .h5,html[data-netbox-color-mode=dark] h5,html[data-netbox-color-mode=light] h5{font-size:1.25rem}}@media print{html h6,html .h6,html[data-netbox-color-mode=dark] .h6,html[data-netbox-color-mode=light] .h6,html[data-netbox-color-mode=dark] h6,html[data-netbox-color-mode=light] h6{font-size:1rem}}@media print{html p,html[data-netbox-color-mode=dark] p,html[data-netbox-color-mode=light] p{margin-top:0;margin-bottom:1rem}}@media print{html abbr[title],html abbr[data-bs-original-title],html[data-netbox-color-mode=dark] abbr[title],html[data-netbox-color-mode=dark] abbr[data-bs-original-title],html[data-netbox-color-mode=light] abbr[title],html[data-netbox-color-mode=light] abbr[data-bs-original-title]{text-decoration:underline dotted;cursor:help;text-decoration-skip-ink:none}}@media print{html address,html[data-netbox-color-mode=dark] address,html[data-netbox-color-mode=light] address{margin-bottom:1rem;font-style:normal;line-height:inherit}}@media print{html ol,html ul,html[data-netbox-color-mode=dark] ol,html[data-netbox-color-mode=dark] ul,html[data-netbox-color-mode=light] ol,html[data-netbox-color-mode=light] ul{padding-left:2rem}}@media print{html ol,html ul,html dl,html[data-netbox-color-mode=dark] ol,html[data-netbox-color-mode=dark] ul,html[data-netbox-color-mode=dark] dl,html[data-netbox-color-mode=light] ol,html[data-netbox-color-mode=light] ul,html[data-netbox-color-mode=light] dl{margin-top:0;margin-bottom:1rem}}@media print{html ol ol,html ul ul,html ol ul,html ul ol,html[data-netbox-color-mode=dark] ol ol,html[data-netbox-color-mode=dark] ul ul,html[data-netbox-color-mode=dark] ol ul,html[data-netbox-color-mode=dark] ul ol,html[data-netbox-color-mode=light] ol ol,html[data-netbox-color-mode=light] ul ul,html[data-netbox-color-mode=light] ol ul,html[data-netbox-color-mode=light] ul ol{margin-bottom:0}}@media print{html dt,html[data-netbox-color-mode=dark] dt,html[data-netbox-color-mode=light] dt{font-weight:700}}@media print{html dd,html[data-netbox-color-mode=dark] dd,html[data-netbox-color-mode=light] dd{margin-bottom:.5rem;margin-left:0}}@media print{html blockquote,html[data-netbox-color-mode=dark] blockquote,html[data-netbox-color-mode=light] blockquote{margin:0 0 1rem}}@media print{html b,html strong,html[data-netbox-color-mode=dark] b,html[data-netbox-color-mode=dark] strong,html[data-netbox-color-mode=light] b,html[data-netbox-color-mode=light] strong{font-weight:800}}@media print{html small,html .small,html[data-netbox-color-mode=dark] .small,html[data-netbox-color-mode=light] .small,html[data-netbox-color-mode=dark] small,html[data-netbox-color-mode=light] small{font-size:.875em}}@media print{html mark,html .mark,html[data-netbox-color-mode=dark] .mark,html[data-netbox-color-mode=light] .mark,html[data-netbox-color-mode=dark] mark,html[data-netbox-color-mode=light] mark{padding:.2em;background-color:#fcf8e3}}@media print{html sub,html sup,html[data-netbox-color-mode=dark] sub,html[data-netbox-color-mode=dark] sup,html[data-netbox-color-mode=light] sub,html[data-netbox-color-mode=light] sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}}@media print{html sub,html[data-netbox-color-mode=dark] sub,html[data-netbox-color-mode=light] sub{bottom:-.25em}}@media print{html sup,html[data-netbox-color-mode=dark] sup,html[data-netbox-color-mode=light] sup{top:-.5em}}@media print{html a,html[data-netbox-color-mode=dark] a,html[data-netbox-color-mode=light] a{color:#0d6efd;text-decoration:underline}html a:hover,html[data-netbox-color-mode=dark] a:hover,html[data-netbox-color-mode=light] a:hover{color:#0a58ca}}@media print{html a:not([href]):not([class]),html a:not([href]):not([class]):hover,html[data-netbox-color-mode=dark] a:not([href]):not([class]),html[data-netbox-color-mode=dark] a:not([href]):not([class]):hover,html[data-netbox-color-mode=light] a:not([href]):not([class]),html[data-netbox-color-mode=light] a:not([href]):not([class]):hover{color:inherit;text-decoration:none}}@media print{html pre,html code,html kbd,html samp,html[data-netbox-color-mode=dark] pre,html[data-netbox-color-mode=dark] code,html[data-netbox-color-mode=dark] kbd,html[data-netbox-color-mode=dark] samp,html[data-netbox-color-mode=light] pre,html[data-netbox-color-mode=light] code,html[data-netbox-color-mode=light] kbd,html[data-netbox-color-mode=light] samp{font-family:var(--bs-font-monospace);font-size:1em;direction:ltr;unicode-bidi:bidi-override}}@media print{html pre,html[data-netbox-color-mode=dark] pre,html[data-netbox-color-mode=light] pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em}html pre code,html[data-netbox-color-mode=dark] pre code,html[data-netbox-color-mode=light] pre code{font-size:inherit;color:inherit;word-break:normal}}@media print{html code,html[data-netbox-color-mode=dark] code,html[data-netbox-color-mode=light] code{font-size:.875em;color:#212529;word-wrap:break-word}a>html code,a>html[data-netbox-color-mode=dark] code,a>html[data-netbox-color-mode=light] code{color:inherit}}@media print{html kbd,html[data-netbox-color-mode=dark] kbd,html[data-netbox-color-mode=light] kbd{padding:.2rem .4rem;font-size:.875em;color:#fff;background-color:#212529;border-radius:.375rem}html kbd kbd,html[data-netbox-color-mode=dark] kbd kbd,html[data-netbox-color-mode=light] kbd kbd{padding:0;font-size:1em;font-weight:700}}@media print{html figure,html[data-netbox-color-mode=dark] figure,html[data-netbox-color-mode=light] figure{margin:0 0 1rem}}@media print{html img,html svg,html[data-netbox-color-mode=dark] img,html[data-netbox-color-mode=dark] svg,html[data-netbox-color-mode=light] img,html[data-netbox-color-mode=light] svg{vertical-align:middle}}@media print{html table,html[data-netbox-color-mode=dark] table,html[data-netbox-color-mode=light] table{caption-side:bottom;border-collapse:collapse}}@media print{html caption,html[data-netbox-color-mode=dark] caption,html[data-netbox-color-mode=light] caption{padding-top:.5rem;padding-bottom:.5rem;color:#6c757d;text-align:left}}@media print{html th,html[data-netbox-color-mode=dark] th,html[data-netbox-color-mode=light] th{text-align:inherit;text-align:-webkit-match-parent}}@media print{html thead,html tbody,html tfoot,html tr,html td,html th,html[data-netbox-color-mode=dark] thead,html[data-netbox-color-mode=dark] tbody,html[data-netbox-color-mode=dark] tfoot,html[data-netbox-color-mode=dark] tr,html[data-netbox-color-mode=dark] td,html[data-netbox-color-mode=dark] th,html[data-netbox-color-mode=light] thead,html[data-netbox-color-mode=light] tbody,html[data-netbox-color-mode=light] tfoot,html[data-netbox-color-mode=light] tr,html[data-netbox-color-mode=light] td,html[data-netbox-color-mode=light] th{border-color:inherit;border-style:solid;border-width:0}}@media print{html label,html[data-netbox-color-mode=dark] label,html[data-netbox-color-mode=light] label{display:inline-block}}@media print{html button,html[data-netbox-color-mode=dark] button,html[data-netbox-color-mode=light] button{border-radius:0}}@media print{html button:focus:not(:focus-visible),html[data-netbox-color-mode=dark] button:focus:not(:focus-visible),html[data-netbox-color-mode=light] button:focus:not(:focus-visible){outline:0}}@media print{html input,html button,html select,html optgroup,html textarea,html[data-netbox-color-mode=dark] input,html[data-netbox-color-mode=dark] button,html[data-netbox-color-mode=dark] select,html[data-netbox-color-mode=dark] optgroup,html[data-netbox-color-mode=dark] textarea,html[data-netbox-color-mode=light] input,html[data-netbox-color-mode=light] button,html[data-netbox-color-mode=light] select,html[data-netbox-color-mode=light] optgroup,html[data-netbox-color-mode=light] textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}}@media print{html button,html select,html[data-netbox-color-mode=dark] button,html[data-netbox-color-mode=dark] select,html[data-netbox-color-mode=light] button,html[data-netbox-color-mode=light] select{text-transform:none}}@media print{html [role=button],html[data-netbox-color-mode=dark] [role=button],html[data-netbox-color-mode=light] [role=button]{cursor:pointer}}@media print{html select,html[data-netbox-color-mode=dark] select,html[data-netbox-color-mode=light] select{word-wrap:normal}html select:disabled,html[data-netbox-color-mode=dark] select:disabled,html[data-netbox-color-mode=light] select:disabled{opacity:1}}@media print{html [list]::-webkit-calendar-picker-indicator,html[data-netbox-color-mode=dark] [list]::-webkit-calendar-picker-indicator,html[data-netbox-color-mode=light] [list]::-webkit-calendar-picker-indicator{display:none}}@media print{html button,html [type=button],html [type=reset],html [type=submit],html[data-netbox-color-mode=dark] button,html[data-netbox-color-mode=dark] [type=button],html[data-netbox-color-mode=dark] [type=reset],html[data-netbox-color-mode=dark] [type=submit],html[data-netbox-color-mode=light] button,html[data-netbox-color-mode=light] [type=button],html[data-netbox-color-mode=light] [type=reset],html[data-netbox-color-mode=light] [type=submit]{-webkit-appearance:button}html button:not(:disabled),html [type=button]:not(:disabled),html [type=reset]:not(:disabled),html [type=submit]:not(:disabled),html[data-netbox-color-mode=dark] button:not(:disabled),html[data-netbox-color-mode=dark] [type=button]:not(:disabled),html[data-netbox-color-mode=dark] [type=reset]:not(:disabled),html[data-netbox-color-mode=dark] [type=submit]:not(:disabled),html[data-netbox-color-mode=light] button:not(:disabled),html[data-netbox-color-mode=light] [type=button]:not(:disabled),html[data-netbox-color-mode=light] [type=reset]:not(:disabled),html[data-netbox-color-mode=light] [type=submit]:not(:disabled){cursor:pointer}}@media print{html ::-moz-focus-inner,html[data-netbox-color-mode=dark] ::-moz-focus-inner,html[data-netbox-color-mode=light] ::-moz-focus-inner{padding:0;border-style:none}}@media print{html textarea,html[data-netbox-color-mode=dark] textarea,html[data-netbox-color-mode=light] textarea{resize:vertical}}@media print{html fieldset,html[data-netbox-color-mode=dark] fieldset,html[data-netbox-color-mode=light] fieldset{min-width:0;padding:0;margin:0;border:0}}@media print{html legend,html[data-netbox-color-mode=dark] legend,html[data-netbox-color-mode=light] legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + .3vw);line-height:inherit}}@media print and (min-width: 1200px){html legend,html[data-netbox-color-mode=dark] legend,html[data-netbox-color-mode=light] legend{font-size:1.5rem}}@media print{html legend+*,html[data-netbox-color-mode=dark] legend+*,html[data-netbox-color-mode=light] legend+*{clear:left}}@media print{html ::-webkit-datetime-edit-fields-wrapper,html ::-webkit-datetime-edit-text,html ::-webkit-datetime-edit-minute,html ::-webkit-datetime-edit-hour-field,html ::-webkit-datetime-edit-day-field,html ::-webkit-datetime-edit-month-field,html ::-webkit-datetime-edit-year-field,html[data-netbox-color-mode=dark] ::-webkit-datetime-edit-fields-wrapper,html[data-netbox-color-mode=dark] ::-webkit-datetime-edit-text,html[data-netbox-color-mode=dark] ::-webkit-datetime-edit-minute,html[data-netbox-color-mode=dark] ::-webkit-datetime-edit-hour-field,html[data-netbox-color-mode=dark] ::-webkit-datetime-edit-day-field,html[data-netbox-color-mode=dark] ::-webkit-datetime-edit-month-field,html[data-netbox-color-mode=dark] ::-webkit-datetime-edit-year-field,html[data-netbox-color-mode=light] ::-webkit-datetime-edit-fields-wrapper,html[data-netbox-color-mode=light] ::-webkit-datetime-edit-text,html[data-netbox-color-mode=light] ::-webkit-datetime-edit-minute,html[data-netbox-color-mode=light] ::-webkit-datetime-edit-hour-field,html[data-netbox-color-mode=light] ::-webkit-datetime-edit-day-field,html[data-netbox-color-mode=light] ::-webkit-datetime-edit-month-field,html[data-netbox-color-mode=light] ::-webkit-datetime-edit-year-field{padding:0}}@media print{html ::-webkit-inner-spin-button,html[data-netbox-color-mode=dark] ::-webkit-inner-spin-button,html[data-netbox-color-mode=light] ::-webkit-inner-spin-button{height:auto}}@media print{html [type=search],html[data-netbox-color-mode=dark] [type=search],html[data-netbox-color-mode=light] [type=search]{outline-offset:-2px;-webkit-appearance:textfield}}@media print{html ::-webkit-search-decoration,html[data-netbox-color-mode=dark] ::-webkit-search-decoration,html[data-netbox-color-mode=light] ::-webkit-search-decoration{-webkit-appearance:none}}@media print{html ::-webkit-color-swatch-wrapper,html[data-netbox-color-mode=dark] ::-webkit-color-swatch-wrapper,html[data-netbox-color-mode=light] ::-webkit-color-swatch-wrapper{padding:0}}@media print{html ::file-selector-button,html[data-netbox-color-mode=dark] ::file-selector-button,html[data-netbox-color-mode=light] ::file-selector-button{font:inherit}}@media print{html ::-webkit-file-upload-button,html[data-netbox-color-mode=dark] ::-webkit-file-upload-button,html[data-netbox-color-mode=light] ::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}}@media print{html output,html[data-netbox-color-mode=dark] output,html[data-netbox-color-mode=light] output{display:inline-block}}@media print{html iframe,html[data-netbox-color-mode=dark] iframe,html[data-netbox-color-mode=light] iframe{border:0}}@media print{html summary,html[data-netbox-color-mode=dark] summary,html[data-netbox-color-mode=light] summary{display:list-item;cursor:pointer}}@media print{html progress,html[data-netbox-color-mode=dark] progress,html[data-netbox-color-mode=light] progress{vertical-align:baseline}}@media print{html [hidden],html[data-netbox-color-mode=dark] [hidden],html[data-netbox-color-mode=light] [hidden]{display:none!important}}@media print{html .lead,html[data-netbox-color-mode=dark] .lead,html[data-netbox-color-mode=light] .lead{font-size:1.25rem;font-weight:300}}@media print{html .display-1,html[data-netbox-color-mode=dark] .display-1,html[data-netbox-color-mode=light] .display-1{font-size:calc(1.625rem + 4.5vw);font-weight:300;line-height:1.2}}@media print and (min-width: 1200px){html .display-1,html[data-netbox-color-mode=dark] .display-1,html[data-netbox-color-mode=light] .display-1{font-size:5rem}}@media print{html .display-2,html[data-netbox-color-mode=dark] .display-2,html[data-netbox-color-mode=light] .display-2{font-size:calc(1.575rem + 3.9vw);font-weight:300;line-height:1.2}}@media print and (min-width: 1200px){html .display-2,html[data-netbox-color-mode=dark] .display-2,html[data-netbox-color-mode=light] .display-2{font-size:4.5rem}}@media print{html .display-3,html[data-netbox-color-mode=dark] .display-3,html[data-netbox-color-mode=light] .display-3{font-size:calc(1.525rem + 3.3vw);font-weight:300;line-height:1.2}}@media print and (min-width: 1200px){html .display-3,html[data-netbox-color-mode=dark] .display-3,html[data-netbox-color-mode=light] .display-3{font-size:4rem}}@media print{html .display-4,html[data-netbox-color-mode=dark] .display-4,html[data-netbox-color-mode=light] .display-4{font-size:calc(1.475rem + 2.7vw);font-weight:300;line-height:1.2}}@media print and (min-width: 1200px){html .display-4,html[data-netbox-color-mode=dark] .display-4,html[data-netbox-color-mode=light] .display-4{font-size:3.5rem}}@media print{html .display-5,html[data-netbox-color-mode=dark] .display-5,html[data-netbox-color-mode=light] .display-5{font-size:calc(1.425rem + 2.1vw);font-weight:300;line-height:1.2}}@media print and (min-width: 1200px){html .display-5,html[data-netbox-color-mode=dark] .display-5,html[data-netbox-color-mode=light] .display-5{font-size:3rem}}@media print{html .display-6,html[data-netbox-color-mode=dark] .display-6,html[data-netbox-color-mode=light] .display-6{font-size:calc(1.375rem + 1.5vw);font-weight:300;line-height:1.2}}@media print and (min-width: 1200px){html .display-6,html[data-netbox-color-mode=dark] .display-6,html[data-netbox-color-mode=light] .display-6{font-size:2.5rem}}@media print{html .list-unstyled,html[data-netbox-color-mode=dark] .list-unstyled,html[data-netbox-color-mode=light] .list-unstyled{padding-left:0;list-style:none}}@media print{html .list-inline,html[data-netbox-color-mode=dark] .list-inline,html[data-netbox-color-mode=light] .list-inline{padding-left:0;list-style:none}}@media print{html .list-inline-item,html[data-netbox-color-mode=dark] .list-inline-item,html[data-netbox-color-mode=light] .list-inline-item{display:inline-block}html .list-inline-item:not(:last-child),html[data-netbox-color-mode=dark] .list-inline-item:not(:last-child),html[data-netbox-color-mode=light] .list-inline-item:not(:last-child){margin-right:.5rem}}@media print{html .initialism,html[data-netbox-color-mode=dark] .initialism,html[data-netbox-color-mode=light] .initialism{font-size:.875em;text-transform:uppercase}}@media print{html .blockquote,html[data-netbox-color-mode=dark] .blockquote,html[data-netbox-color-mode=light] .blockquote{margin-bottom:1rem;font-size:1.25rem}html .blockquote>:last-child,html[data-netbox-color-mode=dark] .blockquote>:last-child,html[data-netbox-color-mode=light] .blockquote>:last-child{margin-bottom:0}}@media print{html .blockquote-footer,html[data-netbox-color-mode=dark] .blockquote-footer,html[data-netbox-color-mode=light] .blockquote-footer{margin-top:-1rem;margin-bottom:1rem;font-size:.875em;color:#6c757d}html .blockquote-footer:before,html[data-netbox-color-mode=dark] .blockquote-footer:before,html[data-netbox-color-mode=light] .blockquote-footer:before{content:"\2014\a0"}}@media print{html .img-fluid,html[data-netbox-color-mode=dark] .img-fluid,html[data-netbox-color-mode=light] .img-fluid{max-width:100%;height:auto}}@media print{html .img-thumbnail,html[data-netbox-color-mode=dark] .img-thumbnail,html[data-netbox-color-mode=light] .img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.375rem;max-width:100%;height:auto}}@media print{html .figure,html[data-netbox-color-mode=dark] .figure,html[data-netbox-color-mode=light] .figure{display:inline-block}}@media print{html .figure-img,html[data-netbox-color-mode=dark] .figure-img,html[data-netbox-color-mode=light] .figure-img{margin-bottom:.5rem;line-height:1}}@media print{html .figure-caption,html[data-netbox-color-mode=dark] .figure-caption,html[data-netbox-color-mode=light] .figure-caption{font-size:.875em;color:#6c757d}}@media print{html .container,html .container-fluid,html .container-xxl,html[data-netbox-color-mode=dark] .container-xxl,html[data-netbox-color-mode=light] .container-xxl,html .container-xl,html[data-netbox-color-mode=dark] .container-xl,html[data-netbox-color-mode=light] .container-xl,html .container-lg,html[data-netbox-color-mode=dark] .container-lg,html[data-netbox-color-mode=light] .container-lg,html .container-md,html[data-netbox-color-mode=dark] .container-md,html[data-netbox-color-mode=light] .container-md,html .container-sm,html[data-netbox-color-mode=dark] .container-sm,html[data-netbox-color-mode=light] .container-sm,html[data-netbox-color-mode=dark] .container,html[data-netbox-color-mode=dark] .container-fluid,html[data-netbox-color-mode=light] .container,html[data-netbox-color-mode=light] .container-fluid{width:100%;padding-right:var(--bs-gutter-x, .75rem);padding-left:var(--bs-gutter-x, .75rem);margin-right:auto;margin-left:auto}}@media print and (min-width: 576px){html .container-sm,html[data-netbox-color-mode=dark] .container-sm,html[data-netbox-color-mode=light] .container-sm,html .container,html[data-netbox-color-mode=dark] .container,html[data-netbox-color-mode=light] .container{max-width:540px}}@media print and (min-width: 768px){html .container-md,html[data-netbox-color-mode=dark] .container-md,html[data-netbox-color-mode=light] .container-md,html .container-sm,html[data-netbox-color-mode=dark] .container-sm,html[data-netbox-color-mode=light] .container-sm,html .container,html[data-netbox-color-mode=dark] .container,html[data-netbox-color-mode=light] .container{max-width:720px}}@media print and (min-width: 992px){html .container-lg,html[data-netbox-color-mode=dark] .container-lg,html[data-netbox-color-mode=light] .container-lg,html .container-md,html[data-netbox-color-mode=dark] .container-md,html[data-netbox-color-mode=light] .container-md,html .container-sm,html[data-netbox-color-mode=dark] .container-sm,html[data-netbox-color-mode=light] .container-sm,html .container,html[data-netbox-color-mode=dark] .container,html[data-netbox-color-mode=light] .container{max-width:960px}}@media print and (min-width: 1200px){html .container-xl,html[data-netbox-color-mode=dark] .container-xl,html[data-netbox-color-mode=light] .container-xl,html .container-lg,html[data-netbox-color-mode=dark] .container-lg,html[data-netbox-color-mode=light] .container-lg,html .container-md,html[data-netbox-color-mode=dark] .container-md,html[data-netbox-color-mode=light] .container-md,html .container-sm,html[data-netbox-color-mode=dark] .container-sm,html[data-netbox-color-mode=light] .container-sm,html .container,html[data-netbox-color-mode=dark] .container,html[data-netbox-color-mode=light] .container{max-width:1140px}}@media print and (min-width: 1400px){html .container-xxl,html[data-netbox-color-mode=dark] .container-xxl,html[data-netbox-color-mode=light] .container-xxl,html .container-xl,html[data-netbox-color-mode=dark] .container-xl,html[data-netbox-color-mode=light] .container-xl,html .container-lg,html[data-netbox-color-mode=dark] .container-lg,html[data-netbox-color-mode=light] .container-lg,html .container-md,html[data-netbox-color-mode=dark] .container-md,html[data-netbox-color-mode=light] .container-md,html .container-sm,html[data-netbox-color-mode=dark] .container-sm,html[data-netbox-color-mode=light] .container-sm,html .container,html[data-netbox-color-mode=dark] .container,html[data-netbox-color-mode=light] .container{max-width:1320px}}@media print{html .row,html[data-netbox-color-mode=dark] .row,html[data-netbox-color-mode=light] .row{--bs-gutter-x: 1.5rem;--bs-gutter-y: 0;display:flex;flex-wrap:wrap;margin-top:calc(var(--bs-gutter-y) * -1);margin-right:calc(var(--bs-gutter-x) * -.5);margin-left:calc(var(--bs-gutter-x) * -.5)}html .row>*,html[data-netbox-color-mode=dark] .row>*,html[data-netbox-color-mode=light] .row>*{flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-top:var(--bs-gutter-y)}}@media print{html .col,html[data-netbox-color-mode=dark] .col,html[data-netbox-color-mode=light] .col{flex:1 0 0%}}@media print{html .row-cols-auto>*,html[data-netbox-color-mode=dark] .row-cols-auto>*,html[data-netbox-color-mode=light] .row-cols-auto>*{flex:0 0 auto;width:auto}}@media print{html .row-cols-1>*,html[data-netbox-color-mode=dark] .row-cols-1>*,html[data-netbox-color-mode=light] .row-cols-1>*{flex:0 0 auto;width:100%}}@media print{html .row-cols-2>*,html[data-netbox-color-mode=dark] .row-cols-2>*,html[data-netbox-color-mode=light] .row-cols-2>*{flex:0 0 auto;width:50%}}@media print{html .row-cols-3>*,html[data-netbox-color-mode=dark] .row-cols-3>*,html[data-netbox-color-mode=light] .row-cols-3>*{flex:0 0 auto;width:33.3333333333%}}@media print{html .row-cols-4>*,html[data-netbox-color-mode=dark] .row-cols-4>*,html[data-netbox-color-mode=light] .row-cols-4>*{flex:0 0 auto;width:25%}}@media print{html .row-cols-5>*,html[data-netbox-color-mode=dark] .row-cols-5>*,html[data-netbox-color-mode=light] .row-cols-5>*{flex:0 0 auto;width:20%}}@media print{html .row-cols-6>*,html[data-netbox-color-mode=dark] .row-cols-6>*,html[data-netbox-color-mode=light] .row-cols-6>*{flex:0 0 auto;width:16.6666666667%}}@media print and (min-width: 576px){html .col-sm,html[data-netbox-color-mode=dark] .col-sm,html[data-netbox-color-mode=light] .col-sm{flex:1 0 0%}html .row-cols-sm-auto>*,html[data-netbox-color-mode=dark] .row-cols-sm-auto>*,html[data-netbox-color-mode=light] .row-cols-sm-auto>*{flex:0 0 auto;width:auto}html .row-cols-sm-1>*,html[data-netbox-color-mode=dark] .row-cols-sm-1>*,html[data-netbox-color-mode=light] .row-cols-sm-1>*{flex:0 0 auto;width:100%}html .row-cols-sm-2>*,html[data-netbox-color-mode=dark] .row-cols-sm-2>*,html[data-netbox-color-mode=light] .row-cols-sm-2>*{flex:0 0 auto;width:50%}html .row-cols-sm-3>*,html[data-netbox-color-mode=dark] .row-cols-sm-3>*,html[data-netbox-color-mode=light] .row-cols-sm-3>*{flex:0 0 auto;width:33.3333333333%}html .row-cols-sm-4>*,html[data-netbox-color-mode=dark] .row-cols-sm-4>*,html[data-netbox-color-mode=light] .row-cols-sm-4>*{flex:0 0 auto;width:25%}html .row-cols-sm-5>*,html[data-netbox-color-mode=dark] .row-cols-sm-5>*,html[data-netbox-color-mode=light] .row-cols-sm-5>*{flex:0 0 auto;width:20%}html .row-cols-sm-6>*,html[data-netbox-color-mode=dark] .row-cols-sm-6>*,html[data-netbox-color-mode=light] .row-cols-sm-6>*{flex:0 0 auto;width:16.6666666667%}}@media print and (min-width: 768px){html .col-md,html[data-netbox-color-mode=dark] .col-md,html[data-netbox-color-mode=light] .col-md{flex:1 0 0%}html .row-cols-md-auto>*,html[data-netbox-color-mode=dark] .row-cols-md-auto>*,html[data-netbox-color-mode=light] .row-cols-md-auto>*{flex:0 0 auto;width:auto}html .row-cols-md-1>*,html[data-netbox-color-mode=dark] .row-cols-md-1>*,html[data-netbox-color-mode=light] .row-cols-md-1>*{flex:0 0 auto;width:100%}html .row-cols-md-2>*,html[data-netbox-color-mode=dark] .row-cols-md-2>*,html[data-netbox-color-mode=light] .row-cols-md-2>*{flex:0 0 auto;width:50%}html .row-cols-md-3>*,html[data-netbox-color-mode=dark] .row-cols-md-3>*,html[data-netbox-color-mode=light] .row-cols-md-3>*{flex:0 0 auto;width:33.3333333333%}html .row-cols-md-4>*,html[data-netbox-color-mode=dark] .row-cols-md-4>*,html[data-netbox-color-mode=light] .row-cols-md-4>*{flex:0 0 auto;width:25%}html .row-cols-md-5>*,html[data-netbox-color-mode=dark] .row-cols-md-5>*,html[data-netbox-color-mode=light] .row-cols-md-5>*{flex:0 0 auto;width:20%}html .row-cols-md-6>*,html[data-netbox-color-mode=dark] .row-cols-md-6>*,html[data-netbox-color-mode=light] .row-cols-md-6>*{flex:0 0 auto;width:16.6666666667%}}@media print and (min-width: 992px){html .col-lg,html[data-netbox-color-mode=dark] .col-lg,html[data-netbox-color-mode=light] .col-lg{flex:1 0 0%}html .row-cols-lg-auto>*,html[data-netbox-color-mode=dark] .row-cols-lg-auto>*,html[data-netbox-color-mode=light] .row-cols-lg-auto>*{flex:0 0 auto;width:auto}html .row-cols-lg-1>*,html[data-netbox-color-mode=dark] .row-cols-lg-1>*,html[data-netbox-color-mode=light] .row-cols-lg-1>*{flex:0 0 auto;width:100%}html .row-cols-lg-2>*,html[data-netbox-color-mode=dark] .row-cols-lg-2>*,html[data-netbox-color-mode=light] .row-cols-lg-2>*{flex:0 0 auto;width:50%}html .row-cols-lg-3>*,html[data-netbox-color-mode=dark] .row-cols-lg-3>*,html[data-netbox-color-mode=light] .row-cols-lg-3>*{flex:0 0 auto;width:33.3333333333%}html .row-cols-lg-4>*,html[data-netbox-color-mode=dark] .row-cols-lg-4>*,html[data-netbox-color-mode=light] .row-cols-lg-4>*{flex:0 0 auto;width:25%}html .row-cols-lg-5>*,html[data-netbox-color-mode=dark] .row-cols-lg-5>*,html[data-netbox-color-mode=light] .row-cols-lg-5>*{flex:0 0 auto;width:20%}html .row-cols-lg-6>*,html[data-netbox-color-mode=dark] .row-cols-lg-6>*,html[data-netbox-color-mode=light] .row-cols-lg-6>*{flex:0 0 auto;width:16.6666666667%}}@media print and (min-width: 1200px){html .col-xl,html[data-netbox-color-mode=dark] .col-xl,html[data-netbox-color-mode=light] .col-xl{flex:1 0 0%}html .row-cols-xl-auto>*,html[data-netbox-color-mode=dark] .row-cols-xl-auto>*,html[data-netbox-color-mode=light] .row-cols-xl-auto>*{flex:0 0 auto;width:auto}html .row-cols-xl-1>*,html[data-netbox-color-mode=dark] .row-cols-xl-1>*,html[data-netbox-color-mode=light] .row-cols-xl-1>*{flex:0 0 auto;width:100%}html .row-cols-xl-2>*,html[data-netbox-color-mode=dark] .row-cols-xl-2>*,html[data-netbox-color-mode=light] .row-cols-xl-2>*{flex:0 0 auto;width:50%}html .row-cols-xl-3>*,html[data-netbox-color-mode=dark] .row-cols-xl-3>*,html[data-netbox-color-mode=light] .row-cols-xl-3>*{flex:0 0 auto;width:33.3333333333%}html .row-cols-xl-4>*,html[data-netbox-color-mode=dark] .row-cols-xl-4>*,html[data-netbox-color-mode=light] .row-cols-xl-4>*{flex:0 0 auto;width:25%}html .row-cols-xl-5>*,html[data-netbox-color-mode=dark] .row-cols-xl-5>*,html[data-netbox-color-mode=light] .row-cols-xl-5>*{flex:0 0 auto;width:20%}html .row-cols-xl-6>*,html[data-netbox-color-mode=dark] .row-cols-xl-6>*,html[data-netbox-color-mode=light] .row-cols-xl-6>*{flex:0 0 auto;width:16.6666666667%}}@media print and (min-width: 1400px){html .col-xxl,html[data-netbox-color-mode=dark] .col-xxl,html[data-netbox-color-mode=light] .col-xxl{flex:1 0 0%}html .row-cols-xxl-auto>*,html[data-netbox-color-mode=dark] .row-cols-xxl-auto>*,html[data-netbox-color-mode=light] .row-cols-xxl-auto>*{flex:0 0 auto;width:auto}html .row-cols-xxl-1>*,html[data-netbox-color-mode=dark] .row-cols-xxl-1>*,html[data-netbox-color-mode=light] .row-cols-xxl-1>*{flex:0 0 auto;width:100%}html .row-cols-xxl-2>*,html[data-netbox-color-mode=dark] .row-cols-xxl-2>*,html[data-netbox-color-mode=light] .row-cols-xxl-2>*{flex:0 0 auto;width:50%}html .row-cols-xxl-3>*,html[data-netbox-color-mode=dark] .row-cols-xxl-3>*,html[data-netbox-color-mode=light] .row-cols-xxl-3>*{flex:0 0 auto;width:33.3333333333%}html .row-cols-xxl-4>*,html[data-netbox-color-mode=dark] .row-cols-xxl-4>*,html[data-netbox-color-mode=light] .row-cols-xxl-4>*{flex:0 0 auto;width:25%}html .row-cols-xxl-5>*,html[data-netbox-color-mode=dark] .row-cols-xxl-5>*,html[data-netbox-color-mode=light] .row-cols-xxl-5>*{flex:0 0 auto;width:20%}html .row-cols-xxl-6>*,html[data-netbox-color-mode=dark] .row-cols-xxl-6>*,html[data-netbox-color-mode=light] .row-cols-xxl-6>*{flex:0 0 auto;width:16.6666666667%}}@media print{html .col-auto,html[data-netbox-color-mode=dark] .col-auto,html[data-netbox-color-mode=light] .col-auto{flex:0 0 auto;width:auto}}@media print{html .col-1,html[data-netbox-color-mode=dark] .col-1,html[data-netbox-color-mode=light] .col-1{flex:0 0 auto;width:8.33333333%}}@media print{html .col-2,html[data-netbox-color-mode=dark] .col-2,html[data-netbox-color-mode=light] .col-2{flex:0 0 auto;width:16.66666667%}}@media print{html .col-3,html[data-netbox-color-mode=dark] .col-3,html[data-netbox-color-mode=light] .col-3{flex:0 0 auto;width:25%}}@media print{html .col-4,html[data-netbox-color-mode=dark] .col-4,html[data-netbox-color-mode=light] .col-4{flex:0 0 auto;width:33.33333333%}}@media print{html .col-5,html[data-netbox-color-mode=dark] .col-5,html[data-netbox-color-mode=light] .col-5{flex:0 0 auto;width:41.66666667%}}@media print{html .col-6,html[data-netbox-color-mode=dark] .col-6,html[data-netbox-color-mode=light] .col-6{flex:0 0 auto;width:50%}}@media print{html .col-7,html[data-netbox-color-mode=dark] .col-7,html[data-netbox-color-mode=light] .col-7{flex:0 0 auto;width:58.33333333%}}@media print{html .col-8,html[data-netbox-color-mode=dark] .col-8,html[data-netbox-color-mode=light] .col-8{flex:0 0 auto;width:66.66666667%}}@media print{html .col-9,html[data-netbox-color-mode=dark] .col-9,html[data-netbox-color-mode=light] .col-9{flex:0 0 auto;width:75%}}@media print{html .col-10,html[data-netbox-color-mode=dark] .col-10,html[data-netbox-color-mode=light] .col-10{flex:0 0 auto;width:83.33333333%}}@media print{html .col-11,html[data-netbox-color-mode=dark] .col-11,html[data-netbox-color-mode=light] .col-11{flex:0 0 auto;width:91.66666667%}}@media print{html .col-12,html[data-netbox-color-mode=dark] .col-12,html[data-netbox-color-mode=light] .col-12{flex:0 0 auto;width:100%}}@media print{html .offset-1,html[data-netbox-color-mode=dark] .offset-1,html[data-netbox-color-mode=light] .offset-1{margin-left:8.33333333%}}@media print{html .offset-2,html[data-netbox-color-mode=dark] .offset-2,html[data-netbox-color-mode=light] .offset-2{margin-left:16.66666667%}}@media print{html .offset-3,html[data-netbox-color-mode=dark] .offset-3,html[data-netbox-color-mode=light] .offset-3{margin-left:25%}}@media print{html .offset-4,html[data-netbox-color-mode=dark] .offset-4,html[data-netbox-color-mode=light] .offset-4{margin-left:33.33333333%}}@media print{html .offset-5,html[data-netbox-color-mode=dark] .offset-5,html[data-netbox-color-mode=light] .offset-5{margin-left:41.66666667%}}@media print{html .offset-6,html[data-netbox-color-mode=dark] .offset-6,html[data-netbox-color-mode=light] .offset-6{margin-left:50%}}@media print{html .offset-7,html[data-netbox-color-mode=dark] .offset-7,html[data-netbox-color-mode=light] .offset-7{margin-left:58.33333333%}}@media print{html .offset-8,html[data-netbox-color-mode=dark] .offset-8,html[data-netbox-color-mode=light] .offset-8{margin-left:66.66666667%}}@media print{html .offset-9,html[data-netbox-color-mode=dark] .offset-9,html[data-netbox-color-mode=light] .offset-9{margin-left:75%}}@media print{html .offset-10,html[data-netbox-color-mode=dark] .offset-10,html[data-netbox-color-mode=light] .offset-10{margin-left:83.33333333%}}@media print{html .offset-11,html[data-netbox-color-mode=dark] .offset-11,html[data-netbox-color-mode=light] .offset-11{margin-left:91.66666667%}}@media print{html .g-0,html .gx-0,html[data-netbox-color-mode=dark] .g-0,html[data-netbox-color-mode=dark] .gx-0,html[data-netbox-color-mode=light] .g-0,html[data-netbox-color-mode=light] .gx-0{--bs-gutter-x: 0}}@media print{html .g-0,html .gy-0,html[data-netbox-color-mode=dark] .g-0,html[data-netbox-color-mode=dark] .gy-0,html[data-netbox-color-mode=light] .g-0,html[data-netbox-color-mode=light] .gy-0{--bs-gutter-y: 0}}@media print{html .g-1,html .gx-1,html[data-netbox-color-mode=dark] .g-1,html[data-netbox-color-mode=dark] .gx-1,html[data-netbox-color-mode=light] .g-1,html[data-netbox-color-mode=light] .gx-1{--bs-gutter-x: .25rem}}@media print{html .g-1,html .gy-1,html[data-netbox-color-mode=dark] .g-1,html[data-netbox-color-mode=dark] .gy-1,html[data-netbox-color-mode=light] .g-1,html[data-netbox-color-mode=light] .gy-1{--bs-gutter-y: .25rem}}@media print{html .g-2,html .gx-2,html[data-netbox-color-mode=dark] .g-2,html[data-netbox-color-mode=dark] .gx-2,html[data-netbox-color-mode=light] .g-2,html[data-netbox-color-mode=light] .gx-2{--bs-gutter-x: .5rem}}@media print{html .g-2,html .gy-2,html[data-netbox-color-mode=dark] .g-2,html[data-netbox-color-mode=dark] .gy-2,html[data-netbox-color-mode=light] .g-2,html[data-netbox-color-mode=light] .gy-2{--bs-gutter-y: .5rem}}@media print{html .g-3,html .gx-3,html[data-netbox-color-mode=dark] .g-3,html[data-netbox-color-mode=dark] .gx-3,html[data-netbox-color-mode=light] .g-3,html[data-netbox-color-mode=light] .gx-3{--bs-gutter-x: 1rem}}@media print{html .g-3,html .gy-3,html[data-netbox-color-mode=dark] .g-3,html[data-netbox-color-mode=dark] .gy-3,html[data-netbox-color-mode=light] .g-3,html[data-netbox-color-mode=light] .gy-3{--bs-gutter-y: 1rem}}@media print{html .g-4,html .gx-4,html[data-netbox-color-mode=dark] .g-4,html[data-netbox-color-mode=dark] .gx-4,html[data-netbox-color-mode=light] .g-4,html[data-netbox-color-mode=light] .gx-4{--bs-gutter-x: 1.5rem}}@media print{html .g-4,html .gy-4,html[data-netbox-color-mode=dark] .g-4,html[data-netbox-color-mode=dark] .gy-4,html[data-netbox-color-mode=light] .g-4,html[data-netbox-color-mode=light] .gy-4{--bs-gutter-y: 1.5rem}}@media print{html .g-5,html .gx-5,html[data-netbox-color-mode=dark] .g-5,html[data-netbox-color-mode=dark] .gx-5,html[data-netbox-color-mode=light] .g-5,html[data-netbox-color-mode=light] .gx-5{--bs-gutter-x: 3rem}}@media print{html .g-5,html .gy-5,html[data-netbox-color-mode=dark] .g-5,html[data-netbox-color-mode=dark] .gy-5,html[data-netbox-color-mode=light] .g-5,html[data-netbox-color-mode=light] .gy-5{--bs-gutter-y: 3rem}}@media print and (min-width: 576px){html .col-sm-auto,html[data-netbox-color-mode=dark] .col-sm-auto,html[data-netbox-color-mode=light] .col-sm-auto{flex:0 0 auto;width:auto}html .col-sm-1,html[data-netbox-color-mode=dark] .col-sm-1,html[data-netbox-color-mode=light] .col-sm-1{flex:0 0 auto;width:8.33333333%}html .col-sm-2,html[data-netbox-color-mode=dark] .col-sm-2,html[data-netbox-color-mode=light] .col-sm-2{flex:0 0 auto;width:16.66666667%}html .col-sm-3,html[data-netbox-color-mode=dark] .col-sm-3,html[data-netbox-color-mode=light] .col-sm-3{flex:0 0 auto;width:25%}html .col-sm-4,html[data-netbox-color-mode=dark] .col-sm-4,html[data-netbox-color-mode=light] .col-sm-4{flex:0 0 auto;width:33.33333333%}html .col-sm-5,html[data-netbox-color-mode=dark] .col-sm-5,html[data-netbox-color-mode=light] .col-sm-5{flex:0 0 auto;width:41.66666667%}html .col-sm-6,html[data-netbox-color-mode=dark] .col-sm-6,html[data-netbox-color-mode=light] .col-sm-6{flex:0 0 auto;width:50%}html .col-sm-7,html[data-netbox-color-mode=dark] .col-sm-7,html[data-netbox-color-mode=light] .col-sm-7{flex:0 0 auto;width:58.33333333%}html .col-sm-8,html[data-netbox-color-mode=dark] .col-sm-8,html[data-netbox-color-mode=light] .col-sm-8{flex:0 0 auto;width:66.66666667%}html .col-sm-9,html[data-netbox-color-mode=dark] .col-sm-9,html[data-netbox-color-mode=light] .col-sm-9{flex:0 0 auto;width:75%}html .col-sm-10,html[data-netbox-color-mode=dark] .col-sm-10,html[data-netbox-color-mode=light] .col-sm-10{flex:0 0 auto;width:83.33333333%}html .col-sm-11,html[data-netbox-color-mode=dark] .col-sm-11,html[data-netbox-color-mode=light] .col-sm-11{flex:0 0 auto;width:91.66666667%}html .col-sm-12,html[data-netbox-color-mode=dark] .col-sm-12,html[data-netbox-color-mode=light] .col-sm-12{flex:0 0 auto;width:100%}html .offset-sm-0,html[data-netbox-color-mode=dark] .offset-sm-0,html[data-netbox-color-mode=light] .offset-sm-0{margin-left:0}html .offset-sm-1,html[data-netbox-color-mode=dark] .offset-sm-1,html[data-netbox-color-mode=light] .offset-sm-1{margin-left:8.33333333%}html .offset-sm-2,html[data-netbox-color-mode=dark] .offset-sm-2,html[data-netbox-color-mode=light] .offset-sm-2{margin-left:16.66666667%}html .offset-sm-3,html[data-netbox-color-mode=dark] .offset-sm-3,html[data-netbox-color-mode=light] .offset-sm-3{margin-left:25%}html .offset-sm-4,html[data-netbox-color-mode=dark] .offset-sm-4,html[data-netbox-color-mode=light] .offset-sm-4{margin-left:33.33333333%}html .offset-sm-5,html[data-netbox-color-mode=dark] .offset-sm-5,html[data-netbox-color-mode=light] .offset-sm-5{margin-left:41.66666667%}html .offset-sm-6,html[data-netbox-color-mode=dark] .offset-sm-6,html[data-netbox-color-mode=light] .offset-sm-6{margin-left:50%}html .offset-sm-7,html[data-netbox-color-mode=dark] .offset-sm-7,html[data-netbox-color-mode=light] .offset-sm-7{margin-left:58.33333333%}html .offset-sm-8,html[data-netbox-color-mode=dark] .offset-sm-8,html[data-netbox-color-mode=light] .offset-sm-8{margin-left:66.66666667%}html .offset-sm-9,html[data-netbox-color-mode=dark] .offset-sm-9,html[data-netbox-color-mode=light] .offset-sm-9{margin-left:75%}html .offset-sm-10,html[data-netbox-color-mode=dark] .offset-sm-10,html[data-netbox-color-mode=light] .offset-sm-10{margin-left:83.33333333%}html .offset-sm-11,html[data-netbox-color-mode=dark] .offset-sm-11,html[data-netbox-color-mode=light] .offset-sm-11{margin-left:91.66666667%}html .g-sm-0,html .gx-sm-0,html[data-netbox-color-mode=dark] .g-sm-0,html[data-netbox-color-mode=dark] .gx-sm-0,html[data-netbox-color-mode=light] .g-sm-0,html[data-netbox-color-mode=light] .gx-sm-0{--bs-gutter-x: 0}html .g-sm-0,html .gy-sm-0,html[data-netbox-color-mode=dark] .g-sm-0,html[data-netbox-color-mode=dark] .gy-sm-0,html[data-netbox-color-mode=light] .g-sm-0,html[data-netbox-color-mode=light] .gy-sm-0{--bs-gutter-y: 0}html .g-sm-1,html .gx-sm-1,html[data-netbox-color-mode=dark] .g-sm-1,html[data-netbox-color-mode=dark] .gx-sm-1,html[data-netbox-color-mode=light] .g-sm-1,html[data-netbox-color-mode=light] .gx-sm-1{--bs-gutter-x: .25rem}html .g-sm-1,html .gy-sm-1,html[data-netbox-color-mode=dark] .g-sm-1,html[data-netbox-color-mode=dark] .gy-sm-1,html[data-netbox-color-mode=light] .g-sm-1,html[data-netbox-color-mode=light] .gy-sm-1{--bs-gutter-y: .25rem}html .g-sm-2,html .gx-sm-2,html[data-netbox-color-mode=dark] .g-sm-2,html[data-netbox-color-mode=dark] .gx-sm-2,html[data-netbox-color-mode=light] .g-sm-2,html[data-netbox-color-mode=light] .gx-sm-2{--bs-gutter-x: .5rem}html .g-sm-2,html .gy-sm-2,html[data-netbox-color-mode=dark] .g-sm-2,html[data-netbox-color-mode=dark] .gy-sm-2,html[data-netbox-color-mode=light] .g-sm-2,html[data-netbox-color-mode=light] .gy-sm-2{--bs-gutter-y: .5rem}html .g-sm-3,html .gx-sm-3,html[data-netbox-color-mode=dark] .g-sm-3,html[data-netbox-color-mode=dark] .gx-sm-3,html[data-netbox-color-mode=light] .g-sm-3,html[data-netbox-color-mode=light] .gx-sm-3{--bs-gutter-x: 1rem}html .g-sm-3,html .gy-sm-3,html[data-netbox-color-mode=dark] .g-sm-3,html[data-netbox-color-mode=dark] .gy-sm-3,html[data-netbox-color-mode=light] .g-sm-3,html[data-netbox-color-mode=light] .gy-sm-3{--bs-gutter-y: 1rem}html .g-sm-4,html .gx-sm-4,html[data-netbox-color-mode=dark] .g-sm-4,html[data-netbox-color-mode=dark] .gx-sm-4,html[data-netbox-color-mode=light] .g-sm-4,html[data-netbox-color-mode=light] .gx-sm-4{--bs-gutter-x: 1.5rem}html .g-sm-4,html .gy-sm-4,html[data-netbox-color-mode=dark] .g-sm-4,html[data-netbox-color-mode=dark] .gy-sm-4,html[data-netbox-color-mode=light] .g-sm-4,html[data-netbox-color-mode=light] .gy-sm-4{--bs-gutter-y: 1.5rem}html .g-sm-5,html .gx-sm-5,html[data-netbox-color-mode=dark] .g-sm-5,html[data-netbox-color-mode=dark] .gx-sm-5,html[data-netbox-color-mode=light] .g-sm-5,html[data-netbox-color-mode=light] .gx-sm-5{--bs-gutter-x: 3rem}html .g-sm-5,html .gy-sm-5,html[data-netbox-color-mode=dark] .g-sm-5,html[data-netbox-color-mode=dark] .gy-sm-5,html[data-netbox-color-mode=light] .g-sm-5,html[data-netbox-color-mode=light] .gy-sm-5{--bs-gutter-y: 3rem}}@media print and (min-width: 768px){html .col-md-auto,html[data-netbox-color-mode=dark] .col-md-auto,html[data-netbox-color-mode=light] .col-md-auto{flex:0 0 auto;width:auto}html .col-md-1,html[data-netbox-color-mode=dark] .col-md-1,html[data-netbox-color-mode=light] .col-md-1{flex:0 0 auto;width:8.33333333%}html .col-md-2,html[data-netbox-color-mode=dark] .col-md-2,html[data-netbox-color-mode=light] .col-md-2{flex:0 0 auto;width:16.66666667%}html .col-md-3,html[data-netbox-color-mode=dark] .col-md-3,html[data-netbox-color-mode=light] .col-md-3{flex:0 0 auto;width:25%}html .col-md-4,html[data-netbox-color-mode=dark] .col-md-4,html[data-netbox-color-mode=light] .col-md-4{flex:0 0 auto;width:33.33333333%}html .col-md-5,html[data-netbox-color-mode=dark] .col-md-5,html[data-netbox-color-mode=light] .col-md-5{flex:0 0 auto;width:41.66666667%}html .col-md-6,html[data-netbox-color-mode=dark] .col-md-6,html[data-netbox-color-mode=light] .col-md-6{flex:0 0 auto;width:50%}html .col-md-7,html[data-netbox-color-mode=dark] .col-md-7,html[data-netbox-color-mode=light] .col-md-7{flex:0 0 auto;width:58.33333333%}html .col-md-8,html[data-netbox-color-mode=dark] .col-md-8,html[data-netbox-color-mode=light] .col-md-8{flex:0 0 auto;width:66.66666667%}html .col-md-9,html[data-netbox-color-mode=dark] .col-md-9,html[data-netbox-color-mode=light] .col-md-9{flex:0 0 auto;width:75%}html .col-md-10,html[data-netbox-color-mode=dark] .col-md-10,html[data-netbox-color-mode=light] .col-md-10{flex:0 0 auto;width:83.33333333%}html .col-md-11,html[data-netbox-color-mode=dark] .col-md-11,html[data-netbox-color-mode=light] .col-md-11{flex:0 0 auto;width:91.66666667%}html .col-md-12,html[data-netbox-color-mode=dark] .col-md-12,html[data-netbox-color-mode=light] .col-md-12{flex:0 0 auto;width:100%}html .offset-md-0,html[data-netbox-color-mode=dark] .offset-md-0,html[data-netbox-color-mode=light] .offset-md-0{margin-left:0}html .offset-md-1,html[data-netbox-color-mode=dark] .offset-md-1,html[data-netbox-color-mode=light] .offset-md-1{margin-left:8.33333333%}html .offset-md-2,html[data-netbox-color-mode=dark] .offset-md-2,html[data-netbox-color-mode=light] .offset-md-2{margin-left:16.66666667%}html .offset-md-3,html[data-netbox-color-mode=dark] .offset-md-3,html[data-netbox-color-mode=light] .offset-md-3{margin-left:25%}html .offset-md-4,html[data-netbox-color-mode=dark] .offset-md-4,html[data-netbox-color-mode=light] .offset-md-4{margin-left:33.33333333%}html .offset-md-5,html[data-netbox-color-mode=dark] .offset-md-5,html[data-netbox-color-mode=light] .offset-md-5{margin-left:41.66666667%}html .offset-md-6,html[data-netbox-color-mode=dark] .offset-md-6,html[data-netbox-color-mode=light] .offset-md-6{margin-left:50%}html .offset-md-7,html[data-netbox-color-mode=dark] .offset-md-7,html[data-netbox-color-mode=light] .offset-md-7{margin-left:58.33333333%}html .offset-md-8,html[data-netbox-color-mode=dark] .offset-md-8,html[data-netbox-color-mode=light] .offset-md-8{margin-left:66.66666667%}html .offset-md-9,html[data-netbox-color-mode=dark] .offset-md-9,html[data-netbox-color-mode=light] .offset-md-9{margin-left:75%}html .offset-md-10,html[data-netbox-color-mode=dark] .offset-md-10,html[data-netbox-color-mode=light] .offset-md-10{margin-left:83.33333333%}html .offset-md-11,html[data-netbox-color-mode=dark] .offset-md-11,html[data-netbox-color-mode=light] .offset-md-11{margin-left:91.66666667%}html .g-md-0,html .gx-md-0,html[data-netbox-color-mode=dark] .g-md-0,html[data-netbox-color-mode=dark] .gx-md-0,html[data-netbox-color-mode=light] .g-md-0,html[data-netbox-color-mode=light] .gx-md-0{--bs-gutter-x: 0}html .g-md-0,html .gy-md-0,html[data-netbox-color-mode=dark] .g-md-0,html[data-netbox-color-mode=dark] .gy-md-0,html[data-netbox-color-mode=light] .g-md-0,html[data-netbox-color-mode=light] .gy-md-0{--bs-gutter-y: 0}html .g-md-1,html .gx-md-1,html[data-netbox-color-mode=dark] .g-md-1,html[data-netbox-color-mode=dark] .gx-md-1,html[data-netbox-color-mode=light] .g-md-1,html[data-netbox-color-mode=light] .gx-md-1{--bs-gutter-x: .25rem}html .g-md-1,html .gy-md-1,html[data-netbox-color-mode=dark] .g-md-1,html[data-netbox-color-mode=dark] .gy-md-1,html[data-netbox-color-mode=light] .g-md-1,html[data-netbox-color-mode=light] .gy-md-1{--bs-gutter-y: .25rem}html .g-md-2,html .gx-md-2,html[data-netbox-color-mode=dark] .g-md-2,html[data-netbox-color-mode=dark] .gx-md-2,html[data-netbox-color-mode=light] .g-md-2,html[data-netbox-color-mode=light] .gx-md-2{--bs-gutter-x: .5rem}html .g-md-2,html .gy-md-2,html[data-netbox-color-mode=dark] .g-md-2,html[data-netbox-color-mode=dark] .gy-md-2,html[data-netbox-color-mode=light] .g-md-2,html[data-netbox-color-mode=light] .gy-md-2{--bs-gutter-y: .5rem}html .g-md-3,html .gx-md-3,html[data-netbox-color-mode=dark] .g-md-3,html[data-netbox-color-mode=dark] .gx-md-3,html[data-netbox-color-mode=light] .g-md-3,html[data-netbox-color-mode=light] .gx-md-3{--bs-gutter-x: 1rem}html .g-md-3,html .gy-md-3,html[data-netbox-color-mode=dark] .g-md-3,html[data-netbox-color-mode=dark] .gy-md-3,html[data-netbox-color-mode=light] .g-md-3,html[data-netbox-color-mode=light] .gy-md-3{--bs-gutter-y: 1rem}html .g-md-4,html .gx-md-4,html[data-netbox-color-mode=dark] .g-md-4,html[data-netbox-color-mode=dark] .gx-md-4,html[data-netbox-color-mode=light] .g-md-4,html[data-netbox-color-mode=light] .gx-md-4{--bs-gutter-x: 1.5rem}html .g-md-4,html .gy-md-4,html[data-netbox-color-mode=dark] .g-md-4,html[data-netbox-color-mode=dark] .gy-md-4,html[data-netbox-color-mode=light] .g-md-4,html[data-netbox-color-mode=light] .gy-md-4{--bs-gutter-y: 1.5rem}html .g-md-5,html .gx-md-5,html[data-netbox-color-mode=dark] .g-md-5,html[data-netbox-color-mode=dark] .gx-md-5,html[data-netbox-color-mode=light] .g-md-5,html[data-netbox-color-mode=light] .gx-md-5{--bs-gutter-x: 3rem}html .g-md-5,html .gy-md-5,html[data-netbox-color-mode=dark] .g-md-5,html[data-netbox-color-mode=dark] .gy-md-5,html[data-netbox-color-mode=light] .g-md-5,html[data-netbox-color-mode=light] .gy-md-5{--bs-gutter-y: 3rem}}@media print and (min-width: 992px){html .col-lg-auto,html[data-netbox-color-mode=dark] .col-lg-auto,html[data-netbox-color-mode=light] .col-lg-auto{flex:0 0 auto;width:auto}html .col-lg-1,html[data-netbox-color-mode=dark] .col-lg-1,html[data-netbox-color-mode=light] .col-lg-1{flex:0 0 auto;width:8.33333333%}html .col-lg-2,html[data-netbox-color-mode=dark] .col-lg-2,html[data-netbox-color-mode=light] .col-lg-2{flex:0 0 auto;width:16.66666667%}html .col-lg-3,html[data-netbox-color-mode=dark] .col-lg-3,html[data-netbox-color-mode=light] .col-lg-3{flex:0 0 auto;width:25%}html .col-lg-4,html[data-netbox-color-mode=dark] .col-lg-4,html[data-netbox-color-mode=light] .col-lg-4{flex:0 0 auto;width:33.33333333%}html .col-lg-5,html[data-netbox-color-mode=dark] .col-lg-5,html[data-netbox-color-mode=light] .col-lg-5{flex:0 0 auto;width:41.66666667%}html .col-lg-6,html[data-netbox-color-mode=dark] .col-lg-6,html[data-netbox-color-mode=light] .col-lg-6{flex:0 0 auto;width:50%}html .col-lg-7,html[data-netbox-color-mode=dark] .col-lg-7,html[data-netbox-color-mode=light] .col-lg-7{flex:0 0 auto;width:58.33333333%}html .col-lg-8,html[data-netbox-color-mode=dark] .col-lg-8,html[data-netbox-color-mode=light] .col-lg-8{flex:0 0 auto;width:66.66666667%}html .col-lg-9,html[data-netbox-color-mode=dark] .col-lg-9,html[data-netbox-color-mode=light] .col-lg-9{flex:0 0 auto;width:75%}html .col-lg-10,html[data-netbox-color-mode=dark] .col-lg-10,html[data-netbox-color-mode=light] .col-lg-10{flex:0 0 auto;width:83.33333333%}html .col-lg-11,html[data-netbox-color-mode=dark] .col-lg-11,html[data-netbox-color-mode=light] .col-lg-11{flex:0 0 auto;width:91.66666667%}html .col-lg-12,html[data-netbox-color-mode=dark] .col-lg-12,html[data-netbox-color-mode=light] .col-lg-12{flex:0 0 auto;width:100%}html .offset-lg-0,html[data-netbox-color-mode=dark] .offset-lg-0,html[data-netbox-color-mode=light] .offset-lg-0{margin-left:0}html .offset-lg-1,html[data-netbox-color-mode=dark] .offset-lg-1,html[data-netbox-color-mode=light] .offset-lg-1{margin-left:8.33333333%}html .offset-lg-2,html[data-netbox-color-mode=dark] .offset-lg-2,html[data-netbox-color-mode=light] .offset-lg-2{margin-left:16.66666667%}html .offset-lg-3,html[data-netbox-color-mode=dark] .offset-lg-3,html[data-netbox-color-mode=light] .offset-lg-3{margin-left:25%}html .offset-lg-4,html[data-netbox-color-mode=dark] .offset-lg-4,html[data-netbox-color-mode=light] .offset-lg-4{margin-left:33.33333333%}html .offset-lg-5,html[data-netbox-color-mode=dark] .offset-lg-5,html[data-netbox-color-mode=light] .offset-lg-5{margin-left:41.66666667%}html .offset-lg-6,html[data-netbox-color-mode=dark] .offset-lg-6,html[data-netbox-color-mode=light] .offset-lg-6{margin-left:50%}html .offset-lg-7,html[data-netbox-color-mode=dark] .offset-lg-7,html[data-netbox-color-mode=light] .offset-lg-7{margin-left:58.33333333%}html .offset-lg-8,html[data-netbox-color-mode=dark] .offset-lg-8,html[data-netbox-color-mode=light] .offset-lg-8{margin-left:66.66666667%}html .offset-lg-9,html[data-netbox-color-mode=dark] .offset-lg-9,html[data-netbox-color-mode=light] .offset-lg-9{margin-left:75%}html .offset-lg-10,html[data-netbox-color-mode=dark] .offset-lg-10,html[data-netbox-color-mode=light] .offset-lg-10{margin-left:83.33333333%}html .offset-lg-11,html[data-netbox-color-mode=dark] .offset-lg-11,html[data-netbox-color-mode=light] .offset-lg-11{margin-left:91.66666667%}html .g-lg-0,html .gx-lg-0,html[data-netbox-color-mode=dark] .g-lg-0,html[data-netbox-color-mode=dark] .gx-lg-0,html[data-netbox-color-mode=light] .g-lg-0,html[data-netbox-color-mode=light] .gx-lg-0{--bs-gutter-x: 0}html .g-lg-0,html .gy-lg-0,html[data-netbox-color-mode=dark] .g-lg-0,html[data-netbox-color-mode=dark] .gy-lg-0,html[data-netbox-color-mode=light] .g-lg-0,html[data-netbox-color-mode=light] .gy-lg-0{--bs-gutter-y: 0}html .g-lg-1,html .gx-lg-1,html[data-netbox-color-mode=dark] .g-lg-1,html[data-netbox-color-mode=dark] .gx-lg-1,html[data-netbox-color-mode=light] .g-lg-1,html[data-netbox-color-mode=light] .gx-lg-1{--bs-gutter-x: .25rem}html .g-lg-1,html .gy-lg-1,html[data-netbox-color-mode=dark] .g-lg-1,html[data-netbox-color-mode=dark] .gy-lg-1,html[data-netbox-color-mode=light] .g-lg-1,html[data-netbox-color-mode=light] .gy-lg-1{--bs-gutter-y: .25rem}html .g-lg-2,html .gx-lg-2,html[data-netbox-color-mode=dark] .g-lg-2,html[data-netbox-color-mode=dark] .gx-lg-2,html[data-netbox-color-mode=light] .g-lg-2,html[data-netbox-color-mode=light] .gx-lg-2{--bs-gutter-x: .5rem}html .g-lg-2,html .gy-lg-2,html[data-netbox-color-mode=dark] .g-lg-2,html[data-netbox-color-mode=dark] .gy-lg-2,html[data-netbox-color-mode=light] .g-lg-2,html[data-netbox-color-mode=light] .gy-lg-2{--bs-gutter-y: .5rem}html .g-lg-3,html .gx-lg-3,html[data-netbox-color-mode=dark] .g-lg-3,html[data-netbox-color-mode=dark] .gx-lg-3,html[data-netbox-color-mode=light] .g-lg-3,html[data-netbox-color-mode=light] .gx-lg-3{--bs-gutter-x: 1rem}html .g-lg-3,html .gy-lg-3,html[data-netbox-color-mode=dark] .g-lg-3,html[data-netbox-color-mode=dark] .gy-lg-3,html[data-netbox-color-mode=light] .g-lg-3,html[data-netbox-color-mode=light] .gy-lg-3{--bs-gutter-y: 1rem}html .g-lg-4,html .gx-lg-4,html[data-netbox-color-mode=dark] .g-lg-4,html[data-netbox-color-mode=dark] .gx-lg-4,html[data-netbox-color-mode=light] .g-lg-4,html[data-netbox-color-mode=light] .gx-lg-4{--bs-gutter-x: 1.5rem}html .g-lg-4,html .gy-lg-4,html[data-netbox-color-mode=dark] .g-lg-4,html[data-netbox-color-mode=dark] .gy-lg-4,html[data-netbox-color-mode=light] .g-lg-4,html[data-netbox-color-mode=light] .gy-lg-4{--bs-gutter-y: 1.5rem}html .g-lg-5,html .gx-lg-5,html[data-netbox-color-mode=dark] .g-lg-5,html[data-netbox-color-mode=dark] .gx-lg-5,html[data-netbox-color-mode=light] .g-lg-5,html[data-netbox-color-mode=light] .gx-lg-5{--bs-gutter-x: 3rem}html .g-lg-5,html .gy-lg-5,html[data-netbox-color-mode=dark] .g-lg-5,html[data-netbox-color-mode=dark] .gy-lg-5,html[data-netbox-color-mode=light] .g-lg-5,html[data-netbox-color-mode=light] .gy-lg-5{--bs-gutter-y: 3rem}}@media print and (min-width: 1200px){html .col-xl-auto,html[data-netbox-color-mode=dark] .col-xl-auto,html[data-netbox-color-mode=light] .col-xl-auto{flex:0 0 auto;width:auto}html .col-xl-1,html[data-netbox-color-mode=dark] .col-xl-1,html[data-netbox-color-mode=light] .col-xl-1{flex:0 0 auto;width:8.33333333%}html .col-xl-2,html[data-netbox-color-mode=dark] .col-xl-2,html[data-netbox-color-mode=light] .col-xl-2{flex:0 0 auto;width:16.66666667%}html .col-xl-3,html[data-netbox-color-mode=dark] .col-xl-3,html[data-netbox-color-mode=light] .col-xl-3{flex:0 0 auto;width:25%}html .col-xl-4,html[data-netbox-color-mode=dark] .col-xl-4,html[data-netbox-color-mode=light] .col-xl-4{flex:0 0 auto;width:33.33333333%}html .col-xl-5,html[data-netbox-color-mode=dark] .col-xl-5,html[data-netbox-color-mode=light] .col-xl-5{flex:0 0 auto;width:41.66666667%}html .col-xl-6,html[data-netbox-color-mode=dark] .col-xl-6,html[data-netbox-color-mode=light] .col-xl-6{flex:0 0 auto;width:50%}html .col-xl-7,html[data-netbox-color-mode=dark] .col-xl-7,html[data-netbox-color-mode=light] .col-xl-7{flex:0 0 auto;width:58.33333333%}html .col-xl-8,html[data-netbox-color-mode=dark] .col-xl-8,html[data-netbox-color-mode=light] .col-xl-8{flex:0 0 auto;width:66.66666667%}html .col-xl-9,html[data-netbox-color-mode=dark] .col-xl-9,html[data-netbox-color-mode=light] .col-xl-9{flex:0 0 auto;width:75%}html .col-xl-10,html[data-netbox-color-mode=dark] .col-xl-10,html[data-netbox-color-mode=light] .col-xl-10{flex:0 0 auto;width:83.33333333%}html .col-xl-11,html[data-netbox-color-mode=dark] .col-xl-11,html[data-netbox-color-mode=light] .col-xl-11{flex:0 0 auto;width:91.66666667%}html .col-xl-12,html[data-netbox-color-mode=dark] .col-xl-12,html[data-netbox-color-mode=light] .col-xl-12{flex:0 0 auto;width:100%}html .offset-xl-0,html[data-netbox-color-mode=dark] .offset-xl-0,html[data-netbox-color-mode=light] .offset-xl-0{margin-left:0}html .offset-xl-1,html[data-netbox-color-mode=dark] .offset-xl-1,html[data-netbox-color-mode=light] .offset-xl-1{margin-left:8.33333333%}html .offset-xl-2,html[data-netbox-color-mode=dark] .offset-xl-2,html[data-netbox-color-mode=light] .offset-xl-2{margin-left:16.66666667%}html .offset-xl-3,html[data-netbox-color-mode=dark] .offset-xl-3,html[data-netbox-color-mode=light] .offset-xl-3{margin-left:25%}html .offset-xl-4,html[data-netbox-color-mode=dark] .offset-xl-4,html[data-netbox-color-mode=light] .offset-xl-4{margin-left:33.33333333%}html .offset-xl-5,html[data-netbox-color-mode=dark] .offset-xl-5,html[data-netbox-color-mode=light] .offset-xl-5{margin-left:41.66666667%}html .offset-xl-6,html[data-netbox-color-mode=dark] .offset-xl-6,html[data-netbox-color-mode=light] .offset-xl-6{margin-left:50%}html .offset-xl-7,html[data-netbox-color-mode=dark] .offset-xl-7,html[data-netbox-color-mode=light] .offset-xl-7{margin-left:58.33333333%}html .offset-xl-8,html[data-netbox-color-mode=dark] .offset-xl-8,html[data-netbox-color-mode=light] .offset-xl-8{margin-left:66.66666667%}html .offset-xl-9,html[data-netbox-color-mode=dark] .offset-xl-9,html[data-netbox-color-mode=light] .offset-xl-9{margin-left:75%}html .offset-xl-10,html[data-netbox-color-mode=dark] .offset-xl-10,html[data-netbox-color-mode=light] .offset-xl-10{margin-left:83.33333333%}html .offset-xl-11,html[data-netbox-color-mode=dark] .offset-xl-11,html[data-netbox-color-mode=light] .offset-xl-11{margin-left:91.66666667%}html .g-xl-0,html .gx-xl-0,html[data-netbox-color-mode=dark] .g-xl-0,html[data-netbox-color-mode=dark] .gx-xl-0,html[data-netbox-color-mode=light] .g-xl-0,html[data-netbox-color-mode=light] .gx-xl-0{--bs-gutter-x: 0}html .g-xl-0,html .gy-xl-0,html[data-netbox-color-mode=dark] .g-xl-0,html[data-netbox-color-mode=dark] .gy-xl-0,html[data-netbox-color-mode=light] .g-xl-0,html[data-netbox-color-mode=light] .gy-xl-0{--bs-gutter-y: 0}html .g-xl-1,html .gx-xl-1,html[data-netbox-color-mode=dark] .g-xl-1,html[data-netbox-color-mode=dark] .gx-xl-1,html[data-netbox-color-mode=light] .g-xl-1,html[data-netbox-color-mode=light] .gx-xl-1{--bs-gutter-x: .25rem}html .g-xl-1,html .gy-xl-1,html[data-netbox-color-mode=dark] .g-xl-1,html[data-netbox-color-mode=dark] .gy-xl-1,html[data-netbox-color-mode=light] .g-xl-1,html[data-netbox-color-mode=light] .gy-xl-1{--bs-gutter-y: .25rem}html .g-xl-2,html .gx-xl-2,html[data-netbox-color-mode=dark] .g-xl-2,html[data-netbox-color-mode=dark] .gx-xl-2,html[data-netbox-color-mode=light] .g-xl-2,html[data-netbox-color-mode=light] .gx-xl-2{--bs-gutter-x: .5rem}html .g-xl-2,html .gy-xl-2,html[data-netbox-color-mode=dark] .g-xl-2,html[data-netbox-color-mode=dark] .gy-xl-2,html[data-netbox-color-mode=light] .g-xl-2,html[data-netbox-color-mode=light] .gy-xl-2{--bs-gutter-y: .5rem}html .g-xl-3,html .gx-xl-3,html[data-netbox-color-mode=dark] .g-xl-3,html[data-netbox-color-mode=dark] .gx-xl-3,html[data-netbox-color-mode=light] .g-xl-3,html[data-netbox-color-mode=light] .gx-xl-3{--bs-gutter-x: 1rem}html .g-xl-3,html .gy-xl-3,html[data-netbox-color-mode=dark] .g-xl-3,html[data-netbox-color-mode=dark] .gy-xl-3,html[data-netbox-color-mode=light] .g-xl-3,html[data-netbox-color-mode=light] .gy-xl-3{--bs-gutter-y: 1rem}html .g-xl-4,html .gx-xl-4,html[data-netbox-color-mode=dark] .g-xl-4,html[data-netbox-color-mode=dark] .gx-xl-4,html[data-netbox-color-mode=light] .g-xl-4,html[data-netbox-color-mode=light] .gx-xl-4{--bs-gutter-x: 1.5rem}html .g-xl-4,html .gy-xl-4,html[data-netbox-color-mode=dark] .g-xl-4,html[data-netbox-color-mode=dark] .gy-xl-4,html[data-netbox-color-mode=light] .g-xl-4,html[data-netbox-color-mode=light] .gy-xl-4{--bs-gutter-y: 1.5rem}html .g-xl-5,html .gx-xl-5,html[data-netbox-color-mode=dark] .g-xl-5,html[data-netbox-color-mode=dark] .gx-xl-5,html[data-netbox-color-mode=light] .g-xl-5,html[data-netbox-color-mode=light] .gx-xl-5{--bs-gutter-x: 3rem}html .g-xl-5,html .gy-xl-5,html[data-netbox-color-mode=dark] .g-xl-5,html[data-netbox-color-mode=dark] .gy-xl-5,html[data-netbox-color-mode=light] .g-xl-5,html[data-netbox-color-mode=light] .gy-xl-5{--bs-gutter-y: 3rem}}@media print and (min-width: 1400px){html .col-xxl-auto,html[data-netbox-color-mode=dark] .col-xxl-auto,html[data-netbox-color-mode=light] .col-xxl-auto{flex:0 0 auto;width:auto}html .col-xxl-1,html[data-netbox-color-mode=dark] .col-xxl-1,html[data-netbox-color-mode=light] .col-xxl-1{flex:0 0 auto;width:8.33333333%}html .col-xxl-2,html[data-netbox-color-mode=dark] .col-xxl-2,html[data-netbox-color-mode=light] .col-xxl-2{flex:0 0 auto;width:16.66666667%}html .col-xxl-3,html[data-netbox-color-mode=dark] .col-xxl-3,html[data-netbox-color-mode=light] .col-xxl-3{flex:0 0 auto;width:25%}html .col-xxl-4,html[data-netbox-color-mode=dark] .col-xxl-4,html[data-netbox-color-mode=light] .col-xxl-4{flex:0 0 auto;width:33.33333333%}html .col-xxl-5,html[data-netbox-color-mode=dark] .col-xxl-5,html[data-netbox-color-mode=light] .col-xxl-5{flex:0 0 auto;width:41.66666667%}html .col-xxl-6,html[data-netbox-color-mode=dark] .col-xxl-6,html[data-netbox-color-mode=light] .col-xxl-6{flex:0 0 auto;width:50%}html .col-xxl-7,html[data-netbox-color-mode=dark] .col-xxl-7,html[data-netbox-color-mode=light] .col-xxl-7{flex:0 0 auto;width:58.33333333%}html .col-xxl-8,html[data-netbox-color-mode=dark] .col-xxl-8,html[data-netbox-color-mode=light] .col-xxl-8{flex:0 0 auto;width:66.66666667%}html .col-xxl-9,html[data-netbox-color-mode=dark] .col-xxl-9,html[data-netbox-color-mode=light] .col-xxl-9{flex:0 0 auto;width:75%}html .col-xxl-10,html[data-netbox-color-mode=dark] .col-xxl-10,html[data-netbox-color-mode=light] .col-xxl-10{flex:0 0 auto;width:83.33333333%}html .col-xxl-11,html[data-netbox-color-mode=dark] .col-xxl-11,html[data-netbox-color-mode=light] .col-xxl-11{flex:0 0 auto;width:91.66666667%}html .col-xxl-12,html[data-netbox-color-mode=dark] .col-xxl-12,html[data-netbox-color-mode=light] .col-xxl-12{flex:0 0 auto;width:100%}html .offset-xxl-0,html[data-netbox-color-mode=dark] .offset-xxl-0,html[data-netbox-color-mode=light] .offset-xxl-0{margin-left:0}html .offset-xxl-1,html[data-netbox-color-mode=dark] .offset-xxl-1,html[data-netbox-color-mode=light] .offset-xxl-1{margin-left:8.33333333%}html .offset-xxl-2,html[data-netbox-color-mode=dark] .offset-xxl-2,html[data-netbox-color-mode=light] .offset-xxl-2{margin-left:16.66666667%}html .offset-xxl-3,html[data-netbox-color-mode=dark] .offset-xxl-3,html[data-netbox-color-mode=light] .offset-xxl-3{margin-left:25%}html .offset-xxl-4,html[data-netbox-color-mode=dark] .offset-xxl-4,html[data-netbox-color-mode=light] .offset-xxl-4{margin-left:33.33333333%}html .offset-xxl-5,html[data-netbox-color-mode=dark] .offset-xxl-5,html[data-netbox-color-mode=light] .offset-xxl-5{margin-left:41.66666667%}html .offset-xxl-6,html[data-netbox-color-mode=dark] .offset-xxl-6,html[data-netbox-color-mode=light] .offset-xxl-6{margin-left:50%}html .offset-xxl-7,html[data-netbox-color-mode=dark] .offset-xxl-7,html[data-netbox-color-mode=light] .offset-xxl-7{margin-left:58.33333333%}html .offset-xxl-8,html[data-netbox-color-mode=dark] .offset-xxl-8,html[data-netbox-color-mode=light] .offset-xxl-8{margin-left:66.66666667%}html .offset-xxl-9,html[data-netbox-color-mode=dark] .offset-xxl-9,html[data-netbox-color-mode=light] .offset-xxl-9{margin-left:75%}html .offset-xxl-10,html[data-netbox-color-mode=dark] .offset-xxl-10,html[data-netbox-color-mode=light] .offset-xxl-10{margin-left:83.33333333%}html .offset-xxl-11,html[data-netbox-color-mode=dark] .offset-xxl-11,html[data-netbox-color-mode=light] .offset-xxl-11{margin-left:91.66666667%}html .g-xxl-0,html .gx-xxl-0,html[data-netbox-color-mode=dark] .g-xxl-0,html[data-netbox-color-mode=dark] .gx-xxl-0,html[data-netbox-color-mode=light] .g-xxl-0,html[data-netbox-color-mode=light] .gx-xxl-0{--bs-gutter-x: 0}html .g-xxl-0,html .gy-xxl-0,html[data-netbox-color-mode=dark] .g-xxl-0,html[data-netbox-color-mode=dark] .gy-xxl-0,html[data-netbox-color-mode=light] .g-xxl-0,html[data-netbox-color-mode=light] .gy-xxl-0{--bs-gutter-y: 0}html .g-xxl-1,html .gx-xxl-1,html[data-netbox-color-mode=dark] .g-xxl-1,html[data-netbox-color-mode=dark] .gx-xxl-1,html[data-netbox-color-mode=light] .g-xxl-1,html[data-netbox-color-mode=light] .gx-xxl-1{--bs-gutter-x: .25rem}html .g-xxl-1,html .gy-xxl-1,html[data-netbox-color-mode=dark] .g-xxl-1,html[data-netbox-color-mode=dark] .gy-xxl-1,html[data-netbox-color-mode=light] .g-xxl-1,html[data-netbox-color-mode=light] .gy-xxl-1{--bs-gutter-y: .25rem}html .g-xxl-2,html .gx-xxl-2,html[data-netbox-color-mode=dark] .g-xxl-2,html[data-netbox-color-mode=dark] .gx-xxl-2,html[data-netbox-color-mode=light] .g-xxl-2,html[data-netbox-color-mode=light] .gx-xxl-2{--bs-gutter-x: .5rem}html .g-xxl-2,html .gy-xxl-2,html[data-netbox-color-mode=dark] .g-xxl-2,html[data-netbox-color-mode=dark] .gy-xxl-2,html[data-netbox-color-mode=light] .g-xxl-2,html[data-netbox-color-mode=light] .gy-xxl-2{--bs-gutter-y: .5rem}html .g-xxl-3,html .gx-xxl-3,html[data-netbox-color-mode=dark] .g-xxl-3,html[data-netbox-color-mode=dark] .gx-xxl-3,html[data-netbox-color-mode=light] .g-xxl-3,html[data-netbox-color-mode=light] .gx-xxl-3{--bs-gutter-x: 1rem}html .g-xxl-3,html .gy-xxl-3,html[data-netbox-color-mode=dark] .g-xxl-3,html[data-netbox-color-mode=dark] .gy-xxl-3,html[data-netbox-color-mode=light] .g-xxl-3,html[data-netbox-color-mode=light] .gy-xxl-3{--bs-gutter-y: 1rem}html .g-xxl-4,html .gx-xxl-4,html[data-netbox-color-mode=dark] .g-xxl-4,html[data-netbox-color-mode=dark] .gx-xxl-4,html[data-netbox-color-mode=light] .g-xxl-4,html[data-netbox-color-mode=light] .gx-xxl-4{--bs-gutter-x: 1.5rem}html .g-xxl-4,html .gy-xxl-4,html[data-netbox-color-mode=dark] .g-xxl-4,html[data-netbox-color-mode=dark] .gy-xxl-4,html[data-netbox-color-mode=light] .g-xxl-4,html[data-netbox-color-mode=light] .gy-xxl-4{--bs-gutter-y: 1.5rem}html .g-xxl-5,html .gx-xxl-5,html[data-netbox-color-mode=dark] .g-xxl-5,html[data-netbox-color-mode=dark] .gx-xxl-5,html[data-netbox-color-mode=light] .g-xxl-5,html[data-netbox-color-mode=light] .gx-xxl-5{--bs-gutter-x: 3rem}html .g-xxl-5,html .gy-xxl-5,html[data-netbox-color-mode=dark] .g-xxl-5,html[data-netbox-color-mode=dark] .gy-xxl-5,html[data-netbox-color-mode=light] .g-xxl-5,html[data-netbox-color-mode=light] .gy-xxl-5{--bs-gutter-y: 3rem}}@media print{html .table,html[data-netbox-color-mode=dark] .table,html[data-netbox-color-mode=light] .table{--bs-table-bg: transparent;--bs-table-accent-bg: transparent;--bs-table-striped-color: #212529;--bs-table-striped-bg: rgba(0, 0, 0, .05);--bs-table-active-color: #212529;--bs-table-active-bg: rgba(0, 0, 0, .1);--bs-table-hover-color: #212529;--bs-table-hover-bg: rgba(0, 0, 0, .075);width:100%;margin-bottom:1rem;color:#212529;vertical-align:top;border-color:#dee2e6}html .table>:not(caption)>*>*,html[data-netbox-color-mode=dark] .table>:not(caption)>*>*,html[data-netbox-color-mode=light] .table>:not(caption)>*>*{padding:.5rem;background-color:var(--bs-table-bg);border-bottom-width:1px;box-shadow:inset 0 0 0 9999px var(--bs-table-accent-bg)}html .table>tbody,html[data-netbox-color-mode=dark] .table>tbody,html[data-netbox-color-mode=light] .table>tbody{vertical-align:inherit}html .table>thead,html[data-netbox-color-mode=dark] .table>thead,html[data-netbox-color-mode=light] .table>thead{vertical-align:bottom}html .table>:not(:last-child)>:last-child>*,html[data-netbox-color-mode=dark] .table>:not(:last-child)>:last-child>*,html[data-netbox-color-mode=light] .table>:not(:last-child)>:last-child>*{border-bottom-color:currentColor}}@media print{html .caption-top,html[data-netbox-color-mode=dark] .caption-top,html[data-netbox-color-mode=light] .caption-top{caption-side:top}}@media print{html .table-sm>:not(caption)>*>*,html[data-netbox-color-mode=dark] .table-sm>:not(caption)>*>*,html[data-netbox-color-mode=light] .table-sm>:not(caption)>*>*{padding:.25rem}}@media print{html .table-bordered>:not(caption)>*,html[data-netbox-color-mode=dark] .table-bordered>:not(caption)>*,html[data-netbox-color-mode=light] .table-bordered>:not(caption)>*{border-width:1px 0}html .table-bordered>:not(caption)>*>*,html[data-netbox-color-mode=dark] .table-bordered>:not(caption)>*>*,html[data-netbox-color-mode=light] .table-bordered>:not(caption)>*>*{border-width:0 1px}}@media print{html .table-borderless>:not(caption)>*>*,html[data-netbox-color-mode=dark] .table-borderless>:not(caption)>*>*,html[data-netbox-color-mode=light] .table-borderless>:not(caption)>*>*{border-bottom-width:0}}@media print{html .table-striped>tbody>tr:nth-of-type(odd),html[data-netbox-color-mode=dark] .table-striped>tbody>tr:nth-of-type(odd),html[data-netbox-color-mode=light] .table-striped>tbody>tr:nth-of-type(odd){--bs-table-accent-bg: var(--bs-table-striped-bg);color:var(--bs-table-striped-color)}}@media print{html .table-active,html[data-netbox-color-mode=dark] .table-active,html[data-netbox-color-mode=light] .table-active{--bs-table-accent-bg: var(--bs-table-active-bg);color:var(--bs-table-active-color)}}@media print{html .table-hover>tbody>tr:hover,html[data-netbox-color-mode=dark] .table-hover>tbody>tr:hover,html[data-netbox-color-mode=light] .table-hover>tbody>tr:hover{--bs-table-accent-bg: var(--bs-table-hover-bg);color:var(--bs-table-hover-color)}}@media print{html .table-primary,html[data-netbox-color-mode=dark] .table-primary,html[data-netbox-color-mode=light] .table-primary{--bs-table-bg: #cfe2ff;--bs-table-striped-bg: #c5d7f2;--bs-table-striped-color: #000;--bs-table-active-bg: #bacbe6;--bs-table-active-color: #000;--bs-table-hover-bg: #bfd1ec;--bs-table-hover-color: #000;color:#000;border-color:#bacbe6}}@media print{html .table-secondary,html[data-netbox-color-mode=dark] .table-secondary,html[data-netbox-color-mode=light] .table-secondary{--bs-table-bg: #e2e3e5;--bs-table-striped-bg: #d7d8da;--bs-table-striped-color: #000;--bs-table-active-bg: #cbccce;--bs-table-active-color: #000;--bs-table-hover-bg: #d1d2d4;--bs-table-hover-color: #000;color:#000;border-color:#cbccce}}@media print{html .table-success,html[data-netbox-color-mode=dark] .table-success,html[data-netbox-color-mode=light] .table-success{--bs-table-bg: #d1e7dd;--bs-table-striped-bg: #c7dbd2;--bs-table-striped-color: #000;--bs-table-active-bg: #bcd0c7;--bs-table-active-color: #000;--bs-table-hover-bg: #c1d6cc;--bs-table-hover-color: #000;color:#000;border-color:#bcd0c7}}@media print{html .table-info,html[data-netbox-color-mode=dark] .table-info,html[data-netbox-color-mode=light] .table-info{--bs-table-bg: #cff4fc;--bs-table-striped-bg: #c5e8ef;--bs-table-striped-color: #000;--bs-table-active-bg: #badce3;--bs-table-active-color: #000;--bs-table-hover-bg: #bfe2e9;--bs-table-hover-color: #000;color:#000;border-color:#badce3}}@media print{html .table-warning,html[data-netbox-color-mode=dark] .table-warning,html[data-netbox-color-mode=light] .table-warning{--bs-table-bg: #fff3cd;--bs-table-striped-bg: #f2e7c3;--bs-table-striped-color: #000;--bs-table-active-bg: #e6dbb9;--bs-table-active-color: #000;--bs-table-hover-bg: #ece1be;--bs-table-hover-color: #000;color:#000;border-color:#e6dbb9}}@media print{html .table-danger,html[data-netbox-color-mode=dark] .table-danger,html[data-netbox-color-mode=light] .table-danger{--bs-table-bg: #f8d7da;--bs-table-striped-bg: #eccccf;--bs-table-striped-color: #000;--bs-table-active-bg: #dfc2c4;--bs-table-active-color: #000;--bs-table-hover-bg: #e5c7ca;--bs-table-hover-color: #000;color:#000;border-color:#dfc2c4}}@media print{html .table-light,html[data-netbox-color-mode=dark] .table-light,html[data-netbox-color-mode=light] .table-light{--bs-table-bg: #f8f9fa;--bs-table-striped-bg: #ecedee;--bs-table-striped-color: #000;--bs-table-active-bg: #dfe0e1;--bs-table-active-color: #000;--bs-table-hover-bg: #e5e6e7;--bs-table-hover-color: #000;color:#000;border-color:#dfe0e1}}@media print{html .table-dark,html[data-netbox-color-mode=dark] .table-dark,html[data-netbox-color-mode=light] .table-dark{--bs-table-bg: #212529;--bs-table-striped-bg: #2c3034;--bs-table-striped-color: #fff;--bs-table-active-bg: #373b3e;--bs-table-active-color: #fff;--bs-table-hover-bg: #323539;--bs-table-hover-color: #fff;color:#fff;border-color:#373b3e}}@media print{html .table-responsive,html[data-netbox-color-mode=dark] .table-responsive,html[data-netbox-color-mode=light] .table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media print and (max-width: 575.98px){html .table-responsive-sm,html[data-netbox-color-mode=dark] .table-responsive-sm,html[data-netbox-color-mode=light] .table-responsive-sm{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media print and (max-width: 767.98px){html .table-responsive-md,html[data-netbox-color-mode=dark] .table-responsive-md,html[data-netbox-color-mode=light] .table-responsive-md{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media print and (max-width: 991.98px){html .table-responsive-lg,html[data-netbox-color-mode=dark] .table-responsive-lg,html[data-netbox-color-mode=light] .table-responsive-lg{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media print and (max-width: 1199.98px){html .table-responsive-xl,html[data-netbox-color-mode=dark] .table-responsive-xl,html[data-netbox-color-mode=light] .table-responsive-xl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media print and (max-width: 1399.98px){html .table-responsive-xxl,html[data-netbox-color-mode=dark] .table-responsive-xxl,html[data-netbox-color-mode=light] .table-responsive-xxl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media print{html .form-label,html[data-netbox-color-mode=dark] .form-label,html[data-netbox-color-mode=light] .form-label{margin-bottom:.5rem}}@media print{html .col-form-label,html[data-netbox-color-mode=dark] .col-form-label,html[data-netbox-color-mode=light] .col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}}@media print{html .col-form-label-lg,html[data-netbox-color-mode=dark] .col-form-label-lg,html[data-netbox-color-mode=light] .col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem}}@media print{html .col-form-label-sm,html[data-netbox-color-mode=dark] .col-form-label-sm,html[data-netbox-color-mode=light] .col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem}}@media print{html .form-text,html[data-netbox-color-mode=dark] .form-text,html[data-netbox-color-mode=light] .form-text{margin-top:.25rem;font-size:.875em;color:#6c757d}}@media print{html .form-control,html[data-netbox-color-mode=dark] .form-control,html[data-netbox-color-mode=light] .form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;background-clip:padding-box;border:1px solid #e9ecef;appearance:none;border-radius:.375rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}}@media print and (prefers-reduced-motion: reduce){html .form-control,html[data-netbox-color-mode=dark] .form-control,html[data-netbox-color-mode=light] .form-control{transition:none}}@media print{html .form-control[type=file],html[data-netbox-color-mode=dark] .form-control[type=file],html[data-netbox-color-mode=light] .form-control[type=file]{overflow:hidden}html .form-control[type=file]:not(:disabled):not([readonly]),html[data-netbox-color-mode=dark] .form-control[type=file]:not(:disabled):not([readonly]),html[data-netbox-color-mode=light] .form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}}@media print{html .form-control:focus,html[data-netbox-color-mode=dark] .form-control:focus,html[data-netbox-color-mode=light] .form-control:focus{color:#212529;background-color:#fff;border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}}@media print{html .form-control::-webkit-date-and-time-value,html[data-netbox-color-mode=dark] .form-control::-webkit-date-and-time-value,html[data-netbox-color-mode=light] .form-control::-webkit-date-and-time-value{height:1.5em}}@media print{html .form-control::placeholder,html[data-netbox-color-mode=dark] .form-control::placeholder,html[data-netbox-color-mode=light] .form-control::placeholder{color:#adb5bd;opacity:1}}@media print{html .form-control:disabled,html .form-control[readonly],html[data-netbox-color-mode=dark] .form-control:disabled,html[data-netbox-color-mode=dark] .form-control[readonly],html[data-netbox-color-mode=light] .form-control:disabled,html[data-netbox-color-mode=light] .form-control[readonly]{background-color:#e9ecef;opacity:1}}@media print{html .form-control::file-selector-button,html[data-netbox-color-mode=dark] .form-control::file-selector-button,html[data-netbox-color-mode=light] .form-control::file-selector-button{padding:.375rem .75rem;margin:-.375rem -.75rem;margin-inline-end:.75rem;color:#212529;background-color:#e9ecef;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}}@media print and (prefers-reduced-motion: reduce){html .form-control::file-selector-button,html[data-netbox-color-mode=dark] .form-control::file-selector-button,html[data-netbox-color-mode=light] .form-control::file-selector-button{transition:none}}@media print{html .form-control:hover:not(:disabled):not([readonly])::file-selector-button,html[data-netbox-color-mode=dark] .form-control:hover:not(:disabled):not([readonly])::file-selector-button,html[data-netbox-color-mode=light] .form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:#dde0e3}}@media print{html .form-control::-webkit-file-upload-button,html[data-netbox-color-mode=dark] .form-control::-webkit-file-upload-button,html[data-netbox-color-mode=light] .form-control::-webkit-file-upload-button{padding:.375rem .75rem;margin:-.375rem -.75rem;margin-inline-end:.75rem;color:#212529;background-color:#e9ecef;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}}@media print and (prefers-reduced-motion: reduce){html .form-control::-webkit-file-upload-button,html[data-netbox-color-mode=dark] .form-control::-webkit-file-upload-button,html[data-netbox-color-mode=light] .form-control::-webkit-file-upload-button{transition:none}}@media print{html .form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button,html[data-netbox-color-mode=dark] .form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button,html[data-netbox-color-mode=light] .form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button{background-color:#dde0e3}}@media print{html .form-control-plaintext,html[data-netbox-color-mode=dark] .form-control-plaintext,html[data-netbox-color-mode=light] .form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;line-height:1.5;color:#212529;background-color:transparent;border:solid transparent;border-width:1px 0}html .form-control-plaintext.form-control-sm,html .form-control-plaintext.form-control-lg,html[data-netbox-color-mode=dark] .form-control-plaintext.form-control-sm,html[data-netbox-color-mode=dark] .form-control-plaintext.form-control-lg,html[data-netbox-color-mode=light] .form-control-plaintext.form-control-sm,html[data-netbox-color-mode=light] .form-control-plaintext.form-control-lg{padding-right:0;padding-left:0}}@media print{html .form-control-sm,html[data-netbox-color-mode=dark] .form-control-sm,html[data-netbox-color-mode=light] .form-control-sm{min-height:calc(1.5em + (.5rem + 2px));padding:.25rem .5rem;font-size:.875rem;border-radius:.375rem}html .form-control-sm::file-selector-button,html[data-netbox-color-mode=dark] .form-control-sm::file-selector-button,html[data-netbox-color-mode=light] .form-control-sm::file-selector-button{padding:.25rem .5rem;margin:-.25rem -.5rem;margin-inline-end:.5rem}html .form-control-sm::-webkit-file-upload-button,html[data-netbox-color-mode=dark] .form-control-sm::-webkit-file-upload-button,html[data-netbox-color-mode=light] .form-control-sm::-webkit-file-upload-button{padding:.25rem .5rem;margin:-.25rem -.5rem;margin-inline-end:.5rem}}@media print{html .form-control-lg,html[data-netbox-color-mode=dark] .form-control-lg,html[data-netbox-color-mode=light] .form-control-lg{min-height:calc(1.5em + (1rem + 2px));padding:.5rem 1rem;font-size:1.25rem;border-radius:.75rem}html .form-control-lg::file-selector-button,html[data-netbox-color-mode=dark] .form-control-lg::file-selector-button,html[data-netbox-color-mode=light] .form-control-lg::file-selector-button{padding:.5rem 1rem;margin:-.5rem -1rem;margin-inline-end:1rem}html .form-control-lg::-webkit-file-upload-button,html[data-netbox-color-mode=dark] .form-control-lg::-webkit-file-upload-button,html[data-netbox-color-mode=light] .form-control-lg::-webkit-file-upload-button{padding:.5rem 1rem;margin:-.5rem -1rem;margin-inline-end:1rem}}@media print{html textarea.form-control,html[data-netbox-color-mode=dark] textarea.form-control,html[data-netbox-color-mode=light] textarea.form-control{min-height:calc(1.5em + (.75rem + 2px))}html textarea.form-control-sm,html[data-netbox-color-mode=dark] textarea.form-control-sm,html[data-netbox-color-mode=light] textarea.form-control-sm{min-height:calc(1.5em + (.5rem + 2px))}html textarea.form-control-lg,html[data-netbox-color-mode=dark] textarea.form-control-lg,html[data-netbox-color-mode=light] textarea.form-control-lg{min-height:calc(1.5em + (1rem + 2px))}}@media print{html .form-control-color,html[data-netbox-color-mode=dark] .form-control-color,html[data-netbox-color-mode=light] .form-control-color{max-width:3rem;height:auto;padding:.375rem}html .form-control-color:not(:disabled):not([readonly]),html[data-netbox-color-mode=dark] .form-control-color:not(:disabled):not([readonly]),html[data-netbox-color-mode=light] .form-control-color:not(:disabled):not([readonly]){cursor:pointer}html .form-control-color::-moz-color-swatch,html[data-netbox-color-mode=dark] .form-control-color::-moz-color-swatch,html[data-netbox-color-mode=light] .form-control-color::-moz-color-swatch{height:1.5em;border-radius:.375rem}html .form-control-color::-webkit-color-swatch,html[data-netbox-color-mode=dark] .form-control-color::-webkit-color-swatch,html[data-netbox-color-mode=light] .form-control-color::-webkit-color-swatch{height:1.5em;border-radius:.375rem}}@media print{html .form-select,html[data-netbox-color-mode=dark] .form-select,html[data-netbox-color-mode=light] .form-select{display:block;width:100%;padding:.375rem 2.25rem .375rem .75rem;-moz-padding-start:calc(.75rem - 3px);font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right .75rem center;background-size:16px 12px;border:1px solid #ced4da;border-radius:.375rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}}@media print and (prefers-reduced-motion: reduce){html .form-select,html[data-netbox-color-mode=dark] .form-select,html[data-netbox-color-mode=light] .form-select{transition:none}}@media print{html .form-select:focus,html[data-netbox-color-mode=dark] .form-select:focus,html[data-netbox-color-mode=light] .form-select:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}}@media print{html .form-select[multiple],html .form-select[size]:not([size="1"]),html[data-netbox-color-mode=dark] .form-select[multiple],html[data-netbox-color-mode=dark] .form-select[size]:not([size="1"]),html[data-netbox-color-mode=light] .form-select[multiple],html[data-netbox-color-mode=light] .form-select[size]:not([size="1"]){padding-right:.75rem;background-image:none}}@media print{html .form-select:disabled,html[data-netbox-color-mode=dark] .form-select:disabled,html[data-netbox-color-mode=light] .form-select:disabled{color:#6c757d;background-color:#e9ecef}}@media print{html .form-select:-moz-focusring,html[data-netbox-color-mode=dark] .form-select:-moz-focusring,html[data-netbox-color-mode=light] .form-select:-moz-focusring{color:transparent;text-shadow:0 0 0 #212529}}@media print{html .form-select-sm,html[data-netbox-color-mode=dark] .form-select-sm,html[data-netbox-color-mode=light] .form-select-sm{padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem}}@media print{html .form-select-lg,html[data-netbox-color-mode=dark] .form-select-lg,html[data-netbox-color-mode=light] .form-select-lg{padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}}@media print{html .form-check,html[data-netbox-color-mode=dark] .form-check,html[data-netbox-color-mode=light] .form-check{display:block;min-height:1.5rem;padding-left:1.5em;margin-bottom:.125rem}html .form-check .form-check-input,html[data-netbox-color-mode=dark] .form-check .form-check-input,html[data-netbox-color-mode=light] .form-check .form-check-input{float:left;margin-left:-1.5em}}@media print{html .form-check-input,html[data-netbox-color-mode=dark] .form-check-input,html[data-netbox-color-mode=light] .form-check-input{width:1em;height:1em;margin-top:.25em;vertical-align:top;background-color:#fff;background-repeat:no-repeat;background-position:center;background-size:contain;border:1px solid rgba(0,0,0,.25);appearance:none;color-adjust:exact}html .form-check-input[type=checkbox],html[data-netbox-color-mode=dark] .form-check-input[type=checkbox],html[data-netbox-color-mode=light] .form-check-input[type=checkbox]{border-radius:.25em}html .form-check-input[type=radio],html[data-netbox-color-mode=dark] .form-check-input[type=radio],html[data-netbox-color-mode=light] .form-check-input[type=radio]{border-radius:50%}html .form-check-input:active,html[data-netbox-color-mode=dark] .form-check-input:active,html[data-netbox-color-mode=light] .form-check-input:active{filter:brightness(90%)}html .form-check-input:focus,html[data-netbox-color-mode=dark] .form-check-input:focus,html[data-netbox-color-mode=light] .form-check-input:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}html .form-check-input:checked,html[data-netbox-color-mode=dark] .form-check-input:checked,html[data-netbox-color-mode=light] .form-check-input:checked{background-color:#0d6efd;border-color:#0d6efd}html .form-check-input:checked[type=checkbox],html[data-netbox-color-mode=dark] .form-check-input:checked[type=checkbox],html[data-netbox-color-mode=light] .form-check-input:checked[type=checkbox]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10l3 3l6-6'/%3e%3c/svg%3e")}html .form-check-input:checked[type=radio],html[data-netbox-color-mode=dark] .form-check-input:checked[type=radio],html[data-netbox-color-mode=light] .form-check-input:checked[type=radio]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e")}html .form-check-input[type=checkbox]:indeterminate,html[data-netbox-color-mode=dark] .form-check-input[type=checkbox]:indeterminate,html[data-netbox-color-mode=light] .form-check-input[type=checkbox]:indeterminate{background-color:#0d6efd;border-color:#0d6efd;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e")}html .form-check-input:disabled,html[data-netbox-color-mode=dark] .form-check-input:disabled,html[data-netbox-color-mode=light] .form-check-input:disabled{pointer-events:none;filter:none;opacity:.5}html .form-check-input[disabled]~.form-check-label,html .form-check-input:disabled~.form-check-label,html[data-netbox-color-mode=dark] .form-check-input[disabled]~.form-check-label,html[data-netbox-color-mode=dark] .form-check-input:disabled~.form-check-label,html[data-netbox-color-mode=light] .form-check-input[disabled]~.form-check-label,html[data-netbox-color-mode=light] .form-check-input:disabled~.form-check-label{opacity:.5}}@media print{html .form-switch,html[data-netbox-color-mode=dark] .form-switch,html[data-netbox-color-mode=light] .form-switch{padding-left:2.5em}html .form-switch .form-check-input,html[data-netbox-color-mode=dark] .form-switch .form-check-input,html[data-netbox-color-mode=light] .form-switch .form-check-input{width:2em;margin-left:-2.5em;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e");background-position:left center;border-radius:2em;transition:background-position .15s ease-in-out}}@media print and (prefers-reduced-motion: reduce){html .form-switch .form-check-input,html[data-netbox-color-mode=dark] .form-switch .form-check-input,html[data-netbox-color-mode=light] .form-switch .form-check-input{transition:none}}@media print{html .form-switch .form-check-input:focus,html[data-netbox-color-mode=dark] .form-switch .form-check-input:focus,html[data-netbox-color-mode=light] .form-switch .form-check-input:focus{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2386b7fe'/%3e%3c/svg%3e")}}@media print{html .form-switch .form-check-input:checked,html[data-netbox-color-mode=dark] .form-switch .form-check-input:checked,html[data-netbox-color-mode=light] .form-switch .form-check-input:checked{background-position:right center;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}}@media print{html .form-check-inline,html[data-netbox-color-mode=dark] .form-check-inline,html[data-netbox-color-mode=light] .form-check-inline{display:inline-block;margin-right:1rem}}@media print{html .btn-check,html[data-netbox-color-mode=dark] .btn-check,html[data-netbox-color-mode=light] .btn-check{position:absolute;clip:rect(0,0,0,0);pointer-events:none}html .btn-check[disabled]+.btn,html .btn-check:disabled+.btn,html[data-netbox-color-mode=dark] .btn-check[disabled]+.btn,html[data-netbox-color-mode=dark] .btn-check:disabled+.btn,html[data-netbox-color-mode=light] .btn-check[disabled]+.btn,html[data-netbox-color-mode=light] .btn-check:disabled+.btn{pointer-events:none;filter:none;opacity:.65}}@media print{html .form-range,html[data-netbox-color-mode=dark] .form-range,html[data-netbox-color-mode=light] .form-range{width:100%;height:1.5rem;padding:0;background-color:transparent;appearance:none}html .form-range:focus,html[data-netbox-color-mode=dark] .form-range:focus,html[data-netbox-color-mode=light] .form-range:focus{outline:0}html .form-range:focus::-webkit-slider-thumb,html[data-netbox-color-mode=dark] .form-range:focus::-webkit-slider-thumb,html[data-netbox-color-mode=light] .form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem #0d6efd40}html .form-range:focus::-moz-range-thumb,html[data-netbox-color-mode=dark] .form-range:focus::-moz-range-thumb,html[data-netbox-color-mode=light] .form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem #0d6efd40}html .form-range::-moz-focus-outer,html[data-netbox-color-mode=dark] .form-range::-moz-focus-outer,html[data-netbox-color-mode=light] .form-range::-moz-focus-outer{border:0}html .form-range::-webkit-slider-thumb,html[data-netbox-color-mode=dark] .form-range::-webkit-slider-thumb,html[data-netbox-color-mode=light] .form-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#0d6efd;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}}@media print and (prefers-reduced-motion: reduce){html .form-range::-webkit-slider-thumb,html[data-netbox-color-mode=dark] .form-range::-webkit-slider-thumb,html[data-netbox-color-mode=light] .form-range::-webkit-slider-thumb{transition:none}}@media print{html .form-range::-webkit-slider-thumb:active,html[data-netbox-color-mode=dark] .form-range::-webkit-slider-thumb:active,html[data-netbox-color-mode=light] .form-range::-webkit-slider-thumb:active{background-color:#b6d4fe}}@media print{html .form-range::-webkit-slider-runnable-track,html[data-netbox-color-mode=dark] .form-range::-webkit-slider-runnable-track,html[data-netbox-color-mode=light] .form-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}}@media print{html .form-range::-moz-range-thumb,html[data-netbox-color-mode=dark] .form-range::-moz-range-thumb,html[data-netbox-color-mode=light] .form-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#0d6efd;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}}@media print and (prefers-reduced-motion: reduce){html .form-range::-moz-range-thumb,html[data-netbox-color-mode=dark] .form-range::-moz-range-thumb,html[data-netbox-color-mode=light] .form-range::-moz-range-thumb{transition:none}}@media print{html .form-range::-moz-range-thumb:active,html[data-netbox-color-mode=dark] .form-range::-moz-range-thumb:active,html[data-netbox-color-mode=light] .form-range::-moz-range-thumb:active{background-color:#b6d4fe}}@media print{html .form-range::-moz-range-track,html[data-netbox-color-mode=dark] .form-range::-moz-range-track,html[data-netbox-color-mode=light] .form-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}}@media print{html .form-range:disabled,html[data-netbox-color-mode=dark] .form-range:disabled,html[data-netbox-color-mode=light] .form-range:disabled{pointer-events:none}html .form-range:disabled::-webkit-slider-thumb,html[data-netbox-color-mode=dark] .form-range:disabled::-webkit-slider-thumb,html[data-netbox-color-mode=light] .form-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}html .form-range:disabled::-moz-range-thumb,html[data-netbox-color-mode=dark] .form-range:disabled::-moz-range-thumb,html[data-netbox-color-mode=light] .form-range:disabled::-moz-range-thumb{background-color:#adb5bd}}@media print{html .form-floating,html[data-netbox-color-mode=dark] .form-floating,html[data-netbox-color-mode=light] .form-floating{position:relative}html .form-floating>.form-control,html .form-floating>.form-select,html[data-netbox-color-mode=dark] .form-floating>.form-control,html[data-netbox-color-mode=dark] .form-floating>.form-select,html[data-netbox-color-mode=light] .form-floating>.form-control,html[data-netbox-color-mode=light] .form-floating>.form-select{height:calc(3.5rem + 2px);line-height:1.25}html .form-floating>label,html[data-netbox-color-mode=dark] .form-floating>label,html[data-netbox-color-mode=light] .form-floating>label{position:absolute;top:0;left:0;height:100%;padding:1rem .75rem;pointer-events:none;border:1px solid transparent;transform-origin:0 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out}}@media print and (prefers-reduced-motion: reduce){html .form-floating>label,html[data-netbox-color-mode=dark] .form-floating>label,html[data-netbox-color-mode=light] .form-floating>label{transition:none}}@media print{html .form-floating>.form-control,html[data-netbox-color-mode=dark] .form-floating>.form-control,html[data-netbox-color-mode=light] .form-floating>.form-control{padding:1rem .75rem}html .form-floating>.form-control::placeholder,html[data-netbox-color-mode=dark] .form-floating>.form-control::placeholder,html[data-netbox-color-mode=light] .form-floating>.form-control::placeholder{color:transparent}html .form-floating>.form-control:focus,html .form-floating>.form-control:not(:placeholder-shown),html[data-netbox-color-mode=dark] .form-floating>.form-control:focus,html[data-netbox-color-mode=dark] .form-floating>.form-control:not(:placeholder-shown),html[data-netbox-color-mode=light] .form-floating>.form-control:focus,html[data-netbox-color-mode=light] .form-floating>.form-control:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}html .form-floating>.form-control:-webkit-autofill,html[data-netbox-color-mode=dark] .form-floating>.form-control:-webkit-autofill,html[data-netbox-color-mode=light] .form-floating>.form-control:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}}@media print{html .form-floating>.form-select,html[data-netbox-color-mode=dark] .form-floating>.form-select,html[data-netbox-color-mode=light] .form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem}}@media print{html .form-floating>.form-control:focus~label,html .form-floating>.form-control:not(:placeholder-shown)~label,html .form-floating>.form-select~label,html[data-netbox-color-mode=dark] .form-floating>.form-control:focus~label,html[data-netbox-color-mode=dark] .form-floating>.form-control:not(:placeholder-shown)~label,html[data-netbox-color-mode=dark] .form-floating>.form-select~label,html[data-netbox-color-mode=light] .form-floating>.form-control:focus~label,html[data-netbox-color-mode=light] .form-floating>.form-control:not(:placeholder-shown)~label,html[data-netbox-color-mode=light] .form-floating>.form-select~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translate(.15rem)}}@media print{html .form-floating>.form-control:-webkit-autofill~label,html[data-netbox-color-mode=dark] .form-floating>.form-control:-webkit-autofill~label,html[data-netbox-color-mode=light] .form-floating>.form-control:-webkit-autofill~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translate(.15rem)}}@media print{html .input-group,html[data-netbox-color-mode=dark] .input-group,html[data-netbox-color-mode=light] .input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}html .input-group>.form-control,html .input-group>.form-select,html[data-netbox-color-mode=dark] .input-group>.form-control,html[data-netbox-color-mode=dark] .input-group>.form-select,html[data-netbox-color-mode=light] .input-group>.form-control,html[data-netbox-color-mode=light] .input-group>.form-select{position:relative;flex:1 1 auto;width:1%;min-width:0}html .input-group>.form-control:focus,html .input-group>.form-select:focus,html[data-netbox-color-mode=dark] .input-group>.form-control:focus,html[data-netbox-color-mode=dark] .input-group>.form-select:focus,html[data-netbox-color-mode=light] .input-group>.form-control:focus,html[data-netbox-color-mode=light] .input-group>.form-select:focus{z-index:3}html .input-group .btn,html[data-netbox-color-mode=dark] .input-group .btn,html[data-netbox-color-mode=light] .input-group .btn{position:relative;z-index:2}html .input-group .btn:focus,html[data-netbox-color-mode=dark] .input-group .btn:focus,html[data-netbox-color-mode=light] .input-group .btn:focus{z-index:3}}@media print{html .input-group-text,html[data-netbox-color-mode=dark] .input-group-text,html[data-netbox-color-mode=light] .input-group-text{display:flex;align-items:center;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.375rem}}@media print{html .input-group-lg>.form-control,html .input-group-lg>.form-select,html .input-group-lg>.input-group-text,html .input-group-lg>.btn,html[data-netbox-color-mode=dark] .input-group-lg>.form-control,html[data-netbox-color-mode=dark] .input-group-lg>.form-select,html[data-netbox-color-mode=dark] .input-group-lg>.input-group-text,html[data-netbox-color-mode=dark] .input-group-lg>.btn,html[data-netbox-color-mode=light] .input-group-lg>.form-control,html[data-netbox-color-mode=light] .input-group-lg>.form-select,html[data-netbox-color-mode=light] .input-group-lg>.input-group-text,html[data-netbox-color-mode=light] .input-group-lg>.btn{padding:.5rem 1rem;font-size:1.25rem;border-radius:.75rem}}@media print{html .input-group-sm>.form-control,html .input-group-sm>.form-select,html .input-group-sm>.input-group-text,html .input-group-sm>.btn,html[data-netbox-color-mode=dark] .input-group-sm>.form-control,html[data-netbox-color-mode=dark] .input-group-sm>.form-select,html[data-netbox-color-mode=dark] .input-group-sm>.input-group-text,html[data-netbox-color-mode=dark] .input-group-sm>.btn,html[data-netbox-color-mode=light] .input-group-sm>.form-control,html[data-netbox-color-mode=light] .input-group-sm>.form-select,html[data-netbox-color-mode=light] .input-group-sm>.input-group-text,html[data-netbox-color-mode=light] .input-group-sm>.btn{padding:.25rem .5rem;font-size:.875rem;border-radius:.375rem}}@media print{html .input-group-lg>.form-select,html .input-group-sm>.form-select,html[data-netbox-color-mode=dark] .input-group-lg>.form-select,html[data-netbox-color-mode=dark] .input-group-sm>.form-select,html[data-netbox-color-mode=light] .input-group-lg>.form-select,html[data-netbox-color-mode=light] .input-group-sm>.form-select{padding-right:3rem}}@media print{html .input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu),html .input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3),html[data-netbox-color-mode=dark] .input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu),html[data-netbox-color-mode=dark] .input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3),html[data-netbox-color-mode=light] .input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu),html[data-netbox-color-mode=light] .input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3){border-top-right-radius:0;border-bottom-right-radius:0}html .input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu),html .input-group.has-validation>.dropdown-toggle:nth-last-child(n+4),html[data-netbox-color-mode=dark] .input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu),html[data-netbox-color-mode=dark] .input-group.has-validation>.dropdown-toggle:nth-last-child(n+4),html[data-netbox-color-mode=light] .input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu),html[data-netbox-color-mode=light] .input-group.has-validation>.dropdown-toggle:nth-last-child(n+4){border-top-right-radius:0;border-bottom-right-radius:0}html .input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback),html[data-netbox-color-mode=dark] .input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback),html[data-netbox-color-mode=light] .input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-left:-1px;border-top-left-radius:0;border-bottom-left-radius:0}}@media print{html .valid-feedback,html[data-netbox-color-mode=dark] .valid-feedback,html[data-netbox-color-mode=light] .valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#198754}}@media print{html .valid-tooltip,html[data-netbox-color-mode=dark] .valid-tooltip,html[data-netbox-color-mode=light] .valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:#198754e6;border-radius:.375rem}}@media print{.was-validated html:valid~.valid-feedback,.was-validated html:valid~.valid-tooltip,html.is-valid~.valid-feedback,html.is-valid~.valid-tooltip,.was-validated html[data-netbox-color-mode=dark]:valid~.valid-feedback,.was-validated html[data-netbox-color-mode=dark]:valid~.valid-tooltip,html[data-netbox-color-mode=dark].is-valid~.valid-feedback,html[data-netbox-color-mode=dark].is-valid~.valid-tooltip,.was-validated html[data-netbox-color-mode=light]:valid~.valid-feedback,.was-validated html[data-netbox-color-mode=light]:valid~.valid-tooltip,html[data-netbox-color-mode=light].is-valid~.valid-feedback,html[data-netbox-color-mode=light].is-valid~.valid-tooltip{display:block}}@media print{.was-validated html .form-control:valid,html .form-control.is-valid,.was-validated html[data-netbox-color-mode=dark] .form-control:valid,html[data-netbox-color-mode=dark] .form-control.is-valid,.was-validated html[data-netbox-color-mode=light] .form-control:valid,html[data-netbox-color-mode=light] .form-control.is-valid{border-color:#198754;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.was-validated html .form-control:valid:focus,html .form-control.is-valid:focus,.was-validated html[data-netbox-color-mode=dark] .form-control:valid:focus,html[data-netbox-color-mode=dark] .form-control.is-valid:focus,.was-validated html[data-netbox-color-mode=light] .form-control:valid:focus,html[data-netbox-color-mode=light] .form-control.is-valid:focus{border-color:#198754;box-shadow:0 0 0 .25rem #19875440}}@media print{.was-validated html textarea.form-control:valid,html textarea.form-control.is-valid,.was-validated html[data-netbox-color-mode=dark] textarea.form-control:valid,html[data-netbox-color-mode=dark] textarea.form-control.is-valid,.was-validated html[data-netbox-color-mode=light] textarea.form-control:valid,html[data-netbox-color-mode=light] textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}}@media print{.was-validated html .form-select:valid,html .form-select.is-valid,.was-validated html[data-netbox-color-mode=dark] .form-select:valid,html[data-netbox-color-mode=dark] .form-select.is-valid,.was-validated html[data-netbox-color-mode=light] .form-select:valid,html[data-netbox-color-mode=light] .form-select.is-valid{border-color:#198754}.was-validated html .form-select:valid:not([multiple]):not([size]),.was-validated html .form-select:valid:not([multiple])[size="1"],html .form-select.is-valid:not([multiple]):not([size]),html .form-select.is-valid:not([multiple])[size="1"],.was-validated html[data-netbox-color-mode=dark] .form-select:valid:not([multiple]):not([size]),.was-validated html[data-netbox-color-mode=dark] .form-select:valid:not([multiple])[size="1"],html[data-netbox-color-mode=dark] .form-select.is-valid:not([multiple]):not([size]),html[data-netbox-color-mode=dark] .form-select.is-valid:not([multiple])[size="1"],.was-validated html[data-netbox-color-mode=light] .form-select:valid:not([multiple]):not([size]),.was-validated html[data-netbox-color-mode=light] .form-select:valid:not([multiple])[size="1"],html[data-netbox-color-mode=light] .form-select.is-valid:not([multiple]):not([size]),html[data-netbox-color-mode=light] .form-select.is-valid:not([multiple])[size="1"]{padding-right:4.125rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.was-validated html .form-select:valid:focus,html .form-select.is-valid:focus,.was-validated html[data-netbox-color-mode=dark] .form-select:valid:focus,html[data-netbox-color-mode=dark] .form-select.is-valid:focus,.was-validated html[data-netbox-color-mode=light] .form-select:valid:focus,html[data-netbox-color-mode=light] .form-select.is-valid:focus{border-color:#198754;box-shadow:0 0 0 .25rem #19875440}}@media print{.was-validated html .form-check-input:valid,html .form-check-input.is-valid,.was-validated html[data-netbox-color-mode=dark] .form-check-input:valid,html[data-netbox-color-mode=dark] .form-check-input.is-valid,.was-validated html[data-netbox-color-mode=light] .form-check-input:valid,html[data-netbox-color-mode=light] .form-check-input.is-valid{border-color:#198754}.was-validated html .form-check-input:valid:checked,html .form-check-input.is-valid:checked,.was-validated html[data-netbox-color-mode=dark] .form-check-input:valid:checked,html[data-netbox-color-mode=dark] .form-check-input.is-valid:checked,.was-validated html[data-netbox-color-mode=light] .form-check-input:valid:checked,html[data-netbox-color-mode=light] .form-check-input.is-valid:checked{background-color:#198754}.was-validated html .form-check-input:valid:focus,html .form-check-input.is-valid:focus,.was-validated html[data-netbox-color-mode=dark] .form-check-input:valid:focus,html[data-netbox-color-mode=dark] .form-check-input.is-valid:focus,.was-validated html[data-netbox-color-mode=light] .form-check-input:valid:focus,html[data-netbox-color-mode=light] .form-check-input.is-valid:focus{box-shadow:0 0 0 .25rem #19875440}.was-validated html .form-check-input:valid~.form-check-label,html .form-check-input.is-valid~.form-check-label,.was-validated html[data-netbox-color-mode=dark] .form-check-input:valid~.form-check-label,html[data-netbox-color-mode=dark] .form-check-input.is-valid~.form-check-label,.was-validated html[data-netbox-color-mode=light] .form-check-input:valid~.form-check-label,html[data-netbox-color-mode=light] .form-check-input.is-valid~.form-check-label{color:#198754}}@media print{html .form-check-inline .form-check-input~.valid-feedback,html[data-netbox-color-mode=dark] .form-check-inline .form-check-input~.valid-feedback,html[data-netbox-color-mode=light] .form-check-inline .form-check-input~.valid-feedback{margin-left:.5em}}@media print{.was-validated html .input-group .form-control:valid,html .input-group .form-control.is-valid,.was-validated html .input-group .form-select:valid,html .input-group .form-select.is-valid,.was-validated html[data-netbox-color-mode=dark] .input-group .form-control:valid,html[data-netbox-color-mode=dark] .input-group .form-control.is-valid,.was-validated html[data-netbox-color-mode=dark] .input-group .form-select:valid,html[data-netbox-color-mode=dark] .input-group .form-select.is-valid,.was-validated html[data-netbox-color-mode=light] .input-group .form-control:valid,html[data-netbox-color-mode=light] .input-group .form-control.is-valid,.was-validated html[data-netbox-color-mode=light] .input-group .form-select:valid,html[data-netbox-color-mode=light] .input-group .form-select.is-valid{z-index:1}.was-validated html .input-group .form-control:valid:focus,html .input-group .form-control.is-valid:focus,.was-validated html .input-group .form-select:valid:focus,html .input-group .form-select.is-valid:focus,.was-validated html[data-netbox-color-mode=dark] .input-group .form-control:valid:focus,html[data-netbox-color-mode=dark] .input-group .form-control.is-valid:focus,.was-validated html[data-netbox-color-mode=dark] .input-group .form-select:valid:focus,html[data-netbox-color-mode=dark] .input-group .form-select.is-valid:focus,.was-validated html[data-netbox-color-mode=light] .input-group .form-control:valid:focus,html[data-netbox-color-mode=light] .input-group .form-control.is-valid:focus,.was-validated html[data-netbox-color-mode=light] .input-group .form-select:valid:focus,html[data-netbox-color-mode=light] .input-group .form-select.is-valid:focus{z-index:3}}@media print{html .invalid-feedback,html[data-netbox-color-mode=dark] .invalid-feedback,html[data-netbox-color-mode=light] .invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#dc3545}}@media print{html .invalid-tooltip,html[data-netbox-color-mode=dark] .invalid-tooltip,html[data-netbox-color-mode=light] .invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:#dc3545e6;border-radius:.375rem}}@media print{.was-validated html:invalid~.invalid-feedback,.was-validated html:invalid~.invalid-tooltip,html.is-invalid~.invalid-feedback,html.is-invalid~.invalid-tooltip,.was-validated html[data-netbox-color-mode=dark]:invalid~.invalid-feedback,.was-validated html[data-netbox-color-mode=dark]:invalid~.invalid-tooltip,html[data-netbox-color-mode=dark].is-invalid~.invalid-feedback,html[data-netbox-color-mode=dark].is-invalid~.invalid-tooltip,.was-validated html[data-netbox-color-mode=light]:invalid~.invalid-feedback,.was-validated html[data-netbox-color-mode=light]:invalid~.invalid-tooltip,html[data-netbox-color-mode=light].is-invalid~.invalid-feedback,html[data-netbox-color-mode=light].is-invalid~.invalid-tooltip{display:block}}@media print{.was-validated html .form-control:invalid,html .form-control.is-invalid,.was-validated html[data-netbox-color-mode=dark] .form-control:invalid,html[data-netbox-color-mode=dark] .form-control.is-invalid,.was-validated html[data-netbox-color-mode=light] .form-control:invalid,html[data-netbox-color-mode=light] .form-control.is-invalid{border-color:#dc3545;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.was-validated html .form-control:invalid:focus,html .form-control.is-invalid:focus,.was-validated html[data-netbox-color-mode=dark] .form-control:invalid:focus,html[data-netbox-color-mode=dark] .form-control.is-invalid:focus,.was-validated html[data-netbox-color-mode=light] .form-control:invalid:focus,html[data-netbox-color-mode=light] .form-control.is-invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .25rem #dc354540}}@media print{.was-validated html textarea.form-control:invalid,html textarea.form-control.is-invalid,.was-validated html[data-netbox-color-mode=dark] textarea.form-control:invalid,html[data-netbox-color-mode=dark] textarea.form-control.is-invalid,.was-validated html[data-netbox-color-mode=light] textarea.form-control:invalid,html[data-netbox-color-mode=light] textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}}@media print{.was-validated html .form-select:invalid,html .form-select.is-invalid,.was-validated html[data-netbox-color-mode=dark] .form-select:invalid,html[data-netbox-color-mode=dark] .form-select.is-invalid,.was-validated html[data-netbox-color-mode=light] .form-select:invalid,html[data-netbox-color-mode=light] .form-select.is-invalid{border-color:#dc3545}.was-validated html .form-select:invalid:not([multiple]):not([size]),.was-validated html .form-select:invalid:not([multiple])[size="1"],html .form-select.is-invalid:not([multiple]):not([size]),html .form-select.is-invalid:not([multiple])[size="1"],.was-validated html[data-netbox-color-mode=dark] .form-select:invalid:not([multiple]):not([size]),.was-validated html[data-netbox-color-mode=dark] .form-select:invalid:not([multiple])[size="1"],html[data-netbox-color-mode=dark] .form-select.is-invalid:not([multiple]):not([size]),html[data-netbox-color-mode=dark] .form-select.is-invalid:not([multiple])[size="1"],.was-validated html[data-netbox-color-mode=light] .form-select:invalid:not([multiple]):not([size]),.was-validated html[data-netbox-color-mode=light] .form-select:invalid:not([multiple])[size="1"],html[data-netbox-color-mode=light] .form-select.is-invalid:not([multiple]):not([size]),html[data-netbox-color-mode=light] .form-select.is-invalid:not([multiple])[size="1"]{padding-right:4.125rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.was-validated html .form-select:invalid:focus,html .form-select.is-invalid:focus,.was-validated html[data-netbox-color-mode=dark] .form-select:invalid:focus,html[data-netbox-color-mode=dark] .form-select.is-invalid:focus,.was-validated html[data-netbox-color-mode=light] .form-select:invalid:focus,html[data-netbox-color-mode=light] .form-select.is-invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .25rem #dc354540}}@media print{.was-validated html .form-check-input:invalid,html .form-check-input.is-invalid,.was-validated html[data-netbox-color-mode=dark] .form-check-input:invalid,html[data-netbox-color-mode=dark] .form-check-input.is-invalid,.was-validated html[data-netbox-color-mode=light] .form-check-input:invalid,html[data-netbox-color-mode=light] .form-check-input.is-invalid{border-color:#dc3545}.was-validated html .form-check-input:invalid:checked,html .form-check-input.is-invalid:checked,.was-validated html[data-netbox-color-mode=dark] .form-check-input:invalid:checked,html[data-netbox-color-mode=dark] .form-check-input.is-invalid:checked,.was-validated html[data-netbox-color-mode=light] .form-check-input:invalid:checked,html[data-netbox-color-mode=light] .form-check-input.is-invalid:checked{background-color:#dc3545}.was-validated html .form-check-input:invalid:focus,html .form-check-input.is-invalid:focus,.was-validated html[data-netbox-color-mode=dark] .form-check-input:invalid:focus,html[data-netbox-color-mode=dark] .form-check-input.is-invalid:focus,.was-validated html[data-netbox-color-mode=light] .form-check-input:invalid:focus,html[data-netbox-color-mode=light] .form-check-input.is-invalid:focus{box-shadow:0 0 0 .25rem #dc354540}.was-validated html .form-check-input:invalid~.form-check-label,html .form-check-input.is-invalid~.form-check-label,.was-validated html[data-netbox-color-mode=dark] .form-check-input:invalid~.form-check-label,html[data-netbox-color-mode=dark] .form-check-input.is-invalid~.form-check-label,.was-validated html[data-netbox-color-mode=light] .form-check-input:invalid~.form-check-label,html[data-netbox-color-mode=light] .form-check-input.is-invalid~.form-check-label{color:#dc3545}}@media print{html .form-check-inline .form-check-input~.invalid-feedback,html[data-netbox-color-mode=dark] .form-check-inline .form-check-input~.invalid-feedback,html[data-netbox-color-mode=light] .form-check-inline .form-check-input~.invalid-feedback{margin-left:.5em}}@media print{.was-validated html .input-group .form-control:invalid,html .input-group .form-control.is-invalid,.was-validated html .input-group .form-select:invalid,html .input-group .form-select.is-invalid,.was-validated html[data-netbox-color-mode=dark] .input-group .form-control:invalid,html[data-netbox-color-mode=dark] .input-group .form-control.is-invalid,.was-validated html[data-netbox-color-mode=dark] .input-group .form-select:invalid,html[data-netbox-color-mode=dark] .input-group .form-select.is-invalid,.was-validated html[data-netbox-color-mode=light] .input-group .form-control:invalid,html[data-netbox-color-mode=light] .input-group .form-control.is-invalid,.was-validated html[data-netbox-color-mode=light] .input-group .form-select:invalid,html[data-netbox-color-mode=light] .input-group .form-select.is-invalid{z-index:2}.was-validated html .input-group .form-control:invalid:focus,html .input-group .form-control.is-invalid:focus,.was-validated html .input-group .form-select:invalid:focus,html .input-group .form-select.is-invalid:focus,.was-validated html[data-netbox-color-mode=dark] .input-group .form-control:invalid:focus,html[data-netbox-color-mode=dark] .input-group .form-control.is-invalid:focus,.was-validated html[data-netbox-color-mode=dark] .input-group .form-select:invalid:focus,html[data-netbox-color-mode=dark] .input-group .form-select.is-invalid:focus,.was-validated html[data-netbox-color-mode=light] .input-group .form-control:invalid:focus,html[data-netbox-color-mode=light] .input-group .form-control.is-invalid:focus,.was-validated html[data-netbox-color-mode=light] .input-group .form-select:invalid:focus,html[data-netbox-color-mode=light] .input-group .form-select.is-invalid:focus{z-index:3}}@media print{html .btn,html[data-netbox-color-mode=dark] .btn,html[data-netbox-color-mode=light] .btn{display:inline-block;font-weight:400;line-height:1.5;color:#212529;text-align:center;text-decoration:none;vertical-align:middle;cursor:pointer;user-select:none;background-color:transparent;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;border-radius:.375rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}}@media print and (prefers-reduced-motion: reduce){html .btn,html[data-netbox-color-mode=dark] .btn,html[data-netbox-color-mode=light] .btn{transition:none}}@media print{html .btn:hover,html[data-netbox-color-mode=dark] .btn:hover,html[data-netbox-color-mode=light] .btn:hover{color:#212529}}@media print{.btn-check:focus+html .btn,html .btn:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn,html[data-netbox-color-mode=dark] .btn:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn,html[data-netbox-color-mode=light] .btn:focus{outline:0;box-shadow:0 0 0 .25rem #0d6efd40}}@media print{html .btn:disabled,html .btn.disabled,fieldset:disabled html .btn,html[data-netbox-color-mode=dark] .btn:disabled,html[data-netbox-color-mode=dark] .btn.disabled,fieldset:disabled html[data-netbox-color-mode=dark] .btn,html[data-netbox-color-mode=light] .btn:disabled,html[data-netbox-color-mode=light] .btn.disabled,fieldset:disabled html[data-netbox-color-mode=light] .btn{pointer-events:none;opacity:.65}}@media print{html .btn-primary,html[data-netbox-color-mode=dark] .btn-primary,html[data-netbox-color-mode=light] .btn-primary{color:#fff;background-color:#337ab7;border-color:#337ab7}html .btn-primary:hover,html[data-netbox-color-mode=dark] .btn-primary:hover,html[data-netbox-color-mode=light] .btn-primary:hover{color:#fff;background-color:#2b689c;border-color:#296292}.btn-check:focus+html .btn-primary,html .btn-primary:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-primary,html[data-netbox-color-mode=dark] .btn-primary:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-primary,html[data-netbox-color-mode=light] .btn-primary:focus{color:#fff;background-color:#2b689c;border-color:#296292;box-shadow:0 0 0 .25rem #528ec280}.btn-check:checked+html .btn-primary,.btn-check:active+html .btn-primary,html .btn-primary:active,html .btn-primary.active,.show>html .btn-primary.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-primary,.btn-check:active+html[data-netbox-color-mode=dark] .btn-primary,html[data-netbox-color-mode=dark] .btn-primary:active,html[data-netbox-color-mode=dark] .btn-primary.active,.show>html[data-netbox-color-mode=dark] .btn-primary.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-primary,.btn-check:active+html[data-netbox-color-mode=light] .btn-primary,html[data-netbox-color-mode=light] .btn-primary:active,html[data-netbox-color-mode=light] .btn-primary.active,.show>html[data-netbox-color-mode=light] .btn-primary.dropdown-toggle{color:#fff;background-color:#296292;border-color:#265c89}.btn-check:checked+html .btn-primary:focus,.btn-check:active+html .btn-primary:focus,html .btn-primary:active:focus,html .btn-primary.active:focus,.show>html .btn-primary.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-primary:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-primary:focus,html[data-netbox-color-mode=dark] .btn-primary:active:focus,html[data-netbox-color-mode=dark] .btn-primary.active:focus,.show>html[data-netbox-color-mode=dark] .btn-primary.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-primary:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-primary:focus,html[data-netbox-color-mode=light] .btn-primary:active:focus,html[data-netbox-color-mode=light] .btn-primary.active:focus,.show>html[data-netbox-color-mode=light] .btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #528ec280}html .btn-primary:disabled,html .btn-primary.disabled,html[data-netbox-color-mode=dark] .btn-primary:disabled,html[data-netbox-color-mode=dark] .btn-primary.disabled,html[data-netbox-color-mode=light] .btn-primary:disabled,html[data-netbox-color-mode=light] .btn-primary.disabled{color:#fff;background-color:#337ab7;border-color:#337ab7}}@media print{html .btn-secondary,html[data-netbox-color-mode=dark] .btn-secondary,html[data-netbox-color-mode=light] .btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}html .btn-secondary:hover,html[data-netbox-color-mode=dark] .btn-secondary:hover,html[data-netbox-color-mode=light] .btn-secondary:hover{color:#fff;background-color:#5c636a;border-color:#565e64}.btn-check:focus+html .btn-secondary,html .btn-secondary:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-secondary,html[data-netbox-color-mode=dark] .btn-secondary:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-secondary,html[data-netbox-color-mode=light] .btn-secondary:focus{color:#fff;background-color:#5c636a;border-color:#565e64;box-shadow:0 0 0 .25rem #828a9180}.btn-check:checked+html .btn-secondary,.btn-check:active+html .btn-secondary,html .btn-secondary:active,html .btn-secondary.active,.show>html .btn-secondary.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-secondary,.btn-check:active+html[data-netbox-color-mode=dark] .btn-secondary,html[data-netbox-color-mode=dark] .btn-secondary:active,html[data-netbox-color-mode=dark] .btn-secondary.active,.show>html[data-netbox-color-mode=dark] .btn-secondary.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-secondary,.btn-check:active+html[data-netbox-color-mode=light] .btn-secondary,html[data-netbox-color-mode=light] .btn-secondary:active,html[data-netbox-color-mode=light] .btn-secondary.active,.show>html[data-netbox-color-mode=light] .btn-secondary.dropdown-toggle{color:#fff;background-color:#565e64;border-color:#51585e}.btn-check:checked+html .btn-secondary:focus,.btn-check:active+html .btn-secondary:focus,html .btn-secondary:active:focus,html .btn-secondary.active:focus,.show>html .btn-secondary.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-secondary:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-secondary:focus,html[data-netbox-color-mode=dark] .btn-secondary:active:focus,html[data-netbox-color-mode=dark] .btn-secondary.active:focus,.show>html[data-netbox-color-mode=dark] .btn-secondary.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-secondary:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-secondary:focus,html[data-netbox-color-mode=light] .btn-secondary:active:focus,html[data-netbox-color-mode=light] .btn-secondary.active:focus,.show>html[data-netbox-color-mode=light] .btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #828a9180}html .btn-secondary:disabled,html .btn-secondary.disabled,html[data-netbox-color-mode=dark] .btn-secondary:disabled,html[data-netbox-color-mode=dark] .btn-secondary.disabled,html[data-netbox-color-mode=light] .btn-secondary:disabled,html[data-netbox-color-mode=light] .btn-secondary.disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}}@media print{html .btn-success,html[data-netbox-color-mode=dark] .btn-success,html[data-netbox-color-mode=light] .btn-success{color:#fff;background-color:#198754;border-color:#198754}html .btn-success:hover,html[data-netbox-color-mode=dark] .btn-success:hover,html[data-netbox-color-mode=light] .btn-success:hover{color:#fff;background-color:#157347;border-color:#146c43}.btn-check:focus+html .btn-success,html .btn-success:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-success,html[data-netbox-color-mode=dark] .btn-success:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-success,html[data-netbox-color-mode=light] .btn-success:focus{color:#fff;background-color:#157347;border-color:#146c43;box-shadow:0 0 0 .25rem #3c996e80}.btn-check:checked+html .btn-success,.btn-check:active+html .btn-success,html .btn-success:active,html .btn-success.active,.show>html .btn-success.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-success,.btn-check:active+html[data-netbox-color-mode=dark] .btn-success,html[data-netbox-color-mode=dark] .btn-success:active,html[data-netbox-color-mode=dark] .btn-success.active,.show>html[data-netbox-color-mode=dark] .btn-success.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-success,.btn-check:active+html[data-netbox-color-mode=light] .btn-success,html[data-netbox-color-mode=light] .btn-success:active,html[data-netbox-color-mode=light] .btn-success.active,.show>html[data-netbox-color-mode=light] .btn-success.dropdown-toggle{color:#fff;background-color:#146c43;border-color:#13653f}.btn-check:checked+html .btn-success:focus,.btn-check:active+html .btn-success:focus,html .btn-success:active:focus,html .btn-success.active:focus,.show>html .btn-success.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-success:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-success:focus,html[data-netbox-color-mode=dark] .btn-success:active:focus,html[data-netbox-color-mode=dark] .btn-success.active:focus,.show>html[data-netbox-color-mode=dark] .btn-success.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-success:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-success:focus,html[data-netbox-color-mode=light] .btn-success:active:focus,html[data-netbox-color-mode=light] .btn-success.active:focus,.show>html[data-netbox-color-mode=light] .btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #3c996e80}html .btn-success:disabled,html .btn-success.disabled,html[data-netbox-color-mode=dark] .btn-success:disabled,html[data-netbox-color-mode=dark] .btn-success.disabled,html[data-netbox-color-mode=light] .btn-success:disabled,html[data-netbox-color-mode=light] .btn-success.disabled{color:#fff;background-color:#198754;border-color:#198754}}@media print{html .btn-info,html[data-netbox-color-mode=dark] .btn-info,html[data-netbox-color-mode=light] .btn-info{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}html .btn-info:hover,html[data-netbox-color-mode=dark] .btn-info:hover,html[data-netbox-color-mode=light] .btn-info:hover{color:#000;background-color:#31d2f2;border-color:#25cff2}.btn-check:focus+html .btn-info,html .btn-info:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-info,html[data-netbox-color-mode=dark] .btn-info:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-info,html[data-netbox-color-mode=light] .btn-info:focus{color:#000;background-color:#31d2f2;border-color:#25cff2;box-shadow:0 0 0 .25rem #0baccc80}.btn-check:checked+html .btn-info,.btn-check:active+html .btn-info,html .btn-info:active,html .btn-info.active,.show>html .btn-info.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-info,.btn-check:active+html[data-netbox-color-mode=dark] .btn-info,html[data-netbox-color-mode=dark] .btn-info:active,html[data-netbox-color-mode=dark] .btn-info.active,.show>html[data-netbox-color-mode=dark] .btn-info.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-info,.btn-check:active+html[data-netbox-color-mode=light] .btn-info,html[data-netbox-color-mode=light] .btn-info:active,html[data-netbox-color-mode=light] .btn-info.active,.show>html[data-netbox-color-mode=light] .btn-info.dropdown-toggle{color:#000;background-color:#3dd5f3;border-color:#25cff2}.btn-check:checked+html .btn-info:focus,.btn-check:active+html .btn-info:focus,html .btn-info:active:focus,html .btn-info.active:focus,.show>html .btn-info.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-info:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-info:focus,html[data-netbox-color-mode=dark] .btn-info:active:focus,html[data-netbox-color-mode=dark] .btn-info.active:focus,.show>html[data-netbox-color-mode=dark] .btn-info.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-info:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-info:focus,html[data-netbox-color-mode=light] .btn-info:active:focus,html[data-netbox-color-mode=light] .btn-info.active:focus,.show>html[data-netbox-color-mode=light] .btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #0baccc80}html .btn-info:disabled,html .btn-info.disabled,html[data-netbox-color-mode=dark] .btn-info:disabled,html[data-netbox-color-mode=dark] .btn-info.disabled,html[data-netbox-color-mode=light] .btn-info:disabled,html[data-netbox-color-mode=light] .btn-info.disabled{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}}@media print{html .btn-warning,html[data-netbox-color-mode=dark] .btn-warning,html[data-netbox-color-mode=light] .btn-warning{color:#000;background-color:#ffc107;border-color:#ffc107}html .btn-warning:hover,html[data-netbox-color-mode=dark] .btn-warning:hover,html[data-netbox-color-mode=light] .btn-warning:hover{color:#000;background-color:#ffca2c;border-color:#ffc720}.btn-check:focus+html .btn-warning,html .btn-warning:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-warning,html[data-netbox-color-mode=dark] .btn-warning:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-warning,html[data-netbox-color-mode=light] .btn-warning:focus{color:#000;background-color:#ffca2c;border-color:#ffc720;box-shadow:0 0 0 .25rem #d9a40680}.btn-check:checked+html .btn-warning,.btn-check:active+html .btn-warning,html .btn-warning:active,html .btn-warning.active,.show>html .btn-warning.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-warning,.btn-check:active+html[data-netbox-color-mode=dark] .btn-warning,html[data-netbox-color-mode=dark] .btn-warning:active,html[data-netbox-color-mode=dark] .btn-warning.active,.show>html[data-netbox-color-mode=dark] .btn-warning.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-warning,.btn-check:active+html[data-netbox-color-mode=light] .btn-warning,html[data-netbox-color-mode=light] .btn-warning:active,html[data-netbox-color-mode=light] .btn-warning.active,.show>html[data-netbox-color-mode=light] .btn-warning.dropdown-toggle{color:#000;background-color:#ffcd39;border-color:#ffc720}.btn-check:checked+html .btn-warning:focus,.btn-check:active+html .btn-warning:focus,html .btn-warning:active:focus,html .btn-warning.active:focus,.show>html .btn-warning.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-warning:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-warning:focus,html[data-netbox-color-mode=dark] .btn-warning:active:focus,html[data-netbox-color-mode=dark] .btn-warning.active:focus,.show>html[data-netbox-color-mode=dark] .btn-warning.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-warning:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-warning:focus,html[data-netbox-color-mode=light] .btn-warning:active:focus,html[data-netbox-color-mode=light] .btn-warning.active:focus,.show>html[data-netbox-color-mode=light] .btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #d9a40680}html .btn-warning:disabled,html .btn-warning.disabled,html[data-netbox-color-mode=dark] .btn-warning:disabled,html[data-netbox-color-mode=dark] .btn-warning.disabled,html[data-netbox-color-mode=light] .btn-warning:disabled,html[data-netbox-color-mode=light] .btn-warning.disabled{color:#000;background-color:#ffc107;border-color:#ffc107}}@media print{html .btn-danger,html[data-netbox-color-mode=dark] .btn-danger,html[data-netbox-color-mode=light] .btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}html .btn-danger:hover,html[data-netbox-color-mode=dark] .btn-danger:hover,html[data-netbox-color-mode=light] .btn-danger:hover{color:#fff;background-color:#bb2d3b;border-color:#b02a37}.btn-check:focus+html .btn-danger,html .btn-danger:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-danger,html[data-netbox-color-mode=dark] .btn-danger:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-danger,html[data-netbox-color-mode=light] .btn-danger:focus{color:#fff;background-color:#bb2d3b;border-color:#b02a37;box-shadow:0 0 0 .25rem #e1536180}.btn-check:checked+html .btn-danger,.btn-check:active+html .btn-danger,html .btn-danger:active,html .btn-danger.active,.show>html .btn-danger.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-danger,.btn-check:active+html[data-netbox-color-mode=dark] .btn-danger,html[data-netbox-color-mode=dark] .btn-danger:active,html[data-netbox-color-mode=dark] .btn-danger.active,.show>html[data-netbox-color-mode=dark] .btn-danger.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-danger,.btn-check:active+html[data-netbox-color-mode=light] .btn-danger,html[data-netbox-color-mode=light] .btn-danger:active,html[data-netbox-color-mode=light] .btn-danger.active,.show>html[data-netbox-color-mode=light] .btn-danger.dropdown-toggle{color:#fff;background-color:#b02a37;border-color:#a52834}.btn-check:checked+html .btn-danger:focus,.btn-check:active+html .btn-danger:focus,html .btn-danger:active:focus,html .btn-danger.active:focus,.show>html .btn-danger.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-danger:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-danger:focus,html[data-netbox-color-mode=dark] .btn-danger:active:focus,html[data-netbox-color-mode=dark] .btn-danger.active:focus,.show>html[data-netbox-color-mode=dark] .btn-danger.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-danger:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-danger:focus,html[data-netbox-color-mode=light] .btn-danger:active:focus,html[data-netbox-color-mode=light] .btn-danger.active:focus,.show>html[data-netbox-color-mode=light] .btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #e1536180}html .btn-danger:disabled,html .btn-danger.disabled,html[data-netbox-color-mode=dark] .btn-danger:disabled,html[data-netbox-color-mode=dark] .btn-danger.disabled,html[data-netbox-color-mode=light] .btn-danger:disabled,html[data-netbox-color-mode=light] .btn-danger.disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}}@media print{html .btn-light,html[data-netbox-color-mode=dark] .btn-light,html[data-netbox-color-mode=light] .btn-light{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}html .btn-light:hover,html[data-netbox-color-mode=dark] .btn-light:hover,html[data-netbox-color-mode=light] .btn-light:hover{color:#000;background-color:#f9fafb;border-color:#f9fafb}.btn-check:focus+html .btn-light,html .btn-light:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-light,html[data-netbox-color-mode=dark] .btn-light:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-light,html[data-netbox-color-mode=light] .btn-light:focus{color:#000;background-color:#f9fafb;border-color:#f9fafb;box-shadow:0 0 0 .25rem #d3d4d580}.btn-check:checked+html .btn-light,.btn-check:active+html .btn-light,html .btn-light:active,html .btn-light.active,.show>html .btn-light.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-light,.btn-check:active+html[data-netbox-color-mode=dark] .btn-light,html[data-netbox-color-mode=dark] .btn-light:active,html[data-netbox-color-mode=dark] .btn-light.active,.show>html[data-netbox-color-mode=dark] .btn-light.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-light,.btn-check:active+html[data-netbox-color-mode=light] .btn-light,html[data-netbox-color-mode=light] .btn-light:active,html[data-netbox-color-mode=light] .btn-light.active,.show>html[data-netbox-color-mode=light] .btn-light.dropdown-toggle{color:#000;background-color:#f9fafb;border-color:#f9fafb}.btn-check:checked+html .btn-light:focus,.btn-check:active+html .btn-light:focus,html .btn-light:active:focus,html .btn-light.active:focus,.show>html .btn-light.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-light:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-light:focus,html[data-netbox-color-mode=dark] .btn-light:active:focus,html[data-netbox-color-mode=dark] .btn-light.active:focus,.show>html[data-netbox-color-mode=dark] .btn-light.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-light:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-light:focus,html[data-netbox-color-mode=light] .btn-light:active:focus,html[data-netbox-color-mode=light] .btn-light.active:focus,.show>html[data-netbox-color-mode=light] .btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #d3d4d580}html .btn-light:disabled,html .btn-light.disabled,html[data-netbox-color-mode=dark] .btn-light:disabled,html[data-netbox-color-mode=dark] .btn-light.disabled,html[data-netbox-color-mode=light] .btn-light:disabled,html[data-netbox-color-mode=light] .btn-light.disabled{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}}@media print{html .btn-dark,html[data-netbox-color-mode=dark] .btn-dark,html[data-netbox-color-mode=light] .btn-dark{color:#fff;background-color:#212529;border-color:#212529}html .btn-dark:hover,html[data-netbox-color-mode=dark] .btn-dark:hover,html[data-netbox-color-mode=light] .btn-dark:hover{color:#fff;background-color:#1c1f23;border-color:#1a1e21}.btn-check:focus+html .btn-dark,html .btn-dark:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-dark,html[data-netbox-color-mode=dark] .btn-dark:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-dark,html[data-netbox-color-mode=light] .btn-dark:focus{color:#fff;background-color:#1c1f23;border-color:#1a1e21;box-shadow:0 0 0 .25rem #42464980}.btn-check:checked+html .btn-dark,.btn-check:active+html .btn-dark,html .btn-dark:active,html .btn-dark.active,.show>html .btn-dark.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-dark,.btn-check:active+html[data-netbox-color-mode=dark] .btn-dark,html[data-netbox-color-mode=dark] .btn-dark:active,html[data-netbox-color-mode=dark] .btn-dark.active,.show>html[data-netbox-color-mode=dark] .btn-dark.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-dark,.btn-check:active+html[data-netbox-color-mode=light] .btn-dark,html[data-netbox-color-mode=light] .btn-dark:active,html[data-netbox-color-mode=light] .btn-dark.active,.show>html[data-netbox-color-mode=light] .btn-dark.dropdown-toggle{color:#fff;background-color:#1a1e21;border-color:#191c1f}.btn-check:checked+html .btn-dark:focus,.btn-check:active+html .btn-dark:focus,html .btn-dark:active:focus,html .btn-dark.active:focus,.show>html .btn-dark.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-dark:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-dark:focus,html[data-netbox-color-mode=dark] .btn-dark:active:focus,html[data-netbox-color-mode=dark] .btn-dark.active:focus,.show>html[data-netbox-color-mode=dark] .btn-dark.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-dark:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-dark:focus,html[data-netbox-color-mode=light] .btn-dark:active:focus,html[data-netbox-color-mode=light] .btn-dark.active:focus,.show>html[data-netbox-color-mode=light] .btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #42464980}html .btn-dark:disabled,html .btn-dark.disabled,html[data-netbox-color-mode=dark] .btn-dark:disabled,html[data-netbox-color-mode=dark] .btn-dark.disabled,html[data-netbox-color-mode=light] .btn-dark:disabled,html[data-netbox-color-mode=light] .btn-dark.disabled{color:#fff;background-color:#212529;border-color:#212529}}@media print{html .btn-red,html[data-netbox-color-mode=dark] .btn-red,html[data-netbox-color-mode=light] .btn-red{color:#fff;background-color:#dc3545;border-color:#dc3545}html .btn-red:hover,html[data-netbox-color-mode=dark] .btn-red:hover,html[data-netbox-color-mode=light] .btn-red:hover{color:#fff;background-color:#bb2d3b;border-color:#b02a37}.btn-check:focus+html .btn-red,html .btn-red:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-red,html[data-netbox-color-mode=dark] .btn-red:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-red,html[data-netbox-color-mode=light] .btn-red:focus{color:#fff;background-color:#bb2d3b;border-color:#b02a37;box-shadow:0 0 0 .25rem #e1536180}.btn-check:checked+html .btn-red,.btn-check:active+html .btn-red,html .btn-red:active,html .btn-red.active,.show>html .btn-red.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-red,.btn-check:active+html[data-netbox-color-mode=dark] .btn-red,html[data-netbox-color-mode=dark] .btn-red:active,html[data-netbox-color-mode=dark] .btn-red.active,.show>html[data-netbox-color-mode=dark] .btn-red.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-red,.btn-check:active+html[data-netbox-color-mode=light] .btn-red,html[data-netbox-color-mode=light] .btn-red:active,html[data-netbox-color-mode=light] .btn-red.active,.show>html[data-netbox-color-mode=light] .btn-red.dropdown-toggle{color:#fff;background-color:#b02a37;border-color:#a52834}.btn-check:checked+html .btn-red:focus,.btn-check:active+html .btn-red:focus,html .btn-red:active:focus,html .btn-red.active:focus,.show>html .btn-red.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-red:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-red:focus,html[data-netbox-color-mode=dark] .btn-red:active:focus,html[data-netbox-color-mode=dark] .btn-red.active:focus,.show>html[data-netbox-color-mode=dark] .btn-red.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-red:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-red:focus,html[data-netbox-color-mode=light] .btn-red:active:focus,html[data-netbox-color-mode=light] .btn-red.active:focus,.show>html[data-netbox-color-mode=light] .btn-red.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #e1536180}html .btn-red:disabled,html .btn-red.disabled,html[data-netbox-color-mode=dark] .btn-red:disabled,html[data-netbox-color-mode=dark] .btn-red.disabled,html[data-netbox-color-mode=light] .btn-red:disabled,html[data-netbox-color-mode=light] .btn-red.disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}}@media print{html .btn-yellow,html[data-netbox-color-mode=dark] .btn-yellow,html[data-netbox-color-mode=light] .btn-yellow{color:#000;background-color:#ffc107;border-color:#ffc107}html .btn-yellow:hover,html[data-netbox-color-mode=dark] .btn-yellow:hover,html[data-netbox-color-mode=light] .btn-yellow:hover{color:#000;background-color:#ffca2c;border-color:#ffc720}.btn-check:focus+html .btn-yellow,html .btn-yellow:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-yellow,html[data-netbox-color-mode=dark] .btn-yellow:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-yellow,html[data-netbox-color-mode=light] .btn-yellow:focus{color:#000;background-color:#ffca2c;border-color:#ffc720;box-shadow:0 0 0 .25rem #d9a40680}.btn-check:checked+html .btn-yellow,.btn-check:active+html .btn-yellow,html .btn-yellow:active,html .btn-yellow.active,.show>html .btn-yellow.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-yellow,.btn-check:active+html[data-netbox-color-mode=dark] .btn-yellow,html[data-netbox-color-mode=dark] .btn-yellow:active,html[data-netbox-color-mode=dark] .btn-yellow.active,.show>html[data-netbox-color-mode=dark] .btn-yellow.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-yellow,.btn-check:active+html[data-netbox-color-mode=light] .btn-yellow,html[data-netbox-color-mode=light] .btn-yellow:active,html[data-netbox-color-mode=light] .btn-yellow.active,.show>html[data-netbox-color-mode=light] .btn-yellow.dropdown-toggle{color:#000;background-color:#ffcd39;border-color:#ffc720}.btn-check:checked+html .btn-yellow:focus,.btn-check:active+html .btn-yellow:focus,html .btn-yellow:active:focus,html .btn-yellow.active:focus,.show>html .btn-yellow.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-yellow:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-yellow:focus,html[data-netbox-color-mode=dark] .btn-yellow:active:focus,html[data-netbox-color-mode=dark] .btn-yellow.active:focus,.show>html[data-netbox-color-mode=dark] .btn-yellow.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-yellow:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-yellow:focus,html[data-netbox-color-mode=light] .btn-yellow:active:focus,html[data-netbox-color-mode=light] .btn-yellow.active:focus,.show>html[data-netbox-color-mode=light] .btn-yellow.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #d9a40680}html .btn-yellow:disabled,html .btn-yellow.disabled,html[data-netbox-color-mode=dark] .btn-yellow:disabled,html[data-netbox-color-mode=dark] .btn-yellow.disabled,html[data-netbox-color-mode=light] .btn-yellow:disabled,html[data-netbox-color-mode=light] .btn-yellow.disabled{color:#000;background-color:#ffc107;border-color:#ffc107}}@media print{html .btn-green,html[data-netbox-color-mode=dark] .btn-green,html[data-netbox-color-mode=light] .btn-green{color:#fff;background-color:#198754;border-color:#198754}html .btn-green:hover,html[data-netbox-color-mode=dark] .btn-green:hover,html[data-netbox-color-mode=light] .btn-green:hover{color:#fff;background-color:#157347;border-color:#146c43}.btn-check:focus+html .btn-green,html .btn-green:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-green,html[data-netbox-color-mode=dark] .btn-green:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-green,html[data-netbox-color-mode=light] .btn-green:focus{color:#fff;background-color:#157347;border-color:#146c43;box-shadow:0 0 0 .25rem #3c996e80}.btn-check:checked+html .btn-green,.btn-check:active+html .btn-green,html .btn-green:active,html .btn-green.active,.show>html .btn-green.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-green,.btn-check:active+html[data-netbox-color-mode=dark] .btn-green,html[data-netbox-color-mode=dark] .btn-green:active,html[data-netbox-color-mode=dark] .btn-green.active,.show>html[data-netbox-color-mode=dark] .btn-green.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-green,.btn-check:active+html[data-netbox-color-mode=light] .btn-green,html[data-netbox-color-mode=light] .btn-green:active,html[data-netbox-color-mode=light] .btn-green.active,.show>html[data-netbox-color-mode=light] .btn-green.dropdown-toggle{color:#fff;background-color:#146c43;border-color:#13653f}.btn-check:checked+html .btn-green:focus,.btn-check:active+html .btn-green:focus,html .btn-green:active:focus,html .btn-green.active:focus,.show>html .btn-green.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-green:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-green:focus,html[data-netbox-color-mode=dark] .btn-green:active:focus,html[data-netbox-color-mode=dark] .btn-green.active:focus,.show>html[data-netbox-color-mode=dark] .btn-green.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-green:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-green:focus,html[data-netbox-color-mode=light] .btn-green:active:focus,html[data-netbox-color-mode=light] .btn-green.active:focus,.show>html[data-netbox-color-mode=light] .btn-green.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #3c996e80}html .btn-green:disabled,html .btn-green.disabled,html[data-netbox-color-mode=dark] .btn-green:disabled,html[data-netbox-color-mode=dark] .btn-green.disabled,html[data-netbox-color-mode=light] .btn-green:disabled,html[data-netbox-color-mode=light] .btn-green.disabled{color:#fff;background-color:#198754;border-color:#198754}}@media print{html .btn-blue,html[data-netbox-color-mode=dark] .btn-blue,html[data-netbox-color-mode=light] .btn-blue{color:#fff;background-color:#0d6efd;border-color:#0d6efd}html .btn-blue:hover,html[data-netbox-color-mode=dark] .btn-blue:hover,html[data-netbox-color-mode=light] .btn-blue:hover{color:#fff;background-color:#0b5ed7;border-color:#0a58ca}.btn-check:focus+html .btn-blue,html .btn-blue:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-blue,html[data-netbox-color-mode=dark] .btn-blue:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-blue,html[data-netbox-color-mode=light] .btn-blue:focus{color:#fff;background-color:#0b5ed7;border-color:#0a58ca;box-shadow:0 0 0 .25rem #3184fd80}.btn-check:checked+html .btn-blue,.btn-check:active+html .btn-blue,html .btn-blue:active,html .btn-blue.active,.show>html .btn-blue.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-blue,.btn-check:active+html[data-netbox-color-mode=dark] .btn-blue,html[data-netbox-color-mode=dark] .btn-blue:active,html[data-netbox-color-mode=dark] .btn-blue.active,.show>html[data-netbox-color-mode=dark] .btn-blue.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-blue,.btn-check:active+html[data-netbox-color-mode=light] .btn-blue,html[data-netbox-color-mode=light] .btn-blue:active,html[data-netbox-color-mode=light] .btn-blue.active,.show>html[data-netbox-color-mode=light] .btn-blue.dropdown-toggle{color:#fff;background-color:#0a58ca;border-color:#0a53be}.btn-check:checked+html .btn-blue:focus,.btn-check:active+html .btn-blue:focus,html .btn-blue:active:focus,html .btn-blue.active:focus,.show>html .btn-blue.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-blue:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-blue:focus,html[data-netbox-color-mode=dark] .btn-blue:active:focus,html[data-netbox-color-mode=dark] .btn-blue.active:focus,.show>html[data-netbox-color-mode=dark] .btn-blue.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-blue:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-blue:focus,html[data-netbox-color-mode=light] .btn-blue:active:focus,html[data-netbox-color-mode=light] .btn-blue.active:focus,.show>html[data-netbox-color-mode=light] .btn-blue.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #3184fd80}html .btn-blue:disabled,html .btn-blue.disabled,html[data-netbox-color-mode=dark] .btn-blue:disabled,html[data-netbox-color-mode=dark] .btn-blue.disabled,html[data-netbox-color-mode=light] .btn-blue:disabled,html[data-netbox-color-mode=light] .btn-blue.disabled{color:#fff;background-color:#0d6efd;border-color:#0d6efd}}@media print{html .btn-cyan,html[data-netbox-color-mode=dark] .btn-cyan,html[data-netbox-color-mode=light] .btn-cyan{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}html .btn-cyan:hover,html[data-netbox-color-mode=dark] .btn-cyan:hover,html[data-netbox-color-mode=light] .btn-cyan:hover{color:#000;background-color:#31d2f2;border-color:#25cff2}.btn-check:focus+html .btn-cyan,html .btn-cyan:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-cyan,html[data-netbox-color-mode=dark] .btn-cyan:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-cyan,html[data-netbox-color-mode=light] .btn-cyan:focus{color:#000;background-color:#31d2f2;border-color:#25cff2;box-shadow:0 0 0 .25rem #0baccc80}.btn-check:checked+html .btn-cyan,.btn-check:active+html .btn-cyan,html .btn-cyan:active,html .btn-cyan.active,.show>html .btn-cyan.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-cyan,.btn-check:active+html[data-netbox-color-mode=dark] .btn-cyan,html[data-netbox-color-mode=dark] .btn-cyan:active,html[data-netbox-color-mode=dark] .btn-cyan.active,.show>html[data-netbox-color-mode=dark] .btn-cyan.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-cyan,.btn-check:active+html[data-netbox-color-mode=light] .btn-cyan,html[data-netbox-color-mode=light] .btn-cyan:active,html[data-netbox-color-mode=light] .btn-cyan.active,.show>html[data-netbox-color-mode=light] .btn-cyan.dropdown-toggle{color:#000;background-color:#3dd5f3;border-color:#25cff2}.btn-check:checked+html .btn-cyan:focus,.btn-check:active+html .btn-cyan:focus,html .btn-cyan:active:focus,html .btn-cyan.active:focus,.show>html .btn-cyan.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-cyan:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-cyan:focus,html[data-netbox-color-mode=dark] .btn-cyan:active:focus,html[data-netbox-color-mode=dark] .btn-cyan.active:focus,.show>html[data-netbox-color-mode=dark] .btn-cyan.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-cyan:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-cyan:focus,html[data-netbox-color-mode=light] .btn-cyan:active:focus,html[data-netbox-color-mode=light] .btn-cyan.active:focus,.show>html[data-netbox-color-mode=light] .btn-cyan.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #0baccc80}html .btn-cyan:disabled,html .btn-cyan.disabled,html[data-netbox-color-mode=dark] .btn-cyan:disabled,html[data-netbox-color-mode=dark] .btn-cyan.disabled,html[data-netbox-color-mode=light] .btn-cyan:disabled,html[data-netbox-color-mode=light] .btn-cyan.disabled{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}}@media print{html .btn-indigo,html[data-netbox-color-mode=dark] .btn-indigo,html[data-netbox-color-mode=light] .btn-indigo{color:#fff;background-color:#6610f2;border-color:#6610f2}html .btn-indigo:hover,html[data-netbox-color-mode=dark] .btn-indigo:hover,html[data-netbox-color-mode=light] .btn-indigo:hover{color:#fff;background-color:#570ece;border-color:#520dc2}.btn-check:focus+html .btn-indigo,html .btn-indigo:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-indigo,html[data-netbox-color-mode=dark] .btn-indigo:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-indigo,html[data-netbox-color-mode=light] .btn-indigo:focus{color:#fff;background-color:#570ece;border-color:#520dc2;box-shadow:0 0 0 .25rem #7d34f480}.btn-check:checked+html .btn-indigo,.btn-check:active+html .btn-indigo,html .btn-indigo:active,html .btn-indigo.active,.show>html .btn-indigo.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-indigo,.btn-check:active+html[data-netbox-color-mode=dark] .btn-indigo,html[data-netbox-color-mode=dark] .btn-indigo:active,html[data-netbox-color-mode=dark] .btn-indigo.active,.show>html[data-netbox-color-mode=dark] .btn-indigo.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-indigo,.btn-check:active+html[data-netbox-color-mode=light] .btn-indigo,html[data-netbox-color-mode=light] .btn-indigo:active,html[data-netbox-color-mode=light] .btn-indigo.active,.show>html[data-netbox-color-mode=light] .btn-indigo.dropdown-toggle{color:#fff;background-color:#520dc2;border-color:#4d0cb6}.btn-check:checked+html .btn-indigo:focus,.btn-check:active+html .btn-indigo:focus,html .btn-indigo:active:focus,html .btn-indigo.active:focus,.show>html .btn-indigo.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-indigo:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-indigo:focus,html[data-netbox-color-mode=dark] .btn-indigo:active:focus,html[data-netbox-color-mode=dark] .btn-indigo.active:focus,.show>html[data-netbox-color-mode=dark] .btn-indigo.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-indigo:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-indigo:focus,html[data-netbox-color-mode=light] .btn-indigo:active:focus,html[data-netbox-color-mode=light] .btn-indigo.active:focus,.show>html[data-netbox-color-mode=light] .btn-indigo.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #7d34f480}html .btn-indigo:disabled,html .btn-indigo.disabled,html[data-netbox-color-mode=dark] .btn-indigo:disabled,html[data-netbox-color-mode=dark] .btn-indigo.disabled,html[data-netbox-color-mode=light] .btn-indigo:disabled,html[data-netbox-color-mode=light] .btn-indigo.disabled{color:#fff;background-color:#6610f2;border-color:#6610f2}}@media print{html .btn-purple,html[data-netbox-color-mode=dark] .btn-purple,html[data-netbox-color-mode=light] .btn-purple{color:#fff;background-color:#6f42c1;border-color:#6f42c1}html .btn-purple:hover,html[data-netbox-color-mode=dark] .btn-purple:hover,html[data-netbox-color-mode=light] .btn-purple:hover{color:#fff;background-color:#5e38a4;border-color:#59359a}.btn-check:focus+html .btn-purple,html .btn-purple:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-purple,html[data-netbox-color-mode=dark] .btn-purple:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-purple,html[data-netbox-color-mode=light] .btn-purple:focus{color:#fff;background-color:#5e38a4;border-color:#59359a;box-shadow:0 0 0 .25rem #855eca80}.btn-check:checked+html .btn-purple,.btn-check:active+html .btn-purple,html .btn-purple:active,html .btn-purple.active,.show>html .btn-purple.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-purple,.btn-check:active+html[data-netbox-color-mode=dark] .btn-purple,html[data-netbox-color-mode=dark] .btn-purple:active,html[data-netbox-color-mode=dark] .btn-purple.active,.show>html[data-netbox-color-mode=dark] .btn-purple.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-purple,.btn-check:active+html[data-netbox-color-mode=light] .btn-purple,html[data-netbox-color-mode=light] .btn-purple:active,html[data-netbox-color-mode=light] .btn-purple.active,.show>html[data-netbox-color-mode=light] .btn-purple.dropdown-toggle{color:#fff;background-color:#59359a;border-color:#533291}.btn-check:checked+html .btn-purple:focus,.btn-check:active+html .btn-purple:focus,html .btn-purple:active:focus,html .btn-purple.active:focus,.show>html .btn-purple.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-purple:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-purple:focus,html[data-netbox-color-mode=dark] .btn-purple:active:focus,html[data-netbox-color-mode=dark] .btn-purple.active:focus,.show>html[data-netbox-color-mode=dark] .btn-purple.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-purple:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-purple:focus,html[data-netbox-color-mode=light] .btn-purple:active:focus,html[data-netbox-color-mode=light] .btn-purple.active:focus,.show>html[data-netbox-color-mode=light] .btn-purple.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #855eca80}html .btn-purple:disabled,html .btn-purple.disabled,html[data-netbox-color-mode=dark] .btn-purple:disabled,html[data-netbox-color-mode=dark] .btn-purple.disabled,html[data-netbox-color-mode=light] .btn-purple:disabled,html[data-netbox-color-mode=light] .btn-purple.disabled{color:#fff;background-color:#6f42c1;border-color:#6f42c1}}@media print{html .btn-pink,html[data-netbox-color-mode=dark] .btn-pink,html[data-netbox-color-mode=light] .btn-pink{color:#fff;background-color:#d63384;border-color:#d63384}html .btn-pink:hover,html[data-netbox-color-mode=dark] .btn-pink:hover,html[data-netbox-color-mode=light] .btn-pink:hover{color:#fff;background-color:#b62b70;border-color:#ab296a}.btn-check:focus+html .btn-pink,html .btn-pink:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-pink,html[data-netbox-color-mode=dark] .btn-pink:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-pink,html[data-netbox-color-mode=light] .btn-pink:focus{color:#fff;background-color:#b62b70;border-color:#ab296a;box-shadow:0 0 0 .25rem #dc529680}.btn-check:checked+html .btn-pink,.btn-check:active+html .btn-pink,html .btn-pink:active,html .btn-pink.active,.show>html .btn-pink.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-pink,.btn-check:active+html[data-netbox-color-mode=dark] .btn-pink,html[data-netbox-color-mode=dark] .btn-pink:active,html[data-netbox-color-mode=dark] .btn-pink.active,.show>html[data-netbox-color-mode=dark] .btn-pink.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-pink,.btn-check:active+html[data-netbox-color-mode=light] .btn-pink,html[data-netbox-color-mode=light] .btn-pink:active,html[data-netbox-color-mode=light] .btn-pink.active,.show>html[data-netbox-color-mode=light] .btn-pink.dropdown-toggle{color:#fff;background-color:#ab296a;border-color:#a12663}.btn-check:checked+html .btn-pink:focus,.btn-check:active+html .btn-pink:focus,html .btn-pink:active:focus,html .btn-pink.active:focus,.show>html .btn-pink.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-pink:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-pink:focus,html[data-netbox-color-mode=dark] .btn-pink:active:focus,html[data-netbox-color-mode=dark] .btn-pink.active:focus,.show>html[data-netbox-color-mode=dark] .btn-pink.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-pink:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-pink:focus,html[data-netbox-color-mode=light] .btn-pink:active:focus,html[data-netbox-color-mode=light] .btn-pink.active:focus,.show>html[data-netbox-color-mode=light] .btn-pink.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #dc529680}html .btn-pink:disabled,html .btn-pink.disabled,html[data-netbox-color-mode=dark] .btn-pink:disabled,html[data-netbox-color-mode=dark] .btn-pink.disabled,html[data-netbox-color-mode=light] .btn-pink:disabled,html[data-netbox-color-mode=light] .btn-pink.disabled{color:#fff;background-color:#d63384;border-color:#d63384}}@media print{html .btn-darker,html[data-netbox-color-mode=dark] .btn-darker,html[data-netbox-color-mode=light] .btn-darker{color:#fff;background-color:#1b1f22;border-color:#1b1f22}html .btn-darker:hover,html[data-netbox-color-mode=dark] .btn-darker:hover,html[data-netbox-color-mode=light] .btn-darker:hover{color:#fff;background-color:#171a1d;border-color:#16191b}.btn-check:focus+html .btn-darker,html .btn-darker:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-darker,html[data-netbox-color-mode=dark] .btn-darker:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-darker,html[data-netbox-color-mode=light] .btn-darker:focus{color:#fff;background-color:#171a1d;border-color:#16191b;box-shadow:0 0 0 .25rem #3d414380}.btn-check:checked+html .btn-darker,.btn-check:active+html .btn-darker,html .btn-darker:active,html .btn-darker.active,.show>html .btn-darker.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-darker,.btn-check:active+html[data-netbox-color-mode=dark] .btn-darker,html[data-netbox-color-mode=dark] .btn-darker:active,html[data-netbox-color-mode=dark] .btn-darker.active,.show>html[data-netbox-color-mode=dark] .btn-darker.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-darker,.btn-check:active+html[data-netbox-color-mode=light] .btn-darker,html[data-netbox-color-mode=light] .btn-darker:active,html[data-netbox-color-mode=light] .btn-darker.active,.show>html[data-netbox-color-mode=light] .btn-darker.dropdown-toggle{color:#fff;background-color:#16191b;border-color:#14171a}.btn-check:checked+html .btn-darker:focus,.btn-check:active+html .btn-darker:focus,html .btn-darker:active:focus,html .btn-darker.active:focus,.show>html .btn-darker.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-darker:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-darker:focus,html[data-netbox-color-mode=dark] .btn-darker:active:focus,html[data-netbox-color-mode=dark] .btn-darker.active:focus,.show>html[data-netbox-color-mode=dark] .btn-darker.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-darker:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-darker:focus,html[data-netbox-color-mode=light] .btn-darker:active:focus,html[data-netbox-color-mode=light] .btn-darker.active:focus,.show>html[data-netbox-color-mode=light] .btn-darker.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #3d414380}html .btn-darker:disabled,html .btn-darker.disabled,html[data-netbox-color-mode=dark] .btn-darker:disabled,html[data-netbox-color-mode=dark] .btn-darker.disabled,html[data-netbox-color-mode=light] .btn-darker:disabled,html[data-netbox-color-mode=light] .btn-darker.disabled{color:#fff;background-color:#1b1f22;border-color:#1b1f22}}@media print{html .btn-darkest,html[data-netbox-color-mode=dark] .btn-darkest,html[data-netbox-color-mode=light] .btn-darkest{color:#fff;background-color:#171b1d;border-color:#171b1d}html .btn-darkest:hover,html[data-netbox-color-mode=dark] .btn-darkest:hover,html[data-netbox-color-mode=light] .btn-darkest:hover{color:#fff;background-color:#141719;border-color:#121617}.btn-check:focus+html .btn-darkest,html .btn-darkest:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-darkest,html[data-netbox-color-mode=dark] .btn-darkest:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-darkest,html[data-netbox-color-mode=light] .btn-darkest:focus{color:#fff;background-color:#141719;border-color:#121617;box-shadow:0 0 0 .25rem #3a3d3f80}.btn-check:checked+html .btn-darkest,.btn-check:active+html .btn-darkest,html .btn-darkest:active,html .btn-darkest.active,.show>html .btn-darkest.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-darkest,.btn-check:active+html[data-netbox-color-mode=dark] .btn-darkest,html[data-netbox-color-mode=dark] .btn-darkest:active,html[data-netbox-color-mode=dark] .btn-darkest.active,.show>html[data-netbox-color-mode=dark] .btn-darkest.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-darkest,.btn-check:active+html[data-netbox-color-mode=light] .btn-darkest,html[data-netbox-color-mode=light] .btn-darkest:active,html[data-netbox-color-mode=light] .btn-darkest.active,.show>html[data-netbox-color-mode=light] .btn-darkest.dropdown-toggle{color:#fff;background-color:#121617;border-color:#111416}.btn-check:checked+html .btn-darkest:focus,.btn-check:active+html .btn-darkest:focus,html .btn-darkest:active:focus,html .btn-darkest.active:focus,.show>html .btn-darkest.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-darkest:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-darkest:focus,html[data-netbox-color-mode=dark] .btn-darkest:active:focus,html[data-netbox-color-mode=dark] .btn-darkest.active:focus,.show>html[data-netbox-color-mode=dark] .btn-darkest.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-darkest:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-darkest:focus,html[data-netbox-color-mode=light] .btn-darkest:active:focus,html[data-netbox-color-mode=light] .btn-darkest.active:focus,.show>html[data-netbox-color-mode=light] .btn-darkest.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #3a3d3f80}html .btn-darkest:disabled,html .btn-darkest.disabled,html[data-netbox-color-mode=dark] .btn-darkest:disabled,html[data-netbox-color-mode=dark] .btn-darkest.disabled,html[data-netbox-color-mode=light] .btn-darkest:disabled,html[data-netbox-color-mode=light] .btn-darkest.disabled{color:#fff;background-color:#171b1d;border-color:#171b1d}}@media print{html .btn-gray,html[data-netbox-color-mode=dark] .btn-gray,html[data-netbox-color-mode=light] .btn-gray{color:#000;background-color:#ced4da;border-color:#ced4da}html .btn-gray:hover,html[data-netbox-color-mode=dark] .btn-gray:hover,html[data-netbox-color-mode=light] .btn-gray:hover{color:#000;background-color:#d5dae0;border-color:#d3d8de}.btn-check:focus+html .btn-gray,html .btn-gray:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-gray,html[data-netbox-color-mode=dark] .btn-gray:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-gray,html[data-netbox-color-mode=light] .btn-gray:focus{color:#000;background-color:#d5dae0;border-color:#d3d8de;box-shadow:0 0 0 .25rem #afb4b980}.btn-check:checked+html .btn-gray,.btn-check:active+html .btn-gray,html .btn-gray:active,html .btn-gray.active,.show>html .btn-gray.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-gray,.btn-check:active+html[data-netbox-color-mode=dark] .btn-gray,html[data-netbox-color-mode=dark] .btn-gray:active,html[data-netbox-color-mode=dark] .btn-gray.active,.show>html[data-netbox-color-mode=dark] .btn-gray.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-gray,.btn-check:active+html[data-netbox-color-mode=light] .btn-gray,html[data-netbox-color-mode=light] .btn-gray:active,html[data-netbox-color-mode=light] .btn-gray.active,.show>html[data-netbox-color-mode=light] .btn-gray.dropdown-toggle{color:#000;background-color:#d8dde1;border-color:#d3d8de}.btn-check:checked+html .btn-gray:focus,.btn-check:active+html .btn-gray:focus,html .btn-gray:active:focus,html .btn-gray.active:focus,.show>html .btn-gray.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-gray:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-gray:focus,html[data-netbox-color-mode=dark] .btn-gray:active:focus,html[data-netbox-color-mode=dark] .btn-gray.active:focus,.show>html[data-netbox-color-mode=dark] .btn-gray.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-gray:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-gray:focus,html[data-netbox-color-mode=light] .btn-gray:active:focus,html[data-netbox-color-mode=light] .btn-gray.active:focus,.show>html[data-netbox-color-mode=light] .btn-gray.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #afb4b980}html .btn-gray:disabled,html .btn-gray.disabled,html[data-netbox-color-mode=dark] .btn-gray:disabled,html[data-netbox-color-mode=dark] .btn-gray.disabled,html[data-netbox-color-mode=light] .btn-gray:disabled,html[data-netbox-color-mode=light] .btn-gray.disabled{color:#000;background-color:#ced4da;border-color:#ced4da}}@media print{html .btn-gray-100,html[data-netbox-color-mode=dark] .btn-gray-100,html[data-netbox-color-mode=light] .btn-gray-100{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}html .btn-gray-100:hover,html[data-netbox-color-mode=dark] .btn-gray-100:hover,html[data-netbox-color-mode=light] .btn-gray-100:hover{color:#000;background-color:#f9fafb;border-color:#f9fafb}.btn-check:focus+html .btn-gray-100,html .btn-gray-100:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-gray-100,html[data-netbox-color-mode=dark] .btn-gray-100:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-gray-100,html[data-netbox-color-mode=light] .btn-gray-100:focus{color:#000;background-color:#f9fafb;border-color:#f9fafb;box-shadow:0 0 0 .25rem #d3d4d580}.btn-check:checked+html .btn-gray-100,.btn-check:active+html .btn-gray-100,html .btn-gray-100:active,html .btn-gray-100.active,.show>html .btn-gray-100.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-gray-100,.btn-check:active+html[data-netbox-color-mode=dark] .btn-gray-100,html[data-netbox-color-mode=dark] .btn-gray-100:active,html[data-netbox-color-mode=dark] .btn-gray-100.active,.show>html[data-netbox-color-mode=dark] .btn-gray-100.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-gray-100,.btn-check:active+html[data-netbox-color-mode=light] .btn-gray-100,html[data-netbox-color-mode=light] .btn-gray-100:active,html[data-netbox-color-mode=light] .btn-gray-100.active,.show>html[data-netbox-color-mode=light] .btn-gray-100.dropdown-toggle{color:#000;background-color:#f9fafb;border-color:#f9fafb}.btn-check:checked+html .btn-gray-100:focus,.btn-check:active+html .btn-gray-100:focus,html .btn-gray-100:active:focus,html .btn-gray-100.active:focus,.show>html .btn-gray-100.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-gray-100:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-gray-100:focus,html[data-netbox-color-mode=dark] .btn-gray-100:active:focus,html[data-netbox-color-mode=dark] .btn-gray-100.active:focus,.show>html[data-netbox-color-mode=dark] .btn-gray-100.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-gray-100:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-gray-100:focus,html[data-netbox-color-mode=light] .btn-gray-100:active:focus,html[data-netbox-color-mode=light] .btn-gray-100.active:focus,.show>html[data-netbox-color-mode=light] .btn-gray-100.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #d3d4d580}html .btn-gray-100:disabled,html .btn-gray-100.disabled,html[data-netbox-color-mode=dark] .btn-gray-100:disabled,html[data-netbox-color-mode=dark] .btn-gray-100.disabled,html[data-netbox-color-mode=light] .btn-gray-100:disabled,html[data-netbox-color-mode=light] .btn-gray-100.disabled{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}}@media print{html .btn-gray-200,html[data-netbox-color-mode=dark] .btn-gray-200,html[data-netbox-color-mode=light] .btn-gray-200{color:#000;background-color:#e9ecef;border-color:#e9ecef}html .btn-gray-200:hover,html[data-netbox-color-mode=dark] .btn-gray-200:hover,html[data-netbox-color-mode=light] .btn-gray-200:hover{color:#000;background-color:#eceff1;border-color:#ebeef1}.btn-check:focus+html .btn-gray-200,html .btn-gray-200:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-gray-200,html[data-netbox-color-mode=dark] .btn-gray-200:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-gray-200,html[data-netbox-color-mode=light] .btn-gray-200:focus{color:#000;background-color:#eceff1;border-color:#ebeef1;box-shadow:0 0 0 .25rem #c6c9cb80}.btn-check:checked+html .btn-gray-200,.btn-check:active+html .btn-gray-200,html .btn-gray-200:active,html .btn-gray-200.active,.show>html .btn-gray-200.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-gray-200,.btn-check:active+html[data-netbox-color-mode=dark] .btn-gray-200,html[data-netbox-color-mode=dark] .btn-gray-200:active,html[data-netbox-color-mode=dark] .btn-gray-200.active,.show>html[data-netbox-color-mode=dark] .btn-gray-200.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-gray-200,.btn-check:active+html[data-netbox-color-mode=light] .btn-gray-200,html[data-netbox-color-mode=light] .btn-gray-200:active,html[data-netbox-color-mode=light] .btn-gray-200.active,.show>html[data-netbox-color-mode=light] .btn-gray-200.dropdown-toggle{color:#000;background-color:#edf0f2;border-color:#ebeef1}.btn-check:checked+html .btn-gray-200:focus,.btn-check:active+html .btn-gray-200:focus,html .btn-gray-200:active:focus,html .btn-gray-200.active:focus,.show>html .btn-gray-200.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-gray-200:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-gray-200:focus,html[data-netbox-color-mode=dark] .btn-gray-200:active:focus,html[data-netbox-color-mode=dark] .btn-gray-200.active:focus,.show>html[data-netbox-color-mode=dark] .btn-gray-200.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-gray-200:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-gray-200:focus,html[data-netbox-color-mode=light] .btn-gray-200:active:focus,html[data-netbox-color-mode=light] .btn-gray-200.active:focus,.show>html[data-netbox-color-mode=light] .btn-gray-200.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #c6c9cb80}html .btn-gray-200:disabled,html .btn-gray-200.disabled,html[data-netbox-color-mode=dark] .btn-gray-200:disabled,html[data-netbox-color-mode=dark] .btn-gray-200.disabled,html[data-netbox-color-mode=light] .btn-gray-200:disabled,html[data-netbox-color-mode=light] .btn-gray-200.disabled{color:#000;background-color:#e9ecef;border-color:#e9ecef}}@media print{html .btn-gray-300,html[data-netbox-color-mode=dark] .btn-gray-300,html[data-netbox-color-mode=light] .btn-gray-300{color:#000;background-color:#dee2e6;border-color:#dee2e6}html .btn-gray-300:hover,html[data-netbox-color-mode=dark] .btn-gray-300:hover,html[data-netbox-color-mode=light] .btn-gray-300:hover{color:#000;background-color:#e3e6ea;border-color:#e1e5e9}.btn-check:focus+html .btn-gray-300,html .btn-gray-300:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-gray-300,html[data-netbox-color-mode=dark] .btn-gray-300:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-gray-300,html[data-netbox-color-mode=light] .btn-gray-300:focus{color:#000;background-color:#e3e6ea;border-color:#e1e5e9;box-shadow:0 0 0 .25rem #bdc0c480}.btn-check:checked+html .btn-gray-300,.btn-check:active+html .btn-gray-300,html .btn-gray-300:active,html .btn-gray-300.active,.show>html .btn-gray-300.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-gray-300,.btn-check:active+html[data-netbox-color-mode=dark] .btn-gray-300,html[data-netbox-color-mode=dark] .btn-gray-300:active,html[data-netbox-color-mode=dark] .btn-gray-300.active,.show>html[data-netbox-color-mode=dark] .btn-gray-300.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-gray-300,.btn-check:active+html[data-netbox-color-mode=light] .btn-gray-300,html[data-netbox-color-mode=light] .btn-gray-300:active,html[data-netbox-color-mode=light] .btn-gray-300.active,.show>html[data-netbox-color-mode=light] .btn-gray-300.dropdown-toggle{color:#000;background-color:#e5e8eb;border-color:#e1e5e9}.btn-check:checked+html .btn-gray-300:focus,.btn-check:active+html .btn-gray-300:focus,html .btn-gray-300:active:focus,html .btn-gray-300.active:focus,.show>html .btn-gray-300.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-gray-300:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-gray-300:focus,html[data-netbox-color-mode=dark] .btn-gray-300:active:focus,html[data-netbox-color-mode=dark] .btn-gray-300.active:focus,.show>html[data-netbox-color-mode=dark] .btn-gray-300.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-gray-300:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-gray-300:focus,html[data-netbox-color-mode=light] .btn-gray-300:active:focus,html[data-netbox-color-mode=light] .btn-gray-300.active:focus,.show>html[data-netbox-color-mode=light] .btn-gray-300.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #bdc0c480}html .btn-gray-300:disabled,html .btn-gray-300.disabled,html[data-netbox-color-mode=dark] .btn-gray-300:disabled,html[data-netbox-color-mode=dark] .btn-gray-300.disabled,html[data-netbox-color-mode=light] .btn-gray-300:disabled,html[data-netbox-color-mode=light] .btn-gray-300.disabled{color:#000;background-color:#dee2e6;border-color:#dee2e6}}@media print{html .btn-gray-400,html[data-netbox-color-mode=dark] .btn-gray-400,html[data-netbox-color-mode=light] .btn-gray-400{color:#000;background-color:#ced4da;border-color:#ced4da}html .btn-gray-400:hover,html[data-netbox-color-mode=dark] .btn-gray-400:hover,html[data-netbox-color-mode=light] .btn-gray-400:hover{color:#000;background-color:#d5dae0;border-color:#d3d8de}.btn-check:focus+html .btn-gray-400,html .btn-gray-400:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-gray-400,html[data-netbox-color-mode=dark] .btn-gray-400:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-gray-400,html[data-netbox-color-mode=light] .btn-gray-400:focus{color:#000;background-color:#d5dae0;border-color:#d3d8de;box-shadow:0 0 0 .25rem #afb4b980}.btn-check:checked+html .btn-gray-400,.btn-check:active+html .btn-gray-400,html .btn-gray-400:active,html .btn-gray-400.active,.show>html .btn-gray-400.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-gray-400,.btn-check:active+html[data-netbox-color-mode=dark] .btn-gray-400,html[data-netbox-color-mode=dark] .btn-gray-400:active,html[data-netbox-color-mode=dark] .btn-gray-400.active,.show>html[data-netbox-color-mode=dark] .btn-gray-400.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-gray-400,.btn-check:active+html[data-netbox-color-mode=light] .btn-gray-400,html[data-netbox-color-mode=light] .btn-gray-400:active,html[data-netbox-color-mode=light] .btn-gray-400.active,.show>html[data-netbox-color-mode=light] .btn-gray-400.dropdown-toggle{color:#000;background-color:#d8dde1;border-color:#d3d8de}.btn-check:checked+html .btn-gray-400:focus,.btn-check:active+html .btn-gray-400:focus,html .btn-gray-400:active:focus,html .btn-gray-400.active:focus,.show>html .btn-gray-400.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-gray-400:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-gray-400:focus,html[data-netbox-color-mode=dark] .btn-gray-400:active:focus,html[data-netbox-color-mode=dark] .btn-gray-400.active:focus,.show>html[data-netbox-color-mode=dark] .btn-gray-400.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-gray-400:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-gray-400:focus,html[data-netbox-color-mode=light] .btn-gray-400:active:focus,html[data-netbox-color-mode=light] .btn-gray-400.active:focus,.show>html[data-netbox-color-mode=light] .btn-gray-400.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #afb4b980}html .btn-gray-400:disabled,html .btn-gray-400.disabled,html[data-netbox-color-mode=dark] .btn-gray-400:disabled,html[data-netbox-color-mode=dark] .btn-gray-400.disabled,html[data-netbox-color-mode=light] .btn-gray-400:disabled,html[data-netbox-color-mode=light] .btn-gray-400.disabled{color:#000;background-color:#ced4da;border-color:#ced4da}}@media print{html .btn-gray-500,html[data-netbox-color-mode=dark] .btn-gray-500,html[data-netbox-color-mode=light] .btn-gray-500{color:#000;background-color:#adb5bd;border-color:#adb5bd}html .btn-gray-500:hover,html[data-netbox-color-mode=dark] .btn-gray-500:hover,html[data-netbox-color-mode=light] .btn-gray-500:hover{color:#000;background-color:#b9c0c7;border-color:#b5bcc4}.btn-check:focus+html .btn-gray-500,html .btn-gray-500:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-gray-500,html[data-netbox-color-mode=dark] .btn-gray-500:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-gray-500,html[data-netbox-color-mode=light] .btn-gray-500:focus{color:#000;background-color:#b9c0c7;border-color:#b5bcc4;box-shadow:0 0 0 .25rem #939aa180}.btn-check:checked+html .btn-gray-500,.btn-check:active+html .btn-gray-500,html .btn-gray-500:active,html .btn-gray-500.active,.show>html .btn-gray-500.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-gray-500,.btn-check:active+html[data-netbox-color-mode=dark] .btn-gray-500,html[data-netbox-color-mode=dark] .btn-gray-500:active,html[data-netbox-color-mode=dark] .btn-gray-500.active,.show>html[data-netbox-color-mode=dark] .btn-gray-500.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-gray-500,.btn-check:active+html[data-netbox-color-mode=light] .btn-gray-500,html[data-netbox-color-mode=light] .btn-gray-500:active,html[data-netbox-color-mode=light] .btn-gray-500.active,.show>html[data-netbox-color-mode=light] .btn-gray-500.dropdown-toggle{color:#000;background-color:#bdc4ca;border-color:#b5bcc4}.btn-check:checked+html .btn-gray-500:focus,.btn-check:active+html .btn-gray-500:focus,html .btn-gray-500:active:focus,html .btn-gray-500.active:focus,.show>html .btn-gray-500.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-gray-500:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-gray-500:focus,html[data-netbox-color-mode=dark] .btn-gray-500:active:focus,html[data-netbox-color-mode=dark] .btn-gray-500.active:focus,.show>html[data-netbox-color-mode=dark] .btn-gray-500.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-gray-500:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-gray-500:focus,html[data-netbox-color-mode=light] .btn-gray-500:active:focus,html[data-netbox-color-mode=light] .btn-gray-500.active:focus,.show>html[data-netbox-color-mode=light] .btn-gray-500.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #939aa180}html .btn-gray-500:disabled,html .btn-gray-500.disabled,html[data-netbox-color-mode=dark] .btn-gray-500:disabled,html[data-netbox-color-mode=dark] .btn-gray-500.disabled,html[data-netbox-color-mode=light] .btn-gray-500:disabled,html[data-netbox-color-mode=light] .btn-gray-500.disabled{color:#000;background-color:#adb5bd;border-color:#adb5bd}}@media print{html .btn-gray-600,html[data-netbox-color-mode=dark] .btn-gray-600,html[data-netbox-color-mode=light] .btn-gray-600{color:#fff;background-color:#6c757d;border-color:#6c757d}html .btn-gray-600:hover,html[data-netbox-color-mode=dark] .btn-gray-600:hover,html[data-netbox-color-mode=light] .btn-gray-600:hover{color:#fff;background-color:#5c636a;border-color:#565e64}.btn-check:focus+html .btn-gray-600,html .btn-gray-600:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-gray-600,html[data-netbox-color-mode=dark] .btn-gray-600:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-gray-600,html[data-netbox-color-mode=light] .btn-gray-600:focus{color:#fff;background-color:#5c636a;border-color:#565e64;box-shadow:0 0 0 .25rem #828a9180}.btn-check:checked+html .btn-gray-600,.btn-check:active+html .btn-gray-600,html .btn-gray-600:active,html .btn-gray-600.active,.show>html .btn-gray-600.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-gray-600,.btn-check:active+html[data-netbox-color-mode=dark] .btn-gray-600,html[data-netbox-color-mode=dark] .btn-gray-600:active,html[data-netbox-color-mode=dark] .btn-gray-600.active,.show>html[data-netbox-color-mode=dark] .btn-gray-600.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-gray-600,.btn-check:active+html[data-netbox-color-mode=light] .btn-gray-600,html[data-netbox-color-mode=light] .btn-gray-600:active,html[data-netbox-color-mode=light] .btn-gray-600.active,.show>html[data-netbox-color-mode=light] .btn-gray-600.dropdown-toggle{color:#fff;background-color:#565e64;border-color:#51585e}.btn-check:checked+html .btn-gray-600:focus,.btn-check:active+html .btn-gray-600:focus,html .btn-gray-600:active:focus,html .btn-gray-600.active:focus,.show>html .btn-gray-600.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-gray-600:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-gray-600:focus,html[data-netbox-color-mode=dark] .btn-gray-600:active:focus,html[data-netbox-color-mode=dark] .btn-gray-600.active:focus,.show>html[data-netbox-color-mode=dark] .btn-gray-600.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-gray-600:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-gray-600:focus,html[data-netbox-color-mode=light] .btn-gray-600:active:focus,html[data-netbox-color-mode=light] .btn-gray-600.active:focus,.show>html[data-netbox-color-mode=light] .btn-gray-600.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #828a9180}html .btn-gray-600:disabled,html .btn-gray-600.disabled,html[data-netbox-color-mode=dark] .btn-gray-600:disabled,html[data-netbox-color-mode=dark] .btn-gray-600.disabled,html[data-netbox-color-mode=light] .btn-gray-600:disabled,html[data-netbox-color-mode=light] .btn-gray-600.disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}}@media print{html .btn-gray-700,html[data-netbox-color-mode=dark] .btn-gray-700,html[data-netbox-color-mode=light] .btn-gray-700{color:#fff;background-color:#495057;border-color:#495057}html .btn-gray-700:hover,html[data-netbox-color-mode=dark] .btn-gray-700:hover,html[data-netbox-color-mode=light] .btn-gray-700:hover{color:#fff;background-color:#3e444a;border-color:#3a4046}.btn-check:focus+html .btn-gray-700,html .btn-gray-700:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-gray-700,html[data-netbox-color-mode=dark] .btn-gray-700:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-gray-700,html[data-netbox-color-mode=light] .btn-gray-700:focus{color:#fff;background-color:#3e444a;border-color:#3a4046;box-shadow:0 0 0 .25rem #646a7080}.btn-check:checked+html .btn-gray-700,.btn-check:active+html .btn-gray-700,html .btn-gray-700:active,html .btn-gray-700.active,.show>html .btn-gray-700.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-gray-700,.btn-check:active+html[data-netbox-color-mode=dark] .btn-gray-700,html[data-netbox-color-mode=dark] .btn-gray-700:active,html[data-netbox-color-mode=dark] .btn-gray-700.active,.show>html[data-netbox-color-mode=dark] .btn-gray-700.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-gray-700,.btn-check:active+html[data-netbox-color-mode=light] .btn-gray-700,html[data-netbox-color-mode=light] .btn-gray-700:active,html[data-netbox-color-mode=light] .btn-gray-700.active,.show>html[data-netbox-color-mode=light] .btn-gray-700.dropdown-toggle{color:#fff;background-color:#3a4046;border-color:#373c41}.btn-check:checked+html .btn-gray-700:focus,.btn-check:active+html .btn-gray-700:focus,html .btn-gray-700:active:focus,html .btn-gray-700.active:focus,.show>html .btn-gray-700.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-gray-700:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-gray-700:focus,html[data-netbox-color-mode=dark] .btn-gray-700:active:focus,html[data-netbox-color-mode=dark] .btn-gray-700.active:focus,.show>html[data-netbox-color-mode=dark] .btn-gray-700.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-gray-700:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-gray-700:focus,html[data-netbox-color-mode=light] .btn-gray-700:active:focus,html[data-netbox-color-mode=light] .btn-gray-700.active:focus,.show>html[data-netbox-color-mode=light] .btn-gray-700.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #646a7080}html .btn-gray-700:disabled,html .btn-gray-700.disabled,html[data-netbox-color-mode=dark] .btn-gray-700:disabled,html[data-netbox-color-mode=dark] .btn-gray-700.disabled,html[data-netbox-color-mode=light] .btn-gray-700:disabled,html[data-netbox-color-mode=light] .btn-gray-700.disabled{color:#fff;background-color:#495057;border-color:#495057}}@media print{html .btn-gray-800,html[data-netbox-color-mode=dark] .btn-gray-800,html[data-netbox-color-mode=light] .btn-gray-800{color:#fff;background-color:#343a40;border-color:#343a40}html .btn-gray-800:hover,html[data-netbox-color-mode=dark] .btn-gray-800:hover,html[data-netbox-color-mode=light] .btn-gray-800:hover{color:#fff;background-color:#2c3136;border-color:#2a2e33}.btn-check:focus+html .btn-gray-800,html .btn-gray-800:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-gray-800,html[data-netbox-color-mode=dark] .btn-gray-800:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-gray-800,html[data-netbox-color-mode=light] .btn-gray-800:focus{color:#fff;background-color:#2c3136;border-color:#2a2e33;box-shadow:0 0 0 .25rem #52585d80}.btn-check:checked+html .btn-gray-800,.btn-check:active+html .btn-gray-800,html .btn-gray-800:active,html .btn-gray-800.active,.show>html .btn-gray-800.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-gray-800,.btn-check:active+html[data-netbox-color-mode=dark] .btn-gray-800,html[data-netbox-color-mode=dark] .btn-gray-800:active,html[data-netbox-color-mode=dark] .btn-gray-800.active,.show>html[data-netbox-color-mode=dark] .btn-gray-800.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-gray-800,.btn-check:active+html[data-netbox-color-mode=light] .btn-gray-800,html[data-netbox-color-mode=light] .btn-gray-800:active,html[data-netbox-color-mode=light] .btn-gray-800.active,.show>html[data-netbox-color-mode=light] .btn-gray-800.dropdown-toggle{color:#fff;background-color:#2a2e33;border-color:#272c30}.btn-check:checked+html .btn-gray-800:focus,.btn-check:active+html .btn-gray-800:focus,html .btn-gray-800:active:focus,html .btn-gray-800.active:focus,.show>html .btn-gray-800.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-gray-800:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-gray-800:focus,html[data-netbox-color-mode=dark] .btn-gray-800:active:focus,html[data-netbox-color-mode=dark] .btn-gray-800.active:focus,.show>html[data-netbox-color-mode=dark] .btn-gray-800.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-gray-800:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-gray-800:focus,html[data-netbox-color-mode=light] .btn-gray-800:active:focus,html[data-netbox-color-mode=light] .btn-gray-800.active:focus,.show>html[data-netbox-color-mode=light] .btn-gray-800.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #52585d80}html .btn-gray-800:disabled,html .btn-gray-800.disabled,html[data-netbox-color-mode=dark] .btn-gray-800:disabled,html[data-netbox-color-mode=dark] .btn-gray-800.disabled,html[data-netbox-color-mode=light] .btn-gray-800:disabled,html[data-netbox-color-mode=light] .btn-gray-800.disabled{color:#fff;background-color:#343a40;border-color:#343a40}}@media print{html .btn-gray-900,html[data-netbox-color-mode=dark] .btn-gray-900,html[data-netbox-color-mode=light] .btn-gray-900{color:#fff;background-color:#212529;border-color:#212529}html .btn-gray-900:hover,html[data-netbox-color-mode=dark] .btn-gray-900:hover,html[data-netbox-color-mode=light] .btn-gray-900:hover{color:#fff;background-color:#1c1f23;border-color:#1a1e21}.btn-check:focus+html .btn-gray-900,html .btn-gray-900:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-gray-900,html[data-netbox-color-mode=dark] .btn-gray-900:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-gray-900,html[data-netbox-color-mode=light] .btn-gray-900:focus{color:#fff;background-color:#1c1f23;border-color:#1a1e21;box-shadow:0 0 0 .25rem #42464980}.btn-check:checked+html .btn-gray-900,.btn-check:active+html .btn-gray-900,html .btn-gray-900:active,html .btn-gray-900.active,.show>html .btn-gray-900.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-gray-900,.btn-check:active+html[data-netbox-color-mode=dark] .btn-gray-900,html[data-netbox-color-mode=dark] .btn-gray-900:active,html[data-netbox-color-mode=dark] .btn-gray-900.active,.show>html[data-netbox-color-mode=dark] .btn-gray-900.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-gray-900,.btn-check:active+html[data-netbox-color-mode=light] .btn-gray-900,html[data-netbox-color-mode=light] .btn-gray-900:active,html[data-netbox-color-mode=light] .btn-gray-900.active,.show>html[data-netbox-color-mode=light] .btn-gray-900.dropdown-toggle{color:#fff;background-color:#1a1e21;border-color:#191c1f}.btn-check:checked+html .btn-gray-900:focus,.btn-check:active+html .btn-gray-900:focus,html .btn-gray-900:active:focus,html .btn-gray-900.active:focus,.show>html .btn-gray-900.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-gray-900:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-gray-900:focus,html[data-netbox-color-mode=dark] .btn-gray-900:active:focus,html[data-netbox-color-mode=dark] .btn-gray-900.active:focus,.show>html[data-netbox-color-mode=dark] .btn-gray-900.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-gray-900:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-gray-900:focus,html[data-netbox-color-mode=light] .btn-gray-900:active:focus,html[data-netbox-color-mode=light] .btn-gray-900.active:focus,.show>html[data-netbox-color-mode=light] .btn-gray-900.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #42464980}html .btn-gray-900:disabled,html .btn-gray-900.disabled,html[data-netbox-color-mode=dark] .btn-gray-900:disabled,html[data-netbox-color-mode=dark] .btn-gray-900.disabled,html[data-netbox-color-mode=light] .btn-gray-900:disabled,html[data-netbox-color-mode=light] .btn-gray-900.disabled{color:#fff;background-color:#212529;border-color:#212529}}@media print{html .btn-red-100,html[data-netbox-color-mode=dark] .btn-red-100,html[data-netbox-color-mode=light] .btn-red-100{color:#000;background-color:#f8d7da;border-color:#f8d7da}html .btn-red-100:hover,html[data-netbox-color-mode=dark] .btn-red-100:hover,html[data-netbox-color-mode=light] .btn-red-100:hover{color:#000;background-color:#f9dde0;border-color:#f9dbde}.btn-check:focus+html .btn-red-100,html .btn-red-100:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-red-100,html[data-netbox-color-mode=dark] .btn-red-100:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-red-100,html[data-netbox-color-mode=light] .btn-red-100:focus{color:#000;background-color:#f9dde0;border-color:#f9dbde;box-shadow:0 0 0 .25rem #d3b7b980}.btn-check:checked+html .btn-red-100,.btn-check:active+html .btn-red-100,html .btn-red-100:active,html .btn-red-100.active,.show>html .btn-red-100.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-red-100,.btn-check:active+html[data-netbox-color-mode=dark] .btn-red-100,html[data-netbox-color-mode=dark] .btn-red-100:active,html[data-netbox-color-mode=dark] .btn-red-100.active,.show>html[data-netbox-color-mode=dark] .btn-red-100.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-red-100,.btn-check:active+html[data-netbox-color-mode=light] .btn-red-100,html[data-netbox-color-mode=light] .btn-red-100:active,html[data-netbox-color-mode=light] .btn-red-100.active,.show>html[data-netbox-color-mode=light] .btn-red-100.dropdown-toggle{color:#000;background-color:#f9dfe1;border-color:#f9dbde}.btn-check:checked+html .btn-red-100:focus,.btn-check:active+html .btn-red-100:focus,html .btn-red-100:active:focus,html .btn-red-100.active:focus,.show>html .btn-red-100.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-red-100:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-red-100:focus,html[data-netbox-color-mode=dark] .btn-red-100:active:focus,html[data-netbox-color-mode=dark] .btn-red-100.active:focus,.show>html[data-netbox-color-mode=dark] .btn-red-100.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-red-100:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-red-100:focus,html[data-netbox-color-mode=light] .btn-red-100:active:focus,html[data-netbox-color-mode=light] .btn-red-100.active:focus,.show>html[data-netbox-color-mode=light] .btn-red-100.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #d3b7b980}html .btn-red-100:disabled,html .btn-red-100.disabled,html[data-netbox-color-mode=dark] .btn-red-100:disabled,html[data-netbox-color-mode=dark] .btn-red-100.disabled,html[data-netbox-color-mode=light] .btn-red-100:disabled,html[data-netbox-color-mode=light] .btn-red-100.disabled{color:#000;background-color:#f8d7da;border-color:#f8d7da}}@media print{html .btn-red-200,html[data-netbox-color-mode=dark] .btn-red-200,html[data-netbox-color-mode=light] .btn-red-200{color:#000;background-color:#f1aeb5;border-color:#f1aeb5}html .btn-red-200:hover,html[data-netbox-color-mode=dark] .btn-red-200:hover,html[data-netbox-color-mode=light] .btn-red-200:hover{color:#000;background-color:#f3bac0;border-color:#f2b6bc}.btn-check:focus+html .btn-red-200,html .btn-red-200:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-red-200,html[data-netbox-color-mode=dark] .btn-red-200:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-red-200,html[data-netbox-color-mode=light] .btn-red-200:focus{color:#000;background-color:#f3bac0;border-color:#f2b6bc;box-shadow:0 0 0 .25rem #cd949a80}.btn-check:checked+html .btn-red-200,.btn-check:active+html .btn-red-200,html .btn-red-200:active,html .btn-red-200.active,.show>html .btn-red-200.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-red-200,.btn-check:active+html[data-netbox-color-mode=dark] .btn-red-200,html[data-netbox-color-mode=dark] .btn-red-200:active,html[data-netbox-color-mode=dark] .btn-red-200.active,.show>html[data-netbox-color-mode=dark] .btn-red-200.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-red-200,.btn-check:active+html[data-netbox-color-mode=light] .btn-red-200,html[data-netbox-color-mode=light] .btn-red-200:active,html[data-netbox-color-mode=light] .btn-red-200.active,.show>html[data-netbox-color-mode=light] .btn-red-200.dropdown-toggle{color:#000;background-color:#f4bec4;border-color:#f2b6bc}.btn-check:checked+html .btn-red-200:focus,.btn-check:active+html .btn-red-200:focus,html .btn-red-200:active:focus,html .btn-red-200.active:focus,.show>html .btn-red-200.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-red-200:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-red-200:focus,html[data-netbox-color-mode=dark] .btn-red-200:active:focus,html[data-netbox-color-mode=dark] .btn-red-200.active:focus,.show>html[data-netbox-color-mode=dark] .btn-red-200.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-red-200:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-red-200:focus,html[data-netbox-color-mode=light] .btn-red-200:active:focus,html[data-netbox-color-mode=light] .btn-red-200.active:focus,.show>html[data-netbox-color-mode=light] .btn-red-200.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #cd949a80}html .btn-red-200:disabled,html .btn-red-200.disabled,html[data-netbox-color-mode=dark] .btn-red-200:disabled,html[data-netbox-color-mode=dark] .btn-red-200.disabled,html[data-netbox-color-mode=light] .btn-red-200:disabled,html[data-netbox-color-mode=light] .btn-red-200.disabled{color:#000;background-color:#f1aeb5;border-color:#f1aeb5}}@media print{html .btn-red-300,html[data-netbox-color-mode=dark] .btn-red-300,html[data-netbox-color-mode=light] .btn-red-300{color:#000;background-color:#ea868f;border-color:#ea868f}html .btn-red-300:hover,html[data-netbox-color-mode=dark] .btn-red-300:hover,html[data-netbox-color-mode=light] .btn-red-300:hover{color:#000;background-color:#ed98a0;border-color:#ec929a}.btn-check:focus+html .btn-red-300,html .btn-red-300:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-red-300,html[data-netbox-color-mode=dark] .btn-red-300:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-red-300,html[data-netbox-color-mode=light] .btn-red-300:focus{color:#000;background-color:#ed98a0;border-color:#ec929a;box-shadow:0 0 0 .25rem #c7727a80}.btn-check:checked+html .btn-red-300,.btn-check:active+html .btn-red-300,html .btn-red-300:active,html .btn-red-300.active,.show>html .btn-red-300.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-red-300,.btn-check:active+html[data-netbox-color-mode=dark] .btn-red-300,html[data-netbox-color-mode=dark] .btn-red-300:active,html[data-netbox-color-mode=dark] .btn-red-300.active,.show>html[data-netbox-color-mode=dark] .btn-red-300.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-red-300,.btn-check:active+html[data-netbox-color-mode=light] .btn-red-300,html[data-netbox-color-mode=light] .btn-red-300:active,html[data-netbox-color-mode=light] .btn-red-300.active,.show>html[data-netbox-color-mode=light] .btn-red-300.dropdown-toggle{color:#000;background-color:#ee9ea5;border-color:#ec929a}.btn-check:checked+html .btn-red-300:focus,.btn-check:active+html .btn-red-300:focus,html .btn-red-300:active:focus,html .btn-red-300.active:focus,.show>html .btn-red-300.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-red-300:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-red-300:focus,html[data-netbox-color-mode=dark] .btn-red-300:active:focus,html[data-netbox-color-mode=dark] .btn-red-300.active:focus,.show>html[data-netbox-color-mode=dark] .btn-red-300.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-red-300:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-red-300:focus,html[data-netbox-color-mode=light] .btn-red-300:active:focus,html[data-netbox-color-mode=light] .btn-red-300.active:focus,.show>html[data-netbox-color-mode=light] .btn-red-300.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #c7727a80}html .btn-red-300:disabled,html .btn-red-300.disabled,html[data-netbox-color-mode=dark] .btn-red-300:disabled,html[data-netbox-color-mode=dark] .btn-red-300.disabled,html[data-netbox-color-mode=light] .btn-red-300:disabled,html[data-netbox-color-mode=light] .btn-red-300.disabled{color:#000;background-color:#ea868f;border-color:#ea868f}}@media print{html .btn-red-400,html[data-netbox-color-mode=dark] .btn-red-400,html[data-netbox-color-mode=light] .btn-red-400{color:#000;background-color:#e35d6a;border-color:#e35d6a}html .btn-red-400:hover,html[data-netbox-color-mode=dark] .btn-red-400:hover,html[data-netbox-color-mode=light] .btn-red-400:hover{color:#000;background-color:#e77580;border-color:#e66d79}.btn-check:focus+html .btn-red-400,html .btn-red-400:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-red-400,html[data-netbox-color-mode=dark] .btn-red-400:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-red-400,html[data-netbox-color-mode=light] .btn-red-400:focus{color:#000;background-color:#e77580;border-color:#e66d79;box-shadow:0 0 0 .25rem #c14f5a80}.btn-check:checked+html .btn-red-400,.btn-check:active+html .btn-red-400,html .btn-red-400:active,html .btn-red-400.active,.show>html .btn-red-400.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-red-400,.btn-check:active+html[data-netbox-color-mode=dark] .btn-red-400,html[data-netbox-color-mode=dark] .btn-red-400:active,html[data-netbox-color-mode=dark] .btn-red-400.active,.show>html[data-netbox-color-mode=dark] .btn-red-400.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-red-400,.btn-check:active+html[data-netbox-color-mode=light] .btn-red-400,html[data-netbox-color-mode=light] .btn-red-400:active,html[data-netbox-color-mode=light] .btn-red-400.active,.show>html[data-netbox-color-mode=light] .btn-red-400.dropdown-toggle{color:#000;background-color:#e97d88;border-color:#e66d79}.btn-check:checked+html .btn-red-400:focus,.btn-check:active+html .btn-red-400:focus,html .btn-red-400:active:focus,html .btn-red-400.active:focus,.show>html .btn-red-400.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-red-400:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-red-400:focus,html[data-netbox-color-mode=dark] .btn-red-400:active:focus,html[data-netbox-color-mode=dark] .btn-red-400.active:focus,.show>html[data-netbox-color-mode=dark] .btn-red-400.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-red-400:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-red-400:focus,html[data-netbox-color-mode=light] .btn-red-400:active:focus,html[data-netbox-color-mode=light] .btn-red-400.active:focus,.show>html[data-netbox-color-mode=light] .btn-red-400.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #c14f5a80}html .btn-red-400:disabled,html .btn-red-400.disabled,html[data-netbox-color-mode=dark] .btn-red-400:disabled,html[data-netbox-color-mode=dark] .btn-red-400.disabled,html[data-netbox-color-mode=light] .btn-red-400:disabled,html[data-netbox-color-mode=light] .btn-red-400.disabled{color:#000;background-color:#e35d6a;border-color:#e35d6a}}@media print{html .btn-red-500,html[data-netbox-color-mode=dark] .btn-red-500,html[data-netbox-color-mode=light] .btn-red-500{color:#fff;background-color:#dc3545;border-color:#dc3545}html .btn-red-500:hover,html[data-netbox-color-mode=dark] .btn-red-500:hover,html[data-netbox-color-mode=light] .btn-red-500:hover{color:#fff;background-color:#bb2d3b;border-color:#b02a37}.btn-check:focus+html .btn-red-500,html .btn-red-500:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-red-500,html[data-netbox-color-mode=dark] .btn-red-500:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-red-500,html[data-netbox-color-mode=light] .btn-red-500:focus{color:#fff;background-color:#bb2d3b;border-color:#b02a37;box-shadow:0 0 0 .25rem #e1536180}.btn-check:checked+html .btn-red-500,.btn-check:active+html .btn-red-500,html .btn-red-500:active,html .btn-red-500.active,.show>html .btn-red-500.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-red-500,.btn-check:active+html[data-netbox-color-mode=dark] .btn-red-500,html[data-netbox-color-mode=dark] .btn-red-500:active,html[data-netbox-color-mode=dark] .btn-red-500.active,.show>html[data-netbox-color-mode=dark] .btn-red-500.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-red-500,.btn-check:active+html[data-netbox-color-mode=light] .btn-red-500,html[data-netbox-color-mode=light] .btn-red-500:active,html[data-netbox-color-mode=light] .btn-red-500.active,.show>html[data-netbox-color-mode=light] .btn-red-500.dropdown-toggle{color:#fff;background-color:#b02a37;border-color:#a52834}.btn-check:checked+html .btn-red-500:focus,.btn-check:active+html .btn-red-500:focus,html .btn-red-500:active:focus,html .btn-red-500.active:focus,.show>html .btn-red-500.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-red-500:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-red-500:focus,html[data-netbox-color-mode=dark] .btn-red-500:active:focus,html[data-netbox-color-mode=dark] .btn-red-500.active:focus,.show>html[data-netbox-color-mode=dark] .btn-red-500.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-red-500:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-red-500:focus,html[data-netbox-color-mode=light] .btn-red-500:active:focus,html[data-netbox-color-mode=light] .btn-red-500.active:focus,.show>html[data-netbox-color-mode=light] .btn-red-500.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #e1536180}html .btn-red-500:disabled,html .btn-red-500.disabled,html[data-netbox-color-mode=dark] .btn-red-500:disabled,html[data-netbox-color-mode=dark] .btn-red-500.disabled,html[data-netbox-color-mode=light] .btn-red-500:disabled,html[data-netbox-color-mode=light] .btn-red-500.disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}}@media print{html .btn-red-600,html[data-netbox-color-mode=dark] .btn-red-600,html[data-netbox-color-mode=light] .btn-red-600{color:#fff;background-color:#b02a37;border-color:#b02a37}html .btn-red-600:hover,html[data-netbox-color-mode=dark] .btn-red-600:hover,html[data-netbox-color-mode=light] .btn-red-600:hover{color:#fff;background-color:#96242f;border-color:#8d222c}.btn-check:focus+html .btn-red-600,html .btn-red-600:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-red-600,html[data-netbox-color-mode=dark] .btn-red-600:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-red-600,html[data-netbox-color-mode=light] .btn-red-600:focus{color:#fff;background-color:#96242f;border-color:#8d222c;box-shadow:0 0 0 .25rem #bc4a5580}.btn-check:checked+html .btn-red-600,.btn-check:active+html .btn-red-600,html .btn-red-600:active,html .btn-red-600.active,.show>html .btn-red-600.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-red-600,.btn-check:active+html[data-netbox-color-mode=dark] .btn-red-600,html[data-netbox-color-mode=dark] .btn-red-600:active,html[data-netbox-color-mode=dark] .btn-red-600.active,.show>html[data-netbox-color-mode=dark] .btn-red-600.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-red-600,.btn-check:active+html[data-netbox-color-mode=light] .btn-red-600,html[data-netbox-color-mode=light] .btn-red-600:active,html[data-netbox-color-mode=light] .btn-red-600.active,.show>html[data-netbox-color-mode=light] .btn-red-600.dropdown-toggle{color:#fff;background-color:#8d222c;border-color:#842029}.btn-check:checked+html .btn-red-600:focus,.btn-check:active+html .btn-red-600:focus,html .btn-red-600:active:focus,html .btn-red-600.active:focus,.show>html .btn-red-600.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-red-600:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-red-600:focus,html[data-netbox-color-mode=dark] .btn-red-600:active:focus,html[data-netbox-color-mode=dark] .btn-red-600.active:focus,.show>html[data-netbox-color-mode=dark] .btn-red-600.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-red-600:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-red-600:focus,html[data-netbox-color-mode=light] .btn-red-600:active:focus,html[data-netbox-color-mode=light] .btn-red-600.active:focus,.show>html[data-netbox-color-mode=light] .btn-red-600.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #bc4a5580}html .btn-red-600:disabled,html .btn-red-600.disabled,html[data-netbox-color-mode=dark] .btn-red-600:disabled,html[data-netbox-color-mode=dark] .btn-red-600.disabled,html[data-netbox-color-mode=light] .btn-red-600:disabled,html[data-netbox-color-mode=light] .btn-red-600.disabled{color:#fff;background-color:#b02a37;border-color:#b02a37}}@media print{html .btn-red-700,html[data-netbox-color-mode=dark] .btn-red-700,html[data-netbox-color-mode=light] .btn-red-700{color:#fff;background-color:#842029;border-color:#842029}html .btn-red-700:hover,html[data-netbox-color-mode=dark] .btn-red-700:hover,html[data-netbox-color-mode=light] .btn-red-700:hover{color:#fff;background-color:#701b23;border-color:#6a1a21}.btn-check:focus+html .btn-red-700,html .btn-red-700:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-red-700,html[data-netbox-color-mode=dark] .btn-red-700:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-red-700,html[data-netbox-color-mode=light] .btn-red-700:focus{color:#fff;background-color:#701b23;border-color:#6a1a21;box-shadow:0 0 0 .25rem #96414980}.btn-check:checked+html .btn-red-700,.btn-check:active+html .btn-red-700,html .btn-red-700:active,html .btn-red-700.active,.show>html .btn-red-700.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-red-700,.btn-check:active+html[data-netbox-color-mode=dark] .btn-red-700,html[data-netbox-color-mode=dark] .btn-red-700:active,html[data-netbox-color-mode=dark] .btn-red-700.active,.show>html[data-netbox-color-mode=dark] .btn-red-700.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-red-700,.btn-check:active+html[data-netbox-color-mode=light] .btn-red-700,html[data-netbox-color-mode=light] .btn-red-700:active,html[data-netbox-color-mode=light] .btn-red-700.active,.show>html[data-netbox-color-mode=light] .btn-red-700.dropdown-toggle{color:#fff;background-color:#6a1a21;border-color:#63181f}.btn-check:checked+html .btn-red-700:focus,.btn-check:active+html .btn-red-700:focus,html .btn-red-700:active:focus,html .btn-red-700.active:focus,.show>html .btn-red-700.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-red-700:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-red-700:focus,html[data-netbox-color-mode=dark] .btn-red-700:active:focus,html[data-netbox-color-mode=dark] .btn-red-700.active:focus,.show>html[data-netbox-color-mode=dark] .btn-red-700.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-red-700:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-red-700:focus,html[data-netbox-color-mode=light] .btn-red-700:active:focus,html[data-netbox-color-mode=light] .btn-red-700.active:focus,.show>html[data-netbox-color-mode=light] .btn-red-700.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #96414980}html .btn-red-700:disabled,html .btn-red-700.disabled,html[data-netbox-color-mode=dark] .btn-red-700:disabled,html[data-netbox-color-mode=dark] .btn-red-700.disabled,html[data-netbox-color-mode=light] .btn-red-700:disabled,html[data-netbox-color-mode=light] .btn-red-700.disabled{color:#fff;background-color:#842029;border-color:#842029}}@media print{html .btn-red-800,html[data-netbox-color-mode=dark] .btn-red-800,html[data-netbox-color-mode=light] .btn-red-800{color:#fff;background-color:#58151c;border-color:#58151c}html .btn-red-800:hover,html[data-netbox-color-mode=dark] .btn-red-800:hover,html[data-netbox-color-mode=light] .btn-red-800:hover{color:#fff;background-color:#4b1218;border-color:#461116}.btn-check:focus+html .btn-red-800,html .btn-red-800:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-red-800,html[data-netbox-color-mode=dark] .btn-red-800:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-red-800,html[data-netbox-color-mode=light] .btn-red-800:focus{color:#fff;background-color:#4b1218;border-color:#461116;box-shadow:0 0 0 .25rem #71383e80}.btn-check:checked+html .btn-red-800,.btn-check:active+html .btn-red-800,html .btn-red-800:active,html .btn-red-800.active,.show>html .btn-red-800.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-red-800,.btn-check:active+html[data-netbox-color-mode=dark] .btn-red-800,html[data-netbox-color-mode=dark] .btn-red-800:active,html[data-netbox-color-mode=dark] .btn-red-800.active,.show>html[data-netbox-color-mode=dark] .btn-red-800.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-red-800,.btn-check:active+html[data-netbox-color-mode=light] .btn-red-800,html[data-netbox-color-mode=light] .btn-red-800:active,html[data-netbox-color-mode=light] .btn-red-800.active,.show>html[data-netbox-color-mode=light] .btn-red-800.dropdown-toggle{color:#fff;background-color:#461116;border-color:#421015}.btn-check:checked+html .btn-red-800:focus,.btn-check:active+html .btn-red-800:focus,html .btn-red-800:active:focus,html .btn-red-800.active:focus,.show>html .btn-red-800.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-red-800:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-red-800:focus,html[data-netbox-color-mode=dark] .btn-red-800:active:focus,html[data-netbox-color-mode=dark] .btn-red-800.active:focus,.show>html[data-netbox-color-mode=dark] .btn-red-800.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-red-800:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-red-800:focus,html[data-netbox-color-mode=light] .btn-red-800:active:focus,html[data-netbox-color-mode=light] .btn-red-800.active:focus,.show>html[data-netbox-color-mode=light] .btn-red-800.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #71383e80}html .btn-red-800:disabled,html .btn-red-800.disabled,html[data-netbox-color-mode=dark] .btn-red-800:disabled,html[data-netbox-color-mode=dark] .btn-red-800.disabled,html[data-netbox-color-mode=light] .btn-red-800:disabled,html[data-netbox-color-mode=light] .btn-red-800.disabled{color:#fff;background-color:#58151c;border-color:#58151c}}@media print{html .btn-red-900,html[data-netbox-color-mode=dark] .btn-red-900,html[data-netbox-color-mode=light] .btn-red-900{color:#fff;background-color:#2c0b0e;border-color:#2c0b0e}html .btn-red-900:hover,html[data-netbox-color-mode=dark] .btn-red-900:hover,html[data-netbox-color-mode=light] .btn-red-900:hover{color:#fff;background-color:#25090c;border-color:#23090b}.btn-check:focus+html .btn-red-900,html .btn-red-900:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-red-900,html[data-netbox-color-mode=dark] .btn-red-900:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-red-900,html[data-netbox-color-mode=light] .btn-red-900:focus{color:#fff;background-color:#25090c;border-color:#23090b;box-shadow:0 0 0 .25rem #4c303280}.btn-check:checked+html .btn-red-900,.btn-check:active+html .btn-red-900,html .btn-red-900:active,html .btn-red-900.active,.show>html .btn-red-900.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-red-900,.btn-check:active+html[data-netbox-color-mode=dark] .btn-red-900,html[data-netbox-color-mode=dark] .btn-red-900:active,html[data-netbox-color-mode=dark] .btn-red-900.active,.show>html[data-netbox-color-mode=dark] .btn-red-900.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-red-900,.btn-check:active+html[data-netbox-color-mode=light] .btn-red-900,html[data-netbox-color-mode=light] .btn-red-900:active,html[data-netbox-color-mode=light] .btn-red-900.active,.show>html[data-netbox-color-mode=light] .btn-red-900.dropdown-toggle{color:#fff;background-color:#23090b;border-color:#21080b}.btn-check:checked+html .btn-red-900:focus,.btn-check:active+html .btn-red-900:focus,html .btn-red-900:active:focus,html .btn-red-900.active:focus,.show>html .btn-red-900.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-red-900:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-red-900:focus,html[data-netbox-color-mode=dark] .btn-red-900:active:focus,html[data-netbox-color-mode=dark] .btn-red-900.active:focus,.show>html[data-netbox-color-mode=dark] .btn-red-900.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-red-900:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-red-900:focus,html[data-netbox-color-mode=light] .btn-red-900:active:focus,html[data-netbox-color-mode=light] .btn-red-900.active:focus,.show>html[data-netbox-color-mode=light] .btn-red-900.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #4c303280}html .btn-red-900:disabled,html .btn-red-900.disabled,html[data-netbox-color-mode=dark] .btn-red-900:disabled,html[data-netbox-color-mode=dark] .btn-red-900.disabled,html[data-netbox-color-mode=light] .btn-red-900:disabled,html[data-netbox-color-mode=light] .btn-red-900.disabled{color:#fff;background-color:#2c0b0e;border-color:#2c0b0e}}@media print{html .btn-yellow-100,html[data-netbox-color-mode=dark] .btn-yellow-100,html[data-netbox-color-mode=light] .btn-yellow-100{color:#000;background-color:#fff3cd;border-color:#fff3cd}html .btn-yellow-100:hover,html[data-netbox-color-mode=dark] .btn-yellow-100:hover,html[data-netbox-color-mode=light] .btn-yellow-100:hover{color:#000;background-color:#fff5d5;border-color:#fff4d2}.btn-check:focus+html .btn-yellow-100,html .btn-yellow-100:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-yellow-100,html[data-netbox-color-mode=dark] .btn-yellow-100:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-yellow-100,html[data-netbox-color-mode=light] .btn-yellow-100:focus{color:#000;background-color:#fff5d5;border-color:#fff4d2;box-shadow:0 0 0 .25rem #d9cfae80}.btn-check:checked+html .btn-yellow-100,.btn-check:active+html .btn-yellow-100,html .btn-yellow-100:active,html .btn-yellow-100.active,.show>html .btn-yellow-100.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-yellow-100,.btn-check:active+html[data-netbox-color-mode=dark] .btn-yellow-100,html[data-netbox-color-mode=dark] .btn-yellow-100:active,html[data-netbox-color-mode=dark] .btn-yellow-100.active,.show>html[data-netbox-color-mode=dark] .btn-yellow-100.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-yellow-100,.btn-check:active+html[data-netbox-color-mode=light] .btn-yellow-100,html[data-netbox-color-mode=light] .btn-yellow-100:active,html[data-netbox-color-mode=light] .btn-yellow-100.active,.show>html[data-netbox-color-mode=light] .btn-yellow-100.dropdown-toggle{color:#000;background-color:#fff5d7;border-color:#fff4d2}.btn-check:checked+html .btn-yellow-100:focus,.btn-check:active+html .btn-yellow-100:focus,html .btn-yellow-100:active:focus,html .btn-yellow-100.active:focus,.show>html .btn-yellow-100.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-yellow-100:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-yellow-100:focus,html[data-netbox-color-mode=dark] .btn-yellow-100:active:focus,html[data-netbox-color-mode=dark] .btn-yellow-100.active:focus,.show>html[data-netbox-color-mode=dark] .btn-yellow-100.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-yellow-100:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-yellow-100:focus,html[data-netbox-color-mode=light] .btn-yellow-100:active:focus,html[data-netbox-color-mode=light] .btn-yellow-100.active:focus,.show>html[data-netbox-color-mode=light] .btn-yellow-100.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #d9cfae80}html .btn-yellow-100:disabled,html .btn-yellow-100.disabled,html[data-netbox-color-mode=dark] .btn-yellow-100:disabled,html[data-netbox-color-mode=dark] .btn-yellow-100.disabled,html[data-netbox-color-mode=light] .btn-yellow-100:disabled,html[data-netbox-color-mode=light] .btn-yellow-100.disabled{color:#000;background-color:#fff3cd;border-color:#fff3cd}}@media print{html .btn-yellow-200,html[data-netbox-color-mode=dark] .btn-yellow-200,html[data-netbox-color-mode=light] .btn-yellow-200{color:#000;background-color:#ffe69c;border-color:#ffe69c}html .btn-yellow-200:hover,html[data-netbox-color-mode=dark] .btn-yellow-200:hover,html[data-netbox-color-mode=light] .btn-yellow-200:hover{color:#000;background-color:#ffeaab;border-color:#ffe9a6}.btn-check:focus+html .btn-yellow-200,html .btn-yellow-200:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-yellow-200,html[data-netbox-color-mode=dark] .btn-yellow-200:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-yellow-200,html[data-netbox-color-mode=light] .btn-yellow-200:focus{color:#000;background-color:#ffeaab;border-color:#ffe9a6;box-shadow:0 0 0 .25rem #d9c48580}.btn-check:checked+html .btn-yellow-200,.btn-check:active+html .btn-yellow-200,html .btn-yellow-200:active,html .btn-yellow-200.active,.show>html .btn-yellow-200.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-yellow-200,.btn-check:active+html[data-netbox-color-mode=dark] .btn-yellow-200,html[data-netbox-color-mode=dark] .btn-yellow-200:active,html[data-netbox-color-mode=dark] .btn-yellow-200.active,.show>html[data-netbox-color-mode=dark] .btn-yellow-200.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-yellow-200,.btn-check:active+html[data-netbox-color-mode=light] .btn-yellow-200,html[data-netbox-color-mode=light] .btn-yellow-200:active,html[data-netbox-color-mode=light] .btn-yellow-200.active,.show>html[data-netbox-color-mode=light] .btn-yellow-200.dropdown-toggle{color:#000;background-color:#ffebb0;border-color:#ffe9a6}.btn-check:checked+html .btn-yellow-200:focus,.btn-check:active+html .btn-yellow-200:focus,html .btn-yellow-200:active:focus,html .btn-yellow-200.active:focus,.show>html .btn-yellow-200.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-yellow-200:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-yellow-200:focus,html[data-netbox-color-mode=dark] .btn-yellow-200:active:focus,html[data-netbox-color-mode=dark] .btn-yellow-200.active:focus,.show>html[data-netbox-color-mode=dark] .btn-yellow-200.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-yellow-200:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-yellow-200:focus,html[data-netbox-color-mode=light] .btn-yellow-200:active:focus,html[data-netbox-color-mode=light] .btn-yellow-200.active:focus,.show>html[data-netbox-color-mode=light] .btn-yellow-200.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #d9c48580}html .btn-yellow-200:disabled,html .btn-yellow-200.disabled,html[data-netbox-color-mode=dark] .btn-yellow-200:disabled,html[data-netbox-color-mode=dark] .btn-yellow-200.disabled,html[data-netbox-color-mode=light] .btn-yellow-200:disabled,html[data-netbox-color-mode=light] .btn-yellow-200.disabled{color:#000;background-color:#ffe69c;border-color:#ffe69c}}@media print{html .btn-yellow-300,html[data-netbox-color-mode=dark] .btn-yellow-300,html[data-netbox-color-mode=light] .btn-yellow-300{color:#000;background-color:#ffda6a;border-color:#ffda6a}html .btn-yellow-300:hover,html[data-netbox-color-mode=dark] .btn-yellow-300:hover,html[data-netbox-color-mode=light] .btn-yellow-300:hover{color:#000;background-color:#ffe080;border-color:#ffde79}.btn-check:focus+html .btn-yellow-300,html .btn-yellow-300:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-yellow-300,html[data-netbox-color-mode=dark] .btn-yellow-300:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-yellow-300,html[data-netbox-color-mode=light] .btn-yellow-300:focus{color:#000;background-color:#ffe080;border-color:#ffde79;box-shadow:0 0 0 .25rem #d9b95a80}.btn-check:checked+html .btn-yellow-300,.btn-check:active+html .btn-yellow-300,html .btn-yellow-300:active,html .btn-yellow-300.active,.show>html .btn-yellow-300.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-yellow-300,.btn-check:active+html[data-netbox-color-mode=dark] .btn-yellow-300,html[data-netbox-color-mode=dark] .btn-yellow-300:active,html[data-netbox-color-mode=dark] .btn-yellow-300.active,.show>html[data-netbox-color-mode=dark] .btn-yellow-300.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-yellow-300,.btn-check:active+html[data-netbox-color-mode=light] .btn-yellow-300,html[data-netbox-color-mode=light] .btn-yellow-300:active,html[data-netbox-color-mode=light] .btn-yellow-300.active,.show>html[data-netbox-color-mode=light] .btn-yellow-300.dropdown-toggle{color:#000;background-color:#ffe188;border-color:#ffde79}.btn-check:checked+html .btn-yellow-300:focus,.btn-check:active+html .btn-yellow-300:focus,html .btn-yellow-300:active:focus,html .btn-yellow-300.active:focus,.show>html .btn-yellow-300.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-yellow-300:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-yellow-300:focus,html[data-netbox-color-mode=dark] .btn-yellow-300:active:focus,html[data-netbox-color-mode=dark] .btn-yellow-300.active:focus,.show>html[data-netbox-color-mode=dark] .btn-yellow-300.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-yellow-300:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-yellow-300:focus,html[data-netbox-color-mode=light] .btn-yellow-300:active:focus,html[data-netbox-color-mode=light] .btn-yellow-300.active:focus,.show>html[data-netbox-color-mode=light] .btn-yellow-300.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #d9b95a80}html .btn-yellow-300:disabled,html .btn-yellow-300.disabled,html[data-netbox-color-mode=dark] .btn-yellow-300:disabled,html[data-netbox-color-mode=dark] .btn-yellow-300.disabled,html[data-netbox-color-mode=light] .btn-yellow-300:disabled,html[data-netbox-color-mode=light] .btn-yellow-300.disabled{color:#000;background-color:#ffda6a;border-color:#ffda6a}}@media print{html .btn-yellow-400,html[data-netbox-color-mode=dark] .btn-yellow-400,html[data-netbox-color-mode=light] .btn-yellow-400{color:#000;background-color:#ffcd39;border-color:#ffcd39}html .btn-yellow-400:hover,html[data-netbox-color-mode=dark] .btn-yellow-400:hover,html[data-netbox-color-mode=light] .btn-yellow-400:hover{color:#000;background-color:#ffd557;border-color:#ffd24d}.btn-check:focus+html .btn-yellow-400,html .btn-yellow-400:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-yellow-400,html[data-netbox-color-mode=dark] .btn-yellow-400:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-yellow-400,html[data-netbox-color-mode=light] .btn-yellow-400:focus{color:#000;background-color:#ffd557;border-color:#ffd24d;box-shadow:0 0 0 .25rem #d9ae3080}.btn-check:checked+html .btn-yellow-400,.btn-check:active+html .btn-yellow-400,html .btn-yellow-400:active,html .btn-yellow-400.active,.show>html .btn-yellow-400.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-yellow-400,.btn-check:active+html[data-netbox-color-mode=dark] .btn-yellow-400,html[data-netbox-color-mode=dark] .btn-yellow-400:active,html[data-netbox-color-mode=dark] .btn-yellow-400.active,.show>html[data-netbox-color-mode=dark] .btn-yellow-400.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-yellow-400,.btn-check:active+html[data-netbox-color-mode=light] .btn-yellow-400,html[data-netbox-color-mode=light] .btn-yellow-400:active,html[data-netbox-color-mode=light] .btn-yellow-400.active,.show>html[data-netbox-color-mode=light] .btn-yellow-400.dropdown-toggle{color:#000;background-color:#ffd761;border-color:#ffd24d}.btn-check:checked+html .btn-yellow-400:focus,.btn-check:active+html .btn-yellow-400:focus,html .btn-yellow-400:active:focus,html .btn-yellow-400.active:focus,.show>html .btn-yellow-400.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-yellow-400:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-yellow-400:focus,html[data-netbox-color-mode=dark] .btn-yellow-400:active:focus,html[data-netbox-color-mode=dark] .btn-yellow-400.active:focus,.show>html[data-netbox-color-mode=dark] .btn-yellow-400.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-yellow-400:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-yellow-400:focus,html[data-netbox-color-mode=light] .btn-yellow-400:active:focus,html[data-netbox-color-mode=light] .btn-yellow-400.active:focus,.show>html[data-netbox-color-mode=light] .btn-yellow-400.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #d9ae3080}html .btn-yellow-400:disabled,html .btn-yellow-400.disabled,html[data-netbox-color-mode=dark] .btn-yellow-400:disabled,html[data-netbox-color-mode=dark] .btn-yellow-400.disabled,html[data-netbox-color-mode=light] .btn-yellow-400:disabled,html[data-netbox-color-mode=light] .btn-yellow-400.disabled{color:#000;background-color:#ffcd39;border-color:#ffcd39}}@media print{html .btn-yellow-500,html[data-netbox-color-mode=dark] .btn-yellow-500,html[data-netbox-color-mode=light] .btn-yellow-500{color:#000;background-color:#ffc107;border-color:#ffc107}html .btn-yellow-500:hover,html[data-netbox-color-mode=dark] .btn-yellow-500:hover,html[data-netbox-color-mode=light] .btn-yellow-500:hover{color:#000;background-color:#ffca2c;border-color:#ffc720}.btn-check:focus+html .btn-yellow-500,html .btn-yellow-500:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-yellow-500,html[data-netbox-color-mode=dark] .btn-yellow-500:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-yellow-500,html[data-netbox-color-mode=light] .btn-yellow-500:focus{color:#000;background-color:#ffca2c;border-color:#ffc720;box-shadow:0 0 0 .25rem #d9a40680}.btn-check:checked+html .btn-yellow-500,.btn-check:active+html .btn-yellow-500,html .btn-yellow-500:active,html .btn-yellow-500.active,.show>html .btn-yellow-500.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-yellow-500,.btn-check:active+html[data-netbox-color-mode=dark] .btn-yellow-500,html[data-netbox-color-mode=dark] .btn-yellow-500:active,html[data-netbox-color-mode=dark] .btn-yellow-500.active,.show>html[data-netbox-color-mode=dark] .btn-yellow-500.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-yellow-500,.btn-check:active+html[data-netbox-color-mode=light] .btn-yellow-500,html[data-netbox-color-mode=light] .btn-yellow-500:active,html[data-netbox-color-mode=light] .btn-yellow-500.active,.show>html[data-netbox-color-mode=light] .btn-yellow-500.dropdown-toggle{color:#000;background-color:#ffcd39;border-color:#ffc720}.btn-check:checked+html .btn-yellow-500:focus,.btn-check:active+html .btn-yellow-500:focus,html .btn-yellow-500:active:focus,html .btn-yellow-500.active:focus,.show>html .btn-yellow-500.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-yellow-500:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-yellow-500:focus,html[data-netbox-color-mode=dark] .btn-yellow-500:active:focus,html[data-netbox-color-mode=dark] .btn-yellow-500.active:focus,.show>html[data-netbox-color-mode=dark] .btn-yellow-500.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-yellow-500:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-yellow-500:focus,html[data-netbox-color-mode=light] .btn-yellow-500:active:focus,html[data-netbox-color-mode=light] .btn-yellow-500.active:focus,.show>html[data-netbox-color-mode=light] .btn-yellow-500.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #d9a40680}html .btn-yellow-500:disabled,html .btn-yellow-500.disabled,html[data-netbox-color-mode=dark] .btn-yellow-500:disabled,html[data-netbox-color-mode=dark] .btn-yellow-500.disabled,html[data-netbox-color-mode=light] .btn-yellow-500:disabled,html[data-netbox-color-mode=light] .btn-yellow-500.disabled{color:#000;background-color:#ffc107;border-color:#ffc107}}@media print{html .btn-yellow-600,html[data-netbox-color-mode=dark] .btn-yellow-600,html[data-netbox-color-mode=light] .btn-yellow-600{color:#000;background-color:#cc9a06;border-color:#cc9a06}html .btn-yellow-600:hover,html[data-netbox-color-mode=dark] .btn-yellow-600:hover,html[data-netbox-color-mode=light] .btn-yellow-600:hover{color:#000;background-color:#d4a92b;border-color:#d1a41f}.btn-check:focus+html .btn-yellow-600,html .btn-yellow-600:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-yellow-600,html[data-netbox-color-mode=dark] .btn-yellow-600:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-yellow-600,html[data-netbox-color-mode=light] .btn-yellow-600:focus{color:#000;background-color:#d4a92b;border-color:#d1a41f;box-shadow:0 0 0 .25rem #ad830580}.btn-check:checked+html .btn-yellow-600,.btn-check:active+html .btn-yellow-600,html .btn-yellow-600:active,html .btn-yellow-600.active,.show>html .btn-yellow-600.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-yellow-600,.btn-check:active+html[data-netbox-color-mode=dark] .btn-yellow-600,html[data-netbox-color-mode=dark] .btn-yellow-600:active,html[data-netbox-color-mode=dark] .btn-yellow-600.active,.show>html[data-netbox-color-mode=dark] .btn-yellow-600.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-yellow-600,.btn-check:active+html[data-netbox-color-mode=light] .btn-yellow-600,html[data-netbox-color-mode=light] .btn-yellow-600:active,html[data-netbox-color-mode=light] .btn-yellow-600.active,.show>html[data-netbox-color-mode=light] .btn-yellow-600.dropdown-toggle{color:#000;background-color:#d6ae38;border-color:#d1a41f}.btn-check:checked+html .btn-yellow-600:focus,.btn-check:active+html .btn-yellow-600:focus,html .btn-yellow-600:active:focus,html .btn-yellow-600.active:focus,.show>html .btn-yellow-600.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-yellow-600:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-yellow-600:focus,html[data-netbox-color-mode=dark] .btn-yellow-600:active:focus,html[data-netbox-color-mode=dark] .btn-yellow-600.active:focus,.show>html[data-netbox-color-mode=dark] .btn-yellow-600.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-yellow-600:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-yellow-600:focus,html[data-netbox-color-mode=light] .btn-yellow-600:active:focus,html[data-netbox-color-mode=light] .btn-yellow-600.active:focus,.show>html[data-netbox-color-mode=light] .btn-yellow-600.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #ad830580}html .btn-yellow-600:disabled,html .btn-yellow-600.disabled,html[data-netbox-color-mode=dark] .btn-yellow-600:disabled,html[data-netbox-color-mode=dark] .btn-yellow-600.disabled,html[data-netbox-color-mode=light] .btn-yellow-600:disabled,html[data-netbox-color-mode=light] .btn-yellow-600.disabled{color:#000;background-color:#cc9a06;border-color:#cc9a06}}@media print{html .btn-yellow-700,html[data-netbox-color-mode=dark] .btn-yellow-700,html[data-netbox-color-mode=light] .btn-yellow-700{color:#000;background-color:#997404;border-color:#997404}html .btn-yellow-700:hover,html[data-netbox-color-mode=dark] .btn-yellow-700:hover,html[data-netbox-color-mode=light] .btn-yellow-700:hover{color:#000;background-color:#a8892a;border-color:#a3821d}.btn-check:focus+html .btn-yellow-700,html .btn-yellow-700:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-yellow-700,html[data-netbox-color-mode=dark] .btn-yellow-700:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-yellow-700,html[data-netbox-color-mode=light] .btn-yellow-700:focus{color:#000;background-color:#a8892a;border-color:#a3821d;box-shadow:0 0 0 .25rem #82630380}.btn-check:checked+html .btn-yellow-700,.btn-check:active+html .btn-yellow-700,html .btn-yellow-700:active,html .btn-yellow-700.active,.show>html .btn-yellow-700.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-yellow-700,.btn-check:active+html[data-netbox-color-mode=dark] .btn-yellow-700,html[data-netbox-color-mode=dark] .btn-yellow-700:active,html[data-netbox-color-mode=dark] .btn-yellow-700.active,.show>html[data-netbox-color-mode=dark] .btn-yellow-700.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-yellow-700,.btn-check:active+html[data-netbox-color-mode=light] .btn-yellow-700,html[data-netbox-color-mode=light] .btn-yellow-700:active,html[data-netbox-color-mode=light] .btn-yellow-700.active,.show>html[data-netbox-color-mode=light] .btn-yellow-700.dropdown-toggle{color:#000;background-color:#ad9036;border-color:#a3821d}.btn-check:checked+html .btn-yellow-700:focus,.btn-check:active+html .btn-yellow-700:focus,html .btn-yellow-700:active:focus,html .btn-yellow-700.active:focus,.show>html .btn-yellow-700.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-yellow-700:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-yellow-700:focus,html[data-netbox-color-mode=dark] .btn-yellow-700:active:focus,html[data-netbox-color-mode=dark] .btn-yellow-700.active:focus,.show>html[data-netbox-color-mode=dark] .btn-yellow-700.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-yellow-700:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-yellow-700:focus,html[data-netbox-color-mode=light] .btn-yellow-700:active:focus,html[data-netbox-color-mode=light] .btn-yellow-700.active:focus,.show>html[data-netbox-color-mode=light] .btn-yellow-700.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #82630380}html .btn-yellow-700:disabled,html .btn-yellow-700.disabled,html[data-netbox-color-mode=dark] .btn-yellow-700:disabled,html[data-netbox-color-mode=dark] .btn-yellow-700.disabled,html[data-netbox-color-mode=light] .btn-yellow-700:disabled,html[data-netbox-color-mode=light] .btn-yellow-700.disabled{color:#000;background-color:#997404;border-color:#997404}}@media print{html .btn-yellow-800,html[data-netbox-color-mode=dark] .btn-yellow-800,html[data-netbox-color-mode=light] .btn-yellow-800{color:#fff;background-color:#664d03;border-color:#664d03}html .btn-yellow-800:hover,html[data-netbox-color-mode=dark] .btn-yellow-800:hover,html[data-netbox-color-mode=light] .btn-yellow-800:hover{color:#fff;background-color:#574103;border-color:#523e02}.btn-check:focus+html .btn-yellow-800,html .btn-yellow-800:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-yellow-800,html[data-netbox-color-mode=dark] .btn-yellow-800:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-yellow-800,html[data-netbox-color-mode=light] .btn-yellow-800:focus{color:#fff;background-color:#574103;border-color:#523e02;box-shadow:0 0 0 .25rem #7d682980}.btn-check:checked+html .btn-yellow-800,.btn-check:active+html .btn-yellow-800,html .btn-yellow-800:active,html .btn-yellow-800.active,.show>html .btn-yellow-800.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-yellow-800,.btn-check:active+html[data-netbox-color-mode=dark] .btn-yellow-800,html[data-netbox-color-mode=dark] .btn-yellow-800:active,html[data-netbox-color-mode=dark] .btn-yellow-800.active,.show>html[data-netbox-color-mode=dark] .btn-yellow-800.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-yellow-800,.btn-check:active+html[data-netbox-color-mode=light] .btn-yellow-800,html[data-netbox-color-mode=light] .btn-yellow-800:active,html[data-netbox-color-mode=light] .btn-yellow-800.active,.show>html[data-netbox-color-mode=light] .btn-yellow-800.dropdown-toggle{color:#fff;background-color:#523e02;border-color:#4d3a02}.btn-check:checked+html .btn-yellow-800:focus,.btn-check:active+html .btn-yellow-800:focus,html .btn-yellow-800:active:focus,html .btn-yellow-800.active:focus,.show>html .btn-yellow-800.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-yellow-800:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-yellow-800:focus,html[data-netbox-color-mode=dark] .btn-yellow-800:active:focus,html[data-netbox-color-mode=dark] .btn-yellow-800.active:focus,.show>html[data-netbox-color-mode=dark] .btn-yellow-800.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-yellow-800:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-yellow-800:focus,html[data-netbox-color-mode=light] .btn-yellow-800:active:focus,html[data-netbox-color-mode=light] .btn-yellow-800.active:focus,.show>html[data-netbox-color-mode=light] .btn-yellow-800.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #7d682980}html .btn-yellow-800:disabled,html .btn-yellow-800.disabled,html[data-netbox-color-mode=dark] .btn-yellow-800:disabled,html[data-netbox-color-mode=dark] .btn-yellow-800.disabled,html[data-netbox-color-mode=light] .btn-yellow-800:disabled,html[data-netbox-color-mode=light] .btn-yellow-800.disabled{color:#fff;background-color:#664d03;border-color:#664d03}}@media print{html .btn-yellow-900,html[data-netbox-color-mode=dark] .btn-yellow-900,html[data-netbox-color-mode=light] .btn-yellow-900{color:#fff;background-color:#332701;border-color:#332701}html .btn-yellow-900:hover,html[data-netbox-color-mode=dark] .btn-yellow-900:hover,html[data-netbox-color-mode=light] .btn-yellow-900:hover{color:#fff;background-color:#2b2101;border-color:#291f01}.btn-check:focus+html .btn-yellow-900,html .btn-yellow-900:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-yellow-900,html[data-netbox-color-mode=dark] .btn-yellow-900:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-yellow-900,html[data-netbox-color-mode=light] .btn-yellow-900:focus{color:#fff;background-color:#2b2101;border-color:#291f01;box-shadow:0 0 0 .25rem #52472780}.btn-check:checked+html .btn-yellow-900,.btn-check:active+html .btn-yellow-900,html .btn-yellow-900:active,html .btn-yellow-900.active,.show>html .btn-yellow-900.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-yellow-900,.btn-check:active+html[data-netbox-color-mode=dark] .btn-yellow-900,html[data-netbox-color-mode=dark] .btn-yellow-900:active,html[data-netbox-color-mode=dark] .btn-yellow-900.active,.show>html[data-netbox-color-mode=dark] .btn-yellow-900.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-yellow-900,.btn-check:active+html[data-netbox-color-mode=light] .btn-yellow-900,html[data-netbox-color-mode=light] .btn-yellow-900:active,html[data-netbox-color-mode=light] .btn-yellow-900.active,.show>html[data-netbox-color-mode=light] .btn-yellow-900.dropdown-toggle{color:#fff;background-color:#291f01;border-color:#261d01}.btn-check:checked+html .btn-yellow-900:focus,.btn-check:active+html .btn-yellow-900:focus,html .btn-yellow-900:active:focus,html .btn-yellow-900.active:focus,.show>html .btn-yellow-900.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-yellow-900:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-yellow-900:focus,html[data-netbox-color-mode=dark] .btn-yellow-900:active:focus,html[data-netbox-color-mode=dark] .btn-yellow-900.active:focus,.show>html[data-netbox-color-mode=dark] .btn-yellow-900.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-yellow-900:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-yellow-900:focus,html[data-netbox-color-mode=light] .btn-yellow-900:active:focus,html[data-netbox-color-mode=light] .btn-yellow-900.active:focus,.show>html[data-netbox-color-mode=light] .btn-yellow-900.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #52472780}html .btn-yellow-900:disabled,html .btn-yellow-900.disabled,html[data-netbox-color-mode=dark] .btn-yellow-900:disabled,html[data-netbox-color-mode=dark] .btn-yellow-900.disabled,html[data-netbox-color-mode=light] .btn-yellow-900:disabled,html[data-netbox-color-mode=light] .btn-yellow-900.disabled{color:#fff;background-color:#332701;border-color:#332701}}@media print{html .btn-green-100,html[data-netbox-color-mode=dark] .btn-green-100,html[data-netbox-color-mode=light] .btn-green-100{color:#000;background-color:#d1e7dd;border-color:#d1e7dd}html .btn-green-100:hover,html[data-netbox-color-mode=dark] .btn-green-100:hover,html[data-netbox-color-mode=light] .btn-green-100:hover{color:#000;background-color:#d8ebe2;border-color:#d6e9e0}.btn-check:focus+html .btn-green-100,html .btn-green-100:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-green-100,html[data-netbox-color-mode=dark] .btn-green-100:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-green-100,html[data-netbox-color-mode=light] .btn-green-100:focus{color:#000;background-color:#d8ebe2;border-color:#d6e9e0;box-shadow:0 0 0 .25rem #b2c4bc80}.btn-check:checked+html .btn-green-100,.btn-check:active+html .btn-green-100,html .btn-green-100:active,html .btn-green-100.active,.show>html .btn-green-100.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-green-100,.btn-check:active+html[data-netbox-color-mode=dark] .btn-green-100,html[data-netbox-color-mode=dark] .btn-green-100:active,html[data-netbox-color-mode=dark] .btn-green-100.active,.show>html[data-netbox-color-mode=dark] .btn-green-100.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-green-100,.btn-check:active+html[data-netbox-color-mode=light] .btn-green-100,html[data-netbox-color-mode=light] .btn-green-100:active,html[data-netbox-color-mode=light] .btn-green-100.active,.show>html[data-netbox-color-mode=light] .btn-green-100.dropdown-toggle{color:#000;background-color:#daece4;border-color:#d6e9e0}.btn-check:checked+html .btn-green-100:focus,.btn-check:active+html .btn-green-100:focus,html .btn-green-100:active:focus,html .btn-green-100.active:focus,.show>html .btn-green-100.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-green-100:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-green-100:focus,html[data-netbox-color-mode=dark] .btn-green-100:active:focus,html[data-netbox-color-mode=dark] .btn-green-100.active:focus,.show>html[data-netbox-color-mode=dark] .btn-green-100.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-green-100:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-green-100:focus,html[data-netbox-color-mode=light] .btn-green-100:active:focus,html[data-netbox-color-mode=light] .btn-green-100.active:focus,.show>html[data-netbox-color-mode=light] .btn-green-100.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #b2c4bc80}html .btn-green-100:disabled,html .btn-green-100.disabled,html[data-netbox-color-mode=dark] .btn-green-100:disabled,html[data-netbox-color-mode=dark] .btn-green-100.disabled,html[data-netbox-color-mode=light] .btn-green-100:disabled,html[data-netbox-color-mode=light] .btn-green-100.disabled{color:#000;background-color:#d1e7dd;border-color:#d1e7dd}}@media print{html .btn-green-200,html[data-netbox-color-mode=dark] .btn-green-200,html[data-netbox-color-mode=light] .btn-green-200{color:#000;background-color:#a3cfbb;border-color:#a3cfbb}html .btn-green-200:hover,html[data-netbox-color-mode=dark] .btn-green-200:hover,html[data-netbox-color-mode=light] .btn-green-200:hover{color:#000;background-color:#b1d6c5;border-color:#acd4c2}.btn-check:focus+html .btn-green-200,html .btn-green-200:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-green-200,html[data-netbox-color-mode=dark] .btn-green-200:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-green-200,html[data-netbox-color-mode=light] .btn-green-200:focus{color:#000;background-color:#b1d6c5;border-color:#acd4c2;box-shadow:0 0 0 .25rem #8bb09f80}.btn-check:checked+html .btn-green-200,.btn-check:active+html .btn-green-200,html .btn-green-200:active,html .btn-green-200.active,.show>html .btn-green-200.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-green-200,.btn-check:active+html[data-netbox-color-mode=dark] .btn-green-200,html[data-netbox-color-mode=dark] .btn-green-200:active,html[data-netbox-color-mode=dark] .btn-green-200.active,.show>html[data-netbox-color-mode=dark] .btn-green-200.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-green-200,.btn-check:active+html[data-netbox-color-mode=light] .btn-green-200,html[data-netbox-color-mode=light] .btn-green-200:active,html[data-netbox-color-mode=light] .btn-green-200.active,.show>html[data-netbox-color-mode=light] .btn-green-200.dropdown-toggle{color:#000;background-color:#b5d9c9;border-color:#acd4c2}.btn-check:checked+html .btn-green-200:focus,.btn-check:active+html .btn-green-200:focus,html .btn-green-200:active:focus,html .btn-green-200.active:focus,.show>html .btn-green-200.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-green-200:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-green-200:focus,html[data-netbox-color-mode=dark] .btn-green-200:active:focus,html[data-netbox-color-mode=dark] .btn-green-200.active:focus,.show>html[data-netbox-color-mode=dark] .btn-green-200.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-green-200:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-green-200:focus,html[data-netbox-color-mode=light] .btn-green-200:active:focus,html[data-netbox-color-mode=light] .btn-green-200.active:focus,.show>html[data-netbox-color-mode=light] .btn-green-200.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #8bb09f80}html .btn-green-200:disabled,html .btn-green-200.disabled,html[data-netbox-color-mode=dark] .btn-green-200:disabled,html[data-netbox-color-mode=dark] .btn-green-200.disabled,html[data-netbox-color-mode=light] .btn-green-200:disabled,html[data-netbox-color-mode=light] .btn-green-200.disabled{color:#000;background-color:#a3cfbb;border-color:#a3cfbb}}@media print{html .btn-green-300,html[data-netbox-color-mode=dark] .btn-green-300,html[data-netbox-color-mode=light] .btn-green-300{color:#000;background-color:#75b798;border-color:#75b798}html .btn-green-300:hover,html[data-netbox-color-mode=dark] .btn-green-300:hover,html[data-netbox-color-mode=light] .btn-green-300:hover{color:#000;background-color:#8ac2a7;border-color:#83bea2}.btn-check:focus+html .btn-green-300,html .btn-green-300:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-green-300,html[data-netbox-color-mode=dark] .btn-green-300:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-green-300,html[data-netbox-color-mode=light] .btn-green-300:focus{color:#000;background-color:#8ac2a7;border-color:#83bea2;box-shadow:0 0 0 .25rem #639c8180}.btn-check:checked+html .btn-green-300,.btn-check:active+html .btn-green-300,html .btn-green-300:active,html .btn-green-300.active,.show>html .btn-green-300.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-green-300,.btn-check:active+html[data-netbox-color-mode=dark] .btn-green-300,html[data-netbox-color-mode=dark] .btn-green-300:active,html[data-netbox-color-mode=dark] .btn-green-300.active,.show>html[data-netbox-color-mode=dark] .btn-green-300.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-green-300,.btn-check:active+html[data-netbox-color-mode=light] .btn-green-300,html[data-netbox-color-mode=light] .btn-green-300:active,html[data-netbox-color-mode=light] .btn-green-300.active,.show>html[data-netbox-color-mode=light] .btn-green-300.dropdown-toggle{color:#000;background-color:#91c5ad;border-color:#83bea2}.btn-check:checked+html .btn-green-300:focus,.btn-check:active+html .btn-green-300:focus,html .btn-green-300:active:focus,html .btn-green-300.active:focus,.show>html .btn-green-300.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-green-300:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-green-300:focus,html[data-netbox-color-mode=dark] .btn-green-300:active:focus,html[data-netbox-color-mode=dark] .btn-green-300.active:focus,.show>html[data-netbox-color-mode=dark] .btn-green-300.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-green-300:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-green-300:focus,html[data-netbox-color-mode=light] .btn-green-300:active:focus,html[data-netbox-color-mode=light] .btn-green-300.active:focus,.show>html[data-netbox-color-mode=light] .btn-green-300.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #639c8180}html .btn-green-300:disabled,html .btn-green-300.disabled,html[data-netbox-color-mode=dark] .btn-green-300:disabled,html[data-netbox-color-mode=dark] .btn-green-300.disabled,html[data-netbox-color-mode=light] .btn-green-300:disabled,html[data-netbox-color-mode=light] .btn-green-300.disabled{color:#000;background-color:#75b798;border-color:#75b798}}@media print{html .btn-green-400,html[data-netbox-color-mode=dark] .btn-green-400,html[data-netbox-color-mode=light] .btn-green-400{color:#000;background-color:#479f76;border-color:#479f76}html .btn-green-400:hover,html[data-netbox-color-mode=dark] .btn-green-400:hover,html[data-netbox-color-mode=light] .btn-green-400:hover{color:#000;background-color:#63ad8b;border-color:#59a984}.btn-check:focus+html .btn-green-400,html .btn-green-400:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-green-400,html[data-netbox-color-mode=dark] .btn-green-400:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-green-400,html[data-netbox-color-mode=light] .btn-green-400:focus{color:#000;background-color:#63ad8b;border-color:#59a984;box-shadow:0 0 0 .25rem #3c876480}.btn-check:checked+html .btn-green-400,.btn-check:active+html .btn-green-400,html .btn-green-400:active,html .btn-green-400.active,.show>html .btn-green-400.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-green-400,.btn-check:active+html[data-netbox-color-mode=dark] .btn-green-400,html[data-netbox-color-mode=dark] .btn-green-400:active,html[data-netbox-color-mode=dark] .btn-green-400.active,.show>html[data-netbox-color-mode=dark] .btn-green-400.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-green-400,.btn-check:active+html[data-netbox-color-mode=light] .btn-green-400,html[data-netbox-color-mode=light] .btn-green-400:active,html[data-netbox-color-mode=light] .btn-green-400.active,.show>html[data-netbox-color-mode=light] .btn-green-400.dropdown-toggle{color:#000;background-color:#6cb291;border-color:#59a984}.btn-check:checked+html .btn-green-400:focus,.btn-check:active+html .btn-green-400:focus,html .btn-green-400:active:focus,html .btn-green-400.active:focus,.show>html .btn-green-400.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-green-400:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-green-400:focus,html[data-netbox-color-mode=dark] .btn-green-400:active:focus,html[data-netbox-color-mode=dark] .btn-green-400.active:focus,.show>html[data-netbox-color-mode=dark] .btn-green-400.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-green-400:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-green-400:focus,html[data-netbox-color-mode=light] .btn-green-400:active:focus,html[data-netbox-color-mode=light] .btn-green-400.active:focus,.show>html[data-netbox-color-mode=light] .btn-green-400.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #3c876480}html .btn-green-400:disabled,html .btn-green-400.disabled,html[data-netbox-color-mode=dark] .btn-green-400:disabled,html[data-netbox-color-mode=dark] .btn-green-400.disabled,html[data-netbox-color-mode=light] .btn-green-400:disabled,html[data-netbox-color-mode=light] .btn-green-400.disabled{color:#000;background-color:#479f76;border-color:#479f76}}@media print{html .btn-green-500,html[data-netbox-color-mode=dark] .btn-green-500,html[data-netbox-color-mode=light] .btn-green-500{color:#fff;background-color:#198754;border-color:#198754}html .btn-green-500:hover,html[data-netbox-color-mode=dark] .btn-green-500:hover,html[data-netbox-color-mode=light] .btn-green-500:hover{color:#fff;background-color:#157347;border-color:#146c43}.btn-check:focus+html .btn-green-500,html .btn-green-500:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-green-500,html[data-netbox-color-mode=dark] .btn-green-500:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-green-500,html[data-netbox-color-mode=light] .btn-green-500:focus{color:#fff;background-color:#157347;border-color:#146c43;box-shadow:0 0 0 .25rem #3c996e80}.btn-check:checked+html .btn-green-500,.btn-check:active+html .btn-green-500,html .btn-green-500:active,html .btn-green-500.active,.show>html .btn-green-500.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-green-500,.btn-check:active+html[data-netbox-color-mode=dark] .btn-green-500,html[data-netbox-color-mode=dark] .btn-green-500:active,html[data-netbox-color-mode=dark] .btn-green-500.active,.show>html[data-netbox-color-mode=dark] .btn-green-500.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-green-500,.btn-check:active+html[data-netbox-color-mode=light] .btn-green-500,html[data-netbox-color-mode=light] .btn-green-500:active,html[data-netbox-color-mode=light] .btn-green-500.active,.show>html[data-netbox-color-mode=light] .btn-green-500.dropdown-toggle{color:#fff;background-color:#146c43;border-color:#13653f}.btn-check:checked+html .btn-green-500:focus,.btn-check:active+html .btn-green-500:focus,html .btn-green-500:active:focus,html .btn-green-500.active:focus,.show>html .btn-green-500.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-green-500:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-green-500:focus,html[data-netbox-color-mode=dark] .btn-green-500:active:focus,html[data-netbox-color-mode=dark] .btn-green-500.active:focus,.show>html[data-netbox-color-mode=dark] .btn-green-500.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-green-500:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-green-500:focus,html[data-netbox-color-mode=light] .btn-green-500:active:focus,html[data-netbox-color-mode=light] .btn-green-500.active:focus,.show>html[data-netbox-color-mode=light] .btn-green-500.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #3c996e80}html .btn-green-500:disabled,html .btn-green-500.disabled,html[data-netbox-color-mode=dark] .btn-green-500:disabled,html[data-netbox-color-mode=dark] .btn-green-500.disabled,html[data-netbox-color-mode=light] .btn-green-500:disabled,html[data-netbox-color-mode=light] .btn-green-500.disabled{color:#fff;background-color:#198754;border-color:#198754}}@media print{html .btn-green-600,html[data-netbox-color-mode=dark] .btn-green-600,html[data-netbox-color-mode=light] .btn-green-600{color:#fff;background-color:#146c43;border-color:#146c43}html .btn-green-600:hover,html[data-netbox-color-mode=dark] .btn-green-600:hover,html[data-netbox-color-mode=light] .btn-green-600:hover{color:#fff;background-color:#115c39;border-color:#105636}.btn-check:focus+html .btn-green-600,html .btn-green-600:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-green-600,html[data-netbox-color-mode=dark] .btn-green-600:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-green-600,html[data-netbox-color-mode=light] .btn-green-600:focus{color:#fff;background-color:#115c39;border-color:#105636;box-shadow:0 0 0 .25rem #37825f80}.btn-check:checked+html .btn-green-600,.btn-check:active+html .btn-green-600,html .btn-green-600:active,html .btn-green-600.active,.show>html .btn-green-600.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-green-600,.btn-check:active+html[data-netbox-color-mode=dark] .btn-green-600,html[data-netbox-color-mode=dark] .btn-green-600:active,html[data-netbox-color-mode=dark] .btn-green-600.active,.show>html[data-netbox-color-mode=dark] .btn-green-600.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-green-600,.btn-check:active+html[data-netbox-color-mode=light] .btn-green-600,html[data-netbox-color-mode=light] .btn-green-600:active,html[data-netbox-color-mode=light] .btn-green-600.active,.show>html[data-netbox-color-mode=light] .btn-green-600.dropdown-toggle{color:#fff;background-color:#105636;border-color:#0f5132}.btn-check:checked+html .btn-green-600:focus,.btn-check:active+html .btn-green-600:focus,html .btn-green-600:active:focus,html .btn-green-600.active:focus,.show>html .btn-green-600.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-green-600:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-green-600:focus,html[data-netbox-color-mode=dark] .btn-green-600:active:focus,html[data-netbox-color-mode=dark] .btn-green-600.active:focus,.show>html[data-netbox-color-mode=dark] .btn-green-600.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-green-600:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-green-600:focus,html[data-netbox-color-mode=light] .btn-green-600:active:focus,html[data-netbox-color-mode=light] .btn-green-600.active:focus,.show>html[data-netbox-color-mode=light] .btn-green-600.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #37825f80}html .btn-green-600:disabled,html .btn-green-600.disabled,html[data-netbox-color-mode=dark] .btn-green-600:disabled,html[data-netbox-color-mode=dark] .btn-green-600.disabled,html[data-netbox-color-mode=light] .btn-green-600:disabled,html[data-netbox-color-mode=light] .btn-green-600.disabled{color:#fff;background-color:#146c43;border-color:#146c43}}@media print{html .btn-green-700,html[data-netbox-color-mode=dark] .btn-green-700,html[data-netbox-color-mode=light] .btn-green-700{color:#fff;background-color:#0f5132;border-color:#0f5132}html .btn-green-700:hover,html[data-netbox-color-mode=dark] .btn-green-700:hover,html[data-netbox-color-mode=light] .btn-green-700:hover{color:#fff;background-color:#0d452b;border-color:#0c4128}.btn-check:focus+html .btn-green-700,html .btn-green-700:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-green-700,html[data-netbox-color-mode=dark] .btn-green-700:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-green-700,html[data-netbox-color-mode=light] .btn-green-700:focus{color:#fff;background-color:#0d452b;border-color:#0c4128;box-shadow:0 0 0 .25rem #336b5180}.btn-check:checked+html .btn-green-700,.btn-check:active+html .btn-green-700,html .btn-green-700:active,html .btn-green-700.active,.show>html .btn-green-700.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-green-700,.btn-check:active+html[data-netbox-color-mode=dark] .btn-green-700,html[data-netbox-color-mode=dark] .btn-green-700:active,html[data-netbox-color-mode=dark] .btn-green-700.active,.show>html[data-netbox-color-mode=dark] .btn-green-700.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-green-700,.btn-check:active+html[data-netbox-color-mode=light] .btn-green-700,html[data-netbox-color-mode=light] .btn-green-700:active,html[data-netbox-color-mode=light] .btn-green-700.active,.show>html[data-netbox-color-mode=light] .btn-green-700.dropdown-toggle{color:#fff;background-color:#0c4128;border-color:#0b3d26}.btn-check:checked+html .btn-green-700:focus,.btn-check:active+html .btn-green-700:focus,html .btn-green-700:active:focus,html .btn-green-700.active:focus,.show>html .btn-green-700.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-green-700:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-green-700:focus,html[data-netbox-color-mode=dark] .btn-green-700:active:focus,html[data-netbox-color-mode=dark] .btn-green-700.active:focus,.show>html[data-netbox-color-mode=dark] .btn-green-700.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-green-700:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-green-700:focus,html[data-netbox-color-mode=light] .btn-green-700:active:focus,html[data-netbox-color-mode=light] .btn-green-700.active:focus,.show>html[data-netbox-color-mode=light] .btn-green-700.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #336b5180}html .btn-green-700:disabled,html .btn-green-700.disabled,html[data-netbox-color-mode=dark] .btn-green-700:disabled,html[data-netbox-color-mode=dark] .btn-green-700.disabled,html[data-netbox-color-mode=light] .btn-green-700:disabled,html[data-netbox-color-mode=light] .btn-green-700.disabled{color:#fff;background-color:#0f5132;border-color:#0f5132}}@media print{html .btn-green-800,html[data-netbox-color-mode=dark] .btn-green-800,html[data-netbox-color-mode=light] .btn-green-800{color:#fff;background-color:#0a3622;border-color:#0a3622}html .btn-green-800:hover,html[data-netbox-color-mode=dark] .btn-green-800:hover,html[data-netbox-color-mode=light] .btn-green-800:hover{color:#fff;background-color:#092e1d;border-color:#082b1b}.btn-check:focus+html .btn-green-800,html .btn-green-800:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-green-800,html[data-netbox-color-mode=dark] .btn-green-800:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-green-800,html[data-netbox-color-mode=light] .btn-green-800:focus{color:#fff;background-color:#092e1d;border-color:#082b1b;box-shadow:0 0 0 .25rem #2f544380}.btn-check:checked+html .btn-green-800,.btn-check:active+html .btn-green-800,html .btn-green-800:active,html .btn-green-800.active,.show>html .btn-green-800.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-green-800,.btn-check:active+html[data-netbox-color-mode=dark] .btn-green-800,html[data-netbox-color-mode=dark] .btn-green-800:active,html[data-netbox-color-mode=dark] .btn-green-800.active,.show>html[data-netbox-color-mode=dark] .btn-green-800.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-green-800,.btn-check:active+html[data-netbox-color-mode=light] .btn-green-800,html[data-netbox-color-mode=light] .btn-green-800:active,html[data-netbox-color-mode=light] .btn-green-800.active,.show>html[data-netbox-color-mode=light] .btn-green-800.dropdown-toggle{color:#fff;background-color:#082b1b;border-color:#08291a}.btn-check:checked+html .btn-green-800:focus,.btn-check:active+html .btn-green-800:focus,html .btn-green-800:active:focus,html .btn-green-800.active:focus,.show>html .btn-green-800.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-green-800:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-green-800:focus,html[data-netbox-color-mode=dark] .btn-green-800:active:focus,html[data-netbox-color-mode=dark] .btn-green-800.active:focus,.show>html[data-netbox-color-mode=dark] .btn-green-800.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-green-800:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-green-800:focus,html[data-netbox-color-mode=light] .btn-green-800:active:focus,html[data-netbox-color-mode=light] .btn-green-800.active:focus,.show>html[data-netbox-color-mode=light] .btn-green-800.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #2f544380}html .btn-green-800:disabled,html .btn-green-800.disabled,html[data-netbox-color-mode=dark] .btn-green-800:disabled,html[data-netbox-color-mode=dark] .btn-green-800.disabled,html[data-netbox-color-mode=light] .btn-green-800:disabled,html[data-netbox-color-mode=light] .btn-green-800.disabled{color:#fff;background-color:#0a3622;border-color:#0a3622}}@media print{html .btn-green-900,html[data-netbox-color-mode=dark] .btn-green-900,html[data-netbox-color-mode=light] .btn-green-900{color:#fff;background-color:#051b11;border-color:#051b11}html .btn-green-900:hover,html[data-netbox-color-mode=dark] .btn-green-900:hover,html[data-netbox-color-mode=light] .btn-green-900:hover{color:#fff;background-color:#04170e;border-color:#04160e}.btn-check:focus+html .btn-green-900,html .btn-green-900:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-green-900,html[data-netbox-color-mode=dark] .btn-green-900:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-green-900,html[data-netbox-color-mode=light] .btn-green-900:focus{color:#fff;background-color:#04170e;border-color:#04160e;box-shadow:0 0 0 .25rem #2b3d3580}.btn-check:checked+html .btn-green-900,.btn-check:active+html .btn-green-900,html .btn-green-900:active,html .btn-green-900.active,.show>html .btn-green-900.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-green-900,.btn-check:active+html[data-netbox-color-mode=dark] .btn-green-900,html[data-netbox-color-mode=dark] .btn-green-900:active,html[data-netbox-color-mode=dark] .btn-green-900.active,.show>html[data-netbox-color-mode=dark] .btn-green-900.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-green-900,.btn-check:active+html[data-netbox-color-mode=light] .btn-green-900,html[data-netbox-color-mode=light] .btn-green-900:active,html[data-netbox-color-mode=light] .btn-green-900.active,.show>html[data-netbox-color-mode=light] .btn-green-900.dropdown-toggle{color:#fff;background-color:#04160e;border-color:#04140d}.btn-check:checked+html .btn-green-900:focus,.btn-check:active+html .btn-green-900:focus,html .btn-green-900:active:focus,html .btn-green-900.active:focus,.show>html .btn-green-900.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-green-900:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-green-900:focus,html[data-netbox-color-mode=dark] .btn-green-900:active:focus,html[data-netbox-color-mode=dark] .btn-green-900.active:focus,.show>html[data-netbox-color-mode=dark] .btn-green-900.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-green-900:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-green-900:focus,html[data-netbox-color-mode=light] .btn-green-900:active:focus,html[data-netbox-color-mode=light] .btn-green-900.active:focus,.show>html[data-netbox-color-mode=light] .btn-green-900.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #2b3d3580}html .btn-green-900:disabled,html .btn-green-900.disabled,html[data-netbox-color-mode=dark] .btn-green-900:disabled,html[data-netbox-color-mode=dark] .btn-green-900.disabled,html[data-netbox-color-mode=light] .btn-green-900:disabled,html[data-netbox-color-mode=light] .btn-green-900.disabled{color:#fff;background-color:#051b11;border-color:#051b11}}@media print{html .btn-blue-100,html[data-netbox-color-mode=dark] .btn-blue-100,html[data-netbox-color-mode=light] .btn-blue-100{color:#000;background-color:#cfe2ff;border-color:#cfe2ff}html .btn-blue-100:hover,html[data-netbox-color-mode=dark] .btn-blue-100:hover,html[data-netbox-color-mode=light] .btn-blue-100:hover{color:#000;background-color:#d6e6ff;border-color:#d4e5ff}.btn-check:focus+html .btn-blue-100,html .btn-blue-100:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-blue-100,html[data-netbox-color-mode=dark] .btn-blue-100:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-blue-100,html[data-netbox-color-mode=light] .btn-blue-100:focus{color:#000;background-color:#d6e6ff;border-color:#d4e5ff;box-shadow:0 0 0 .25rem #b0c0d980}.btn-check:checked+html .btn-blue-100,.btn-check:active+html .btn-blue-100,html .btn-blue-100:active,html .btn-blue-100.active,.show>html .btn-blue-100.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-blue-100,.btn-check:active+html[data-netbox-color-mode=dark] .btn-blue-100,html[data-netbox-color-mode=dark] .btn-blue-100:active,html[data-netbox-color-mode=dark] .btn-blue-100.active,.show>html[data-netbox-color-mode=dark] .btn-blue-100.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-blue-100,.btn-check:active+html[data-netbox-color-mode=light] .btn-blue-100,html[data-netbox-color-mode=light] .btn-blue-100:active,html[data-netbox-color-mode=light] .btn-blue-100.active,.show>html[data-netbox-color-mode=light] .btn-blue-100.dropdown-toggle{color:#000;background-color:#d9e8ff;border-color:#d4e5ff}.btn-check:checked+html .btn-blue-100:focus,.btn-check:active+html .btn-blue-100:focus,html .btn-blue-100:active:focus,html .btn-blue-100.active:focus,.show>html .btn-blue-100.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-blue-100:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-blue-100:focus,html[data-netbox-color-mode=dark] .btn-blue-100:active:focus,html[data-netbox-color-mode=dark] .btn-blue-100.active:focus,.show>html[data-netbox-color-mode=dark] .btn-blue-100.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-blue-100:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-blue-100:focus,html[data-netbox-color-mode=light] .btn-blue-100:active:focus,html[data-netbox-color-mode=light] .btn-blue-100.active:focus,.show>html[data-netbox-color-mode=light] .btn-blue-100.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #b0c0d980}html .btn-blue-100:disabled,html .btn-blue-100.disabled,html[data-netbox-color-mode=dark] .btn-blue-100:disabled,html[data-netbox-color-mode=dark] .btn-blue-100.disabled,html[data-netbox-color-mode=light] .btn-blue-100:disabled,html[data-netbox-color-mode=light] .btn-blue-100.disabled{color:#000;background-color:#cfe2ff;border-color:#cfe2ff}}@media print{html .btn-blue-200,html[data-netbox-color-mode=dark] .btn-blue-200,html[data-netbox-color-mode=light] .btn-blue-200{color:#000;background-color:#9ec5fe;border-color:#9ec5fe}html .btn-blue-200:hover,html[data-netbox-color-mode=dark] .btn-blue-200:hover,html[data-netbox-color-mode=light] .btn-blue-200:hover{color:#000;background-color:#adcefe;border-color:#a8cbfe}.btn-check:focus+html .btn-blue-200,html .btn-blue-200:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-blue-200,html[data-netbox-color-mode=dark] .btn-blue-200:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-blue-200,html[data-netbox-color-mode=light] .btn-blue-200:focus{color:#000;background-color:#adcefe;border-color:#a8cbfe;box-shadow:0 0 0 .25rem #86a7d880}.btn-check:checked+html .btn-blue-200,.btn-check:active+html .btn-blue-200,html .btn-blue-200:active,html .btn-blue-200.active,.show>html .btn-blue-200.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-blue-200,.btn-check:active+html[data-netbox-color-mode=dark] .btn-blue-200,html[data-netbox-color-mode=dark] .btn-blue-200:active,html[data-netbox-color-mode=dark] .btn-blue-200.active,.show>html[data-netbox-color-mode=dark] .btn-blue-200.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-blue-200,.btn-check:active+html[data-netbox-color-mode=light] .btn-blue-200,html[data-netbox-color-mode=light] .btn-blue-200:active,html[data-netbox-color-mode=light] .btn-blue-200.active,.show>html[data-netbox-color-mode=light] .btn-blue-200.dropdown-toggle{color:#000;background-color:#b1d1fe;border-color:#a8cbfe}.btn-check:checked+html .btn-blue-200:focus,.btn-check:active+html .btn-blue-200:focus,html .btn-blue-200:active:focus,html .btn-blue-200.active:focus,.show>html .btn-blue-200.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-blue-200:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-blue-200:focus,html[data-netbox-color-mode=dark] .btn-blue-200:active:focus,html[data-netbox-color-mode=dark] .btn-blue-200.active:focus,.show>html[data-netbox-color-mode=dark] .btn-blue-200.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-blue-200:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-blue-200:focus,html[data-netbox-color-mode=light] .btn-blue-200:active:focus,html[data-netbox-color-mode=light] .btn-blue-200.active:focus,.show>html[data-netbox-color-mode=light] .btn-blue-200.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #86a7d880}html .btn-blue-200:disabled,html .btn-blue-200.disabled,html[data-netbox-color-mode=dark] .btn-blue-200:disabled,html[data-netbox-color-mode=dark] .btn-blue-200.disabled,html[data-netbox-color-mode=light] .btn-blue-200:disabled,html[data-netbox-color-mode=light] .btn-blue-200.disabled{color:#000;background-color:#9ec5fe;border-color:#9ec5fe}}@media print{html .btn-blue-300,html[data-netbox-color-mode=dark] .btn-blue-300,html[data-netbox-color-mode=light] .btn-blue-300{color:#000;background-color:#6ea8fe;border-color:#6ea8fe}html .btn-blue-300:hover,html[data-netbox-color-mode=dark] .btn-blue-300:hover,html[data-netbox-color-mode=light] .btn-blue-300:hover{color:#000;background-color:#84b5fe;border-color:#7db1fe}.btn-check:focus+html .btn-blue-300,html .btn-blue-300:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-blue-300,html[data-netbox-color-mode=dark] .btn-blue-300:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-blue-300,html[data-netbox-color-mode=light] .btn-blue-300:focus{color:#000;background-color:#84b5fe;border-color:#7db1fe;box-shadow:0 0 0 .25rem #5e8fd880}.btn-check:checked+html .btn-blue-300,.btn-check:active+html .btn-blue-300,html .btn-blue-300:active,html .btn-blue-300.active,.show>html .btn-blue-300.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-blue-300,.btn-check:active+html[data-netbox-color-mode=dark] .btn-blue-300,html[data-netbox-color-mode=dark] .btn-blue-300:active,html[data-netbox-color-mode=dark] .btn-blue-300.active,.show>html[data-netbox-color-mode=dark] .btn-blue-300.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-blue-300,.btn-check:active+html[data-netbox-color-mode=light] .btn-blue-300,html[data-netbox-color-mode=light] .btn-blue-300:active,html[data-netbox-color-mode=light] .btn-blue-300.active,.show>html[data-netbox-color-mode=light] .btn-blue-300.dropdown-toggle{color:#000;background-color:#8bb9fe;border-color:#7db1fe}.btn-check:checked+html .btn-blue-300:focus,.btn-check:active+html .btn-blue-300:focus,html .btn-blue-300:active:focus,html .btn-blue-300.active:focus,.show>html .btn-blue-300.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-blue-300:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-blue-300:focus,html[data-netbox-color-mode=dark] .btn-blue-300:active:focus,html[data-netbox-color-mode=dark] .btn-blue-300.active:focus,.show>html[data-netbox-color-mode=dark] .btn-blue-300.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-blue-300:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-blue-300:focus,html[data-netbox-color-mode=light] .btn-blue-300:active:focus,html[data-netbox-color-mode=light] .btn-blue-300.active:focus,.show>html[data-netbox-color-mode=light] .btn-blue-300.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #5e8fd880}html .btn-blue-300:disabled,html .btn-blue-300.disabled,html[data-netbox-color-mode=dark] .btn-blue-300:disabled,html[data-netbox-color-mode=dark] .btn-blue-300.disabled,html[data-netbox-color-mode=light] .btn-blue-300:disabled,html[data-netbox-color-mode=light] .btn-blue-300.disabled{color:#000;background-color:#6ea8fe;border-color:#6ea8fe}}@media print{html .btn-blue-400,html[data-netbox-color-mode=dark] .btn-blue-400,html[data-netbox-color-mode=light] .btn-blue-400{color:#000;background-color:#3d8bfd;border-color:#3d8bfd}html .btn-blue-400:hover,html[data-netbox-color-mode=dark] .btn-blue-400:hover,html[data-netbox-color-mode=light] .btn-blue-400:hover{color:#000;background-color:#5a9cfd;border-color:#5097fd}.btn-check:focus+html .btn-blue-400,html .btn-blue-400:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-blue-400,html[data-netbox-color-mode=dark] .btn-blue-400:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-blue-400,html[data-netbox-color-mode=light] .btn-blue-400:focus{color:#000;background-color:#5a9cfd;border-color:#5097fd;box-shadow:0 0 0 .25rem #3476d780}.btn-check:checked+html .btn-blue-400,.btn-check:active+html .btn-blue-400,html .btn-blue-400:active,html .btn-blue-400.active,.show>html .btn-blue-400.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-blue-400,.btn-check:active+html[data-netbox-color-mode=dark] .btn-blue-400,html[data-netbox-color-mode=dark] .btn-blue-400:active,html[data-netbox-color-mode=dark] .btn-blue-400.active,.show>html[data-netbox-color-mode=dark] .btn-blue-400.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-blue-400,.btn-check:active+html[data-netbox-color-mode=light] .btn-blue-400,html[data-netbox-color-mode=light] .btn-blue-400:active,html[data-netbox-color-mode=light] .btn-blue-400.active,.show>html[data-netbox-color-mode=light] .btn-blue-400.dropdown-toggle{color:#000;background-color:#64a2fd;border-color:#5097fd}.btn-check:checked+html .btn-blue-400:focus,.btn-check:active+html .btn-blue-400:focus,html .btn-blue-400:active:focus,html .btn-blue-400.active:focus,.show>html .btn-blue-400.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-blue-400:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-blue-400:focus,html[data-netbox-color-mode=dark] .btn-blue-400:active:focus,html[data-netbox-color-mode=dark] .btn-blue-400.active:focus,.show>html[data-netbox-color-mode=dark] .btn-blue-400.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-blue-400:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-blue-400:focus,html[data-netbox-color-mode=light] .btn-blue-400:active:focus,html[data-netbox-color-mode=light] .btn-blue-400.active:focus,.show>html[data-netbox-color-mode=light] .btn-blue-400.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #3476d780}html .btn-blue-400:disabled,html .btn-blue-400.disabled,html[data-netbox-color-mode=dark] .btn-blue-400:disabled,html[data-netbox-color-mode=dark] .btn-blue-400.disabled,html[data-netbox-color-mode=light] .btn-blue-400:disabled,html[data-netbox-color-mode=light] .btn-blue-400.disabled{color:#000;background-color:#3d8bfd;border-color:#3d8bfd}}@media print{html .btn-blue-500,html[data-netbox-color-mode=dark] .btn-blue-500,html[data-netbox-color-mode=light] .btn-blue-500{color:#fff;background-color:#0d6efd;border-color:#0d6efd}html .btn-blue-500:hover,html[data-netbox-color-mode=dark] .btn-blue-500:hover,html[data-netbox-color-mode=light] .btn-blue-500:hover{color:#fff;background-color:#0b5ed7;border-color:#0a58ca}.btn-check:focus+html .btn-blue-500,html .btn-blue-500:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-blue-500,html[data-netbox-color-mode=dark] .btn-blue-500:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-blue-500,html[data-netbox-color-mode=light] .btn-blue-500:focus{color:#fff;background-color:#0b5ed7;border-color:#0a58ca;box-shadow:0 0 0 .25rem #3184fd80}.btn-check:checked+html .btn-blue-500,.btn-check:active+html .btn-blue-500,html .btn-blue-500:active,html .btn-blue-500.active,.show>html .btn-blue-500.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-blue-500,.btn-check:active+html[data-netbox-color-mode=dark] .btn-blue-500,html[data-netbox-color-mode=dark] .btn-blue-500:active,html[data-netbox-color-mode=dark] .btn-blue-500.active,.show>html[data-netbox-color-mode=dark] .btn-blue-500.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-blue-500,.btn-check:active+html[data-netbox-color-mode=light] .btn-blue-500,html[data-netbox-color-mode=light] .btn-blue-500:active,html[data-netbox-color-mode=light] .btn-blue-500.active,.show>html[data-netbox-color-mode=light] .btn-blue-500.dropdown-toggle{color:#fff;background-color:#0a58ca;border-color:#0a53be}.btn-check:checked+html .btn-blue-500:focus,.btn-check:active+html .btn-blue-500:focus,html .btn-blue-500:active:focus,html .btn-blue-500.active:focus,.show>html .btn-blue-500.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-blue-500:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-blue-500:focus,html[data-netbox-color-mode=dark] .btn-blue-500:active:focus,html[data-netbox-color-mode=dark] .btn-blue-500.active:focus,.show>html[data-netbox-color-mode=dark] .btn-blue-500.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-blue-500:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-blue-500:focus,html[data-netbox-color-mode=light] .btn-blue-500:active:focus,html[data-netbox-color-mode=light] .btn-blue-500.active:focus,.show>html[data-netbox-color-mode=light] .btn-blue-500.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #3184fd80}html .btn-blue-500:disabled,html .btn-blue-500.disabled,html[data-netbox-color-mode=dark] .btn-blue-500:disabled,html[data-netbox-color-mode=dark] .btn-blue-500.disabled,html[data-netbox-color-mode=light] .btn-blue-500:disabled,html[data-netbox-color-mode=light] .btn-blue-500.disabled{color:#fff;background-color:#0d6efd;border-color:#0d6efd}}@media print{html .btn-blue-600,html[data-netbox-color-mode=dark] .btn-blue-600,html[data-netbox-color-mode=light] .btn-blue-600{color:#fff;background-color:#0a58ca;border-color:#0a58ca}html .btn-blue-600:hover,html[data-netbox-color-mode=dark] .btn-blue-600:hover,html[data-netbox-color-mode=light] .btn-blue-600:hover{color:#fff;background-color:#094bac;border-color:#0846a2}.btn-check:focus+html .btn-blue-600,html .btn-blue-600:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-blue-600,html[data-netbox-color-mode=dark] .btn-blue-600:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-blue-600,html[data-netbox-color-mode=light] .btn-blue-600:focus{color:#fff;background-color:#094bac;border-color:#0846a2;box-shadow:0 0 0 .25rem #2f71d280}.btn-check:checked+html .btn-blue-600,.btn-check:active+html .btn-blue-600,html .btn-blue-600:active,html .btn-blue-600.active,.show>html .btn-blue-600.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-blue-600,.btn-check:active+html[data-netbox-color-mode=dark] .btn-blue-600,html[data-netbox-color-mode=dark] .btn-blue-600:active,html[data-netbox-color-mode=dark] .btn-blue-600.active,.show>html[data-netbox-color-mode=dark] .btn-blue-600.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-blue-600,.btn-check:active+html[data-netbox-color-mode=light] .btn-blue-600,html[data-netbox-color-mode=light] .btn-blue-600:active,html[data-netbox-color-mode=light] .btn-blue-600.active,.show>html[data-netbox-color-mode=light] .btn-blue-600.dropdown-toggle{color:#fff;background-color:#0846a2;border-color:#084298}.btn-check:checked+html .btn-blue-600:focus,.btn-check:active+html .btn-blue-600:focus,html .btn-blue-600:active:focus,html .btn-blue-600.active:focus,.show>html .btn-blue-600.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-blue-600:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-blue-600:focus,html[data-netbox-color-mode=dark] .btn-blue-600:active:focus,html[data-netbox-color-mode=dark] .btn-blue-600.active:focus,.show>html[data-netbox-color-mode=dark] .btn-blue-600.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-blue-600:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-blue-600:focus,html[data-netbox-color-mode=light] .btn-blue-600:active:focus,html[data-netbox-color-mode=light] .btn-blue-600.active:focus,.show>html[data-netbox-color-mode=light] .btn-blue-600.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #2f71d280}html .btn-blue-600:disabled,html .btn-blue-600.disabled,html[data-netbox-color-mode=dark] .btn-blue-600:disabled,html[data-netbox-color-mode=dark] .btn-blue-600.disabled,html[data-netbox-color-mode=light] .btn-blue-600:disabled,html[data-netbox-color-mode=light] .btn-blue-600.disabled{color:#fff;background-color:#0a58ca;border-color:#0a58ca}}@media print{html .btn-blue-700,html[data-netbox-color-mode=dark] .btn-blue-700,html[data-netbox-color-mode=light] .btn-blue-700{color:#fff;background-color:#084298;border-color:#084298}html .btn-blue-700:hover,html[data-netbox-color-mode=dark] .btn-blue-700:hover,html[data-netbox-color-mode=light] .btn-blue-700:hover{color:#fff;background-color:#073881;border-color:#06357a}.btn-check:focus+html .btn-blue-700,html .btn-blue-700:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-blue-700,html[data-netbox-color-mode=dark] .btn-blue-700:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-blue-700,html[data-netbox-color-mode=light] .btn-blue-700:focus{color:#fff;background-color:#073881;border-color:#06357a;box-shadow:0 0 0 .25rem #2d5ea780}.btn-check:checked+html .btn-blue-700,.btn-check:active+html .btn-blue-700,html .btn-blue-700:active,html .btn-blue-700.active,.show>html .btn-blue-700.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-blue-700,.btn-check:active+html[data-netbox-color-mode=dark] .btn-blue-700,html[data-netbox-color-mode=dark] .btn-blue-700:active,html[data-netbox-color-mode=dark] .btn-blue-700.active,.show>html[data-netbox-color-mode=dark] .btn-blue-700.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-blue-700,.btn-check:active+html[data-netbox-color-mode=light] .btn-blue-700,html[data-netbox-color-mode=light] .btn-blue-700:active,html[data-netbox-color-mode=light] .btn-blue-700.active,.show>html[data-netbox-color-mode=light] .btn-blue-700.dropdown-toggle{color:#fff;background-color:#06357a;border-color:#063272}.btn-check:checked+html .btn-blue-700:focus,.btn-check:active+html .btn-blue-700:focus,html .btn-blue-700:active:focus,html .btn-blue-700.active:focus,.show>html .btn-blue-700.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-blue-700:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-blue-700:focus,html[data-netbox-color-mode=dark] .btn-blue-700:active:focus,html[data-netbox-color-mode=dark] .btn-blue-700.active:focus,.show>html[data-netbox-color-mode=dark] .btn-blue-700.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-blue-700:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-blue-700:focus,html[data-netbox-color-mode=light] .btn-blue-700:active:focus,html[data-netbox-color-mode=light] .btn-blue-700.active:focus,.show>html[data-netbox-color-mode=light] .btn-blue-700.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #2d5ea780}html .btn-blue-700:disabled,html .btn-blue-700.disabled,html[data-netbox-color-mode=dark] .btn-blue-700:disabled,html[data-netbox-color-mode=dark] .btn-blue-700.disabled,html[data-netbox-color-mode=light] .btn-blue-700:disabled,html[data-netbox-color-mode=light] .btn-blue-700.disabled{color:#fff;background-color:#084298;border-color:#084298}}@media print{html .btn-blue-800,html[data-netbox-color-mode=dark] .btn-blue-800,html[data-netbox-color-mode=light] .btn-blue-800{color:#fff;background-color:#052c65;border-color:#052c65}html .btn-blue-800:hover,html[data-netbox-color-mode=dark] .btn-blue-800:hover,html[data-netbox-color-mode=light] .btn-blue-800:hover{color:#fff;background-color:#042556;border-color:#042351}.btn-check:focus+html .btn-blue-800,html .btn-blue-800:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-blue-800,html[data-netbox-color-mode=dark] .btn-blue-800:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-blue-800,html[data-netbox-color-mode=light] .btn-blue-800:focus{color:#fff;background-color:#042556;border-color:#042351;box-shadow:0 0 0 .25rem #2b4c7c80}.btn-check:checked+html .btn-blue-800,.btn-check:active+html .btn-blue-800,html .btn-blue-800:active,html .btn-blue-800.active,.show>html .btn-blue-800.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-blue-800,.btn-check:active+html[data-netbox-color-mode=dark] .btn-blue-800,html[data-netbox-color-mode=dark] .btn-blue-800:active,html[data-netbox-color-mode=dark] .btn-blue-800.active,.show>html[data-netbox-color-mode=dark] .btn-blue-800.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-blue-800,.btn-check:active+html[data-netbox-color-mode=light] .btn-blue-800,html[data-netbox-color-mode=light] .btn-blue-800:active,html[data-netbox-color-mode=light] .btn-blue-800.active,.show>html[data-netbox-color-mode=light] .btn-blue-800.dropdown-toggle{color:#fff;background-color:#042351;border-color:#04214c}.btn-check:checked+html .btn-blue-800:focus,.btn-check:active+html .btn-blue-800:focus,html .btn-blue-800:active:focus,html .btn-blue-800.active:focus,.show>html .btn-blue-800.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-blue-800:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-blue-800:focus,html[data-netbox-color-mode=dark] .btn-blue-800:active:focus,html[data-netbox-color-mode=dark] .btn-blue-800.active:focus,.show>html[data-netbox-color-mode=dark] .btn-blue-800.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-blue-800:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-blue-800:focus,html[data-netbox-color-mode=light] .btn-blue-800:active:focus,html[data-netbox-color-mode=light] .btn-blue-800.active:focus,.show>html[data-netbox-color-mode=light] .btn-blue-800.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #2b4c7c80}html .btn-blue-800:disabled,html .btn-blue-800.disabled,html[data-netbox-color-mode=dark] .btn-blue-800:disabled,html[data-netbox-color-mode=dark] .btn-blue-800.disabled,html[data-netbox-color-mode=light] .btn-blue-800:disabled,html[data-netbox-color-mode=light] .btn-blue-800.disabled{color:#fff;background-color:#052c65;border-color:#052c65}}@media print{html .btn-blue-900,html[data-netbox-color-mode=dark] .btn-blue-900,html[data-netbox-color-mode=light] .btn-blue-900{color:#fff;background-color:#031633;border-color:#031633}html .btn-blue-900:hover,html[data-netbox-color-mode=dark] .btn-blue-900:hover,html[data-netbox-color-mode=light] .btn-blue-900:hover{color:#fff;background-color:#03132b;border-color:#021229}.btn-check:focus+html .btn-blue-900,html .btn-blue-900:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-blue-900,html[data-netbox-color-mode=dark] .btn-blue-900:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-blue-900,html[data-netbox-color-mode=light] .btn-blue-900:focus{color:#fff;background-color:#03132b;border-color:#021229;box-shadow:0 0 0 .25rem #29395280}.btn-check:checked+html .btn-blue-900,.btn-check:active+html .btn-blue-900,html .btn-blue-900:active,html .btn-blue-900.active,.show>html .btn-blue-900.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-blue-900,.btn-check:active+html[data-netbox-color-mode=dark] .btn-blue-900,html[data-netbox-color-mode=dark] .btn-blue-900:active,html[data-netbox-color-mode=dark] .btn-blue-900.active,.show>html[data-netbox-color-mode=dark] .btn-blue-900.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-blue-900,.btn-check:active+html[data-netbox-color-mode=light] .btn-blue-900,html[data-netbox-color-mode=light] .btn-blue-900:active,html[data-netbox-color-mode=light] .btn-blue-900.active,.show>html[data-netbox-color-mode=light] .btn-blue-900.dropdown-toggle{color:#fff;background-color:#021229;border-color:#021126}.btn-check:checked+html .btn-blue-900:focus,.btn-check:active+html .btn-blue-900:focus,html .btn-blue-900:active:focus,html .btn-blue-900.active:focus,.show>html .btn-blue-900.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-blue-900:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-blue-900:focus,html[data-netbox-color-mode=dark] .btn-blue-900:active:focus,html[data-netbox-color-mode=dark] .btn-blue-900.active:focus,.show>html[data-netbox-color-mode=dark] .btn-blue-900.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-blue-900:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-blue-900:focus,html[data-netbox-color-mode=light] .btn-blue-900:active:focus,html[data-netbox-color-mode=light] .btn-blue-900.active:focus,.show>html[data-netbox-color-mode=light] .btn-blue-900.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #29395280}html .btn-blue-900:disabled,html .btn-blue-900.disabled,html[data-netbox-color-mode=dark] .btn-blue-900:disabled,html[data-netbox-color-mode=dark] .btn-blue-900.disabled,html[data-netbox-color-mode=light] .btn-blue-900:disabled,html[data-netbox-color-mode=light] .btn-blue-900.disabled{color:#fff;background-color:#031633;border-color:#031633}}@media print{html .btn-cyan-100,html[data-netbox-color-mode=dark] .btn-cyan-100,html[data-netbox-color-mode=light] .btn-cyan-100{color:#000;background-color:#cff4fc;border-color:#cff4fc}html .btn-cyan-100:hover,html[data-netbox-color-mode=dark] .btn-cyan-100:hover,html[data-netbox-color-mode=light] .btn-cyan-100:hover{color:#000;background-color:#d6f6fc;border-color:#d4f5fc}.btn-check:focus+html .btn-cyan-100,html .btn-cyan-100:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-cyan-100,html[data-netbox-color-mode=dark] .btn-cyan-100:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-cyan-100,html[data-netbox-color-mode=light] .btn-cyan-100:focus{color:#000;background-color:#d6f6fc;border-color:#d4f5fc;box-shadow:0 0 0 .25rem #b0cfd680}.btn-check:checked+html .btn-cyan-100,.btn-check:active+html .btn-cyan-100,html .btn-cyan-100:active,html .btn-cyan-100.active,.show>html .btn-cyan-100.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-cyan-100,.btn-check:active+html[data-netbox-color-mode=dark] .btn-cyan-100,html[data-netbox-color-mode=dark] .btn-cyan-100:active,html[data-netbox-color-mode=dark] .btn-cyan-100.active,.show>html[data-netbox-color-mode=dark] .btn-cyan-100.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-cyan-100,.btn-check:active+html[data-netbox-color-mode=light] .btn-cyan-100,html[data-netbox-color-mode=light] .btn-cyan-100:active,html[data-netbox-color-mode=light] .btn-cyan-100.active,.show>html[data-netbox-color-mode=light] .btn-cyan-100.dropdown-toggle{color:#000;background-color:#d9f6fd;border-color:#d4f5fc}.btn-check:checked+html .btn-cyan-100:focus,.btn-check:active+html .btn-cyan-100:focus,html .btn-cyan-100:active:focus,html .btn-cyan-100.active:focus,.show>html .btn-cyan-100.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-cyan-100:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-cyan-100:focus,html[data-netbox-color-mode=dark] .btn-cyan-100:active:focus,html[data-netbox-color-mode=dark] .btn-cyan-100.active:focus,.show>html[data-netbox-color-mode=dark] .btn-cyan-100.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-cyan-100:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-cyan-100:focus,html[data-netbox-color-mode=light] .btn-cyan-100:active:focus,html[data-netbox-color-mode=light] .btn-cyan-100.active:focus,.show>html[data-netbox-color-mode=light] .btn-cyan-100.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #b0cfd680}html .btn-cyan-100:disabled,html .btn-cyan-100.disabled,html[data-netbox-color-mode=dark] .btn-cyan-100:disabled,html[data-netbox-color-mode=dark] .btn-cyan-100.disabled,html[data-netbox-color-mode=light] .btn-cyan-100:disabled,html[data-netbox-color-mode=light] .btn-cyan-100.disabled{color:#000;background-color:#cff4fc;border-color:#cff4fc}}@media print{html .btn-cyan-200,html[data-netbox-color-mode=dark] .btn-cyan-200,html[data-netbox-color-mode=light] .btn-cyan-200{color:#000;background-color:#9eeaf9;border-color:#9eeaf9}html .btn-cyan-200:hover,html[data-netbox-color-mode=dark] .btn-cyan-200:hover,html[data-netbox-color-mode=light] .btn-cyan-200:hover{color:#000;background-color:#adedfa;border-color:#a8ecfa}.btn-check:focus+html .btn-cyan-200,html .btn-cyan-200:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-cyan-200,html[data-netbox-color-mode=dark] .btn-cyan-200:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-cyan-200,html[data-netbox-color-mode=light] .btn-cyan-200:focus{color:#000;background-color:#adedfa;border-color:#a8ecfa;box-shadow:0 0 0 .25rem #86c7d480}.btn-check:checked+html .btn-cyan-200,.btn-check:active+html .btn-cyan-200,html .btn-cyan-200:active,html .btn-cyan-200.active,.show>html .btn-cyan-200.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-cyan-200,.btn-check:active+html[data-netbox-color-mode=dark] .btn-cyan-200,html[data-netbox-color-mode=dark] .btn-cyan-200:active,html[data-netbox-color-mode=dark] .btn-cyan-200.active,.show>html[data-netbox-color-mode=dark] .btn-cyan-200.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-cyan-200,.btn-check:active+html[data-netbox-color-mode=light] .btn-cyan-200,html[data-netbox-color-mode=light] .btn-cyan-200:active,html[data-netbox-color-mode=light] .btn-cyan-200.active,.show>html[data-netbox-color-mode=light] .btn-cyan-200.dropdown-toggle{color:#000;background-color:#b1eefa;border-color:#a8ecfa}.btn-check:checked+html .btn-cyan-200:focus,.btn-check:active+html .btn-cyan-200:focus,html .btn-cyan-200:active:focus,html .btn-cyan-200.active:focus,.show>html .btn-cyan-200.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-cyan-200:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-cyan-200:focus,html[data-netbox-color-mode=dark] .btn-cyan-200:active:focus,html[data-netbox-color-mode=dark] .btn-cyan-200.active:focus,.show>html[data-netbox-color-mode=dark] .btn-cyan-200.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-cyan-200:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-cyan-200:focus,html[data-netbox-color-mode=light] .btn-cyan-200:active:focus,html[data-netbox-color-mode=light] .btn-cyan-200.active:focus,.show>html[data-netbox-color-mode=light] .btn-cyan-200.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #86c7d480}html .btn-cyan-200:disabled,html .btn-cyan-200.disabled,html[data-netbox-color-mode=dark] .btn-cyan-200:disabled,html[data-netbox-color-mode=dark] .btn-cyan-200.disabled,html[data-netbox-color-mode=light] .btn-cyan-200:disabled,html[data-netbox-color-mode=light] .btn-cyan-200.disabled{color:#000;background-color:#9eeaf9;border-color:#9eeaf9}}@media print{html .btn-cyan-300,html[data-netbox-color-mode=dark] .btn-cyan-300,html[data-netbox-color-mode=light] .btn-cyan-300{color:#000;background-color:#6edff6;border-color:#6edff6}html .btn-cyan-300:hover,html[data-netbox-color-mode=dark] .btn-cyan-300:hover,html[data-netbox-color-mode=light] .btn-cyan-300:hover{color:#000;background-color:#84e4f7;border-color:#7de2f7}.btn-check:focus+html .btn-cyan-300,html .btn-cyan-300:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-cyan-300,html[data-netbox-color-mode=dark] .btn-cyan-300:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-cyan-300,html[data-netbox-color-mode=light] .btn-cyan-300:focus{color:#000;background-color:#84e4f7;border-color:#7de2f7;box-shadow:0 0 0 .25rem #5ebed180}.btn-check:checked+html .btn-cyan-300,.btn-check:active+html .btn-cyan-300,html .btn-cyan-300:active,html .btn-cyan-300.active,.show>html .btn-cyan-300.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-cyan-300,.btn-check:active+html[data-netbox-color-mode=dark] .btn-cyan-300,html[data-netbox-color-mode=dark] .btn-cyan-300:active,html[data-netbox-color-mode=dark] .btn-cyan-300.active,.show>html[data-netbox-color-mode=dark] .btn-cyan-300.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-cyan-300,.btn-check:active+html[data-netbox-color-mode=light] .btn-cyan-300,html[data-netbox-color-mode=light] .btn-cyan-300:active,html[data-netbox-color-mode=light] .btn-cyan-300.active,.show>html[data-netbox-color-mode=light] .btn-cyan-300.dropdown-toggle{color:#000;background-color:#8be5f8;border-color:#7de2f7}.btn-check:checked+html .btn-cyan-300:focus,.btn-check:active+html .btn-cyan-300:focus,html .btn-cyan-300:active:focus,html .btn-cyan-300.active:focus,.show>html .btn-cyan-300.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-cyan-300:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-cyan-300:focus,html[data-netbox-color-mode=dark] .btn-cyan-300:active:focus,html[data-netbox-color-mode=dark] .btn-cyan-300.active:focus,.show>html[data-netbox-color-mode=dark] .btn-cyan-300.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-cyan-300:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-cyan-300:focus,html[data-netbox-color-mode=light] .btn-cyan-300:active:focus,html[data-netbox-color-mode=light] .btn-cyan-300.active:focus,.show>html[data-netbox-color-mode=light] .btn-cyan-300.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #5ebed180}html .btn-cyan-300:disabled,html .btn-cyan-300.disabled,html[data-netbox-color-mode=dark] .btn-cyan-300:disabled,html[data-netbox-color-mode=dark] .btn-cyan-300.disabled,html[data-netbox-color-mode=light] .btn-cyan-300:disabled,html[data-netbox-color-mode=light] .btn-cyan-300.disabled{color:#000;background-color:#6edff6;border-color:#6edff6}}@media print{html .btn-cyan-400,html[data-netbox-color-mode=dark] .btn-cyan-400,html[data-netbox-color-mode=light] .btn-cyan-400{color:#000;background-color:#3dd5f3;border-color:#3dd5f3}html .btn-cyan-400:hover,html[data-netbox-color-mode=dark] .btn-cyan-400:hover,html[data-netbox-color-mode=light] .btn-cyan-400:hover{color:#000;background-color:#5adbf5;border-color:#50d9f4}.btn-check:focus+html .btn-cyan-400,html .btn-cyan-400:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-cyan-400,html[data-netbox-color-mode=dark] .btn-cyan-400:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-cyan-400,html[data-netbox-color-mode=light] .btn-cyan-400:focus{color:#000;background-color:#5adbf5;border-color:#50d9f4;box-shadow:0 0 0 .25rem #34b5cf80}.btn-check:checked+html .btn-cyan-400,.btn-check:active+html .btn-cyan-400,html .btn-cyan-400:active,html .btn-cyan-400.active,.show>html .btn-cyan-400.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-cyan-400,.btn-check:active+html[data-netbox-color-mode=dark] .btn-cyan-400,html[data-netbox-color-mode=dark] .btn-cyan-400:active,html[data-netbox-color-mode=dark] .btn-cyan-400.active,.show>html[data-netbox-color-mode=dark] .btn-cyan-400.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-cyan-400,.btn-check:active+html[data-netbox-color-mode=light] .btn-cyan-400,html[data-netbox-color-mode=light] .btn-cyan-400:active,html[data-netbox-color-mode=light] .btn-cyan-400.active,.show>html[data-netbox-color-mode=light] .btn-cyan-400.dropdown-toggle{color:#000;background-color:#64ddf5;border-color:#50d9f4}.btn-check:checked+html .btn-cyan-400:focus,.btn-check:active+html .btn-cyan-400:focus,html .btn-cyan-400:active:focus,html .btn-cyan-400.active:focus,.show>html .btn-cyan-400.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-cyan-400:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-cyan-400:focus,html[data-netbox-color-mode=dark] .btn-cyan-400:active:focus,html[data-netbox-color-mode=dark] .btn-cyan-400.active:focus,.show>html[data-netbox-color-mode=dark] .btn-cyan-400.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-cyan-400:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-cyan-400:focus,html[data-netbox-color-mode=light] .btn-cyan-400:active:focus,html[data-netbox-color-mode=light] .btn-cyan-400.active:focus,.show>html[data-netbox-color-mode=light] .btn-cyan-400.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #34b5cf80}html .btn-cyan-400:disabled,html .btn-cyan-400.disabled,html[data-netbox-color-mode=dark] .btn-cyan-400:disabled,html[data-netbox-color-mode=dark] .btn-cyan-400.disabled,html[data-netbox-color-mode=light] .btn-cyan-400:disabled,html[data-netbox-color-mode=light] .btn-cyan-400.disabled{color:#000;background-color:#3dd5f3;border-color:#3dd5f3}}@media print{html .btn-cyan-500,html[data-netbox-color-mode=dark] .btn-cyan-500,html[data-netbox-color-mode=light] .btn-cyan-500{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}html .btn-cyan-500:hover,html[data-netbox-color-mode=dark] .btn-cyan-500:hover,html[data-netbox-color-mode=light] .btn-cyan-500:hover{color:#000;background-color:#31d2f2;border-color:#25cff2}.btn-check:focus+html .btn-cyan-500,html .btn-cyan-500:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-cyan-500,html[data-netbox-color-mode=dark] .btn-cyan-500:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-cyan-500,html[data-netbox-color-mode=light] .btn-cyan-500:focus{color:#000;background-color:#31d2f2;border-color:#25cff2;box-shadow:0 0 0 .25rem #0baccc80}.btn-check:checked+html .btn-cyan-500,.btn-check:active+html .btn-cyan-500,html .btn-cyan-500:active,html .btn-cyan-500.active,.show>html .btn-cyan-500.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-cyan-500,.btn-check:active+html[data-netbox-color-mode=dark] .btn-cyan-500,html[data-netbox-color-mode=dark] .btn-cyan-500:active,html[data-netbox-color-mode=dark] .btn-cyan-500.active,.show>html[data-netbox-color-mode=dark] .btn-cyan-500.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-cyan-500,.btn-check:active+html[data-netbox-color-mode=light] .btn-cyan-500,html[data-netbox-color-mode=light] .btn-cyan-500:active,html[data-netbox-color-mode=light] .btn-cyan-500.active,.show>html[data-netbox-color-mode=light] .btn-cyan-500.dropdown-toggle{color:#000;background-color:#3dd5f3;border-color:#25cff2}.btn-check:checked+html .btn-cyan-500:focus,.btn-check:active+html .btn-cyan-500:focus,html .btn-cyan-500:active:focus,html .btn-cyan-500.active:focus,.show>html .btn-cyan-500.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-cyan-500:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-cyan-500:focus,html[data-netbox-color-mode=dark] .btn-cyan-500:active:focus,html[data-netbox-color-mode=dark] .btn-cyan-500.active:focus,.show>html[data-netbox-color-mode=dark] .btn-cyan-500.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-cyan-500:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-cyan-500:focus,html[data-netbox-color-mode=light] .btn-cyan-500:active:focus,html[data-netbox-color-mode=light] .btn-cyan-500.active:focus,.show>html[data-netbox-color-mode=light] .btn-cyan-500.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #0baccc80}html .btn-cyan-500:disabled,html .btn-cyan-500.disabled,html[data-netbox-color-mode=dark] .btn-cyan-500:disabled,html[data-netbox-color-mode=dark] .btn-cyan-500.disabled,html[data-netbox-color-mode=light] .btn-cyan-500:disabled,html[data-netbox-color-mode=light] .btn-cyan-500.disabled{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}}@media print{html .btn-cyan-600,html[data-netbox-color-mode=dark] .btn-cyan-600,html[data-netbox-color-mode=light] .btn-cyan-600{color:#000;background-color:#0aa2c0;border-color:#0aa2c0}html .btn-cyan-600:hover,html[data-netbox-color-mode=dark] .btn-cyan-600:hover,html[data-netbox-color-mode=light] .btn-cyan-600:hover{color:#000;background-color:#2fb0c9;border-color:#23abc6}.btn-check:focus+html .btn-cyan-600,html .btn-cyan-600:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-cyan-600,html[data-netbox-color-mode=dark] .btn-cyan-600:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-cyan-600,html[data-netbox-color-mode=light] .btn-cyan-600:focus{color:#000;background-color:#2fb0c9;border-color:#23abc6;box-shadow:0 0 0 .25rem #098aa380}.btn-check:checked+html .btn-cyan-600,.btn-check:active+html .btn-cyan-600,html .btn-cyan-600:active,html .btn-cyan-600.active,.show>html .btn-cyan-600.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-cyan-600,.btn-check:active+html[data-netbox-color-mode=dark] .btn-cyan-600,html[data-netbox-color-mode=dark] .btn-cyan-600:active,html[data-netbox-color-mode=dark] .btn-cyan-600.active,.show>html[data-netbox-color-mode=dark] .btn-cyan-600.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-cyan-600,.btn-check:active+html[data-netbox-color-mode=light] .btn-cyan-600,html[data-netbox-color-mode=light] .btn-cyan-600:active,html[data-netbox-color-mode=light] .btn-cyan-600.active,.show>html[data-netbox-color-mode=light] .btn-cyan-600.dropdown-toggle{color:#000;background-color:#3bb5cd;border-color:#23abc6}.btn-check:checked+html .btn-cyan-600:focus,.btn-check:active+html .btn-cyan-600:focus,html .btn-cyan-600:active:focus,html .btn-cyan-600.active:focus,.show>html .btn-cyan-600.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-cyan-600:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-cyan-600:focus,html[data-netbox-color-mode=dark] .btn-cyan-600:active:focus,html[data-netbox-color-mode=dark] .btn-cyan-600.active:focus,.show>html[data-netbox-color-mode=dark] .btn-cyan-600.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-cyan-600:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-cyan-600:focus,html[data-netbox-color-mode=light] .btn-cyan-600:active:focus,html[data-netbox-color-mode=light] .btn-cyan-600.active:focus,.show>html[data-netbox-color-mode=light] .btn-cyan-600.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #098aa380}html .btn-cyan-600:disabled,html .btn-cyan-600.disabled,html[data-netbox-color-mode=dark] .btn-cyan-600:disabled,html[data-netbox-color-mode=dark] .btn-cyan-600.disabled,html[data-netbox-color-mode=light] .btn-cyan-600:disabled,html[data-netbox-color-mode=light] .btn-cyan-600.disabled{color:#000;background-color:#0aa2c0;border-color:#0aa2c0}}@media print{html .btn-cyan-700,html[data-netbox-color-mode=dark] .btn-cyan-700,html[data-netbox-color-mode=light] .btn-cyan-700{color:#fff;background-color:#087990;border-color:#087990}html .btn-cyan-700:hover,html[data-netbox-color-mode=dark] .btn-cyan-700:hover,html[data-netbox-color-mode=light] .btn-cyan-700:hover{color:#fff;background-color:#07677a;border-color:#066173}.btn-check:focus+html .btn-cyan-700,html .btn-cyan-700:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-cyan-700,html[data-netbox-color-mode=dark] .btn-cyan-700:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-cyan-700,html[data-netbox-color-mode=light] .btn-cyan-700:focus{color:#fff;background-color:#07677a;border-color:#066173;box-shadow:0 0 0 .25rem #2d8da180}.btn-check:checked+html .btn-cyan-700,.btn-check:active+html .btn-cyan-700,html .btn-cyan-700:active,html .btn-cyan-700.active,.show>html .btn-cyan-700.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-cyan-700,.btn-check:active+html[data-netbox-color-mode=dark] .btn-cyan-700,html[data-netbox-color-mode=dark] .btn-cyan-700:active,html[data-netbox-color-mode=dark] .btn-cyan-700.active,.show>html[data-netbox-color-mode=dark] .btn-cyan-700.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-cyan-700,.btn-check:active+html[data-netbox-color-mode=light] .btn-cyan-700,html[data-netbox-color-mode=light] .btn-cyan-700:active,html[data-netbox-color-mode=light] .btn-cyan-700.active,.show>html[data-netbox-color-mode=light] .btn-cyan-700.dropdown-toggle{color:#fff;background-color:#066173;border-color:#065b6c}.btn-check:checked+html .btn-cyan-700:focus,.btn-check:active+html .btn-cyan-700:focus,html .btn-cyan-700:active:focus,html .btn-cyan-700.active:focus,.show>html .btn-cyan-700.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-cyan-700:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-cyan-700:focus,html[data-netbox-color-mode=dark] .btn-cyan-700:active:focus,html[data-netbox-color-mode=dark] .btn-cyan-700.active:focus,.show>html[data-netbox-color-mode=dark] .btn-cyan-700.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-cyan-700:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-cyan-700:focus,html[data-netbox-color-mode=light] .btn-cyan-700:active:focus,html[data-netbox-color-mode=light] .btn-cyan-700.active:focus,.show>html[data-netbox-color-mode=light] .btn-cyan-700.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #2d8da180}html .btn-cyan-700:disabled,html .btn-cyan-700.disabled,html[data-netbox-color-mode=dark] .btn-cyan-700:disabled,html[data-netbox-color-mode=dark] .btn-cyan-700.disabled,html[data-netbox-color-mode=light] .btn-cyan-700:disabled,html[data-netbox-color-mode=light] .btn-cyan-700.disabled{color:#fff;background-color:#087990;border-color:#087990}}@media print{html .btn-cyan-800,html[data-netbox-color-mode=dark] .btn-cyan-800,html[data-netbox-color-mode=light] .btn-cyan-800{color:#fff;background-color:#055160;border-color:#055160}html .btn-cyan-800:hover,html[data-netbox-color-mode=dark] .btn-cyan-800:hover,html[data-netbox-color-mode=light] .btn-cyan-800:hover{color:#fff;background-color:#044552;border-color:#04414d}.btn-check:focus+html .btn-cyan-800,html .btn-cyan-800:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-cyan-800,html[data-netbox-color-mode=dark] .btn-cyan-800:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-cyan-800,html[data-netbox-color-mode=light] .btn-cyan-800:focus{color:#fff;background-color:#044552;border-color:#04414d;box-shadow:0 0 0 .25rem #2b6b7880}.btn-check:checked+html .btn-cyan-800,.btn-check:active+html .btn-cyan-800,html .btn-cyan-800:active,html .btn-cyan-800.active,.show>html .btn-cyan-800.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-cyan-800,.btn-check:active+html[data-netbox-color-mode=dark] .btn-cyan-800,html[data-netbox-color-mode=dark] .btn-cyan-800:active,html[data-netbox-color-mode=dark] .btn-cyan-800.active,.show>html[data-netbox-color-mode=dark] .btn-cyan-800.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-cyan-800,.btn-check:active+html[data-netbox-color-mode=light] .btn-cyan-800,html[data-netbox-color-mode=light] .btn-cyan-800:active,html[data-netbox-color-mode=light] .btn-cyan-800.active,.show>html[data-netbox-color-mode=light] .btn-cyan-800.dropdown-toggle{color:#fff;background-color:#04414d;border-color:#043d48}.btn-check:checked+html .btn-cyan-800:focus,.btn-check:active+html .btn-cyan-800:focus,html .btn-cyan-800:active:focus,html .btn-cyan-800.active:focus,.show>html .btn-cyan-800.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-cyan-800:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-cyan-800:focus,html[data-netbox-color-mode=dark] .btn-cyan-800:active:focus,html[data-netbox-color-mode=dark] .btn-cyan-800.active:focus,.show>html[data-netbox-color-mode=dark] .btn-cyan-800.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-cyan-800:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-cyan-800:focus,html[data-netbox-color-mode=light] .btn-cyan-800:active:focus,html[data-netbox-color-mode=light] .btn-cyan-800.active:focus,.show>html[data-netbox-color-mode=light] .btn-cyan-800.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #2b6b7880}html .btn-cyan-800:disabled,html .btn-cyan-800.disabled,html[data-netbox-color-mode=dark] .btn-cyan-800:disabled,html[data-netbox-color-mode=dark] .btn-cyan-800.disabled,html[data-netbox-color-mode=light] .btn-cyan-800:disabled,html[data-netbox-color-mode=light] .btn-cyan-800.disabled{color:#fff;background-color:#055160;border-color:#055160}}@media print{html .btn-cyan-900,html[data-netbox-color-mode=dark] .btn-cyan-900,html[data-netbox-color-mode=light] .btn-cyan-900{color:#fff;background-color:#032830;border-color:#032830}html .btn-cyan-900:hover,html[data-netbox-color-mode=dark] .btn-cyan-900:hover,html[data-netbox-color-mode=light] .btn-cyan-900:hover{color:#fff;background-color:#032229;border-color:#022026}.btn-check:focus+html .btn-cyan-900,html .btn-cyan-900:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-cyan-900,html[data-netbox-color-mode=dark] .btn-cyan-900:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-cyan-900,html[data-netbox-color-mode=light] .btn-cyan-900:focus{color:#fff;background-color:#032229;border-color:#022026;box-shadow:0 0 0 .25rem #29484f80}.btn-check:checked+html .btn-cyan-900,.btn-check:active+html .btn-cyan-900,html .btn-cyan-900:active,html .btn-cyan-900.active,.show>html .btn-cyan-900.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-cyan-900,.btn-check:active+html[data-netbox-color-mode=dark] .btn-cyan-900,html[data-netbox-color-mode=dark] .btn-cyan-900:active,html[data-netbox-color-mode=dark] .btn-cyan-900.active,.show>html[data-netbox-color-mode=dark] .btn-cyan-900.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-cyan-900,.btn-check:active+html[data-netbox-color-mode=light] .btn-cyan-900,html[data-netbox-color-mode=light] .btn-cyan-900:active,html[data-netbox-color-mode=light] .btn-cyan-900.active,.show>html[data-netbox-color-mode=light] .btn-cyan-900.dropdown-toggle{color:#fff;background-color:#022026;border-color:#021e24}.btn-check:checked+html .btn-cyan-900:focus,.btn-check:active+html .btn-cyan-900:focus,html .btn-cyan-900:active:focus,html .btn-cyan-900.active:focus,.show>html .btn-cyan-900.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-cyan-900:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-cyan-900:focus,html[data-netbox-color-mode=dark] .btn-cyan-900:active:focus,html[data-netbox-color-mode=dark] .btn-cyan-900.active:focus,.show>html[data-netbox-color-mode=dark] .btn-cyan-900.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-cyan-900:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-cyan-900:focus,html[data-netbox-color-mode=light] .btn-cyan-900:active:focus,html[data-netbox-color-mode=light] .btn-cyan-900.active:focus,.show>html[data-netbox-color-mode=light] .btn-cyan-900.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #29484f80}html .btn-cyan-900:disabled,html .btn-cyan-900.disabled,html[data-netbox-color-mode=dark] .btn-cyan-900:disabled,html[data-netbox-color-mode=dark] .btn-cyan-900.disabled,html[data-netbox-color-mode=light] .btn-cyan-900:disabled,html[data-netbox-color-mode=light] .btn-cyan-900.disabled{color:#fff;background-color:#032830;border-color:#032830}}@media print{html .btn-indigo-100,html[data-netbox-color-mode=dark] .btn-indigo-100,html[data-netbox-color-mode=light] .btn-indigo-100{color:#000;background-color:#e0cffc;border-color:#e0cffc}html .btn-indigo-100:hover,html[data-netbox-color-mode=dark] .btn-indigo-100:hover,html[data-netbox-color-mode=light] .btn-indigo-100:hover{color:#000;background-color:#e5d6fc;border-color:#e3d4fc}.btn-check:focus+html .btn-indigo-100,html .btn-indigo-100:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-indigo-100,html[data-netbox-color-mode=dark] .btn-indigo-100:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-indigo-100,html[data-netbox-color-mode=light] .btn-indigo-100:focus{color:#000;background-color:#e5d6fc;border-color:#e3d4fc;box-shadow:0 0 0 .25rem #beb0d680}.btn-check:checked+html .btn-indigo-100,.btn-check:active+html .btn-indigo-100,html .btn-indigo-100:active,html .btn-indigo-100.active,.show>html .btn-indigo-100.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-indigo-100,.btn-check:active+html[data-netbox-color-mode=dark] .btn-indigo-100,html[data-netbox-color-mode=dark] .btn-indigo-100:active,html[data-netbox-color-mode=dark] .btn-indigo-100.active,.show>html[data-netbox-color-mode=dark] .btn-indigo-100.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-indigo-100,.btn-check:active+html[data-netbox-color-mode=light] .btn-indigo-100,html[data-netbox-color-mode=light] .btn-indigo-100:active,html[data-netbox-color-mode=light] .btn-indigo-100.active,.show>html[data-netbox-color-mode=light] .btn-indigo-100.dropdown-toggle{color:#000;background-color:#e6d9fd;border-color:#e3d4fc}.btn-check:checked+html .btn-indigo-100:focus,.btn-check:active+html .btn-indigo-100:focus,html .btn-indigo-100:active:focus,html .btn-indigo-100.active:focus,.show>html .btn-indigo-100.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-indigo-100:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-indigo-100:focus,html[data-netbox-color-mode=dark] .btn-indigo-100:active:focus,html[data-netbox-color-mode=dark] .btn-indigo-100.active:focus,.show>html[data-netbox-color-mode=dark] .btn-indigo-100.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-indigo-100:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-indigo-100:focus,html[data-netbox-color-mode=light] .btn-indigo-100:active:focus,html[data-netbox-color-mode=light] .btn-indigo-100.active:focus,.show>html[data-netbox-color-mode=light] .btn-indigo-100.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #beb0d680}html .btn-indigo-100:disabled,html .btn-indigo-100.disabled,html[data-netbox-color-mode=dark] .btn-indigo-100:disabled,html[data-netbox-color-mode=dark] .btn-indigo-100.disabled,html[data-netbox-color-mode=light] .btn-indigo-100:disabled,html[data-netbox-color-mode=light] .btn-indigo-100.disabled{color:#000;background-color:#e0cffc;border-color:#e0cffc}}@media print{html .btn-indigo-200,html[data-netbox-color-mode=dark] .btn-indigo-200,html[data-netbox-color-mode=light] .btn-indigo-200{color:#000;background-color:#c29ffa;border-color:#c29ffa}html .btn-indigo-200:hover,html[data-netbox-color-mode=dark] .btn-indigo-200:hover,html[data-netbox-color-mode=light] .btn-indigo-200:hover{color:#000;background-color:#cbadfb;border-color:#c8a9fb}.btn-check:focus+html .btn-indigo-200,html .btn-indigo-200:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-indigo-200,html[data-netbox-color-mode=dark] .btn-indigo-200:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-indigo-200,html[data-netbox-color-mode=light] .btn-indigo-200:focus{color:#000;background-color:#cbadfb;border-color:#c8a9fb;box-shadow:0 0 0 .25rem #a587d580}.btn-check:checked+html .btn-indigo-200,.btn-check:active+html .btn-indigo-200,html .btn-indigo-200:active,html .btn-indigo-200.active,.show>html .btn-indigo-200.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-indigo-200,.btn-check:active+html[data-netbox-color-mode=dark] .btn-indigo-200,html[data-netbox-color-mode=dark] .btn-indigo-200:active,html[data-netbox-color-mode=dark] .btn-indigo-200.active,.show>html[data-netbox-color-mode=dark] .btn-indigo-200.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-indigo-200,.btn-check:active+html[data-netbox-color-mode=light] .btn-indigo-200,html[data-netbox-color-mode=light] .btn-indigo-200:active,html[data-netbox-color-mode=light] .btn-indigo-200.active,.show>html[data-netbox-color-mode=light] .btn-indigo-200.dropdown-toggle{color:#000;background-color:#ceb2fb;border-color:#c8a9fb}.btn-check:checked+html .btn-indigo-200:focus,.btn-check:active+html .btn-indigo-200:focus,html .btn-indigo-200:active:focus,html .btn-indigo-200.active:focus,.show>html .btn-indigo-200.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-indigo-200:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-indigo-200:focus,html[data-netbox-color-mode=dark] .btn-indigo-200:active:focus,html[data-netbox-color-mode=dark] .btn-indigo-200.active:focus,.show>html[data-netbox-color-mode=dark] .btn-indigo-200.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-indigo-200:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-indigo-200:focus,html[data-netbox-color-mode=light] .btn-indigo-200:active:focus,html[data-netbox-color-mode=light] .btn-indigo-200.active:focus,.show>html[data-netbox-color-mode=light] .btn-indigo-200.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #a587d580}html .btn-indigo-200:disabled,html .btn-indigo-200.disabled,html[data-netbox-color-mode=dark] .btn-indigo-200:disabled,html[data-netbox-color-mode=dark] .btn-indigo-200.disabled,html[data-netbox-color-mode=light] .btn-indigo-200:disabled,html[data-netbox-color-mode=light] .btn-indigo-200.disabled{color:#000;background-color:#c29ffa;border-color:#c29ffa}}@media print{html .btn-indigo-300,html[data-netbox-color-mode=dark] .btn-indigo-300,html[data-netbox-color-mode=light] .btn-indigo-300{color:#000;background-color:#a370f7;border-color:#a370f7}html .btn-indigo-300:hover,html[data-netbox-color-mode=dark] .btn-indigo-300:hover,html[data-netbox-color-mode=light] .btn-indigo-300:hover{color:#000;background-color:#b185f8;border-color:#ac7ef8}.btn-check:focus+html .btn-indigo-300,html .btn-indigo-300:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-indigo-300,html[data-netbox-color-mode=dark] .btn-indigo-300:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-indigo-300,html[data-netbox-color-mode=light] .btn-indigo-300:focus{color:#000;background-color:#b185f8;border-color:#ac7ef8;box-shadow:0 0 0 .25rem #8b5fd280}.btn-check:checked+html .btn-indigo-300,.btn-check:active+html .btn-indigo-300,html .btn-indigo-300:active,html .btn-indigo-300.active,.show>html .btn-indigo-300.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-indigo-300,.btn-check:active+html[data-netbox-color-mode=dark] .btn-indigo-300,html[data-netbox-color-mode=dark] .btn-indigo-300:active,html[data-netbox-color-mode=dark] .btn-indigo-300.active,.show>html[data-netbox-color-mode=dark] .btn-indigo-300.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-indigo-300,.btn-check:active+html[data-netbox-color-mode=light] .btn-indigo-300,html[data-netbox-color-mode=light] .btn-indigo-300:active,html[data-netbox-color-mode=light] .btn-indigo-300.active,.show>html[data-netbox-color-mode=light] .btn-indigo-300.dropdown-toggle{color:#000;background-color:#b58df9;border-color:#ac7ef8}.btn-check:checked+html .btn-indigo-300:focus,.btn-check:active+html .btn-indigo-300:focus,html .btn-indigo-300:active:focus,html .btn-indigo-300.active:focus,.show>html .btn-indigo-300.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-indigo-300:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-indigo-300:focus,html[data-netbox-color-mode=dark] .btn-indigo-300:active:focus,html[data-netbox-color-mode=dark] .btn-indigo-300.active:focus,.show>html[data-netbox-color-mode=dark] .btn-indigo-300.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-indigo-300:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-indigo-300:focus,html[data-netbox-color-mode=light] .btn-indigo-300:active:focus,html[data-netbox-color-mode=light] .btn-indigo-300.active:focus,.show>html[data-netbox-color-mode=light] .btn-indigo-300.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #8b5fd280}html .btn-indigo-300:disabled,html .btn-indigo-300.disabled,html[data-netbox-color-mode=dark] .btn-indigo-300:disabled,html[data-netbox-color-mode=dark] .btn-indigo-300.disabled,html[data-netbox-color-mode=light] .btn-indigo-300:disabled,html[data-netbox-color-mode=light] .btn-indigo-300.disabled{color:#000;background-color:#a370f7;border-color:#a370f7}}@media print{html .btn-indigo-400,html[data-netbox-color-mode=dark] .btn-indigo-400,html[data-netbox-color-mode=light] .btn-indigo-400{color:#fff;background-color:#8540f5;border-color:#8540f5}html .btn-indigo-400:hover,html[data-netbox-color-mode=dark] .btn-indigo-400:hover,html[data-netbox-color-mode=light] .btn-indigo-400:hover{color:#fff;background-color:#7136d0;border-color:#6a33c4}.btn-check:focus+html .btn-indigo-400,html .btn-indigo-400:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-indigo-400,html[data-netbox-color-mode=dark] .btn-indigo-400:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-indigo-400,html[data-netbox-color-mode=light] .btn-indigo-400:focus{color:#fff;background-color:#7136d0;border-color:#6a33c4;box-shadow:0 0 0 .25rem #975df780}.btn-check:checked+html .btn-indigo-400,.btn-check:active+html .btn-indigo-400,html .btn-indigo-400:active,html .btn-indigo-400.active,.show>html .btn-indigo-400.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-indigo-400,.btn-check:active+html[data-netbox-color-mode=dark] .btn-indigo-400,html[data-netbox-color-mode=dark] .btn-indigo-400:active,html[data-netbox-color-mode=dark] .btn-indigo-400.active,.show>html[data-netbox-color-mode=dark] .btn-indigo-400.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-indigo-400,.btn-check:active+html[data-netbox-color-mode=light] .btn-indigo-400,html[data-netbox-color-mode=light] .btn-indigo-400:active,html[data-netbox-color-mode=light] .btn-indigo-400.active,.show>html[data-netbox-color-mode=light] .btn-indigo-400.dropdown-toggle{color:#fff;background-color:#6a33c4;border-color:#6430b8}.btn-check:checked+html .btn-indigo-400:focus,.btn-check:active+html .btn-indigo-400:focus,html .btn-indigo-400:active:focus,html .btn-indigo-400.active:focus,.show>html .btn-indigo-400.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-indigo-400:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-indigo-400:focus,html[data-netbox-color-mode=dark] .btn-indigo-400:active:focus,html[data-netbox-color-mode=dark] .btn-indigo-400.active:focus,.show>html[data-netbox-color-mode=dark] .btn-indigo-400.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-indigo-400:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-indigo-400:focus,html[data-netbox-color-mode=light] .btn-indigo-400:active:focus,html[data-netbox-color-mode=light] .btn-indigo-400.active:focus,.show>html[data-netbox-color-mode=light] .btn-indigo-400.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #975df780}html .btn-indigo-400:disabled,html .btn-indigo-400.disabled,html[data-netbox-color-mode=dark] .btn-indigo-400:disabled,html[data-netbox-color-mode=dark] .btn-indigo-400.disabled,html[data-netbox-color-mode=light] .btn-indigo-400:disabled,html[data-netbox-color-mode=light] .btn-indigo-400.disabled{color:#fff;background-color:#8540f5;border-color:#8540f5}}@media print{html .btn-indigo-500,html[data-netbox-color-mode=dark] .btn-indigo-500,html[data-netbox-color-mode=light] .btn-indigo-500{color:#fff;background-color:#6610f2;border-color:#6610f2}html .btn-indigo-500:hover,html[data-netbox-color-mode=dark] .btn-indigo-500:hover,html[data-netbox-color-mode=light] .btn-indigo-500:hover{color:#fff;background-color:#570ece;border-color:#520dc2}.btn-check:focus+html .btn-indigo-500,html .btn-indigo-500:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-indigo-500,html[data-netbox-color-mode=dark] .btn-indigo-500:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-indigo-500,html[data-netbox-color-mode=light] .btn-indigo-500:focus{color:#fff;background-color:#570ece;border-color:#520dc2;box-shadow:0 0 0 .25rem #7d34f480}.btn-check:checked+html .btn-indigo-500,.btn-check:active+html .btn-indigo-500,html .btn-indigo-500:active,html .btn-indigo-500.active,.show>html .btn-indigo-500.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-indigo-500,.btn-check:active+html[data-netbox-color-mode=dark] .btn-indigo-500,html[data-netbox-color-mode=dark] .btn-indigo-500:active,html[data-netbox-color-mode=dark] .btn-indigo-500.active,.show>html[data-netbox-color-mode=dark] .btn-indigo-500.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-indigo-500,.btn-check:active+html[data-netbox-color-mode=light] .btn-indigo-500,html[data-netbox-color-mode=light] .btn-indigo-500:active,html[data-netbox-color-mode=light] .btn-indigo-500.active,.show>html[data-netbox-color-mode=light] .btn-indigo-500.dropdown-toggle{color:#fff;background-color:#520dc2;border-color:#4d0cb6}.btn-check:checked+html .btn-indigo-500:focus,.btn-check:active+html .btn-indigo-500:focus,html .btn-indigo-500:active:focus,html .btn-indigo-500.active:focus,.show>html .btn-indigo-500.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-indigo-500:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-indigo-500:focus,html[data-netbox-color-mode=dark] .btn-indigo-500:active:focus,html[data-netbox-color-mode=dark] .btn-indigo-500.active:focus,.show>html[data-netbox-color-mode=dark] .btn-indigo-500.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-indigo-500:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-indigo-500:focus,html[data-netbox-color-mode=light] .btn-indigo-500:active:focus,html[data-netbox-color-mode=light] .btn-indigo-500.active:focus,.show>html[data-netbox-color-mode=light] .btn-indigo-500.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #7d34f480}html .btn-indigo-500:disabled,html .btn-indigo-500.disabled,html[data-netbox-color-mode=dark] .btn-indigo-500:disabled,html[data-netbox-color-mode=dark] .btn-indigo-500.disabled,html[data-netbox-color-mode=light] .btn-indigo-500:disabled,html[data-netbox-color-mode=light] .btn-indigo-500.disabled{color:#fff;background-color:#6610f2;border-color:#6610f2}}@media print{html .btn-indigo-600,html[data-netbox-color-mode=dark] .btn-indigo-600,html[data-netbox-color-mode=light] .btn-indigo-600{color:#fff;background-color:#520dc2;border-color:#520dc2}html .btn-indigo-600:hover,html[data-netbox-color-mode=dark] .btn-indigo-600:hover,html[data-netbox-color-mode=light] .btn-indigo-600:hover{color:#fff;background-color:#460ba5;border-color:#420a9b}.btn-check:focus+html .btn-indigo-600,html .btn-indigo-600:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-indigo-600,html[data-netbox-color-mode=dark] .btn-indigo-600:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-indigo-600,html[data-netbox-color-mode=light] .btn-indigo-600:focus{color:#fff;background-color:#460ba5;border-color:#420a9b;box-shadow:0 0 0 .25rem #6c31cb80}.btn-check:checked+html .btn-indigo-600,.btn-check:active+html .btn-indigo-600,html .btn-indigo-600:active,html .btn-indigo-600.active,.show>html .btn-indigo-600.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-indigo-600,.btn-check:active+html[data-netbox-color-mode=dark] .btn-indigo-600,html[data-netbox-color-mode=dark] .btn-indigo-600:active,html[data-netbox-color-mode=dark] .btn-indigo-600.active,.show>html[data-netbox-color-mode=dark] .btn-indigo-600.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-indigo-600,.btn-check:active+html[data-netbox-color-mode=light] .btn-indigo-600,html[data-netbox-color-mode=light] .btn-indigo-600:active,html[data-netbox-color-mode=light] .btn-indigo-600.active,.show>html[data-netbox-color-mode=light] .btn-indigo-600.dropdown-toggle{color:#fff;background-color:#420a9b;border-color:#3e0a92}.btn-check:checked+html .btn-indigo-600:focus,.btn-check:active+html .btn-indigo-600:focus,html .btn-indigo-600:active:focus,html .btn-indigo-600.active:focus,.show>html .btn-indigo-600.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-indigo-600:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-indigo-600:focus,html[data-netbox-color-mode=dark] .btn-indigo-600:active:focus,html[data-netbox-color-mode=dark] .btn-indigo-600.active:focus,.show>html[data-netbox-color-mode=dark] .btn-indigo-600.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-indigo-600:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-indigo-600:focus,html[data-netbox-color-mode=light] .btn-indigo-600:active:focus,html[data-netbox-color-mode=light] .btn-indigo-600.active:focus,.show>html[data-netbox-color-mode=light] .btn-indigo-600.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #6c31cb80}html .btn-indigo-600:disabled,html .btn-indigo-600.disabled,html[data-netbox-color-mode=dark] .btn-indigo-600:disabled,html[data-netbox-color-mode=dark] .btn-indigo-600.disabled,html[data-netbox-color-mode=light] .btn-indigo-600:disabled,html[data-netbox-color-mode=light] .btn-indigo-600.disabled{color:#fff;background-color:#520dc2;border-color:#520dc2}}@media print{html .btn-indigo-700,html[data-netbox-color-mode=dark] .btn-indigo-700,html[data-netbox-color-mode=light] .btn-indigo-700{color:#fff;background-color:#3d0a91;border-color:#3d0a91}html .btn-indigo-700:hover,html[data-netbox-color-mode=dark] .btn-indigo-700:hover,html[data-netbox-color-mode=light] .btn-indigo-700:hover{color:#fff;background-color:#34097b;border-color:#310874}.btn-check:focus+html .btn-indigo-700,html .btn-indigo-700:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-indigo-700,html[data-netbox-color-mode=dark] .btn-indigo-700:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-indigo-700,html[data-netbox-color-mode=light] .btn-indigo-700:focus{color:#fff;background-color:#34097b;border-color:#310874;box-shadow:0 0 0 .25rem #5a2fa280}.btn-check:checked+html .btn-indigo-700,.btn-check:active+html .btn-indigo-700,html .btn-indigo-700:active,html .btn-indigo-700.active,.show>html .btn-indigo-700.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-indigo-700,.btn-check:active+html[data-netbox-color-mode=dark] .btn-indigo-700,html[data-netbox-color-mode=dark] .btn-indigo-700:active,html[data-netbox-color-mode=dark] .btn-indigo-700.active,.show>html[data-netbox-color-mode=dark] .btn-indigo-700.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-indigo-700,.btn-check:active+html[data-netbox-color-mode=light] .btn-indigo-700,html[data-netbox-color-mode=light] .btn-indigo-700:active,html[data-netbox-color-mode=light] .btn-indigo-700.active,.show>html[data-netbox-color-mode=light] .btn-indigo-700.dropdown-toggle{color:#fff;background-color:#310874;border-color:#2e086d}.btn-check:checked+html .btn-indigo-700:focus,.btn-check:active+html .btn-indigo-700:focus,html .btn-indigo-700:active:focus,html .btn-indigo-700.active:focus,.show>html .btn-indigo-700.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-indigo-700:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-indigo-700:focus,html[data-netbox-color-mode=dark] .btn-indigo-700:active:focus,html[data-netbox-color-mode=dark] .btn-indigo-700.active:focus,.show>html[data-netbox-color-mode=dark] .btn-indigo-700.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-indigo-700:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-indigo-700:focus,html[data-netbox-color-mode=light] .btn-indigo-700:active:focus,html[data-netbox-color-mode=light] .btn-indigo-700.active:focus,.show>html[data-netbox-color-mode=light] .btn-indigo-700.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #5a2fa280}html .btn-indigo-700:disabled,html .btn-indigo-700.disabled,html[data-netbox-color-mode=dark] .btn-indigo-700:disabled,html[data-netbox-color-mode=dark] .btn-indigo-700.disabled,html[data-netbox-color-mode=light] .btn-indigo-700:disabled,html[data-netbox-color-mode=light] .btn-indigo-700.disabled{color:#fff;background-color:#3d0a91;border-color:#3d0a91}}@media print{html .btn-indigo-800,html[data-netbox-color-mode=dark] .btn-indigo-800,html[data-netbox-color-mode=light] .btn-indigo-800{color:#fff;background-color:#290661;border-color:#290661}html .btn-indigo-800:hover,html[data-netbox-color-mode=dark] .btn-indigo-800:hover,html[data-netbox-color-mode=light] .btn-indigo-800:hover{color:#fff;background-color:#230552;border-color:#21054e}.btn-check:focus+html .btn-indigo-800,html .btn-indigo-800:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-indigo-800,html[data-netbox-color-mode=dark] .btn-indigo-800:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-indigo-800,html[data-netbox-color-mode=light] .btn-indigo-800:focus{color:#fff;background-color:#230552;border-color:#21054e;box-shadow:0 0 0 .25rem #492b7980}.btn-check:checked+html .btn-indigo-800,.btn-check:active+html .btn-indigo-800,html .btn-indigo-800:active,html .btn-indigo-800.active,.show>html .btn-indigo-800.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-indigo-800,.btn-check:active+html[data-netbox-color-mode=dark] .btn-indigo-800,html[data-netbox-color-mode=dark] .btn-indigo-800:active,html[data-netbox-color-mode=dark] .btn-indigo-800.active,.show>html[data-netbox-color-mode=dark] .btn-indigo-800.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-indigo-800,.btn-check:active+html[data-netbox-color-mode=light] .btn-indigo-800,html[data-netbox-color-mode=light] .btn-indigo-800:active,html[data-netbox-color-mode=light] .btn-indigo-800.active,.show>html[data-netbox-color-mode=light] .btn-indigo-800.dropdown-toggle{color:#fff;background-color:#21054e;border-color:#1f0549}.btn-check:checked+html .btn-indigo-800:focus,.btn-check:active+html .btn-indigo-800:focus,html .btn-indigo-800:active:focus,html .btn-indigo-800.active:focus,.show>html .btn-indigo-800.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-indigo-800:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-indigo-800:focus,html[data-netbox-color-mode=dark] .btn-indigo-800:active:focus,html[data-netbox-color-mode=dark] .btn-indigo-800.active:focus,.show>html[data-netbox-color-mode=dark] .btn-indigo-800.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-indigo-800:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-indigo-800:focus,html[data-netbox-color-mode=light] .btn-indigo-800:active:focus,html[data-netbox-color-mode=light] .btn-indigo-800.active:focus,.show>html[data-netbox-color-mode=light] .btn-indigo-800.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #492b7980}html .btn-indigo-800:disabled,html .btn-indigo-800.disabled,html[data-netbox-color-mode=dark] .btn-indigo-800:disabled,html[data-netbox-color-mode=dark] .btn-indigo-800.disabled,html[data-netbox-color-mode=light] .btn-indigo-800:disabled,html[data-netbox-color-mode=light] .btn-indigo-800.disabled{color:#fff;background-color:#290661;border-color:#290661}}@media print{html .btn-indigo-900,html[data-netbox-color-mode=dark] .btn-indigo-900,html[data-netbox-color-mode=light] .btn-indigo-900{color:#fff;background-color:#140330;border-color:#140330}html .btn-indigo-900:hover,html[data-netbox-color-mode=dark] .btn-indigo-900:hover,html[data-netbox-color-mode=light] .btn-indigo-900:hover{color:#fff;background-color:#110329;border-color:#100226}.btn-check:focus+html .btn-indigo-900,html .btn-indigo-900:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-indigo-900,html[data-netbox-color-mode=dark] .btn-indigo-900:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-indigo-900,html[data-netbox-color-mode=light] .btn-indigo-900:focus{color:#fff;background-color:#110329;border-color:#100226;box-shadow:0 0 0 .25rem #37294f80}.btn-check:checked+html .btn-indigo-900,.btn-check:active+html .btn-indigo-900,html .btn-indigo-900:active,html .btn-indigo-900.active,.show>html .btn-indigo-900.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-indigo-900,.btn-check:active+html[data-netbox-color-mode=dark] .btn-indigo-900,html[data-netbox-color-mode=dark] .btn-indigo-900:active,html[data-netbox-color-mode=dark] .btn-indigo-900.active,.show>html[data-netbox-color-mode=dark] .btn-indigo-900.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-indigo-900,.btn-check:active+html[data-netbox-color-mode=light] .btn-indigo-900,html[data-netbox-color-mode=light] .btn-indigo-900:active,html[data-netbox-color-mode=light] .btn-indigo-900.active,.show>html[data-netbox-color-mode=light] .btn-indigo-900.dropdown-toggle{color:#fff;background-color:#100226;border-color:#0f0224}.btn-check:checked+html .btn-indigo-900:focus,.btn-check:active+html .btn-indigo-900:focus,html .btn-indigo-900:active:focus,html .btn-indigo-900.active:focus,.show>html .btn-indigo-900.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-indigo-900:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-indigo-900:focus,html[data-netbox-color-mode=dark] .btn-indigo-900:active:focus,html[data-netbox-color-mode=dark] .btn-indigo-900.active:focus,.show>html[data-netbox-color-mode=dark] .btn-indigo-900.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-indigo-900:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-indigo-900:focus,html[data-netbox-color-mode=light] .btn-indigo-900:active:focus,html[data-netbox-color-mode=light] .btn-indigo-900.active:focus,.show>html[data-netbox-color-mode=light] .btn-indigo-900.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #37294f80}html .btn-indigo-900:disabled,html .btn-indigo-900.disabled,html[data-netbox-color-mode=dark] .btn-indigo-900:disabled,html[data-netbox-color-mode=dark] .btn-indigo-900.disabled,html[data-netbox-color-mode=light] .btn-indigo-900:disabled,html[data-netbox-color-mode=light] .btn-indigo-900.disabled{color:#fff;background-color:#140330;border-color:#140330}}@media print{html .btn-purple-100,html[data-netbox-color-mode=dark] .btn-purple-100,html[data-netbox-color-mode=light] .btn-purple-100{color:#000;background-color:#e2d9f3;border-color:#e2d9f3}html .btn-purple-100:hover,html[data-netbox-color-mode=dark] .btn-purple-100:hover,html[data-netbox-color-mode=light] .btn-purple-100:hover{color:#000;background-color:#e6dff5;border-color:#e5ddf4}.btn-check:focus+html .btn-purple-100,html .btn-purple-100:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-purple-100,html[data-netbox-color-mode=dark] .btn-purple-100:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-purple-100,html[data-netbox-color-mode=light] .btn-purple-100:focus{color:#000;background-color:#e6dff5;border-color:#e5ddf4;box-shadow:0 0 0 .25rem #c0b8cf80}.btn-check:checked+html .btn-purple-100,.btn-check:active+html .btn-purple-100,html .btn-purple-100:active,html .btn-purple-100.active,.show>html .btn-purple-100.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-purple-100,.btn-check:active+html[data-netbox-color-mode=dark] .btn-purple-100,html[data-netbox-color-mode=dark] .btn-purple-100:active,html[data-netbox-color-mode=dark] .btn-purple-100.active,.show>html[data-netbox-color-mode=dark] .btn-purple-100.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-purple-100,.btn-check:active+html[data-netbox-color-mode=light] .btn-purple-100,html[data-netbox-color-mode=light] .btn-purple-100:active,html[data-netbox-color-mode=light] .btn-purple-100.active,.show>html[data-netbox-color-mode=light] .btn-purple-100.dropdown-toggle{color:#000;background-color:#e8e1f5;border-color:#e5ddf4}.btn-check:checked+html .btn-purple-100:focus,.btn-check:active+html .btn-purple-100:focus,html .btn-purple-100:active:focus,html .btn-purple-100.active:focus,.show>html .btn-purple-100.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-purple-100:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-purple-100:focus,html[data-netbox-color-mode=dark] .btn-purple-100:active:focus,html[data-netbox-color-mode=dark] .btn-purple-100.active:focus,.show>html[data-netbox-color-mode=dark] .btn-purple-100.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-purple-100:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-purple-100:focus,html[data-netbox-color-mode=light] .btn-purple-100:active:focus,html[data-netbox-color-mode=light] .btn-purple-100.active:focus,.show>html[data-netbox-color-mode=light] .btn-purple-100.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #c0b8cf80}html .btn-purple-100:disabled,html .btn-purple-100.disabled,html[data-netbox-color-mode=dark] .btn-purple-100:disabled,html[data-netbox-color-mode=dark] .btn-purple-100.disabled,html[data-netbox-color-mode=light] .btn-purple-100:disabled,html[data-netbox-color-mode=light] .btn-purple-100.disabled{color:#000;background-color:#e2d9f3;border-color:#e2d9f3}}@media print{html .btn-purple-200,html[data-netbox-color-mode=dark] .btn-purple-200,html[data-netbox-color-mode=light] .btn-purple-200{color:#000;background-color:#c5b3e6;border-color:#c5b3e6}html .btn-purple-200:hover,html[data-netbox-color-mode=dark] .btn-purple-200:hover,html[data-netbox-color-mode=light] .btn-purple-200:hover{color:#000;background-color:#cebeea;border-color:#cbbbe9}.btn-check:focus+html .btn-purple-200,html .btn-purple-200:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-purple-200,html[data-netbox-color-mode=dark] .btn-purple-200:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-purple-200,html[data-netbox-color-mode=light] .btn-purple-200:focus{color:#000;background-color:#cebeea;border-color:#cbbbe9;box-shadow:0 0 0 .25rem #a798c480}.btn-check:checked+html .btn-purple-200,.btn-check:active+html .btn-purple-200,html .btn-purple-200:active,html .btn-purple-200.active,.show>html .btn-purple-200.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-purple-200,.btn-check:active+html[data-netbox-color-mode=dark] .btn-purple-200,html[data-netbox-color-mode=dark] .btn-purple-200:active,html[data-netbox-color-mode=dark] .btn-purple-200.active,.show>html[data-netbox-color-mode=dark] .btn-purple-200.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-purple-200,.btn-check:active+html[data-netbox-color-mode=light] .btn-purple-200,html[data-netbox-color-mode=light] .btn-purple-200:active,html[data-netbox-color-mode=light] .btn-purple-200.active,.show>html[data-netbox-color-mode=light] .btn-purple-200.dropdown-toggle{color:#000;background-color:#d1c2eb;border-color:#cbbbe9}.btn-check:checked+html .btn-purple-200:focus,.btn-check:active+html .btn-purple-200:focus,html .btn-purple-200:active:focus,html .btn-purple-200.active:focus,.show>html .btn-purple-200.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-purple-200:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-purple-200:focus,html[data-netbox-color-mode=dark] .btn-purple-200:active:focus,html[data-netbox-color-mode=dark] .btn-purple-200.active:focus,.show>html[data-netbox-color-mode=dark] .btn-purple-200.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-purple-200:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-purple-200:focus,html[data-netbox-color-mode=light] .btn-purple-200:active:focus,html[data-netbox-color-mode=light] .btn-purple-200.active:focus,.show>html[data-netbox-color-mode=light] .btn-purple-200.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #a798c480}html .btn-purple-200:disabled,html .btn-purple-200.disabled,html[data-netbox-color-mode=dark] .btn-purple-200:disabled,html[data-netbox-color-mode=dark] .btn-purple-200.disabled,html[data-netbox-color-mode=light] .btn-purple-200:disabled,html[data-netbox-color-mode=light] .btn-purple-200.disabled{color:#000;background-color:#c5b3e6;border-color:#c5b3e6}}@media print{html .btn-purple-300,html[data-netbox-color-mode=dark] .btn-purple-300,html[data-netbox-color-mode=light] .btn-purple-300{color:#000;background-color:#a98eda;border-color:#a98eda}html .btn-purple-300:hover,html[data-netbox-color-mode=dark] .btn-purple-300:hover,html[data-netbox-color-mode=light] .btn-purple-300:hover{color:#000;background-color:#b69fe0;border-color:#b299de}.btn-check:focus+html .btn-purple-300,html .btn-purple-300:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-purple-300,html[data-netbox-color-mode=dark] .btn-purple-300:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-purple-300,html[data-netbox-color-mode=light] .btn-purple-300:focus{color:#000;background-color:#b69fe0;border-color:#b299de;box-shadow:0 0 0 .25rem #9079b980}.btn-check:checked+html .btn-purple-300,.btn-check:active+html .btn-purple-300,html .btn-purple-300:active,html .btn-purple-300.active,.show>html .btn-purple-300.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-purple-300,.btn-check:active+html[data-netbox-color-mode=dark] .btn-purple-300,html[data-netbox-color-mode=dark] .btn-purple-300:active,html[data-netbox-color-mode=dark] .btn-purple-300.active,.show>html[data-netbox-color-mode=dark] .btn-purple-300.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-purple-300,.btn-check:active+html[data-netbox-color-mode=light] .btn-purple-300,html[data-netbox-color-mode=light] .btn-purple-300:active,html[data-netbox-color-mode=light] .btn-purple-300.active,.show>html[data-netbox-color-mode=light] .btn-purple-300.dropdown-toggle{color:#000;background-color:#baa5e1;border-color:#b299de}.btn-check:checked+html .btn-purple-300:focus,.btn-check:active+html .btn-purple-300:focus,html .btn-purple-300:active:focus,html .btn-purple-300.active:focus,.show>html .btn-purple-300.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-purple-300:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-purple-300:focus,html[data-netbox-color-mode=dark] .btn-purple-300:active:focus,html[data-netbox-color-mode=dark] .btn-purple-300.active:focus,.show>html[data-netbox-color-mode=dark] .btn-purple-300.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-purple-300:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-purple-300:focus,html[data-netbox-color-mode=light] .btn-purple-300:active:focus,html[data-netbox-color-mode=light] .btn-purple-300.active:focus,.show>html[data-netbox-color-mode=light] .btn-purple-300.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #9079b980}html .btn-purple-300:disabled,html .btn-purple-300.disabled,html[data-netbox-color-mode=dark] .btn-purple-300:disabled,html[data-netbox-color-mode=dark] .btn-purple-300.disabled,html[data-netbox-color-mode=light] .btn-purple-300:disabled,html[data-netbox-color-mode=light] .btn-purple-300.disabled{color:#000;background-color:#a98eda;border-color:#a98eda}}@media print{html .btn-purple-400,html[data-netbox-color-mode=dark] .btn-purple-400,html[data-netbox-color-mode=light] .btn-purple-400{color:#000;background-color:#8c68cd;border-color:#8c68cd}html .btn-purple-400:hover,html[data-netbox-color-mode=dark] .btn-purple-400:hover,html[data-netbox-color-mode=light] .btn-purple-400:hover{color:#000;background-color:#9d7fd5;border-color:#9877d2}.btn-check:focus+html .btn-purple-400,html .btn-purple-400:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-purple-400,html[data-netbox-color-mode=dark] .btn-purple-400:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-purple-400,html[data-netbox-color-mode=light] .btn-purple-400:focus{color:#000;background-color:#9d7fd5;border-color:#9877d2;box-shadow:0 0 0 .25rem #7758ae80}.btn-check:checked+html .btn-purple-400,.btn-check:active+html .btn-purple-400,html .btn-purple-400:active,html .btn-purple-400.active,.show>html .btn-purple-400.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-purple-400,.btn-check:active+html[data-netbox-color-mode=dark] .btn-purple-400,html[data-netbox-color-mode=dark] .btn-purple-400:active,html[data-netbox-color-mode=dark] .btn-purple-400.active,.show>html[data-netbox-color-mode=dark] .btn-purple-400.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-purple-400,.btn-check:active+html[data-netbox-color-mode=light] .btn-purple-400,html[data-netbox-color-mode=light] .btn-purple-400:active,html[data-netbox-color-mode=light] .btn-purple-400.active,.show>html[data-netbox-color-mode=light] .btn-purple-400.dropdown-toggle{color:#000;background-color:#a386d7;border-color:#9877d2}.btn-check:checked+html .btn-purple-400:focus,.btn-check:active+html .btn-purple-400:focus,html .btn-purple-400:active:focus,html .btn-purple-400.active:focus,.show>html .btn-purple-400.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-purple-400:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-purple-400:focus,html[data-netbox-color-mode=dark] .btn-purple-400:active:focus,html[data-netbox-color-mode=dark] .btn-purple-400.active:focus,.show>html[data-netbox-color-mode=dark] .btn-purple-400.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-purple-400:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-purple-400:focus,html[data-netbox-color-mode=light] .btn-purple-400:active:focus,html[data-netbox-color-mode=light] .btn-purple-400.active:focus,.show>html[data-netbox-color-mode=light] .btn-purple-400.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #7758ae80}html .btn-purple-400:disabled,html .btn-purple-400.disabled,html[data-netbox-color-mode=dark] .btn-purple-400:disabled,html[data-netbox-color-mode=dark] .btn-purple-400.disabled,html[data-netbox-color-mode=light] .btn-purple-400:disabled,html[data-netbox-color-mode=light] .btn-purple-400.disabled{color:#000;background-color:#8c68cd;border-color:#8c68cd}}@media print{html .btn-purple-500,html[data-netbox-color-mode=dark] .btn-purple-500,html[data-netbox-color-mode=light] .btn-purple-500{color:#fff;background-color:#6f42c1;border-color:#6f42c1}html .btn-purple-500:hover,html[data-netbox-color-mode=dark] .btn-purple-500:hover,html[data-netbox-color-mode=light] .btn-purple-500:hover{color:#fff;background-color:#5e38a4;border-color:#59359a}.btn-check:focus+html .btn-purple-500,html .btn-purple-500:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-purple-500,html[data-netbox-color-mode=dark] .btn-purple-500:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-purple-500,html[data-netbox-color-mode=light] .btn-purple-500:focus{color:#fff;background-color:#5e38a4;border-color:#59359a;box-shadow:0 0 0 .25rem #855eca80}.btn-check:checked+html .btn-purple-500,.btn-check:active+html .btn-purple-500,html .btn-purple-500:active,html .btn-purple-500.active,.show>html .btn-purple-500.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-purple-500,.btn-check:active+html[data-netbox-color-mode=dark] .btn-purple-500,html[data-netbox-color-mode=dark] .btn-purple-500:active,html[data-netbox-color-mode=dark] .btn-purple-500.active,.show>html[data-netbox-color-mode=dark] .btn-purple-500.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-purple-500,.btn-check:active+html[data-netbox-color-mode=light] .btn-purple-500,html[data-netbox-color-mode=light] .btn-purple-500:active,html[data-netbox-color-mode=light] .btn-purple-500.active,.show>html[data-netbox-color-mode=light] .btn-purple-500.dropdown-toggle{color:#fff;background-color:#59359a;border-color:#533291}.btn-check:checked+html .btn-purple-500:focus,.btn-check:active+html .btn-purple-500:focus,html .btn-purple-500:active:focus,html .btn-purple-500.active:focus,.show>html .btn-purple-500.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-purple-500:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-purple-500:focus,html[data-netbox-color-mode=dark] .btn-purple-500:active:focus,html[data-netbox-color-mode=dark] .btn-purple-500.active:focus,.show>html[data-netbox-color-mode=dark] .btn-purple-500.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-purple-500:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-purple-500:focus,html[data-netbox-color-mode=light] .btn-purple-500:active:focus,html[data-netbox-color-mode=light] .btn-purple-500.active:focus,.show>html[data-netbox-color-mode=light] .btn-purple-500.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #855eca80}html .btn-purple-500:disabled,html .btn-purple-500.disabled,html[data-netbox-color-mode=dark] .btn-purple-500:disabled,html[data-netbox-color-mode=dark] .btn-purple-500.disabled,html[data-netbox-color-mode=light] .btn-purple-500:disabled,html[data-netbox-color-mode=light] .btn-purple-500.disabled{color:#fff;background-color:#6f42c1;border-color:#6f42c1}}@media print{html .btn-purple-600,html[data-netbox-color-mode=dark] .btn-purple-600,html[data-netbox-color-mode=light] .btn-purple-600{color:#fff;background-color:#59359a;border-color:#59359a}html .btn-purple-600:hover,html[data-netbox-color-mode=dark] .btn-purple-600:hover,html[data-netbox-color-mode=light] .btn-purple-600:hover{color:#fff;background-color:#4c2d83;border-color:#472a7b}.btn-check:focus+html .btn-purple-600,html .btn-purple-600:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-purple-600,html[data-netbox-color-mode=dark] .btn-purple-600:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-purple-600,html[data-netbox-color-mode=light] .btn-purple-600:focus{color:#fff;background-color:#4c2d83;border-color:#472a7b;box-shadow:0 0 0 .25rem #7253a980}.btn-check:checked+html .btn-purple-600,.btn-check:active+html .btn-purple-600,html .btn-purple-600:active,html .btn-purple-600.active,.show>html .btn-purple-600.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-purple-600,.btn-check:active+html[data-netbox-color-mode=dark] .btn-purple-600,html[data-netbox-color-mode=dark] .btn-purple-600:active,html[data-netbox-color-mode=dark] .btn-purple-600.active,.show>html[data-netbox-color-mode=dark] .btn-purple-600.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-purple-600,.btn-check:active+html[data-netbox-color-mode=light] .btn-purple-600,html[data-netbox-color-mode=light] .btn-purple-600:active,html[data-netbox-color-mode=light] .btn-purple-600.active,.show>html[data-netbox-color-mode=light] .btn-purple-600.dropdown-toggle{color:#fff;background-color:#472a7b;border-color:#432874}.btn-check:checked+html .btn-purple-600:focus,.btn-check:active+html .btn-purple-600:focus,html .btn-purple-600:active:focus,html .btn-purple-600.active:focus,.show>html .btn-purple-600.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-purple-600:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-purple-600:focus,html[data-netbox-color-mode=dark] .btn-purple-600:active:focus,html[data-netbox-color-mode=dark] .btn-purple-600.active:focus,.show>html[data-netbox-color-mode=dark] .btn-purple-600.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-purple-600:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-purple-600:focus,html[data-netbox-color-mode=light] .btn-purple-600:active:focus,html[data-netbox-color-mode=light] .btn-purple-600.active:focus,.show>html[data-netbox-color-mode=light] .btn-purple-600.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #7253a980}html .btn-purple-600:disabled,html .btn-purple-600.disabled,html[data-netbox-color-mode=dark] .btn-purple-600:disabled,html[data-netbox-color-mode=dark] .btn-purple-600.disabled,html[data-netbox-color-mode=light] .btn-purple-600:disabled,html[data-netbox-color-mode=light] .btn-purple-600.disabled{color:#fff;background-color:#59359a;border-color:#59359a}}@media print{html .btn-purple-700,html[data-netbox-color-mode=dark] .btn-purple-700,html[data-netbox-color-mode=light] .btn-purple-700{color:#fff;background-color:#432874;border-color:#432874}html .btn-purple-700:hover,html[data-netbox-color-mode=dark] .btn-purple-700:hover,html[data-netbox-color-mode=light] .btn-purple-700:hover{color:#fff;background-color:#392263;border-color:#36205d}.btn-check:focus+html .btn-purple-700,html .btn-purple-700:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-purple-700,html[data-netbox-color-mode=dark] .btn-purple-700:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-purple-700,html[data-netbox-color-mode=light] .btn-purple-700:focus{color:#fff;background-color:#392263;border-color:#36205d;box-shadow:0 0 0 .25rem #5f488980}.btn-check:checked+html .btn-purple-700,.btn-check:active+html .btn-purple-700,html .btn-purple-700:active,html .btn-purple-700.active,.show>html .btn-purple-700.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-purple-700,.btn-check:active+html[data-netbox-color-mode=dark] .btn-purple-700,html[data-netbox-color-mode=dark] .btn-purple-700:active,html[data-netbox-color-mode=dark] .btn-purple-700.active,.show>html[data-netbox-color-mode=dark] .btn-purple-700.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-purple-700,.btn-check:active+html[data-netbox-color-mode=light] .btn-purple-700,html[data-netbox-color-mode=light] .btn-purple-700:active,html[data-netbox-color-mode=light] .btn-purple-700.active,.show>html[data-netbox-color-mode=light] .btn-purple-700.dropdown-toggle{color:#fff;background-color:#36205d;border-color:#321e57}.btn-check:checked+html .btn-purple-700:focus,.btn-check:active+html .btn-purple-700:focus,html .btn-purple-700:active:focus,html .btn-purple-700.active:focus,.show>html .btn-purple-700.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-purple-700:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-purple-700:focus,html[data-netbox-color-mode=dark] .btn-purple-700:active:focus,html[data-netbox-color-mode=dark] .btn-purple-700.active:focus,.show>html[data-netbox-color-mode=dark] .btn-purple-700.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-purple-700:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-purple-700:focus,html[data-netbox-color-mode=light] .btn-purple-700:active:focus,html[data-netbox-color-mode=light] .btn-purple-700.active:focus,.show>html[data-netbox-color-mode=light] .btn-purple-700.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #5f488980}html .btn-purple-700:disabled,html .btn-purple-700.disabled,html[data-netbox-color-mode=dark] .btn-purple-700:disabled,html[data-netbox-color-mode=dark] .btn-purple-700.disabled,html[data-netbox-color-mode=light] .btn-purple-700:disabled,html[data-netbox-color-mode=light] .btn-purple-700.disabled{color:#fff;background-color:#432874;border-color:#432874}}@media print{html .btn-purple-800,html[data-netbox-color-mode=dark] .btn-purple-800,html[data-netbox-color-mode=light] .btn-purple-800{color:#fff;background-color:#2c1a4d;border-color:#2c1a4d}html .btn-purple-800:hover,html[data-netbox-color-mode=dark] .btn-purple-800:hover,html[data-netbox-color-mode=light] .btn-purple-800:hover{color:#fff;background-color:#251641;border-color:#23153e}.btn-check:focus+html .btn-purple-800,html .btn-purple-800:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-purple-800,html[data-netbox-color-mode=dark] .btn-purple-800:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-purple-800,html[data-netbox-color-mode=light] .btn-purple-800:focus{color:#fff;background-color:#251641;border-color:#23153e;box-shadow:0 0 0 .25rem #4c3c6880}.btn-check:checked+html .btn-purple-800,.btn-check:active+html .btn-purple-800,html .btn-purple-800:active,html .btn-purple-800.active,.show>html .btn-purple-800.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-purple-800,.btn-check:active+html[data-netbox-color-mode=dark] .btn-purple-800,html[data-netbox-color-mode=dark] .btn-purple-800:active,html[data-netbox-color-mode=dark] .btn-purple-800.active,.show>html[data-netbox-color-mode=dark] .btn-purple-800.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-purple-800,.btn-check:active+html[data-netbox-color-mode=light] .btn-purple-800,html[data-netbox-color-mode=light] .btn-purple-800:active,html[data-netbox-color-mode=light] .btn-purple-800.active,.show>html[data-netbox-color-mode=light] .btn-purple-800.dropdown-toggle{color:#fff;background-color:#23153e;border-color:#21143a}.btn-check:checked+html .btn-purple-800:focus,.btn-check:active+html .btn-purple-800:focus,html .btn-purple-800:active:focus,html .btn-purple-800.active:focus,.show>html .btn-purple-800.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-purple-800:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-purple-800:focus,html[data-netbox-color-mode=dark] .btn-purple-800:active:focus,html[data-netbox-color-mode=dark] .btn-purple-800.active:focus,.show>html[data-netbox-color-mode=dark] .btn-purple-800.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-purple-800:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-purple-800:focus,html[data-netbox-color-mode=light] .btn-purple-800:active:focus,html[data-netbox-color-mode=light] .btn-purple-800.active:focus,.show>html[data-netbox-color-mode=light] .btn-purple-800.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #4c3c6880}html .btn-purple-800:disabled,html .btn-purple-800.disabled,html[data-netbox-color-mode=dark] .btn-purple-800:disabled,html[data-netbox-color-mode=dark] .btn-purple-800.disabled,html[data-netbox-color-mode=light] .btn-purple-800:disabled,html[data-netbox-color-mode=light] .btn-purple-800.disabled{color:#fff;background-color:#2c1a4d;border-color:#2c1a4d}}@media print{html .btn-purple-900,html[data-netbox-color-mode=dark] .btn-purple-900,html[data-netbox-color-mode=light] .btn-purple-900{color:#fff;background-color:#160d27;border-color:#160d27}html .btn-purple-900:hover,html[data-netbox-color-mode=dark] .btn-purple-900:hover,html[data-netbox-color-mode=light] .btn-purple-900:hover{color:#fff;background-color:#130b21;border-color:#120a1f}.btn-check:focus+html .btn-purple-900,html .btn-purple-900:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-purple-900,html[data-netbox-color-mode=dark] .btn-purple-900:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-purple-900,html[data-netbox-color-mode=light] .btn-purple-900:focus{color:#fff;background-color:#130b21;border-color:#120a1f;box-shadow:0 0 0 .25rem #39314780}.btn-check:checked+html .btn-purple-900,.btn-check:active+html .btn-purple-900,html .btn-purple-900:active,html .btn-purple-900.active,.show>html .btn-purple-900.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-purple-900,.btn-check:active+html[data-netbox-color-mode=dark] .btn-purple-900,html[data-netbox-color-mode=dark] .btn-purple-900:active,html[data-netbox-color-mode=dark] .btn-purple-900.active,.show>html[data-netbox-color-mode=dark] .btn-purple-900.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-purple-900,.btn-check:active+html[data-netbox-color-mode=light] .btn-purple-900,html[data-netbox-color-mode=light] .btn-purple-900:active,html[data-netbox-color-mode=light] .btn-purple-900.active,.show>html[data-netbox-color-mode=light] .btn-purple-900.dropdown-toggle{color:#fff;background-color:#120a1f;border-color:#110a1d}.btn-check:checked+html .btn-purple-900:focus,.btn-check:active+html .btn-purple-900:focus,html .btn-purple-900:active:focus,html .btn-purple-900.active:focus,.show>html .btn-purple-900.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-purple-900:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-purple-900:focus,html[data-netbox-color-mode=dark] .btn-purple-900:active:focus,html[data-netbox-color-mode=dark] .btn-purple-900.active:focus,.show>html[data-netbox-color-mode=dark] .btn-purple-900.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-purple-900:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-purple-900:focus,html[data-netbox-color-mode=light] .btn-purple-900:active:focus,html[data-netbox-color-mode=light] .btn-purple-900.active:focus,.show>html[data-netbox-color-mode=light] .btn-purple-900.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #39314780}html .btn-purple-900:disabled,html .btn-purple-900.disabled,html[data-netbox-color-mode=dark] .btn-purple-900:disabled,html[data-netbox-color-mode=dark] .btn-purple-900.disabled,html[data-netbox-color-mode=light] .btn-purple-900:disabled,html[data-netbox-color-mode=light] .btn-purple-900.disabled{color:#fff;background-color:#160d27;border-color:#160d27}}@media print{html .btn-pink-100,html[data-netbox-color-mode=dark] .btn-pink-100,html[data-netbox-color-mode=light] .btn-pink-100{color:#000;background-color:#f7d6e6;border-color:#f7d6e6}html .btn-pink-100:hover,html[data-netbox-color-mode=dark] .btn-pink-100:hover,html[data-netbox-color-mode=light] .btn-pink-100:hover{color:#000;background-color:#f8dcea;border-color:#f8dae9}.btn-check:focus+html .btn-pink-100,html .btn-pink-100:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-pink-100,html[data-netbox-color-mode=dark] .btn-pink-100:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-pink-100,html[data-netbox-color-mode=light] .btn-pink-100:focus{color:#000;background-color:#f8dcea;border-color:#f8dae9;box-shadow:0 0 0 .25rem #d2b6c480}.btn-check:checked+html .btn-pink-100,.btn-check:active+html .btn-pink-100,html .btn-pink-100:active,html .btn-pink-100.active,.show>html .btn-pink-100.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-pink-100,.btn-check:active+html[data-netbox-color-mode=dark] .btn-pink-100,html[data-netbox-color-mode=dark] .btn-pink-100:active,html[data-netbox-color-mode=dark] .btn-pink-100.active,.show>html[data-netbox-color-mode=dark] .btn-pink-100.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-pink-100,.btn-check:active+html[data-netbox-color-mode=light] .btn-pink-100,html[data-netbox-color-mode=light] .btn-pink-100:active,html[data-netbox-color-mode=light] .btn-pink-100.active,.show>html[data-netbox-color-mode=light] .btn-pink-100.dropdown-toggle{color:#000;background-color:#f9deeb;border-color:#f8dae9}.btn-check:checked+html .btn-pink-100:focus,.btn-check:active+html .btn-pink-100:focus,html .btn-pink-100:active:focus,html .btn-pink-100.active:focus,.show>html .btn-pink-100.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-pink-100:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-pink-100:focus,html[data-netbox-color-mode=dark] .btn-pink-100:active:focus,html[data-netbox-color-mode=dark] .btn-pink-100.active:focus,.show>html[data-netbox-color-mode=dark] .btn-pink-100.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-pink-100:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-pink-100:focus,html[data-netbox-color-mode=light] .btn-pink-100:active:focus,html[data-netbox-color-mode=light] .btn-pink-100.active:focus,.show>html[data-netbox-color-mode=light] .btn-pink-100.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #d2b6c480}html .btn-pink-100:disabled,html .btn-pink-100.disabled,html[data-netbox-color-mode=dark] .btn-pink-100:disabled,html[data-netbox-color-mode=dark] .btn-pink-100.disabled,html[data-netbox-color-mode=light] .btn-pink-100:disabled,html[data-netbox-color-mode=light] .btn-pink-100.disabled{color:#000;background-color:#f7d6e6;border-color:#f7d6e6}}@media print{html .btn-pink-200,html[data-netbox-color-mode=dark] .btn-pink-200,html[data-netbox-color-mode=light] .btn-pink-200{color:#000;background-color:#efadce;border-color:#efadce}html .btn-pink-200:hover,html[data-netbox-color-mode=dark] .btn-pink-200:hover,html[data-netbox-color-mode=light] .btn-pink-200:hover{color:#000;background-color:#f1b9d5;border-color:#f1b5d3}.btn-check:focus+html .btn-pink-200,html .btn-pink-200:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-pink-200,html[data-netbox-color-mode=dark] .btn-pink-200:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-pink-200,html[data-netbox-color-mode=light] .btn-pink-200:focus{color:#000;background-color:#f1b9d5;border-color:#f1b5d3;box-shadow:0 0 0 .25rem #cb93af80}.btn-check:checked+html .btn-pink-200,.btn-check:active+html .btn-pink-200,html .btn-pink-200:active,html .btn-pink-200.active,.show>html .btn-pink-200.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-pink-200,.btn-check:active+html[data-netbox-color-mode=dark] .btn-pink-200,html[data-netbox-color-mode=dark] .btn-pink-200:active,html[data-netbox-color-mode=dark] .btn-pink-200.active,.show>html[data-netbox-color-mode=dark] .btn-pink-200.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-pink-200,.btn-check:active+html[data-netbox-color-mode=light] .btn-pink-200,html[data-netbox-color-mode=light] .btn-pink-200:active,html[data-netbox-color-mode=light] .btn-pink-200.active,.show>html[data-netbox-color-mode=light] .btn-pink-200.dropdown-toggle{color:#000;background-color:#f2bdd8;border-color:#f1b5d3}.btn-check:checked+html .btn-pink-200:focus,.btn-check:active+html .btn-pink-200:focus,html .btn-pink-200:active:focus,html .btn-pink-200.active:focus,.show>html .btn-pink-200.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-pink-200:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-pink-200:focus,html[data-netbox-color-mode=dark] .btn-pink-200:active:focus,html[data-netbox-color-mode=dark] .btn-pink-200.active:focus,.show>html[data-netbox-color-mode=dark] .btn-pink-200.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-pink-200:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-pink-200:focus,html[data-netbox-color-mode=light] .btn-pink-200:active:focus,html[data-netbox-color-mode=light] .btn-pink-200.active:focus,.show>html[data-netbox-color-mode=light] .btn-pink-200.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #cb93af80}html .btn-pink-200:disabled,html .btn-pink-200.disabled,html[data-netbox-color-mode=dark] .btn-pink-200:disabled,html[data-netbox-color-mode=dark] .btn-pink-200.disabled,html[data-netbox-color-mode=light] .btn-pink-200:disabled,html[data-netbox-color-mode=light] .btn-pink-200.disabled{color:#000;background-color:#efadce;border-color:#efadce}}@media print{html .btn-pink-300,html[data-netbox-color-mode=dark] .btn-pink-300,html[data-netbox-color-mode=light] .btn-pink-300{color:#000;background-color:#e685b5;border-color:#e685b5}html .btn-pink-300:hover,html[data-netbox-color-mode=dark] .btn-pink-300:hover,html[data-netbox-color-mode=light] .btn-pink-300:hover{color:#000;background-color:#ea97c0;border-color:#e991bc}.btn-check:focus+html .btn-pink-300,html .btn-pink-300:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-pink-300,html[data-netbox-color-mode=dark] .btn-pink-300:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-pink-300,html[data-netbox-color-mode=light] .btn-pink-300:focus{color:#000;background-color:#ea97c0;border-color:#e991bc;box-shadow:0 0 0 .25rem #c4719a80}.btn-check:checked+html .btn-pink-300,.btn-check:active+html .btn-pink-300,html .btn-pink-300:active,html .btn-pink-300.active,.show>html .btn-pink-300.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-pink-300,.btn-check:active+html[data-netbox-color-mode=dark] .btn-pink-300,html[data-netbox-color-mode=dark] .btn-pink-300:active,html[data-netbox-color-mode=dark] .btn-pink-300.active,.show>html[data-netbox-color-mode=dark] .btn-pink-300.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-pink-300,.btn-check:active+html[data-netbox-color-mode=light] .btn-pink-300,html[data-netbox-color-mode=light] .btn-pink-300:active,html[data-netbox-color-mode=light] .btn-pink-300.active,.show>html[data-netbox-color-mode=light] .btn-pink-300.dropdown-toggle{color:#000;background-color:#eb9dc4;border-color:#e991bc}.btn-check:checked+html .btn-pink-300:focus,.btn-check:active+html .btn-pink-300:focus,html .btn-pink-300:active:focus,html .btn-pink-300.active:focus,.show>html .btn-pink-300.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-pink-300:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-pink-300:focus,html[data-netbox-color-mode=dark] .btn-pink-300:active:focus,html[data-netbox-color-mode=dark] .btn-pink-300.active:focus,.show>html[data-netbox-color-mode=dark] .btn-pink-300.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-pink-300:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-pink-300:focus,html[data-netbox-color-mode=light] .btn-pink-300:active:focus,html[data-netbox-color-mode=light] .btn-pink-300.active:focus,.show>html[data-netbox-color-mode=light] .btn-pink-300.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #c4719a80}html .btn-pink-300:disabled,html .btn-pink-300.disabled,html[data-netbox-color-mode=dark] .btn-pink-300:disabled,html[data-netbox-color-mode=dark] .btn-pink-300.disabled,html[data-netbox-color-mode=light] .btn-pink-300:disabled,html[data-netbox-color-mode=light] .btn-pink-300.disabled{color:#000;background-color:#e685b5;border-color:#e685b5}}@media print{html .btn-pink-400,html[data-netbox-color-mode=dark] .btn-pink-400,html[data-netbox-color-mode=light] .btn-pink-400{color:#000;background-color:#de5c9d;border-color:#de5c9d}html .btn-pink-400:hover,html[data-netbox-color-mode=dark] .btn-pink-400:hover,html[data-netbox-color-mode=light] .btn-pink-400:hover{color:#000;background-color:#e374ac;border-color:#e16ca7}.btn-check:focus+html .btn-pink-400,html .btn-pink-400:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-pink-400,html[data-netbox-color-mode=dark] .btn-pink-400:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-pink-400,html[data-netbox-color-mode=light] .btn-pink-400:focus{color:#000;background-color:#e374ac;border-color:#e16ca7;box-shadow:0 0 0 .25rem #bd4e8580}.btn-check:checked+html .btn-pink-400,.btn-check:active+html .btn-pink-400,html .btn-pink-400:active,html .btn-pink-400.active,.show>html .btn-pink-400.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-pink-400,.btn-check:active+html[data-netbox-color-mode=dark] .btn-pink-400,html[data-netbox-color-mode=dark] .btn-pink-400:active,html[data-netbox-color-mode=dark] .btn-pink-400.active,.show>html[data-netbox-color-mode=dark] .btn-pink-400.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-pink-400,.btn-check:active+html[data-netbox-color-mode=light] .btn-pink-400,html[data-netbox-color-mode=light] .btn-pink-400:active,html[data-netbox-color-mode=light] .btn-pink-400.active,.show>html[data-netbox-color-mode=light] .btn-pink-400.dropdown-toggle{color:#000;background-color:#e57db1;border-color:#e16ca7}.btn-check:checked+html .btn-pink-400:focus,.btn-check:active+html .btn-pink-400:focus,html .btn-pink-400:active:focus,html .btn-pink-400.active:focus,.show>html .btn-pink-400.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-pink-400:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-pink-400:focus,html[data-netbox-color-mode=dark] .btn-pink-400:active:focus,html[data-netbox-color-mode=dark] .btn-pink-400.active:focus,.show>html[data-netbox-color-mode=dark] .btn-pink-400.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-pink-400:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-pink-400:focus,html[data-netbox-color-mode=light] .btn-pink-400:active:focus,html[data-netbox-color-mode=light] .btn-pink-400.active:focus,.show>html[data-netbox-color-mode=light] .btn-pink-400.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #bd4e8580}html .btn-pink-400:disabled,html .btn-pink-400.disabled,html[data-netbox-color-mode=dark] .btn-pink-400:disabled,html[data-netbox-color-mode=dark] .btn-pink-400.disabled,html[data-netbox-color-mode=light] .btn-pink-400:disabled,html[data-netbox-color-mode=light] .btn-pink-400.disabled{color:#000;background-color:#de5c9d;border-color:#de5c9d}}@media print{html .btn-pink-500,html[data-netbox-color-mode=dark] .btn-pink-500,html[data-netbox-color-mode=light] .btn-pink-500{color:#fff;background-color:#d63384;border-color:#d63384}html .btn-pink-500:hover,html[data-netbox-color-mode=dark] .btn-pink-500:hover,html[data-netbox-color-mode=light] .btn-pink-500:hover{color:#fff;background-color:#b62b70;border-color:#ab296a}.btn-check:focus+html .btn-pink-500,html .btn-pink-500:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-pink-500,html[data-netbox-color-mode=dark] .btn-pink-500:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-pink-500,html[data-netbox-color-mode=light] .btn-pink-500:focus{color:#fff;background-color:#b62b70;border-color:#ab296a;box-shadow:0 0 0 .25rem #dc529680}.btn-check:checked+html .btn-pink-500,.btn-check:active+html .btn-pink-500,html .btn-pink-500:active,html .btn-pink-500.active,.show>html .btn-pink-500.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-pink-500,.btn-check:active+html[data-netbox-color-mode=dark] .btn-pink-500,html[data-netbox-color-mode=dark] .btn-pink-500:active,html[data-netbox-color-mode=dark] .btn-pink-500.active,.show>html[data-netbox-color-mode=dark] .btn-pink-500.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-pink-500,.btn-check:active+html[data-netbox-color-mode=light] .btn-pink-500,html[data-netbox-color-mode=light] .btn-pink-500:active,html[data-netbox-color-mode=light] .btn-pink-500.active,.show>html[data-netbox-color-mode=light] .btn-pink-500.dropdown-toggle{color:#fff;background-color:#ab296a;border-color:#a12663}.btn-check:checked+html .btn-pink-500:focus,.btn-check:active+html .btn-pink-500:focus,html .btn-pink-500:active:focus,html .btn-pink-500.active:focus,.show>html .btn-pink-500.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-pink-500:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-pink-500:focus,html[data-netbox-color-mode=dark] .btn-pink-500:active:focus,html[data-netbox-color-mode=dark] .btn-pink-500.active:focus,.show>html[data-netbox-color-mode=dark] .btn-pink-500.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-pink-500:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-pink-500:focus,html[data-netbox-color-mode=light] .btn-pink-500:active:focus,html[data-netbox-color-mode=light] .btn-pink-500.active:focus,.show>html[data-netbox-color-mode=light] .btn-pink-500.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #dc529680}html .btn-pink-500:disabled,html .btn-pink-500.disabled,html[data-netbox-color-mode=dark] .btn-pink-500:disabled,html[data-netbox-color-mode=dark] .btn-pink-500.disabled,html[data-netbox-color-mode=light] .btn-pink-500:disabled,html[data-netbox-color-mode=light] .btn-pink-500.disabled{color:#fff;background-color:#d63384;border-color:#d63384}}@media print{html .btn-pink-600,html[data-netbox-color-mode=dark] .btn-pink-600,html[data-netbox-color-mode=light] .btn-pink-600{color:#fff;background-color:#ab296a;border-color:#ab296a}html .btn-pink-600:hover,html[data-netbox-color-mode=dark] .btn-pink-600:hover,html[data-netbox-color-mode=light] .btn-pink-600:hover{color:#fff;background-color:#91235a;border-color:#892155}.btn-check:focus+html .btn-pink-600,html .btn-pink-600:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-pink-600,html[data-netbox-color-mode=dark] .btn-pink-600:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-pink-600,html[data-netbox-color-mode=light] .btn-pink-600:focus{color:#fff;background-color:#91235a;border-color:#892155;box-shadow:0 0 0 .25rem #b8498080}.btn-check:checked+html .btn-pink-600,.btn-check:active+html .btn-pink-600,html .btn-pink-600:active,html .btn-pink-600.active,.show>html .btn-pink-600.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-pink-600,.btn-check:active+html[data-netbox-color-mode=dark] .btn-pink-600,html[data-netbox-color-mode=dark] .btn-pink-600:active,html[data-netbox-color-mode=dark] .btn-pink-600.active,.show>html[data-netbox-color-mode=dark] .btn-pink-600.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-pink-600,.btn-check:active+html[data-netbox-color-mode=light] .btn-pink-600,html[data-netbox-color-mode=light] .btn-pink-600:active,html[data-netbox-color-mode=light] .btn-pink-600.active,.show>html[data-netbox-color-mode=light] .btn-pink-600.dropdown-toggle{color:#fff;background-color:#892155;border-color:#801f50}.btn-check:checked+html .btn-pink-600:focus,.btn-check:active+html .btn-pink-600:focus,html .btn-pink-600:active:focus,html .btn-pink-600.active:focus,.show>html .btn-pink-600.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-pink-600:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-pink-600:focus,html[data-netbox-color-mode=dark] .btn-pink-600:active:focus,html[data-netbox-color-mode=dark] .btn-pink-600.active:focus,.show>html[data-netbox-color-mode=dark] .btn-pink-600.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-pink-600:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-pink-600:focus,html[data-netbox-color-mode=light] .btn-pink-600:active:focus,html[data-netbox-color-mode=light] .btn-pink-600.active:focus,.show>html[data-netbox-color-mode=light] .btn-pink-600.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #b8498080}html .btn-pink-600:disabled,html .btn-pink-600.disabled,html[data-netbox-color-mode=dark] .btn-pink-600:disabled,html[data-netbox-color-mode=dark] .btn-pink-600.disabled,html[data-netbox-color-mode=light] .btn-pink-600:disabled,html[data-netbox-color-mode=light] .btn-pink-600.disabled{color:#fff;background-color:#ab296a;border-color:#ab296a}}@media print{html .btn-pink-700,html[data-netbox-color-mode=dark] .btn-pink-700,html[data-netbox-color-mode=light] .btn-pink-700{color:#fff;background-color:#801f4f;border-color:#801f4f}html .btn-pink-700:hover,html[data-netbox-color-mode=dark] .btn-pink-700:hover,html[data-netbox-color-mode=light] .btn-pink-700:hover{color:#fff;background-color:#6d1a43;border-color:#66193f}.btn-check:focus+html .btn-pink-700,html .btn-pink-700:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-pink-700,html[data-netbox-color-mode=dark] .btn-pink-700:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-pink-700,html[data-netbox-color-mode=light] .btn-pink-700:focus{color:#fff;background-color:#6d1a43;border-color:#66193f;box-shadow:0 0 0 .25rem #93416980}.btn-check:checked+html .btn-pink-700,.btn-check:active+html .btn-pink-700,html .btn-pink-700:active,html .btn-pink-700.active,.show>html .btn-pink-700.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-pink-700,.btn-check:active+html[data-netbox-color-mode=dark] .btn-pink-700,html[data-netbox-color-mode=dark] .btn-pink-700:active,html[data-netbox-color-mode=dark] .btn-pink-700.active,.show>html[data-netbox-color-mode=dark] .btn-pink-700.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-pink-700,.btn-check:active+html[data-netbox-color-mode=light] .btn-pink-700,html[data-netbox-color-mode=light] .btn-pink-700:active,html[data-netbox-color-mode=light] .btn-pink-700.active,.show>html[data-netbox-color-mode=light] .btn-pink-700.dropdown-toggle{color:#fff;background-color:#66193f;border-color:#60173b}.btn-check:checked+html .btn-pink-700:focus,.btn-check:active+html .btn-pink-700:focus,html .btn-pink-700:active:focus,html .btn-pink-700.active:focus,.show>html .btn-pink-700.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-pink-700:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-pink-700:focus,html[data-netbox-color-mode=dark] .btn-pink-700:active:focus,html[data-netbox-color-mode=dark] .btn-pink-700.active:focus,.show>html[data-netbox-color-mode=dark] .btn-pink-700.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-pink-700:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-pink-700:focus,html[data-netbox-color-mode=light] .btn-pink-700:active:focus,html[data-netbox-color-mode=light] .btn-pink-700.active:focus,.show>html[data-netbox-color-mode=light] .btn-pink-700.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #93416980}html .btn-pink-700:disabled,html .btn-pink-700.disabled,html[data-netbox-color-mode=dark] .btn-pink-700:disabled,html[data-netbox-color-mode=dark] .btn-pink-700.disabled,html[data-netbox-color-mode=light] .btn-pink-700:disabled,html[data-netbox-color-mode=light] .btn-pink-700.disabled{color:#fff;background-color:#801f4f;border-color:#801f4f}}@media print{html .btn-pink-800,html[data-netbox-color-mode=dark] .btn-pink-800,html[data-netbox-color-mode=light] .btn-pink-800{color:#fff;background-color:#561435;border-color:#561435}html .btn-pink-800:hover,html[data-netbox-color-mode=dark] .btn-pink-800:hover,html[data-netbox-color-mode=light] .btn-pink-800:hover{color:#fff;background-color:#49112d;border-color:#45102a}.btn-check:focus+html .btn-pink-800,html .btn-pink-800:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-pink-800,html[data-netbox-color-mode=dark] .btn-pink-800:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-pink-800,html[data-netbox-color-mode=light] .btn-pink-800:focus{color:#fff;background-color:#49112d;border-color:#45102a;box-shadow:0 0 0 .25rem #6f375380}.btn-check:checked+html .btn-pink-800,.btn-check:active+html .btn-pink-800,html .btn-pink-800:active,html .btn-pink-800.active,.show>html .btn-pink-800.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-pink-800,.btn-check:active+html[data-netbox-color-mode=dark] .btn-pink-800,html[data-netbox-color-mode=dark] .btn-pink-800:active,html[data-netbox-color-mode=dark] .btn-pink-800.active,.show>html[data-netbox-color-mode=dark] .btn-pink-800.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-pink-800,.btn-check:active+html[data-netbox-color-mode=light] .btn-pink-800,html[data-netbox-color-mode=light] .btn-pink-800:active,html[data-netbox-color-mode=light] .btn-pink-800.active,.show>html[data-netbox-color-mode=light] .btn-pink-800.dropdown-toggle{color:#fff;background-color:#45102a;border-color:#410f28}.btn-check:checked+html .btn-pink-800:focus,.btn-check:active+html .btn-pink-800:focus,html .btn-pink-800:active:focus,html .btn-pink-800.active:focus,.show>html .btn-pink-800.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-pink-800:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-pink-800:focus,html[data-netbox-color-mode=dark] .btn-pink-800:active:focus,html[data-netbox-color-mode=dark] .btn-pink-800.active:focus,.show>html[data-netbox-color-mode=dark] .btn-pink-800.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-pink-800:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-pink-800:focus,html[data-netbox-color-mode=light] .btn-pink-800:active:focus,html[data-netbox-color-mode=light] .btn-pink-800.active:focus,.show>html[data-netbox-color-mode=light] .btn-pink-800.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #6f375380}html .btn-pink-800:disabled,html .btn-pink-800.disabled,html[data-netbox-color-mode=dark] .btn-pink-800:disabled,html[data-netbox-color-mode=dark] .btn-pink-800.disabled,html[data-netbox-color-mode=light] .btn-pink-800:disabled,html[data-netbox-color-mode=light] .btn-pink-800.disabled{color:#fff;background-color:#561435;border-color:#561435}}@media print{html .btn-pink-900,html[data-netbox-color-mode=dark] .btn-pink-900,html[data-netbox-color-mode=light] .btn-pink-900{color:#fff;background-color:#2b0a1a;border-color:#2b0a1a}html .btn-pink-900:hover,html[data-netbox-color-mode=dark] .btn-pink-900:hover,html[data-netbox-color-mode=light] .btn-pink-900:hover{color:#fff;background-color:#250916;border-color:#220815}.btn-check:focus+html .btn-pink-900,html .btn-pink-900:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-pink-900,html[data-netbox-color-mode=dark] .btn-pink-900:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-pink-900,html[data-netbox-color-mode=light] .btn-pink-900:focus{color:#fff;background-color:#250916;border-color:#220815;box-shadow:0 0 0 .25rem #4b2f3c80}.btn-check:checked+html .btn-pink-900,.btn-check:active+html .btn-pink-900,html .btn-pink-900:active,html .btn-pink-900.active,.show>html .btn-pink-900.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-pink-900,.btn-check:active+html[data-netbox-color-mode=dark] .btn-pink-900,html[data-netbox-color-mode=dark] .btn-pink-900:active,html[data-netbox-color-mode=dark] .btn-pink-900.active,.show>html[data-netbox-color-mode=dark] .btn-pink-900.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-pink-900,.btn-check:active+html[data-netbox-color-mode=light] .btn-pink-900,html[data-netbox-color-mode=light] .btn-pink-900:active,html[data-netbox-color-mode=light] .btn-pink-900.active,.show>html[data-netbox-color-mode=light] .btn-pink-900.dropdown-toggle{color:#fff;background-color:#220815;border-color:#200814}.btn-check:checked+html .btn-pink-900:focus,.btn-check:active+html .btn-pink-900:focus,html .btn-pink-900:active:focus,html .btn-pink-900.active:focus,.show>html .btn-pink-900.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-pink-900:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-pink-900:focus,html[data-netbox-color-mode=dark] .btn-pink-900:active:focus,html[data-netbox-color-mode=dark] .btn-pink-900.active:focus,.show>html[data-netbox-color-mode=dark] .btn-pink-900.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-pink-900:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-pink-900:focus,html[data-netbox-color-mode=light] .btn-pink-900:active:focus,html[data-netbox-color-mode=light] .btn-pink-900.active:focus,.show>html[data-netbox-color-mode=light] .btn-pink-900.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #4b2f3c80}html .btn-pink-900:disabled,html .btn-pink-900.disabled,html[data-netbox-color-mode=dark] .btn-pink-900:disabled,html[data-netbox-color-mode=dark] .btn-pink-900.disabled,html[data-netbox-color-mode=light] .btn-pink-900:disabled,html[data-netbox-color-mode=light] .btn-pink-900.disabled{color:#fff;background-color:#2b0a1a;border-color:#2b0a1a}}@media print{html .btn-outline-primary,html[data-netbox-color-mode=dark] .btn-outline-primary,html[data-netbox-color-mode=light] .btn-outline-primary{color:#337ab7;border-color:#337ab7}html .btn-outline-primary:hover,html[data-netbox-color-mode=dark] .btn-outline-primary:hover,html[data-netbox-color-mode=light] .btn-outline-primary:hover{color:#fff;background-color:#337ab7;border-color:#337ab7}.btn-check:focus+html .btn-outline-primary,html .btn-outline-primary:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-primary,html[data-netbox-color-mode=dark] .btn-outline-primary:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-primary,html[data-netbox-color-mode=light] .btn-outline-primary:focus{box-shadow:0 0 0 .25rem #337ab780}.btn-check:checked+html .btn-outline-primary,.btn-check:active+html .btn-outline-primary,html .btn-outline-primary:active,html .btn-outline-primary.active,html .btn-outline-primary.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-primary,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-primary,html[data-netbox-color-mode=dark] .btn-outline-primary:active,html[data-netbox-color-mode=dark] .btn-outline-primary.active,html[data-netbox-color-mode=dark] .btn-outline-primary.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-primary,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-primary,html[data-netbox-color-mode=light] .btn-outline-primary:active,html[data-netbox-color-mode=light] .btn-outline-primary.active,html[data-netbox-color-mode=light] .btn-outline-primary.dropdown-toggle.show{color:#fff;background-color:#337ab7;border-color:#337ab7}.btn-check:checked+html .btn-outline-primary:focus,.btn-check:active+html .btn-outline-primary:focus,html .btn-outline-primary:active:focus,html .btn-outline-primary.active:focus,html .btn-outline-primary.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-primary:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-primary:focus,html[data-netbox-color-mode=dark] .btn-outline-primary:active:focus,html[data-netbox-color-mode=dark] .btn-outline-primary.active:focus,html[data-netbox-color-mode=dark] .btn-outline-primary.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-primary:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-primary:focus,html[data-netbox-color-mode=light] .btn-outline-primary:active:focus,html[data-netbox-color-mode=light] .btn-outline-primary.active:focus,html[data-netbox-color-mode=light] .btn-outline-primary.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #337ab780}html .btn-outline-primary:disabled,html .btn-outline-primary.disabled,html[data-netbox-color-mode=dark] .btn-outline-primary:disabled,html[data-netbox-color-mode=dark] .btn-outline-primary.disabled,html[data-netbox-color-mode=light] .btn-outline-primary:disabled,html[data-netbox-color-mode=light] .btn-outline-primary.disabled{color:#337ab7;background-color:transparent}}@media print{html .btn-outline-secondary,html[data-netbox-color-mode=dark] .btn-outline-secondary,html[data-netbox-color-mode=light] .btn-outline-secondary{color:#6c757d;border-color:#6c757d}html .btn-outline-secondary:hover,html[data-netbox-color-mode=dark] .btn-outline-secondary:hover,html[data-netbox-color-mode=light] .btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-check:focus+html .btn-outline-secondary,html .btn-outline-secondary:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-secondary,html[data-netbox-color-mode=dark] .btn-outline-secondary:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-secondary,html[data-netbox-color-mode=light] .btn-outline-secondary:focus{box-shadow:0 0 0 .25rem #6c757d80}.btn-check:checked+html .btn-outline-secondary,.btn-check:active+html .btn-outline-secondary,html .btn-outline-secondary:active,html .btn-outline-secondary.active,html .btn-outline-secondary.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-secondary,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-secondary,html[data-netbox-color-mode=dark] .btn-outline-secondary:active,html[data-netbox-color-mode=dark] .btn-outline-secondary.active,html[data-netbox-color-mode=dark] .btn-outline-secondary.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-secondary,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-secondary,html[data-netbox-color-mode=light] .btn-outline-secondary:active,html[data-netbox-color-mode=light] .btn-outline-secondary.active,html[data-netbox-color-mode=light] .btn-outline-secondary.dropdown-toggle.show{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-check:checked+html .btn-outline-secondary:focus,.btn-check:active+html .btn-outline-secondary:focus,html .btn-outline-secondary:active:focus,html .btn-outline-secondary.active:focus,html .btn-outline-secondary.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-secondary:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-secondary:focus,html[data-netbox-color-mode=dark] .btn-outline-secondary:active:focus,html[data-netbox-color-mode=dark] .btn-outline-secondary.active:focus,html[data-netbox-color-mode=dark] .btn-outline-secondary.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-secondary:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-secondary:focus,html[data-netbox-color-mode=light] .btn-outline-secondary:active:focus,html[data-netbox-color-mode=light] .btn-outline-secondary.active:focus,html[data-netbox-color-mode=light] .btn-outline-secondary.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #6c757d80}html .btn-outline-secondary:disabled,html .btn-outline-secondary.disabled,html[data-netbox-color-mode=dark] .btn-outline-secondary:disabled,html[data-netbox-color-mode=dark] .btn-outline-secondary.disabled,html[data-netbox-color-mode=light] .btn-outline-secondary:disabled,html[data-netbox-color-mode=light] .btn-outline-secondary.disabled{color:#6c757d;background-color:transparent}}@media print{html .btn-outline-success,html[data-netbox-color-mode=dark] .btn-outline-success,html[data-netbox-color-mode=light] .btn-outline-success{color:#198754;border-color:#198754}html .btn-outline-success:hover,html[data-netbox-color-mode=dark] .btn-outline-success:hover,html[data-netbox-color-mode=light] .btn-outline-success:hover{color:#fff;background-color:#198754;border-color:#198754}.btn-check:focus+html .btn-outline-success,html .btn-outline-success:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-success,html[data-netbox-color-mode=dark] .btn-outline-success:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-success,html[data-netbox-color-mode=light] .btn-outline-success:focus{box-shadow:0 0 0 .25rem #19875480}.btn-check:checked+html .btn-outline-success,.btn-check:active+html .btn-outline-success,html .btn-outline-success:active,html .btn-outline-success.active,html .btn-outline-success.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-success,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-success,html[data-netbox-color-mode=dark] .btn-outline-success:active,html[data-netbox-color-mode=dark] .btn-outline-success.active,html[data-netbox-color-mode=dark] .btn-outline-success.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-success,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-success,html[data-netbox-color-mode=light] .btn-outline-success:active,html[data-netbox-color-mode=light] .btn-outline-success.active,html[data-netbox-color-mode=light] .btn-outline-success.dropdown-toggle.show{color:#fff;background-color:#198754;border-color:#198754}.btn-check:checked+html .btn-outline-success:focus,.btn-check:active+html .btn-outline-success:focus,html .btn-outline-success:active:focus,html .btn-outline-success.active:focus,html .btn-outline-success.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-success:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-success:focus,html[data-netbox-color-mode=dark] .btn-outline-success:active:focus,html[data-netbox-color-mode=dark] .btn-outline-success.active:focus,html[data-netbox-color-mode=dark] .btn-outline-success.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-success:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-success:focus,html[data-netbox-color-mode=light] .btn-outline-success:active:focus,html[data-netbox-color-mode=light] .btn-outline-success.active:focus,html[data-netbox-color-mode=light] .btn-outline-success.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #19875480}html .btn-outline-success:disabled,html .btn-outline-success.disabled,html[data-netbox-color-mode=dark] .btn-outline-success:disabled,html[data-netbox-color-mode=dark] .btn-outline-success.disabled,html[data-netbox-color-mode=light] .btn-outline-success:disabled,html[data-netbox-color-mode=light] .btn-outline-success.disabled{color:#198754;background-color:transparent}}@media print{html .btn-outline-info,html[data-netbox-color-mode=dark] .btn-outline-info,html[data-netbox-color-mode=light] .btn-outline-info{color:#0dcaf0;border-color:#0dcaf0}html .btn-outline-info:hover,html[data-netbox-color-mode=dark] .btn-outline-info:hover,html[data-netbox-color-mode=light] .btn-outline-info:hover{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-check:focus+html .btn-outline-info,html .btn-outline-info:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-info,html[data-netbox-color-mode=dark] .btn-outline-info:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-info,html[data-netbox-color-mode=light] .btn-outline-info:focus{box-shadow:0 0 0 .25rem #0dcaf080}.btn-check:checked+html .btn-outline-info,.btn-check:active+html .btn-outline-info,html .btn-outline-info:active,html .btn-outline-info.active,html .btn-outline-info.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-info,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-info,html[data-netbox-color-mode=dark] .btn-outline-info:active,html[data-netbox-color-mode=dark] .btn-outline-info.active,html[data-netbox-color-mode=dark] .btn-outline-info.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-info,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-info,html[data-netbox-color-mode=light] .btn-outline-info:active,html[data-netbox-color-mode=light] .btn-outline-info.active,html[data-netbox-color-mode=light] .btn-outline-info.dropdown-toggle.show{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-check:checked+html .btn-outline-info:focus,.btn-check:active+html .btn-outline-info:focus,html .btn-outline-info:active:focus,html .btn-outline-info.active:focus,html .btn-outline-info.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-info:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-info:focus,html[data-netbox-color-mode=dark] .btn-outline-info:active:focus,html[data-netbox-color-mode=dark] .btn-outline-info.active:focus,html[data-netbox-color-mode=dark] .btn-outline-info.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-info:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-info:focus,html[data-netbox-color-mode=light] .btn-outline-info:active:focus,html[data-netbox-color-mode=light] .btn-outline-info.active:focus,html[data-netbox-color-mode=light] .btn-outline-info.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #0dcaf080}html .btn-outline-info:disabled,html .btn-outline-info.disabled,html[data-netbox-color-mode=dark] .btn-outline-info:disabled,html[data-netbox-color-mode=dark] .btn-outline-info.disabled,html[data-netbox-color-mode=light] .btn-outline-info:disabled,html[data-netbox-color-mode=light] .btn-outline-info.disabled{color:#0dcaf0;background-color:transparent}}@media print{html .btn-outline-warning,html[data-netbox-color-mode=dark] .btn-outline-warning,html[data-netbox-color-mode=light] .btn-outline-warning{color:#ffc107;border-color:#ffc107}html .btn-outline-warning:hover,html[data-netbox-color-mode=dark] .btn-outline-warning:hover,html[data-netbox-color-mode=light] .btn-outline-warning:hover{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-check:focus+html .btn-outline-warning,html .btn-outline-warning:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-warning,html[data-netbox-color-mode=dark] .btn-outline-warning:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-warning,html[data-netbox-color-mode=light] .btn-outline-warning:focus{box-shadow:0 0 0 .25rem #ffc10780}.btn-check:checked+html .btn-outline-warning,.btn-check:active+html .btn-outline-warning,html .btn-outline-warning:active,html .btn-outline-warning.active,html .btn-outline-warning.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-warning,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-warning,html[data-netbox-color-mode=dark] .btn-outline-warning:active,html[data-netbox-color-mode=dark] .btn-outline-warning.active,html[data-netbox-color-mode=dark] .btn-outline-warning.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-warning,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-warning,html[data-netbox-color-mode=light] .btn-outline-warning:active,html[data-netbox-color-mode=light] .btn-outline-warning.active,html[data-netbox-color-mode=light] .btn-outline-warning.dropdown-toggle.show{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-check:checked+html .btn-outline-warning:focus,.btn-check:active+html .btn-outline-warning:focus,html .btn-outline-warning:active:focus,html .btn-outline-warning.active:focus,html .btn-outline-warning.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-warning:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-warning:focus,html[data-netbox-color-mode=dark] .btn-outline-warning:active:focus,html[data-netbox-color-mode=dark] .btn-outline-warning.active:focus,html[data-netbox-color-mode=dark] .btn-outline-warning.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-warning:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-warning:focus,html[data-netbox-color-mode=light] .btn-outline-warning:active:focus,html[data-netbox-color-mode=light] .btn-outline-warning.active:focus,html[data-netbox-color-mode=light] .btn-outline-warning.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #ffc10780}html .btn-outline-warning:disabled,html .btn-outline-warning.disabled,html[data-netbox-color-mode=dark] .btn-outline-warning:disabled,html[data-netbox-color-mode=dark] .btn-outline-warning.disabled,html[data-netbox-color-mode=light] .btn-outline-warning:disabled,html[data-netbox-color-mode=light] .btn-outline-warning.disabled{color:#ffc107;background-color:transparent}}@media print{html .btn-outline-danger,html[data-netbox-color-mode=dark] .btn-outline-danger,html[data-netbox-color-mode=light] .btn-outline-danger{color:#dc3545;border-color:#dc3545}html .btn-outline-danger:hover,html[data-netbox-color-mode=dark] .btn-outline-danger:hover,html[data-netbox-color-mode=light] .btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-check:focus+html .btn-outline-danger,html .btn-outline-danger:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-danger,html[data-netbox-color-mode=dark] .btn-outline-danger:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-danger,html[data-netbox-color-mode=light] .btn-outline-danger:focus{box-shadow:0 0 0 .25rem #dc354580}.btn-check:checked+html .btn-outline-danger,.btn-check:active+html .btn-outline-danger,html .btn-outline-danger:active,html .btn-outline-danger.active,html .btn-outline-danger.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-danger,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-danger,html[data-netbox-color-mode=dark] .btn-outline-danger:active,html[data-netbox-color-mode=dark] .btn-outline-danger.active,html[data-netbox-color-mode=dark] .btn-outline-danger.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-danger,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-danger,html[data-netbox-color-mode=light] .btn-outline-danger:active,html[data-netbox-color-mode=light] .btn-outline-danger.active,html[data-netbox-color-mode=light] .btn-outline-danger.dropdown-toggle.show{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-check:checked+html .btn-outline-danger:focus,.btn-check:active+html .btn-outline-danger:focus,html .btn-outline-danger:active:focus,html .btn-outline-danger.active:focus,html .btn-outline-danger.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-danger:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-danger:focus,html[data-netbox-color-mode=dark] .btn-outline-danger:active:focus,html[data-netbox-color-mode=dark] .btn-outline-danger.active:focus,html[data-netbox-color-mode=dark] .btn-outline-danger.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-danger:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-danger:focus,html[data-netbox-color-mode=light] .btn-outline-danger:active:focus,html[data-netbox-color-mode=light] .btn-outline-danger.active:focus,html[data-netbox-color-mode=light] .btn-outline-danger.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #dc354580}html .btn-outline-danger:disabled,html .btn-outline-danger.disabled,html[data-netbox-color-mode=dark] .btn-outline-danger:disabled,html[data-netbox-color-mode=dark] .btn-outline-danger.disabled,html[data-netbox-color-mode=light] .btn-outline-danger:disabled,html[data-netbox-color-mode=light] .btn-outline-danger.disabled{color:#dc3545;background-color:transparent}}@media print{html .btn-outline-light,html[data-netbox-color-mode=dark] .btn-outline-light,html[data-netbox-color-mode=light] .btn-outline-light{color:#f8f9fa;border-color:#f8f9fa}html .btn-outline-light:hover,html[data-netbox-color-mode=dark] .btn-outline-light:hover,html[data-netbox-color-mode=light] .btn-outline-light:hover{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-check:focus+html .btn-outline-light,html .btn-outline-light:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-light,html[data-netbox-color-mode=dark] .btn-outline-light:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-light,html[data-netbox-color-mode=light] .btn-outline-light:focus{box-shadow:0 0 0 .25rem #f8f9fa80}.btn-check:checked+html .btn-outline-light,.btn-check:active+html .btn-outline-light,html .btn-outline-light:active,html .btn-outline-light.active,html .btn-outline-light.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-light,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-light,html[data-netbox-color-mode=dark] .btn-outline-light:active,html[data-netbox-color-mode=dark] .btn-outline-light.active,html[data-netbox-color-mode=dark] .btn-outline-light.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-light,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-light,html[data-netbox-color-mode=light] .btn-outline-light:active,html[data-netbox-color-mode=light] .btn-outline-light.active,html[data-netbox-color-mode=light] .btn-outline-light.dropdown-toggle.show{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-check:checked+html .btn-outline-light:focus,.btn-check:active+html .btn-outline-light:focus,html .btn-outline-light:active:focus,html .btn-outline-light.active:focus,html .btn-outline-light.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-light:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-light:focus,html[data-netbox-color-mode=dark] .btn-outline-light:active:focus,html[data-netbox-color-mode=dark] .btn-outline-light.active:focus,html[data-netbox-color-mode=dark] .btn-outline-light.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-light:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-light:focus,html[data-netbox-color-mode=light] .btn-outline-light:active:focus,html[data-netbox-color-mode=light] .btn-outline-light.active:focus,html[data-netbox-color-mode=light] .btn-outline-light.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #f8f9fa80}html .btn-outline-light:disabled,html .btn-outline-light.disabled,html[data-netbox-color-mode=dark] .btn-outline-light:disabled,html[data-netbox-color-mode=dark] .btn-outline-light.disabled,html[data-netbox-color-mode=light] .btn-outline-light:disabled,html[data-netbox-color-mode=light] .btn-outline-light.disabled{color:#f8f9fa;background-color:transparent}}@media print{html .btn-outline-dark,html[data-netbox-color-mode=dark] .btn-outline-dark,html[data-netbox-color-mode=light] .btn-outline-dark{color:#212529;border-color:#212529}html .btn-outline-dark:hover,html[data-netbox-color-mode=dark] .btn-outline-dark:hover,html[data-netbox-color-mode=light] .btn-outline-dark:hover{color:#fff;background-color:#212529;border-color:#212529}.btn-check:focus+html .btn-outline-dark,html .btn-outline-dark:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-dark,html[data-netbox-color-mode=dark] .btn-outline-dark:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-dark,html[data-netbox-color-mode=light] .btn-outline-dark:focus{box-shadow:0 0 0 .25rem #21252980}.btn-check:checked+html .btn-outline-dark,.btn-check:active+html .btn-outline-dark,html .btn-outline-dark:active,html .btn-outline-dark.active,html .btn-outline-dark.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-dark,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-dark,html[data-netbox-color-mode=dark] .btn-outline-dark:active,html[data-netbox-color-mode=dark] .btn-outline-dark.active,html[data-netbox-color-mode=dark] .btn-outline-dark.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-dark,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-dark,html[data-netbox-color-mode=light] .btn-outline-dark:active,html[data-netbox-color-mode=light] .btn-outline-dark.active,html[data-netbox-color-mode=light] .btn-outline-dark.dropdown-toggle.show{color:#fff;background-color:#212529;border-color:#212529}.btn-check:checked+html .btn-outline-dark:focus,.btn-check:active+html .btn-outline-dark:focus,html .btn-outline-dark:active:focus,html .btn-outline-dark.active:focus,html .btn-outline-dark.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-dark:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-dark:focus,html[data-netbox-color-mode=dark] .btn-outline-dark:active:focus,html[data-netbox-color-mode=dark] .btn-outline-dark.active:focus,html[data-netbox-color-mode=dark] .btn-outline-dark.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-dark:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-dark:focus,html[data-netbox-color-mode=light] .btn-outline-dark:active:focus,html[data-netbox-color-mode=light] .btn-outline-dark.active:focus,html[data-netbox-color-mode=light] .btn-outline-dark.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #21252980}html .btn-outline-dark:disabled,html .btn-outline-dark.disabled,html[data-netbox-color-mode=dark] .btn-outline-dark:disabled,html[data-netbox-color-mode=dark] .btn-outline-dark.disabled,html[data-netbox-color-mode=light] .btn-outline-dark:disabled,html[data-netbox-color-mode=light] .btn-outline-dark.disabled{color:#212529;background-color:transparent}}@media print{html .btn-outline-red,html[data-netbox-color-mode=dark] .btn-outline-red,html[data-netbox-color-mode=light] .btn-outline-red{color:#dc3545;border-color:#dc3545}html .btn-outline-red:hover,html[data-netbox-color-mode=dark] .btn-outline-red:hover,html[data-netbox-color-mode=light] .btn-outline-red:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-check:focus+html .btn-outline-red,html .btn-outline-red:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-red,html[data-netbox-color-mode=dark] .btn-outline-red:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-red,html[data-netbox-color-mode=light] .btn-outline-red:focus{box-shadow:0 0 0 .25rem #dc354580}.btn-check:checked+html .btn-outline-red,.btn-check:active+html .btn-outline-red,html .btn-outline-red:active,html .btn-outline-red.active,html .btn-outline-red.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-red,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-red,html[data-netbox-color-mode=dark] .btn-outline-red:active,html[data-netbox-color-mode=dark] .btn-outline-red.active,html[data-netbox-color-mode=dark] .btn-outline-red.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-red,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-red,html[data-netbox-color-mode=light] .btn-outline-red:active,html[data-netbox-color-mode=light] .btn-outline-red.active,html[data-netbox-color-mode=light] .btn-outline-red.dropdown-toggle.show{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-check:checked+html .btn-outline-red:focus,.btn-check:active+html .btn-outline-red:focus,html .btn-outline-red:active:focus,html .btn-outline-red.active:focus,html .btn-outline-red.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-red:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-red:focus,html[data-netbox-color-mode=dark] .btn-outline-red:active:focus,html[data-netbox-color-mode=dark] .btn-outline-red.active:focus,html[data-netbox-color-mode=dark] .btn-outline-red.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-red:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-red:focus,html[data-netbox-color-mode=light] .btn-outline-red:active:focus,html[data-netbox-color-mode=light] .btn-outline-red.active:focus,html[data-netbox-color-mode=light] .btn-outline-red.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #dc354580}html .btn-outline-red:disabled,html .btn-outline-red.disabled,html[data-netbox-color-mode=dark] .btn-outline-red:disabled,html[data-netbox-color-mode=dark] .btn-outline-red.disabled,html[data-netbox-color-mode=light] .btn-outline-red:disabled,html[data-netbox-color-mode=light] .btn-outline-red.disabled{color:#dc3545;background-color:transparent}}@media print{html .btn-outline-yellow,html[data-netbox-color-mode=dark] .btn-outline-yellow,html[data-netbox-color-mode=light] .btn-outline-yellow{color:#ffc107;border-color:#ffc107}html .btn-outline-yellow:hover,html[data-netbox-color-mode=dark] .btn-outline-yellow:hover,html[data-netbox-color-mode=light] .btn-outline-yellow:hover{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-check:focus+html .btn-outline-yellow,html .btn-outline-yellow:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-yellow,html[data-netbox-color-mode=dark] .btn-outline-yellow:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-yellow,html[data-netbox-color-mode=light] .btn-outline-yellow:focus{box-shadow:0 0 0 .25rem #ffc10780}.btn-check:checked+html .btn-outline-yellow,.btn-check:active+html .btn-outline-yellow,html .btn-outline-yellow:active,html .btn-outline-yellow.active,html .btn-outline-yellow.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-yellow,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-yellow,html[data-netbox-color-mode=dark] .btn-outline-yellow:active,html[data-netbox-color-mode=dark] .btn-outline-yellow.active,html[data-netbox-color-mode=dark] .btn-outline-yellow.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-yellow,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-yellow,html[data-netbox-color-mode=light] .btn-outline-yellow:active,html[data-netbox-color-mode=light] .btn-outline-yellow.active,html[data-netbox-color-mode=light] .btn-outline-yellow.dropdown-toggle.show{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-check:checked+html .btn-outline-yellow:focus,.btn-check:active+html .btn-outline-yellow:focus,html .btn-outline-yellow:active:focus,html .btn-outline-yellow.active:focus,html .btn-outline-yellow.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-yellow:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-yellow:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow:active:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow.active:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-yellow:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-yellow:focus,html[data-netbox-color-mode=light] .btn-outline-yellow:active:focus,html[data-netbox-color-mode=light] .btn-outline-yellow.active:focus,html[data-netbox-color-mode=light] .btn-outline-yellow.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #ffc10780}html .btn-outline-yellow:disabled,html .btn-outline-yellow.disabled,html[data-netbox-color-mode=dark] .btn-outline-yellow:disabled,html[data-netbox-color-mode=dark] .btn-outline-yellow.disabled,html[data-netbox-color-mode=light] .btn-outline-yellow:disabled,html[data-netbox-color-mode=light] .btn-outline-yellow.disabled{color:#ffc107;background-color:transparent}}@media print{html .btn-outline-green,html[data-netbox-color-mode=dark] .btn-outline-green,html[data-netbox-color-mode=light] .btn-outline-green{color:#198754;border-color:#198754}html .btn-outline-green:hover,html[data-netbox-color-mode=dark] .btn-outline-green:hover,html[data-netbox-color-mode=light] .btn-outline-green:hover{color:#fff;background-color:#198754;border-color:#198754}.btn-check:focus+html .btn-outline-green,html .btn-outline-green:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-green,html[data-netbox-color-mode=dark] .btn-outline-green:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-green,html[data-netbox-color-mode=light] .btn-outline-green:focus{box-shadow:0 0 0 .25rem #19875480}.btn-check:checked+html .btn-outline-green,.btn-check:active+html .btn-outline-green,html .btn-outline-green:active,html .btn-outline-green.active,html .btn-outline-green.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-green,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-green,html[data-netbox-color-mode=dark] .btn-outline-green:active,html[data-netbox-color-mode=dark] .btn-outline-green.active,html[data-netbox-color-mode=dark] .btn-outline-green.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-green,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-green,html[data-netbox-color-mode=light] .btn-outline-green:active,html[data-netbox-color-mode=light] .btn-outline-green.active,html[data-netbox-color-mode=light] .btn-outline-green.dropdown-toggle.show{color:#fff;background-color:#198754;border-color:#198754}.btn-check:checked+html .btn-outline-green:focus,.btn-check:active+html .btn-outline-green:focus,html .btn-outline-green:active:focus,html .btn-outline-green.active:focus,html .btn-outline-green.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-green:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-green:focus,html[data-netbox-color-mode=dark] .btn-outline-green:active:focus,html[data-netbox-color-mode=dark] .btn-outline-green.active:focus,html[data-netbox-color-mode=dark] .btn-outline-green.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-green:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-green:focus,html[data-netbox-color-mode=light] .btn-outline-green:active:focus,html[data-netbox-color-mode=light] .btn-outline-green.active:focus,html[data-netbox-color-mode=light] .btn-outline-green.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #19875480}html .btn-outline-green:disabled,html .btn-outline-green.disabled,html[data-netbox-color-mode=dark] .btn-outline-green:disabled,html[data-netbox-color-mode=dark] .btn-outline-green.disabled,html[data-netbox-color-mode=light] .btn-outline-green:disabled,html[data-netbox-color-mode=light] .btn-outline-green.disabled{color:#198754;background-color:transparent}}@media print{html .btn-outline-blue,html[data-netbox-color-mode=dark] .btn-outline-blue,html[data-netbox-color-mode=light] .btn-outline-blue{color:#0d6efd;border-color:#0d6efd}html .btn-outline-blue:hover,html[data-netbox-color-mode=dark] .btn-outline-blue:hover,html[data-netbox-color-mode=light] .btn-outline-blue:hover{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-check:focus+html .btn-outline-blue,html .btn-outline-blue:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-blue,html[data-netbox-color-mode=dark] .btn-outline-blue:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-blue,html[data-netbox-color-mode=light] .btn-outline-blue:focus{box-shadow:0 0 0 .25rem #0d6efd80}.btn-check:checked+html .btn-outline-blue,.btn-check:active+html .btn-outline-blue,html .btn-outline-blue:active,html .btn-outline-blue.active,html .btn-outline-blue.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-blue,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-blue,html[data-netbox-color-mode=dark] .btn-outline-blue:active,html[data-netbox-color-mode=dark] .btn-outline-blue.active,html[data-netbox-color-mode=dark] .btn-outline-blue.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-blue,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-blue,html[data-netbox-color-mode=light] .btn-outline-blue:active,html[data-netbox-color-mode=light] .btn-outline-blue.active,html[data-netbox-color-mode=light] .btn-outline-blue.dropdown-toggle.show{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-check:checked+html .btn-outline-blue:focus,.btn-check:active+html .btn-outline-blue:focus,html .btn-outline-blue:active:focus,html .btn-outline-blue.active:focus,html .btn-outline-blue.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-blue:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-blue:focus,html[data-netbox-color-mode=dark] .btn-outline-blue:active:focus,html[data-netbox-color-mode=dark] .btn-outline-blue.active:focus,html[data-netbox-color-mode=dark] .btn-outline-blue.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-blue:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-blue:focus,html[data-netbox-color-mode=light] .btn-outline-blue:active:focus,html[data-netbox-color-mode=light] .btn-outline-blue.active:focus,html[data-netbox-color-mode=light] .btn-outline-blue.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #0d6efd80}html .btn-outline-blue:disabled,html .btn-outline-blue.disabled,html[data-netbox-color-mode=dark] .btn-outline-blue:disabled,html[data-netbox-color-mode=dark] .btn-outline-blue.disabled,html[data-netbox-color-mode=light] .btn-outline-blue:disabled,html[data-netbox-color-mode=light] .btn-outline-blue.disabled{color:#0d6efd;background-color:transparent}}@media print{html .btn-outline-cyan,html[data-netbox-color-mode=dark] .btn-outline-cyan,html[data-netbox-color-mode=light] .btn-outline-cyan{color:#0dcaf0;border-color:#0dcaf0}html .btn-outline-cyan:hover,html[data-netbox-color-mode=dark] .btn-outline-cyan:hover,html[data-netbox-color-mode=light] .btn-outline-cyan:hover{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-check:focus+html .btn-outline-cyan,html .btn-outline-cyan:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-cyan,html[data-netbox-color-mode=dark] .btn-outline-cyan:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-cyan,html[data-netbox-color-mode=light] .btn-outline-cyan:focus{box-shadow:0 0 0 .25rem #0dcaf080}.btn-check:checked+html .btn-outline-cyan,.btn-check:active+html .btn-outline-cyan,html .btn-outline-cyan:active,html .btn-outline-cyan.active,html .btn-outline-cyan.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-cyan,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-cyan,html[data-netbox-color-mode=dark] .btn-outline-cyan:active,html[data-netbox-color-mode=dark] .btn-outline-cyan.active,html[data-netbox-color-mode=dark] .btn-outline-cyan.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-cyan,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-cyan,html[data-netbox-color-mode=light] .btn-outline-cyan:active,html[data-netbox-color-mode=light] .btn-outline-cyan.active,html[data-netbox-color-mode=light] .btn-outline-cyan.dropdown-toggle.show{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-check:checked+html .btn-outline-cyan:focus,.btn-check:active+html .btn-outline-cyan:focus,html .btn-outline-cyan:active:focus,html .btn-outline-cyan.active:focus,html .btn-outline-cyan.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-cyan:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-cyan:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan:active:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan.active:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-cyan:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-cyan:focus,html[data-netbox-color-mode=light] .btn-outline-cyan:active:focus,html[data-netbox-color-mode=light] .btn-outline-cyan.active:focus,html[data-netbox-color-mode=light] .btn-outline-cyan.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #0dcaf080}html .btn-outline-cyan:disabled,html .btn-outline-cyan.disabled,html[data-netbox-color-mode=dark] .btn-outline-cyan:disabled,html[data-netbox-color-mode=dark] .btn-outline-cyan.disabled,html[data-netbox-color-mode=light] .btn-outline-cyan:disabled,html[data-netbox-color-mode=light] .btn-outline-cyan.disabled{color:#0dcaf0;background-color:transparent}}@media print{html .btn-outline-indigo,html[data-netbox-color-mode=dark] .btn-outline-indigo,html[data-netbox-color-mode=light] .btn-outline-indigo{color:#6610f2;border-color:#6610f2}html .btn-outline-indigo:hover,html[data-netbox-color-mode=dark] .btn-outline-indigo:hover,html[data-netbox-color-mode=light] .btn-outline-indigo:hover{color:#fff;background-color:#6610f2;border-color:#6610f2}.btn-check:focus+html .btn-outline-indigo,html .btn-outline-indigo:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-indigo,html[data-netbox-color-mode=dark] .btn-outline-indigo:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-indigo,html[data-netbox-color-mode=light] .btn-outline-indigo:focus{box-shadow:0 0 0 .25rem #6610f280}.btn-check:checked+html .btn-outline-indigo,.btn-check:active+html .btn-outline-indigo,html .btn-outline-indigo:active,html .btn-outline-indigo.active,html .btn-outline-indigo.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-indigo,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-indigo,html[data-netbox-color-mode=dark] .btn-outline-indigo:active,html[data-netbox-color-mode=dark] .btn-outline-indigo.active,html[data-netbox-color-mode=dark] .btn-outline-indigo.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-indigo,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-indigo,html[data-netbox-color-mode=light] .btn-outline-indigo:active,html[data-netbox-color-mode=light] .btn-outline-indigo.active,html[data-netbox-color-mode=light] .btn-outline-indigo.dropdown-toggle.show{color:#fff;background-color:#6610f2;border-color:#6610f2}.btn-check:checked+html .btn-outline-indigo:focus,.btn-check:active+html .btn-outline-indigo:focus,html .btn-outline-indigo:active:focus,html .btn-outline-indigo.active:focus,html .btn-outline-indigo.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-indigo:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-indigo:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo:active:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo.active:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-indigo:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-indigo:focus,html[data-netbox-color-mode=light] .btn-outline-indigo:active:focus,html[data-netbox-color-mode=light] .btn-outline-indigo.active:focus,html[data-netbox-color-mode=light] .btn-outline-indigo.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #6610f280}html .btn-outline-indigo:disabled,html .btn-outline-indigo.disabled,html[data-netbox-color-mode=dark] .btn-outline-indigo:disabled,html[data-netbox-color-mode=dark] .btn-outline-indigo.disabled,html[data-netbox-color-mode=light] .btn-outline-indigo:disabled,html[data-netbox-color-mode=light] .btn-outline-indigo.disabled{color:#6610f2;background-color:transparent}}@media print{html .btn-outline-purple,html[data-netbox-color-mode=dark] .btn-outline-purple,html[data-netbox-color-mode=light] .btn-outline-purple{color:#6f42c1;border-color:#6f42c1}html .btn-outline-purple:hover,html[data-netbox-color-mode=dark] .btn-outline-purple:hover,html[data-netbox-color-mode=light] .btn-outline-purple:hover{color:#fff;background-color:#6f42c1;border-color:#6f42c1}.btn-check:focus+html .btn-outline-purple,html .btn-outline-purple:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-purple,html[data-netbox-color-mode=dark] .btn-outline-purple:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-purple,html[data-netbox-color-mode=light] .btn-outline-purple:focus{box-shadow:0 0 0 .25rem #6f42c180}.btn-check:checked+html .btn-outline-purple,.btn-check:active+html .btn-outline-purple,html .btn-outline-purple:active,html .btn-outline-purple.active,html .btn-outline-purple.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-purple,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-purple,html[data-netbox-color-mode=dark] .btn-outline-purple:active,html[data-netbox-color-mode=dark] .btn-outline-purple.active,html[data-netbox-color-mode=dark] .btn-outline-purple.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-purple,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-purple,html[data-netbox-color-mode=light] .btn-outline-purple:active,html[data-netbox-color-mode=light] .btn-outline-purple.active,html[data-netbox-color-mode=light] .btn-outline-purple.dropdown-toggle.show{color:#fff;background-color:#6f42c1;border-color:#6f42c1}.btn-check:checked+html .btn-outline-purple:focus,.btn-check:active+html .btn-outline-purple:focus,html .btn-outline-purple:active:focus,html .btn-outline-purple.active:focus,html .btn-outline-purple.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-purple:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-purple:focus,html[data-netbox-color-mode=dark] .btn-outline-purple:active:focus,html[data-netbox-color-mode=dark] .btn-outline-purple.active:focus,html[data-netbox-color-mode=dark] .btn-outline-purple.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-purple:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-purple:focus,html[data-netbox-color-mode=light] .btn-outline-purple:active:focus,html[data-netbox-color-mode=light] .btn-outline-purple.active:focus,html[data-netbox-color-mode=light] .btn-outline-purple.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #6f42c180}html .btn-outline-purple:disabled,html .btn-outline-purple.disabled,html[data-netbox-color-mode=dark] .btn-outline-purple:disabled,html[data-netbox-color-mode=dark] .btn-outline-purple.disabled,html[data-netbox-color-mode=light] .btn-outline-purple:disabled,html[data-netbox-color-mode=light] .btn-outline-purple.disabled{color:#6f42c1;background-color:transparent}}@media print{html .btn-outline-pink,html[data-netbox-color-mode=dark] .btn-outline-pink,html[data-netbox-color-mode=light] .btn-outline-pink{color:#d63384;border-color:#d63384}html .btn-outline-pink:hover,html[data-netbox-color-mode=dark] .btn-outline-pink:hover,html[data-netbox-color-mode=light] .btn-outline-pink:hover{color:#fff;background-color:#d63384;border-color:#d63384}.btn-check:focus+html .btn-outline-pink,html .btn-outline-pink:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-pink,html[data-netbox-color-mode=dark] .btn-outline-pink:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-pink,html[data-netbox-color-mode=light] .btn-outline-pink:focus{box-shadow:0 0 0 .25rem #d6338480}.btn-check:checked+html .btn-outline-pink,.btn-check:active+html .btn-outline-pink,html .btn-outline-pink:active,html .btn-outline-pink.active,html .btn-outline-pink.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-pink,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-pink,html[data-netbox-color-mode=dark] .btn-outline-pink:active,html[data-netbox-color-mode=dark] .btn-outline-pink.active,html[data-netbox-color-mode=dark] .btn-outline-pink.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-pink,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-pink,html[data-netbox-color-mode=light] .btn-outline-pink:active,html[data-netbox-color-mode=light] .btn-outline-pink.active,html[data-netbox-color-mode=light] .btn-outline-pink.dropdown-toggle.show{color:#fff;background-color:#d63384;border-color:#d63384}.btn-check:checked+html .btn-outline-pink:focus,.btn-check:active+html .btn-outline-pink:focus,html .btn-outline-pink:active:focus,html .btn-outline-pink.active:focus,html .btn-outline-pink.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-pink:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-pink:focus,html[data-netbox-color-mode=dark] .btn-outline-pink:active:focus,html[data-netbox-color-mode=dark] .btn-outline-pink.active:focus,html[data-netbox-color-mode=dark] .btn-outline-pink.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-pink:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-pink:focus,html[data-netbox-color-mode=light] .btn-outline-pink:active:focus,html[data-netbox-color-mode=light] .btn-outline-pink.active:focus,html[data-netbox-color-mode=light] .btn-outline-pink.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #d6338480}html .btn-outline-pink:disabled,html .btn-outline-pink.disabled,html[data-netbox-color-mode=dark] .btn-outline-pink:disabled,html[data-netbox-color-mode=dark] .btn-outline-pink.disabled,html[data-netbox-color-mode=light] .btn-outline-pink:disabled,html[data-netbox-color-mode=light] .btn-outline-pink.disabled{color:#d63384;background-color:transparent}}@media print{html .btn-outline-darker,html[data-netbox-color-mode=dark] .btn-outline-darker,html[data-netbox-color-mode=light] .btn-outline-darker{color:#1b1f22;border-color:#1b1f22}html .btn-outline-darker:hover,html[data-netbox-color-mode=dark] .btn-outline-darker:hover,html[data-netbox-color-mode=light] .btn-outline-darker:hover{color:#fff;background-color:#1b1f22;border-color:#1b1f22}.btn-check:focus+html .btn-outline-darker,html .btn-outline-darker:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-darker,html[data-netbox-color-mode=dark] .btn-outline-darker:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-darker,html[data-netbox-color-mode=light] .btn-outline-darker:focus{box-shadow:0 0 0 .25rem #1b1f2280}.btn-check:checked+html .btn-outline-darker,.btn-check:active+html .btn-outline-darker,html .btn-outline-darker:active,html .btn-outline-darker.active,html .btn-outline-darker.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-darker,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-darker,html[data-netbox-color-mode=dark] .btn-outline-darker:active,html[data-netbox-color-mode=dark] .btn-outline-darker.active,html[data-netbox-color-mode=dark] .btn-outline-darker.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-darker,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-darker,html[data-netbox-color-mode=light] .btn-outline-darker:active,html[data-netbox-color-mode=light] .btn-outline-darker.active,html[data-netbox-color-mode=light] .btn-outline-darker.dropdown-toggle.show{color:#fff;background-color:#1b1f22;border-color:#1b1f22}.btn-check:checked+html .btn-outline-darker:focus,.btn-check:active+html .btn-outline-darker:focus,html .btn-outline-darker:active:focus,html .btn-outline-darker.active:focus,html .btn-outline-darker.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-darker:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-darker:focus,html[data-netbox-color-mode=dark] .btn-outline-darker:active:focus,html[data-netbox-color-mode=dark] .btn-outline-darker.active:focus,html[data-netbox-color-mode=dark] .btn-outline-darker.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-darker:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-darker:focus,html[data-netbox-color-mode=light] .btn-outline-darker:active:focus,html[data-netbox-color-mode=light] .btn-outline-darker.active:focus,html[data-netbox-color-mode=light] .btn-outline-darker.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #1b1f2280}html .btn-outline-darker:disabled,html .btn-outline-darker.disabled,html[data-netbox-color-mode=dark] .btn-outline-darker:disabled,html[data-netbox-color-mode=dark] .btn-outline-darker.disabled,html[data-netbox-color-mode=light] .btn-outline-darker:disabled,html[data-netbox-color-mode=light] .btn-outline-darker.disabled{color:#1b1f22;background-color:transparent}}@media print{html .btn-outline-darkest,html[data-netbox-color-mode=dark] .btn-outline-darkest,html[data-netbox-color-mode=light] .btn-outline-darkest{color:#171b1d;border-color:#171b1d}html .btn-outline-darkest:hover,html[data-netbox-color-mode=dark] .btn-outline-darkest:hover,html[data-netbox-color-mode=light] .btn-outline-darkest:hover{color:#fff;background-color:#171b1d;border-color:#171b1d}.btn-check:focus+html .btn-outline-darkest,html .btn-outline-darkest:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-darkest,html[data-netbox-color-mode=dark] .btn-outline-darkest:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-darkest,html[data-netbox-color-mode=light] .btn-outline-darkest:focus{box-shadow:0 0 0 .25rem #171b1d80}.btn-check:checked+html .btn-outline-darkest,.btn-check:active+html .btn-outline-darkest,html .btn-outline-darkest:active,html .btn-outline-darkest.active,html .btn-outline-darkest.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-darkest,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-darkest,html[data-netbox-color-mode=dark] .btn-outline-darkest:active,html[data-netbox-color-mode=dark] .btn-outline-darkest.active,html[data-netbox-color-mode=dark] .btn-outline-darkest.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-darkest,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-darkest,html[data-netbox-color-mode=light] .btn-outline-darkest:active,html[data-netbox-color-mode=light] .btn-outline-darkest.active,html[data-netbox-color-mode=light] .btn-outline-darkest.dropdown-toggle.show{color:#fff;background-color:#171b1d;border-color:#171b1d}.btn-check:checked+html .btn-outline-darkest:focus,.btn-check:active+html .btn-outline-darkest:focus,html .btn-outline-darkest:active:focus,html .btn-outline-darkest.active:focus,html .btn-outline-darkest.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-darkest:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-darkest:focus,html[data-netbox-color-mode=dark] .btn-outline-darkest:active:focus,html[data-netbox-color-mode=dark] .btn-outline-darkest.active:focus,html[data-netbox-color-mode=dark] .btn-outline-darkest.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-darkest:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-darkest:focus,html[data-netbox-color-mode=light] .btn-outline-darkest:active:focus,html[data-netbox-color-mode=light] .btn-outline-darkest.active:focus,html[data-netbox-color-mode=light] .btn-outline-darkest.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #171b1d80}html .btn-outline-darkest:disabled,html .btn-outline-darkest.disabled,html[data-netbox-color-mode=dark] .btn-outline-darkest:disabled,html[data-netbox-color-mode=dark] .btn-outline-darkest.disabled,html[data-netbox-color-mode=light] .btn-outline-darkest:disabled,html[data-netbox-color-mode=light] .btn-outline-darkest.disabled{color:#171b1d;background-color:transparent}}@media print{html .btn-outline-gray,html[data-netbox-color-mode=dark] .btn-outline-gray,html[data-netbox-color-mode=light] .btn-outline-gray{color:#ced4da;border-color:#ced4da}html .btn-outline-gray:hover,html[data-netbox-color-mode=dark] .btn-outline-gray:hover,html[data-netbox-color-mode=light] .btn-outline-gray:hover{color:#000;background-color:#ced4da;border-color:#ced4da}.btn-check:focus+html .btn-outline-gray,html .btn-outline-gray:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-gray,html[data-netbox-color-mode=dark] .btn-outline-gray:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-gray,html[data-netbox-color-mode=light] .btn-outline-gray:focus{box-shadow:0 0 0 .25rem #ced4da80}.btn-check:checked+html .btn-outline-gray,.btn-check:active+html .btn-outline-gray,html .btn-outline-gray:active,html .btn-outline-gray.active,html .btn-outline-gray.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-gray,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-gray,html[data-netbox-color-mode=dark] .btn-outline-gray:active,html[data-netbox-color-mode=dark] .btn-outline-gray.active,html[data-netbox-color-mode=dark] .btn-outline-gray.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-gray,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-gray,html[data-netbox-color-mode=light] .btn-outline-gray:active,html[data-netbox-color-mode=light] .btn-outline-gray.active,html[data-netbox-color-mode=light] .btn-outline-gray.dropdown-toggle.show{color:#000;background-color:#ced4da;border-color:#ced4da}.btn-check:checked+html .btn-outline-gray:focus,.btn-check:active+html .btn-outline-gray:focus,html .btn-outline-gray:active:focus,html .btn-outline-gray.active:focus,html .btn-outline-gray.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-gray:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-gray:focus,html[data-netbox-color-mode=dark] .btn-outline-gray:active:focus,html[data-netbox-color-mode=dark] .btn-outline-gray.active:focus,html[data-netbox-color-mode=dark] .btn-outline-gray.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-gray:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-gray:focus,html[data-netbox-color-mode=light] .btn-outline-gray:active:focus,html[data-netbox-color-mode=light] .btn-outline-gray.active:focus,html[data-netbox-color-mode=light] .btn-outline-gray.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #ced4da80}html .btn-outline-gray:disabled,html .btn-outline-gray.disabled,html[data-netbox-color-mode=dark] .btn-outline-gray:disabled,html[data-netbox-color-mode=dark] .btn-outline-gray.disabled,html[data-netbox-color-mode=light] .btn-outline-gray:disabled,html[data-netbox-color-mode=light] .btn-outline-gray.disabled{color:#ced4da;background-color:transparent}}@media print{html .btn-outline-gray-100,html[data-netbox-color-mode=dark] .btn-outline-gray-100,html[data-netbox-color-mode=light] .btn-outline-gray-100{color:#f8f9fa;border-color:#f8f9fa}html .btn-outline-gray-100:hover,html[data-netbox-color-mode=dark] .btn-outline-gray-100:hover,html[data-netbox-color-mode=light] .btn-outline-gray-100:hover{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-check:focus+html .btn-outline-gray-100,html .btn-outline-gray-100:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-gray-100,html[data-netbox-color-mode=dark] .btn-outline-gray-100:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-gray-100,html[data-netbox-color-mode=light] .btn-outline-gray-100:focus{box-shadow:0 0 0 .25rem #f8f9fa80}.btn-check:checked+html .btn-outline-gray-100,.btn-check:active+html .btn-outline-gray-100,html .btn-outline-gray-100:active,html .btn-outline-gray-100.active,html .btn-outline-gray-100.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-gray-100,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-gray-100,html[data-netbox-color-mode=dark] .btn-outline-gray-100:active,html[data-netbox-color-mode=dark] .btn-outline-gray-100.active,html[data-netbox-color-mode=dark] .btn-outline-gray-100.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-gray-100,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-gray-100,html[data-netbox-color-mode=light] .btn-outline-gray-100:active,html[data-netbox-color-mode=light] .btn-outline-gray-100.active,html[data-netbox-color-mode=light] .btn-outline-gray-100.dropdown-toggle.show{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-check:checked+html .btn-outline-gray-100:focus,.btn-check:active+html .btn-outline-gray-100:focus,html .btn-outline-gray-100:active:focus,html .btn-outline-gray-100.active:focus,html .btn-outline-gray-100.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-gray-100:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-gray-100:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-100:active:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-100.active:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-100.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-gray-100:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-gray-100:focus,html[data-netbox-color-mode=light] .btn-outline-gray-100:active:focus,html[data-netbox-color-mode=light] .btn-outline-gray-100.active:focus,html[data-netbox-color-mode=light] .btn-outline-gray-100.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #f8f9fa80}html .btn-outline-gray-100:disabled,html .btn-outline-gray-100.disabled,html[data-netbox-color-mode=dark] .btn-outline-gray-100:disabled,html[data-netbox-color-mode=dark] .btn-outline-gray-100.disabled,html[data-netbox-color-mode=light] .btn-outline-gray-100:disabled,html[data-netbox-color-mode=light] .btn-outline-gray-100.disabled{color:#f8f9fa;background-color:transparent}}@media print{html .btn-outline-gray-200,html[data-netbox-color-mode=dark] .btn-outline-gray-200,html[data-netbox-color-mode=light] .btn-outline-gray-200{color:#e9ecef;border-color:#e9ecef}html .btn-outline-gray-200:hover,html[data-netbox-color-mode=dark] .btn-outline-gray-200:hover,html[data-netbox-color-mode=light] .btn-outline-gray-200:hover{color:#000;background-color:#e9ecef;border-color:#e9ecef}.btn-check:focus+html .btn-outline-gray-200,html .btn-outline-gray-200:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-gray-200,html[data-netbox-color-mode=dark] .btn-outline-gray-200:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-gray-200,html[data-netbox-color-mode=light] .btn-outline-gray-200:focus{box-shadow:0 0 0 .25rem #e9ecef80}.btn-check:checked+html .btn-outline-gray-200,.btn-check:active+html .btn-outline-gray-200,html .btn-outline-gray-200:active,html .btn-outline-gray-200.active,html .btn-outline-gray-200.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-gray-200,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-gray-200,html[data-netbox-color-mode=dark] .btn-outline-gray-200:active,html[data-netbox-color-mode=dark] .btn-outline-gray-200.active,html[data-netbox-color-mode=dark] .btn-outline-gray-200.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-gray-200,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-gray-200,html[data-netbox-color-mode=light] .btn-outline-gray-200:active,html[data-netbox-color-mode=light] .btn-outline-gray-200.active,html[data-netbox-color-mode=light] .btn-outline-gray-200.dropdown-toggle.show{color:#000;background-color:#e9ecef;border-color:#e9ecef}.btn-check:checked+html .btn-outline-gray-200:focus,.btn-check:active+html .btn-outline-gray-200:focus,html .btn-outline-gray-200:active:focus,html .btn-outline-gray-200.active:focus,html .btn-outline-gray-200.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-gray-200:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-gray-200:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-200:active:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-200.active:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-200.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-gray-200:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-gray-200:focus,html[data-netbox-color-mode=light] .btn-outline-gray-200:active:focus,html[data-netbox-color-mode=light] .btn-outline-gray-200.active:focus,html[data-netbox-color-mode=light] .btn-outline-gray-200.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #e9ecef80}html .btn-outline-gray-200:disabled,html .btn-outline-gray-200.disabled,html[data-netbox-color-mode=dark] .btn-outline-gray-200:disabled,html[data-netbox-color-mode=dark] .btn-outline-gray-200.disabled,html[data-netbox-color-mode=light] .btn-outline-gray-200:disabled,html[data-netbox-color-mode=light] .btn-outline-gray-200.disabled{color:#e9ecef;background-color:transparent}}@media print{html .btn-outline-gray-300,html[data-netbox-color-mode=dark] .btn-outline-gray-300,html[data-netbox-color-mode=light] .btn-outline-gray-300{color:#dee2e6;border-color:#dee2e6}html .btn-outline-gray-300:hover,html[data-netbox-color-mode=dark] .btn-outline-gray-300:hover,html[data-netbox-color-mode=light] .btn-outline-gray-300:hover{color:#000;background-color:#dee2e6;border-color:#dee2e6}.btn-check:focus+html .btn-outline-gray-300,html .btn-outline-gray-300:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-gray-300,html[data-netbox-color-mode=dark] .btn-outline-gray-300:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-gray-300,html[data-netbox-color-mode=light] .btn-outline-gray-300:focus{box-shadow:0 0 0 .25rem #dee2e680}.btn-check:checked+html .btn-outline-gray-300,.btn-check:active+html .btn-outline-gray-300,html .btn-outline-gray-300:active,html .btn-outline-gray-300.active,html .btn-outline-gray-300.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-gray-300,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-gray-300,html[data-netbox-color-mode=dark] .btn-outline-gray-300:active,html[data-netbox-color-mode=dark] .btn-outline-gray-300.active,html[data-netbox-color-mode=dark] .btn-outline-gray-300.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-gray-300,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-gray-300,html[data-netbox-color-mode=light] .btn-outline-gray-300:active,html[data-netbox-color-mode=light] .btn-outline-gray-300.active,html[data-netbox-color-mode=light] .btn-outline-gray-300.dropdown-toggle.show{color:#000;background-color:#dee2e6;border-color:#dee2e6}.btn-check:checked+html .btn-outline-gray-300:focus,.btn-check:active+html .btn-outline-gray-300:focus,html .btn-outline-gray-300:active:focus,html .btn-outline-gray-300.active:focus,html .btn-outline-gray-300.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-gray-300:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-gray-300:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-300:active:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-300.active:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-300.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-gray-300:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-gray-300:focus,html[data-netbox-color-mode=light] .btn-outline-gray-300:active:focus,html[data-netbox-color-mode=light] .btn-outline-gray-300.active:focus,html[data-netbox-color-mode=light] .btn-outline-gray-300.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #dee2e680}html .btn-outline-gray-300:disabled,html .btn-outline-gray-300.disabled,html[data-netbox-color-mode=dark] .btn-outline-gray-300:disabled,html[data-netbox-color-mode=dark] .btn-outline-gray-300.disabled,html[data-netbox-color-mode=light] .btn-outline-gray-300:disabled,html[data-netbox-color-mode=light] .btn-outline-gray-300.disabled{color:#dee2e6;background-color:transparent}}@media print{html .btn-outline-gray-400,html[data-netbox-color-mode=dark] .btn-outline-gray-400,html[data-netbox-color-mode=light] .btn-outline-gray-400{color:#ced4da;border-color:#ced4da}html .btn-outline-gray-400:hover,html[data-netbox-color-mode=dark] .btn-outline-gray-400:hover,html[data-netbox-color-mode=light] .btn-outline-gray-400:hover{color:#000;background-color:#ced4da;border-color:#ced4da}.btn-check:focus+html .btn-outline-gray-400,html .btn-outline-gray-400:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-gray-400,html[data-netbox-color-mode=dark] .btn-outline-gray-400:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-gray-400,html[data-netbox-color-mode=light] .btn-outline-gray-400:focus{box-shadow:0 0 0 .25rem #ced4da80}.btn-check:checked+html .btn-outline-gray-400,.btn-check:active+html .btn-outline-gray-400,html .btn-outline-gray-400:active,html .btn-outline-gray-400.active,html .btn-outline-gray-400.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-gray-400,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-gray-400,html[data-netbox-color-mode=dark] .btn-outline-gray-400:active,html[data-netbox-color-mode=dark] .btn-outline-gray-400.active,html[data-netbox-color-mode=dark] .btn-outline-gray-400.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-gray-400,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-gray-400,html[data-netbox-color-mode=light] .btn-outline-gray-400:active,html[data-netbox-color-mode=light] .btn-outline-gray-400.active,html[data-netbox-color-mode=light] .btn-outline-gray-400.dropdown-toggle.show{color:#000;background-color:#ced4da;border-color:#ced4da}.btn-check:checked+html .btn-outline-gray-400:focus,.btn-check:active+html .btn-outline-gray-400:focus,html .btn-outline-gray-400:active:focus,html .btn-outline-gray-400.active:focus,html .btn-outline-gray-400.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-gray-400:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-gray-400:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-400:active:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-400.active:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-400.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-gray-400:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-gray-400:focus,html[data-netbox-color-mode=light] .btn-outline-gray-400:active:focus,html[data-netbox-color-mode=light] .btn-outline-gray-400.active:focus,html[data-netbox-color-mode=light] .btn-outline-gray-400.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #ced4da80}html .btn-outline-gray-400:disabled,html .btn-outline-gray-400.disabled,html[data-netbox-color-mode=dark] .btn-outline-gray-400:disabled,html[data-netbox-color-mode=dark] .btn-outline-gray-400.disabled,html[data-netbox-color-mode=light] .btn-outline-gray-400:disabled,html[data-netbox-color-mode=light] .btn-outline-gray-400.disabled{color:#ced4da;background-color:transparent}}@media print{html .btn-outline-gray-500,html[data-netbox-color-mode=dark] .btn-outline-gray-500,html[data-netbox-color-mode=light] .btn-outline-gray-500{color:#adb5bd;border-color:#adb5bd}html .btn-outline-gray-500:hover,html[data-netbox-color-mode=dark] .btn-outline-gray-500:hover,html[data-netbox-color-mode=light] .btn-outline-gray-500:hover{color:#000;background-color:#adb5bd;border-color:#adb5bd}.btn-check:focus+html .btn-outline-gray-500,html .btn-outline-gray-500:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-gray-500,html[data-netbox-color-mode=dark] .btn-outline-gray-500:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-gray-500,html[data-netbox-color-mode=light] .btn-outline-gray-500:focus{box-shadow:0 0 0 .25rem #adb5bd80}.btn-check:checked+html .btn-outline-gray-500,.btn-check:active+html .btn-outline-gray-500,html .btn-outline-gray-500:active,html .btn-outline-gray-500.active,html .btn-outline-gray-500.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-gray-500,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-gray-500,html[data-netbox-color-mode=dark] .btn-outline-gray-500:active,html[data-netbox-color-mode=dark] .btn-outline-gray-500.active,html[data-netbox-color-mode=dark] .btn-outline-gray-500.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-gray-500,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-gray-500,html[data-netbox-color-mode=light] .btn-outline-gray-500:active,html[data-netbox-color-mode=light] .btn-outline-gray-500.active,html[data-netbox-color-mode=light] .btn-outline-gray-500.dropdown-toggle.show{color:#000;background-color:#adb5bd;border-color:#adb5bd}.btn-check:checked+html .btn-outline-gray-500:focus,.btn-check:active+html .btn-outline-gray-500:focus,html .btn-outline-gray-500:active:focus,html .btn-outline-gray-500.active:focus,html .btn-outline-gray-500.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-gray-500:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-gray-500:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-500:active:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-500.active:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-500.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-gray-500:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-gray-500:focus,html[data-netbox-color-mode=light] .btn-outline-gray-500:active:focus,html[data-netbox-color-mode=light] .btn-outline-gray-500.active:focus,html[data-netbox-color-mode=light] .btn-outline-gray-500.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #adb5bd80}html .btn-outline-gray-500:disabled,html .btn-outline-gray-500.disabled,html[data-netbox-color-mode=dark] .btn-outline-gray-500:disabled,html[data-netbox-color-mode=dark] .btn-outline-gray-500.disabled,html[data-netbox-color-mode=light] .btn-outline-gray-500:disabled,html[data-netbox-color-mode=light] .btn-outline-gray-500.disabled{color:#adb5bd;background-color:transparent}}@media print{html .btn-outline-gray-600,html[data-netbox-color-mode=dark] .btn-outline-gray-600,html[data-netbox-color-mode=light] .btn-outline-gray-600{color:#6c757d;border-color:#6c757d}html .btn-outline-gray-600:hover,html[data-netbox-color-mode=dark] .btn-outline-gray-600:hover,html[data-netbox-color-mode=light] .btn-outline-gray-600:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-check:focus+html .btn-outline-gray-600,html .btn-outline-gray-600:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-gray-600,html[data-netbox-color-mode=dark] .btn-outline-gray-600:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-gray-600,html[data-netbox-color-mode=light] .btn-outline-gray-600:focus{box-shadow:0 0 0 .25rem #6c757d80}.btn-check:checked+html .btn-outline-gray-600,.btn-check:active+html .btn-outline-gray-600,html .btn-outline-gray-600:active,html .btn-outline-gray-600.active,html .btn-outline-gray-600.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-gray-600,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-gray-600,html[data-netbox-color-mode=dark] .btn-outline-gray-600:active,html[data-netbox-color-mode=dark] .btn-outline-gray-600.active,html[data-netbox-color-mode=dark] .btn-outline-gray-600.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-gray-600,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-gray-600,html[data-netbox-color-mode=light] .btn-outline-gray-600:active,html[data-netbox-color-mode=light] .btn-outline-gray-600.active,html[data-netbox-color-mode=light] .btn-outline-gray-600.dropdown-toggle.show{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-check:checked+html .btn-outline-gray-600:focus,.btn-check:active+html .btn-outline-gray-600:focus,html .btn-outline-gray-600:active:focus,html .btn-outline-gray-600.active:focus,html .btn-outline-gray-600.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-gray-600:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-gray-600:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-600:active:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-600.active:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-600.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-gray-600:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-gray-600:focus,html[data-netbox-color-mode=light] .btn-outline-gray-600:active:focus,html[data-netbox-color-mode=light] .btn-outline-gray-600.active:focus,html[data-netbox-color-mode=light] .btn-outline-gray-600.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #6c757d80}html .btn-outline-gray-600:disabled,html .btn-outline-gray-600.disabled,html[data-netbox-color-mode=dark] .btn-outline-gray-600:disabled,html[data-netbox-color-mode=dark] .btn-outline-gray-600.disabled,html[data-netbox-color-mode=light] .btn-outline-gray-600:disabled,html[data-netbox-color-mode=light] .btn-outline-gray-600.disabled{color:#6c757d;background-color:transparent}}@media print{html .btn-outline-gray-700,html[data-netbox-color-mode=dark] .btn-outline-gray-700,html[data-netbox-color-mode=light] .btn-outline-gray-700{color:#495057;border-color:#495057}html .btn-outline-gray-700:hover,html[data-netbox-color-mode=dark] .btn-outline-gray-700:hover,html[data-netbox-color-mode=light] .btn-outline-gray-700:hover{color:#fff;background-color:#495057;border-color:#495057}.btn-check:focus+html .btn-outline-gray-700,html .btn-outline-gray-700:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-gray-700,html[data-netbox-color-mode=dark] .btn-outline-gray-700:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-gray-700,html[data-netbox-color-mode=light] .btn-outline-gray-700:focus{box-shadow:0 0 0 .25rem #49505780}.btn-check:checked+html .btn-outline-gray-700,.btn-check:active+html .btn-outline-gray-700,html .btn-outline-gray-700:active,html .btn-outline-gray-700.active,html .btn-outline-gray-700.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-gray-700,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-gray-700,html[data-netbox-color-mode=dark] .btn-outline-gray-700:active,html[data-netbox-color-mode=dark] .btn-outline-gray-700.active,html[data-netbox-color-mode=dark] .btn-outline-gray-700.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-gray-700,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-gray-700,html[data-netbox-color-mode=light] .btn-outline-gray-700:active,html[data-netbox-color-mode=light] .btn-outline-gray-700.active,html[data-netbox-color-mode=light] .btn-outline-gray-700.dropdown-toggle.show{color:#fff;background-color:#495057;border-color:#495057}.btn-check:checked+html .btn-outline-gray-700:focus,.btn-check:active+html .btn-outline-gray-700:focus,html .btn-outline-gray-700:active:focus,html .btn-outline-gray-700.active:focus,html .btn-outline-gray-700.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-gray-700:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-gray-700:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-700:active:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-700.active:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-700.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-gray-700:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-gray-700:focus,html[data-netbox-color-mode=light] .btn-outline-gray-700:active:focus,html[data-netbox-color-mode=light] .btn-outline-gray-700.active:focus,html[data-netbox-color-mode=light] .btn-outline-gray-700.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #49505780}html .btn-outline-gray-700:disabled,html .btn-outline-gray-700.disabled,html[data-netbox-color-mode=dark] .btn-outline-gray-700:disabled,html[data-netbox-color-mode=dark] .btn-outline-gray-700.disabled,html[data-netbox-color-mode=light] .btn-outline-gray-700:disabled,html[data-netbox-color-mode=light] .btn-outline-gray-700.disabled{color:#495057;background-color:transparent}}@media print{html .btn-outline-gray-800,html[data-netbox-color-mode=dark] .btn-outline-gray-800,html[data-netbox-color-mode=light] .btn-outline-gray-800{color:#343a40;border-color:#343a40}html .btn-outline-gray-800:hover,html[data-netbox-color-mode=dark] .btn-outline-gray-800:hover,html[data-netbox-color-mode=light] .btn-outline-gray-800:hover{color:#fff;background-color:#343a40;border-color:#343a40}.btn-check:focus+html .btn-outline-gray-800,html .btn-outline-gray-800:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-gray-800,html[data-netbox-color-mode=dark] .btn-outline-gray-800:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-gray-800,html[data-netbox-color-mode=light] .btn-outline-gray-800:focus{box-shadow:0 0 0 .25rem #343a4080}.btn-check:checked+html .btn-outline-gray-800,.btn-check:active+html .btn-outline-gray-800,html .btn-outline-gray-800:active,html .btn-outline-gray-800.active,html .btn-outline-gray-800.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-gray-800,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-gray-800,html[data-netbox-color-mode=dark] .btn-outline-gray-800:active,html[data-netbox-color-mode=dark] .btn-outline-gray-800.active,html[data-netbox-color-mode=dark] .btn-outline-gray-800.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-gray-800,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-gray-800,html[data-netbox-color-mode=light] .btn-outline-gray-800:active,html[data-netbox-color-mode=light] .btn-outline-gray-800.active,html[data-netbox-color-mode=light] .btn-outline-gray-800.dropdown-toggle.show{color:#fff;background-color:#343a40;border-color:#343a40}.btn-check:checked+html .btn-outline-gray-800:focus,.btn-check:active+html .btn-outline-gray-800:focus,html .btn-outline-gray-800:active:focus,html .btn-outline-gray-800.active:focus,html .btn-outline-gray-800.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-gray-800:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-gray-800:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-800:active:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-800.active:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-800.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-gray-800:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-gray-800:focus,html[data-netbox-color-mode=light] .btn-outline-gray-800:active:focus,html[data-netbox-color-mode=light] .btn-outline-gray-800.active:focus,html[data-netbox-color-mode=light] .btn-outline-gray-800.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #343a4080}html .btn-outline-gray-800:disabled,html .btn-outline-gray-800.disabled,html[data-netbox-color-mode=dark] .btn-outline-gray-800:disabled,html[data-netbox-color-mode=dark] .btn-outline-gray-800.disabled,html[data-netbox-color-mode=light] .btn-outline-gray-800:disabled,html[data-netbox-color-mode=light] .btn-outline-gray-800.disabled{color:#343a40;background-color:transparent}}@media print{html .btn-outline-gray-900,html[data-netbox-color-mode=dark] .btn-outline-gray-900,html[data-netbox-color-mode=light] .btn-outline-gray-900{color:#212529;border-color:#212529}html .btn-outline-gray-900:hover,html[data-netbox-color-mode=dark] .btn-outline-gray-900:hover,html[data-netbox-color-mode=light] .btn-outline-gray-900:hover{color:#fff;background-color:#212529;border-color:#212529}.btn-check:focus+html .btn-outline-gray-900,html .btn-outline-gray-900:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-gray-900,html[data-netbox-color-mode=dark] .btn-outline-gray-900:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-gray-900,html[data-netbox-color-mode=light] .btn-outline-gray-900:focus{box-shadow:0 0 0 .25rem #21252980}.btn-check:checked+html .btn-outline-gray-900,.btn-check:active+html .btn-outline-gray-900,html .btn-outline-gray-900:active,html .btn-outline-gray-900.active,html .btn-outline-gray-900.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-gray-900,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-gray-900,html[data-netbox-color-mode=dark] .btn-outline-gray-900:active,html[data-netbox-color-mode=dark] .btn-outline-gray-900.active,html[data-netbox-color-mode=dark] .btn-outline-gray-900.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-gray-900,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-gray-900,html[data-netbox-color-mode=light] .btn-outline-gray-900:active,html[data-netbox-color-mode=light] .btn-outline-gray-900.active,html[data-netbox-color-mode=light] .btn-outline-gray-900.dropdown-toggle.show{color:#fff;background-color:#212529;border-color:#212529}.btn-check:checked+html .btn-outline-gray-900:focus,.btn-check:active+html .btn-outline-gray-900:focus,html .btn-outline-gray-900:active:focus,html .btn-outline-gray-900.active:focus,html .btn-outline-gray-900.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-gray-900:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-gray-900:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-900:active:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-900.active:focus,html[data-netbox-color-mode=dark] .btn-outline-gray-900.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-gray-900:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-gray-900:focus,html[data-netbox-color-mode=light] .btn-outline-gray-900:active:focus,html[data-netbox-color-mode=light] .btn-outline-gray-900.active:focus,html[data-netbox-color-mode=light] .btn-outline-gray-900.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #21252980}html .btn-outline-gray-900:disabled,html .btn-outline-gray-900.disabled,html[data-netbox-color-mode=dark] .btn-outline-gray-900:disabled,html[data-netbox-color-mode=dark] .btn-outline-gray-900.disabled,html[data-netbox-color-mode=light] .btn-outline-gray-900:disabled,html[data-netbox-color-mode=light] .btn-outline-gray-900.disabled{color:#212529;background-color:transparent}}@media print{html .btn-outline-red-100,html[data-netbox-color-mode=dark] .btn-outline-red-100,html[data-netbox-color-mode=light] .btn-outline-red-100{color:#f8d7da;border-color:#f8d7da}html .btn-outline-red-100:hover,html[data-netbox-color-mode=dark] .btn-outline-red-100:hover,html[data-netbox-color-mode=light] .btn-outline-red-100:hover{color:#000;background-color:#f8d7da;border-color:#f8d7da}.btn-check:focus+html .btn-outline-red-100,html .btn-outline-red-100:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-red-100,html[data-netbox-color-mode=dark] .btn-outline-red-100:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-red-100,html[data-netbox-color-mode=light] .btn-outline-red-100:focus{box-shadow:0 0 0 .25rem #f8d7da80}.btn-check:checked+html .btn-outline-red-100,.btn-check:active+html .btn-outline-red-100,html .btn-outline-red-100:active,html .btn-outline-red-100.active,html .btn-outline-red-100.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-red-100,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-red-100,html[data-netbox-color-mode=dark] .btn-outline-red-100:active,html[data-netbox-color-mode=dark] .btn-outline-red-100.active,html[data-netbox-color-mode=dark] .btn-outline-red-100.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-red-100,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-red-100,html[data-netbox-color-mode=light] .btn-outline-red-100:active,html[data-netbox-color-mode=light] .btn-outline-red-100.active,html[data-netbox-color-mode=light] .btn-outline-red-100.dropdown-toggle.show{color:#000;background-color:#f8d7da;border-color:#f8d7da}.btn-check:checked+html .btn-outline-red-100:focus,.btn-check:active+html .btn-outline-red-100:focus,html .btn-outline-red-100:active:focus,html .btn-outline-red-100.active:focus,html .btn-outline-red-100.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-red-100:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-red-100:focus,html[data-netbox-color-mode=dark] .btn-outline-red-100:active:focus,html[data-netbox-color-mode=dark] .btn-outline-red-100.active:focus,html[data-netbox-color-mode=dark] .btn-outline-red-100.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-red-100:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-red-100:focus,html[data-netbox-color-mode=light] .btn-outline-red-100:active:focus,html[data-netbox-color-mode=light] .btn-outline-red-100.active:focus,html[data-netbox-color-mode=light] .btn-outline-red-100.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #f8d7da80}html .btn-outline-red-100:disabled,html .btn-outline-red-100.disabled,html[data-netbox-color-mode=dark] .btn-outline-red-100:disabled,html[data-netbox-color-mode=dark] .btn-outline-red-100.disabled,html[data-netbox-color-mode=light] .btn-outline-red-100:disabled,html[data-netbox-color-mode=light] .btn-outline-red-100.disabled{color:#f8d7da;background-color:transparent}}@media print{html .btn-outline-red-200,html[data-netbox-color-mode=dark] .btn-outline-red-200,html[data-netbox-color-mode=light] .btn-outline-red-200{color:#f1aeb5;border-color:#f1aeb5}html .btn-outline-red-200:hover,html[data-netbox-color-mode=dark] .btn-outline-red-200:hover,html[data-netbox-color-mode=light] .btn-outline-red-200:hover{color:#000;background-color:#f1aeb5;border-color:#f1aeb5}.btn-check:focus+html .btn-outline-red-200,html .btn-outline-red-200:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-red-200,html[data-netbox-color-mode=dark] .btn-outline-red-200:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-red-200,html[data-netbox-color-mode=light] .btn-outline-red-200:focus{box-shadow:0 0 0 .25rem #f1aeb580}.btn-check:checked+html .btn-outline-red-200,.btn-check:active+html .btn-outline-red-200,html .btn-outline-red-200:active,html .btn-outline-red-200.active,html .btn-outline-red-200.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-red-200,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-red-200,html[data-netbox-color-mode=dark] .btn-outline-red-200:active,html[data-netbox-color-mode=dark] .btn-outline-red-200.active,html[data-netbox-color-mode=dark] .btn-outline-red-200.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-red-200,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-red-200,html[data-netbox-color-mode=light] .btn-outline-red-200:active,html[data-netbox-color-mode=light] .btn-outline-red-200.active,html[data-netbox-color-mode=light] .btn-outline-red-200.dropdown-toggle.show{color:#000;background-color:#f1aeb5;border-color:#f1aeb5}.btn-check:checked+html .btn-outline-red-200:focus,.btn-check:active+html .btn-outline-red-200:focus,html .btn-outline-red-200:active:focus,html .btn-outline-red-200.active:focus,html .btn-outline-red-200.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-red-200:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-red-200:focus,html[data-netbox-color-mode=dark] .btn-outline-red-200:active:focus,html[data-netbox-color-mode=dark] .btn-outline-red-200.active:focus,html[data-netbox-color-mode=dark] .btn-outline-red-200.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-red-200:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-red-200:focus,html[data-netbox-color-mode=light] .btn-outline-red-200:active:focus,html[data-netbox-color-mode=light] .btn-outline-red-200.active:focus,html[data-netbox-color-mode=light] .btn-outline-red-200.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #f1aeb580}html .btn-outline-red-200:disabled,html .btn-outline-red-200.disabled,html[data-netbox-color-mode=dark] .btn-outline-red-200:disabled,html[data-netbox-color-mode=dark] .btn-outline-red-200.disabled,html[data-netbox-color-mode=light] .btn-outline-red-200:disabled,html[data-netbox-color-mode=light] .btn-outline-red-200.disabled{color:#f1aeb5;background-color:transparent}}@media print{html .btn-outline-red-300,html[data-netbox-color-mode=dark] .btn-outline-red-300,html[data-netbox-color-mode=light] .btn-outline-red-300{color:#ea868f;border-color:#ea868f}html .btn-outline-red-300:hover,html[data-netbox-color-mode=dark] .btn-outline-red-300:hover,html[data-netbox-color-mode=light] .btn-outline-red-300:hover{color:#000;background-color:#ea868f;border-color:#ea868f}.btn-check:focus+html .btn-outline-red-300,html .btn-outline-red-300:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-red-300,html[data-netbox-color-mode=dark] .btn-outline-red-300:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-red-300,html[data-netbox-color-mode=light] .btn-outline-red-300:focus{box-shadow:0 0 0 .25rem #ea868f80}.btn-check:checked+html .btn-outline-red-300,.btn-check:active+html .btn-outline-red-300,html .btn-outline-red-300:active,html .btn-outline-red-300.active,html .btn-outline-red-300.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-red-300,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-red-300,html[data-netbox-color-mode=dark] .btn-outline-red-300:active,html[data-netbox-color-mode=dark] .btn-outline-red-300.active,html[data-netbox-color-mode=dark] .btn-outline-red-300.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-red-300,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-red-300,html[data-netbox-color-mode=light] .btn-outline-red-300:active,html[data-netbox-color-mode=light] .btn-outline-red-300.active,html[data-netbox-color-mode=light] .btn-outline-red-300.dropdown-toggle.show{color:#000;background-color:#ea868f;border-color:#ea868f}.btn-check:checked+html .btn-outline-red-300:focus,.btn-check:active+html .btn-outline-red-300:focus,html .btn-outline-red-300:active:focus,html .btn-outline-red-300.active:focus,html .btn-outline-red-300.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-red-300:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-red-300:focus,html[data-netbox-color-mode=dark] .btn-outline-red-300:active:focus,html[data-netbox-color-mode=dark] .btn-outline-red-300.active:focus,html[data-netbox-color-mode=dark] .btn-outline-red-300.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-red-300:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-red-300:focus,html[data-netbox-color-mode=light] .btn-outline-red-300:active:focus,html[data-netbox-color-mode=light] .btn-outline-red-300.active:focus,html[data-netbox-color-mode=light] .btn-outline-red-300.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #ea868f80}html .btn-outline-red-300:disabled,html .btn-outline-red-300.disabled,html[data-netbox-color-mode=dark] .btn-outline-red-300:disabled,html[data-netbox-color-mode=dark] .btn-outline-red-300.disabled,html[data-netbox-color-mode=light] .btn-outline-red-300:disabled,html[data-netbox-color-mode=light] .btn-outline-red-300.disabled{color:#ea868f;background-color:transparent}}@media print{html .btn-outline-red-400,html[data-netbox-color-mode=dark] .btn-outline-red-400,html[data-netbox-color-mode=light] .btn-outline-red-400{color:#e35d6a;border-color:#e35d6a}html .btn-outline-red-400:hover,html[data-netbox-color-mode=dark] .btn-outline-red-400:hover,html[data-netbox-color-mode=light] .btn-outline-red-400:hover{color:#000;background-color:#e35d6a;border-color:#e35d6a}.btn-check:focus+html .btn-outline-red-400,html .btn-outline-red-400:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-red-400,html[data-netbox-color-mode=dark] .btn-outline-red-400:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-red-400,html[data-netbox-color-mode=light] .btn-outline-red-400:focus{box-shadow:0 0 0 .25rem #e35d6a80}.btn-check:checked+html .btn-outline-red-400,.btn-check:active+html .btn-outline-red-400,html .btn-outline-red-400:active,html .btn-outline-red-400.active,html .btn-outline-red-400.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-red-400,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-red-400,html[data-netbox-color-mode=dark] .btn-outline-red-400:active,html[data-netbox-color-mode=dark] .btn-outline-red-400.active,html[data-netbox-color-mode=dark] .btn-outline-red-400.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-red-400,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-red-400,html[data-netbox-color-mode=light] .btn-outline-red-400:active,html[data-netbox-color-mode=light] .btn-outline-red-400.active,html[data-netbox-color-mode=light] .btn-outline-red-400.dropdown-toggle.show{color:#000;background-color:#e35d6a;border-color:#e35d6a}.btn-check:checked+html .btn-outline-red-400:focus,.btn-check:active+html .btn-outline-red-400:focus,html .btn-outline-red-400:active:focus,html .btn-outline-red-400.active:focus,html .btn-outline-red-400.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-red-400:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-red-400:focus,html[data-netbox-color-mode=dark] .btn-outline-red-400:active:focus,html[data-netbox-color-mode=dark] .btn-outline-red-400.active:focus,html[data-netbox-color-mode=dark] .btn-outline-red-400.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-red-400:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-red-400:focus,html[data-netbox-color-mode=light] .btn-outline-red-400:active:focus,html[data-netbox-color-mode=light] .btn-outline-red-400.active:focus,html[data-netbox-color-mode=light] .btn-outline-red-400.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #e35d6a80}html .btn-outline-red-400:disabled,html .btn-outline-red-400.disabled,html[data-netbox-color-mode=dark] .btn-outline-red-400:disabled,html[data-netbox-color-mode=dark] .btn-outline-red-400.disabled,html[data-netbox-color-mode=light] .btn-outline-red-400:disabled,html[data-netbox-color-mode=light] .btn-outline-red-400.disabled{color:#e35d6a;background-color:transparent}}@media print{html .btn-outline-red-500,html[data-netbox-color-mode=dark] .btn-outline-red-500,html[data-netbox-color-mode=light] .btn-outline-red-500{color:#dc3545;border-color:#dc3545}html .btn-outline-red-500:hover,html[data-netbox-color-mode=dark] .btn-outline-red-500:hover,html[data-netbox-color-mode=light] .btn-outline-red-500:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-check:focus+html .btn-outline-red-500,html .btn-outline-red-500:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-red-500,html[data-netbox-color-mode=dark] .btn-outline-red-500:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-red-500,html[data-netbox-color-mode=light] .btn-outline-red-500:focus{box-shadow:0 0 0 .25rem #dc354580}.btn-check:checked+html .btn-outline-red-500,.btn-check:active+html .btn-outline-red-500,html .btn-outline-red-500:active,html .btn-outline-red-500.active,html .btn-outline-red-500.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-red-500,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-red-500,html[data-netbox-color-mode=dark] .btn-outline-red-500:active,html[data-netbox-color-mode=dark] .btn-outline-red-500.active,html[data-netbox-color-mode=dark] .btn-outline-red-500.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-red-500,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-red-500,html[data-netbox-color-mode=light] .btn-outline-red-500:active,html[data-netbox-color-mode=light] .btn-outline-red-500.active,html[data-netbox-color-mode=light] .btn-outline-red-500.dropdown-toggle.show{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-check:checked+html .btn-outline-red-500:focus,.btn-check:active+html .btn-outline-red-500:focus,html .btn-outline-red-500:active:focus,html .btn-outline-red-500.active:focus,html .btn-outline-red-500.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-red-500:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-red-500:focus,html[data-netbox-color-mode=dark] .btn-outline-red-500:active:focus,html[data-netbox-color-mode=dark] .btn-outline-red-500.active:focus,html[data-netbox-color-mode=dark] .btn-outline-red-500.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-red-500:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-red-500:focus,html[data-netbox-color-mode=light] .btn-outline-red-500:active:focus,html[data-netbox-color-mode=light] .btn-outline-red-500.active:focus,html[data-netbox-color-mode=light] .btn-outline-red-500.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #dc354580}html .btn-outline-red-500:disabled,html .btn-outline-red-500.disabled,html[data-netbox-color-mode=dark] .btn-outline-red-500:disabled,html[data-netbox-color-mode=dark] .btn-outline-red-500.disabled,html[data-netbox-color-mode=light] .btn-outline-red-500:disabled,html[data-netbox-color-mode=light] .btn-outline-red-500.disabled{color:#dc3545;background-color:transparent}}@media print{html .btn-outline-red-600,html[data-netbox-color-mode=dark] .btn-outline-red-600,html[data-netbox-color-mode=light] .btn-outline-red-600{color:#b02a37;border-color:#b02a37}html .btn-outline-red-600:hover,html[data-netbox-color-mode=dark] .btn-outline-red-600:hover,html[data-netbox-color-mode=light] .btn-outline-red-600:hover{color:#fff;background-color:#b02a37;border-color:#b02a37}.btn-check:focus+html .btn-outline-red-600,html .btn-outline-red-600:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-red-600,html[data-netbox-color-mode=dark] .btn-outline-red-600:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-red-600,html[data-netbox-color-mode=light] .btn-outline-red-600:focus{box-shadow:0 0 0 .25rem #b02a3780}.btn-check:checked+html .btn-outline-red-600,.btn-check:active+html .btn-outline-red-600,html .btn-outline-red-600:active,html .btn-outline-red-600.active,html .btn-outline-red-600.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-red-600,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-red-600,html[data-netbox-color-mode=dark] .btn-outline-red-600:active,html[data-netbox-color-mode=dark] .btn-outline-red-600.active,html[data-netbox-color-mode=dark] .btn-outline-red-600.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-red-600,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-red-600,html[data-netbox-color-mode=light] .btn-outline-red-600:active,html[data-netbox-color-mode=light] .btn-outline-red-600.active,html[data-netbox-color-mode=light] .btn-outline-red-600.dropdown-toggle.show{color:#fff;background-color:#b02a37;border-color:#b02a37}.btn-check:checked+html .btn-outline-red-600:focus,.btn-check:active+html .btn-outline-red-600:focus,html .btn-outline-red-600:active:focus,html .btn-outline-red-600.active:focus,html .btn-outline-red-600.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-red-600:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-red-600:focus,html[data-netbox-color-mode=dark] .btn-outline-red-600:active:focus,html[data-netbox-color-mode=dark] .btn-outline-red-600.active:focus,html[data-netbox-color-mode=dark] .btn-outline-red-600.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-red-600:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-red-600:focus,html[data-netbox-color-mode=light] .btn-outline-red-600:active:focus,html[data-netbox-color-mode=light] .btn-outline-red-600.active:focus,html[data-netbox-color-mode=light] .btn-outline-red-600.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #b02a3780}html .btn-outline-red-600:disabled,html .btn-outline-red-600.disabled,html[data-netbox-color-mode=dark] .btn-outline-red-600:disabled,html[data-netbox-color-mode=dark] .btn-outline-red-600.disabled,html[data-netbox-color-mode=light] .btn-outline-red-600:disabled,html[data-netbox-color-mode=light] .btn-outline-red-600.disabled{color:#b02a37;background-color:transparent}}@media print{html .btn-outline-red-700,html[data-netbox-color-mode=dark] .btn-outline-red-700,html[data-netbox-color-mode=light] .btn-outline-red-700{color:#842029;border-color:#842029}html .btn-outline-red-700:hover,html[data-netbox-color-mode=dark] .btn-outline-red-700:hover,html[data-netbox-color-mode=light] .btn-outline-red-700:hover{color:#fff;background-color:#842029;border-color:#842029}.btn-check:focus+html .btn-outline-red-700,html .btn-outline-red-700:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-red-700,html[data-netbox-color-mode=dark] .btn-outline-red-700:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-red-700,html[data-netbox-color-mode=light] .btn-outline-red-700:focus{box-shadow:0 0 0 .25rem #84202980}.btn-check:checked+html .btn-outline-red-700,.btn-check:active+html .btn-outline-red-700,html .btn-outline-red-700:active,html .btn-outline-red-700.active,html .btn-outline-red-700.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-red-700,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-red-700,html[data-netbox-color-mode=dark] .btn-outline-red-700:active,html[data-netbox-color-mode=dark] .btn-outline-red-700.active,html[data-netbox-color-mode=dark] .btn-outline-red-700.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-red-700,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-red-700,html[data-netbox-color-mode=light] .btn-outline-red-700:active,html[data-netbox-color-mode=light] .btn-outline-red-700.active,html[data-netbox-color-mode=light] .btn-outline-red-700.dropdown-toggle.show{color:#fff;background-color:#842029;border-color:#842029}.btn-check:checked+html .btn-outline-red-700:focus,.btn-check:active+html .btn-outline-red-700:focus,html .btn-outline-red-700:active:focus,html .btn-outline-red-700.active:focus,html .btn-outline-red-700.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-red-700:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-red-700:focus,html[data-netbox-color-mode=dark] .btn-outline-red-700:active:focus,html[data-netbox-color-mode=dark] .btn-outline-red-700.active:focus,html[data-netbox-color-mode=dark] .btn-outline-red-700.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-red-700:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-red-700:focus,html[data-netbox-color-mode=light] .btn-outline-red-700:active:focus,html[data-netbox-color-mode=light] .btn-outline-red-700.active:focus,html[data-netbox-color-mode=light] .btn-outline-red-700.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #84202980}html .btn-outline-red-700:disabled,html .btn-outline-red-700.disabled,html[data-netbox-color-mode=dark] .btn-outline-red-700:disabled,html[data-netbox-color-mode=dark] .btn-outline-red-700.disabled,html[data-netbox-color-mode=light] .btn-outline-red-700:disabled,html[data-netbox-color-mode=light] .btn-outline-red-700.disabled{color:#842029;background-color:transparent}}@media print{html .btn-outline-red-800,html[data-netbox-color-mode=dark] .btn-outline-red-800,html[data-netbox-color-mode=light] .btn-outline-red-800{color:#58151c;border-color:#58151c}html .btn-outline-red-800:hover,html[data-netbox-color-mode=dark] .btn-outline-red-800:hover,html[data-netbox-color-mode=light] .btn-outline-red-800:hover{color:#fff;background-color:#58151c;border-color:#58151c}.btn-check:focus+html .btn-outline-red-800,html .btn-outline-red-800:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-red-800,html[data-netbox-color-mode=dark] .btn-outline-red-800:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-red-800,html[data-netbox-color-mode=light] .btn-outline-red-800:focus{box-shadow:0 0 0 .25rem #58151c80}.btn-check:checked+html .btn-outline-red-800,.btn-check:active+html .btn-outline-red-800,html .btn-outline-red-800:active,html .btn-outline-red-800.active,html .btn-outline-red-800.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-red-800,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-red-800,html[data-netbox-color-mode=dark] .btn-outline-red-800:active,html[data-netbox-color-mode=dark] .btn-outline-red-800.active,html[data-netbox-color-mode=dark] .btn-outline-red-800.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-red-800,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-red-800,html[data-netbox-color-mode=light] .btn-outline-red-800:active,html[data-netbox-color-mode=light] .btn-outline-red-800.active,html[data-netbox-color-mode=light] .btn-outline-red-800.dropdown-toggle.show{color:#fff;background-color:#58151c;border-color:#58151c}.btn-check:checked+html .btn-outline-red-800:focus,.btn-check:active+html .btn-outline-red-800:focus,html .btn-outline-red-800:active:focus,html .btn-outline-red-800.active:focus,html .btn-outline-red-800.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-red-800:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-red-800:focus,html[data-netbox-color-mode=dark] .btn-outline-red-800:active:focus,html[data-netbox-color-mode=dark] .btn-outline-red-800.active:focus,html[data-netbox-color-mode=dark] .btn-outline-red-800.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-red-800:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-red-800:focus,html[data-netbox-color-mode=light] .btn-outline-red-800:active:focus,html[data-netbox-color-mode=light] .btn-outline-red-800.active:focus,html[data-netbox-color-mode=light] .btn-outline-red-800.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #58151c80}html .btn-outline-red-800:disabled,html .btn-outline-red-800.disabled,html[data-netbox-color-mode=dark] .btn-outline-red-800:disabled,html[data-netbox-color-mode=dark] .btn-outline-red-800.disabled,html[data-netbox-color-mode=light] .btn-outline-red-800:disabled,html[data-netbox-color-mode=light] .btn-outline-red-800.disabled{color:#58151c;background-color:transparent}}@media print{html .btn-outline-red-900,html[data-netbox-color-mode=dark] .btn-outline-red-900,html[data-netbox-color-mode=light] .btn-outline-red-900{color:#2c0b0e;border-color:#2c0b0e}html .btn-outline-red-900:hover,html[data-netbox-color-mode=dark] .btn-outline-red-900:hover,html[data-netbox-color-mode=light] .btn-outline-red-900:hover{color:#fff;background-color:#2c0b0e;border-color:#2c0b0e}.btn-check:focus+html .btn-outline-red-900,html .btn-outline-red-900:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-red-900,html[data-netbox-color-mode=dark] .btn-outline-red-900:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-red-900,html[data-netbox-color-mode=light] .btn-outline-red-900:focus{box-shadow:0 0 0 .25rem #2c0b0e80}.btn-check:checked+html .btn-outline-red-900,.btn-check:active+html .btn-outline-red-900,html .btn-outline-red-900:active,html .btn-outline-red-900.active,html .btn-outline-red-900.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-red-900,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-red-900,html[data-netbox-color-mode=dark] .btn-outline-red-900:active,html[data-netbox-color-mode=dark] .btn-outline-red-900.active,html[data-netbox-color-mode=dark] .btn-outline-red-900.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-red-900,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-red-900,html[data-netbox-color-mode=light] .btn-outline-red-900:active,html[data-netbox-color-mode=light] .btn-outline-red-900.active,html[data-netbox-color-mode=light] .btn-outline-red-900.dropdown-toggle.show{color:#fff;background-color:#2c0b0e;border-color:#2c0b0e}.btn-check:checked+html .btn-outline-red-900:focus,.btn-check:active+html .btn-outline-red-900:focus,html .btn-outline-red-900:active:focus,html .btn-outline-red-900.active:focus,html .btn-outline-red-900.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-red-900:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-red-900:focus,html[data-netbox-color-mode=dark] .btn-outline-red-900:active:focus,html[data-netbox-color-mode=dark] .btn-outline-red-900.active:focus,html[data-netbox-color-mode=dark] .btn-outline-red-900.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-red-900:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-red-900:focus,html[data-netbox-color-mode=light] .btn-outline-red-900:active:focus,html[data-netbox-color-mode=light] .btn-outline-red-900.active:focus,html[data-netbox-color-mode=light] .btn-outline-red-900.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #2c0b0e80}html .btn-outline-red-900:disabled,html .btn-outline-red-900.disabled,html[data-netbox-color-mode=dark] .btn-outline-red-900:disabled,html[data-netbox-color-mode=dark] .btn-outline-red-900.disabled,html[data-netbox-color-mode=light] .btn-outline-red-900:disabled,html[data-netbox-color-mode=light] .btn-outline-red-900.disabled{color:#2c0b0e;background-color:transparent}}@media print{html .btn-outline-yellow-100,html[data-netbox-color-mode=dark] .btn-outline-yellow-100,html[data-netbox-color-mode=light] .btn-outline-yellow-100{color:#fff3cd;border-color:#fff3cd}html .btn-outline-yellow-100:hover,html[data-netbox-color-mode=dark] .btn-outline-yellow-100:hover,html[data-netbox-color-mode=light] .btn-outline-yellow-100:hover{color:#000;background-color:#fff3cd;border-color:#fff3cd}.btn-check:focus+html .btn-outline-yellow-100,html .btn-outline-yellow-100:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-yellow-100,html[data-netbox-color-mode=dark] .btn-outline-yellow-100:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-yellow-100,html[data-netbox-color-mode=light] .btn-outline-yellow-100:focus{box-shadow:0 0 0 .25rem #fff3cd80}.btn-check:checked+html .btn-outline-yellow-100,.btn-check:active+html .btn-outline-yellow-100,html .btn-outline-yellow-100:active,html .btn-outline-yellow-100.active,html .btn-outline-yellow-100.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-yellow-100,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-yellow-100,html[data-netbox-color-mode=dark] .btn-outline-yellow-100:active,html[data-netbox-color-mode=dark] .btn-outline-yellow-100.active,html[data-netbox-color-mode=dark] .btn-outline-yellow-100.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-yellow-100,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-yellow-100,html[data-netbox-color-mode=light] .btn-outline-yellow-100:active,html[data-netbox-color-mode=light] .btn-outline-yellow-100.active,html[data-netbox-color-mode=light] .btn-outline-yellow-100.dropdown-toggle.show{color:#000;background-color:#fff3cd;border-color:#fff3cd}.btn-check:checked+html .btn-outline-yellow-100:focus,.btn-check:active+html .btn-outline-yellow-100:focus,html .btn-outline-yellow-100:active:focus,html .btn-outline-yellow-100.active:focus,html .btn-outline-yellow-100.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-yellow-100:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-yellow-100:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-100:active:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-100.active:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-100.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-yellow-100:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-yellow-100:focus,html[data-netbox-color-mode=light] .btn-outline-yellow-100:active:focus,html[data-netbox-color-mode=light] .btn-outline-yellow-100.active:focus,html[data-netbox-color-mode=light] .btn-outline-yellow-100.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #fff3cd80}html .btn-outline-yellow-100:disabled,html .btn-outline-yellow-100.disabled,html[data-netbox-color-mode=dark] .btn-outline-yellow-100:disabled,html[data-netbox-color-mode=dark] .btn-outline-yellow-100.disabled,html[data-netbox-color-mode=light] .btn-outline-yellow-100:disabled,html[data-netbox-color-mode=light] .btn-outline-yellow-100.disabled{color:#fff3cd;background-color:transparent}}@media print{html .btn-outline-yellow-200,html[data-netbox-color-mode=dark] .btn-outline-yellow-200,html[data-netbox-color-mode=light] .btn-outline-yellow-200{color:#ffe69c;border-color:#ffe69c}html .btn-outline-yellow-200:hover,html[data-netbox-color-mode=dark] .btn-outline-yellow-200:hover,html[data-netbox-color-mode=light] .btn-outline-yellow-200:hover{color:#000;background-color:#ffe69c;border-color:#ffe69c}.btn-check:focus+html .btn-outline-yellow-200,html .btn-outline-yellow-200:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-yellow-200,html[data-netbox-color-mode=dark] .btn-outline-yellow-200:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-yellow-200,html[data-netbox-color-mode=light] .btn-outline-yellow-200:focus{box-shadow:0 0 0 .25rem #ffe69c80}.btn-check:checked+html .btn-outline-yellow-200,.btn-check:active+html .btn-outline-yellow-200,html .btn-outline-yellow-200:active,html .btn-outline-yellow-200.active,html .btn-outline-yellow-200.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-yellow-200,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-yellow-200,html[data-netbox-color-mode=dark] .btn-outline-yellow-200:active,html[data-netbox-color-mode=dark] .btn-outline-yellow-200.active,html[data-netbox-color-mode=dark] .btn-outline-yellow-200.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-yellow-200,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-yellow-200,html[data-netbox-color-mode=light] .btn-outline-yellow-200:active,html[data-netbox-color-mode=light] .btn-outline-yellow-200.active,html[data-netbox-color-mode=light] .btn-outline-yellow-200.dropdown-toggle.show{color:#000;background-color:#ffe69c;border-color:#ffe69c}.btn-check:checked+html .btn-outline-yellow-200:focus,.btn-check:active+html .btn-outline-yellow-200:focus,html .btn-outline-yellow-200:active:focus,html .btn-outline-yellow-200.active:focus,html .btn-outline-yellow-200.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-yellow-200:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-yellow-200:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-200:active:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-200.active:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-200.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-yellow-200:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-yellow-200:focus,html[data-netbox-color-mode=light] .btn-outline-yellow-200:active:focus,html[data-netbox-color-mode=light] .btn-outline-yellow-200.active:focus,html[data-netbox-color-mode=light] .btn-outline-yellow-200.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #ffe69c80}html .btn-outline-yellow-200:disabled,html .btn-outline-yellow-200.disabled,html[data-netbox-color-mode=dark] .btn-outline-yellow-200:disabled,html[data-netbox-color-mode=dark] .btn-outline-yellow-200.disabled,html[data-netbox-color-mode=light] .btn-outline-yellow-200:disabled,html[data-netbox-color-mode=light] .btn-outline-yellow-200.disabled{color:#ffe69c;background-color:transparent}}@media print{html .btn-outline-yellow-300,html[data-netbox-color-mode=dark] .btn-outline-yellow-300,html[data-netbox-color-mode=light] .btn-outline-yellow-300{color:#ffda6a;border-color:#ffda6a}html .btn-outline-yellow-300:hover,html[data-netbox-color-mode=dark] .btn-outline-yellow-300:hover,html[data-netbox-color-mode=light] .btn-outline-yellow-300:hover{color:#000;background-color:#ffda6a;border-color:#ffda6a}.btn-check:focus+html .btn-outline-yellow-300,html .btn-outline-yellow-300:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-yellow-300,html[data-netbox-color-mode=dark] .btn-outline-yellow-300:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-yellow-300,html[data-netbox-color-mode=light] .btn-outline-yellow-300:focus{box-shadow:0 0 0 .25rem #ffda6a80}.btn-check:checked+html .btn-outline-yellow-300,.btn-check:active+html .btn-outline-yellow-300,html .btn-outline-yellow-300:active,html .btn-outline-yellow-300.active,html .btn-outline-yellow-300.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-yellow-300,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-yellow-300,html[data-netbox-color-mode=dark] .btn-outline-yellow-300:active,html[data-netbox-color-mode=dark] .btn-outline-yellow-300.active,html[data-netbox-color-mode=dark] .btn-outline-yellow-300.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-yellow-300,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-yellow-300,html[data-netbox-color-mode=light] .btn-outline-yellow-300:active,html[data-netbox-color-mode=light] .btn-outline-yellow-300.active,html[data-netbox-color-mode=light] .btn-outline-yellow-300.dropdown-toggle.show{color:#000;background-color:#ffda6a;border-color:#ffda6a}.btn-check:checked+html .btn-outline-yellow-300:focus,.btn-check:active+html .btn-outline-yellow-300:focus,html .btn-outline-yellow-300:active:focus,html .btn-outline-yellow-300.active:focus,html .btn-outline-yellow-300.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-yellow-300:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-yellow-300:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-300:active:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-300.active:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-300.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-yellow-300:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-yellow-300:focus,html[data-netbox-color-mode=light] .btn-outline-yellow-300:active:focus,html[data-netbox-color-mode=light] .btn-outline-yellow-300.active:focus,html[data-netbox-color-mode=light] .btn-outline-yellow-300.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #ffda6a80}html .btn-outline-yellow-300:disabled,html .btn-outline-yellow-300.disabled,html[data-netbox-color-mode=dark] .btn-outline-yellow-300:disabled,html[data-netbox-color-mode=dark] .btn-outline-yellow-300.disabled,html[data-netbox-color-mode=light] .btn-outline-yellow-300:disabled,html[data-netbox-color-mode=light] .btn-outline-yellow-300.disabled{color:#ffda6a;background-color:transparent}}@media print{html .btn-outline-yellow-400,html[data-netbox-color-mode=dark] .btn-outline-yellow-400,html[data-netbox-color-mode=light] .btn-outline-yellow-400{color:#ffcd39;border-color:#ffcd39}html .btn-outline-yellow-400:hover,html[data-netbox-color-mode=dark] .btn-outline-yellow-400:hover,html[data-netbox-color-mode=light] .btn-outline-yellow-400:hover{color:#000;background-color:#ffcd39;border-color:#ffcd39}.btn-check:focus+html .btn-outline-yellow-400,html .btn-outline-yellow-400:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-yellow-400,html[data-netbox-color-mode=dark] .btn-outline-yellow-400:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-yellow-400,html[data-netbox-color-mode=light] .btn-outline-yellow-400:focus{box-shadow:0 0 0 .25rem #ffcd3980}.btn-check:checked+html .btn-outline-yellow-400,.btn-check:active+html .btn-outline-yellow-400,html .btn-outline-yellow-400:active,html .btn-outline-yellow-400.active,html .btn-outline-yellow-400.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-yellow-400,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-yellow-400,html[data-netbox-color-mode=dark] .btn-outline-yellow-400:active,html[data-netbox-color-mode=dark] .btn-outline-yellow-400.active,html[data-netbox-color-mode=dark] .btn-outline-yellow-400.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-yellow-400,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-yellow-400,html[data-netbox-color-mode=light] .btn-outline-yellow-400:active,html[data-netbox-color-mode=light] .btn-outline-yellow-400.active,html[data-netbox-color-mode=light] .btn-outline-yellow-400.dropdown-toggle.show{color:#000;background-color:#ffcd39;border-color:#ffcd39}.btn-check:checked+html .btn-outline-yellow-400:focus,.btn-check:active+html .btn-outline-yellow-400:focus,html .btn-outline-yellow-400:active:focus,html .btn-outline-yellow-400.active:focus,html .btn-outline-yellow-400.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-yellow-400:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-yellow-400:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-400:active:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-400.active:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-400.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-yellow-400:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-yellow-400:focus,html[data-netbox-color-mode=light] .btn-outline-yellow-400:active:focus,html[data-netbox-color-mode=light] .btn-outline-yellow-400.active:focus,html[data-netbox-color-mode=light] .btn-outline-yellow-400.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #ffcd3980}html .btn-outline-yellow-400:disabled,html .btn-outline-yellow-400.disabled,html[data-netbox-color-mode=dark] .btn-outline-yellow-400:disabled,html[data-netbox-color-mode=dark] .btn-outline-yellow-400.disabled,html[data-netbox-color-mode=light] .btn-outline-yellow-400:disabled,html[data-netbox-color-mode=light] .btn-outline-yellow-400.disabled{color:#ffcd39;background-color:transparent}}@media print{html .btn-outline-yellow-500,html[data-netbox-color-mode=dark] .btn-outline-yellow-500,html[data-netbox-color-mode=light] .btn-outline-yellow-500{color:#ffc107;border-color:#ffc107}html .btn-outline-yellow-500:hover,html[data-netbox-color-mode=dark] .btn-outline-yellow-500:hover,html[data-netbox-color-mode=light] .btn-outline-yellow-500:hover{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-check:focus+html .btn-outline-yellow-500,html .btn-outline-yellow-500:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-yellow-500,html[data-netbox-color-mode=dark] .btn-outline-yellow-500:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-yellow-500,html[data-netbox-color-mode=light] .btn-outline-yellow-500:focus{box-shadow:0 0 0 .25rem #ffc10780}.btn-check:checked+html .btn-outline-yellow-500,.btn-check:active+html .btn-outline-yellow-500,html .btn-outline-yellow-500:active,html .btn-outline-yellow-500.active,html .btn-outline-yellow-500.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-yellow-500,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-yellow-500,html[data-netbox-color-mode=dark] .btn-outline-yellow-500:active,html[data-netbox-color-mode=dark] .btn-outline-yellow-500.active,html[data-netbox-color-mode=dark] .btn-outline-yellow-500.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-yellow-500,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-yellow-500,html[data-netbox-color-mode=light] .btn-outline-yellow-500:active,html[data-netbox-color-mode=light] .btn-outline-yellow-500.active,html[data-netbox-color-mode=light] .btn-outline-yellow-500.dropdown-toggle.show{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-check:checked+html .btn-outline-yellow-500:focus,.btn-check:active+html .btn-outline-yellow-500:focus,html .btn-outline-yellow-500:active:focus,html .btn-outline-yellow-500.active:focus,html .btn-outline-yellow-500.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-yellow-500:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-yellow-500:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-500:active:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-500.active:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-500.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-yellow-500:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-yellow-500:focus,html[data-netbox-color-mode=light] .btn-outline-yellow-500:active:focus,html[data-netbox-color-mode=light] .btn-outline-yellow-500.active:focus,html[data-netbox-color-mode=light] .btn-outline-yellow-500.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #ffc10780}html .btn-outline-yellow-500:disabled,html .btn-outline-yellow-500.disabled,html[data-netbox-color-mode=dark] .btn-outline-yellow-500:disabled,html[data-netbox-color-mode=dark] .btn-outline-yellow-500.disabled,html[data-netbox-color-mode=light] .btn-outline-yellow-500:disabled,html[data-netbox-color-mode=light] .btn-outline-yellow-500.disabled{color:#ffc107;background-color:transparent}}@media print{html .btn-outline-yellow-600,html[data-netbox-color-mode=dark] .btn-outline-yellow-600,html[data-netbox-color-mode=light] .btn-outline-yellow-600{color:#cc9a06;border-color:#cc9a06}html .btn-outline-yellow-600:hover,html[data-netbox-color-mode=dark] .btn-outline-yellow-600:hover,html[data-netbox-color-mode=light] .btn-outline-yellow-600:hover{color:#000;background-color:#cc9a06;border-color:#cc9a06}.btn-check:focus+html .btn-outline-yellow-600,html .btn-outline-yellow-600:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-yellow-600,html[data-netbox-color-mode=dark] .btn-outline-yellow-600:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-yellow-600,html[data-netbox-color-mode=light] .btn-outline-yellow-600:focus{box-shadow:0 0 0 .25rem #cc9a0680}.btn-check:checked+html .btn-outline-yellow-600,.btn-check:active+html .btn-outline-yellow-600,html .btn-outline-yellow-600:active,html .btn-outline-yellow-600.active,html .btn-outline-yellow-600.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-yellow-600,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-yellow-600,html[data-netbox-color-mode=dark] .btn-outline-yellow-600:active,html[data-netbox-color-mode=dark] .btn-outline-yellow-600.active,html[data-netbox-color-mode=dark] .btn-outline-yellow-600.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-yellow-600,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-yellow-600,html[data-netbox-color-mode=light] .btn-outline-yellow-600:active,html[data-netbox-color-mode=light] .btn-outline-yellow-600.active,html[data-netbox-color-mode=light] .btn-outline-yellow-600.dropdown-toggle.show{color:#000;background-color:#cc9a06;border-color:#cc9a06}.btn-check:checked+html .btn-outline-yellow-600:focus,.btn-check:active+html .btn-outline-yellow-600:focus,html .btn-outline-yellow-600:active:focus,html .btn-outline-yellow-600.active:focus,html .btn-outline-yellow-600.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-yellow-600:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-yellow-600:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-600:active:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-600.active:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-600.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-yellow-600:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-yellow-600:focus,html[data-netbox-color-mode=light] .btn-outline-yellow-600:active:focus,html[data-netbox-color-mode=light] .btn-outline-yellow-600.active:focus,html[data-netbox-color-mode=light] .btn-outline-yellow-600.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #cc9a0680}html .btn-outline-yellow-600:disabled,html .btn-outline-yellow-600.disabled,html[data-netbox-color-mode=dark] .btn-outline-yellow-600:disabled,html[data-netbox-color-mode=dark] .btn-outline-yellow-600.disabled,html[data-netbox-color-mode=light] .btn-outline-yellow-600:disabled,html[data-netbox-color-mode=light] .btn-outline-yellow-600.disabled{color:#cc9a06;background-color:transparent}}@media print{html .btn-outline-yellow-700,html[data-netbox-color-mode=dark] .btn-outline-yellow-700,html[data-netbox-color-mode=light] .btn-outline-yellow-700{color:#997404;border-color:#997404}html .btn-outline-yellow-700:hover,html[data-netbox-color-mode=dark] .btn-outline-yellow-700:hover,html[data-netbox-color-mode=light] .btn-outline-yellow-700:hover{color:#000;background-color:#997404;border-color:#997404}.btn-check:focus+html .btn-outline-yellow-700,html .btn-outline-yellow-700:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-yellow-700,html[data-netbox-color-mode=dark] .btn-outline-yellow-700:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-yellow-700,html[data-netbox-color-mode=light] .btn-outline-yellow-700:focus{box-shadow:0 0 0 .25rem #99740480}.btn-check:checked+html .btn-outline-yellow-700,.btn-check:active+html .btn-outline-yellow-700,html .btn-outline-yellow-700:active,html .btn-outline-yellow-700.active,html .btn-outline-yellow-700.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-yellow-700,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-yellow-700,html[data-netbox-color-mode=dark] .btn-outline-yellow-700:active,html[data-netbox-color-mode=dark] .btn-outline-yellow-700.active,html[data-netbox-color-mode=dark] .btn-outline-yellow-700.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-yellow-700,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-yellow-700,html[data-netbox-color-mode=light] .btn-outline-yellow-700:active,html[data-netbox-color-mode=light] .btn-outline-yellow-700.active,html[data-netbox-color-mode=light] .btn-outline-yellow-700.dropdown-toggle.show{color:#000;background-color:#997404;border-color:#997404}.btn-check:checked+html .btn-outline-yellow-700:focus,.btn-check:active+html .btn-outline-yellow-700:focus,html .btn-outline-yellow-700:active:focus,html .btn-outline-yellow-700.active:focus,html .btn-outline-yellow-700.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-yellow-700:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-yellow-700:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-700:active:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-700.active:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-700.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-yellow-700:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-yellow-700:focus,html[data-netbox-color-mode=light] .btn-outline-yellow-700:active:focus,html[data-netbox-color-mode=light] .btn-outline-yellow-700.active:focus,html[data-netbox-color-mode=light] .btn-outline-yellow-700.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #99740480}html .btn-outline-yellow-700:disabled,html .btn-outline-yellow-700.disabled,html[data-netbox-color-mode=dark] .btn-outline-yellow-700:disabled,html[data-netbox-color-mode=dark] .btn-outline-yellow-700.disabled,html[data-netbox-color-mode=light] .btn-outline-yellow-700:disabled,html[data-netbox-color-mode=light] .btn-outline-yellow-700.disabled{color:#997404;background-color:transparent}}@media print{html .btn-outline-yellow-800,html[data-netbox-color-mode=dark] .btn-outline-yellow-800,html[data-netbox-color-mode=light] .btn-outline-yellow-800{color:#664d03;border-color:#664d03}html .btn-outline-yellow-800:hover,html[data-netbox-color-mode=dark] .btn-outline-yellow-800:hover,html[data-netbox-color-mode=light] .btn-outline-yellow-800:hover{color:#fff;background-color:#664d03;border-color:#664d03}.btn-check:focus+html .btn-outline-yellow-800,html .btn-outline-yellow-800:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-yellow-800,html[data-netbox-color-mode=dark] .btn-outline-yellow-800:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-yellow-800,html[data-netbox-color-mode=light] .btn-outline-yellow-800:focus{box-shadow:0 0 0 .25rem #664d0380}.btn-check:checked+html .btn-outline-yellow-800,.btn-check:active+html .btn-outline-yellow-800,html .btn-outline-yellow-800:active,html .btn-outline-yellow-800.active,html .btn-outline-yellow-800.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-yellow-800,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-yellow-800,html[data-netbox-color-mode=dark] .btn-outline-yellow-800:active,html[data-netbox-color-mode=dark] .btn-outline-yellow-800.active,html[data-netbox-color-mode=dark] .btn-outline-yellow-800.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-yellow-800,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-yellow-800,html[data-netbox-color-mode=light] .btn-outline-yellow-800:active,html[data-netbox-color-mode=light] .btn-outline-yellow-800.active,html[data-netbox-color-mode=light] .btn-outline-yellow-800.dropdown-toggle.show{color:#fff;background-color:#664d03;border-color:#664d03}.btn-check:checked+html .btn-outline-yellow-800:focus,.btn-check:active+html .btn-outline-yellow-800:focus,html .btn-outline-yellow-800:active:focus,html .btn-outline-yellow-800.active:focus,html .btn-outline-yellow-800.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-yellow-800:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-yellow-800:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-800:active:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-800.active:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-800.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-yellow-800:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-yellow-800:focus,html[data-netbox-color-mode=light] .btn-outline-yellow-800:active:focus,html[data-netbox-color-mode=light] .btn-outline-yellow-800.active:focus,html[data-netbox-color-mode=light] .btn-outline-yellow-800.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #664d0380}html .btn-outline-yellow-800:disabled,html .btn-outline-yellow-800.disabled,html[data-netbox-color-mode=dark] .btn-outline-yellow-800:disabled,html[data-netbox-color-mode=dark] .btn-outline-yellow-800.disabled,html[data-netbox-color-mode=light] .btn-outline-yellow-800:disabled,html[data-netbox-color-mode=light] .btn-outline-yellow-800.disabled{color:#664d03;background-color:transparent}}@media print{html .btn-outline-yellow-900,html[data-netbox-color-mode=dark] .btn-outline-yellow-900,html[data-netbox-color-mode=light] .btn-outline-yellow-900{color:#332701;border-color:#332701}html .btn-outline-yellow-900:hover,html[data-netbox-color-mode=dark] .btn-outline-yellow-900:hover,html[data-netbox-color-mode=light] .btn-outline-yellow-900:hover{color:#fff;background-color:#332701;border-color:#332701}.btn-check:focus+html .btn-outline-yellow-900,html .btn-outline-yellow-900:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-yellow-900,html[data-netbox-color-mode=dark] .btn-outline-yellow-900:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-yellow-900,html[data-netbox-color-mode=light] .btn-outline-yellow-900:focus{box-shadow:0 0 0 .25rem #33270180}.btn-check:checked+html .btn-outline-yellow-900,.btn-check:active+html .btn-outline-yellow-900,html .btn-outline-yellow-900:active,html .btn-outline-yellow-900.active,html .btn-outline-yellow-900.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-yellow-900,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-yellow-900,html[data-netbox-color-mode=dark] .btn-outline-yellow-900:active,html[data-netbox-color-mode=dark] .btn-outline-yellow-900.active,html[data-netbox-color-mode=dark] .btn-outline-yellow-900.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-yellow-900,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-yellow-900,html[data-netbox-color-mode=light] .btn-outline-yellow-900:active,html[data-netbox-color-mode=light] .btn-outline-yellow-900.active,html[data-netbox-color-mode=light] .btn-outline-yellow-900.dropdown-toggle.show{color:#fff;background-color:#332701;border-color:#332701}.btn-check:checked+html .btn-outline-yellow-900:focus,.btn-check:active+html .btn-outline-yellow-900:focus,html .btn-outline-yellow-900:active:focus,html .btn-outline-yellow-900.active:focus,html .btn-outline-yellow-900.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-yellow-900:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-yellow-900:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-900:active:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-900.active:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow-900.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-yellow-900:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-yellow-900:focus,html[data-netbox-color-mode=light] .btn-outline-yellow-900:active:focus,html[data-netbox-color-mode=light] .btn-outline-yellow-900.active:focus,html[data-netbox-color-mode=light] .btn-outline-yellow-900.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #33270180}html .btn-outline-yellow-900:disabled,html .btn-outline-yellow-900.disabled,html[data-netbox-color-mode=dark] .btn-outline-yellow-900:disabled,html[data-netbox-color-mode=dark] .btn-outline-yellow-900.disabled,html[data-netbox-color-mode=light] .btn-outline-yellow-900:disabled,html[data-netbox-color-mode=light] .btn-outline-yellow-900.disabled{color:#332701;background-color:transparent}}@media print{html .btn-outline-green-100,html[data-netbox-color-mode=dark] .btn-outline-green-100,html[data-netbox-color-mode=light] .btn-outline-green-100{color:#d1e7dd;border-color:#d1e7dd}html .btn-outline-green-100:hover,html[data-netbox-color-mode=dark] .btn-outline-green-100:hover,html[data-netbox-color-mode=light] .btn-outline-green-100:hover{color:#000;background-color:#d1e7dd;border-color:#d1e7dd}.btn-check:focus+html .btn-outline-green-100,html .btn-outline-green-100:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-green-100,html[data-netbox-color-mode=dark] .btn-outline-green-100:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-green-100,html[data-netbox-color-mode=light] .btn-outline-green-100:focus{box-shadow:0 0 0 .25rem #d1e7dd80}.btn-check:checked+html .btn-outline-green-100,.btn-check:active+html .btn-outline-green-100,html .btn-outline-green-100:active,html .btn-outline-green-100.active,html .btn-outline-green-100.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-green-100,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-green-100,html[data-netbox-color-mode=dark] .btn-outline-green-100:active,html[data-netbox-color-mode=dark] .btn-outline-green-100.active,html[data-netbox-color-mode=dark] .btn-outline-green-100.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-green-100,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-green-100,html[data-netbox-color-mode=light] .btn-outline-green-100:active,html[data-netbox-color-mode=light] .btn-outline-green-100.active,html[data-netbox-color-mode=light] .btn-outline-green-100.dropdown-toggle.show{color:#000;background-color:#d1e7dd;border-color:#d1e7dd}.btn-check:checked+html .btn-outline-green-100:focus,.btn-check:active+html .btn-outline-green-100:focus,html .btn-outline-green-100:active:focus,html .btn-outline-green-100.active:focus,html .btn-outline-green-100.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-green-100:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-green-100:focus,html[data-netbox-color-mode=dark] .btn-outline-green-100:active:focus,html[data-netbox-color-mode=dark] .btn-outline-green-100.active:focus,html[data-netbox-color-mode=dark] .btn-outline-green-100.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-green-100:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-green-100:focus,html[data-netbox-color-mode=light] .btn-outline-green-100:active:focus,html[data-netbox-color-mode=light] .btn-outline-green-100.active:focus,html[data-netbox-color-mode=light] .btn-outline-green-100.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #d1e7dd80}html .btn-outline-green-100:disabled,html .btn-outline-green-100.disabled,html[data-netbox-color-mode=dark] .btn-outline-green-100:disabled,html[data-netbox-color-mode=dark] .btn-outline-green-100.disabled,html[data-netbox-color-mode=light] .btn-outline-green-100:disabled,html[data-netbox-color-mode=light] .btn-outline-green-100.disabled{color:#d1e7dd;background-color:transparent}}@media print{html .btn-outline-green-200,html[data-netbox-color-mode=dark] .btn-outline-green-200,html[data-netbox-color-mode=light] .btn-outline-green-200{color:#a3cfbb;border-color:#a3cfbb}html .btn-outline-green-200:hover,html[data-netbox-color-mode=dark] .btn-outline-green-200:hover,html[data-netbox-color-mode=light] .btn-outline-green-200:hover{color:#000;background-color:#a3cfbb;border-color:#a3cfbb}.btn-check:focus+html .btn-outline-green-200,html .btn-outline-green-200:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-green-200,html[data-netbox-color-mode=dark] .btn-outline-green-200:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-green-200,html[data-netbox-color-mode=light] .btn-outline-green-200:focus{box-shadow:0 0 0 .25rem #a3cfbb80}.btn-check:checked+html .btn-outline-green-200,.btn-check:active+html .btn-outline-green-200,html .btn-outline-green-200:active,html .btn-outline-green-200.active,html .btn-outline-green-200.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-green-200,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-green-200,html[data-netbox-color-mode=dark] .btn-outline-green-200:active,html[data-netbox-color-mode=dark] .btn-outline-green-200.active,html[data-netbox-color-mode=dark] .btn-outline-green-200.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-green-200,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-green-200,html[data-netbox-color-mode=light] .btn-outline-green-200:active,html[data-netbox-color-mode=light] .btn-outline-green-200.active,html[data-netbox-color-mode=light] .btn-outline-green-200.dropdown-toggle.show{color:#000;background-color:#a3cfbb;border-color:#a3cfbb}.btn-check:checked+html .btn-outline-green-200:focus,.btn-check:active+html .btn-outline-green-200:focus,html .btn-outline-green-200:active:focus,html .btn-outline-green-200.active:focus,html .btn-outline-green-200.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-green-200:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-green-200:focus,html[data-netbox-color-mode=dark] .btn-outline-green-200:active:focus,html[data-netbox-color-mode=dark] .btn-outline-green-200.active:focus,html[data-netbox-color-mode=dark] .btn-outline-green-200.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-green-200:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-green-200:focus,html[data-netbox-color-mode=light] .btn-outline-green-200:active:focus,html[data-netbox-color-mode=light] .btn-outline-green-200.active:focus,html[data-netbox-color-mode=light] .btn-outline-green-200.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #a3cfbb80}html .btn-outline-green-200:disabled,html .btn-outline-green-200.disabled,html[data-netbox-color-mode=dark] .btn-outline-green-200:disabled,html[data-netbox-color-mode=dark] .btn-outline-green-200.disabled,html[data-netbox-color-mode=light] .btn-outline-green-200:disabled,html[data-netbox-color-mode=light] .btn-outline-green-200.disabled{color:#a3cfbb;background-color:transparent}}@media print{html .btn-outline-green-300,html[data-netbox-color-mode=dark] .btn-outline-green-300,html[data-netbox-color-mode=light] .btn-outline-green-300{color:#75b798;border-color:#75b798}html .btn-outline-green-300:hover,html[data-netbox-color-mode=dark] .btn-outline-green-300:hover,html[data-netbox-color-mode=light] .btn-outline-green-300:hover{color:#000;background-color:#75b798;border-color:#75b798}.btn-check:focus+html .btn-outline-green-300,html .btn-outline-green-300:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-green-300,html[data-netbox-color-mode=dark] .btn-outline-green-300:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-green-300,html[data-netbox-color-mode=light] .btn-outline-green-300:focus{box-shadow:0 0 0 .25rem #75b79880}.btn-check:checked+html .btn-outline-green-300,.btn-check:active+html .btn-outline-green-300,html .btn-outline-green-300:active,html .btn-outline-green-300.active,html .btn-outline-green-300.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-green-300,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-green-300,html[data-netbox-color-mode=dark] .btn-outline-green-300:active,html[data-netbox-color-mode=dark] .btn-outline-green-300.active,html[data-netbox-color-mode=dark] .btn-outline-green-300.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-green-300,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-green-300,html[data-netbox-color-mode=light] .btn-outline-green-300:active,html[data-netbox-color-mode=light] .btn-outline-green-300.active,html[data-netbox-color-mode=light] .btn-outline-green-300.dropdown-toggle.show{color:#000;background-color:#75b798;border-color:#75b798}.btn-check:checked+html .btn-outline-green-300:focus,.btn-check:active+html .btn-outline-green-300:focus,html .btn-outline-green-300:active:focus,html .btn-outline-green-300.active:focus,html .btn-outline-green-300.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-green-300:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-green-300:focus,html[data-netbox-color-mode=dark] .btn-outline-green-300:active:focus,html[data-netbox-color-mode=dark] .btn-outline-green-300.active:focus,html[data-netbox-color-mode=dark] .btn-outline-green-300.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-green-300:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-green-300:focus,html[data-netbox-color-mode=light] .btn-outline-green-300:active:focus,html[data-netbox-color-mode=light] .btn-outline-green-300.active:focus,html[data-netbox-color-mode=light] .btn-outline-green-300.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #75b79880}html .btn-outline-green-300:disabled,html .btn-outline-green-300.disabled,html[data-netbox-color-mode=dark] .btn-outline-green-300:disabled,html[data-netbox-color-mode=dark] .btn-outline-green-300.disabled,html[data-netbox-color-mode=light] .btn-outline-green-300:disabled,html[data-netbox-color-mode=light] .btn-outline-green-300.disabled{color:#75b798;background-color:transparent}}@media print{html .btn-outline-green-400,html[data-netbox-color-mode=dark] .btn-outline-green-400,html[data-netbox-color-mode=light] .btn-outline-green-400{color:#479f76;border-color:#479f76}html .btn-outline-green-400:hover,html[data-netbox-color-mode=dark] .btn-outline-green-400:hover,html[data-netbox-color-mode=light] .btn-outline-green-400:hover{color:#000;background-color:#479f76;border-color:#479f76}.btn-check:focus+html .btn-outline-green-400,html .btn-outline-green-400:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-green-400,html[data-netbox-color-mode=dark] .btn-outline-green-400:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-green-400,html[data-netbox-color-mode=light] .btn-outline-green-400:focus{box-shadow:0 0 0 .25rem #479f7680}.btn-check:checked+html .btn-outline-green-400,.btn-check:active+html .btn-outline-green-400,html .btn-outline-green-400:active,html .btn-outline-green-400.active,html .btn-outline-green-400.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-green-400,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-green-400,html[data-netbox-color-mode=dark] .btn-outline-green-400:active,html[data-netbox-color-mode=dark] .btn-outline-green-400.active,html[data-netbox-color-mode=dark] .btn-outline-green-400.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-green-400,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-green-400,html[data-netbox-color-mode=light] .btn-outline-green-400:active,html[data-netbox-color-mode=light] .btn-outline-green-400.active,html[data-netbox-color-mode=light] .btn-outline-green-400.dropdown-toggle.show{color:#000;background-color:#479f76;border-color:#479f76}.btn-check:checked+html .btn-outline-green-400:focus,.btn-check:active+html .btn-outline-green-400:focus,html .btn-outline-green-400:active:focus,html .btn-outline-green-400.active:focus,html .btn-outline-green-400.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-green-400:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-green-400:focus,html[data-netbox-color-mode=dark] .btn-outline-green-400:active:focus,html[data-netbox-color-mode=dark] .btn-outline-green-400.active:focus,html[data-netbox-color-mode=dark] .btn-outline-green-400.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-green-400:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-green-400:focus,html[data-netbox-color-mode=light] .btn-outline-green-400:active:focus,html[data-netbox-color-mode=light] .btn-outline-green-400.active:focus,html[data-netbox-color-mode=light] .btn-outline-green-400.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #479f7680}html .btn-outline-green-400:disabled,html .btn-outline-green-400.disabled,html[data-netbox-color-mode=dark] .btn-outline-green-400:disabled,html[data-netbox-color-mode=dark] .btn-outline-green-400.disabled,html[data-netbox-color-mode=light] .btn-outline-green-400:disabled,html[data-netbox-color-mode=light] .btn-outline-green-400.disabled{color:#479f76;background-color:transparent}}@media print{html .btn-outline-green-500,html[data-netbox-color-mode=dark] .btn-outline-green-500,html[data-netbox-color-mode=light] .btn-outline-green-500{color:#198754;border-color:#198754}html .btn-outline-green-500:hover,html[data-netbox-color-mode=dark] .btn-outline-green-500:hover,html[data-netbox-color-mode=light] .btn-outline-green-500:hover{color:#fff;background-color:#198754;border-color:#198754}.btn-check:focus+html .btn-outline-green-500,html .btn-outline-green-500:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-green-500,html[data-netbox-color-mode=dark] .btn-outline-green-500:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-green-500,html[data-netbox-color-mode=light] .btn-outline-green-500:focus{box-shadow:0 0 0 .25rem #19875480}.btn-check:checked+html .btn-outline-green-500,.btn-check:active+html .btn-outline-green-500,html .btn-outline-green-500:active,html .btn-outline-green-500.active,html .btn-outline-green-500.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-green-500,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-green-500,html[data-netbox-color-mode=dark] .btn-outline-green-500:active,html[data-netbox-color-mode=dark] .btn-outline-green-500.active,html[data-netbox-color-mode=dark] .btn-outline-green-500.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-green-500,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-green-500,html[data-netbox-color-mode=light] .btn-outline-green-500:active,html[data-netbox-color-mode=light] .btn-outline-green-500.active,html[data-netbox-color-mode=light] .btn-outline-green-500.dropdown-toggle.show{color:#fff;background-color:#198754;border-color:#198754}.btn-check:checked+html .btn-outline-green-500:focus,.btn-check:active+html .btn-outline-green-500:focus,html .btn-outline-green-500:active:focus,html .btn-outline-green-500.active:focus,html .btn-outline-green-500.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-green-500:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-green-500:focus,html[data-netbox-color-mode=dark] .btn-outline-green-500:active:focus,html[data-netbox-color-mode=dark] .btn-outline-green-500.active:focus,html[data-netbox-color-mode=dark] .btn-outline-green-500.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-green-500:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-green-500:focus,html[data-netbox-color-mode=light] .btn-outline-green-500:active:focus,html[data-netbox-color-mode=light] .btn-outline-green-500.active:focus,html[data-netbox-color-mode=light] .btn-outline-green-500.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #19875480}html .btn-outline-green-500:disabled,html .btn-outline-green-500.disabled,html[data-netbox-color-mode=dark] .btn-outline-green-500:disabled,html[data-netbox-color-mode=dark] .btn-outline-green-500.disabled,html[data-netbox-color-mode=light] .btn-outline-green-500:disabled,html[data-netbox-color-mode=light] .btn-outline-green-500.disabled{color:#198754;background-color:transparent}}@media print{html .btn-outline-green-600,html[data-netbox-color-mode=dark] .btn-outline-green-600,html[data-netbox-color-mode=light] .btn-outline-green-600{color:#146c43;border-color:#146c43}html .btn-outline-green-600:hover,html[data-netbox-color-mode=dark] .btn-outline-green-600:hover,html[data-netbox-color-mode=light] .btn-outline-green-600:hover{color:#fff;background-color:#146c43;border-color:#146c43}.btn-check:focus+html .btn-outline-green-600,html .btn-outline-green-600:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-green-600,html[data-netbox-color-mode=dark] .btn-outline-green-600:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-green-600,html[data-netbox-color-mode=light] .btn-outline-green-600:focus{box-shadow:0 0 0 .25rem #146c4380}.btn-check:checked+html .btn-outline-green-600,.btn-check:active+html .btn-outline-green-600,html .btn-outline-green-600:active,html .btn-outline-green-600.active,html .btn-outline-green-600.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-green-600,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-green-600,html[data-netbox-color-mode=dark] .btn-outline-green-600:active,html[data-netbox-color-mode=dark] .btn-outline-green-600.active,html[data-netbox-color-mode=dark] .btn-outline-green-600.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-green-600,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-green-600,html[data-netbox-color-mode=light] .btn-outline-green-600:active,html[data-netbox-color-mode=light] .btn-outline-green-600.active,html[data-netbox-color-mode=light] .btn-outline-green-600.dropdown-toggle.show{color:#fff;background-color:#146c43;border-color:#146c43}.btn-check:checked+html .btn-outline-green-600:focus,.btn-check:active+html .btn-outline-green-600:focus,html .btn-outline-green-600:active:focus,html .btn-outline-green-600.active:focus,html .btn-outline-green-600.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-green-600:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-green-600:focus,html[data-netbox-color-mode=dark] .btn-outline-green-600:active:focus,html[data-netbox-color-mode=dark] .btn-outline-green-600.active:focus,html[data-netbox-color-mode=dark] .btn-outline-green-600.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-green-600:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-green-600:focus,html[data-netbox-color-mode=light] .btn-outline-green-600:active:focus,html[data-netbox-color-mode=light] .btn-outline-green-600.active:focus,html[data-netbox-color-mode=light] .btn-outline-green-600.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #146c4380}html .btn-outline-green-600:disabled,html .btn-outline-green-600.disabled,html[data-netbox-color-mode=dark] .btn-outline-green-600:disabled,html[data-netbox-color-mode=dark] .btn-outline-green-600.disabled,html[data-netbox-color-mode=light] .btn-outline-green-600:disabled,html[data-netbox-color-mode=light] .btn-outline-green-600.disabled{color:#146c43;background-color:transparent}}@media print{html .btn-outline-green-700,html[data-netbox-color-mode=dark] .btn-outline-green-700,html[data-netbox-color-mode=light] .btn-outline-green-700{color:#0f5132;border-color:#0f5132}html .btn-outline-green-700:hover,html[data-netbox-color-mode=dark] .btn-outline-green-700:hover,html[data-netbox-color-mode=light] .btn-outline-green-700:hover{color:#fff;background-color:#0f5132;border-color:#0f5132}.btn-check:focus+html .btn-outline-green-700,html .btn-outline-green-700:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-green-700,html[data-netbox-color-mode=dark] .btn-outline-green-700:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-green-700,html[data-netbox-color-mode=light] .btn-outline-green-700:focus{box-shadow:0 0 0 .25rem #0f513280}.btn-check:checked+html .btn-outline-green-700,.btn-check:active+html .btn-outline-green-700,html .btn-outline-green-700:active,html .btn-outline-green-700.active,html .btn-outline-green-700.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-green-700,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-green-700,html[data-netbox-color-mode=dark] .btn-outline-green-700:active,html[data-netbox-color-mode=dark] .btn-outline-green-700.active,html[data-netbox-color-mode=dark] .btn-outline-green-700.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-green-700,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-green-700,html[data-netbox-color-mode=light] .btn-outline-green-700:active,html[data-netbox-color-mode=light] .btn-outline-green-700.active,html[data-netbox-color-mode=light] .btn-outline-green-700.dropdown-toggle.show{color:#fff;background-color:#0f5132;border-color:#0f5132}.btn-check:checked+html .btn-outline-green-700:focus,.btn-check:active+html .btn-outline-green-700:focus,html .btn-outline-green-700:active:focus,html .btn-outline-green-700.active:focus,html .btn-outline-green-700.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-green-700:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-green-700:focus,html[data-netbox-color-mode=dark] .btn-outline-green-700:active:focus,html[data-netbox-color-mode=dark] .btn-outline-green-700.active:focus,html[data-netbox-color-mode=dark] .btn-outline-green-700.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-green-700:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-green-700:focus,html[data-netbox-color-mode=light] .btn-outline-green-700:active:focus,html[data-netbox-color-mode=light] .btn-outline-green-700.active:focus,html[data-netbox-color-mode=light] .btn-outline-green-700.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #0f513280}html .btn-outline-green-700:disabled,html .btn-outline-green-700.disabled,html[data-netbox-color-mode=dark] .btn-outline-green-700:disabled,html[data-netbox-color-mode=dark] .btn-outline-green-700.disabled,html[data-netbox-color-mode=light] .btn-outline-green-700:disabled,html[data-netbox-color-mode=light] .btn-outline-green-700.disabled{color:#0f5132;background-color:transparent}}@media print{html .btn-outline-green-800,html[data-netbox-color-mode=dark] .btn-outline-green-800,html[data-netbox-color-mode=light] .btn-outline-green-800{color:#0a3622;border-color:#0a3622}html .btn-outline-green-800:hover,html[data-netbox-color-mode=dark] .btn-outline-green-800:hover,html[data-netbox-color-mode=light] .btn-outline-green-800:hover{color:#fff;background-color:#0a3622;border-color:#0a3622}.btn-check:focus+html .btn-outline-green-800,html .btn-outline-green-800:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-green-800,html[data-netbox-color-mode=dark] .btn-outline-green-800:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-green-800,html[data-netbox-color-mode=light] .btn-outline-green-800:focus{box-shadow:0 0 0 .25rem #0a362280}.btn-check:checked+html .btn-outline-green-800,.btn-check:active+html .btn-outline-green-800,html .btn-outline-green-800:active,html .btn-outline-green-800.active,html .btn-outline-green-800.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-green-800,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-green-800,html[data-netbox-color-mode=dark] .btn-outline-green-800:active,html[data-netbox-color-mode=dark] .btn-outline-green-800.active,html[data-netbox-color-mode=dark] .btn-outline-green-800.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-green-800,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-green-800,html[data-netbox-color-mode=light] .btn-outline-green-800:active,html[data-netbox-color-mode=light] .btn-outline-green-800.active,html[data-netbox-color-mode=light] .btn-outline-green-800.dropdown-toggle.show{color:#fff;background-color:#0a3622;border-color:#0a3622}.btn-check:checked+html .btn-outline-green-800:focus,.btn-check:active+html .btn-outline-green-800:focus,html .btn-outline-green-800:active:focus,html .btn-outline-green-800.active:focus,html .btn-outline-green-800.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-green-800:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-green-800:focus,html[data-netbox-color-mode=dark] .btn-outline-green-800:active:focus,html[data-netbox-color-mode=dark] .btn-outline-green-800.active:focus,html[data-netbox-color-mode=dark] .btn-outline-green-800.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-green-800:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-green-800:focus,html[data-netbox-color-mode=light] .btn-outline-green-800:active:focus,html[data-netbox-color-mode=light] .btn-outline-green-800.active:focus,html[data-netbox-color-mode=light] .btn-outline-green-800.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #0a362280}html .btn-outline-green-800:disabled,html .btn-outline-green-800.disabled,html[data-netbox-color-mode=dark] .btn-outline-green-800:disabled,html[data-netbox-color-mode=dark] .btn-outline-green-800.disabled,html[data-netbox-color-mode=light] .btn-outline-green-800:disabled,html[data-netbox-color-mode=light] .btn-outline-green-800.disabled{color:#0a3622;background-color:transparent}}@media print{html .btn-outline-green-900,html[data-netbox-color-mode=dark] .btn-outline-green-900,html[data-netbox-color-mode=light] .btn-outline-green-900{color:#051b11;border-color:#051b11}html .btn-outline-green-900:hover,html[data-netbox-color-mode=dark] .btn-outline-green-900:hover,html[data-netbox-color-mode=light] .btn-outline-green-900:hover{color:#fff;background-color:#051b11;border-color:#051b11}.btn-check:focus+html .btn-outline-green-900,html .btn-outline-green-900:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-green-900,html[data-netbox-color-mode=dark] .btn-outline-green-900:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-green-900,html[data-netbox-color-mode=light] .btn-outline-green-900:focus{box-shadow:0 0 0 .25rem #051b1180}.btn-check:checked+html .btn-outline-green-900,.btn-check:active+html .btn-outline-green-900,html .btn-outline-green-900:active,html .btn-outline-green-900.active,html .btn-outline-green-900.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-green-900,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-green-900,html[data-netbox-color-mode=dark] .btn-outline-green-900:active,html[data-netbox-color-mode=dark] .btn-outline-green-900.active,html[data-netbox-color-mode=dark] .btn-outline-green-900.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-green-900,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-green-900,html[data-netbox-color-mode=light] .btn-outline-green-900:active,html[data-netbox-color-mode=light] .btn-outline-green-900.active,html[data-netbox-color-mode=light] .btn-outline-green-900.dropdown-toggle.show{color:#fff;background-color:#051b11;border-color:#051b11}.btn-check:checked+html .btn-outline-green-900:focus,.btn-check:active+html .btn-outline-green-900:focus,html .btn-outline-green-900:active:focus,html .btn-outline-green-900.active:focus,html .btn-outline-green-900.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-green-900:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-green-900:focus,html[data-netbox-color-mode=dark] .btn-outline-green-900:active:focus,html[data-netbox-color-mode=dark] .btn-outline-green-900.active:focus,html[data-netbox-color-mode=dark] .btn-outline-green-900.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-green-900:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-green-900:focus,html[data-netbox-color-mode=light] .btn-outline-green-900:active:focus,html[data-netbox-color-mode=light] .btn-outline-green-900.active:focus,html[data-netbox-color-mode=light] .btn-outline-green-900.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #051b1180}html .btn-outline-green-900:disabled,html .btn-outline-green-900.disabled,html[data-netbox-color-mode=dark] .btn-outline-green-900:disabled,html[data-netbox-color-mode=dark] .btn-outline-green-900.disabled,html[data-netbox-color-mode=light] .btn-outline-green-900:disabled,html[data-netbox-color-mode=light] .btn-outline-green-900.disabled{color:#051b11;background-color:transparent}}@media print{html .btn-outline-blue-100,html[data-netbox-color-mode=dark] .btn-outline-blue-100,html[data-netbox-color-mode=light] .btn-outline-blue-100{color:#cfe2ff;border-color:#cfe2ff}html .btn-outline-blue-100:hover,html[data-netbox-color-mode=dark] .btn-outline-blue-100:hover,html[data-netbox-color-mode=light] .btn-outline-blue-100:hover{color:#000;background-color:#cfe2ff;border-color:#cfe2ff}.btn-check:focus+html .btn-outline-blue-100,html .btn-outline-blue-100:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-blue-100,html[data-netbox-color-mode=dark] .btn-outline-blue-100:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-blue-100,html[data-netbox-color-mode=light] .btn-outline-blue-100:focus{box-shadow:0 0 0 .25rem #cfe2ff80}.btn-check:checked+html .btn-outline-blue-100,.btn-check:active+html .btn-outline-blue-100,html .btn-outline-blue-100:active,html .btn-outline-blue-100.active,html .btn-outline-blue-100.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-blue-100,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-blue-100,html[data-netbox-color-mode=dark] .btn-outline-blue-100:active,html[data-netbox-color-mode=dark] .btn-outline-blue-100.active,html[data-netbox-color-mode=dark] .btn-outline-blue-100.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-blue-100,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-blue-100,html[data-netbox-color-mode=light] .btn-outline-blue-100:active,html[data-netbox-color-mode=light] .btn-outline-blue-100.active,html[data-netbox-color-mode=light] .btn-outline-blue-100.dropdown-toggle.show{color:#000;background-color:#cfe2ff;border-color:#cfe2ff}.btn-check:checked+html .btn-outline-blue-100:focus,.btn-check:active+html .btn-outline-blue-100:focus,html .btn-outline-blue-100:active:focus,html .btn-outline-blue-100.active:focus,html .btn-outline-blue-100.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-blue-100:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-blue-100:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-100:active:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-100.active:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-100.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-blue-100:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-blue-100:focus,html[data-netbox-color-mode=light] .btn-outline-blue-100:active:focus,html[data-netbox-color-mode=light] .btn-outline-blue-100.active:focus,html[data-netbox-color-mode=light] .btn-outline-blue-100.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #cfe2ff80}html .btn-outline-blue-100:disabled,html .btn-outline-blue-100.disabled,html[data-netbox-color-mode=dark] .btn-outline-blue-100:disabled,html[data-netbox-color-mode=dark] .btn-outline-blue-100.disabled,html[data-netbox-color-mode=light] .btn-outline-blue-100:disabled,html[data-netbox-color-mode=light] .btn-outline-blue-100.disabled{color:#cfe2ff;background-color:transparent}}@media print{html .btn-outline-blue-200,html[data-netbox-color-mode=dark] .btn-outline-blue-200,html[data-netbox-color-mode=light] .btn-outline-blue-200{color:#9ec5fe;border-color:#9ec5fe}html .btn-outline-blue-200:hover,html[data-netbox-color-mode=dark] .btn-outline-blue-200:hover,html[data-netbox-color-mode=light] .btn-outline-blue-200:hover{color:#000;background-color:#9ec5fe;border-color:#9ec5fe}.btn-check:focus+html .btn-outline-blue-200,html .btn-outline-blue-200:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-blue-200,html[data-netbox-color-mode=dark] .btn-outline-blue-200:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-blue-200,html[data-netbox-color-mode=light] .btn-outline-blue-200:focus{box-shadow:0 0 0 .25rem #9ec5fe80}.btn-check:checked+html .btn-outline-blue-200,.btn-check:active+html .btn-outline-blue-200,html .btn-outline-blue-200:active,html .btn-outline-blue-200.active,html .btn-outline-blue-200.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-blue-200,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-blue-200,html[data-netbox-color-mode=dark] .btn-outline-blue-200:active,html[data-netbox-color-mode=dark] .btn-outline-blue-200.active,html[data-netbox-color-mode=dark] .btn-outline-blue-200.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-blue-200,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-blue-200,html[data-netbox-color-mode=light] .btn-outline-blue-200:active,html[data-netbox-color-mode=light] .btn-outline-blue-200.active,html[data-netbox-color-mode=light] .btn-outline-blue-200.dropdown-toggle.show{color:#000;background-color:#9ec5fe;border-color:#9ec5fe}.btn-check:checked+html .btn-outline-blue-200:focus,.btn-check:active+html .btn-outline-blue-200:focus,html .btn-outline-blue-200:active:focus,html .btn-outline-blue-200.active:focus,html .btn-outline-blue-200.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-blue-200:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-blue-200:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-200:active:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-200.active:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-200.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-blue-200:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-blue-200:focus,html[data-netbox-color-mode=light] .btn-outline-blue-200:active:focus,html[data-netbox-color-mode=light] .btn-outline-blue-200.active:focus,html[data-netbox-color-mode=light] .btn-outline-blue-200.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #9ec5fe80}html .btn-outline-blue-200:disabled,html .btn-outline-blue-200.disabled,html[data-netbox-color-mode=dark] .btn-outline-blue-200:disabled,html[data-netbox-color-mode=dark] .btn-outline-blue-200.disabled,html[data-netbox-color-mode=light] .btn-outline-blue-200:disabled,html[data-netbox-color-mode=light] .btn-outline-blue-200.disabled{color:#9ec5fe;background-color:transparent}}@media print{html .btn-outline-blue-300,html[data-netbox-color-mode=dark] .btn-outline-blue-300,html[data-netbox-color-mode=light] .btn-outline-blue-300{color:#6ea8fe;border-color:#6ea8fe}html .btn-outline-blue-300:hover,html[data-netbox-color-mode=dark] .btn-outline-blue-300:hover,html[data-netbox-color-mode=light] .btn-outline-blue-300:hover{color:#000;background-color:#6ea8fe;border-color:#6ea8fe}.btn-check:focus+html .btn-outline-blue-300,html .btn-outline-blue-300:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-blue-300,html[data-netbox-color-mode=dark] .btn-outline-blue-300:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-blue-300,html[data-netbox-color-mode=light] .btn-outline-blue-300:focus{box-shadow:0 0 0 .25rem #6ea8fe80}.btn-check:checked+html .btn-outline-blue-300,.btn-check:active+html .btn-outline-blue-300,html .btn-outline-blue-300:active,html .btn-outline-blue-300.active,html .btn-outline-blue-300.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-blue-300,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-blue-300,html[data-netbox-color-mode=dark] .btn-outline-blue-300:active,html[data-netbox-color-mode=dark] .btn-outline-blue-300.active,html[data-netbox-color-mode=dark] .btn-outline-blue-300.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-blue-300,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-blue-300,html[data-netbox-color-mode=light] .btn-outline-blue-300:active,html[data-netbox-color-mode=light] .btn-outline-blue-300.active,html[data-netbox-color-mode=light] .btn-outline-blue-300.dropdown-toggle.show{color:#000;background-color:#6ea8fe;border-color:#6ea8fe}.btn-check:checked+html .btn-outline-blue-300:focus,.btn-check:active+html .btn-outline-blue-300:focus,html .btn-outline-blue-300:active:focus,html .btn-outline-blue-300.active:focus,html .btn-outline-blue-300.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-blue-300:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-blue-300:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-300:active:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-300.active:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-300.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-blue-300:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-blue-300:focus,html[data-netbox-color-mode=light] .btn-outline-blue-300:active:focus,html[data-netbox-color-mode=light] .btn-outline-blue-300.active:focus,html[data-netbox-color-mode=light] .btn-outline-blue-300.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #6ea8fe80}html .btn-outline-blue-300:disabled,html .btn-outline-blue-300.disabled,html[data-netbox-color-mode=dark] .btn-outline-blue-300:disabled,html[data-netbox-color-mode=dark] .btn-outline-blue-300.disabled,html[data-netbox-color-mode=light] .btn-outline-blue-300:disabled,html[data-netbox-color-mode=light] .btn-outline-blue-300.disabled{color:#6ea8fe;background-color:transparent}}@media print{html .btn-outline-blue-400,html[data-netbox-color-mode=dark] .btn-outline-blue-400,html[data-netbox-color-mode=light] .btn-outline-blue-400{color:#3d8bfd;border-color:#3d8bfd}html .btn-outline-blue-400:hover,html[data-netbox-color-mode=dark] .btn-outline-blue-400:hover,html[data-netbox-color-mode=light] .btn-outline-blue-400:hover{color:#000;background-color:#3d8bfd;border-color:#3d8bfd}.btn-check:focus+html .btn-outline-blue-400,html .btn-outline-blue-400:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-blue-400,html[data-netbox-color-mode=dark] .btn-outline-blue-400:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-blue-400,html[data-netbox-color-mode=light] .btn-outline-blue-400:focus{box-shadow:0 0 0 .25rem #3d8bfd80}.btn-check:checked+html .btn-outline-blue-400,.btn-check:active+html .btn-outline-blue-400,html .btn-outline-blue-400:active,html .btn-outline-blue-400.active,html .btn-outline-blue-400.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-blue-400,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-blue-400,html[data-netbox-color-mode=dark] .btn-outline-blue-400:active,html[data-netbox-color-mode=dark] .btn-outline-blue-400.active,html[data-netbox-color-mode=dark] .btn-outline-blue-400.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-blue-400,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-blue-400,html[data-netbox-color-mode=light] .btn-outline-blue-400:active,html[data-netbox-color-mode=light] .btn-outline-blue-400.active,html[data-netbox-color-mode=light] .btn-outline-blue-400.dropdown-toggle.show{color:#000;background-color:#3d8bfd;border-color:#3d8bfd}.btn-check:checked+html .btn-outline-blue-400:focus,.btn-check:active+html .btn-outline-blue-400:focus,html .btn-outline-blue-400:active:focus,html .btn-outline-blue-400.active:focus,html .btn-outline-blue-400.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-blue-400:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-blue-400:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-400:active:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-400.active:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-400.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-blue-400:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-blue-400:focus,html[data-netbox-color-mode=light] .btn-outline-blue-400:active:focus,html[data-netbox-color-mode=light] .btn-outline-blue-400.active:focus,html[data-netbox-color-mode=light] .btn-outline-blue-400.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #3d8bfd80}html .btn-outline-blue-400:disabled,html .btn-outline-blue-400.disabled,html[data-netbox-color-mode=dark] .btn-outline-blue-400:disabled,html[data-netbox-color-mode=dark] .btn-outline-blue-400.disabled,html[data-netbox-color-mode=light] .btn-outline-blue-400:disabled,html[data-netbox-color-mode=light] .btn-outline-blue-400.disabled{color:#3d8bfd;background-color:transparent}}@media print{html .btn-outline-blue-500,html[data-netbox-color-mode=dark] .btn-outline-blue-500,html[data-netbox-color-mode=light] .btn-outline-blue-500{color:#0d6efd;border-color:#0d6efd}html .btn-outline-blue-500:hover,html[data-netbox-color-mode=dark] .btn-outline-blue-500:hover,html[data-netbox-color-mode=light] .btn-outline-blue-500:hover{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-check:focus+html .btn-outline-blue-500,html .btn-outline-blue-500:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-blue-500,html[data-netbox-color-mode=dark] .btn-outline-blue-500:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-blue-500,html[data-netbox-color-mode=light] .btn-outline-blue-500:focus{box-shadow:0 0 0 .25rem #0d6efd80}.btn-check:checked+html .btn-outline-blue-500,.btn-check:active+html .btn-outline-blue-500,html .btn-outline-blue-500:active,html .btn-outline-blue-500.active,html .btn-outline-blue-500.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-blue-500,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-blue-500,html[data-netbox-color-mode=dark] .btn-outline-blue-500:active,html[data-netbox-color-mode=dark] .btn-outline-blue-500.active,html[data-netbox-color-mode=dark] .btn-outline-blue-500.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-blue-500,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-blue-500,html[data-netbox-color-mode=light] .btn-outline-blue-500:active,html[data-netbox-color-mode=light] .btn-outline-blue-500.active,html[data-netbox-color-mode=light] .btn-outline-blue-500.dropdown-toggle.show{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-check:checked+html .btn-outline-blue-500:focus,.btn-check:active+html .btn-outline-blue-500:focus,html .btn-outline-blue-500:active:focus,html .btn-outline-blue-500.active:focus,html .btn-outline-blue-500.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-blue-500:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-blue-500:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-500:active:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-500.active:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-500.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-blue-500:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-blue-500:focus,html[data-netbox-color-mode=light] .btn-outline-blue-500:active:focus,html[data-netbox-color-mode=light] .btn-outline-blue-500.active:focus,html[data-netbox-color-mode=light] .btn-outline-blue-500.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #0d6efd80}html .btn-outline-blue-500:disabled,html .btn-outline-blue-500.disabled,html[data-netbox-color-mode=dark] .btn-outline-blue-500:disabled,html[data-netbox-color-mode=dark] .btn-outline-blue-500.disabled,html[data-netbox-color-mode=light] .btn-outline-blue-500:disabled,html[data-netbox-color-mode=light] .btn-outline-blue-500.disabled{color:#0d6efd;background-color:transparent}}@media print{html .btn-outline-blue-600,html[data-netbox-color-mode=dark] .btn-outline-blue-600,html[data-netbox-color-mode=light] .btn-outline-blue-600{color:#0a58ca;border-color:#0a58ca}html .btn-outline-blue-600:hover,html[data-netbox-color-mode=dark] .btn-outline-blue-600:hover,html[data-netbox-color-mode=light] .btn-outline-blue-600:hover{color:#fff;background-color:#0a58ca;border-color:#0a58ca}.btn-check:focus+html .btn-outline-blue-600,html .btn-outline-blue-600:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-blue-600,html[data-netbox-color-mode=dark] .btn-outline-blue-600:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-blue-600,html[data-netbox-color-mode=light] .btn-outline-blue-600:focus{box-shadow:0 0 0 .25rem #0a58ca80}.btn-check:checked+html .btn-outline-blue-600,.btn-check:active+html .btn-outline-blue-600,html .btn-outline-blue-600:active,html .btn-outline-blue-600.active,html .btn-outline-blue-600.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-blue-600,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-blue-600,html[data-netbox-color-mode=dark] .btn-outline-blue-600:active,html[data-netbox-color-mode=dark] .btn-outline-blue-600.active,html[data-netbox-color-mode=dark] .btn-outline-blue-600.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-blue-600,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-blue-600,html[data-netbox-color-mode=light] .btn-outline-blue-600:active,html[data-netbox-color-mode=light] .btn-outline-blue-600.active,html[data-netbox-color-mode=light] .btn-outline-blue-600.dropdown-toggle.show{color:#fff;background-color:#0a58ca;border-color:#0a58ca}.btn-check:checked+html .btn-outline-blue-600:focus,.btn-check:active+html .btn-outline-blue-600:focus,html .btn-outline-blue-600:active:focus,html .btn-outline-blue-600.active:focus,html .btn-outline-blue-600.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-blue-600:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-blue-600:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-600:active:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-600.active:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-600.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-blue-600:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-blue-600:focus,html[data-netbox-color-mode=light] .btn-outline-blue-600:active:focus,html[data-netbox-color-mode=light] .btn-outline-blue-600.active:focus,html[data-netbox-color-mode=light] .btn-outline-blue-600.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #0a58ca80}html .btn-outline-blue-600:disabled,html .btn-outline-blue-600.disabled,html[data-netbox-color-mode=dark] .btn-outline-blue-600:disabled,html[data-netbox-color-mode=dark] .btn-outline-blue-600.disabled,html[data-netbox-color-mode=light] .btn-outline-blue-600:disabled,html[data-netbox-color-mode=light] .btn-outline-blue-600.disabled{color:#0a58ca;background-color:transparent}}@media print{html .btn-outline-blue-700,html[data-netbox-color-mode=dark] .btn-outline-blue-700,html[data-netbox-color-mode=light] .btn-outline-blue-700{color:#084298;border-color:#084298}html .btn-outline-blue-700:hover,html[data-netbox-color-mode=dark] .btn-outline-blue-700:hover,html[data-netbox-color-mode=light] .btn-outline-blue-700:hover{color:#fff;background-color:#084298;border-color:#084298}.btn-check:focus+html .btn-outline-blue-700,html .btn-outline-blue-700:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-blue-700,html[data-netbox-color-mode=dark] .btn-outline-blue-700:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-blue-700,html[data-netbox-color-mode=light] .btn-outline-blue-700:focus{box-shadow:0 0 0 .25rem #08429880}.btn-check:checked+html .btn-outline-blue-700,.btn-check:active+html .btn-outline-blue-700,html .btn-outline-blue-700:active,html .btn-outline-blue-700.active,html .btn-outline-blue-700.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-blue-700,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-blue-700,html[data-netbox-color-mode=dark] .btn-outline-blue-700:active,html[data-netbox-color-mode=dark] .btn-outline-blue-700.active,html[data-netbox-color-mode=dark] .btn-outline-blue-700.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-blue-700,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-blue-700,html[data-netbox-color-mode=light] .btn-outline-blue-700:active,html[data-netbox-color-mode=light] .btn-outline-blue-700.active,html[data-netbox-color-mode=light] .btn-outline-blue-700.dropdown-toggle.show{color:#fff;background-color:#084298;border-color:#084298}.btn-check:checked+html .btn-outline-blue-700:focus,.btn-check:active+html .btn-outline-blue-700:focus,html .btn-outline-blue-700:active:focus,html .btn-outline-blue-700.active:focus,html .btn-outline-blue-700.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-blue-700:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-blue-700:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-700:active:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-700.active:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-700.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-blue-700:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-blue-700:focus,html[data-netbox-color-mode=light] .btn-outline-blue-700:active:focus,html[data-netbox-color-mode=light] .btn-outline-blue-700.active:focus,html[data-netbox-color-mode=light] .btn-outline-blue-700.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #08429880}html .btn-outline-blue-700:disabled,html .btn-outline-blue-700.disabled,html[data-netbox-color-mode=dark] .btn-outline-blue-700:disabled,html[data-netbox-color-mode=dark] .btn-outline-blue-700.disabled,html[data-netbox-color-mode=light] .btn-outline-blue-700:disabled,html[data-netbox-color-mode=light] .btn-outline-blue-700.disabled{color:#084298;background-color:transparent}}@media print{html .btn-outline-blue-800,html[data-netbox-color-mode=dark] .btn-outline-blue-800,html[data-netbox-color-mode=light] .btn-outline-blue-800{color:#052c65;border-color:#052c65}html .btn-outline-blue-800:hover,html[data-netbox-color-mode=dark] .btn-outline-blue-800:hover,html[data-netbox-color-mode=light] .btn-outline-blue-800:hover{color:#fff;background-color:#052c65;border-color:#052c65}.btn-check:focus+html .btn-outline-blue-800,html .btn-outline-blue-800:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-blue-800,html[data-netbox-color-mode=dark] .btn-outline-blue-800:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-blue-800,html[data-netbox-color-mode=light] .btn-outline-blue-800:focus{box-shadow:0 0 0 .25rem #052c6580}.btn-check:checked+html .btn-outline-blue-800,.btn-check:active+html .btn-outline-blue-800,html .btn-outline-blue-800:active,html .btn-outline-blue-800.active,html .btn-outline-blue-800.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-blue-800,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-blue-800,html[data-netbox-color-mode=dark] .btn-outline-blue-800:active,html[data-netbox-color-mode=dark] .btn-outline-blue-800.active,html[data-netbox-color-mode=dark] .btn-outline-blue-800.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-blue-800,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-blue-800,html[data-netbox-color-mode=light] .btn-outline-blue-800:active,html[data-netbox-color-mode=light] .btn-outline-blue-800.active,html[data-netbox-color-mode=light] .btn-outline-blue-800.dropdown-toggle.show{color:#fff;background-color:#052c65;border-color:#052c65}.btn-check:checked+html .btn-outline-blue-800:focus,.btn-check:active+html .btn-outline-blue-800:focus,html .btn-outline-blue-800:active:focus,html .btn-outline-blue-800.active:focus,html .btn-outline-blue-800.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-blue-800:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-blue-800:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-800:active:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-800.active:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-800.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-blue-800:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-blue-800:focus,html[data-netbox-color-mode=light] .btn-outline-blue-800:active:focus,html[data-netbox-color-mode=light] .btn-outline-blue-800.active:focus,html[data-netbox-color-mode=light] .btn-outline-blue-800.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #052c6580}html .btn-outline-blue-800:disabled,html .btn-outline-blue-800.disabled,html[data-netbox-color-mode=dark] .btn-outline-blue-800:disabled,html[data-netbox-color-mode=dark] .btn-outline-blue-800.disabled,html[data-netbox-color-mode=light] .btn-outline-blue-800:disabled,html[data-netbox-color-mode=light] .btn-outline-blue-800.disabled{color:#052c65;background-color:transparent}}@media print{html .btn-outline-blue-900,html[data-netbox-color-mode=dark] .btn-outline-blue-900,html[data-netbox-color-mode=light] .btn-outline-blue-900{color:#031633;border-color:#031633}html .btn-outline-blue-900:hover,html[data-netbox-color-mode=dark] .btn-outline-blue-900:hover,html[data-netbox-color-mode=light] .btn-outline-blue-900:hover{color:#fff;background-color:#031633;border-color:#031633}.btn-check:focus+html .btn-outline-blue-900,html .btn-outline-blue-900:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-blue-900,html[data-netbox-color-mode=dark] .btn-outline-blue-900:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-blue-900,html[data-netbox-color-mode=light] .btn-outline-blue-900:focus{box-shadow:0 0 0 .25rem #03163380}.btn-check:checked+html .btn-outline-blue-900,.btn-check:active+html .btn-outline-blue-900,html .btn-outline-blue-900:active,html .btn-outline-blue-900.active,html .btn-outline-blue-900.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-blue-900,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-blue-900,html[data-netbox-color-mode=dark] .btn-outline-blue-900:active,html[data-netbox-color-mode=dark] .btn-outline-blue-900.active,html[data-netbox-color-mode=dark] .btn-outline-blue-900.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-blue-900,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-blue-900,html[data-netbox-color-mode=light] .btn-outline-blue-900:active,html[data-netbox-color-mode=light] .btn-outline-blue-900.active,html[data-netbox-color-mode=light] .btn-outline-blue-900.dropdown-toggle.show{color:#fff;background-color:#031633;border-color:#031633}.btn-check:checked+html .btn-outline-blue-900:focus,.btn-check:active+html .btn-outline-blue-900:focus,html .btn-outline-blue-900:active:focus,html .btn-outline-blue-900.active:focus,html .btn-outline-blue-900.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-blue-900:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-blue-900:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-900:active:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-900.active:focus,html[data-netbox-color-mode=dark] .btn-outline-blue-900.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-blue-900:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-blue-900:focus,html[data-netbox-color-mode=light] .btn-outline-blue-900:active:focus,html[data-netbox-color-mode=light] .btn-outline-blue-900.active:focus,html[data-netbox-color-mode=light] .btn-outline-blue-900.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #03163380}html .btn-outline-blue-900:disabled,html .btn-outline-blue-900.disabled,html[data-netbox-color-mode=dark] .btn-outline-blue-900:disabled,html[data-netbox-color-mode=dark] .btn-outline-blue-900.disabled,html[data-netbox-color-mode=light] .btn-outline-blue-900:disabled,html[data-netbox-color-mode=light] .btn-outline-blue-900.disabled{color:#031633;background-color:transparent}}@media print{html .btn-outline-cyan-100,html[data-netbox-color-mode=dark] .btn-outline-cyan-100,html[data-netbox-color-mode=light] .btn-outline-cyan-100{color:#cff4fc;border-color:#cff4fc}html .btn-outline-cyan-100:hover,html[data-netbox-color-mode=dark] .btn-outline-cyan-100:hover,html[data-netbox-color-mode=light] .btn-outline-cyan-100:hover{color:#000;background-color:#cff4fc;border-color:#cff4fc}.btn-check:focus+html .btn-outline-cyan-100,html .btn-outline-cyan-100:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-cyan-100,html[data-netbox-color-mode=dark] .btn-outline-cyan-100:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-cyan-100,html[data-netbox-color-mode=light] .btn-outline-cyan-100:focus{box-shadow:0 0 0 .25rem #cff4fc80}.btn-check:checked+html .btn-outline-cyan-100,.btn-check:active+html .btn-outline-cyan-100,html .btn-outline-cyan-100:active,html .btn-outline-cyan-100.active,html .btn-outline-cyan-100.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-cyan-100,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-cyan-100,html[data-netbox-color-mode=dark] .btn-outline-cyan-100:active,html[data-netbox-color-mode=dark] .btn-outline-cyan-100.active,html[data-netbox-color-mode=dark] .btn-outline-cyan-100.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-cyan-100,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-cyan-100,html[data-netbox-color-mode=light] .btn-outline-cyan-100:active,html[data-netbox-color-mode=light] .btn-outline-cyan-100.active,html[data-netbox-color-mode=light] .btn-outline-cyan-100.dropdown-toggle.show{color:#000;background-color:#cff4fc;border-color:#cff4fc}.btn-check:checked+html .btn-outline-cyan-100:focus,.btn-check:active+html .btn-outline-cyan-100:focus,html .btn-outline-cyan-100:active:focus,html .btn-outline-cyan-100.active:focus,html .btn-outline-cyan-100.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-cyan-100:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-cyan-100:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-100:active:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-100.active:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-100.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-cyan-100:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-cyan-100:focus,html[data-netbox-color-mode=light] .btn-outline-cyan-100:active:focus,html[data-netbox-color-mode=light] .btn-outline-cyan-100.active:focus,html[data-netbox-color-mode=light] .btn-outline-cyan-100.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #cff4fc80}html .btn-outline-cyan-100:disabled,html .btn-outline-cyan-100.disabled,html[data-netbox-color-mode=dark] .btn-outline-cyan-100:disabled,html[data-netbox-color-mode=dark] .btn-outline-cyan-100.disabled,html[data-netbox-color-mode=light] .btn-outline-cyan-100:disabled,html[data-netbox-color-mode=light] .btn-outline-cyan-100.disabled{color:#cff4fc;background-color:transparent}}@media print{html .btn-outline-cyan-200,html[data-netbox-color-mode=dark] .btn-outline-cyan-200,html[data-netbox-color-mode=light] .btn-outline-cyan-200{color:#9eeaf9;border-color:#9eeaf9}html .btn-outline-cyan-200:hover,html[data-netbox-color-mode=dark] .btn-outline-cyan-200:hover,html[data-netbox-color-mode=light] .btn-outline-cyan-200:hover{color:#000;background-color:#9eeaf9;border-color:#9eeaf9}.btn-check:focus+html .btn-outline-cyan-200,html .btn-outline-cyan-200:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-cyan-200,html[data-netbox-color-mode=dark] .btn-outline-cyan-200:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-cyan-200,html[data-netbox-color-mode=light] .btn-outline-cyan-200:focus{box-shadow:0 0 0 .25rem #9eeaf980}.btn-check:checked+html .btn-outline-cyan-200,.btn-check:active+html .btn-outline-cyan-200,html .btn-outline-cyan-200:active,html .btn-outline-cyan-200.active,html .btn-outline-cyan-200.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-cyan-200,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-cyan-200,html[data-netbox-color-mode=dark] .btn-outline-cyan-200:active,html[data-netbox-color-mode=dark] .btn-outline-cyan-200.active,html[data-netbox-color-mode=dark] .btn-outline-cyan-200.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-cyan-200,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-cyan-200,html[data-netbox-color-mode=light] .btn-outline-cyan-200:active,html[data-netbox-color-mode=light] .btn-outline-cyan-200.active,html[data-netbox-color-mode=light] .btn-outline-cyan-200.dropdown-toggle.show{color:#000;background-color:#9eeaf9;border-color:#9eeaf9}.btn-check:checked+html .btn-outline-cyan-200:focus,.btn-check:active+html .btn-outline-cyan-200:focus,html .btn-outline-cyan-200:active:focus,html .btn-outline-cyan-200.active:focus,html .btn-outline-cyan-200.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-cyan-200:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-cyan-200:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-200:active:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-200.active:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-200.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-cyan-200:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-cyan-200:focus,html[data-netbox-color-mode=light] .btn-outline-cyan-200:active:focus,html[data-netbox-color-mode=light] .btn-outline-cyan-200.active:focus,html[data-netbox-color-mode=light] .btn-outline-cyan-200.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #9eeaf980}html .btn-outline-cyan-200:disabled,html .btn-outline-cyan-200.disabled,html[data-netbox-color-mode=dark] .btn-outline-cyan-200:disabled,html[data-netbox-color-mode=dark] .btn-outline-cyan-200.disabled,html[data-netbox-color-mode=light] .btn-outline-cyan-200:disabled,html[data-netbox-color-mode=light] .btn-outline-cyan-200.disabled{color:#9eeaf9;background-color:transparent}}@media print{html .btn-outline-cyan-300,html[data-netbox-color-mode=dark] .btn-outline-cyan-300,html[data-netbox-color-mode=light] .btn-outline-cyan-300{color:#6edff6;border-color:#6edff6}html .btn-outline-cyan-300:hover,html[data-netbox-color-mode=dark] .btn-outline-cyan-300:hover,html[data-netbox-color-mode=light] .btn-outline-cyan-300:hover{color:#000;background-color:#6edff6;border-color:#6edff6}.btn-check:focus+html .btn-outline-cyan-300,html .btn-outline-cyan-300:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-cyan-300,html[data-netbox-color-mode=dark] .btn-outline-cyan-300:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-cyan-300,html[data-netbox-color-mode=light] .btn-outline-cyan-300:focus{box-shadow:0 0 0 .25rem #6edff680}.btn-check:checked+html .btn-outline-cyan-300,.btn-check:active+html .btn-outline-cyan-300,html .btn-outline-cyan-300:active,html .btn-outline-cyan-300.active,html .btn-outline-cyan-300.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-cyan-300,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-cyan-300,html[data-netbox-color-mode=dark] .btn-outline-cyan-300:active,html[data-netbox-color-mode=dark] .btn-outline-cyan-300.active,html[data-netbox-color-mode=dark] .btn-outline-cyan-300.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-cyan-300,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-cyan-300,html[data-netbox-color-mode=light] .btn-outline-cyan-300:active,html[data-netbox-color-mode=light] .btn-outline-cyan-300.active,html[data-netbox-color-mode=light] .btn-outline-cyan-300.dropdown-toggle.show{color:#000;background-color:#6edff6;border-color:#6edff6}.btn-check:checked+html .btn-outline-cyan-300:focus,.btn-check:active+html .btn-outline-cyan-300:focus,html .btn-outline-cyan-300:active:focus,html .btn-outline-cyan-300.active:focus,html .btn-outline-cyan-300.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-cyan-300:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-cyan-300:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-300:active:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-300.active:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-300.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-cyan-300:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-cyan-300:focus,html[data-netbox-color-mode=light] .btn-outline-cyan-300:active:focus,html[data-netbox-color-mode=light] .btn-outline-cyan-300.active:focus,html[data-netbox-color-mode=light] .btn-outline-cyan-300.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #6edff680}html .btn-outline-cyan-300:disabled,html .btn-outline-cyan-300.disabled,html[data-netbox-color-mode=dark] .btn-outline-cyan-300:disabled,html[data-netbox-color-mode=dark] .btn-outline-cyan-300.disabled,html[data-netbox-color-mode=light] .btn-outline-cyan-300:disabled,html[data-netbox-color-mode=light] .btn-outline-cyan-300.disabled{color:#6edff6;background-color:transparent}}@media print{html .btn-outline-cyan-400,html[data-netbox-color-mode=dark] .btn-outline-cyan-400,html[data-netbox-color-mode=light] .btn-outline-cyan-400{color:#3dd5f3;border-color:#3dd5f3}html .btn-outline-cyan-400:hover,html[data-netbox-color-mode=dark] .btn-outline-cyan-400:hover,html[data-netbox-color-mode=light] .btn-outline-cyan-400:hover{color:#000;background-color:#3dd5f3;border-color:#3dd5f3}.btn-check:focus+html .btn-outline-cyan-400,html .btn-outline-cyan-400:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-cyan-400,html[data-netbox-color-mode=dark] .btn-outline-cyan-400:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-cyan-400,html[data-netbox-color-mode=light] .btn-outline-cyan-400:focus{box-shadow:0 0 0 .25rem #3dd5f380}.btn-check:checked+html .btn-outline-cyan-400,.btn-check:active+html .btn-outline-cyan-400,html .btn-outline-cyan-400:active,html .btn-outline-cyan-400.active,html .btn-outline-cyan-400.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-cyan-400,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-cyan-400,html[data-netbox-color-mode=dark] .btn-outline-cyan-400:active,html[data-netbox-color-mode=dark] .btn-outline-cyan-400.active,html[data-netbox-color-mode=dark] .btn-outline-cyan-400.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-cyan-400,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-cyan-400,html[data-netbox-color-mode=light] .btn-outline-cyan-400:active,html[data-netbox-color-mode=light] .btn-outline-cyan-400.active,html[data-netbox-color-mode=light] .btn-outline-cyan-400.dropdown-toggle.show{color:#000;background-color:#3dd5f3;border-color:#3dd5f3}.btn-check:checked+html .btn-outline-cyan-400:focus,.btn-check:active+html .btn-outline-cyan-400:focus,html .btn-outline-cyan-400:active:focus,html .btn-outline-cyan-400.active:focus,html .btn-outline-cyan-400.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-cyan-400:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-cyan-400:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-400:active:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-400.active:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-400.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-cyan-400:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-cyan-400:focus,html[data-netbox-color-mode=light] .btn-outline-cyan-400:active:focus,html[data-netbox-color-mode=light] .btn-outline-cyan-400.active:focus,html[data-netbox-color-mode=light] .btn-outline-cyan-400.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #3dd5f380}html .btn-outline-cyan-400:disabled,html .btn-outline-cyan-400.disabled,html[data-netbox-color-mode=dark] .btn-outline-cyan-400:disabled,html[data-netbox-color-mode=dark] .btn-outline-cyan-400.disabled,html[data-netbox-color-mode=light] .btn-outline-cyan-400:disabled,html[data-netbox-color-mode=light] .btn-outline-cyan-400.disabled{color:#3dd5f3;background-color:transparent}}@media print{html .btn-outline-cyan-500,html[data-netbox-color-mode=dark] .btn-outline-cyan-500,html[data-netbox-color-mode=light] .btn-outline-cyan-500{color:#0dcaf0;border-color:#0dcaf0}html .btn-outline-cyan-500:hover,html[data-netbox-color-mode=dark] .btn-outline-cyan-500:hover,html[data-netbox-color-mode=light] .btn-outline-cyan-500:hover{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-check:focus+html .btn-outline-cyan-500,html .btn-outline-cyan-500:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-cyan-500,html[data-netbox-color-mode=dark] .btn-outline-cyan-500:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-cyan-500,html[data-netbox-color-mode=light] .btn-outline-cyan-500:focus{box-shadow:0 0 0 .25rem #0dcaf080}.btn-check:checked+html .btn-outline-cyan-500,.btn-check:active+html .btn-outline-cyan-500,html .btn-outline-cyan-500:active,html .btn-outline-cyan-500.active,html .btn-outline-cyan-500.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-cyan-500,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-cyan-500,html[data-netbox-color-mode=dark] .btn-outline-cyan-500:active,html[data-netbox-color-mode=dark] .btn-outline-cyan-500.active,html[data-netbox-color-mode=dark] .btn-outline-cyan-500.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-cyan-500,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-cyan-500,html[data-netbox-color-mode=light] .btn-outline-cyan-500:active,html[data-netbox-color-mode=light] .btn-outline-cyan-500.active,html[data-netbox-color-mode=light] .btn-outline-cyan-500.dropdown-toggle.show{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-check:checked+html .btn-outline-cyan-500:focus,.btn-check:active+html .btn-outline-cyan-500:focus,html .btn-outline-cyan-500:active:focus,html .btn-outline-cyan-500.active:focus,html .btn-outline-cyan-500.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-cyan-500:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-cyan-500:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-500:active:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-500.active:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-500.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-cyan-500:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-cyan-500:focus,html[data-netbox-color-mode=light] .btn-outline-cyan-500:active:focus,html[data-netbox-color-mode=light] .btn-outline-cyan-500.active:focus,html[data-netbox-color-mode=light] .btn-outline-cyan-500.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #0dcaf080}html .btn-outline-cyan-500:disabled,html .btn-outline-cyan-500.disabled,html[data-netbox-color-mode=dark] .btn-outline-cyan-500:disabled,html[data-netbox-color-mode=dark] .btn-outline-cyan-500.disabled,html[data-netbox-color-mode=light] .btn-outline-cyan-500:disabled,html[data-netbox-color-mode=light] .btn-outline-cyan-500.disabled{color:#0dcaf0;background-color:transparent}}@media print{html .btn-outline-cyan-600,html[data-netbox-color-mode=dark] .btn-outline-cyan-600,html[data-netbox-color-mode=light] .btn-outline-cyan-600{color:#0aa2c0;border-color:#0aa2c0}html .btn-outline-cyan-600:hover,html[data-netbox-color-mode=dark] .btn-outline-cyan-600:hover,html[data-netbox-color-mode=light] .btn-outline-cyan-600:hover{color:#000;background-color:#0aa2c0;border-color:#0aa2c0}.btn-check:focus+html .btn-outline-cyan-600,html .btn-outline-cyan-600:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-cyan-600,html[data-netbox-color-mode=dark] .btn-outline-cyan-600:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-cyan-600,html[data-netbox-color-mode=light] .btn-outline-cyan-600:focus{box-shadow:0 0 0 .25rem #0aa2c080}.btn-check:checked+html .btn-outline-cyan-600,.btn-check:active+html .btn-outline-cyan-600,html .btn-outline-cyan-600:active,html .btn-outline-cyan-600.active,html .btn-outline-cyan-600.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-cyan-600,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-cyan-600,html[data-netbox-color-mode=dark] .btn-outline-cyan-600:active,html[data-netbox-color-mode=dark] .btn-outline-cyan-600.active,html[data-netbox-color-mode=dark] .btn-outline-cyan-600.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-cyan-600,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-cyan-600,html[data-netbox-color-mode=light] .btn-outline-cyan-600:active,html[data-netbox-color-mode=light] .btn-outline-cyan-600.active,html[data-netbox-color-mode=light] .btn-outline-cyan-600.dropdown-toggle.show{color:#000;background-color:#0aa2c0;border-color:#0aa2c0}.btn-check:checked+html .btn-outline-cyan-600:focus,.btn-check:active+html .btn-outline-cyan-600:focus,html .btn-outline-cyan-600:active:focus,html .btn-outline-cyan-600.active:focus,html .btn-outline-cyan-600.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-cyan-600:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-cyan-600:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-600:active:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-600.active:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-600.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-cyan-600:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-cyan-600:focus,html[data-netbox-color-mode=light] .btn-outline-cyan-600:active:focus,html[data-netbox-color-mode=light] .btn-outline-cyan-600.active:focus,html[data-netbox-color-mode=light] .btn-outline-cyan-600.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #0aa2c080}html .btn-outline-cyan-600:disabled,html .btn-outline-cyan-600.disabled,html[data-netbox-color-mode=dark] .btn-outline-cyan-600:disabled,html[data-netbox-color-mode=dark] .btn-outline-cyan-600.disabled,html[data-netbox-color-mode=light] .btn-outline-cyan-600:disabled,html[data-netbox-color-mode=light] .btn-outline-cyan-600.disabled{color:#0aa2c0;background-color:transparent}}@media print{html .btn-outline-cyan-700,html[data-netbox-color-mode=dark] .btn-outline-cyan-700,html[data-netbox-color-mode=light] .btn-outline-cyan-700{color:#087990;border-color:#087990}html .btn-outline-cyan-700:hover,html[data-netbox-color-mode=dark] .btn-outline-cyan-700:hover,html[data-netbox-color-mode=light] .btn-outline-cyan-700:hover{color:#fff;background-color:#087990;border-color:#087990}.btn-check:focus+html .btn-outline-cyan-700,html .btn-outline-cyan-700:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-cyan-700,html[data-netbox-color-mode=dark] .btn-outline-cyan-700:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-cyan-700,html[data-netbox-color-mode=light] .btn-outline-cyan-700:focus{box-shadow:0 0 0 .25rem #08799080}.btn-check:checked+html .btn-outline-cyan-700,.btn-check:active+html .btn-outline-cyan-700,html .btn-outline-cyan-700:active,html .btn-outline-cyan-700.active,html .btn-outline-cyan-700.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-cyan-700,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-cyan-700,html[data-netbox-color-mode=dark] .btn-outline-cyan-700:active,html[data-netbox-color-mode=dark] .btn-outline-cyan-700.active,html[data-netbox-color-mode=dark] .btn-outline-cyan-700.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-cyan-700,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-cyan-700,html[data-netbox-color-mode=light] .btn-outline-cyan-700:active,html[data-netbox-color-mode=light] .btn-outline-cyan-700.active,html[data-netbox-color-mode=light] .btn-outline-cyan-700.dropdown-toggle.show{color:#fff;background-color:#087990;border-color:#087990}.btn-check:checked+html .btn-outline-cyan-700:focus,.btn-check:active+html .btn-outline-cyan-700:focus,html .btn-outline-cyan-700:active:focus,html .btn-outline-cyan-700.active:focus,html .btn-outline-cyan-700.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-cyan-700:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-cyan-700:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-700:active:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-700.active:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-700.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-cyan-700:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-cyan-700:focus,html[data-netbox-color-mode=light] .btn-outline-cyan-700:active:focus,html[data-netbox-color-mode=light] .btn-outline-cyan-700.active:focus,html[data-netbox-color-mode=light] .btn-outline-cyan-700.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #08799080}html .btn-outline-cyan-700:disabled,html .btn-outline-cyan-700.disabled,html[data-netbox-color-mode=dark] .btn-outline-cyan-700:disabled,html[data-netbox-color-mode=dark] .btn-outline-cyan-700.disabled,html[data-netbox-color-mode=light] .btn-outline-cyan-700:disabled,html[data-netbox-color-mode=light] .btn-outline-cyan-700.disabled{color:#087990;background-color:transparent}}@media print{html .btn-outline-cyan-800,html[data-netbox-color-mode=dark] .btn-outline-cyan-800,html[data-netbox-color-mode=light] .btn-outline-cyan-800{color:#055160;border-color:#055160}html .btn-outline-cyan-800:hover,html[data-netbox-color-mode=dark] .btn-outline-cyan-800:hover,html[data-netbox-color-mode=light] .btn-outline-cyan-800:hover{color:#fff;background-color:#055160;border-color:#055160}.btn-check:focus+html .btn-outline-cyan-800,html .btn-outline-cyan-800:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-cyan-800,html[data-netbox-color-mode=dark] .btn-outline-cyan-800:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-cyan-800,html[data-netbox-color-mode=light] .btn-outline-cyan-800:focus{box-shadow:0 0 0 .25rem #05516080}.btn-check:checked+html .btn-outline-cyan-800,.btn-check:active+html .btn-outline-cyan-800,html .btn-outline-cyan-800:active,html .btn-outline-cyan-800.active,html .btn-outline-cyan-800.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-cyan-800,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-cyan-800,html[data-netbox-color-mode=dark] .btn-outline-cyan-800:active,html[data-netbox-color-mode=dark] .btn-outline-cyan-800.active,html[data-netbox-color-mode=dark] .btn-outline-cyan-800.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-cyan-800,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-cyan-800,html[data-netbox-color-mode=light] .btn-outline-cyan-800:active,html[data-netbox-color-mode=light] .btn-outline-cyan-800.active,html[data-netbox-color-mode=light] .btn-outline-cyan-800.dropdown-toggle.show{color:#fff;background-color:#055160;border-color:#055160}.btn-check:checked+html .btn-outline-cyan-800:focus,.btn-check:active+html .btn-outline-cyan-800:focus,html .btn-outline-cyan-800:active:focus,html .btn-outline-cyan-800.active:focus,html .btn-outline-cyan-800.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-cyan-800:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-cyan-800:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-800:active:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-800.active:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-800.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-cyan-800:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-cyan-800:focus,html[data-netbox-color-mode=light] .btn-outline-cyan-800:active:focus,html[data-netbox-color-mode=light] .btn-outline-cyan-800.active:focus,html[data-netbox-color-mode=light] .btn-outline-cyan-800.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #05516080}html .btn-outline-cyan-800:disabled,html .btn-outline-cyan-800.disabled,html[data-netbox-color-mode=dark] .btn-outline-cyan-800:disabled,html[data-netbox-color-mode=dark] .btn-outline-cyan-800.disabled,html[data-netbox-color-mode=light] .btn-outline-cyan-800:disabled,html[data-netbox-color-mode=light] .btn-outline-cyan-800.disabled{color:#055160;background-color:transparent}}@media print{html .btn-outline-cyan-900,html[data-netbox-color-mode=dark] .btn-outline-cyan-900,html[data-netbox-color-mode=light] .btn-outline-cyan-900{color:#032830;border-color:#032830}html .btn-outline-cyan-900:hover,html[data-netbox-color-mode=dark] .btn-outline-cyan-900:hover,html[data-netbox-color-mode=light] .btn-outline-cyan-900:hover{color:#fff;background-color:#032830;border-color:#032830}.btn-check:focus+html .btn-outline-cyan-900,html .btn-outline-cyan-900:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-cyan-900,html[data-netbox-color-mode=dark] .btn-outline-cyan-900:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-cyan-900,html[data-netbox-color-mode=light] .btn-outline-cyan-900:focus{box-shadow:0 0 0 .25rem #03283080}.btn-check:checked+html .btn-outline-cyan-900,.btn-check:active+html .btn-outline-cyan-900,html .btn-outline-cyan-900:active,html .btn-outline-cyan-900.active,html .btn-outline-cyan-900.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-cyan-900,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-cyan-900,html[data-netbox-color-mode=dark] .btn-outline-cyan-900:active,html[data-netbox-color-mode=dark] .btn-outline-cyan-900.active,html[data-netbox-color-mode=dark] .btn-outline-cyan-900.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-cyan-900,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-cyan-900,html[data-netbox-color-mode=light] .btn-outline-cyan-900:active,html[data-netbox-color-mode=light] .btn-outline-cyan-900.active,html[data-netbox-color-mode=light] .btn-outline-cyan-900.dropdown-toggle.show{color:#fff;background-color:#032830;border-color:#032830}.btn-check:checked+html .btn-outline-cyan-900:focus,.btn-check:active+html .btn-outline-cyan-900:focus,html .btn-outline-cyan-900:active:focus,html .btn-outline-cyan-900.active:focus,html .btn-outline-cyan-900.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-cyan-900:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-cyan-900:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-900:active:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-900.active:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan-900.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-cyan-900:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-cyan-900:focus,html[data-netbox-color-mode=light] .btn-outline-cyan-900:active:focus,html[data-netbox-color-mode=light] .btn-outline-cyan-900.active:focus,html[data-netbox-color-mode=light] .btn-outline-cyan-900.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #03283080}html .btn-outline-cyan-900:disabled,html .btn-outline-cyan-900.disabled,html[data-netbox-color-mode=dark] .btn-outline-cyan-900:disabled,html[data-netbox-color-mode=dark] .btn-outline-cyan-900.disabled,html[data-netbox-color-mode=light] .btn-outline-cyan-900:disabled,html[data-netbox-color-mode=light] .btn-outline-cyan-900.disabled{color:#032830;background-color:transparent}}@media print{html .btn-outline-indigo-100,html[data-netbox-color-mode=dark] .btn-outline-indigo-100,html[data-netbox-color-mode=light] .btn-outline-indigo-100{color:#e0cffc;border-color:#e0cffc}html .btn-outline-indigo-100:hover,html[data-netbox-color-mode=dark] .btn-outline-indigo-100:hover,html[data-netbox-color-mode=light] .btn-outline-indigo-100:hover{color:#000;background-color:#e0cffc;border-color:#e0cffc}.btn-check:focus+html .btn-outline-indigo-100,html .btn-outline-indigo-100:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-indigo-100,html[data-netbox-color-mode=dark] .btn-outline-indigo-100:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-indigo-100,html[data-netbox-color-mode=light] .btn-outline-indigo-100:focus{box-shadow:0 0 0 .25rem #e0cffc80}.btn-check:checked+html .btn-outline-indigo-100,.btn-check:active+html .btn-outline-indigo-100,html .btn-outline-indigo-100:active,html .btn-outline-indigo-100.active,html .btn-outline-indigo-100.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-indigo-100,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-indigo-100,html[data-netbox-color-mode=dark] .btn-outline-indigo-100:active,html[data-netbox-color-mode=dark] .btn-outline-indigo-100.active,html[data-netbox-color-mode=dark] .btn-outline-indigo-100.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-indigo-100,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-indigo-100,html[data-netbox-color-mode=light] .btn-outline-indigo-100:active,html[data-netbox-color-mode=light] .btn-outline-indigo-100.active,html[data-netbox-color-mode=light] .btn-outline-indigo-100.dropdown-toggle.show{color:#000;background-color:#e0cffc;border-color:#e0cffc}.btn-check:checked+html .btn-outline-indigo-100:focus,.btn-check:active+html .btn-outline-indigo-100:focus,html .btn-outline-indigo-100:active:focus,html .btn-outline-indigo-100.active:focus,html .btn-outline-indigo-100.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-indigo-100:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-indigo-100:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-100:active:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-100.active:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-100.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-indigo-100:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-indigo-100:focus,html[data-netbox-color-mode=light] .btn-outline-indigo-100:active:focus,html[data-netbox-color-mode=light] .btn-outline-indigo-100.active:focus,html[data-netbox-color-mode=light] .btn-outline-indigo-100.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #e0cffc80}html .btn-outline-indigo-100:disabled,html .btn-outline-indigo-100.disabled,html[data-netbox-color-mode=dark] .btn-outline-indigo-100:disabled,html[data-netbox-color-mode=dark] .btn-outline-indigo-100.disabled,html[data-netbox-color-mode=light] .btn-outline-indigo-100:disabled,html[data-netbox-color-mode=light] .btn-outline-indigo-100.disabled{color:#e0cffc;background-color:transparent}}@media print{html .btn-outline-indigo-200,html[data-netbox-color-mode=dark] .btn-outline-indigo-200,html[data-netbox-color-mode=light] .btn-outline-indigo-200{color:#c29ffa;border-color:#c29ffa}html .btn-outline-indigo-200:hover,html[data-netbox-color-mode=dark] .btn-outline-indigo-200:hover,html[data-netbox-color-mode=light] .btn-outline-indigo-200:hover{color:#000;background-color:#c29ffa;border-color:#c29ffa}.btn-check:focus+html .btn-outline-indigo-200,html .btn-outline-indigo-200:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-indigo-200,html[data-netbox-color-mode=dark] .btn-outline-indigo-200:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-indigo-200,html[data-netbox-color-mode=light] .btn-outline-indigo-200:focus{box-shadow:0 0 0 .25rem #c29ffa80}.btn-check:checked+html .btn-outline-indigo-200,.btn-check:active+html .btn-outline-indigo-200,html .btn-outline-indigo-200:active,html .btn-outline-indigo-200.active,html .btn-outline-indigo-200.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-indigo-200,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-indigo-200,html[data-netbox-color-mode=dark] .btn-outline-indigo-200:active,html[data-netbox-color-mode=dark] .btn-outline-indigo-200.active,html[data-netbox-color-mode=dark] .btn-outline-indigo-200.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-indigo-200,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-indigo-200,html[data-netbox-color-mode=light] .btn-outline-indigo-200:active,html[data-netbox-color-mode=light] .btn-outline-indigo-200.active,html[data-netbox-color-mode=light] .btn-outline-indigo-200.dropdown-toggle.show{color:#000;background-color:#c29ffa;border-color:#c29ffa}.btn-check:checked+html .btn-outline-indigo-200:focus,.btn-check:active+html .btn-outline-indigo-200:focus,html .btn-outline-indigo-200:active:focus,html .btn-outline-indigo-200.active:focus,html .btn-outline-indigo-200.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-indigo-200:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-indigo-200:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-200:active:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-200.active:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-200.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-indigo-200:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-indigo-200:focus,html[data-netbox-color-mode=light] .btn-outline-indigo-200:active:focus,html[data-netbox-color-mode=light] .btn-outline-indigo-200.active:focus,html[data-netbox-color-mode=light] .btn-outline-indigo-200.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #c29ffa80}html .btn-outline-indigo-200:disabled,html .btn-outline-indigo-200.disabled,html[data-netbox-color-mode=dark] .btn-outline-indigo-200:disabled,html[data-netbox-color-mode=dark] .btn-outline-indigo-200.disabled,html[data-netbox-color-mode=light] .btn-outline-indigo-200:disabled,html[data-netbox-color-mode=light] .btn-outline-indigo-200.disabled{color:#c29ffa;background-color:transparent}}@media print{html .btn-outline-indigo-300,html[data-netbox-color-mode=dark] .btn-outline-indigo-300,html[data-netbox-color-mode=light] .btn-outline-indigo-300{color:#a370f7;border-color:#a370f7}html .btn-outline-indigo-300:hover,html[data-netbox-color-mode=dark] .btn-outline-indigo-300:hover,html[data-netbox-color-mode=light] .btn-outline-indigo-300:hover{color:#000;background-color:#a370f7;border-color:#a370f7}.btn-check:focus+html .btn-outline-indigo-300,html .btn-outline-indigo-300:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-indigo-300,html[data-netbox-color-mode=dark] .btn-outline-indigo-300:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-indigo-300,html[data-netbox-color-mode=light] .btn-outline-indigo-300:focus{box-shadow:0 0 0 .25rem #a370f780}.btn-check:checked+html .btn-outline-indigo-300,.btn-check:active+html .btn-outline-indigo-300,html .btn-outline-indigo-300:active,html .btn-outline-indigo-300.active,html .btn-outline-indigo-300.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-indigo-300,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-indigo-300,html[data-netbox-color-mode=dark] .btn-outline-indigo-300:active,html[data-netbox-color-mode=dark] .btn-outline-indigo-300.active,html[data-netbox-color-mode=dark] .btn-outline-indigo-300.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-indigo-300,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-indigo-300,html[data-netbox-color-mode=light] .btn-outline-indigo-300:active,html[data-netbox-color-mode=light] .btn-outline-indigo-300.active,html[data-netbox-color-mode=light] .btn-outline-indigo-300.dropdown-toggle.show{color:#000;background-color:#a370f7;border-color:#a370f7}.btn-check:checked+html .btn-outline-indigo-300:focus,.btn-check:active+html .btn-outline-indigo-300:focus,html .btn-outline-indigo-300:active:focus,html .btn-outline-indigo-300.active:focus,html .btn-outline-indigo-300.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-indigo-300:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-indigo-300:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-300:active:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-300.active:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-300.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-indigo-300:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-indigo-300:focus,html[data-netbox-color-mode=light] .btn-outline-indigo-300:active:focus,html[data-netbox-color-mode=light] .btn-outline-indigo-300.active:focus,html[data-netbox-color-mode=light] .btn-outline-indigo-300.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #a370f780}html .btn-outline-indigo-300:disabled,html .btn-outline-indigo-300.disabled,html[data-netbox-color-mode=dark] .btn-outline-indigo-300:disabled,html[data-netbox-color-mode=dark] .btn-outline-indigo-300.disabled,html[data-netbox-color-mode=light] .btn-outline-indigo-300:disabled,html[data-netbox-color-mode=light] .btn-outline-indigo-300.disabled{color:#a370f7;background-color:transparent}}@media print{html .btn-outline-indigo-400,html[data-netbox-color-mode=dark] .btn-outline-indigo-400,html[data-netbox-color-mode=light] .btn-outline-indigo-400{color:#8540f5;border-color:#8540f5}html .btn-outline-indigo-400:hover,html[data-netbox-color-mode=dark] .btn-outline-indigo-400:hover,html[data-netbox-color-mode=light] .btn-outline-indigo-400:hover{color:#fff;background-color:#8540f5;border-color:#8540f5}.btn-check:focus+html .btn-outline-indigo-400,html .btn-outline-indigo-400:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-indigo-400,html[data-netbox-color-mode=dark] .btn-outline-indigo-400:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-indigo-400,html[data-netbox-color-mode=light] .btn-outline-indigo-400:focus{box-shadow:0 0 0 .25rem #8540f580}.btn-check:checked+html .btn-outline-indigo-400,.btn-check:active+html .btn-outline-indigo-400,html .btn-outline-indigo-400:active,html .btn-outline-indigo-400.active,html .btn-outline-indigo-400.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-indigo-400,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-indigo-400,html[data-netbox-color-mode=dark] .btn-outline-indigo-400:active,html[data-netbox-color-mode=dark] .btn-outline-indigo-400.active,html[data-netbox-color-mode=dark] .btn-outline-indigo-400.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-indigo-400,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-indigo-400,html[data-netbox-color-mode=light] .btn-outline-indigo-400:active,html[data-netbox-color-mode=light] .btn-outline-indigo-400.active,html[data-netbox-color-mode=light] .btn-outline-indigo-400.dropdown-toggle.show{color:#fff;background-color:#8540f5;border-color:#8540f5}.btn-check:checked+html .btn-outline-indigo-400:focus,.btn-check:active+html .btn-outline-indigo-400:focus,html .btn-outline-indigo-400:active:focus,html .btn-outline-indigo-400.active:focus,html .btn-outline-indigo-400.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-indigo-400:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-indigo-400:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-400:active:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-400.active:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-400.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-indigo-400:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-indigo-400:focus,html[data-netbox-color-mode=light] .btn-outline-indigo-400:active:focus,html[data-netbox-color-mode=light] .btn-outline-indigo-400.active:focus,html[data-netbox-color-mode=light] .btn-outline-indigo-400.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #8540f580}html .btn-outline-indigo-400:disabled,html .btn-outline-indigo-400.disabled,html[data-netbox-color-mode=dark] .btn-outline-indigo-400:disabled,html[data-netbox-color-mode=dark] .btn-outline-indigo-400.disabled,html[data-netbox-color-mode=light] .btn-outline-indigo-400:disabled,html[data-netbox-color-mode=light] .btn-outline-indigo-400.disabled{color:#8540f5;background-color:transparent}}@media print{html .btn-outline-indigo-500,html[data-netbox-color-mode=dark] .btn-outline-indigo-500,html[data-netbox-color-mode=light] .btn-outline-indigo-500{color:#6610f2;border-color:#6610f2}html .btn-outline-indigo-500:hover,html[data-netbox-color-mode=dark] .btn-outline-indigo-500:hover,html[data-netbox-color-mode=light] .btn-outline-indigo-500:hover{color:#fff;background-color:#6610f2;border-color:#6610f2}.btn-check:focus+html .btn-outline-indigo-500,html .btn-outline-indigo-500:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-indigo-500,html[data-netbox-color-mode=dark] .btn-outline-indigo-500:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-indigo-500,html[data-netbox-color-mode=light] .btn-outline-indigo-500:focus{box-shadow:0 0 0 .25rem #6610f280}.btn-check:checked+html .btn-outline-indigo-500,.btn-check:active+html .btn-outline-indigo-500,html .btn-outline-indigo-500:active,html .btn-outline-indigo-500.active,html .btn-outline-indigo-500.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-indigo-500,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-indigo-500,html[data-netbox-color-mode=dark] .btn-outline-indigo-500:active,html[data-netbox-color-mode=dark] .btn-outline-indigo-500.active,html[data-netbox-color-mode=dark] .btn-outline-indigo-500.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-indigo-500,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-indigo-500,html[data-netbox-color-mode=light] .btn-outline-indigo-500:active,html[data-netbox-color-mode=light] .btn-outline-indigo-500.active,html[data-netbox-color-mode=light] .btn-outline-indigo-500.dropdown-toggle.show{color:#fff;background-color:#6610f2;border-color:#6610f2}.btn-check:checked+html .btn-outline-indigo-500:focus,.btn-check:active+html .btn-outline-indigo-500:focus,html .btn-outline-indigo-500:active:focus,html .btn-outline-indigo-500.active:focus,html .btn-outline-indigo-500.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-indigo-500:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-indigo-500:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-500:active:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-500.active:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-500.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-indigo-500:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-indigo-500:focus,html[data-netbox-color-mode=light] .btn-outline-indigo-500:active:focus,html[data-netbox-color-mode=light] .btn-outline-indigo-500.active:focus,html[data-netbox-color-mode=light] .btn-outline-indigo-500.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #6610f280}html .btn-outline-indigo-500:disabled,html .btn-outline-indigo-500.disabled,html[data-netbox-color-mode=dark] .btn-outline-indigo-500:disabled,html[data-netbox-color-mode=dark] .btn-outline-indigo-500.disabled,html[data-netbox-color-mode=light] .btn-outline-indigo-500:disabled,html[data-netbox-color-mode=light] .btn-outline-indigo-500.disabled{color:#6610f2;background-color:transparent}}@media print{html .btn-outline-indigo-600,html[data-netbox-color-mode=dark] .btn-outline-indigo-600,html[data-netbox-color-mode=light] .btn-outline-indigo-600{color:#520dc2;border-color:#520dc2}html .btn-outline-indigo-600:hover,html[data-netbox-color-mode=dark] .btn-outline-indigo-600:hover,html[data-netbox-color-mode=light] .btn-outline-indigo-600:hover{color:#fff;background-color:#520dc2;border-color:#520dc2}.btn-check:focus+html .btn-outline-indigo-600,html .btn-outline-indigo-600:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-indigo-600,html[data-netbox-color-mode=dark] .btn-outline-indigo-600:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-indigo-600,html[data-netbox-color-mode=light] .btn-outline-indigo-600:focus{box-shadow:0 0 0 .25rem #520dc280}.btn-check:checked+html .btn-outline-indigo-600,.btn-check:active+html .btn-outline-indigo-600,html .btn-outline-indigo-600:active,html .btn-outline-indigo-600.active,html .btn-outline-indigo-600.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-indigo-600,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-indigo-600,html[data-netbox-color-mode=dark] .btn-outline-indigo-600:active,html[data-netbox-color-mode=dark] .btn-outline-indigo-600.active,html[data-netbox-color-mode=dark] .btn-outline-indigo-600.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-indigo-600,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-indigo-600,html[data-netbox-color-mode=light] .btn-outline-indigo-600:active,html[data-netbox-color-mode=light] .btn-outline-indigo-600.active,html[data-netbox-color-mode=light] .btn-outline-indigo-600.dropdown-toggle.show{color:#fff;background-color:#520dc2;border-color:#520dc2}.btn-check:checked+html .btn-outline-indigo-600:focus,.btn-check:active+html .btn-outline-indigo-600:focus,html .btn-outline-indigo-600:active:focus,html .btn-outline-indigo-600.active:focus,html .btn-outline-indigo-600.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-indigo-600:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-indigo-600:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-600:active:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-600.active:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-600.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-indigo-600:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-indigo-600:focus,html[data-netbox-color-mode=light] .btn-outline-indigo-600:active:focus,html[data-netbox-color-mode=light] .btn-outline-indigo-600.active:focus,html[data-netbox-color-mode=light] .btn-outline-indigo-600.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #520dc280}html .btn-outline-indigo-600:disabled,html .btn-outline-indigo-600.disabled,html[data-netbox-color-mode=dark] .btn-outline-indigo-600:disabled,html[data-netbox-color-mode=dark] .btn-outline-indigo-600.disabled,html[data-netbox-color-mode=light] .btn-outline-indigo-600:disabled,html[data-netbox-color-mode=light] .btn-outline-indigo-600.disabled{color:#520dc2;background-color:transparent}}@media print{html .btn-outline-indigo-700,html[data-netbox-color-mode=dark] .btn-outline-indigo-700,html[data-netbox-color-mode=light] .btn-outline-indigo-700{color:#3d0a91;border-color:#3d0a91}html .btn-outline-indigo-700:hover,html[data-netbox-color-mode=dark] .btn-outline-indigo-700:hover,html[data-netbox-color-mode=light] .btn-outline-indigo-700:hover{color:#fff;background-color:#3d0a91;border-color:#3d0a91}.btn-check:focus+html .btn-outline-indigo-700,html .btn-outline-indigo-700:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-indigo-700,html[data-netbox-color-mode=dark] .btn-outline-indigo-700:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-indigo-700,html[data-netbox-color-mode=light] .btn-outline-indigo-700:focus{box-shadow:0 0 0 .25rem #3d0a9180}.btn-check:checked+html .btn-outline-indigo-700,.btn-check:active+html .btn-outline-indigo-700,html .btn-outline-indigo-700:active,html .btn-outline-indigo-700.active,html .btn-outline-indigo-700.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-indigo-700,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-indigo-700,html[data-netbox-color-mode=dark] .btn-outline-indigo-700:active,html[data-netbox-color-mode=dark] .btn-outline-indigo-700.active,html[data-netbox-color-mode=dark] .btn-outline-indigo-700.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-indigo-700,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-indigo-700,html[data-netbox-color-mode=light] .btn-outline-indigo-700:active,html[data-netbox-color-mode=light] .btn-outline-indigo-700.active,html[data-netbox-color-mode=light] .btn-outline-indigo-700.dropdown-toggle.show{color:#fff;background-color:#3d0a91;border-color:#3d0a91}.btn-check:checked+html .btn-outline-indigo-700:focus,.btn-check:active+html .btn-outline-indigo-700:focus,html .btn-outline-indigo-700:active:focus,html .btn-outline-indigo-700.active:focus,html .btn-outline-indigo-700.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-indigo-700:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-indigo-700:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-700:active:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-700.active:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-700.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-indigo-700:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-indigo-700:focus,html[data-netbox-color-mode=light] .btn-outline-indigo-700:active:focus,html[data-netbox-color-mode=light] .btn-outline-indigo-700.active:focus,html[data-netbox-color-mode=light] .btn-outline-indigo-700.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #3d0a9180}html .btn-outline-indigo-700:disabled,html .btn-outline-indigo-700.disabled,html[data-netbox-color-mode=dark] .btn-outline-indigo-700:disabled,html[data-netbox-color-mode=dark] .btn-outline-indigo-700.disabled,html[data-netbox-color-mode=light] .btn-outline-indigo-700:disabled,html[data-netbox-color-mode=light] .btn-outline-indigo-700.disabled{color:#3d0a91;background-color:transparent}}@media print{html .btn-outline-indigo-800,html[data-netbox-color-mode=dark] .btn-outline-indigo-800,html[data-netbox-color-mode=light] .btn-outline-indigo-800{color:#290661;border-color:#290661}html .btn-outline-indigo-800:hover,html[data-netbox-color-mode=dark] .btn-outline-indigo-800:hover,html[data-netbox-color-mode=light] .btn-outline-indigo-800:hover{color:#fff;background-color:#290661;border-color:#290661}.btn-check:focus+html .btn-outline-indigo-800,html .btn-outline-indigo-800:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-indigo-800,html[data-netbox-color-mode=dark] .btn-outline-indigo-800:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-indigo-800,html[data-netbox-color-mode=light] .btn-outline-indigo-800:focus{box-shadow:0 0 0 .25rem #29066180}.btn-check:checked+html .btn-outline-indigo-800,.btn-check:active+html .btn-outline-indigo-800,html .btn-outline-indigo-800:active,html .btn-outline-indigo-800.active,html .btn-outline-indigo-800.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-indigo-800,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-indigo-800,html[data-netbox-color-mode=dark] .btn-outline-indigo-800:active,html[data-netbox-color-mode=dark] .btn-outline-indigo-800.active,html[data-netbox-color-mode=dark] .btn-outline-indigo-800.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-indigo-800,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-indigo-800,html[data-netbox-color-mode=light] .btn-outline-indigo-800:active,html[data-netbox-color-mode=light] .btn-outline-indigo-800.active,html[data-netbox-color-mode=light] .btn-outline-indigo-800.dropdown-toggle.show{color:#fff;background-color:#290661;border-color:#290661}.btn-check:checked+html .btn-outline-indigo-800:focus,.btn-check:active+html .btn-outline-indigo-800:focus,html .btn-outline-indigo-800:active:focus,html .btn-outline-indigo-800.active:focus,html .btn-outline-indigo-800.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-indigo-800:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-indigo-800:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-800:active:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-800.active:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-800.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-indigo-800:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-indigo-800:focus,html[data-netbox-color-mode=light] .btn-outline-indigo-800:active:focus,html[data-netbox-color-mode=light] .btn-outline-indigo-800.active:focus,html[data-netbox-color-mode=light] .btn-outline-indigo-800.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #29066180}html .btn-outline-indigo-800:disabled,html .btn-outline-indigo-800.disabled,html[data-netbox-color-mode=dark] .btn-outline-indigo-800:disabled,html[data-netbox-color-mode=dark] .btn-outline-indigo-800.disabled,html[data-netbox-color-mode=light] .btn-outline-indigo-800:disabled,html[data-netbox-color-mode=light] .btn-outline-indigo-800.disabled{color:#290661;background-color:transparent}}@media print{html .btn-outline-indigo-900,html[data-netbox-color-mode=dark] .btn-outline-indigo-900,html[data-netbox-color-mode=light] .btn-outline-indigo-900{color:#140330;border-color:#140330}html .btn-outline-indigo-900:hover,html[data-netbox-color-mode=dark] .btn-outline-indigo-900:hover,html[data-netbox-color-mode=light] .btn-outline-indigo-900:hover{color:#fff;background-color:#140330;border-color:#140330}.btn-check:focus+html .btn-outline-indigo-900,html .btn-outline-indigo-900:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-indigo-900,html[data-netbox-color-mode=dark] .btn-outline-indigo-900:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-indigo-900,html[data-netbox-color-mode=light] .btn-outline-indigo-900:focus{box-shadow:0 0 0 .25rem #14033080}.btn-check:checked+html .btn-outline-indigo-900,.btn-check:active+html .btn-outline-indigo-900,html .btn-outline-indigo-900:active,html .btn-outline-indigo-900.active,html .btn-outline-indigo-900.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-indigo-900,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-indigo-900,html[data-netbox-color-mode=dark] .btn-outline-indigo-900:active,html[data-netbox-color-mode=dark] .btn-outline-indigo-900.active,html[data-netbox-color-mode=dark] .btn-outline-indigo-900.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-indigo-900,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-indigo-900,html[data-netbox-color-mode=light] .btn-outline-indigo-900:active,html[data-netbox-color-mode=light] .btn-outline-indigo-900.active,html[data-netbox-color-mode=light] .btn-outline-indigo-900.dropdown-toggle.show{color:#fff;background-color:#140330;border-color:#140330}.btn-check:checked+html .btn-outline-indigo-900:focus,.btn-check:active+html .btn-outline-indigo-900:focus,html .btn-outline-indigo-900:active:focus,html .btn-outline-indigo-900.active:focus,html .btn-outline-indigo-900.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-indigo-900:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-indigo-900:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-900:active:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-900.active:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo-900.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-indigo-900:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-indigo-900:focus,html[data-netbox-color-mode=light] .btn-outline-indigo-900:active:focus,html[data-netbox-color-mode=light] .btn-outline-indigo-900.active:focus,html[data-netbox-color-mode=light] .btn-outline-indigo-900.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #14033080}html .btn-outline-indigo-900:disabled,html .btn-outline-indigo-900.disabled,html[data-netbox-color-mode=dark] .btn-outline-indigo-900:disabled,html[data-netbox-color-mode=dark] .btn-outline-indigo-900.disabled,html[data-netbox-color-mode=light] .btn-outline-indigo-900:disabled,html[data-netbox-color-mode=light] .btn-outline-indigo-900.disabled{color:#140330;background-color:transparent}}@media print{html .btn-outline-purple-100,html[data-netbox-color-mode=dark] .btn-outline-purple-100,html[data-netbox-color-mode=light] .btn-outline-purple-100{color:#e2d9f3;border-color:#e2d9f3}html .btn-outline-purple-100:hover,html[data-netbox-color-mode=dark] .btn-outline-purple-100:hover,html[data-netbox-color-mode=light] .btn-outline-purple-100:hover{color:#000;background-color:#e2d9f3;border-color:#e2d9f3}.btn-check:focus+html .btn-outline-purple-100,html .btn-outline-purple-100:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-purple-100,html[data-netbox-color-mode=dark] .btn-outline-purple-100:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-purple-100,html[data-netbox-color-mode=light] .btn-outline-purple-100:focus{box-shadow:0 0 0 .25rem #e2d9f380}.btn-check:checked+html .btn-outline-purple-100,.btn-check:active+html .btn-outline-purple-100,html .btn-outline-purple-100:active,html .btn-outline-purple-100.active,html .btn-outline-purple-100.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-purple-100,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-purple-100,html[data-netbox-color-mode=dark] .btn-outline-purple-100:active,html[data-netbox-color-mode=dark] .btn-outline-purple-100.active,html[data-netbox-color-mode=dark] .btn-outline-purple-100.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-purple-100,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-purple-100,html[data-netbox-color-mode=light] .btn-outline-purple-100:active,html[data-netbox-color-mode=light] .btn-outline-purple-100.active,html[data-netbox-color-mode=light] .btn-outline-purple-100.dropdown-toggle.show{color:#000;background-color:#e2d9f3;border-color:#e2d9f3}.btn-check:checked+html .btn-outline-purple-100:focus,.btn-check:active+html .btn-outline-purple-100:focus,html .btn-outline-purple-100:active:focus,html .btn-outline-purple-100.active:focus,html .btn-outline-purple-100.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-purple-100:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-purple-100:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-100:active:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-100.active:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-100.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-purple-100:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-purple-100:focus,html[data-netbox-color-mode=light] .btn-outline-purple-100:active:focus,html[data-netbox-color-mode=light] .btn-outline-purple-100.active:focus,html[data-netbox-color-mode=light] .btn-outline-purple-100.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #e2d9f380}html .btn-outline-purple-100:disabled,html .btn-outline-purple-100.disabled,html[data-netbox-color-mode=dark] .btn-outline-purple-100:disabled,html[data-netbox-color-mode=dark] .btn-outline-purple-100.disabled,html[data-netbox-color-mode=light] .btn-outline-purple-100:disabled,html[data-netbox-color-mode=light] .btn-outline-purple-100.disabled{color:#e2d9f3;background-color:transparent}}@media print{html .btn-outline-purple-200,html[data-netbox-color-mode=dark] .btn-outline-purple-200,html[data-netbox-color-mode=light] .btn-outline-purple-200{color:#c5b3e6;border-color:#c5b3e6}html .btn-outline-purple-200:hover,html[data-netbox-color-mode=dark] .btn-outline-purple-200:hover,html[data-netbox-color-mode=light] .btn-outline-purple-200:hover{color:#000;background-color:#c5b3e6;border-color:#c5b3e6}.btn-check:focus+html .btn-outline-purple-200,html .btn-outline-purple-200:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-purple-200,html[data-netbox-color-mode=dark] .btn-outline-purple-200:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-purple-200,html[data-netbox-color-mode=light] .btn-outline-purple-200:focus{box-shadow:0 0 0 .25rem #c5b3e680}.btn-check:checked+html .btn-outline-purple-200,.btn-check:active+html .btn-outline-purple-200,html .btn-outline-purple-200:active,html .btn-outline-purple-200.active,html .btn-outline-purple-200.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-purple-200,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-purple-200,html[data-netbox-color-mode=dark] .btn-outline-purple-200:active,html[data-netbox-color-mode=dark] .btn-outline-purple-200.active,html[data-netbox-color-mode=dark] .btn-outline-purple-200.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-purple-200,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-purple-200,html[data-netbox-color-mode=light] .btn-outline-purple-200:active,html[data-netbox-color-mode=light] .btn-outline-purple-200.active,html[data-netbox-color-mode=light] .btn-outline-purple-200.dropdown-toggle.show{color:#000;background-color:#c5b3e6;border-color:#c5b3e6}.btn-check:checked+html .btn-outline-purple-200:focus,.btn-check:active+html .btn-outline-purple-200:focus,html .btn-outline-purple-200:active:focus,html .btn-outline-purple-200.active:focus,html .btn-outline-purple-200.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-purple-200:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-purple-200:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-200:active:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-200.active:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-200.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-purple-200:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-purple-200:focus,html[data-netbox-color-mode=light] .btn-outline-purple-200:active:focus,html[data-netbox-color-mode=light] .btn-outline-purple-200.active:focus,html[data-netbox-color-mode=light] .btn-outline-purple-200.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #c5b3e680}html .btn-outline-purple-200:disabled,html .btn-outline-purple-200.disabled,html[data-netbox-color-mode=dark] .btn-outline-purple-200:disabled,html[data-netbox-color-mode=dark] .btn-outline-purple-200.disabled,html[data-netbox-color-mode=light] .btn-outline-purple-200:disabled,html[data-netbox-color-mode=light] .btn-outline-purple-200.disabled{color:#c5b3e6;background-color:transparent}}@media print{html .btn-outline-purple-300,html[data-netbox-color-mode=dark] .btn-outline-purple-300,html[data-netbox-color-mode=light] .btn-outline-purple-300{color:#a98eda;border-color:#a98eda}html .btn-outline-purple-300:hover,html[data-netbox-color-mode=dark] .btn-outline-purple-300:hover,html[data-netbox-color-mode=light] .btn-outline-purple-300:hover{color:#000;background-color:#a98eda;border-color:#a98eda}.btn-check:focus+html .btn-outline-purple-300,html .btn-outline-purple-300:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-purple-300,html[data-netbox-color-mode=dark] .btn-outline-purple-300:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-purple-300,html[data-netbox-color-mode=light] .btn-outline-purple-300:focus{box-shadow:0 0 0 .25rem #a98eda80}.btn-check:checked+html .btn-outline-purple-300,.btn-check:active+html .btn-outline-purple-300,html .btn-outline-purple-300:active,html .btn-outline-purple-300.active,html .btn-outline-purple-300.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-purple-300,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-purple-300,html[data-netbox-color-mode=dark] .btn-outline-purple-300:active,html[data-netbox-color-mode=dark] .btn-outline-purple-300.active,html[data-netbox-color-mode=dark] .btn-outline-purple-300.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-purple-300,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-purple-300,html[data-netbox-color-mode=light] .btn-outline-purple-300:active,html[data-netbox-color-mode=light] .btn-outline-purple-300.active,html[data-netbox-color-mode=light] .btn-outline-purple-300.dropdown-toggle.show{color:#000;background-color:#a98eda;border-color:#a98eda}.btn-check:checked+html .btn-outline-purple-300:focus,.btn-check:active+html .btn-outline-purple-300:focus,html .btn-outline-purple-300:active:focus,html .btn-outline-purple-300.active:focus,html .btn-outline-purple-300.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-purple-300:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-purple-300:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-300:active:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-300.active:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-300.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-purple-300:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-purple-300:focus,html[data-netbox-color-mode=light] .btn-outline-purple-300:active:focus,html[data-netbox-color-mode=light] .btn-outline-purple-300.active:focus,html[data-netbox-color-mode=light] .btn-outline-purple-300.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #a98eda80}html .btn-outline-purple-300:disabled,html .btn-outline-purple-300.disabled,html[data-netbox-color-mode=dark] .btn-outline-purple-300:disabled,html[data-netbox-color-mode=dark] .btn-outline-purple-300.disabled,html[data-netbox-color-mode=light] .btn-outline-purple-300:disabled,html[data-netbox-color-mode=light] .btn-outline-purple-300.disabled{color:#a98eda;background-color:transparent}}@media print{html .btn-outline-purple-400,html[data-netbox-color-mode=dark] .btn-outline-purple-400,html[data-netbox-color-mode=light] .btn-outline-purple-400{color:#8c68cd;border-color:#8c68cd}html .btn-outline-purple-400:hover,html[data-netbox-color-mode=dark] .btn-outline-purple-400:hover,html[data-netbox-color-mode=light] .btn-outline-purple-400:hover{color:#000;background-color:#8c68cd;border-color:#8c68cd}.btn-check:focus+html .btn-outline-purple-400,html .btn-outline-purple-400:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-purple-400,html[data-netbox-color-mode=dark] .btn-outline-purple-400:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-purple-400,html[data-netbox-color-mode=light] .btn-outline-purple-400:focus{box-shadow:0 0 0 .25rem #8c68cd80}.btn-check:checked+html .btn-outline-purple-400,.btn-check:active+html .btn-outline-purple-400,html .btn-outline-purple-400:active,html .btn-outline-purple-400.active,html .btn-outline-purple-400.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-purple-400,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-purple-400,html[data-netbox-color-mode=dark] .btn-outline-purple-400:active,html[data-netbox-color-mode=dark] .btn-outline-purple-400.active,html[data-netbox-color-mode=dark] .btn-outline-purple-400.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-purple-400,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-purple-400,html[data-netbox-color-mode=light] .btn-outline-purple-400:active,html[data-netbox-color-mode=light] .btn-outline-purple-400.active,html[data-netbox-color-mode=light] .btn-outline-purple-400.dropdown-toggle.show{color:#000;background-color:#8c68cd;border-color:#8c68cd}.btn-check:checked+html .btn-outline-purple-400:focus,.btn-check:active+html .btn-outline-purple-400:focus,html .btn-outline-purple-400:active:focus,html .btn-outline-purple-400.active:focus,html .btn-outline-purple-400.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-purple-400:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-purple-400:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-400:active:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-400.active:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-400.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-purple-400:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-purple-400:focus,html[data-netbox-color-mode=light] .btn-outline-purple-400:active:focus,html[data-netbox-color-mode=light] .btn-outline-purple-400.active:focus,html[data-netbox-color-mode=light] .btn-outline-purple-400.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #8c68cd80}html .btn-outline-purple-400:disabled,html .btn-outline-purple-400.disabled,html[data-netbox-color-mode=dark] .btn-outline-purple-400:disabled,html[data-netbox-color-mode=dark] .btn-outline-purple-400.disabled,html[data-netbox-color-mode=light] .btn-outline-purple-400:disabled,html[data-netbox-color-mode=light] .btn-outline-purple-400.disabled{color:#8c68cd;background-color:transparent}}@media print{html .btn-outline-purple-500,html[data-netbox-color-mode=dark] .btn-outline-purple-500,html[data-netbox-color-mode=light] .btn-outline-purple-500{color:#6f42c1;border-color:#6f42c1}html .btn-outline-purple-500:hover,html[data-netbox-color-mode=dark] .btn-outline-purple-500:hover,html[data-netbox-color-mode=light] .btn-outline-purple-500:hover{color:#fff;background-color:#6f42c1;border-color:#6f42c1}.btn-check:focus+html .btn-outline-purple-500,html .btn-outline-purple-500:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-purple-500,html[data-netbox-color-mode=dark] .btn-outline-purple-500:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-purple-500,html[data-netbox-color-mode=light] .btn-outline-purple-500:focus{box-shadow:0 0 0 .25rem #6f42c180}.btn-check:checked+html .btn-outline-purple-500,.btn-check:active+html .btn-outline-purple-500,html .btn-outline-purple-500:active,html .btn-outline-purple-500.active,html .btn-outline-purple-500.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-purple-500,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-purple-500,html[data-netbox-color-mode=dark] .btn-outline-purple-500:active,html[data-netbox-color-mode=dark] .btn-outline-purple-500.active,html[data-netbox-color-mode=dark] .btn-outline-purple-500.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-purple-500,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-purple-500,html[data-netbox-color-mode=light] .btn-outline-purple-500:active,html[data-netbox-color-mode=light] .btn-outline-purple-500.active,html[data-netbox-color-mode=light] .btn-outline-purple-500.dropdown-toggle.show{color:#fff;background-color:#6f42c1;border-color:#6f42c1}.btn-check:checked+html .btn-outline-purple-500:focus,.btn-check:active+html .btn-outline-purple-500:focus,html .btn-outline-purple-500:active:focus,html .btn-outline-purple-500.active:focus,html .btn-outline-purple-500.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-purple-500:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-purple-500:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-500:active:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-500.active:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-500.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-purple-500:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-purple-500:focus,html[data-netbox-color-mode=light] .btn-outline-purple-500:active:focus,html[data-netbox-color-mode=light] .btn-outline-purple-500.active:focus,html[data-netbox-color-mode=light] .btn-outline-purple-500.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #6f42c180}html .btn-outline-purple-500:disabled,html .btn-outline-purple-500.disabled,html[data-netbox-color-mode=dark] .btn-outline-purple-500:disabled,html[data-netbox-color-mode=dark] .btn-outline-purple-500.disabled,html[data-netbox-color-mode=light] .btn-outline-purple-500:disabled,html[data-netbox-color-mode=light] .btn-outline-purple-500.disabled{color:#6f42c1;background-color:transparent}}@media print{html .btn-outline-purple-600,html[data-netbox-color-mode=dark] .btn-outline-purple-600,html[data-netbox-color-mode=light] .btn-outline-purple-600{color:#59359a;border-color:#59359a}html .btn-outline-purple-600:hover,html[data-netbox-color-mode=dark] .btn-outline-purple-600:hover,html[data-netbox-color-mode=light] .btn-outline-purple-600:hover{color:#fff;background-color:#59359a;border-color:#59359a}.btn-check:focus+html .btn-outline-purple-600,html .btn-outline-purple-600:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-purple-600,html[data-netbox-color-mode=dark] .btn-outline-purple-600:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-purple-600,html[data-netbox-color-mode=light] .btn-outline-purple-600:focus{box-shadow:0 0 0 .25rem #59359a80}.btn-check:checked+html .btn-outline-purple-600,.btn-check:active+html .btn-outline-purple-600,html .btn-outline-purple-600:active,html .btn-outline-purple-600.active,html .btn-outline-purple-600.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-purple-600,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-purple-600,html[data-netbox-color-mode=dark] .btn-outline-purple-600:active,html[data-netbox-color-mode=dark] .btn-outline-purple-600.active,html[data-netbox-color-mode=dark] .btn-outline-purple-600.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-purple-600,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-purple-600,html[data-netbox-color-mode=light] .btn-outline-purple-600:active,html[data-netbox-color-mode=light] .btn-outline-purple-600.active,html[data-netbox-color-mode=light] .btn-outline-purple-600.dropdown-toggle.show{color:#fff;background-color:#59359a;border-color:#59359a}.btn-check:checked+html .btn-outline-purple-600:focus,.btn-check:active+html .btn-outline-purple-600:focus,html .btn-outline-purple-600:active:focus,html .btn-outline-purple-600.active:focus,html .btn-outline-purple-600.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-purple-600:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-purple-600:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-600:active:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-600.active:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-600.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-purple-600:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-purple-600:focus,html[data-netbox-color-mode=light] .btn-outline-purple-600:active:focus,html[data-netbox-color-mode=light] .btn-outline-purple-600.active:focus,html[data-netbox-color-mode=light] .btn-outline-purple-600.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #59359a80}html .btn-outline-purple-600:disabled,html .btn-outline-purple-600.disabled,html[data-netbox-color-mode=dark] .btn-outline-purple-600:disabled,html[data-netbox-color-mode=dark] .btn-outline-purple-600.disabled,html[data-netbox-color-mode=light] .btn-outline-purple-600:disabled,html[data-netbox-color-mode=light] .btn-outline-purple-600.disabled{color:#59359a;background-color:transparent}}@media print{html .btn-outline-purple-700,html[data-netbox-color-mode=dark] .btn-outline-purple-700,html[data-netbox-color-mode=light] .btn-outline-purple-700{color:#432874;border-color:#432874}html .btn-outline-purple-700:hover,html[data-netbox-color-mode=dark] .btn-outline-purple-700:hover,html[data-netbox-color-mode=light] .btn-outline-purple-700:hover{color:#fff;background-color:#432874;border-color:#432874}.btn-check:focus+html .btn-outline-purple-700,html .btn-outline-purple-700:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-purple-700,html[data-netbox-color-mode=dark] .btn-outline-purple-700:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-purple-700,html[data-netbox-color-mode=light] .btn-outline-purple-700:focus{box-shadow:0 0 0 .25rem #43287480}.btn-check:checked+html .btn-outline-purple-700,.btn-check:active+html .btn-outline-purple-700,html .btn-outline-purple-700:active,html .btn-outline-purple-700.active,html .btn-outline-purple-700.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-purple-700,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-purple-700,html[data-netbox-color-mode=dark] .btn-outline-purple-700:active,html[data-netbox-color-mode=dark] .btn-outline-purple-700.active,html[data-netbox-color-mode=dark] .btn-outline-purple-700.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-purple-700,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-purple-700,html[data-netbox-color-mode=light] .btn-outline-purple-700:active,html[data-netbox-color-mode=light] .btn-outline-purple-700.active,html[data-netbox-color-mode=light] .btn-outline-purple-700.dropdown-toggle.show{color:#fff;background-color:#432874;border-color:#432874}.btn-check:checked+html .btn-outline-purple-700:focus,.btn-check:active+html .btn-outline-purple-700:focus,html .btn-outline-purple-700:active:focus,html .btn-outline-purple-700.active:focus,html .btn-outline-purple-700.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-purple-700:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-purple-700:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-700:active:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-700.active:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-700.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-purple-700:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-purple-700:focus,html[data-netbox-color-mode=light] .btn-outline-purple-700:active:focus,html[data-netbox-color-mode=light] .btn-outline-purple-700.active:focus,html[data-netbox-color-mode=light] .btn-outline-purple-700.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #43287480}html .btn-outline-purple-700:disabled,html .btn-outline-purple-700.disabled,html[data-netbox-color-mode=dark] .btn-outline-purple-700:disabled,html[data-netbox-color-mode=dark] .btn-outline-purple-700.disabled,html[data-netbox-color-mode=light] .btn-outline-purple-700:disabled,html[data-netbox-color-mode=light] .btn-outline-purple-700.disabled{color:#432874;background-color:transparent}}@media print{html .btn-outline-purple-800,html[data-netbox-color-mode=dark] .btn-outline-purple-800,html[data-netbox-color-mode=light] .btn-outline-purple-800{color:#2c1a4d;border-color:#2c1a4d}html .btn-outline-purple-800:hover,html[data-netbox-color-mode=dark] .btn-outline-purple-800:hover,html[data-netbox-color-mode=light] .btn-outline-purple-800:hover{color:#fff;background-color:#2c1a4d;border-color:#2c1a4d}.btn-check:focus+html .btn-outline-purple-800,html .btn-outline-purple-800:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-purple-800,html[data-netbox-color-mode=dark] .btn-outline-purple-800:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-purple-800,html[data-netbox-color-mode=light] .btn-outline-purple-800:focus{box-shadow:0 0 0 .25rem #2c1a4d80}.btn-check:checked+html .btn-outline-purple-800,.btn-check:active+html .btn-outline-purple-800,html .btn-outline-purple-800:active,html .btn-outline-purple-800.active,html .btn-outline-purple-800.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-purple-800,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-purple-800,html[data-netbox-color-mode=dark] .btn-outline-purple-800:active,html[data-netbox-color-mode=dark] .btn-outline-purple-800.active,html[data-netbox-color-mode=dark] .btn-outline-purple-800.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-purple-800,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-purple-800,html[data-netbox-color-mode=light] .btn-outline-purple-800:active,html[data-netbox-color-mode=light] .btn-outline-purple-800.active,html[data-netbox-color-mode=light] .btn-outline-purple-800.dropdown-toggle.show{color:#fff;background-color:#2c1a4d;border-color:#2c1a4d}.btn-check:checked+html .btn-outline-purple-800:focus,.btn-check:active+html .btn-outline-purple-800:focus,html .btn-outline-purple-800:active:focus,html .btn-outline-purple-800.active:focus,html .btn-outline-purple-800.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-purple-800:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-purple-800:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-800:active:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-800.active:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-800.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-purple-800:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-purple-800:focus,html[data-netbox-color-mode=light] .btn-outline-purple-800:active:focus,html[data-netbox-color-mode=light] .btn-outline-purple-800.active:focus,html[data-netbox-color-mode=light] .btn-outline-purple-800.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #2c1a4d80}html .btn-outline-purple-800:disabled,html .btn-outline-purple-800.disabled,html[data-netbox-color-mode=dark] .btn-outline-purple-800:disabled,html[data-netbox-color-mode=dark] .btn-outline-purple-800.disabled,html[data-netbox-color-mode=light] .btn-outline-purple-800:disabled,html[data-netbox-color-mode=light] .btn-outline-purple-800.disabled{color:#2c1a4d;background-color:transparent}}@media print{html .btn-outline-purple-900,html[data-netbox-color-mode=dark] .btn-outline-purple-900,html[data-netbox-color-mode=light] .btn-outline-purple-900{color:#160d27;border-color:#160d27}html .btn-outline-purple-900:hover,html[data-netbox-color-mode=dark] .btn-outline-purple-900:hover,html[data-netbox-color-mode=light] .btn-outline-purple-900:hover{color:#fff;background-color:#160d27;border-color:#160d27}.btn-check:focus+html .btn-outline-purple-900,html .btn-outline-purple-900:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-purple-900,html[data-netbox-color-mode=dark] .btn-outline-purple-900:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-purple-900,html[data-netbox-color-mode=light] .btn-outline-purple-900:focus{box-shadow:0 0 0 .25rem #160d2780}.btn-check:checked+html .btn-outline-purple-900,.btn-check:active+html .btn-outline-purple-900,html .btn-outline-purple-900:active,html .btn-outline-purple-900.active,html .btn-outline-purple-900.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-purple-900,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-purple-900,html[data-netbox-color-mode=dark] .btn-outline-purple-900:active,html[data-netbox-color-mode=dark] .btn-outline-purple-900.active,html[data-netbox-color-mode=dark] .btn-outline-purple-900.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-purple-900,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-purple-900,html[data-netbox-color-mode=light] .btn-outline-purple-900:active,html[data-netbox-color-mode=light] .btn-outline-purple-900.active,html[data-netbox-color-mode=light] .btn-outline-purple-900.dropdown-toggle.show{color:#fff;background-color:#160d27;border-color:#160d27}.btn-check:checked+html .btn-outline-purple-900:focus,.btn-check:active+html .btn-outline-purple-900:focus,html .btn-outline-purple-900:active:focus,html .btn-outline-purple-900.active:focus,html .btn-outline-purple-900.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-purple-900:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-purple-900:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-900:active:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-900.active:focus,html[data-netbox-color-mode=dark] .btn-outline-purple-900.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-purple-900:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-purple-900:focus,html[data-netbox-color-mode=light] .btn-outline-purple-900:active:focus,html[data-netbox-color-mode=light] .btn-outline-purple-900.active:focus,html[data-netbox-color-mode=light] .btn-outline-purple-900.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #160d2780}html .btn-outline-purple-900:disabled,html .btn-outline-purple-900.disabled,html[data-netbox-color-mode=dark] .btn-outline-purple-900:disabled,html[data-netbox-color-mode=dark] .btn-outline-purple-900.disabled,html[data-netbox-color-mode=light] .btn-outline-purple-900:disabled,html[data-netbox-color-mode=light] .btn-outline-purple-900.disabled{color:#160d27;background-color:transparent}}@media print{html .btn-outline-pink-100,html[data-netbox-color-mode=dark] .btn-outline-pink-100,html[data-netbox-color-mode=light] .btn-outline-pink-100{color:#f7d6e6;border-color:#f7d6e6}html .btn-outline-pink-100:hover,html[data-netbox-color-mode=dark] .btn-outline-pink-100:hover,html[data-netbox-color-mode=light] .btn-outline-pink-100:hover{color:#000;background-color:#f7d6e6;border-color:#f7d6e6}.btn-check:focus+html .btn-outline-pink-100,html .btn-outline-pink-100:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-pink-100,html[data-netbox-color-mode=dark] .btn-outline-pink-100:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-pink-100,html[data-netbox-color-mode=light] .btn-outline-pink-100:focus{box-shadow:0 0 0 .25rem #f7d6e680}.btn-check:checked+html .btn-outline-pink-100,.btn-check:active+html .btn-outline-pink-100,html .btn-outline-pink-100:active,html .btn-outline-pink-100.active,html .btn-outline-pink-100.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-pink-100,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-pink-100,html[data-netbox-color-mode=dark] .btn-outline-pink-100:active,html[data-netbox-color-mode=dark] .btn-outline-pink-100.active,html[data-netbox-color-mode=dark] .btn-outline-pink-100.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-pink-100,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-pink-100,html[data-netbox-color-mode=light] .btn-outline-pink-100:active,html[data-netbox-color-mode=light] .btn-outline-pink-100.active,html[data-netbox-color-mode=light] .btn-outline-pink-100.dropdown-toggle.show{color:#000;background-color:#f7d6e6;border-color:#f7d6e6}.btn-check:checked+html .btn-outline-pink-100:focus,.btn-check:active+html .btn-outline-pink-100:focus,html .btn-outline-pink-100:active:focus,html .btn-outline-pink-100.active:focus,html .btn-outline-pink-100.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-pink-100:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-pink-100:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-100:active:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-100.active:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-100.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-pink-100:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-pink-100:focus,html[data-netbox-color-mode=light] .btn-outline-pink-100:active:focus,html[data-netbox-color-mode=light] .btn-outline-pink-100.active:focus,html[data-netbox-color-mode=light] .btn-outline-pink-100.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #f7d6e680}html .btn-outline-pink-100:disabled,html .btn-outline-pink-100.disabled,html[data-netbox-color-mode=dark] .btn-outline-pink-100:disabled,html[data-netbox-color-mode=dark] .btn-outline-pink-100.disabled,html[data-netbox-color-mode=light] .btn-outline-pink-100:disabled,html[data-netbox-color-mode=light] .btn-outline-pink-100.disabled{color:#f7d6e6;background-color:transparent}}@media print{html .btn-outline-pink-200,html[data-netbox-color-mode=dark] .btn-outline-pink-200,html[data-netbox-color-mode=light] .btn-outline-pink-200{color:#efadce;border-color:#efadce}html .btn-outline-pink-200:hover,html[data-netbox-color-mode=dark] .btn-outline-pink-200:hover,html[data-netbox-color-mode=light] .btn-outline-pink-200:hover{color:#000;background-color:#efadce;border-color:#efadce}.btn-check:focus+html .btn-outline-pink-200,html .btn-outline-pink-200:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-pink-200,html[data-netbox-color-mode=dark] .btn-outline-pink-200:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-pink-200,html[data-netbox-color-mode=light] .btn-outline-pink-200:focus{box-shadow:0 0 0 .25rem #efadce80}.btn-check:checked+html .btn-outline-pink-200,.btn-check:active+html .btn-outline-pink-200,html .btn-outline-pink-200:active,html .btn-outline-pink-200.active,html .btn-outline-pink-200.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-pink-200,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-pink-200,html[data-netbox-color-mode=dark] .btn-outline-pink-200:active,html[data-netbox-color-mode=dark] .btn-outline-pink-200.active,html[data-netbox-color-mode=dark] .btn-outline-pink-200.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-pink-200,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-pink-200,html[data-netbox-color-mode=light] .btn-outline-pink-200:active,html[data-netbox-color-mode=light] .btn-outline-pink-200.active,html[data-netbox-color-mode=light] .btn-outline-pink-200.dropdown-toggle.show{color:#000;background-color:#efadce;border-color:#efadce}.btn-check:checked+html .btn-outline-pink-200:focus,.btn-check:active+html .btn-outline-pink-200:focus,html .btn-outline-pink-200:active:focus,html .btn-outline-pink-200.active:focus,html .btn-outline-pink-200.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-pink-200:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-pink-200:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-200:active:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-200.active:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-200.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-pink-200:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-pink-200:focus,html[data-netbox-color-mode=light] .btn-outline-pink-200:active:focus,html[data-netbox-color-mode=light] .btn-outline-pink-200.active:focus,html[data-netbox-color-mode=light] .btn-outline-pink-200.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #efadce80}html .btn-outline-pink-200:disabled,html .btn-outline-pink-200.disabled,html[data-netbox-color-mode=dark] .btn-outline-pink-200:disabled,html[data-netbox-color-mode=dark] .btn-outline-pink-200.disabled,html[data-netbox-color-mode=light] .btn-outline-pink-200:disabled,html[data-netbox-color-mode=light] .btn-outline-pink-200.disabled{color:#efadce;background-color:transparent}}@media print{html .btn-outline-pink-300,html[data-netbox-color-mode=dark] .btn-outline-pink-300,html[data-netbox-color-mode=light] .btn-outline-pink-300{color:#e685b5;border-color:#e685b5}html .btn-outline-pink-300:hover,html[data-netbox-color-mode=dark] .btn-outline-pink-300:hover,html[data-netbox-color-mode=light] .btn-outline-pink-300:hover{color:#000;background-color:#e685b5;border-color:#e685b5}.btn-check:focus+html .btn-outline-pink-300,html .btn-outline-pink-300:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-pink-300,html[data-netbox-color-mode=dark] .btn-outline-pink-300:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-pink-300,html[data-netbox-color-mode=light] .btn-outline-pink-300:focus{box-shadow:0 0 0 .25rem #e685b580}.btn-check:checked+html .btn-outline-pink-300,.btn-check:active+html .btn-outline-pink-300,html .btn-outline-pink-300:active,html .btn-outline-pink-300.active,html .btn-outline-pink-300.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-pink-300,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-pink-300,html[data-netbox-color-mode=dark] .btn-outline-pink-300:active,html[data-netbox-color-mode=dark] .btn-outline-pink-300.active,html[data-netbox-color-mode=dark] .btn-outline-pink-300.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-pink-300,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-pink-300,html[data-netbox-color-mode=light] .btn-outline-pink-300:active,html[data-netbox-color-mode=light] .btn-outline-pink-300.active,html[data-netbox-color-mode=light] .btn-outline-pink-300.dropdown-toggle.show{color:#000;background-color:#e685b5;border-color:#e685b5}.btn-check:checked+html .btn-outline-pink-300:focus,.btn-check:active+html .btn-outline-pink-300:focus,html .btn-outline-pink-300:active:focus,html .btn-outline-pink-300.active:focus,html .btn-outline-pink-300.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-pink-300:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-pink-300:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-300:active:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-300.active:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-300.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-pink-300:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-pink-300:focus,html[data-netbox-color-mode=light] .btn-outline-pink-300:active:focus,html[data-netbox-color-mode=light] .btn-outline-pink-300.active:focus,html[data-netbox-color-mode=light] .btn-outline-pink-300.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #e685b580}html .btn-outline-pink-300:disabled,html .btn-outline-pink-300.disabled,html[data-netbox-color-mode=dark] .btn-outline-pink-300:disabled,html[data-netbox-color-mode=dark] .btn-outline-pink-300.disabled,html[data-netbox-color-mode=light] .btn-outline-pink-300:disabled,html[data-netbox-color-mode=light] .btn-outline-pink-300.disabled{color:#e685b5;background-color:transparent}}@media print{html .btn-outline-pink-400,html[data-netbox-color-mode=dark] .btn-outline-pink-400,html[data-netbox-color-mode=light] .btn-outline-pink-400{color:#de5c9d;border-color:#de5c9d}html .btn-outline-pink-400:hover,html[data-netbox-color-mode=dark] .btn-outline-pink-400:hover,html[data-netbox-color-mode=light] .btn-outline-pink-400:hover{color:#000;background-color:#de5c9d;border-color:#de5c9d}.btn-check:focus+html .btn-outline-pink-400,html .btn-outline-pink-400:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-pink-400,html[data-netbox-color-mode=dark] .btn-outline-pink-400:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-pink-400,html[data-netbox-color-mode=light] .btn-outline-pink-400:focus{box-shadow:0 0 0 .25rem #de5c9d80}.btn-check:checked+html .btn-outline-pink-400,.btn-check:active+html .btn-outline-pink-400,html .btn-outline-pink-400:active,html .btn-outline-pink-400.active,html .btn-outline-pink-400.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-pink-400,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-pink-400,html[data-netbox-color-mode=dark] .btn-outline-pink-400:active,html[data-netbox-color-mode=dark] .btn-outline-pink-400.active,html[data-netbox-color-mode=dark] .btn-outline-pink-400.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-pink-400,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-pink-400,html[data-netbox-color-mode=light] .btn-outline-pink-400:active,html[data-netbox-color-mode=light] .btn-outline-pink-400.active,html[data-netbox-color-mode=light] .btn-outline-pink-400.dropdown-toggle.show{color:#000;background-color:#de5c9d;border-color:#de5c9d}.btn-check:checked+html .btn-outline-pink-400:focus,.btn-check:active+html .btn-outline-pink-400:focus,html .btn-outline-pink-400:active:focus,html .btn-outline-pink-400.active:focus,html .btn-outline-pink-400.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-pink-400:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-pink-400:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-400:active:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-400.active:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-400.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-pink-400:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-pink-400:focus,html[data-netbox-color-mode=light] .btn-outline-pink-400:active:focus,html[data-netbox-color-mode=light] .btn-outline-pink-400.active:focus,html[data-netbox-color-mode=light] .btn-outline-pink-400.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #de5c9d80}html .btn-outline-pink-400:disabled,html .btn-outline-pink-400.disabled,html[data-netbox-color-mode=dark] .btn-outline-pink-400:disabled,html[data-netbox-color-mode=dark] .btn-outline-pink-400.disabled,html[data-netbox-color-mode=light] .btn-outline-pink-400:disabled,html[data-netbox-color-mode=light] .btn-outline-pink-400.disabled{color:#de5c9d;background-color:transparent}}@media print{html .btn-outline-pink-500,html[data-netbox-color-mode=dark] .btn-outline-pink-500,html[data-netbox-color-mode=light] .btn-outline-pink-500{color:#d63384;border-color:#d63384}html .btn-outline-pink-500:hover,html[data-netbox-color-mode=dark] .btn-outline-pink-500:hover,html[data-netbox-color-mode=light] .btn-outline-pink-500:hover{color:#fff;background-color:#d63384;border-color:#d63384}.btn-check:focus+html .btn-outline-pink-500,html .btn-outline-pink-500:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-pink-500,html[data-netbox-color-mode=dark] .btn-outline-pink-500:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-pink-500,html[data-netbox-color-mode=light] .btn-outline-pink-500:focus{box-shadow:0 0 0 .25rem #d6338480}.btn-check:checked+html .btn-outline-pink-500,.btn-check:active+html .btn-outline-pink-500,html .btn-outline-pink-500:active,html .btn-outline-pink-500.active,html .btn-outline-pink-500.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-pink-500,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-pink-500,html[data-netbox-color-mode=dark] .btn-outline-pink-500:active,html[data-netbox-color-mode=dark] .btn-outline-pink-500.active,html[data-netbox-color-mode=dark] .btn-outline-pink-500.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-pink-500,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-pink-500,html[data-netbox-color-mode=light] .btn-outline-pink-500:active,html[data-netbox-color-mode=light] .btn-outline-pink-500.active,html[data-netbox-color-mode=light] .btn-outline-pink-500.dropdown-toggle.show{color:#fff;background-color:#d63384;border-color:#d63384}.btn-check:checked+html .btn-outline-pink-500:focus,.btn-check:active+html .btn-outline-pink-500:focus,html .btn-outline-pink-500:active:focus,html .btn-outline-pink-500.active:focus,html .btn-outline-pink-500.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-pink-500:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-pink-500:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-500:active:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-500.active:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-500.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-pink-500:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-pink-500:focus,html[data-netbox-color-mode=light] .btn-outline-pink-500:active:focus,html[data-netbox-color-mode=light] .btn-outline-pink-500.active:focus,html[data-netbox-color-mode=light] .btn-outline-pink-500.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #d6338480}html .btn-outline-pink-500:disabled,html .btn-outline-pink-500.disabled,html[data-netbox-color-mode=dark] .btn-outline-pink-500:disabled,html[data-netbox-color-mode=dark] .btn-outline-pink-500.disabled,html[data-netbox-color-mode=light] .btn-outline-pink-500:disabled,html[data-netbox-color-mode=light] .btn-outline-pink-500.disabled{color:#d63384;background-color:transparent}}@media print{html .btn-outline-pink-600,html[data-netbox-color-mode=dark] .btn-outline-pink-600,html[data-netbox-color-mode=light] .btn-outline-pink-600{color:#ab296a;border-color:#ab296a}html .btn-outline-pink-600:hover,html[data-netbox-color-mode=dark] .btn-outline-pink-600:hover,html[data-netbox-color-mode=light] .btn-outline-pink-600:hover{color:#fff;background-color:#ab296a;border-color:#ab296a}.btn-check:focus+html .btn-outline-pink-600,html .btn-outline-pink-600:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-pink-600,html[data-netbox-color-mode=dark] .btn-outline-pink-600:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-pink-600,html[data-netbox-color-mode=light] .btn-outline-pink-600:focus{box-shadow:0 0 0 .25rem #ab296a80}.btn-check:checked+html .btn-outline-pink-600,.btn-check:active+html .btn-outline-pink-600,html .btn-outline-pink-600:active,html .btn-outline-pink-600.active,html .btn-outline-pink-600.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-pink-600,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-pink-600,html[data-netbox-color-mode=dark] .btn-outline-pink-600:active,html[data-netbox-color-mode=dark] .btn-outline-pink-600.active,html[data-netbox-color-mode=dark] .btn-outline-pink-600.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-pink-600,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-pink-600,html[data-netbox-color-mode=light] .btn-outline-pink-600:active,html[data-netbox-color-mode=light] .btn-outline-pink-600.active,html[data-netbox-color-mode=light] .btn-outline-pink-600.dropdown-toggle.show{color:#fff;background-color:#ab296a;border-color:#ab296a}.btn-check:checked+html .btn-outline-pink-600:focus,.btn-check:active+html .btn-outline-pink-600:focus,html .btn-outline-pink-600:active:focus,html .btn-outline-pink-600.active:focus,html .btn-outline-pink-600.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-pink-600:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-pink-600:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-600:active:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-600.active:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-600.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-pink-600:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-pink-600:focus,html[data-netbox-color-mode=light] .btn-outline-pink-600:active:focus,html[data-netbox-color-mode=light] .btn-outline-pink-600.active:focus,html[data-netbox-color-mode=light] .btn-outline-pink-600.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #ab296a80}html .btn-outline-pink-600:disabled,html .btn-outline-pink-600.disabled,html[data-netbox-color-mode=dark] .btn-outline-pink-600:disabled,html[data-netbox-color-mode=dark] .btn-outline-pink-600.disabled,html[data-netbox-color-mode=light] .btn-outline-pink-600:disabled,html[data-netbox-color-mode=light] .btn-outline-pink-600.disabled{color:#ab296a;background-color:transparent}}@media print{html .btn-outline-pink-700,html[data-netbox-color-mode=dark] .btn-outline-pink-700,html[data-netbox-color-mode=light] .btn-outline-pink-700{color:#801f4f;border-color:#801f4f}html .btn-outline-pink-700:hover,html[data-netbox-color-mode=dark] .btn-outline-pink-700:hover,html[data-netbox-color-mode=light] .btn-outline-pink-700:hover{color:#fff;background-color:#801f4f;border-color:#801f4f}.btn-check:focus+html .btn-outline-pink-700,html .btn-outline-pink-700:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-pink-700,html[data-netbox-color-mode=dark] .btn-outline-pink-700:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-pink-700,html[data-netbox-color-mode=light] .btn-outline-pink-700:focus{box-shadow:0 0 0 .25rem #801f4f80}.btn-check:checked+html .btn-outline-pink-700,.btn-check:active+html .btn-outline-pink-700,html .btn-outline-pink-700:active,html .btn-outline-pink-700.active,html .btn-outline-pink-700.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-pink-700,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-pink-700,html[data-netbox-color-mode=dark] .btn-outline-pink-700:active,html[data-netbox-color-mode=dark] .btn-outline-pink-700.active,html[data-netbox-color-mode=dark] .btn-outline-pink-700.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-pink-700,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-pink-700,html[data-netbox-color-mode=light] .btn-outline-pink-700:active,html[data-netbox-color-mode=light] .btn-outline-pink-700.active,html[data-netbox-color-mode=light] .btn-outline-pink-700.dropdown-toggle.show{color:#fff;background-color:#801f4f;border-color:#801f4f}.btn-check:checked+html .btn-outline-pink-700:focus,.btn-check:active+html .btn-outline-pink-700:focus,html .btn-outline-pink-700:active:focus,html .btn-outline-pink-700.active:focus,html .btn-outline-pink-700.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-pink-700:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-pink-700:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-700:active:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-700.active:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-700.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-pink-700:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-pink-700:focus,html[data-netbox-color-mode=light] .btn-outline-pink-700:active:focus,html[data-netbox-color-mode=light] .btn-outline-pink-700.active:focus,html[data-netbox-color-mode=light] .btn-outline-pink-700.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #801f4f80}html .btn-outline-pink-700:disabled,html .btn-outline-pink-700.disabled,html[data-netbox-color-mode=dark] .btn-outline-pink-700:disabled,html[data-netbox-color-mode=dark] .btn-outline-pink-700.disabled,html[data-netbox-color-mode=light] .btn-outline-pink-700:disabled,html[data-netbox-color-mode=light] .btn-outline-pink-700.disabled{color:#801f4f;background-color:transparent}}@media print{html .btn-outline-pink-800,html[data-netbox-color-mode=dark] .btn-outline-pink-800,html[data-netbox-color-mode=light] .btn-outline-pink-800{color:#561435;border-color:#561435}html .btn-outline-pink-800:hover,html[data-netbox-color-mode=dark] .btn-outline-pink-800:hover,html[data-netbox-color-mode=light] .btn-outline-pink-800:hover{color:#fff;background-color:#561435;border-color:#561435}.btn-check:focus+html .btn-outline-pink-800,html .btn-outline-pink-800:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-pink-800,html[data-netbox-color-mode=dark] .btn-outline-pink-800:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-pink-800,html[data-netbox-color-mode=light] .btn-outline-pink-800:focus{box-shadow:0 0 0 .25rem #56143580}.btn-check:checked+html .btn-outline-pink-800,.btn-check:active+html .btn-outline-pink-800,html .btn-outline-pink-800:active,html .btn-outline-pink-800.active,html .btn-outline-pink-800.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-pink-800,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-pink-800,html[data-netbox-color-mode=dark] .btn-outline-pink-800:active,html[data-netbox-color-mode=dark] .btn-outline-pink-800.active,html[data-netbox-color-mode=dark] .btn-outline-pink-800.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-pink-800,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-pink-800,html[data-netbox-color-mode=light] .btn-outline-pink-800:active,html[data-netbox-color-mode=light] .btn-outline-pink-800.active,html[data-netbox-color-mode=light] .btn-outline-pink-800.dropdown-toggle.show{color:#fff;background-color:#561435;border-color:#561435}.btn-check:checked+html .btn-outline-pink-800:focus,.btn-check:active+html .btn-outline-pink-800:focus,html .btn-outline-pink-800:active:focus,html .btn-outline-pink-800.active:focus,html .btn-outline-pink-800.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-pink-800:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-pink-800:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-800:active:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-800.active:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-800.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-pink-800:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-pink-800:focus,html[data-netbox-color-mode=light] .btn-outline-pink-800:active:focus,html[data-netbox-color-mode=light] .btn-outline-pink-800.active:focus,html[data-netbox-color-mode=light] .btn-outline-pink-800.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #56143580}html .btn-outline-pink-800:disabled,html .btn-outline-pink-800.disabled,html[data-netbox-color-mode=dark] .btn-outline-pink-800:disabled,html[data-netbox-color-mode=dark] .btn-outline-pink-800.disabled,html[data-netbox-color-mode=light] .btn-outline-pink-800:disabled,html[data-netbox-color-mode=light] .btn-outline-pink-800.disabled{color:#561435;background-color:transparent}}@media print{html .btn-outline-pink-900,html[data-netbox-color-mode=dark] .btn-outline-pink-900,html[data-netbox-color-mode=light] .btn-outline-pink-900{color:#2b0a1a;border-color:#2b0a1a}html .btn-outline-pink-900:hover,html[data-netbox-color-mode=dark] .btn-outline-pink-900:hover,html[data-netbox-color-mode=light] .btn-outline-pink-900:hover{color:#fff;background-color:#2b0a1a;border-color:#2b0a1a}.btn-check:focus+html .btn-outline-pink-900,html .btn-outline-pink-900:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-pink-900,html[data-netbox-color-mode=dark] .btn-outline-pink-900:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-pink-900,html[data-netbox-color-mode=light] .btn-outline-pink-900:focus{box-shadow:0 0 0 .25rem #2b0a1a80}.btn-check:checked+html .btn-outline-pink-900,.btn-check:active+html .btn-outline-pink-900,html .btn-outline-pink-900:active,html .btn-outline-pink-900.active,html .btn-outline-pink-900.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-pink-900,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-pink-900,html[data-netbox-color-mode=dark] .btn-outline-pink-900:active,html[data-netbox-color-mode=dark] .btn-outline-pink-900.active,html[data-netbox-color-mode=dark] .btn-outline-pink-900.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-pink-900,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-pink-900,html[data-netbox-color-mode=light] .btn-outline-pink-900:active,html[data-netbox-color-mode=light] .btn-outline-pink-900.active,html[data-netbox-color-mode=light] .btn-outline-pink-900.dropdown-toggle.show{color:#fff;background-color:#2b0a1a;border-color:#2b0a1a}.btn-check:checked+html .btn-outline-pink-900:focus,.btn-check:active+html .btn-outline-pink-900:focus,html .btn-outline-pink-900:active:focus,html .btn-outline-pink-900.active:focus,html .btn-outline-pink-900.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-pink-900:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-pink-900:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-900:active:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-900.active:focus,html[data-netbox-color-mode=dark] .btn-outline-pink-900.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-pink-900:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-pink-900:focus,html[data-netbox-color-mode=light] .btn-outline-pink-900:active:focus,html[data-netbox-color-mode=light] .btn-outline-pink-900.active:focus,html[data-netbox-color-mode=light] .btn-outline-pink-900.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #2b0a1a80}html .btn-outline-pink-900:disabled,html .btn-outline-pink-900.disabled,html[data-netbox-color-mode=dark] .btn-outline-pink-900:disabled,html[data-netbox-color-mode=dark] .btn-outline-pink-900.disabled,html[data-netbox-color-mode=light] .btn-outline-pink-900:disabled,html[data-netbox-color-mode=light] .btn-outline-pink-900.disabled{color:#2b0a1a;background-color:transparent}}@media print{html .btn-link,html[data-netbox-color-mode=dark] .btn-link,html[data-netbox-color-mode=light] .btn-link{font-weight:400;color:#0d6efd;text-decoration:underline}html .btn-link:hover,html[data-netbox-color-mode=dark] .btn-link:hover,html[data-netbox-color-mode=light] .btn-link:hover{color:#0a58ca}html .btn-link:disabled,html .btn-link.disabled,html[data-netbox-color-mode=dark] .btn-link:disabled,html[data-netbox-color-mode=dark] .btn-link.disabled,html[data-netbox-color-mode=light] .btn-link:disabled,html[data-netbox-color-mode=light] .btn-link.disabled{color:#6c757d}}@media print{html .btn-lg,html .btn-group-lg>.btn,html[data-netbox-color-mode=dark] .btn-lg,html[data-netbox-color-mode=light] .btn-lg{padding:.5rem 1rem;font-size:1.25rem;border-radius:.75rem}}@media print{html .btn-sm,html .btn-group-sm>.btn,html[data-netbox-color-mode=dark] .btn-sm,html[data-netbox-color-mode=light] .btn-sm{padding:.25rem .5rem;font-size:.875rem;border-radius:.375rem}}@media print{html .fade,html[data-netbox-color-mode=dark] .fade,html[data-netbox-color-mode=light] .fade{transition:opacity .15s linear}}@media print and (prefers-reduced-motion: reduce){html .fade,html[data-netbox-color-mode=dark] .fade,html[data-netbox-color-mode=light] .fade{transition:none}}@media print{html .fade:not(.show),html[data-netbox-color-mode=dark] .fade:not(.show),html[data-netbox-color-mode=light] .fade:not(.show){opacity:0}}@media print{html .collapse:not(.show),html[data-netbox-color-mode=dark] .collapse:not(.show),html[data-netbox-color-mode=light] .collapse:not(.show){display:none}}@media print{html .collapsing,html[data-netbox-color-mode=dark] .collapsing,html[data-netbox-color-mode=light] .collapsing{height:0;overflow:hidden;transition:height .35s ease}}@media print and (prefers-reduced-motion: reduce){html .collapsing,html[data-netbox-color-mode=dark] .collapsing,html[data-netbox-color-mode=light] .collapsing{transition:none}}@media print{html .dropup,html .dropend,html .dropdown,html .dropstart,html[data-netbox-color-mode=dark] .dropup,html[data-netbox-color-mode=dark] .dropend,html[data-netbox-color-mode=dark] .dropdown,html[data-netbox-color-mode=dark] .dropstart,html[data-netbox-color-mode=light] .dropup,html[data-netbox-color-mode=light] .dropend,html[data-netbox-color-mode=light] .dropdown,html[data-netbox-color-mode=light] .dropstart{position:relative}}@media print{html .dropdown-toggle,html[data-netbox-color-mode=dark] .dropdown-toggle,html[data-netbox-color-mode=light] .dropdown-toggle{white-space:nowrap}html .dropdown-toggle:after,html[data-netbox-color-mode=dark] .dropdown-toggle:after,html[data-netbox-color-mode=light] .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}html .dropdown-toggle:empty:after,html[data-netbox-color-mode=dark] .dropdown-toggle:empty:after,html[data-netbox-color-mode=light] .dropdown-toggle:empty:after{margin-left:0}}@media print{html .dropdown-menu,html[data-netbox-color-mode=dark] .dropdown-menu,html[data-netbox-color-mode=light] .dropdown-menu{position:absolute;z-index:1000;display:none;min-width:10rem;padding:.5rem 0;margin:0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.375rem}html .dropdown-menu[data-bs-popper],html[data-netbox-color-mode=dark] .dropdown-menu[data-bs-popper],html[data-netbox-color-mode=light] .dropdown-menu[data-bs-popper]{top:100%;left:0;margin-top:.125rem}}@media print{html .dropdown-menu-start,html[data-netbox-color-mode=dark] .dropdown-menu-start,html[data-netbox-color-mode=light] .dropdown-menu-start{--bs-position: start}html .dropdown-menu-start[data-bs-popper],html[data-netbox-color-mode=dark] .dropdown-menu-start[data-bs-popper],html[data-netbox-color-mode=light] .dropdown-menu-start[data-bs-popper]{right:auto;left:0}}@media print{html .dropdown-menu-end,html[data-netbox-color-mode=dark] .dropdown-menu-end,html[data-netbox-color-mode=light] .dropdown-menu-end{--bs-position: end}html .dropdown-menu-end[data-bs-popper],html[data-netbox-color-mode=dark] .dropdown-menu-end[data-bs-popper],html[data-netbox-color-mode=light] .dropdown-menu-end[data-bs-popper]{right:0;left:auto}}@media print and (min-width: 576px){html .dropdown-menu-sm-start,html[data-netbox-color-mode=dark] .dropdown-menu-sm-start,html[data-netbox-color-mode=light] .dropdown-menu-sm-start{--bs-position: start}html .dropdown-menu-sm-start[data-bs-popper],html[data-netbox-color-mode=dark] .dropdown-menu-sm-start[data-bs-popper],html[data-netbox-color-mode=light] .dropdown-menu-sm-start[data-bs-popper]{right:auto;left:0}html .dropdown-menu-sm-end,html[data-netbox-color-mode=dark] .dropdown-menu-sm-end,html[data-netbox-color-mode=light] .dropdown-menu-sm-end{--bs-position: end}html .dropdown-menu-sm-end[data-bs-popper],html[data-netbox-color-mode=dark] .dropdown-menu-sm-end[data-bs-popper],html[data-netbox-color-mode=light] .dropdown-menu-sm-end[data-bs-popper]{right:0;left:auto}}@media print and (min-width: 768px){html .dropdown-menu-md-start,html[data-netbox-color-mode=dark] .dropdown-menu-md-start,html[data-netbox-color-mode=light] .dropdown-menu-md-start{--bs-position: start}html .dropdown-menu-md-start[data-bs-popper],html[data-netbox-color-mode=dark] .dropdown-menu-md-start[data-bs-popper],html[data-netbox-color-mode=light] .dropdown-menu-md-start[data-bs-popper]{right:auto;left:0}html .dropdown-menu-md-end,html[data-netbox-color-mode=dark] .dropdown-menu-md-end,html[data-netbox-color-mode=light] .dropdown-menu-md-end{--bs-position: end}html .dropdown-menu-md-end[data-bs-popper],html[data-netbox-color-mode=dark] .dropdown-menu-md-end[data-bs-popper],html[data-netbox-color-mode=light] .dropdown-menu-md-end[data-bs-popper]{right:0;left:auto}}@media print and (min-width: 992px){html .dropdown-menu-lg-start,html[data-netbox-color-mode=dark] .dropdown-menu-lg-start,html[data-netbox-color-mode=light] .dropdown-menu-lg-start{--bs-position: start}html .dropdown-menu-lg-start[data-bs-popper],html[data-netbox-color-mode=dark] .dropdown-menu-lg-start[data-bs-popper],html[data-netbox-color-mode=light] .dropdown-menu-lg-start[data-bs-popper]{right:auto;left:0}html .dropdown-menu-lg-end,html[data-netbox-color-mode=dark] .dropdown-menu-lg-end,html[data-netbox-color-mode=light] .dropdown-menu-lg-end{--bs-position: end}html .dropdown-menu-lg-end[data-bs-popper],html[data-netbox-color-mode=dark] .dropdown-menu-lg-end[data-bs-popper],html[data-netbox-color-mode=light] .dropdown-menu-lg-end[data-bs-popper]{right:0;left:auto}}@media print and (min-width: 1200px){html .dropdown-menu-xl-start,html[data-netbox-color-mode=dark] .dropdown-menu-xl-start,html[data-netbox-color-mode=light] .dropdown-menu-xl-start{--bs-position: start}html .dropdown-menu-xl-start[data-bs-popper],html[data-netbox-color-mode=dark] .dropdown-menu-xl-start[data-bs-popper],html[data-netbox-color-mode=light] .dropdown-menu-xl-start[data-bs-popper]{right:auto;left:0}html .dropdown-menu-xl-end,html[data-netbox-color-mode=dark] .dropdown-menu-xl-end,html[data-netbox-color-mode=light] .dropdown-menu-xl-end{--bs-position: end}html .dropdown-menu-xl-end[data-bs-popper],html[data-netbox-color-mode=dark] .dropdown-menu-xl-end[data-bs-popper],html[data-netbox-color-mode=light] .dropdown-menu-xl-end[data-bs-popper]{right:0;left:auto}}@media print and (min-width: 1400px){html .dropdown-menu-xxl-start,html[data-netbox-color-mode=dark] .dropdown-menu-xxl-start,html[data-netbox-color-mode=light] .dropdown-menu-xxl-start{--bs-position: start}html .dropdown-menu-xxl-start[data-bs-popper],html[data-netbox-color-mode=dark] .dropdown-menu-xxl-start[data-bs-popper],html[data-netbox-color-mode=light] .dropdown-menu-xxl-start[data-bs-popper]{right:auto;left:0}html .dropdown-menu-xxl-end,html[data-netbox-color-mode=dark] .dropdown-menu-xxl-end,html[data-netbox-color-mode=light] .dropdown-menu-xxl-end{--bs-position: end}html .dropdown-menu-xxl-end[data-bs-popper],html[data-netbox-color-mode=dark] .dropdown-menu-xxl-end[data-bs-popper],html[data-netbox-color-mode=light] .dropdown-menu-xxl-end[data-bs-popper]{right:0;left:auto}}@media print{html .dropup .dropdown-menu[data-bs-popper],html[data-netbox-color-mode=dark] .dropup .dropdown-menu[data-bs-popper],html[data-netbox-color-mode=light] .dropup .dropdown-menu[data-bs-popper]{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}html .dropup .dropdown-toggle:after,html[data-netbox-color-mode=dark] .dropup .dropdown-toggle:after,html[data-netbox-color-mode=light] .dropup .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}html .dropup .dropdown-toggle:empty:after,html[data-netbox-color-mode=dark] .dropup .dropdown-toggle:empty:after,html[data-netbox-color-mode=light] .dropup .dropdown-toggle:empty:after{margin-left:0}}@media print{html .dropend .dropdown-menu[data-bs-popper],html[data-netbox-color-mode=dark] .dropend .dropdown-menu[data-bs-popper],html[data-netbox-color-mode=light] .dropend .dropdown-menu[data-bs-popper]{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}html .dropend .dropdown-toggle:after,html[data-netbox-color-mode=dark] .dropend .dropdown-toggle:after,html[data-netbox-color-mode=light] .dropend .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}html .dropend .dropdown-toggle:empty:after,html[data-netbox-color-mode=dark] .dropend .dropdown-toggle:empty:after,html[data-netbox-color-mode=light] .dropend .dropdown-toggle:empty:after{margin-left:0}html .dropend .dropdown-toggle:after,html[data-netbox-color-mode=dark] .dropend .dropdown-toggle:after,html[data-netbox-color-mode=light] .dropend .dropdown-toggle:after{vertical-align:0}}@media print{html .dropstart .dropdown-menu[data-bs-popper],html[data-netbox-color-mode=dark] .dropstart .dropdown-menu[data-bs-popper],html[data-netbox-color-mode=light] .dropstart .dropdown-menu[data-bs-popper]{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}html .dropstart .dropdown-toggle:after,html[data-netbox-color-mode=dark] .dropstart .dropdown-toggle:after,html[data-netbox-color-mode=light] .dropstart .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}html .dropstart .dropdown-toggle:after,html[data-netbox-color-mode=dark] .dropstart .dropdown-toggle:after,html[data-netbox-color-mode=light] .dropstart .dropdown-toggle:after{display:none}html .dropstart .dropdown-toggle:before,html[data-netbox-color-mode=dark] .dropstart .dropdown-toggle:before,html[data-netbox-color-mode=light] .dropstart .dropdown-toggle:before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}html .dropstart .dropdown-toggle:empty:after,html[data-netbox-color-mode=dark] .dropstart .dropdown-toggle:empty:after,html[data-netbox-color-mode=light] .dropstart .dropdown-toggle:empty:after{margin-left:0}html .dropstart .dropdown-toggle:before,html[data-netbox-color-mode=dark] .dropstart .dropdown-toggle:before,html[data-netbox-color-mode=light] .dropstart .dropdown-toggle:before{vertical-align:0}}@media print{html .dropdown-divider,html[data-netbox-color-mode=dark] .dropdown-divider,html[data-netbox-color-mode=light] .dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid rgba(0,0,0,.15)}}@media print{html .dropdown-item,html[data-netbox-color-mode=dark] .dropdown-item,html[data-netbox-color-mode=light] .dropdown-item{display:block;width:100%;padding:.25rem 1rem;clear:both;font-weight:400;color:#212529;text-align:inherit;text-decoration:none;white-space:nowrap;background-color:transparent;border:0}html .dropdown-item:hover,html .dropdown-item:focus,html[data-netbox-color-mode=dark] .dropdown-item:hover,html[data-netbox-color-mode=dark] .dropdown-item:focus,html[data-netbox-color-mode=light] .dropdown-item:hover,html[data-netbox-color-mode=light] .dropdown-item:focus{color:#1e2125;background-color:#e9ecef}html .dropdown-item.active,html .dropdown-item:active,html[data-netbox-color-mode=dark] .dropdown-item.active,html[data-netbox-color-mode=dark] .dropdown-item:active,html[data-netbox-color-mode=light] .dropdown-item.active,html[data-netbox-color-mode=light] .dropdown-item:active{color:#fff;text-decoration:none;background-color:#0d6efd}html .dropdown-item.disabled,html .dropdown-item:disabled,html[data-netbox-color-mode=dark] .dropdown-item.disabled,html[data-netbox-color-mode=dark] .dropdown-item:disabled,html[data-netbox-color-mode=light] .dropdown-item.disabled,html[data-netbox-color-mode=light] .dropdown-item:disabled{color:#adb5bd;pointer-events:none;background-color:transparent}}@media print{html .dropdown-menu.show,html[data-netbox-color-mode=dark] .dropdown-menu.show,html[data-netbox-color-mode=light] .dropdown-menu.show{display:block}}@media print{html .dropdown-header,html[data-netbox-color-mode=dark] .dropdown-header,html[data-netbox-color-mode=light] .dropdown-header{display:block;padding:.5rem 1rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}}@media print{html .dropdown-item-text,html[data-netbox-color-mode=dark] .dropdown-item-text,html[data-netbox-color-mode=light] .dropdown-item-text{display:block;padding:.25rem 1rem;color:#212529}}@media print{html .dropdown-menu-dark,html[data-netbox-color-mode=dark] .dropdown-menu-dark,html[data-netbox-color-mode=light] .dropdown-menu-dark{color:#dee2e6;background-color:#343a40;border-color:#00000026}html .dropdown-menu-dark .dropdown-item,html[data-netbox-color-mode=dark] .dropdown-menu-dark .dropdown-item,html[data-netbox-color-mode=light] .dropdown-menu-dark .dropdown-item{color:#dee2e6}html .dropdown-menu-dark .dropdown-item:hover,html .dropdown-menu-dark .dropdown-item:focus,html[data-netbox-color-mode=dark] .dropdown-menu-dark .dropdown-item:hover,html[data-netbox-color-mode=dark] .dropdown-menu-dark .dropdown-item:focus,html[data-netbox-color-mode=light] .dropdown-menu-dark .dropdown-item:hover,html[data-netbox-color-mode=light] .dropdown-menu-dark .dropdown-item:focus{color:#fff;background-color:#ffffff26}html .dropdown-menu-dark .dropdown-item.active,html .dropdown-menu-dark .dropdown-item:active,html[data-netbox-color-mode=dark] .dropdown-menu-dark .dropdown-item.active,html[data-netbox-color-mode=dark] .dropdown-menu-dark .dropdown-item:active,html[data-netbox-color-mode=light] .dropdown-menu-dark .dropdown-item.active,html[data-netbox-color-mode=light] .dropdown-menu-dark .dropdown-item:active{color:#fff;background-color:#0d6efd}html .dropdown-menu-dark .dropdown-item.disabled,html .dropdown-menu-dark .dropdown-item:disabled,html[data-netbox-color-mode=dark] .dropdown-menu-dark .dropdown-item.disabled,html[data-netbox-color-mode=dark] .dropdown-menu-dark .dropdown-item:disabled,html[data-netbox-color-mode=light] .dropdown-menu-dark .dropdown-item.disabled,html[data-netbox-color-mode=light] .dropdown-menu-dark .dropdown-item:disabled{color:#adb5bd}html .dropdown-menu-dark .dropdown-divider,html[data-netbox-color-mode=dark] .dropdown-menu-dark .dropdown-divider,html[data-netbox-color-mode=light] .dropdown-menu-dark .dropdown-divider{border-color:#00000026}html .dropdown-menu-dark .dropdown-item-text,html[data-netbox-color-mode=dark] .dropdown-menu-dark .dropdown-item-text,html[data-netbox-color-mode=light] .dropdown-menu-dark .dropdown-item-text{color:#dee2e6}html .dropdown-menu-dark .dropdown-header,html[data-netbox-color-mode=dark] .dropdown-menu-dark .dropdown-header,html[data-netbox-color-mode=light] .dropdown-menu-dark .dropdown-header{color:#adb5bd}}@media print{html .btn-group,html .btn-group-vertical,html[data-netbox-color-mode=dark] .btn-group,html[data-netbox-color-mode=dark] .btn-group-vertical,html[data-netbox-color-mode=light] .btn-group,html[data-netbox-color-mode=light] .btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}html .btn-group>.btn,html .btn-group-vertical>.btn,html[data-netbox-color-mode=dark] .btn-group>.btn,html[data-netbox-color-mode=dark] .btn-group-vertical>.btn,html[data-netbox-color-mode=light] .btn-group>.btn,html[data-netbox-color-mode=light] .btn-group-vertical>.btn{position:relative;flex:1 1 auto}html .btn-group>.btn-check:checked+.btn,html .btn-group>.btn-check:focus+.btn,html .btn-group>.btn:hover,html .btn-group>.btn:focus,html .btn-group>.btn:active,html .btn-group>.btn.active,html .btn-group-vertical>.btn-check:checked+.btn,html .btn-group-vertical>.btn-check:focus+.btn,html .btn-group-vertical>.btn:hover,html .btn-group-vertical>.btn:focus,html .btn-group-vertical>.btn:active,html .btn-group-vertical>.btn.active,html[data-netbox-color-mode=dark] .btn-group>.btn-check:checked+.btn,html[data-netbox-color-mode=dark] .btn-group>.btn-check:focus+.btn,html[data-netbox-color-mode=dark] .btn-group>.btn:hover,html[data-netbox-color-mode=dark] .btn-group>.btn:focus,html[data-netbox-color-mode=dark] .btn-group>.btn:active,html[data-netbox-color-mode=dark] .btn-group>.btn.active,html[data-netbox-color-mode=dark] .btn-group-vertical>.btn-check:checked+.btn,html[data-netbox-color-mode=dark] .btn-group-vertical>.btn-check:focus+.btn,html[data-netbox-color-mode=dark] .btn-group-vertical>.btn:hover,html[data-netbox-color-mode=dark] .btn-group-vertical>.btn:focus,html[data-netbox-color-mode=dark] .btn-group-vertical>.btn:active,html[data-netbox-color-mode=dark] .btn-group-vertical>.btn.active,html[data-netbox-color-mode=light] .btn-group>.btn-check:checked+.btn,html[data-netbox-color-mode=light] .btn-group>.btn-check:focus+.btn,html[data-netbox-color-mode=light] .btn-group>.btn:hover,html[data-netbox-color-mode=light] .btn-group>.btn:focus,html[data-netbox-color-mode=light] .btn-group>.btn:active,html[data-netbox-color-mode=light] .btn-group>.btn.active,html[data-netbox-color-mode=light] .btn-group-vertical>.btn-check:checked+.btn,html[data-netbox-color-mode=light] .btn-group-vertical>.btn-check:focus+.btn,html[data-netbox-color-mode=light] .btn-group-vertical>.btn:hover,html[data-netbox-color-mode=light] .btn-group-vertical>.btn:focus,html[data-netbox-color-mode=light] .btn-group-vertical>.btn:active,html[data-netbox-color-mode=light] .btn-group-vertical>.btn.active{z-index:1}}@media print{html .btn-toolbar,html[data-netbox-color-mode=dark] .btn-toolbar,html[data-netbox-color-mode=light] .btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}html .btn-toolbar .input-group,html[data-netbox-color-mode=dark] .btn-toolbar .input-group,html[data-netbox-color-mode=light] .btn-toolbar .input-group{width:auto}}@media print{html .btn-group>.btn:not(:first-child),html .btn-group>.btn-group:not(:first-child),html[data-netbox-color-mode=dark] .btn-group>.btn:not(:first-child),html[data-netbox-color-mode=dark] .btn-group>.btn-group:not(:first-child),html[data-netbox-color-mode=light] .btn-group>.btn:not(:first-child),html[data-netbox-color-mode=light] .btn-group>.btn-group:not(:first-child){margin-left:-1px}html .btn-group>.btn:not(:last-child):not(.dropdown-toggle),html .btn-group>.btn-group:not(:last-child)>.btn,html[data-netbox-color-mode=dark] .btn-group>.btn:not(:last-child):not(.dropdown-toggle),html[data-netbox-color-mode=dark] .btn-group>.btn-group:not(:last-child)>.btn,html[data-netbox-color-mode=light] .btn-group>.btn:not(:last-child):not(.dropdown-toggle),html[data-netbox-color-mode=light] .btn-group>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}html .btn-group>.btn:nth-child(n+3),html .btn-group>:not(.btn-check)+.btn,html .btn-group>.btn-group:not(:first-child)>.btn,html[data-netbox-color-mode=dark] .btn-group>.btn:nth-child(n+3),html[data-netbox-color-mode=dark] .btn-group>:not(.btn-check)+.btn,html[data-netbox-color-mode=dark] .btn-group>.btn-group:not(:first-child)>.btn,html[data-netbox-color-mode=light] .btn-group>.btn:nth-child(n+3),html[data-netbox-color-mode=light] .btn-group>:not(.btn-check)+.btn,html[data-netbox-color-mode=light] .btn-group>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}}@media print{html .dropdown-toggle-split,html[data-netbox-color-mode=dark] .dropdown-toggle-split,html[data-netbox-color-mode=light] .dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}html .dropdown-toggle-split:after,.dropup html .dropdown-toggle-split:after,.dropend html .dropdown-toggle-split:after,html[data-netbox-color-mode=dark] .dropdown-toggle-split:after,.dropup html[data-netbox-color-mode=dark] .dropdown-toggle-split:after,.dropend html[data-netbox-color-mode=dark] .dropdown-toggle-split:after,html[data-netbox-color-mode=light] .dropdown-toggle-split:after,.dropup html[data-netbox-color-mode=light] .dropdown-toggle-split:after,.dropend html[data-netbox-color-mode=light] .dropdown-toggle-split:after{margin-left:0}.dropstart html .dropdown-toggle-split:before,.dropstart html[data-netbox-color-mode=dark] .dropdown-toggle-split:before,.dropstart html[data-netbox-color-mode=light] .dropdown-toggle-split:before{margin-right:0}}@media print{html .btn-sm+.dropdown-toggle-split,html .btn-group-sm>.btn+.dropdown-toggle-split,html[data-netbox-color-mode=dark] .btn-sm+.dropdown-toggle-split,html[data-netbox-color-mode=light] .btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}}@media print{html .btn-lg+.dropdown-toggle-split,html .btn-group-lg>.btn+.dropdown-toggle-split,html[data-netbox-color-mode=dark] .btn-lg+.dropdown-toggle-split,html[data-netbox-color-mode=light] .btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}}@media print{html .btn-group-vertical,html[data-netbox-color-mode=dark] .btn-group-vertical,html[data-netbox-color-mode=light] .btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}html .btn-group-vertical>.btn,html .btn-group-vertical>.btn-group,html[data-netbox-color-mode=dark] .btn-group-vertical>.btn,html[data-netbox-color-mode=dark] .btn-group-vertical>.btn-group,html[data-netbox-color-mode=light] .btn-group-vertical>.btn,html[data-netbox-color-mode=light] .btn-group-vertical>.btn-group{width:100%}html .btn-group-vertical>.btn:not(:first-child),html .btn-group-vertical>.btn-group:not(:first-child),html[data-netbox-color-mode=dark] .btn-group-vertical>.btn:not(:first-child),html[data-netbox-color-mode=dark] .btn-group-vertical>.btn-group:not(:first-child),html[data-netbox-color-mode=light] .btn-group-vertical>.btn:not(:first-child),html[data-netbox-color-mode=light] .btn-group-vertical>.btn-group:not(:first-child){margin-top:-1px}html .btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle),html .btn-group-vertical>.btn-group:not(:last-child)>.btn,html[data-netbox-color-mode=dark] .btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle),html[data-netbox-color-mode=dark] .btn-group-vertical>.btn-group:not(:last-child)>.btn,html[data-netbox-color-mode=light] .btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle),html[data-netbox-color-mode=light] .btn-group-vertical>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-bottom-left-radius:0}html .btn-group-vertical>.btn~.btn,html .btn-group-vertical>.btn-group:not(:first-child)>.btn,html[data-netbox-color-mode=dark] .btn-group-vertical>.btn~.btn,html[data-netbox-color-mode=dark] .btn-group-vertical>.btn-group:not(:first-child)>.btn,html[data-netbox-color-mode=light] .btn-group-vertical>.btn~.btn,html[data-netbox-color-mode=light] .btn-group-vertical>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-top-right-radius:0}}@media print{html .nav,html[data-netbox-color-mode=dark] .nav,html[data-netbox-color-mode=light] .nav{display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}}@media print{html .nav-link,html[data-netbox-color-mode=dark] .nav-link,html[data-netbox-color-mode=light] .nav-link{display:block;padding:.5rem 1rem;color:#0d6efd;text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}}@media print and (prefers-reduced-motion: reduce){html .nav-link,html[data-netbox-color-mode=dark] .nav-link,html[data-netbox-color-mode=light] .nav-link{transition:none}}@media print{html .nav-link:hover,html .nav-link:focus,html[data-netbox-color-mode=dark] .nav-link:hover,html[data-netbox-color-mode=dark] .nav-link:focus,html[data-netbox-color-mode=light] .nav-link:hover,html[data-netbox-color-mode=light] .nav-link:focus{color:#0a58ca}}@media print{html .nav-link.disabled,html[data-netbox-color-mode=dark] .nav-link.disabled,html[data-netbox-color-mode=light] .nav-link.disabled{color:#6c757d;pointer-events:none;cursor:default}}@media print{html .nav-tabs,html[data-netbox-color-mode=dark] .nav-tabs,html[data-netbox-color-mode=light] .nav-tabs{border-bottom:1px solid #dee2e6}html .nav-tabs .nav-link,html[data-netbox-color-mode=dark] .nav-tabs .nav-link,html[data-netbox-color-mode=light] .nav-tabs .nav-link{margin-bottom:-1px;background:none;border:1px solid transparent;border-top-left-radius:.375rem;border-top-right-radius:.375rem}html .nav-tabs .nav-link:hover,html .nav-tabs .nav-link:focus,html[data-netbox-color-mode=dark] .nav-tabs .nav-link:hover,html[data-netbox-color-mode=dark] .nav-tabs .nav-link:focus,html[data-netbox-color-mode=light] .nav-tabs .nav-link:hover,html[data-netbox-color-mode=light] .nav-tabs .nav-link:focus{border-color:#e9ecef #e9ecef #dee2e6;isolation:isolate}html .nav-tabs .nav-link.disabled,html[data-netbox-color-mode=dark] .nav-tabs .nav-link.disabled,html[data-netbox-color-mode=light] .nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}html .nav-tabs .nav-link.active,html .nav-tabs .nav-item.show .nav-link,html[data-netbox-color-mode=dark] .nav-tabs .nav-link.active,html[data-netbox-color-mode=dark] .nav-tabs .nav-item.show .nav-link,html[data-netbox-color-mode=light] .nav-tabs .nav-link.active,html[data-netbox-color-mode=light] .nav-tabs .nav-item.show .nav-link{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}html .nav-tabs .dropdown-menu,html[data-netbox-color-mode=dark] .nav-tabs .dropdown-menu,html[data-netbox-color-mode=light] .nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}}@media print{html .nav-pills .nav-link,html[data-netbox-color-mode=dark] .nav-pills .nav-link,html[data-netbox-color-mode=light] .nav-pills .nav-link{background:none;border:0;border-radius:.375rem}html .nav-pills .nav-link.active,html .nav-pills .show>.nav-link,html[data-netbox-color-mode=dark] .nav-pills .nav-link.active,html[data-netbox-color-mode=dark] .nav-pills .show>.nav-link,html[data-netbox-color-mode=light] .nav-pills .nav-link.active,html[data-netbox-color-mode=light] .nav-pills .show>.nav-link{color:#fff;background-color:#0d6efd}}@media print{html .nav-fill>.nav-link,html .nav-fill .nav-item,html[data-netbox-color-mode=dark] .nav-fill>.nav-link,html[data-netbox-color-mode=dark] .nav-fill .nav-item,html[data-netbox-color-mode=light] .nav-fill>.nav-link,html[data-netbox-color-mode=light] .nav-fill .nav-item{flex:1 1 auto;text-align:center}}@media print{html .nav-justified>.nav-link,html .nav-justified .nav-item,html[data-netbox-color-mode=dark] .nav-justified>.nav-link,html[data-netbox-color-mode=dark] .nav-justified .nav-item,html[data-netbox-color-mode=light] .nav-justified>.nav-link,html[data-netbox-color-mode=light] .nav-justified .nav-item{flex-basis:0;flex-grow:1;text-align:center}}@media print{html .nav-fill .nav-item .nav-link,html .nav-justified .nav-item .nav-link,html[data-netbox-color-mode=dark] .nav-fill .nav-item .nav-link,html[data-netbox-color-mode=dark] .nav-justified .nav-item .nav-link,html[data-netbox-color-mode=light] .nav-fill .nav-item .nav-link,html[data-netbox-color-mode=light] .nav-justified .nav-item .nav-link{width:100%}}@media print{html .tab-content>.tab-pane,html[data-netbox-color-mode=dark] .tab-content>.tab-pane,html[data-netbox-color-mode=light] .tab-content>.tab-pane{display:none}html .tab-content>.active,html[data-netbox-color-mode=dark] .tab-content>.active,html[data-netbox-color-mode=light] .tab-content>.active{display:block}}@media print{html .navbar,html[data-netbox-color-mode=dark] .navbar,html[data-netbox-color-mode=light] .navbar{position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding-top:.5rem;padding-bottom:.5rem}html[data-netbox-color-mode=dark] .navbar>.container-xxl,html[data-netbox-color-mode=light] .navbar>.container-xxl,html[data-netbox-color-mode=dark] .navbar>.container-xl,html[data-netbox-color-mode=light] .navbar>.container-xl,html[data-netbox-color-mode=dark] .navbar>.container-lg,html[data-netbox-color-mode=light] .navbar>.container-lg,html[data-netbox-color-mode=dark] .navbar>.container-md,html[data-netbox-color-mode=light] .navbar>.container-md,html[data-netbox-color-mode=dark] .navbar>.container-sm,html[data-netbox-color-mode=light] .navbar>.container-sm,html .navbar>.container,html .navbar>.container-fluid,html .navbar>.container-sm,html .navbar>.container-md,html .navbar>.container-lg,html .navbar>.container-xl,html .navbar>.container-xxl{display:flex;flex-wrap:inherit;align-items:center;justify-content:space-between}}@media print{html .navbar-brand,html[data-netbox-color-mode=dark] .navbar-brand,html[data-netbox-color-mode=light] .navbar-brand{padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;text-decoration:none;white-space:nowrap}}@media print{html .navbar-nav,html[data-netbox-color-mode=dark] .navbar-nav,html[data-netbox-color-mode=light] .navbar-nav{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}html .navbar-nav .nav-link,html[data-netbox-color-mode=dark] .navbar-nav .nav-link,html[data-netbox-color-mode=light] .navbar-nav .nav-link{padding-right:0;padding-left:0}html .navbar-nav .dropdown-menu,html[data-netbox-color-mode=dark] .navbar-nav .dropdown-menu,html[data-netbox-color-mode=light] .navbar-nav .dropdown-menu{position:static}}@media print{html .navbar-text,html[data-netbox-color-mode=dark] .navbar-text,html[data-netbox-color-mode=light] .navbar-text{padding-top:.5rem;padding-bottom:.5rem}}@media print{html .navbar-collapse,html[data-netbox-color-mode=dark] .navbar-collapse,html[data-netbox-color-mode=light] .navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}}@media print{html .navbar-toggler,html[data-netbox-color-mode=dark] .navbar-toggler,html[data-netbox-color-mode=light] .navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.375rem;transition:box-shadow .15s ease-in-out}}@media print and (prefers-reduced-motion: reduce){html .navbar-toggler,html[data-netbox-color-mode=dark] .navbar-toggler,html[data-netbox-color-mode=light] .navbar-toggler{transition:none}}@media print{html .navbar-toggler:hover,html[data-netbox-color-mode=dark] .navbar-toggler:hover,html[data-netbox-color-mode=light] .navbar-toggler:hover{text-decoration:none}}@media print{html .navbar-toggler:focus,html[data-netbox-color-mode=dark] .navbar-toggler:focus,html[data-netbox-color-mode=light] .navbar-toggler:focus{text-decoration:none;outline:0;box-shadow:0 0 0 .25rem}}@media print{html .navbar-toggler-icon,html[data-netbox-color-mode=dark] .navbar-toggler-icon,html[data-netbox-color-mode=light] .navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;background-repeat:no-repeat;background-position:center;background-size:100%}}@media print{html .navbar-nav-scroll,html[data-netbox-color-mode=dark] .navbar-nav-scroll,html[data-netbox-color-mode=light] .navbar-nav-scroll{max-height:var(--bs-scroll-height, 75vh);overflow-y:auto}}@media print and (min-width: 576px){html .navbar-expand-sm,html[data-netbox-color-mode=dark] .navbar-expand-sm,html[data-netbox-color-mode=light] .navbar-expand-sm{flex-wrap:nowrap;justify-content:flex-start}html .navbar-expand-sm .navbar-nav,html[data-netbox-color-mode=dark] .navbar-expand-sm .navbar-nav,html[data-netbox-color-mode=light] .navbar-expand-sm .navbar-nav{flex-direction:row}html .navbar-expand-sm .navbar-nav .dropdown-menu,html[data-netbox-color-mode=dark] .navbar-expand-sm .navbar-nav .dropdown-menu,html[data-netbox-color-mode=light] .navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}html .navbar-expand-sm .navbar-nav .nav-link,html[data-netbox-color-mode=dark] .navbar-expand-sm .navbar-nav .nav-link,html[data-netbox-color-mode=light] .navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}html .navbar-expand-sm .navbar-nav-scroll,html[data-netbox-color-mode=dark] .navbar-expand-sm .navbar-nav-scroll,html[data-netbox-color-mode=light] .navbar-expand-sm .navbar-nav-scroll{overflow:visible}html .navbar-expand-sm .navbar-collapse,html[data-netbox-color-mode=dark] .navbar-expand-sm .navbar-collapse,html[data-netbox-color-mode=light] .navbar-expand-sm .navbar-collapse{display:flex!important;flex-basis:auto}html .navbar-expand-sm .navbar-toggler,html[data-netbox-color-mode=dark] .navbar-expand-sm .navbar-toggler,html[data-netbox-color-mode=light] .navbar-expand-sm .navbar-toggler{display:none}}@media print and (min-width: 768px){html .navbar-expand-md,html[data-netbox-color-mode=dark] .navbar-expand-md,html[data-netbox-color-mode=light] .navbar-expand-md{flex-wrap:nowrap;justify-content:flex-start}html .navbar-expand-md .navbar-nav,html[data-netbox-color-mode=dark] .navbar-expand-md .navbar-nav,html[data-netbox-color-mode=light] .navbar-expand-md .navbar-nav{flex-direction:row}html .navbar-expand-md .navbar-nav .dropdown-menu,html[data-netbox-color-mode=dark] .navbar-expand-md .navbar-nav .dropdown-menu,html[data-netbox-color-mode=light] .navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}html .navbar-expand-md .navbar-nav .nav-link,html[data-netbox-color-mode=dark] .navbar-expand-md .navbar-nav .nav-link,html[data-netbox-color-mode=light] .navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}html .navbar-expand-md .navbar-nav-scroll,html[data-netbox-color-mode=dark] .navbar-expand-md .navbar-nav-scroll,html[data-netbox-color-mode=light] .navbar-expand-md .navbar-nav-scroll{overflow:visible}html .navbar-expand-md .navbar-collapse,html[data-netbox-color-mode=dark] .navbar-expand-md .navbar-collapse,html[data-netbox-color-mode=light] .navbar-expand-md .navbar-collapse{display:flex!important;flex-basis:auto}html .navbar-expand-md .navbar-toggler,html[data-netbox-color-mode=dark] .navbar-expand-md .navbar-toggler,html[data-netbox-color-mode=light] .navbar-expand-md .navbar-toggler{display:none}}@media print and (min-width: 992px){html .navbar-expand-lg,html[data-netbox-color-mode=dark] .navbar-expand-lg,html[data-netbox-color-mode=light] .navbar-expand-lg{flex-wrap:nowrap;justify-content:flex-start}html .navbar-expand-lg .navbar-nav,html[data-netbox-color-mode=dark] .navbar-expand-lg .navbar-nav,html[data-netbox-color-mode=light] .navbar-expand-lg .navbar-nav{flex-direction:row}html .navbar-expand-lg .navbar-nav .dropdown-menu,html[data-netbox-color-mode=dark] .navbar-expand-lg .navbar-nav .dropdown-menu,html[data-netbox-color-mode=light] .navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}html .navbar-expand-lg .navbar-nav .nav-link,html[data-netbox-color-mode=dark] .navbar-expand-lg .navbar-nav .nav-link,html[data-netbox-color-mode=light] .navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}html .navbar-expand-lg .navbar-nav-scroll,html[data-netbox-color-mode=dark] .navbar-expand-lg .navbar-nav-scroll,html[data-netbox-color-mode=light] .navbar-expand-lg .navbar-nav-scroll{overflow:visible}html .navbar-expand-lg .navbar-collapse,html[data-netbox-color-mode=dark] .navbar-expand-lg .navbar-collapse,html[data-netbox-color-mode=light] .navbar-expand-lg .navbar-collapse{display:flex!important;flex-basis:auto}html .navbar-expand-lg .navbar-toggler,html[data-netbox-color-mode=dark] .navbar-expand-lg .navbar-toggler,html[data-netbox-color-mode=light] .navbar-expand-lg .navbar-toggler{display:none}}@media print and (min-width: 1200px){html .navbar-expand-xl,html[data-netbox-color-mode=dark] .navbar-expand-xl,html[data-netbox-color-mode=light] .navbar-expand-xl{flex-wrap:nowrap;justify-content:flex-start}html .navbar-expand-xl .navbar-nav,html[data-netbox-color-mode=dark] .navbar-expand-xl .navbar-nav,html[data-netbox-color-mode=light] .navbar-expand-xl .navbar-nav{flex-direction:row}html .navbar-expand-xl .navbar-nav .dropdown-menu,html[data-netbox-color-mode=dark] .navbar-expand-xl .navbar-nav .dropdown-menu,html[data-netbox-color-mode=light] .navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}html .navbar-expand-xl .navbar-nav .nav-link,html[data-netbox-color-mode=dark] .navbar-expand-xl .navbar-nav .nav-link,html[data-netbox-color-mode=light] .navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}html .navbar-expand-xl .navbar-nav-scroll,html[data-netbox-color-mode=dark] .navbar-expand-xl .navbar-nav-scroll,html[data-netbox-color-mode=light] .navbar-expand-xl .navbar-nav-scroll{overflow:visible}html .navbar-expand-xl .navbar-collapse,html[data-netbox-color-mode=dark] .navbar-expand-xl .navbar-collapse,html[data-netbox-color-mode=light] .navbar-expand-xl .navbar-collapse{display:flex!important;flex-basis:auto}html .navbar-expand-xl .navbar-toggler,html[data-netbox-color-mode=dark] .navbar-expand-xl .navbar-toggler,html[data-netbox-color-mode=light] .navbar-expand-xl .navbar-toggler{display:none}}@media print and (min-width: 1400px){html .navbar-expand-xxl,html[data-netbox-color-mode=dark] .navbar-expand-xxl,html[data-netbox-color-mode=light] .navbar-expand-xxl{flex-wrap:nowrap;justify-content:flex-start}html .navbar-expand-xxl .navbar-nav,html[data-netbox-color-mode=dark] .navbar-expand-xxl .navbar-nav,html[data-netbox-color-mode=light] .navbar-expand-xxl .navbar-nav{flex-direction:row}html .navbar-expand-xxl .navbar-nav .dropdown-menu,html[data-netbox-color-mode=dark] .navbar-expand-xxl .navbar-nav .dropdown-menu,html[data-netbox-color-mode=light] .navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}html .navbar-expand-xxl .navbar-nav .nav-link,html[data-netbox-color-mode=dark] .navbar-expand-xxl .navbar-nav .nav-link,html[data-netbox-color-mode=light] .navbar-expand-xxl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}html .navbar-expand-xxl .navbar-nav-scroll,html[data-netbox-color-mode=dark] .navbar-expand-xxl .navbar-nav-scroll,html[data-netbox-color-mode=light] .navbar-expand-xxl .navbar-nav-scroll{overflow:visible}html .navbar-expand-xxl .navbar-collapse,html[data-netbox-color-mode=dark] .navbar-expand-xxl .navbar-collapse,html[data-netbox-color-mode=light] .navbar-expand-xxl .navbar-collapse{display:flex!important;flex-basis:auto}html .navbar-expand-xxl .navbar-toggler,html[data-netbox-color-mode=dark] .navbar-expand-xxl .navbar-toggler,html[data-netbox-color-mode=light] .navbar-expand-xxl .navbar-toggler{display:none}}@media print{html .navbar-expand,html[data-netbox-color-mode=dark] .navbar-expand,html[data-netbox-color-mode=light] .navbar-expand{flex-wrap:nowrap;justify-content:flex-start}html .navbar-expand .navbar-nav,html[data-netbox-color-mode=dark] .navbar-expand .navbar-nav,html[data-netbox-color-mode=light] .navbar-expand .navbar-nav{flex-direction:row}html .navbar-expand .navbar-nav .dropdown-menu,html[data-netbox-color-mode=dark] .navbar-expand .navbar-nav .dropdown-menu,html[data-netbox-color-mode=light] .navbar-expand .navbar-nav .dropdown-menu{position:absolute}html .navbar-expand .navbar-nav .nav-link,html[data-netbox-color-mode=dark] .navbar-expand .navbar-nav .nav-link,html[data-netbox-color-mode=light] .navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}html .navbar-expand .navbar-nav-scroll,html[data-netbox-color-mode=dark] .navbar-expand .navbar-nav-scroll,html[data-netbox-color-mode=light] .navbar-expand .navbar-nav-scroll{overflow:visible}html .navbar-expand .navbar-collapse,html[data-netbox-color-mode=dark] .navbar-expand .navbar-collapse,html[data-netbox-color-mode=light] .navbar-expand .navbar-collapse{display:flex!important;flex-basis:auto}html .navbar-expand .navbar-toggler,html[data-netbox-color-mode=dark] .navbar-expand .navbar-toggler,html[data-netbox-color-mode=light] .navbar-expand .navbar-toggler{display:none}}@media print{html .navbar-light .navbar-brand,html[data-netbox-color-mode=dark] .navbar-light .navbar-brand,html[data-netbox-color-mode=light] .navbar-light .navbar-brand{color:#000000e6}html .navbar-light .navbar-brand:hover,html .navbar-light .navbar-brand:focus,html[data-netbox-color-mode=dark] .navbar-light .navbar-brand:hover,html[data-netbox-color-mode=dark] .navbar-light .navbar-brand:focus,html[data-netbox-color-mode=light] .navbar-light .navbar-brand:hover,html[data-netbox-color-mode=light] .navbar-light .navbar-brand:focus{color:#000000e6}html .navbar-light .navbar-nav .nav-link,html[data-netbox-color-mode=dark] .navbar-light .navbar-nav .nav-link,html[data-netbox-color-mode=light] .navbar-light .navbar-nav .nav-link{color:#0000008c}html .navbar-light .navbar-nav .nav-link:hover,html .navbar-light .navbar-nav .nav-link:focus,html[data-netbox-color-mode=dark] .navbar-light .navbar-nav .nav-link:hover,html[data-netbox-color-mode=dark] .navbar-light .navbar-nav .nav-link:focus,html[data-netbox-color-mode=light] .navbar-light .navbar-nav .nav-link:hover,html[data-netbox-color-mode=light] .navbar-light .navbar-nav .nav-link:focus{color:#000000b3}html .navbar-light .navbar-nav .nav-link.disabled,html[data-netbox-color-mode=dark] .navbar-light .navbar-nav .nav-link.disabled,html[data-netbox-color-mode=light] .navbar-light .navbar-nav .nav-link.disabled{color:#0000004d}html .navbar-light .navbar-nav .show>.nav-link,html .navbar-light .navbar-nav .nav-link.active,html[data-netbox-color-mode=dark] .navbar-light .navbar-nav .show>.nav-link,html[data-netbox-color-mode=dark] .navbar-light .navbar-nav .nav-link.active,html[data-netbox-color-mode=light] .navbar-light .navbar-nav .show>.nav-link,html[data-netbox-color-mode=light] .navbar-light .navbar-nav .nav-link.active{color:#000000e6}html .navbar-light .navbar-toggler,html[data-netbox-color-mode=dark] .navbar-light .navbar-toggler,html[data-netbox-color-mode=light] .navbar-light .navbar-toggler{color:#0000008c;border-color:#0000001a}html .navbar-light .navbar-toggler-icon,html[data-netbox-color-mode=dark] .navbar-light .navbar-toggler-icon,html[data-netbox-color-mode=light] .navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}html .navbar-light .navbar-text,html[data-netbox-color-mode=dark] .navbar-light .navbar-text,html[data-netbox-color-mode=light] .navbar-light .navbar-text{color:#0000008c}html .navbar-light .navbar-text a,html .navbar-light .navbar-text a:hover,html .navbar-light .navbar-text a:focus,html[data-netbox-color-mode=dark] .navbar-light .navbar-text a,html[data-netbox-color-mode=dark] .navbar-light .navbar-text a:hover,html[data-netbox-color-mode=dark] .navbar-light .navbar-text a:focus,html[data-netbox-color-mode=light] .navbar-light .navbar-text a,html[data-netbox-color-mode=light] .navbar-light .navbar-text a:hover,html[data-netbox-color-mode=light] .navbar-light .navbar-text a:focus{color:#000000e6}}@media print{html .navbar-dark .navbar-brand,html[data-netbox-color-mode=dark] .navbar-dark .navbar-brand,html[data-netbox-color-mode=light] .navbar-dark .navbar-brand{color:#fff}html .navbar-dark .navbar-brand:hover,html .navbar-dark .navbar-brand:focus,html[data-netbox-color-mode=dark] .navbar-dark .navbar-brand:hover,html[data-netbox-color-mode=dark] .navbar-dark .navbar-brand:focus,html[data-netbox-color-mode=light] .navbar-dark .navbar-brand:hover,html[data-netbox-color-mode=light] .navbar-dark .navbar-brand:focus{color:#fff}html .navbar-dark .navbar-nav .nav-link,html[data-netbox-color-mode=dark] .navbar-dark .navbar-nav .nav-link,html[data-netbox-color-mode=light] .navbar-dark .navbar-nav .nav-link{color:#ffffff8c}html .navbar-dark .navbar-nav .nav-link:hover,html .navbar-dark .navbar-nav .nav-link:focus,html[data-netbox-color-mode=dark] .navbar-dark .navbar-nav .nav-link:hover,html[data-netbox-color-mode=dark] .navbar-dark .navbar-nav .nav-link:focus,html[data-netbox-color-mode=light] .navbar-dark .navbar-nav .nav-link:hover,html[data-netbox-color-mode=light] .navbar-dark .navbar-nav .nav-link:focus{color:#ffffffbf}html .navbar-dark .navbar-nav .nav-link.disabled,html[data-netbox-color-mode=dark] .navbar-dark .navbar-nav .nav-link.disabled,html[data-netbox-color-mode=light] .navbar-dark .navbar-nav .nav-link.disabled{color:#ffffff40}html .navbar-dark .navbar-nav .show>.nav-link,html .navbar-dark .navbar-nav .nav-link.active,html[data-netbox-color-mode=dark] .navbar-dark .navbar-nav .show>.nav-link,html[data-netbox-color-mode=dark] .navbar-dark .navbar-nav .nav-link.active,html[data-netbox-color-mode=light] .navbar-dark .navbar-nav .show>.nav-link,html[data-netbox-color-mode=light] .navbar-dark .navbar-nav .nav-link.active{color:#fff}html .navbar-dark .navbar-toggler,html[data-netbox-color-mode=dark] .navbar-dark .navbar-toggler,html[data-netbox-color-mode=light] .navbar-dark .navbar-toggler{color:#ffffff8c;border-color:#ffffff1a}html .navbar-dark .navbar-toggler-icon,html[data-netbox-color-mode=dark] .navbar-dark .navbar-toggler-icon,html[data-netbox-color-mode=light] .navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}html .navbar-dark .navbar-text,html[data-netbox-color-mode=dark] .navbar-dark .navbar-text,html[data-netbox-color-mode=light] .navbar-dark .navbar-text{color:#ffffff8c}html .navbar-dark .navbar-text a,html .navbar-dark .navbar-text a:hover,html .navbar-dark .navbar-text a:focus,html[data-netbox-color-mode=dark] .navbar-dark .navbar-text a,html[data-netbox-color-mode=dark] .navbar-dark .navbar-text a:hover,html[data-netbox-color-mode=dark] .navbar-dark .navbar-text a:focus,html[data-netbox-color-mode=light] .navbar-dark .navbar-text a,html[data-netbox-color-mode=light] .navbar-dark .navbar-text a:hover,html[data-netbox-color-mode=light] .navbar-dark .navbar-text a:focus{color:#fff}}@media print{html .card,html[data-netbox-color-mode=dark] .card,html[data-netbox-color-mode=light] .card{position:relative;display:flex;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,.125);border-radius:.375rem}html .card>hr,html[data-netbox-color-mode=dark] .card>hr,html[data-netbox-color-mode=light] .card>hr{margin-right:0;margin-left:0}html .card>.list-group,html[data-netbox-color-mode=dark] .card>.list-group,html[data-netbox-color-mode=light] .card>.list-group{border-top:inherit;border-bottom:inherit}html .card>.list-group:first-child,html[data-netbox-color-mode=dark] .card>.list-group:first-child,html[data-netbox-color-mode=light] .card>.list-group:first-child{border-top-width:0;border-top-left-radius:calc(.375rem - 1px);border-top-right-radius:calc(.375rem - 1px)}html .card>.list-group:last-child,html[data-netbox-color-mode=dark] .card>.list-group:last-child,html[data-netbox-color-mode=light] .card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:calc(.375rem - 1px);border-bottom-left-radius:calc(.375rem - 1px)}html .card>.card-header+.list-group,html .card>.list-group+.card-footer,html[data-netbox-color-mode=dark] .card>.card-header+.list-group,html[data-netbox-color-mode=dark] .card>.list-group+.card-footer,html[data-netbox-color-mode=light] .card>.card-header+.list-group,html[data-netbox-color-mode=light] .card>.list-group+.card-footer{border-top:0}}@media print{html .card-body,html[data-netbox-color-mode=dark] .card-body,html[data-netbox-color-mode=light] .card-body{flex:1 1 auto;padding:1rem}}@media print{html .card-title,html[data-netbox-color-mode=dark] .card-title,html[data-netbox-color-mode=light] .card-title{margin-bottom:.5rem}}@media print{html .card-subtitle,html[data-netbox-color-mode=dark] .card-subtitle,html[data-netbox-color-mode=light] .card-subtitle{margin-top:-.25rem;margin-bottom:0}}@media print{html .card-text:last-child,html[data-netbox-color-mode=dark] .card-text:last-child,html[data-netbox-color-mode=light] .card-text:last-child{margin-bottom:0}}@media print{html .card-link:hover,html[data-netbox-color-mode=dark] .card-link:hover,html[data-netbox-color-mode=light] .card-link:hover{text-decoration:none}html .card-link+.card-link,html[data-netbox-color-mode=dark] .card-link+.card-link,html[data-netbox-color-mode=light] .card-link+.card-link{margin-left:1rem}}@media print{html .card-header,html[data-netbox-color-mode=dark] .card-header,html[data-netbox-color-mode=light] .card-header{padding:.5rem 1rem;margin-bottom:0;color:#343a40;background-color:"unset";border-bottom:1px solid rgba(0,0,0,.125)}html .card-header:first-child,html[data-netbox-color-mode=dark] .card-header:first-child,html[data-netbox-color-mode=light] .card-header:first-child{border-radius:calc(.375rem - 1px) calc(.375rem - 1px) 0 0}}@media print{html .card-footer,html[data-netbox-color-mode=dark] .card-footer,html[data-netbox-color-mode=light] .card-footer{padding:.5rem 1rem;color:#343a40;background-color:"unset";border-top:1px solid rgba(0,0,0,.125)}html .card-footer:last-child,html[data-netbox-color-mode=dark] .card-footer:last-child,html[data-netbox-color-mode=light] .card-footer:last-child{border-radius:0 0 calc(.375rem - 1px) calc(.375rem - 1px)}}@media print{html .card-header-tabs,html[data-netbox-color-mode=dark] .card-header-tabs,html[data-netbox-color-mode=light] .card-header-tabs{margin-right:-.5rem;margin-bottom:-.5rem;margin-left:-.5rem;border-bottom:0}}@media print{html .card-header-pills,html[data-netbox-color-mode=dark] .card-header-pills,html[data-netbox-color-mode=light] .card-header-pills{margin-right:-.5rem;margin-left:-.5rem}}@media print{html .card-img-overlay,html[data-netbox-color-mode=dark] .card-img-overlay,html[data-netbox-color-mode=light] .card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1rem;border-radius:calc(.375rem - 1px)}}@media print{html .card-img,html .card-img-top,html .card-img-bottom,html[data-netbox-color-mode=dark] .card-img,html[data-netbox-color-mode=dark] .card-img-top,html[data-netbox-color-mode=dark] .card-img-bottom,html[data-netbox-color-mode=light] .card-img,html[data-netbox-color-mode=light] .card-img-top,html[data-netbox-color-mode=light] .card-img-bottom{width:100%}}@media print{html .card-img,html .card-img-top,html[data-netbox-color-mode=dark] .card-img,html[data-netbox-color-mode=dark] .card-img-top,html[data-netbox-color-mode=light] .card-img,html[data-netbox-color-mode=light] .card-img-top{border-top-left-radius:calc(.375rem - 1px);border-top-right-radius:calc(.375rem - 1px)}}@media print{html .card-img,html .card-img-bottom,html[data-netbox-color-mode=dark] .card-img,html[data-netbox-color-mode=dark] .card-img-bottom,html[data-netbox-color-mode=light] .card-img,html[data-netbox-color-mode=light] .card-img-bottom{border-bottom-right-radius:calc(.375rem - 1px);border-bottom-left-radius:calc(.375rem - 1px)}}@media print{html .card-group>.card,html[data-netbox-color-mode=dark] .card-group>.card,html[data-netbox-color-mode=light] .card-group>.card{margin-bottom:.75rem}}@media print and (min-width: 576px){html .card-group,html[data-netbox-color-mode=dark] .card-group,html[data-netbox-color-mode=light] .card-group{display:flex;flex-flow:row wrap}html .card-group>.card,html[data-netbox-color-mode=dark] .card-group>.card,html[data-netbox-color-mode=light] .card-group>.card{flex:1 0 0%;margin-bottom:0}html .card-group>.card+.card,html[data-netbox-color-mode=dark] .card-group>.card+.card,html[data-netbox-color-mode=light] .card-group>.card+.card{margin-left:0;border-left:0}html .card-group>.card:not(:last-child),html[data-netbox-color-mode=dark] .card-group>.card:not(:last-child),html[data-netbox-color-mode=light] .card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}html .card-group>.card:not(:last-child) .card-img-top,html .card-group>.card:not(:last-child) .card-header,html[data-netbox-color-mode=dark] .card-group>.card:not(:last-child) .card-img-top,html[data-netbox-color-mode=dark] .card-group>.card:not(:last-child) .card-header,html[data-netbox-color-mode=light] .card-group>.card:not(:last-child) .card-img-top,html[data-netbox-color-mode=light] .card-group>.card:not(:last-child) .card-header{border-top-right-radius:0}html .card-group>.card:not(:last-child) .card-img-bottom,html .card-group>.card:not(:last-child) .card-footer,html[data-netbox-color-mode=dark] .card-group>.card:not(:last-child) .card-img-bottom,html[data-netbox-color-mode=dark] .card-group>.card:not(:last-child) .card-footer,html[data-netbox-color-mode=light] .card-group>.card:not(:last-child) .card-img-bottom,html[data-netbox-color-mode=light] .card-group>.card:not(:last-child) .card-footer{border-bottom-right-radius:0}html .card-group>.card:not(:first-child),html[data-netbox-color-mode=dark] .card-group>.card:not(:first-child),html[data-netbox-color-mode=light] .card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}html .card-group>.card:not(:first-child) .card-img-top,html .card-group>.card:not(:first-child) .card-header,html[data-netbox-color-mode=dark] .card-group>.card:not(:first-child) .card-img-top,html[data-netbox-color-mode=dark] .card-group>.card:not(:first-child) .card-header,html[data-netbox-color-mode=light] .card-group>.card:not(:first-child) .card-img-top,html[data-netbox-color-mode=light] .card-group>.card:not(:first-child) .card-header{border-top-left-radius:0}html .card-group>.card:not(:first-child) .card-img-bottom,html .card-group>.card:not(:first-child) .card-footer,html[data-netbox-color-mode=dark] .card-group>.card:not(:first-child) .card-img-bottom,html[data-netbox-color-mode=dark] .card-group>.card:not(:first-child) .card-footer,html[data-netbox-color-mode=light] .card-group>.card:not(:first-child) .card-img-bottom,html[data-netbox-color-mode=light] .card-group>.card:not(:first-child) .card-footer{border-bottom-left-radius:0}}@media print{html .accordion-button,html[data-netbox-color-mode=dark] .accordion-button,html[data-netbox-color-mode=light] .accordion-button{position:relative;display:flex;align-items:center;width:100%;padding:1rem 1.25rem;font-size:1rem;color:#212529;text-align:left;background-color:transparent;border:0;border-radius:0;overflow-anchor:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,border-radius .15s ease}}@media print and (prefers-reduced-motion: reduce){html .accordion-button,html[data-netbox-color-mode=dark] .accordion-button,html[data-netbox-color-mode=light] .accordion-button{transition:none}}@media print{html .accordion-button:not(.collapsed),html[data-netbox-color-mode=dark] .accordion-button:not(.collapsed),html[data-netbox-color-mode=light] .accordion-button:not(.collapsed){color:#343a40;background-color:#cfe2ff;box-shadow:inset 0 -1px #dee2e6}html .accordion-button:not(.collapsed):after,html[data-netbox-color-mode=dark] .accordion-button:not(.collapsed):after,html[data-netbox-color-mode=light] .accordion-button:not(.collapsed):after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230c63e4'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");transform:rotate(-180deg)}}@media print{html .accordion-button:after,html[data-netbox-color-mode=dark] .accordion-button:after,html[data-netbox-color-mode=light] .accordion-button:after{flex-shrink:0;width:1.25rem;height:1.25rem;margin-left:auto;content:"";background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23212529'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-size:1.25rem;transition:transform .2s ease-in-out}}@media print and (prefers-reduced-motion: reduce){html .accordion-button:after,html[data-netbox-color-mode=dark] .accordion-button:after,html[data-netbox-color-mode=light] .accordion-button:after{transition:none}}@media print{html .accordion-button:hover,html[data-netbox-color-mode=dark] .accordion-button:hover,html[data-netbox-color-mode=light] .accordion-button:hover{z-index:2}}@media print{html .accordion-button:focus,html[data-netbox-color-mode=dark] .accordion-button:focus,html[data-netbox-color-mode=light] .accordion-button:focus{z-index:3;border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}}@media print{html .accordion-header,html[data-netbox-color-mode=dark] .accordion-header,html[data-netbox-color-mode=light] .accordion-header{margin-bottom:0}}@media print{html .accordion-item,html[data-netbox-color-mode=dark] .accordion-item,html[data-netbox-color-mode=light] .accordion-item{background-color:transparent;border:1px solid #dee2e6}html .accordion-item:first-of-type,html[data-netbox-color-mode=dark] .accordion-item:first-of-type,html[data-netbox-color-mode=light] .accordion-item:first-of-type{border-top-left-radius:.375rem;border-top-right-radius:.375rem}html .accordion-item:first-of-type .accordion-button,html[data-netbox-color-mode=dark] .accordion-item:first-of-type .accordion-button,html[data-netbox-color-mode=light] .accordion-item:first-of-type .accordion-button{border-top-left-radius:calc(.375rem - 1px);border-top-right-radius:calc(.375rem - 1px)}html .accordion-item:not(:first-of-type),html[data-netbox-color-mode=dark] .accordion-item:not(:first-of-type),html[data-netbox-color-mode=light] .accordion-item:not(:first-of-type){border-top:0}html .accordion-item:last-of-type,html[data-netbox-color-mode=dark] .accordion-item:last-of-type,html[data-netbox-color-mode=light] .accordion-item:last-of-type{border-bottom-right-radius:.375rem;border-bottom-left-radius:.375rem}html .accordion-item:last-of-type .accordion-button.collapsed,html[data-netbox-color-mode=dark] .accordion-item:last-of-type .accordion-button.collapsed,html[data-netbox-color-mode=light] .accordion-item:last-of-type .accordion-button.collapsed{border-bottom-right-radius:calc(.375rem - 1px);border-bottom-left-radius:calc(.375rem - 1px)}html .accordion-item:last-of-type .accordion-collapse,html[data-netbox-color-mode=dark] .accordion-item:last-of-type .accordion-collapse,html[data-netbox-color-mode=light] .accordion-item:last-of-type .accordion-collapse{border-bottom-right-radius:.375rem;border-bottom-left-radius:.375rem}}@media print{html .accordion-body,html[data-netbox-color-mode=dark] .accordion-body,html[data-netbox-color-mode=light] .accordion-body{padding:1rem 1.25rem}}@media print{html .accordion-flush .accordion-collapse,html[data-netbox-color-mode=dark] .accordion-flush .accordion-collapse,html[data-netbox-color-mode=light] .accordion-flush .accordion-collapse{border-width:0}html .accordion-flush .accordion-item,html[data-netbox-color-mode=dark] .accordion-flush .accordion-item,html[data-netbox-color-mode=light] .accordion-flush .accordion-item{border-right:0;border-left:0;border-radius:0}html .accordion-flush .accordion-item:first-child,html[data-netbox-color-mode=dark] .accordion-flush .accordion-item:first-child,html[data-netbox-color-mode=light] .accordion-flush .accordion-item:first-child{border-top:0}html .accordion-flush .accordion-item:last-child,html[data-netbox-color-mode=dark] .accordion-flush .accordion-item:last-child,html[data-netbox-color-mode=light] .accordion-flush .accordion-item:last-child{border-bottom:0}html .accordion-flush .accordion-item .accordion-button,html[data-netbox-color-mode=dark] .accordion-flush .accordion-item .accordion-button,html[data-netbox-color-mode=light] .accordion-flush .accordion-item .accordion-button{border-radius:0}}@media print{html .breadcrumb,html[data-netbox-color-mode=dark] .breadcrumb,html[data-netbox-color-mode=light] .breadcrumb{display:flex;flex-wrap:wrap;padding:0;margin-bottom:1rem;list-style:none}}@media print{html .breadcrumb-item+.breadcrumb-item,html[data-netbox-color-mode=dark] .breadcrumb-item+.breadcrumb-item,html[data-netbox-color-mode=light] .breadcrumb-item+.breadcrumb-item{padding-left:.5rem}html .breadcrumb-item+.breadcrumb-item:before,html[data-netbox-color-mode=dark] .breadcrumb-item+.breadcrumb-item:before,html[data-netbox-color-mode=light] .breadcrumb-item+.breadcrumb-item:before{float:left;padding-right:.5rem;color:#6c757d;content:var(--bs-breadcrumb-divider, url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8'%3E%3Cpath d='M2.5 0L1 1.5 3.5 4 1 6.5 2.5 8l4-4-4-4z' fill='currentColor'/%3E%3C/svg%3E"))}html .breadcrumb-item.active,html[data-netbox-color-mode=dark] .breadcrumb-item.active,html[data-netbox-color-mode=light] .breadcrumb-item.active{color:#6c757d}}@media print{html .pagination,html[data-netbox-color-mode=dark] .pagination,html[data-netbox-color-mode=light] .pagination{display:flex;padding-left:0;list-style:none}}@media print{html .page-link,html[data-netbox-color-mode=dark] .page-link,html[data-netbox-color-mode=light] .page-link{position:relative;display:block;color:#0d6efd;text-decoration:none;background-color:#fff;border:1px solid #dee2e6;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}}@media print and (prefers-reduced-motion: reduce){html .page-link,html[data-netbox-color-mode=dark] .page-link,html[data-netbox-color-mode=light] .page-link{transition:none}}@media print{html .page-link:hover,html[data-netbox-color-mode=dark] .page-link:hover,html[data-netbox-color-mode=light] .page-link:hover{z-index:2;color:#0a58ca;background-color:#e9ecef;border-color:#dee2e6}}@media print{html .page-link:focus,html[data-netbox-color-mode=dark] .page-link:focus,html[data-netbox-color-mode=light] .page-link:focus{z-index:3;color:#0a58ca;background-color:#e9ecef;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}}@media print{html .page-item:not(:first-child) .page-link,html[data-netbox-color-mode=dark] .page-item:not(:first-child) .page-link,html[data-netbox-color-mode=light] .page-item:not(:first-child) .page-link{margin-left:-1px}html .page-item.active .page-link,html[data-netbox-color-mode=dark] .page-item.active .page-link,html[data-netbox-color-mode=light] .page-item.active .page-link{z-index:3;color:#fff;background-color:#0d6efd;border-color:#0d6efd}html .page-item.disabled .page-link,html[data-netbox-color-mode=dark] .page-item.disabled .page-link,html[data-netbox-color-mode=light] .page-item.disabled .page-link{color:#6c757d;pointer-events:none;background-color:#fff;border-color:#dee2e6}}@media print{html .page-link,html[data-netbox-color-mode=dark] .page-link,html[data-netbox-color-mode=light] .page-link{padding:.375rem .75rem}}@media print{html .page-item:first-child .page-link,html[data-netbox-color-mode=dark] .page-item:first-child .page-link,html[data-netbox-color-mode=light] .page-item:first-child .page-link{border-top-left-radius:.375rem;border-bottom-left-radius:.375rem}html .page-item:last-child .page-link,html[data-netbox-color-mode=dark] .page-item:last-child .page-link,html[data-netbox-color-mode=light] .page-item:last-child .page-link{border-top-right-radius:.375rem;border-bottom-right-radius:.375rem}}@media print{html .pagination-lg .page-link,html[data-netbox-color-mode=dark] .pagination-lg .page-link,html[data-netbox-color-mode=light] .pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem}html .pagination-lg .page-item:first-child .page-link,html[data-netbox-color-mode=dark] .pagination-lg .page-item:first-child .page-link,html[data-netbox-color-mode=light] .pagination-lg .page-item:first-child .page-link{border-top-left-radius:.75rem;border-bottom-left-radius:.75rem}html .pagination-lg .page-item:last-child .page-link,html[data-netbox-color-mode=dark] .pagination-lg .page-item:last-child .page-link,html[data-netbox-color-mode=light] .pagination-lg .page-item:last-child .page-link{border-top-right-radius:.75rem;border-bottom-right-radius:.75rem}}@media print{html .pagination-sm .page-link,html[data-netbox-color-mode=dark] .pagination-sm .page-link,html[data-netbox-color-mode=light] .pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem}html .pagination-sm .page-item:first-child .page-link,html[data-netbox-color-mode=dark] .pagination-sm .page-item:first-child .page-link,html[data-netbox-color-mode=light] .pagination-sm .page-item:first-child .page-link{border-top-left-radius:.375rem;border-bottom-left-radius:.375rem}html .pagination-sm .page-item:last-child .page-link,html[data-netbox-color-mode=dark] .pagination-sm .page-item:last-child .page-link,html[data-netbox-color-mode=light] .pagination-sm .page-item:last-child .page-link{border-top-right-radius:.375rem;border-bottom-right-radius:.375rem}}@media print{html .badge,html[data-netbox-color-mode=dark] .badge,html[data-netbox-color-mode=light] .badge{display:inline-block;padding:.35em .65em;font-size:.75em;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.375rem}html .badge:empty,html[data-netbox-color-mode=dark] .badge:empty,html[data-netbox-color-mode=light] .badge:empty{display:none}}@media print{html .btn .badge,html[data-netbox-color-mode=dark] .btn .badge,html[data-netbox-color-mode=light] .btn .badge{position:relative;top:-1px}}@media print{html .alert,html[data-netbox-color-mode=dark] .alert,html[data-netbox-color-mode=light] .alert{position:relative;padding:1rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.375rem}}@media print{html .alert-heading,html[data-netbox-color-mode=dark] .alert-heading,html[data-netbox-color-mode=light] .alert-heading{color:inherit}}@media print{html .alert-link,html[data-netbox-color-mode=dark] .alert-link,html[data-netbox-color-mode=light] .alert-link{font-weight:700}}@media print{html .alert-dismissible,html[data-netbox-color-mode=dark] .alert-dismissible,html[data-netbox-color-mode=light] .alert-dismissible{padding-right:3rem}html .alert-dismissible .btn-close,html[data-netbox-color-mode=dark] .alert-dismissible .btn-close,html[data-netbox-color-mode=light] .alert-dismissible .btn-close{position:absolute;top:0;right:0;z-index:2;padding:1.25rem 1rem}}@media print{html .alert-primary,html[data-netbox-color-mode=dark] .alert-primary,html[data-netbox-color-mode=light] .alert-primary{color:#1f496e;background-color:#d6e4f1;border-color:#c2d7e9}html .alert-primary .alert-link,html[data-netbox-color-mode=dark] .alert-primary .alert-link,html[data-netbox-color-mode=light] .alert-primary .alert-link{color:#193a58}}@media print{html .alert-secondary,html[data-netbox-color-mode=dark] .alert-secondary,html[data-netbox-color-mode=light] .alert-secondary{color:#41464b;background-color:#e2e3e5;border-color:#d3d6d8}html .alert-secondary .alert-link,html[data-netbox-color-mode=dark] .alert-secondary .alert-link,html[data-netbox-color-mode=light] .alert-secondary .alert-link{color:#34383c}}@media print{html .alert-success,html[data-netbox-color-mode=dark] .alert-success,html[data-netbox-color-mode=light] .alert-success{color:#0f5132;background-color:#d1e7dd;border-color:#badbcc}html .alert-success .alert-link,html[data-netbox-color-mode=dark] .alert-success .alert-link,html[data-netbox-color-mode=light] .alert-success .alert-link{color:#0c4128}}@media print{html .alert-info,html[data-netbox-color-mode=dark] .alert-info,html[data-netbox-color-mode=light] .alert-info{color:#055160;background-color:#cff4fc;border-color:#b6effb}html .alert-info .alert-link,html[data-netbox-color-mode=dark] .alert-info .alert-link,html[data-netbox-color-mode=light] .alert-info .alert-link{color:#04414d}}@media print{html .alert-warning,html[data-netbox-color-mode=dark] .alert-warning,html[data-netbox-color-mode=light] .alert-warning{color:#664d03;background-color:#fff3cd;border-color:#ffecb5}html .alert-warning .alert-link,html[data-netbox-color-mode=dark] .alert-warning .alert-link,html[data-netbox-color-mode=light] .alert-warning .alert-link{color:#523e02}}@media print{html .alert-danger,html[data-netbox-color-mode=dark] .alert-danger,html[data-netbox-color-mode=light] .alert-danger{color:#842029;background-color:#f8d7da;border-color:#f5c2c7}html .alert-danger .alert-link,html[data-netbox-color-mode=dark] .alert-danger .alert-link,html[data-netbox-color-mode=light] .alert-danger .alert-link{color:#6a1a21}}@media print{html .alert-light,html[data-netbox-color-mode=dark] .alert-light,html[data-netbox-color-mode=light] .alert-light{color:#636464;background-color:#fefefe;border-color:#fdfdfe}html .alert-light .alert-link,html[data-netbox-color-mode=dark] .alert-light .alert-link,html[data-netbox-color-mode=light] .alert-light .alert-link{color:#4f5050}}@media print{html .alert-dark,html[data-netbox-color-mode=dark] .alert-dark,html[data-netbox-color-mode=light] .alert-dark{color:#141619;background-color:#d3d3d4;border-color:#bcbebf}html .alert-dark .alert-link,html[data-netbox-color-mode=dark] .alert-dark .alert-link,html[data-netbox-color-mode=light] .alert-dark .alert-link{color:#101214}}@media print{html .alert-red,html[data-netbox-color-mode=dark] .alert-red,html[data-netbox-color-mode=light] .alert-red{color:#842029;background-color:#f8d7da;border-color:#f5c2c7}html .alert-red .alert-link,html[data-netbox-color-mode=dark] .alert-red .alert-link,html[data-netbox-color-mode=light] .alert-red .alert-link{color:#6a1a21}}@media print{html .alert-yellow,html[data-netbox-color-mode=dark] .alert-yellow,html[data-netbox-color-mode=light] .alert-yellow{color:#664d03;background-color:#fff3cd;border-color:#ffecb5}html .alert-yellow .alert-link,html[data-netbox-color-mode=dark] .alert-yellow .alert-link,html[data-netbox-color-mode=light] .alert-yellow .alert-link{color:#523e02}}@media print{html .alert-green,html[data-netbox-color-mode=dark] .alert-green,html[data-netbox-color-mode=light] .alert-green{color:#0f5132;background-color:#d1e7dd;border-color:#badbcc}html .alert-green .alert-link,html[data-netbox-color-mode=dark] .alert-green .alert-link,html[data-netbox-color-mode=light] .alert-green .alert-link{color:#0c4128}}@media print{html .alert-blue,html[data-netbox-color-mode=dark] .alert-blue,html[data-netbox-color-mode=light] .alert-blue{color:#084298;background-color:#cfe2ff;border-color:#b6d4fe}html .alert-blue .alert-link,html[data-netbox-color-mode=dark] .alert-blue .alert-link,html[data-netbox-color-mode=light] .alert-blue .alert-link{color:#06357a}}@media print{html .alert-cyan,html[data-netbox-color-mode=dark] .alert-cyan,html[data-netbox-color-mode=light] .alert-cyan{color:#055160;background-color:#cff4fc;border-color:#b6effb}html .alert-cyan .alert-link,html[data-netbox-color-mode=dark] .alert-cyan .alert-link,html[data-netbox-color-mode=light] .alert-cyan .alert-link{color:#04414d}}@media print{html .alert-indigo,html[data-netbox-color-mode=dark] .alert-indigo,html[data-netbox-color-mode=light] .alert-indigo{color:#3d0a91;background-color:#e0cffc;border-color:#d1b7fb}html .alert-indigo .alert-link,html[data-netbox-color-mode=dark] .alert-indigo .alert-link,html[data-netbox-color-mode=light] .alert-indigo .alert-link{color:#310874}}@media print{html .alert-purple,html[data-netbox-color-mode=dark] .alert-purple,html[data-netbox-color-mode=light] .alert-purple{color:#432874;background-color:#e2d9f3;border-color:#d4c6ec}html .alert-purple .alert-link,html[data-netbox-color-mode=dark] .alert-purple .alert-link,html[data-netbox-color-mode=light] .alert-purple .alert-link{color:#36205d}}@media print{html .alert-pink,html[data-netbox-color-mode=dark] .alert-pink,html[data-netbox-color-mode=light] .alert-pink{color:#801f4f;background-color:#f7d6e6;border-color:#f3c2da}html .alert-pink .alert-link,html[data-netbox-color-mode=dark] .alert-pink .alert-link,html[data-netbox-color-mode=light] .alert-pink .alert-link{color:#66193f}}@media print{html .alert-darker,html[data-netbox-color-mode=dark] .alert-darker,html[data-netbox-color-mode=light] .alert-darker{color:#101314;background-color:#d1d2d3;border-color:#bbbcbd}html .alert-darker .alert-link,html[data-netbox-color-mode=dark] .alert-darker .alert-link,html[data-netbox-color-mode=light] .alert-darker .alert-link{color:#0d0f10}}@media print{html .alert-darkest,html[data-netbox-color-mode=dark] .alert-darkest,html[data-netbox-color-mode=light] .alert-darkest{color:#0e1011;background-color:#d1d1d2;border-color:#b9bbbb}html .alert-darkest .alert-link,html[data-netbox-color-mode=dark] .alert-darkest .alert-link,html[data-netbox-color-mode=light] .alert-darkest .alert-link{color:#0b0d0e}}@media print{html .alert-gray,html[data-netbox-color-mode=dark] .alert-gray,html[data-netbox-color-mode=light] .alert-gray{color:#525557;background-color:#f5f6f8;border-color:#f0f2f4}html .alert-gray .alert-link,html[data-netbox-color-mode=dark] .alert-gray .alert-link,html[data-netbox-color-mode=light] .alert-gray .alert-link{color:#424446}}@media print{html .alert-gray-100,html[data-netbox-color-mode=dark] .alert-gray-100,html[data-netbox-color-mode=light] .alert-gray-100{color:#636464;background-color:#fefefe;border-color:#fdfdfe}html .alert-gray-100 .alert-link,html[data-netbox-color-mode=dark] .alert-gray-100 .alert-link,html[data-netbox-color-mode=light] .alert-gray-100 .alert-link{color:#4f5050}}@media print{html .alert-gray-200,html[data-netbox-color-mode=dark] .alert-gray-200,html[data-netbox-color-mode=light] .alert-gray-200{color:#5d5e60;background-color:#fbfbfc;border-color:#f8f9fa}html .alert-gray-200 .alert-link,html[data-netbox-color-mode=dark] .alert-gray-200 .alert-link,html[data-netbox-color-mode=light] .alert-gray-200 .alert-link{color:#4a4b4d}}@media print{html .alert-gray-300,html[data-netbox-color-mode=dark] .alert-gray-300,html[data-netbox-color-mode=light] .alert-gray-300{color:#595a5c;background-color:#f8f9fa;border-color:#f5f6f8}html .alert-gray-300 .alert-link,html[data-netbox-color-mode=dark] .alert-gray-300 .alert-link,html[data-netbox-color-mode=light] .alert-gray-300 .alert-link{color:#47484a}}@media print{html .alert-gray-400,html[data-netbox-color-mode=dark] .alert-gray-400,html[data-netbox-color-mode=light] .alert-gray-400{color:#525557;background-color:#f5f6f8;border-color:#f0f2f4}html .alert-gray-400 .alert-link,html[data-netbox-color-mode=dark] .alert-gray-400 .alert-link,html[data-netbox-color-mode=light] .alert-gray-400 .alert-link{color:#424446}}@media print{html .alert-gray-500,html[data-netbox-color-mode=dark] .alert-gray-500,html[data-netbox-color-mode=light] .alert-gray-500{color:#686d71;background-color:#eff0f2;border-color:#e6e9eb}html .alert-gray-500 .alert-link,html[data-netbox-color-mode=dark] .alert-gray-500 .alert-link,html[data-netbox-color-mode=light] .alert-gray-500 .alert-link{color:#53575a}}@media print{html .alert-gray-600,html[data-netbox-color-mode=dark] .alert-gray-600,html[data-netbox-color-mode=light] .alert-gray-600{color:#41464b;background-color:#e2e3e5;border-color:#d3d6d8}html .alert-gray-600 .alert-link,html[data-netbox-color-mode=dark] .alert-gray-600 .alert-link,html[data-netbox-color-mode=light] .alert-gray-600 .alert-link{color:#34383c}}@media print{html .alert-gray-700,html[data-netbox-color-mode=dark] .alert-gray-700,html[data-netbox-color-mode=light] .alert-gray-700{color:#2c3034;background-color:#dbdcdd;border-color:#c8cbcd}html .alert-gray-700 .alert-link,html[data-netbox-color-mode=dark] .alert-gray-700 .alert-link,html[data-netbox-color-mode=light] .alert-gray-700 .alert-link{color:#23262a}}@media print{html .alert-gray-800,html[data-netbox-color-mode=dark] .alert-gray-800,html[data-netbox-color-mode=light] .alert-gray-800{color:#1f2326;background-color:#d6d8d9;border-color:#c2c4c6}html .alert-gray-800 .alert-link,html[data-netbox-color-mode=dark] .alert-gray-800 .alert-link,html[data-netbox-color-mode=light] .alert-gray-800 .alert-link{color:#191c1e}}@media print{html .alert-gray-900,html[data-netbox-color-mode=dark] .alert-gray-900,html[data-netbox-color-mode=light] .alert-gray-900{color:#141619;background-color:#d3d3d4;border-color:#bcbebf}html .alert-gray-900 .alert-link,html[data-netbox-color-mode=dark] .alert-gray-900 .alert-link,html[data-netbox-color-mode=light] .alert-gray-900 .alert-link{color:#101214}}@media print{html .alert-red-100,html[data-netbox-color-mode=dark] .alert-red-100,html[data-netbox-color-mode=light] .alert-red-100{color:#635657;background-color:#fef7f8;border-color:#fdf3f4}html .alert-red-100 .alert-link,html[data-netbox-color-mode=dark] .alert-red-100 .alert-link,html[data-netbox-color-mode=light] .alert-red-100 .alert-link{color:#4f4546}}@media print{html .alert-red-200,html[data-netbox-color-mode=dark] .alert-red-200,html[data-netbox-color-mode=light] .alert-red-200{color:#604648;background-color:#fceff0;border-color:#fbe7e9}html .alert-red-200 .alert-link,html[data-netbox-color-mode=dark] .alert-red-200 .alert-link,html[data-netbox-color-mode=light] .alert-red-200 .alert-link{color:#4d383a}}@media print{html .alert-red-300,html[data-netbox-color-mode=dark] .alert-red-300,html[data-netbox-color-mode=light] .alert-red-300{color:#8c5056;background-color:#fbe7e9;border-color:#f9dbdd}html .alert-red-300 .alert-link,html[data-netbox-color-mode=dark] .alert-red-300 .alert-link,html[data-netbox-color-mode=light] .alert-red-300 .alert-link{color:#704045}}@media print{html .alert-red-400,html[data-netbox-color-mode=dark] .alert-red-400,html[data-netbox-color-mode=light] .alert-red-400{color:#883840;background-color:#f9dfe1;border-color:#f7ced2}html .alert-red-400 .alert-link,html[data-netbox-color-mode=dark] .alert-red-400 .alert-link,html[data-netbox-color-mode=light] .alert-red-400 .alert-link{color:#6d2d33}}@media print{html .alert-red-500,html[data-netbox-color-mode=dark] .alert-red-500,html[data-netbox-color-mode=light] .alert-red-500{color:#842029;background-color:#f8d7da;border-color:#f5c2c7}html .alert-red-500 .alert-link,html[data-netbox-color-mode=dark] .alert-red-500 .alert-link,html[data-netbox-color-mode=light] .alert-red-500 .alert-link{color:#6a1a21}}@media print{html .alert-red-600,html[data-netbox-color-mode=dark] .alert-red-600,html[data-netbox-color-mode=light] .alert-red-600{color:#6a1921;background-color:#efd4d7;border-color:#e7bfc3}html .alert-red-600 .alert-link,html[data-netbox-color-mode=dark] .alert-red-600 .alert-link,html[data-netbox-color-mode=light] .alert-red-600 .alert-link{color:#55141a}}@media print{html .alert-red-700,html[data-netbox-color-mode=dark] .alert-red-700,html[data-netbox-color-mode=light] .alert-red-700{color:#4f1319;background-color:#e6d2d4;border-color:#dabcbf}html .alert-red-700 .alert-link,html[data-netbox-color-mode=dark] .alert-red-700 .alert-link,html[data-netbox-color-mode=light] .alert-red-700 .alert-link{color:#3f0f14}}@media print{html .alert-red-800,html[data-netbox-color-mode=dark] .alert-red-800,html[data-netbox-color-mode=light] .alert-red-800{color:#350d11;background-color:#ded0d2;border-color:#cdb9bb}html .alert-red-800 .alert-link,html[data-netbox-color-mode=dark] .alert-red-800 .alert-link,html[data-netbox-color-mode=light] .alert-red-800 .alert-link{color:#2a0a0e}}@media print{html .alert-red-900,html[data-netbox-color-mode=dark] .alert-red-900,html[data-netbox-color-mode=light] .alert-red-900{color:#1a0708;background-color:#d5cecf;border-color:#c0b6b7}html .alert-red-900 .alert-link,html[data-netbox-color-mode=dark] .alert-red-900 .alert-link,html[data-netbox-color-mode=light] .alert-red-900 .alert-link{color:#150606}}@media print{html .alert-yellow-100,html[data-netbox-color-mode=dark] .alert-yellow-100,html[data-netbox-color-mode=light] .alert-yellow-100{color:#666152;background-color:#fffdf5;border-color:#fffbf0}html .alert-yellow-100 .alert-link,html[data-netbox-color-mode=dark] .alert-yellow-100 .alert-link,html[data-netbox-color-mode=light] .alert-yellow-100 .alert-link{color:#524e42}}@media print{html .alert-yellow-200,html[data-netbox-color-mode=dark] .alert-yellow-200,html[data-netbox-color-mode=light] .alert-yellow-200{color:#665c3e;background-color:#fffaeb;border-color:#fff8e1}html .alert-yellow-200 .alert-link,html[data-netbox-color-mode=dark] .alert-yellow-200 .alert-link,html[data-netbox-color-mode=light] .alert-yellow-200 .alert-link{color:#524a32}}@media print{html .alert-yellow-300,html[data-netbox-color-mode=dark] .alert-yellow-300,html[data-netbox-color-mode=light] .alert-yellow-300{color:#66572a;background-color:#fff8e1;border-color:#fff4d2}html .alert-yellow-300 .alert-link,html[data-netbox-color-mode=dark] .alert-yellow-300 .alert-link,html[data-netbox-color-mode=light] .alert-yellow-300 .alert-link{color:#524622}}@media print{html .alert-yellow-400,html[data-netbox-color-mode=dark] .alert-yellow-400,html[data-netbox-color-mode=light] .alert-yellow-400{color:#665217;background-color:#fff5d7;border-color:#fff0c4}html .alert-yellow-400 .alert-link,html[data-netbox-color-mode=dark] .alert-yellow-400 .alert-link,html[data-netbox-color-mode=light] .alert-yellow-400 .alert-link{color:#524212}}@media print{html .alert-yellow-500,html[data-netbox-color-mode=dark] .alert-yellow-500,html[data-netbox-color-mode=light] .alert-yellow-500{color:#664d03;background-color:#fff3cd;border-color:#ffecb5}html .alert-yellow-500 .alert-link,html[data-netbox-color-mode=dark] .alert-yellow-500 .alert-link,html[data-netbox-color-mode=light] .alert-yellow-500 .alert-link{color:#523e02}}@media print{html .alert-yellow-600,html[data-netbox-color-mode=dark] .alert-yellow-600,html[data-netbox-color-mode=light] .alert-yellow-600{color:#7a5c04;background-color:#f5ebcd;border-color:#f0e1b4}html .alert-yellow-600 .alert-link,html[data-netbox-color-mode=dark] .alert-yellow-600 .alert-link,html[data-netbox-color-mode=light] .alert-yellow-600 .alert-link{color:#624a03}}@media print{html .alert-yellow-700,html[data-netbox-color-mode=dark] .alert-yellow-700,html[data-netbox-color-mode=light] .alert-yellow-700{color:#5c4602;background-color:#ebe3cd;border-color:#e0d5b4}html .alert-yellow-700 .alert-link,html[data-netbox-color-mode=dark] .alert-yellow-700 .alert-link,html[data-netbox-color-mode=light] .alert-yellow-700 .alert-link{color:#4a3802}}@media print{html .alert-yellow-800,html[data-netbox-color-mode=dark] .alert-yellow-800,html[data-netbox-color-mode=light] .alert-yellow-800{color:#3d2e02;background-color:#e0dbcd;border-color:#d1cab3}html .alert-yellow-800 .alert-link,html[data-netbox-color-mode=dark] .alert-yellow-800 .alert-link,html[data-netbox-color-mode=light] .alert-yellow-800 .alert-link{color:#312502}}@media print{html .alert-yellow-900,html[data-netbox-color-mode=dark] .alert-yellow-900,html[data-netbox-color-mode=light] .alert-yellow-900{color:#1f1701;background-color:#d6d4cc;border-color:#c2beb3}html .alert-yellow-900 .alert-link,html[data-netbox-color-mode=dark] .alert-yellow-900 .alert-link,html[data-netbox-color-mode=light] .alert-yellow-900 .alert-link{color:#191201}}@media print{html .alert-green-100,html[data-netbox-color-mode=dark] .alert-green-100,html[data-netbox-color-mode=light] .alert-green-100{color:#545c58;background-color:#f6faf8;border-color:#f1f8f5}html .alert-green-100 .alert-link,html[data-netbox-color-mode=dark] .alert-green-100 .alert-link,html[data-netbox-color-mode=light] .alert-green-100 .alert-link{color:#434a46}}@media print{html .alert-green-200,html[data-netbox-color-mode=dark] .alert-green-200,html[data-netbox-color-mode=light] .alert-green-200{color:#41534b;background-color:#edf5f1;border-color:#e3f1eb}html .alert-green-200 .alert-link,html[data-netbox-color-mode=dark] .alert-green-200 .alert-link,html[data-netbox-color-mode=light] .alert-green-200 .alert-link{color:#34423c}}@media print{html .alert-green-300,html[data-netbox-color-mode=dark] .alert-green-300,html[data-netbox-color-mode=light] .alert-green-300{color:#466e5b;background-color:#e3f1ea;border-color:#d6e9e0}html .alert-green-300 .alert-link,html[data-netbox-color-mode=dark] .alert-green-300 .alert-link,html[data-netbox-color-mode=light] .alert-green-300 .alert-link{color:#385849}}@media print{html .alert-green-400,html[data-netbox-color-mode=dark] .alert-green-400,html[data-netbox-color-mode=light] .alert-green-400{color:#2b5f47;background-color:#daece4;border-color:#c8e2d6}html .alert-green-400 .alert-link,html[data-netbox-color-mode=dark] .alert-green-400 .alert-link,html[data-netbox-color-mode=light] .alert-green-400 .alert-link{color:#224c39}}@media print{html .alert-green-500,html[data-netbox-color-mode=dark] .alert-green-500,html[data-netbox-color-mode=light] .alert-green-500{color:#0f5132;background-color:#d1e7dd;border-color:#badbcc}html .alert-green-500 .alert-link,html[data-netbox-color-mode=dark] .alert-green-500 .alert-link,html[data-netbox-color-mode=light] .alert-green-500 .alert-link{color:#0c4128}}@media print{html .alert-green-600,html[data-netbox-color-mode=dark] .alert-green-600,html[data-netbox-color-mode=light] .alert-green-600{color:#0c4128;background-color:#d0e2d9;border-color:#b9d3c7}html .alert-green-600 .alert-link,html[data-netbox-color-mode=dark] .alert-green-600 .alert-link,html[data-netbox-color-mode=light] .alert-green-600 .alert-link{color:#0a3420}}@media print{html .alert-green-700,html[data-netbox-color-mode=dark] .alert-green-700,html[data-netbox-color-mode=light] .alert-green-700{color:#09311e;background-color:#cfdcd6;border-color:#b7cbc2}html .alert-green-700 .alert-link,html[data-netbox-color-mode=dark] .alert-green-700 .alert-link,html[data-netbox-color-mode=light] .alert-green-700 .alert-link{color:#072718}}@media print{html .alert-green-800,html[data-netbox-color-mode=dark] .alert-green-800,html[data-netbox-color-mode=light] .alert-green-800{color:#062014;background-color:#ced7d3;border-color:#b6c3bd}html .alert-green-800 .alert-link,html[data-netbox-color-mode=dark] .alert-green-800 .alert-link,html[data-netbox-color-mode=light] .alert-green-800 .alert-link{color:#051a10}}@media print{html .alert-green-900,html[data-netbox-color-mode=dark] .alert-green-900,html[data-netbox-color-mode=light] .alert-green-900{color:#03100a;background-color:#cdd1cf;border-color:#b4bbb8}html .alert-green-900 .alert-link,html[data-netbox-color-mode=dark] .alert-green-900 .alert-link,html[data-netbox-color-mode=light] .alert-green-900 .alert-link{color:#020d08}}@media print{html .alert-blue-100,html[data-netbox-color-mode=dark] .alert-blue-100,html[data-netbox-color-mode=light] .alert-blue-100{color:#535a66;background-color:#f5f9ff;border-color:#f1f6ff}html .alert-blue-100 .alert-link,html[data-netbox-color-mode=dark] .alert-blue-100 .alert-link,html[data-netbox-color-mode=light] .alert-blue-100 .alert-link{color:#424852}}@media print{html .alert-blue-200,html[data-netbox-color-mode=dark] .alert-blue-200,html[data-netbox-color-mode=light] .alert-blue-200{color:#3f4f66;background-color:#ecf3ff;border-color:#e2eeff}html .alert-blue-200 .alert-link,html[data-netbox-color-mode=dark] .alert-blue-200 .alert-link,html[data-netbox-color-mode=light] .alert-blue-200 .alert-link{color:#323f52}}@media print{html .alert-blue-300,html[data-netbox-color-mode=dark] .alert-blue-300,html[data-netbox-color-mode=light] .alert-blue-300{color:#426598;background-color:#e2eeff;border-color:#d4e5ff}html .alert-blue-300 .alert-link,html[data-netbox-color-mode=dark] .alert-blue-300 .alert-link,html[data-netbox-color-mode=light] .alert-blue-300 .alert-link{color:#35517a}}@media print{html .alert-blue-400,html[data-netbox-color-mode=dark] .alert-blue-400,html[data-netbox-color-mode=light] .alert-blue-400{color:#255398;background-color:#d8e8ff;border-color:#c5dcfe}html .alert-blue-400 .alert-link,html[data-netbox-color-mode=dark] .alert-blue-400 .alert-link,html[data-netbox-color-mode=light] .alert-blue-400 .alert-link{color:#1e427a}}@media print{html .alert-blue-500,html[data-netbox-color-mode=dark] .alert-blue-500,html[data-netbox-color-mode=light] .alert-blue-500{color:#084298;background-color:#cfe2ff;border-color:#b6d4fe}html .alert-blue-500 .alert-link,html[data-netbox-color-mode=dark] .alert-blue-500 .alert-link,html[data-netbox-color-mode=light] .alert-blue-500 .alert-link{color:#06357a}}@media print{html .alert-blue-600,html[data-netbox-color-mode=dark] .alert-blue-600,html[data-netbox-color-mode=light] .alert-blue-600{color:#063579;background-color:#cedef4;border-color:#b6cdef}html .alert-blue-600 .alert-link,html[data-netbox-color-mode=dark] .alert-blue-600 .alert-link,html[data-netbox-color-mode=light] .alert-blue-600 .alert-link{color:#052a61}}@media print{html .alert-blue-700,html[data-netbox-color-mode=dark] .alert-blue-700,html[data-netbox-color-mode=light] .alert-blue-700{color:#05285b;background-color:#ced9ea;border-color:#b5c6e0}html .alert-blue-700 .alert-link,html[data-netbox-color-mode=dark] .alert-blue-700 .alert-link,html[data-netbox-color-mode=light] .alert-blue-700 .alert-link{color:#042049}}@media print{html .alert-blue-800,html[data-netbox-color-mode=dark] .alert-blue-800,html[data-netbox-color-mode=light] .alert-blue-800{color:#031a3d;background-color:#cdd5e0;border-color:#b4c0d1}html .alert-blue-800 .alert-link,html[data-netbox-color-mode=dark] .alert-blue-800 .alert-link,html[data-netbox-color-mode=light] .alert-blue-800 .alert-link{color:#021531}}@media print{html .alert-blue-900,html[data-netbox-color-mode=dark] .alert-blue-900,html[data-netbox-color-mode=light] .alert-blue-900{color:#020d1f;background-color:#cdd0d6;border-color:#b3b9c2}html .alert-blue-900 .alert-link,html[data-netbox-color-mode=dark] .alert-blue-900 .alert-link,html[data-netbox-color-mode=light] .alert-blue-900 .alert-link{color:#020a19}}@media print{html .alert-cyan-100,html[data-netbox-color-mode=dark] .alert-cyan-100,html[data-netbox-color-mode=light] .alert-cyan-100{color:#536265;background-color:#f5fdfe;border-color:#f1fcfe}html .alert-cyan-100 .alert-link,html[data-netbox-color-mode=dark] .alert-cyan-100 .alert-link,html[data-netbox-color-mode=light] .alert-cyan-100 .alert-link{color:#424e51}}@media print{html .alert-cyan-200,html[data-netbox-color-mode=dark] .alert-cyan-200,html[data-netbox-color-mode=light] .alert-cyan-200{color:#3f5e64;background-color:#ecfbfe;border-color:#e2f9fd}html .alert-cyan-200 .alert-link,html[data-netbox-color-mode=dark] .alert-cyan-200 .alert-link,html[data-netbox-color-mode=light] .alert-cyan-200 .alert-link{color:#324b50}}@media print{html .alert-cyan-300,html[data-netbox-color-mode=dark] .alert-cyan-300,html[data-netbox-color-mode=light] .alert-cyan-300{color:#2c5962;background-color:#e2f9fd;border-color:#d4f5fc}html .alert-cyan-300 .alert-link,html[data-netbox-color-mode=dark] .alert-cyan-300 .alert-link,html[data-netbox-color-mode=light] .alert-cyan-300 .alert-link{color:#23474e}}@media print{html .alert-cyan-400,html[data-netbox-color-mode=dark] .alert-cyan-400,html[data-netbox-color-mode=light] .alert-cyan-400{color:#185561;background-color:#d8f7fd;border-color:#c5f2fb}html .alert-cyan-400 .alert-link,html[data-netbox-color-mode=dark] .alert-cyan-400 .alert-link,html[data-netbox-color-mode=light] .alert-cyan-400 .alert-link{color:#13444e}}@media print{html .alert-cyan-500,html[data-netbox-color-mode=dark] .alert-cyan-500,html[data-netbox-color-mode=light] .alert-cyan-500{color:#055160;background-color:#cff4fc;border-color:#b6effb}html .alert-cyan-500 .alert-link,html[data-netbox-color-mode=dark] .alert-cyan-500 .alert-link,html[data-netbox-color-mode=light] .alert-cyan-500 .alert-link{color:#04414d}}@media print{html .alert-cyan-600,html[data-netbox-color-mode=dark] .alert-cyan-600,html[data-netbox-color-mode=light] .alert-cyan-600{color:#066173;background-color:#ceecf2;border-color:#b6e3ec}html .alert-cyan-600 .alert-link,html[data-netbox-color-mode=dark] .alert-cyan-600 .alert-link,html[data-netbox-color-mode=light] .alert-cyan-600 .alert-link{color:#054e5c}}@media print{html .alert-cyan-700,html[data-netbox-color-mode=dark] .alert-cyan-700,html[data-netbox-color-mode=light] .alert-cyan-700{color:#054956;background-color:#cee4e9;border-color:#b5d7de}html .alert-cyan-700 .alert-link,html[data-netbox-color-mode=dark] .alert-cyan-700 .alert-link,html[data-netbox-color-mode=light] .alert-cyan-700 .alert-link{color:#043a45}}@media print{html .alert-cyan-800,html[data-netbox-color-mode=dark] .alert-cyan-800,html[data-netbox-color-mode=light] .alert-cyan-800{color:#03313a;background-color:#cddcdf;border-color:#b4cbcf}html .alert-cyan-800 .alert-link,html[data-netbox-color-mode=dark] .alert-cyan-800 .alert-link,html[data-netbox-color-mode=light] .alert-cyan-800 .alert-link{color:#02272e}}@media print{html .alert-cyan-900,html[data-netbox-color-mode=dark] .alert-cyan-900,html[data-netbox-color-mode=light] .alert-cyan-900{color:#02181d;background-color:#cdd4d6;border-color:#b3bfc1}html .alert-cyan-900 .alert-link,html[data-netbox-color-mode=dark] .alert-cyan-900 .alert-link,html[data-netbox-color-mode=light] .alert-cyan-900 .alert-link{color:#021317}}@media print{html .alert-indigo-100,html[data-netbox-color-mode=dark] .alert-indigo-100,html[data-netbox-color-mode=light] .alert-indigo-100{color:#5a5365;background-color:#f9f5fe;border-color:#f6f1fe}html .alert-indigo-100 .alert-link,html[data-netbox-color-mode=dark] .alert-indigo-100 .alert-link,html[data-netbox-color-mode=light] .alert-indigo-100 .alert-link{color:#484251}}@media print{html .alert-indigo-200,html[data-netbox-color-mode=dark] .alert-indigo-200,html[data-netbox-color-mode=light] .alert-indigo-200{color:#745f96;background-color:#f3ecfe;border-color:#ede2fe}html .alert-indigo-200 .alert-link,html[data-netbox-color-mode=dark] .alert-indigo-200 .alert-link,html[data-netbox-color-mode=light] .alert-indigo-200 .alert-link{color:#5d4c78}}@media print{html .alert-indigo-300,html[data-netbox-color-mode=dark] .alert-indigo-300,html[data-netbox-color-mode=light] .alert-indigo-300{color:#624394;background-color:#ede2fd;border-color:#e3d4fd}html .alert-indigo-300 .alert-link,html[data-netbox-color-mode=dark] .alert-indigo-300 .alert-link,html[data-netbox-color-mode=light] .alert-indigo-300 .alert-link{color:#4e3676}}@media print{html .alert-indigo-400,html[data-netbox-color-mode=dark] .alert-indigo-400,html[data-netbox-color-mode=light] .alert-indigo-400{color:#502693;background-color:#e7d9fd;border-color:#dac6fc}html .alert-indigo-400 .alert-link,html[data-netbox-color-mode=dark] .alert-indigo-400 .alert-link,html[data-netbox-color-mode=light] .alert-indigo-400 .alert-link{color:#401e76}}@media print{html .alert-indigo-500,html[data-netbox-color-mode=dark] .alert-indigo-500,html[data-netbox-color-mode=light] .alert-indigo-500{color:#3d0a91;background-color:#e0cffc;border-color:#d1b7fb}html .alert-indigo-500 .alert-link,html[data-netbox-color-mode=dark] .alert-indigo-500 .alert-link,html[data-netbox-color-mode=light] .alert-indigo-500 .alert-link{color:#310874}}@media print{html .alert-indigo-600,html[data-netbox-color-mode=dark] .alert-indigo-600,html[data-netbox-color-mode=light] .alert-indigo-600{color:#310874;background-color:#dccff3;border-color:#cbb6ed}html .alert-indigo-600 .alert-link,html[data-netbox-color-mode=dark] .alert-indigo-600 .alert-link,html[data-netbox-color-mode=light] .alert-indigo-600 .alert-link{color:#27065d}}@media print{html .alert-indigo-700,html[data-netbox-color-mode=dark] .alert-indigo-700,html[data-netbox-color-mode=light] .alert-indigo-700{color:#250657;background-color:#d8cee9;border-color:#c5b6de}html .alert-indigo-700 .alert-link,html[data-netbox-color-mode=dark] .alert-indigo-700 .alert-link,html[data-netbox-color-mode=light] .alert-indigo-700 .alert-link{color:#1e0546}}@media print{html .alert-indigo-800,html[data-netbox-color-mode=dark] .alert-indigo-800,html[data-netbox-color-mode=light] .alert-indigo-800{color:#19043a;background-color:#d4cddf;border-color:#bfb4d0}html .alert-indigo-800 .alert-link,html[data-netbox-color-mode=dark] .alert-indigo-800 .alert-link,html[data-netbox-color-mode=light] .alert-indigo-800 .alert-link{color:#14032e}}@media print{html .alert-indigo-900,html[data-netbox-color-mode=dark] .alert-indigo-900,html[data-netbox-color-mode=light] .alert-indigo-900{color:#0c021d;background-color:#d0cdd6;border-color:#b9b3c1}html .alert-indigo-900 .alert-link,html[data-netbox-color-mode=dark] .alert-indigo-900 .alert-link,html[data-netbox-color-mode=light] .alert-indigo-900 .alert-link{color:#0a0217}}@media print{html .alert-purple-100,html[data-netbox-color-mode=dark] .alert-purple-100,html[data-netbox-color-mode=light] .alert-purple-100{color:#5a5761;background-color:#f9f7fd;border-color:#f6f4fb}html .alert-purple-100 .alert-link,html[data-netbox-color-mode=dark] .alert-purple-100 .alert-link,html[data-netbox-color-mode=light] .alert-purple-100 .alert-link{color:#48464e}}@media print{html .alert-purple-200,html[data-netbox-color-mode=dark] .alert-purple-200,html[data-netbox-color-mode=light] .alert-purple-200{color:#4f485c;background-color:#f3f0fa;border-color:#eee8f8}html .alert-purple-200 .alert-link,html[data-netbox-color-mode=dark] .alert-purple-200 .alert-link,html[data-netbox-color-mode=light] .alert-purple-200 .alert-link{color:#3f3a4a}}@media print{html .alert-purple-300,html[data-netbox-color-mode=dark] .alert-purple-300,html[data-netbox-color-mode=light] .alert-purple-300{color:#655583;background-color:#eee8f8;border-color:#e5ddf4}html .alert-purple-300 .alert-link,html[data-netbox-color-mode=dark] .alert-purple-300 .alert-link,html[data-netbox-color-mode=light] .alert-purple-300 .alert-link{color:#514469}}@media print{html .alert-purple-400,html[data-netbox-color-mode=dark] .alert-purple-400,html[data-netbox-color-mode=light] .alert-purple-400{color:#543e7b;background-color:#e8e1f5;border-color:#ddd2f0}html .alert-purple-400 .alert-link,html[data-netbox-color-mode=dark] .alert-purple-400 .alert-link,html[data-netbox-color-mode=light] .alert-purple-400 .alert-link{color:#433262}}@media print{html .alert-purple-500,html[data-netbox-color-mode=dark] .alert-purple-500,html[data-netbox-color-mode=light] .alert-purple-500{color:#432874;background-color:#e2d9f3;border-color:#d4c6ec}html .alert-purple-500 .alert-link,html[data-netbox-color-mode=dark] .alert-purple-500 .alert-link,html[data-netbox-color-mode=light] .alert-purple-500 .alert-link{color:#36205d}}@media print{html .alert-purple-600,html[data-netbox-color-mode=dark] .alert-purple-600,html[data-netbox-color-mode=light] .alert-purple-600{color:#35205c;background-color:#ded7eb;border-color:#cdc2e1}html .alert-purple-600 .alert-link,html[data-netbox-color-mode=dark] .alert-purple-600 .alert-link,html[data-netbox-color-mode=light] .alert-purple-600 .alert-link{color:#2a1a4a}}@media print{html .alert-purple-700,html[data-netbox-color-mode=dark] .alert-purple-700,html[data-netbox-color-mode=light] .alert-purple-700{color:#281846;background-color:#d9d4e3;border-color:#c7bfd5}html .alert-purple-700 .alert-link,html[data-netbox-color-mode=dark] .alert-purple-700 .alert-link,html[data-netbox-color-mode=light] .alert-purple-700 .alert-link{color:#201338}}@media print{html .alert-purple-800,html[data-netbox-color-mode=dark] .alert-purple-800,html[data-netbox-color-mode=light] .alert-purple-800{color:#1a102e;background-color:#d5d1db;border-color:#c0baca}html .alert-purple-800 .alert-link,html[data-netbox-color-mode=dark] .alert-purple-800 .alert-link,html[data-netbox-color-mode=light] .alert-purple-800 .alert-link{color:#150d25}}@media print{html .alert-purple-900,html[data-netbox-color-mode=dark] .alert-purple-900,html[data-netbox-color-mode=light] .alert-purple-900{color:#0d0817;background-color:#d0cfd4;border-color:#b9b6be}html .alert-purple-900 .alert-link,html[data-netbox-color-mode=dark] .alert-purple-900 .alert-link,html[data-netbox-color-mode=light] .alert-purple-900 .alert-link{color:#0a0612}}@media print{html .alert-pink-100,html[data-netbox-color-mode=dark] .alert-pink-100,html[data-netbox-color-mode=light] .alert-pink-100{color:#63565c;background-color:#fdf7fa;border-color:#fdf3f8}html .alert-pink-100 .alert-link,html[data-netbox-color-mode=dark] .alert-pink-100 .alert-link,html[data-netbox-color-mode=light] .alert-pink-100 .alert-link{color:#4f454a}}@media print{html .alert-pink-200,html[data-netbox-color-mode=dark] .alert-pink-200,html[data-netbox-color-mode=light] .alert-pink-200{color:#604552;background-color:#fceff5;border-color:#fae6f0}html .alert-pink-200 .alert-link,html[data-netbox-color-mode=dark] .alert-pink-200 .alert-link,html[data-netbox-color-mode=light] .alert-pink-200 .alert-link{color:#4d3742}}@media print{html .alert-pink-300,html[data-netbox-color-mode=dark] .alert-pink-300,html[data-netbox-color-mode=light] .alert-pink-300{color:#8a506d;background-color:#fae7f0;border-color:#f8dae9}html .alert-pink-300 .alert-link,html[data-netbox-color-mode=dark] .alert-pink-300 .alert-link,html[data-netbox-color-mode=light] .alert-pink-300 .alert-link{color:#6e4057}}@media print{html .alert-pink-400,html[data-netbox-color-mode=dark] .alert-pink-400,html[data-netbox-color-mode=light] .alert-pink-400{color:#85375e;background-color:#f8deeb;border-color:#f5cee2}html .alert-pink-400 .alert-link,html[data-netbox-color-mode=dark] .alert-pink-400 .alert-link,html[data-netbox-color-mode=light] .alert-pink-400 .alert-link{color:#6a2c4b}}@media print{html .alert-pink-500,html[data-netbox-color-mode=dark] .alert-pink-500,html[data-netbox-color-mode=light] .alert-pink-500{color:#801f4f;background-color:#f7d6e6;border-color:#f3c2da}html .alert-pink-500 .alert-link,html[data-netbox-color-mode=dark] .alert-pink-500 .alert-link,html[data-netbox-color-mode=light] .alert-pink-500 .alert-link{color:#66193f}}@media print{html .alert-pink-600,html[data-netbox-color-mode=dark] .alert-pink-600,html[data-netbox-color-mode=light] .alert-pink-600{color:#671940;background-color:#eed4e1;border-color:#e6bfd2}html .alert-pink-600 .alert-link,html[data-netbox-color-mode=dark] .alert-pink-600 .alert-link,html[data-netbox-color-mode=light] .alert-pink-600 .alert-link{color:#521433}}@media print{html .alert-pink-700,html[data-netbox-color-mode=dark] .alert-pink-700,html[data-netbox-color-mode=light] .alert-pink-700{color:#4d132f;background-color:#e6d2dc;border-color:#d9bcca}html .alert-pink-700 .alert-link,html[data-netbox-color-mode=dark] .alert-pink-700 .alert-link,html[data-netbox-color-mode=light] .alert-pink-700 .alert-link{color:#3e0f26}}@media print{html .alert-pink-800,html[data-netbox-color-mode=dark] .alert-pink-800,html[data-netbox-color-mode=light] .alert-pink-800{color:#340c20;background-color:#ddd0d7;border-color:#ccb9c2}html .alert-pink-800 .alert-link,html[data-netbox-color-mode=dark] .alert-pink-800 .alert-link,html[data-netbox-color-mode=light] .alert-pink-800 .alert-link{color:#2a0a1a}}@media print{html .alert-pink-900,html[data-netbox-color-mode=dark] .alert-pink-900,html[data-netbox-color-mode=light] .alert-pink-900{color:#1a0610;background-color:#d5ced1;border-color:#bfb6ba}html .alert-pink-900 .alert-link,html[data-netbox-color-mode=dark] .alert-pink-900 .alert-link,html[data-netbox-color-mode=light] .alert-pink-900 .alert-link{color:#15050d}}@media print{@keyframes progress-bar-stripes{0%{background-position-x:1rem}}}@media print{html .progress,html[data-netbox-color-mode=dark] .progress,html[data-netbox-color-mode=light] .progress{display:flex;height:1rem;overflow:hidden;font-size:.75rem;background-color:#e9ecef;border-radius:.375rem}}@media print{html .progress-bar,html[data-netbox-color-mode=dark] .progress-bar,html[data-netbox-color-mode=light] .progress-bar{display:flex;flex-direction:column;justify-content:center;overflow:hidden;color:#fff;text-align:center;white-space:nowrap;background-color:#0d6efd;transition:width .6s ease}}@media print and (prefers-reduced-motion: reduce){html .progress-bar,html[data-netbox-color-mode=dark] .progress-bar,html[data-netbox-color-mode=light] .progress-bar{transition:none}}@media print{html .progress-bar-striped,html[data-netbox-color-mode=dark] .progress-bar-striped,html[data-netbox-color-mode=light] .progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:1rem 1rem}}@media print{html .progress-bar-animated,html[data-netbox-color-mode=dark] .progress-bar-animated,html[data-netbox-color-mode=light] .progress-bar-animated{animation:1s linear infinite progress-bar-stripes}}@media print and (prefers-reduced-motion: reduce){html .progress-bar-animated,html[data-netbox-color-mode=dark] .progress-bar-animated,html[data-netbox-color-mode=light] .progress-bar-animated{animation:none}}@media print{html .list-group,html[data-netbox-color-mode=dark] .list-group,html[data-netbox-color-mode=light] .list-group{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:.375rem}}@media print{html .list-group-numbered,html[data-netbox-color-mode=dark] .list-group-numbered,html[data-netbox-color-mode=light] .list-group-numbered{list-style-type:none;counter-reset:section}html .list-group-numbered>li:before,html[data-netbox-color-mode=dark] .list-group-numbered>li:before,html[data-netbox-color-mode=light] .list-group-numbered>li:before{content:counters(section,".") ". ";counter-increment:section}}@media print{html .list-group-item-action,html[data-netbox-color-mode=dark] .list-group-item-action,html[data-netbox-color-mode=light] .list-group-item-action{width:100%;color:#495057;text-align:inherit}html .list-group-item-action:hover,html .list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-action:focus{z-index:1;color:#495057;text-decoration:none;background-color:#f8f9fa}html .list-group-item-action:active,html[data-netbox-color-mode=dark] .list-group-item-action:active,html[data-netbox-color-mode=light] .list-group-item-action:active{color:#212529;background-color:#e9ecef}}@media print{html .list-group-item,html[data-netbox-color-mode=dark] .list-group-item,html[data-netbox-color-mode=light] .list-group-item{position:relative;display:block;padding:.5rem 1rem;color:#495057;text-decoration:none;background-color:#fff;border:1px solid rgba(0,0,0,.125)}html .list-group-item:first-child,html[data-netbox-color-mode=dark] .list-group-item:first-child,html[data-netbox-color-mode=light] .list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}html .list-group-item:last-child,html[data-netbox-color-mode=dark] .list-group-item:last-child,html[data-netbox-color-mode=light] .list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}html .list-group-item.disabled,html .list-group-item:disabled,html[data-netbox-color-mode=dark] .list-group-item.disabled,html[data-netbox-color-mode=dark] .list-group-item:disabled,html[data-netbox-color-mode=light] .list-group-item.disabled,html[data-netbox-color-mode=light] .list-group-item:disabled{color:#adb5bd;pointer-events:none;background-color:#fff}html .list-group-item.active,html[data-netbox-color-mode=dark] .list-group-item.active,html[data-netbox-color-mode=light] .list-group-item.active{z-index:2;color:#fff;background-color:#0d6efd;border-color:#0d6efd}html .list-group-item+html .list-group-item,html .list-group-item+html[data-netbox-color-mode=dark] .list-group-item,html .list-group-item+html[data-netbox-color-mode=light] .list-group-item,html[data-netbox-color-mode=dark] .list-group-item+html .list-group-item,html[data-netbox-color-mode=dark] .list-group-item+html[data-netbox-color-mode=dark] .list-group-item,html[data-netbox-color-mode=dark] .list-group-item+html[data-netbox-color-mode=light] .list-group-item,html[data-netbox-color-mode=light] .list-group-item+html .list-group-item,html[data-netbox-color-mode=light] .list-group-item+html[data-netbox-color-mode=dark] .list-group-item,html[data-netbox-color-mode=light] .list-group-item+html[data-netbox-color-mode=light] .list-group-item{border-top-width:0}html .list-group-item+html .list-group-item.active,html .list-group-item+html[data-netbox-color-mode=dark] .list-group-item.active,html .list-group-item+html[data-netbox-color-mode=light] .list-group-item.active,html[data-netbox-color-mode=dark] .list-group-item+html .list-group-item.active,html[data-netbox-color-mode=dark] .list-group-item+html[data-netbox-color-mode=dark] .list-group-item.active,html[data-netbox-color-mode=dark] .list-group-item+html[data-netbox-color-mode=light] .list-group-item.active,html[data-netbox-color-mode=light] .list-group-item+html .list-group-item.active,html[data-netbox-color-mode=light] .list-group-item+html[data-netbox-color-mode=dark] .list-group-item.active,html[data-netbox-color-mode=light] .list-group-item+html[data-netbox-color-mode=light] .list-group-item.active{margin-top:-1px;border-top-width:1px}}@media print{html .list-group-horizontal,html[data-netbox-color-mode=dark] .list-group-horizontal,html[data-netbox-color-mode=light] .list-group-horizontal{flex-direction:row}html .list-group-horizontal>.list-group-item:first-child,html[data-netbox-color-mode=dark] .list-group-horizontal>.list-group-item:first-child,html[data-netbox-color-mode=light] .list-group-horizontal>.list-group-item:first-child{border-bottom-left-radius:.375rem;border-top-right-radius:0}html .list-group-horizontal>.list-group-item:last-child,html[data-netbox-color-mode=dark] .list-group-horizontal>.list-group-item:last-child,html[data-netbox-color-mode=light] .list-group-horizontal>.list-group-item:last-child{border-top-right-radius:.375rem;border-bottom-left-radius:0}html .list-group-horizontal>.list-group-item.active,html[data-netbox-color-mode=dark] .list-group-horizontal>.list-group-item.active,html[data-netbox-color-mode=light] .list-group-horizontal>.list-group-item.active{margin-top:0}html .list-group-horizontal>.list-group-item+.list-group-item,html[data-netbox-color-mode=dark] .list-group-horizontal>.list-group-item+.list-group-item,html[data-netbox-color-mode=light] .list-group-horizontal>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}html .list-group-horizontal>.list-group-item+.list-group-item.active,html[data-netbox-color-mode=dark] .list-group-horizontal>.list-group-item+.list-group-item.active,html[data-netbox-color-mode=light] .list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media print and (min-width: 576px){html .list-group-horizontal-sm,html[data-netbox-color-mode=dark] .list-group-horizontal-sm,html[data-netbox-color-mode=light] .list-group-horizontal-sm{flex-direction:row}html .list-group-horizontal-sm>.list-group-item:first-child,html[data-netbox-color-mode=dark] .list-group-horizontal-sm>.list-group-item:first-child,html[data-netbox-color-mode=light] .list-group-horizontal-sm>.list-group-item:first-child{border-bottom-left-radius:.375rem;border-top-right-radius:0}html .list-group-horizontal-sm>.list-group-item:last-child,html[data-netbox-color-mode=dark] .list-group-horizontal-sm>.list-group-item:last-child,html[data-netbox-color-mode=light] .list-group-horizontal-sm>.list-group-item:last-child{border-top-right-radius:.375rem;border-bottom-left-radius:0}html .list-group-horizontal-sm>.list-group-item.active,html[data-netbox-color-mode=dark] .list-group-horizontal-sm>.list-group-item.active,html[data-netbox-color-mode=light] .list-group-horizontal-sm>.list-group-item.active{margin-top:0}html .list-group-horizontal-sm>.list-group-item+.list-group-item,html[data-netbox-color-mode=dark] .list-group-horizontal-sm>.list-group-item+.list-group-item,html[data-netbox-color-mode=light] .list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}html .list-group-horizontal-sm>.list-group-item+.list-group-item.active,html[data-netbox-color-mode=dark] .list-group-horizontal-sm>.list-group-item+.list-group-item.active,html[data-netbox-color-mode=light] .list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media print and (min-width: 768px){html .list-group-horizontal-md,html[data-netbox-color-mode=dark] .list-group-horizontal-md,html[data-netbox-color-mode=light] .list-group-horizontal-md{flex-direction:row}html .list-group-horizontal-md>.list-group-item:first-child,html[data-netbox-color-mode=dark] .list-group-horizontal-md>.list-group-item:first-child,html[data-netbox-color-mode=light] .list-group-horizontal-md>.list-group-item:first-child{border-bottom-left-radius:.375rem;border-top-right-radius:0}html .list-group-horizontal-md>.list-group-item:last-child,html[data-netbox-color-mode=dark] .list-group-horizontal-md>.list-group-item:last-child,html[data-netbox-color-mode=light] .list-group-horizontal-md>.list-group-item:last-child{border-top-right-radius:.375rem;border-bottom-left-radius:0}html .list-group-horizontal-md>.list-group-item.active,html[data-netbox-color-mode=dark] .list-group-horizontal-md>.list-group-item.active,html[data-netbox-color-mode=light] .list-group-horizontal-md>.list-group-item.active{margin-top:0}html .list-group-horizontal-md>.list-group-item+.list-group-item,html[data-netbox-color-mode=dark] .list-group-horizontal-md>.list-group-item+.list-group-item,html[data-netbox-color-mode=light] .list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}html .list-group-horizontal-md>.list-group-item+.list-group-item.active,html[data-netbox-color-mode=dark] .list-group-horizontal-md>.list-group-item+.list-group-item.active,html[data-netbox-color-mode=light] .list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media print and (min-width: 992px){html .list-group-horizontal-lg,html[data-netbox-color-mode=dark] .list-group-horizontal-lg,html[data-netbox-color-mode=light] .list-group-horizontal-lg{flex-direction:row}html .list-group-horizontal-lg>.list-group-item:first-child,html[data-netbox-color-mode=dark] .list-group-horizontal-lg>.list-group-item:first-child,html[data-netbox-color-mode=light] .list-group-horizontal-lg>.list-group-item:first-child{border-bottom-left-radius:.375rem;border-top-right-radius:0}html .list-group-horizontal-lg>.list-group-item:last-child,html[data-netbox-color-mode=dark] .list-group-horizontal-lg>.list-group-item:last-child,html[data-netbox-color-mode=light] .list-group-horizontal-lg>.list-group-item:last-child{border-top-right-radius:.375rem;border-bottom-left-radius:0}html .list-group-horizontal-lg>.list-group-item.active,html[data-netbox-color-mode=dark] .list-group-horizontal-lg>.list-group-item.active,html[data-netbox-color-mode=light] .list-group-horizontal-lg>.list-group-item.active{margin-top:0}html .list-group-horizontal-lg>.list-group-item+.list-group-item,html[data-netbox-color-mode=dark] .list-group-horizontal-lg>.list-group-item+.list-group-item,html[data-netbox-color-mode=light] .list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}html .list-group-horizontal-lg>.list-group-item+.list-group-item.active,html[data-netbox-color-mode=dark] .list-group-horizontal-lg>.list-group-item+.list-group-item.active,html[data-netbox-color-mode=light] .list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media print and (min-width: 1200px){html .list-group-horizontal-xl,html[data-netbox-color-mode=dark] .list-group-horizontal-xl,html[data-netbox-color-mode=light] .list-group-horizontal-xl{flex-direction:row}html .list-group-horizontal-xl>.list-group-item:first-child,html[data-netbox-color-mode=dark] .list-group-horizontal-xl>.list-group-item:first-child,html[data-netbox-color-mode=light] .list-group-horizontal-xl>.list-group-item:first-child{border-bottom-left-radius:.375rem;border-top-right-radius:0}html .list-group-horizontal-xl>.list-group-item:last-child,html[data-netbox-color-mode=dark] .list-group-horizontal-xl>.list-group-item:last-child,html[data-netbox-color-mode=light] .list-group-horizontal-xl>.list-group-item:last-child{border-top-right-radius:.375rem;border-bottom-left-radius:0}html .list-group-horizontal-xl>.list-group-item.active,html[data-netbox-color-mode=dark] .list-group-horizontal-xl>.list-group-item.active,html[data-netbox-color-mode=light] .list-group-horizontal-xl>.list-group-item.active{margin-top:0}html .list-group-horizontal-xl>.list-group-item+.list-group-item,html[data-netbox-color-mode=dark] .list-group-horizontal-xl>.list-group-item+.list-group-item,html[data-netbox-color-mode=light] .list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}html .list-group-horizontal-xl>.list-group-item+.list-group-item.active,html[data-netbox-color-mode=dark] .list-group-horizontal-xl>.list-group-item+.list-group-item.active,html[data-netbox-color-mode=light] .list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media print and (min-width: 1400px){html .list-group-horizontal-xxl,html[data-netbox-color-mode=dark] .list-group-horizontal-xxl,html[data-netbox-color-mode=light] .list-group-horizontal-xxl{flex-direction:row}html .list-group-horizontal-xxl>.list-group-item:first-child,html[data-netbox-color-mode=dark] .list-group-horizontal-xxl>.list-group-item:first-child,html[data-netbox-color-mode=light] .list-group-horizontal-xxl>.list-group-item:first-child{border-bottom-left-radius:.375rem;border-top-right-radius:0}html .list-group-horizontal-xxl>.list-group-item:last-child,html[data-netbox-color-mode=dark] .list-group-horizontal-xxl>.list-group-item:last-child,html[data-netbox-color-mode=light] .list-group-horizontal-xxl>.list-group-item:last-child{border-top-right-radius:.375rem;border-bottom-left-radius:0}html .list-group-horizontal-xxl>.list-group-item.active,html[data-netbox-color-mode=dark] .list-group-horizontal-xxl>.list-group-item.active,html[data-netbox-color-mode=light] .list-group-horizontal-xxl>.list-group-item.active{margin-top:0}html .list-group-horizontal-xxl>.list-group-item+.list-group-item,html[data-netbox-color-mode=dark] .list-group-horizontal-xxl>.list-group-item+.list-group-item,html[data-netbox-color-mode=light] .list-group-horizontal-xxl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}html .list-group-horizontal-xxl>.list-group-item+.list-group-item.active,html[data-netbox-color-mode=dark] .list-group-horizontal-xxl>.list-group-item+.list-group-item.active,html[data-netbox-color-mode=light] .list-group-horizontal-xxl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media print{html .list-group-flush,html[data-netbox-color-mode=dark] .list-group-flush,html[data-netbox-color-mode=light] .list-group-flush{border-radius:0}html .list-group-flush>.list-group-item,html[data-netbox-color-mode=dark] .list-group-flush>.list-group-item,html[data-netbox-color-mode=light] .list-group-flush>.list-group-item{border-width:0 0 1px}html .list-group-flush>.list-group-item:last-child,html[data-netbox-color-mode=dark] .list-group-flush>.list-group-item:last-child,html[data-netbox-color-mode=light] .list-group-flush>.list-group-item:last-child{border-bottom-width:0}}@media print{html .list-group-item-primary,html[data-netbox-color-mode=dark] .list-group-item-primary,html[data-netbox-color-mode=light] .list-group-item-primary{color:#1f496e;background-color:#d6e4f1}html .list-group-item-primary.list-group-item-action:hover,html .list-group-item-primary.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-primary.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-primary.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-primary.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-primary.list-group-item-action:focus{color:#1f496e;background-color:#c1cdd9}html .list-group-item-primary.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-primary.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#1f496e;border-color:#1f496e}}@media print{html .list-group-item-secondary,html[data-netbox-color-mode=dark] .list-group-item-secondary,html[data-netbox-color-mode=light] .list-group-item-secondary{color:#41464b;background-color:#e2e3e5}html .list-group-item-secondary.list-group-item-action:hover,html .list-group-item-secondary.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-secondary.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-secondary.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-secondary.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-secondary.list-group-item-action:focus{color:#41464b;background-color:#cbccce}html .list-group-item-secondary.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-secondary.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#41464b;border-color:#41464b}}@media print{html .list-group-item-success,html[data-netbox-color-mode=dark] .list-group-item-success,html[data-netbox-color-mode=light] .list-group-item-success{color:#0f5132;background-color:#d1e7dd}html .list-group-item-success.list-group-item-action:hover,html .list-group-item-success.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-success.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-success.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-success.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-success.list-group-item-action:focus{color:#0f5132;background-color:#bcd0c7}html .list-group-item-success.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-success.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-success.list-group-item-action.active{color:#fff;background-color:#0f5132;border-color:#0f5132}}@media print{html .list-group-item-info,html[data-netbox-color-mode=dark] .list-group-item-info,html[data-netbox-color-mode=light] .list-group-item-info{color:#055160;background-color:#cff4fc}html .list-group-item-info.list-group-item-action:hover,html .list-group-item-info.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-info.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-info.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-info.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-info.list-group-item-action:focus{color:#055160;background-color:#badce3}html .list-group-item-info.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-info.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-info.list-group-item-action.active{color:#fff;background-color:#055160;border-color:#055160}}@media print{html .list-group-item-warning,html[data-netbox-color-mode=dark] .list-group-item-warning,html[data-netbox-color-mode=light] .list-group-item-warning{color:#664d03;background-color:#fff3cd}html .list-group-item-warning.list-group-item-action:hover,html .list-group-item-warning.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-warning.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-warning.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-warning.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-warning.list-group-item-action:focus{color:#664d03;background-color:#e6dbb9}html .list-group-item-warning.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-warning.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#664d03;border-color:#664d03}}@media print{html .list-group-item-danger,html[data-netbox-color-mode=dark] .list-group-item-danger,html[data-netbox-color-mode=light] .list-group-item-danger{color:#842029;background-color:#f8d7da}html .list-group-item-danger.list-group-item-action:hover,html .list-group-item-danger.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-danger.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-danger.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-danger.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-danger.list-group-item-action:focus{color:#842029;background-color:#dfc2c4}html .list-group-item-danger.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-danger.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#842029;border-color:#842029}}@media print{html .list-group-item-light,html[data-netbox-color-mode=dark] .list-group-item-light,html[data-netbox-color-mode=light] .list-group-item-light{color:#636464;background-color:#fefefe}html .list-group-item-light.list-group-item-action:hover,html .list-group-item-light.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-light.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-light.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-light.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-light.list-group-item-action:focus{color:#636464;background-color:#e5e5e5}html .list-group-item-light.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-light.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-light.list-group-item-action.active{color:#fff;background-color:#636464;border-color:#636464}}@media print{html .list-group-item-dark,html[data-netbox-color-mode=dark] .list-group-item-dark,html[data-netbox-color-mode=light] .list-group-item-dark{color:#141619;background-color:#d3d3d4}html .list-group-item-dark.list-group-item-action:hover,html .list-group-item-dark.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-dark.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-dark.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-dark.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-dark.list-group-item-action:focus{color:#141619;background-color:#bebebf}html .list-group-item-dark.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-dark.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#141619;border-color:#141619}}@media print{html .list-group-item-red,html[data-netbox-color-mode=dark] .list-group-item-red,html[data-netbox-color-mode=light] .list-group-item-red{color:#842029;background-color:#f8d7da}html .list-group-item-red.list-group-item-action:hover,html .list-group-item-red.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-red.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-red.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-red.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-red.list-group-item-action:focus{color:#842029;background-color:#dfc2c4}html .list-group-item-red.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-red.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-red.list-group-item-action.active{color:#fff;background-color:#842029;border-color:#842029}}@media print{html .list-group-item-yellow,html[data-netbox-color-mode=dark] .list-group-item-yellow,html[data-netbox-color-mode=light] .list-group-item-yellow{color:#664d03;background-color:#fff3cd}html .list-group-item-yellow.list-group-item-action:hover,html .list-group-item-yellow.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-yellow.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-yellow.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-yellow.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-yellow.list-group-item-action:focus{color:#664d03;background-color:#e6dbb9}html .list-group-item-yellow.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-yellow.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-yellow.list-group-item-action.active{color:#fff;background-color:#664d03;border-color:#664d03}}@media print{html .list-group-item-green,html[data-netbox-color-mode=dark] .list-group-item-green,html[data-netbox-color-mode=light] .list-group-item-green{color:#0f5132;background-color:#d1e7dd}html .list-group-item-green.list-group-item-action:hover,html .list-group-item-green.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-green.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-green.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-green.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-green.list-group-item-action:focus{color:#0f5132;background-color:#bcd0c7}html .list-group-item-green.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-green.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-green.list-group-item-action.active{color:#fff;background-color:#0f5132;border-color:#0f5132}}@media print{html .list-group-item-blue,html[data-netbox-color-mode=dark] .list-group-item-blue,html[data-netbox-color-mode=light] .list-group-item-blue{color:#084298;background-color:#cfe2ff}html .list-group-item-blue.list-group-item-action:hover,html .list-group-item-blue.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-blue.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-blue.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-blue.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-blue.list-group-item-action:focus{color:#084298;background-color:#bacbe6}html .list-group-item-blue.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-blue.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-blue.list-group-item-action.active{color:#fff;background-color:#084298;border-color:#084298}}@media print{html .list-group-item-cyan,html[data-netbox-color-mode=dark] .list-group-item-cyan,html[data-netbox-color-mode=light] .list-group-item-cyan{color:#055160;background-color:#cff4fc}html .list-group-item-cyan.list-group-item-action:hover,html .list-group-item-cyan.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-cyan.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-cyan.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-cyan.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-cyan.list-group-item-action:focus{color:#055160;background-color:#badce3}html .list-group-item-cyan.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-cyan.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-cyan.list-group-item-action.active{color:#fff;background-color:#055160;border-color:#055160}}@media print{html .list-group-item-indigo,html[data-netbox-color-mode=dark] .list-group-item-indigo,html[data-netbox-color-mode=light] .list-group-item-indigo{color:#3d0a91;background-color:#e0cffc}html .list-group-item-indigo.list-group-item-action:hover,html .list-group-item-indigo.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-indigo.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-indigo.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-indigo.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-indigo.list-group-item-action:focus{color:#3d0a91;background-color:#cabae3}html .list-group-item-indigo.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-indigo.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-indigo.list-group-item-action.active{color:#fff;background-color:#3d0a91;border-color:#3d0a91}}@media print{html .list-group-item-purple,html[data-netbox-color-mode=dark] .list-group-item-purple,html[data-netbox-color-mode=light] .list-group-item-purple{color:#432874;background-color:#e2d9f3}html .list-group-item-purple.list-group-item-action:hover,html .list-group-item-purple.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-purple.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-purple.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-purple.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-purple.list-group-item-action:focus{color:#432874;background-color:#cbc3db}html .list-group-item-purple.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-purple.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-purple.list-group-item-action.active{color:#fff;background-color:#432874;border-color:#432874}}@media print{html .list-group-item-pink,html[data-netbox-color-mode=dark] .list-group-item-pink,html[data-netbox-color-mode=light] .list-group-item-pink{color:#801f4f;background-color:#f7d6e6}html .list-group-item-pink.list-group-item-action:hover,html .list-group-item-pink.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-pink.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-pink.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-pink.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-pink.list-group-item-action:focus{color:#801f4f;background-color:#dec1cf}html .list-group-item-pink.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-pink.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-pink.list-group-item-action.active{color:#fff;background-color:#801f4f;border-color:#801f4f}}@media print{html .list-group-item-darker,html[data-netbox-color-mode=dark] .list-group-item-darker,html[data-netbox-color-mode=light] .list-group-item-darker{color:#101314;background-color:#d1d2d3}html .list-group-item-darker.list-group-item-action:hover,html .list-group-item-darker.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-darker.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-darker.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-darker.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-darker.list-group-item-action:focus{color:#101314;background-color:#bcbdbe}html .list-group-item-darker.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-darker.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-darker.list-group-item-action.active{color:#fff;background-color:#101314;border-color:#101314}}@media print{html .list-group-item-darkest,html[data-netbox-color-mode=dark] .list-group-item-darkest,html[data-netbox-color-mode=light] .list-group-item-darkest{color:#0e1011;background-color:#d1d1d2}html .list-group-item-darkest.list-group-item-action:hover,html .list-group-item-darkest.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-darkest.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-darkest.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-darkest.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-darkest.list-group-item-action:focus{color:#0e1011;background-color:#bcbcbd}html .list-group-item-darkest.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-darkest.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-darkest.list-group-item-action.active{color:#fff;background-color:#0e1011;border-color:#0e1011}}@media print{html .list-group-item-gray,html[data-netbox-color-mode=dark] .list-group-item-gray,html[data-netbox-color-mode=light] .list-group-item-gray{color:#525557;background-color:#f5f6f8}html .list-group-item-gray.list-group-item-action:hover,html .list-group-item-gray.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-gray.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-gray.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-gray.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-gray.list-group-item-action:focus{color:#525557;background-color:#dddddf}html .list-group-item-gray.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-gray.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-gray.list-group-item-action.active{color:#fff;background-color:#525557;border-color:#525557}}@media print{html .list-group-item-gray-100,html[data-netbox-color-mode=dark] .list-group-item-gray-100,html[data-netbox-color-mode=light] .list-group-item-gray-100{color:#636464;background-color:#fefefe}html .list-group-item-gray-100.list-group-item-action:hover,html .list-group-item-gray-100.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-gray-100.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-gray-100.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-gray-100.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-gray-100.list-group-item-action:focus{color:#636464;background-color:#e5e5e5}html .list-group-item-gray-100.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-gray-100.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-gray-100.list-group-item-action.active{color:#fff;background-color:#636464;border-color:#636464}}@media print{html .list-group-item-gray-200,html[data-netbox-color-mode=dark] .list-group-item-gray-200,html[data-netbox-color-mode=light] .list-group-item-gray-200{color:#5d5e60;background-color:#fbfbfc}html .list-group-item-gray-200.list-group-item-action:hover,html .list-group-item-gray-200.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-gray-200.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-gray-200.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-gray-200.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-gray-200.list-group-item-action:focus{color:#5d5e60;background-color:#e2e2e3}html .list-group-item-gray-200.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-gray-200.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-gray-200.list-group-item-action.active{color:#fff;background-color:#5d5e60;border-color:#5d5e60}}@media print{html .list-group-item-gray-300,html[data-netbox-color-mode=dark] .list-group-item-gray-300,html[data-netbox-color-mode=light] .list-group-item-gray-300{color:#595a5c;background-color:#f8f9fa}html .list-group-item-gray-300.list-group-item-action:hover,html .list-group-item-gray-300.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-gray-300.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-gray-300.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-gray-300.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-gray-300.list-group-item-action:focus{color:#595a5c;background-color:#dfe0e1}html .list-group-item-gray-300.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-gray-300.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-gray-300.list-group-item-action.active{color:#fff;background-color:#595a5c;border-color:#595a5c}}@media print{html .list-group-item-gray-400,html[data-netbox-color-mode=dark] .list-group-item-gray-400,html[data-netbox-color-mode=light] .list-group-item-gray-400{color:#525557;background-color:#f5f6f8}html .list-group-item-gray-400.list-group-item-action:hover,html .list-group-item-gray-400.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-gray-400.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-gray-400.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-gray-400.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-gray-400.list-group-item-action:focus{color:#525557;background-color:#dddddf}html .list-group-item-gray-400.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-gray-400.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-gray-400.list-group-item-action.active{color:#fff;background-color:#525557;border-color:#525557}}@media print{html .list-group-item-gray-500,html[data-netbox-color-mode=dark] .list-group-item-gray-500,html[data-netbox-color-mode=light] .list-group-item-gray-500{color:#686d71;background-color:#eff0f2}html .list-group-item-gray-500.list-group-item-action:hover,html .list-group-item-gray-500.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-gray-500.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-gray-500.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-gray-500.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-gray-500.list-group-item-action:focus{color:#686d71;background-color:#d7d8da}html .list-group-item-gray-500.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-gray-500.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-gray-500.list-group-item-action.active{color:#fff;background-color:#686d71;border-color:#686d71}}@media print{html .list-group-item-gray-600,html[data-netbox-color-mode=dark] .list-group-item-gray-600,html[data-netbox-color-mode=light] .list-group-item-gray-600{color:#41464b;background-color:#e2e3e5}html .list-group-item-gray-600.list-group-item-action:hover,html .list-group-item-gray-600.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-gray-600.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-gray-600.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-gray-600.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-gray-600.list-group-item-action:focus{color:#41464b;background-color:#cbccce}html .list-group-item-gray-600.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-gray-600.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-gray-600.list-group-item-action.active{color:#fff;background-color:#41464b;border-color:#41464b}}@media print{html .list-group-item-gray-700,html[data-netbox-color-mode=dark] .list-group-item-gray-700,html[data-netbox-color-mode=light] .list-group-item-gray-700{color:#2c3034;background-color:#dbdcdd}html .list-group-item-gray-700.list-group-item-action:hover,html .list-group-item-gray-700.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-gray-700.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-gray-700.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-gray-700.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-gray-700.list-group-item-action:focus{color:#2c3034;background-color:#c5c6c7}html .list-group-item-gray-700.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-gray-700.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-gray-700.list-group-item-action.active{color:#fff;background-color:#2c3034;border-color:#2c3034}}@media print{html .list-group-item-gray-800,html[data-netbox-color-mode=dark] .list-group-item-gray-800,html[data-netbox-color-mode=light] .list-group-item-gray-800{color:#1f2326;background-color:#d6d8d9}html .list-group-item-gray-800.list-group-item-action:hover,html .list-group-item-gray-800.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-gray-800.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-gray-800.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-gray-800.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-gray-800.list-group-item-action:focus{color:#1f2326;background-color:#c1c2c3}html .list-group-item-gray-800.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-gray-800.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-gray-800.list-group-item-action.active{color:#fff;background-color:#1f2326;border-color:#1f2326}}@media print{html .list-group-item-gray-900,html[data-netbox-color-mode=dark] .list-group-item-gray-900,html[data-netbox-color-mode=light] .list-group-item-gray-900{color:#141619;background-color:#d3d3d4}html .list-group-item-gray-900.list-group-item-action:hover,html .list-group-item-gray-900.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-gray-900.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-gray-900.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-gray-900.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-gray-900.list-group-item-action:focus{color:#141619;background-color:#bebebf}html .list-group-item-gray-900.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-gray-900.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-gray-900.list-group-item-action.active{color:#fff;background-color:#141619;border-color:#141619}}@media print{html .list-group-item-red-100,html[data-netbox-color-mode=dark] .list-group-item-red-100,html[data-netbox-color-mode=light] .list-group-item-red-100{color:#635657;background-color:#fef7f8}html .list-group-item-red-100.list-group-item-action:hover,html .list-group-item-red-100.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-red-100.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-red-100.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-red-100.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-red-100.list-group-item-action:focus{color:#635657;background-color:#e5dedf}html .list-group-item-red-100.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-red-100.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-red-100.list-group-item-action.active{color:#fff;background-color:#635657;border-color:#635657}}@media print{html .list-group-item-red-200,html[data-netbox-color-mode=dark] .list-group-item-red-200,html[data-netbox-color-mode=light] .list-group-item-red-200{color:#604648;background-color:#fceff0}html .list-group-item-red-200.list-group-item-action:hover,html .list-group-item-red-200.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-red-200.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-red-200.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-red-200.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-red-200.list-group-item-action:focus{color:#604648;background-color:#e3d7d8}html .list-group-item-red-200.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-red-200.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-red-200.list-group-item-action.active{color:#fff;background-color:#604648;border-color:#604648}}@media print{html .list-group-item-red-300,html[data-netbox-color-mode=dark] .list-group-item-red-300,html[data-netbox-color-mode=light] .list-group-item-red-300{color:#8c5056;background-color:#fbe7e9}html .list-group-item-red-300.list-group-item-action:hover,html .list-group-item-red-300.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-red-300.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-red-300.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-red-300.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-red-300.list-group-item-action:focus{color:#8c5056;background-color:#e2d0d2}html .list-group-item-red-300.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-red-300.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-red-300.list-group-item-action.active{color:#fff;background-color:#8c5056;border-color:#8c5056}}@media print{html .list-group-item-red-400,html[data-netbox-color-mode=dark] .list-group-item-red-400,html[data-netbox-color-mode=light] .list-group-item-red-400{color:#883840;background-color:#f9dfe1}html .list-group-item-red-400.list-group-item-action:hover,html .list-group-item-red-400.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-red-400.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-red-400.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-red-400.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-red-400.list-group-item-action:focus{color:#883840;background-color:#e0c9cb}html .list-group-item-red-400.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-red-400.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-red-400.list-group-item-action.active{color:#fff;background-color:#883840;border-color:#883840}}@media print{html .list-group-item-red-500,html[data-netbox-color-mode=dark] .list-group-item-red-500,html[data-netbox-color-mode=light] .list-group-item-red-500{color:#842029;background-color:#f8d7da}html .list-group-item-red-500.list-group-item-action:hover,html .list-group-item-red-500.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-red-500.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-red-500.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-red-500.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-red-500.list-group-item-action:focus{color:#842029;background-color:#dfc2c4}html .list-group-item-red-500.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-red-500.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-red-500.list-group-item-action.active{color:#fff;background-color:#842029;border-color:#842029}}@media print{html .list-group-item-red-600,html[data-netbox-color-mode=dark] .list-group-item-red-600,html[data-netbox-color-mode=light] .list-group-item-red-600{color:#6a1921;background-color:#efd4d7}html .list-group-item-red-600.list-group-item-action:hover,html .list-group-item-red-600.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-red-600.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-red-600.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-red-600.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-red-600.list-group-item-action:focus{color:#6a1921;background-color:#d7bfc2}html .list-group-item-red-600.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-red-600.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-red-600.list-group-item-action.active{color:#fff;background-color:#6a1921;border-color:#6a1921}}@media print{html .list-group-item-red-700,html[data-netbox-color-mode=dark] .list-group-item-red-700,html[data-netbox-color-mode=light] .list-group-item-red-700{color:#4f1319;background-color:#e6d2d4}html .list-group-item-red-700.list-group-item-action:hover,html .list-group-item-red-700.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-red-700.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-red-700.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-red-700.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-red-700.list-group-item-action:focus{color:#4f1319;background-color:#cfbdbf}html .list-group-item-red-700.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-red-700.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-red-700.list-group-item-action.active{color:#fff;background-color:#4f1319;border-color:#4f1319}}@media print{html .list-group-item-red-800,html[data-netbox-color-mode=dark] .list-group-item-red-800,html[data-netbox-color-mode=light] .list-group-item-red-800{color:#350d11;background-color:#ded0d2}html .list-group-item-red-800.list-group-item-action:hover,html .list-group-item-red-800.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-red-800.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-red-800.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-red-800.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-red-800.list-group-item-action:focus{color:#350d11;background-color:#c8bbbd}html .list-group-item-red-800.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-red-800.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-red-800.list-group-item-action.active{color:#fff;background-color:#350d11;border-color:#350d11}}@media print{html .list-group-item-red-900,html[data-netbox-color-mode=dark] .list-group-item-red-900,html[data-netbox-color-mode=light] .list-group-item-red-900{color:#1a0708;background-color:#d5cecf}html .list-group-item-red-900.list-group-item-action:hover,html .list-group-item-red-900.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-red-900.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-red-900.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-red-900.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-red-900.list-group-item-action:focus{color:#1a0708;background-color:#c0b9ba}html .list-group-item-red-900.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-red-900.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-red-900.list-group-item-action.active{color:#fff;background-color:#1a0708;border-color:#1a0708}}@media print{html .list-group-item-yellow-100,html[data-netbox-color-mode=dark] .list-group-item-yellow-100,html[data-netbox-color-mode=light] .list-group-item-yellow-100{color:#666152;background-color:#fffdf5}html .list-group-item-yellow-100.list-group-item-action:hover,html .list-group-item-yellow-100.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-yellow-100.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-yellow-100.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-yellow-100.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-yellow-100.list-group-item-action:focus{color:#666152;background-color:#e6e4dd}html .list-group-item-yellow-100.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-yellow-100.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-yellow-100.list-group-item-action.active{color:#fff;background-color:#666152;border-color:#666152}}@media print{html .list-group-item-yellow-200,html[data-netbox-color-mode=dark] .list-group-item-yellow-200,html[data-netbox-color-mode=light] .list-group-item-yellow-200{color:#665c3e;background-color:#fffaeb}html .list-group-item-yellow-200.list-group-item-action:hover,html .list-group-item-yellow-200.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-yellow-200.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-yellow-200.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-yellow-200.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-yellow-200.list-group-item-action:focus{color:#665c3e;background-color:#e6e1d4}html .list-group-item-yellow-200.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-yellow-200.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-yellow-200.list-group-item-action.active{color:#fff;background-color:#665c3e;border-color:#665c3e}}@media print{html .list-group-item-yellow-300,html[data-netbox-color-mode=dark] .list-group-item-yellow-300,html[data-netbox-color-mode=light] .list-group-item-yellow-300{color:#66572a;background-color:#fff8e1}html .list-group-item-yellow-300.list-group-item-action:hover,html .list-group-item-yellow-300.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-yellow-300.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-yellow-300.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-yellow-300.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-yellow-300.list-group-item-action:focus{color:#66572a;background-color:#e6dfcb}html .list-group-item-yellow-300.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-yellow-300.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-yellow-300.list-group-item-action.active{color:#fff;background-color:#66572a;border-color:#66572a}}@media print{html .list-group-item-yellow-400,html[data-netbox-color-mode=dark] .list-group-item-yellow-400,html[data-netbox-color-mode=light] .list-group-item-yellow-400{color:#665217;background-color:#fff5d7}html .list-group-item-yellow-400.list-group-item-action:hover,html .list-group-item-yellow-400.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-yellow-400.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-yellow-400.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-yellow-400.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-yellow-400.list-group-item-action:focus{color:#665217;background-color:#e6ddc2}html .list-group-item-yellow-400.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-yellow-400.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-yellow-400.list-group-item-action.active{color:#fff;background-color:#665217;border-color:#665217}}@media print{html .list-group-item-yellow-500,html[data-netbox-color-mode=dark] .list-group-item-yellow-500,html[data-netbox-color-mode=light] .list-group-item-yellow-500{color:#664d03;background-color:#fff3cd}html .list-group-item-yellow-500.list-group-item-action:hover,html .list-group-item-yellow-500.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-yellow-500.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-yellow-500.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-yellow-500.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-yellow-500.list-group-item-action:focus{color:#664d03;background-color:#e6dbb9}html .list-group-item-yellow-500.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-yellow-500.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-yellow-500.list-group-item-action.active{color:#fff;background-color:#664d03;border-color:#664d03}}@media print{html .list-group-item-yellow-600,html[data-netbox-color-mode=dark] .list-group-item-yellow-600,html[data-netbox-color-mode=light] .list-group-item-yellow-600{color:#7a5c04;background-color:#f5ebcd}html .list-group-item-yellow-600.list-group-item-action:hover,html .list-group-item-yellow-600.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-yellow-600.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-yellow-600.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-yellow-600.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-yellow-600.list-group-item-action:focus{color:#7a5c04;background-color:#ddd4b9}html .list-group-item-yellow-600.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-yellow-600.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-yellow-600.list-group-item-action.active{color:#fff;background-color:#7a5c04;border-color:#7a5c04}}@media print{html .list-group-item-yellow-700,html[data-netbox-color-mode=dark] .list-group-item-yellow-700,html[data-netbox-color-mode=light] .list-group-item-yellow-700{color:#5c4602;background-color:#ebe3cd}html .list-group-item-yellow-700.list-group-item-action:hover,html .list-group-item-yellow-700.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-yellow-700.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-yellow-700.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-yellow-700.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-yellow-700.list-group-item-action:focus{color:#5c4602;background-color:#d4ccb9}html .list-group-item-yellow-700.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-yellow-700.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-yellow-700.list-group-item-action.active{color:#fff;background-color:#5c4602;border-color:#5c4602}}@media print{html .list-group-item-yellow-800,html[data-netbox-color-mode=dark] .list-group-item-yellow-800,html[data-netbox-color-mode=light] .list-group-item-yellow-800{color:#3d2e02;background-color:#e0dbcd}html .list-group-item-yellow-800.list-group-item-action:hover,html .list-group-item-yellow-800.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-yellow-800.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-yellow-800.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-yellow-800.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-yellow-800.list-group-item-action:focus{color:#3d2e02;background-color:#cac5b9}html .list-group-item-yellow-800.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-yellow-800.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-yellow-800.list-group-item-action.active{color:#fff;background-color:#3d2e02;border-color:#3d2e02}}@media print{html .list-group-item-yellow-900,html[data-netbox-color-mode=dark] .list-group-item-yellow-900,html[data-netbox-color-mode=light] .list-group-item-yellow-900{color:#1f1701;background-color:#d6d4cc}html .list-group-item-yellow-900.list-group-item-action:hover,html .list-group-item-yellow-900.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-yellow-900.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-yellow-900.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-yellow-900.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-yellow-900.list-group-item-action:focus{color:#1f1701;background-color:#c1bfb8}html .list-group-item-yellow-900.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-yellow-900.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-yellow-900.list-group-item-action.active{color:#fff;background-color:#1f1701;border-color:#1f1701}}@media print{html .list-group-item-green-100,html[data-netbox-color-mode=dark] .list-group-item-green-100,html[data-netbox-color-mode=light] .list-group-item-green-100{color:#545c58;background-color:#f6faf8}html .list-group-item-green-100.list-group-item-action:hover,html .list-group-item-green-100.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-green-100.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-green-100.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-green-100.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-green-100.list-group-item-action:focus{color:#545c58;background-color:#dde1df}html .list-group-item-green-100.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-green-100.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-green-100.list-group-item-action.active{color:#fff;background-color:#545c58;border-color:#545c58}}@media print{html .list-group-item-green-200,html[data-netbox-color-mode=dark] .list-group-item-green-200,html[data-netbox-color-mode=light] .list-group-item-green-200{color:#41534b;background-color:#edf5f1}html .list-group-item-green-200.list-group-item-action:hover,html .list-group-item-green-200.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-green-200.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-green-200.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-green-200.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-green-200.list-group-item-action:focus{color:#41534b;background-color:#d5ddd9}html .list-group-item-green-200.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-green-200.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-green-200.list-group-item-action.active{color:#fff;background-color:#41534b;border-color:#41534b}}@media print{html .list-group-item-green-300,html[data-netbox-color-mode=dark] .list-group-item-green-300,html[data-netbox-color-mode=light] .list-group-item-green-300{color:#466e5b;background-color:#e3f1ea}html .list-group-item-green-300.list-group-item-action:hover,html .list-group-item-green-300.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-green-300.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-green-300.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-green-300.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-green-300.list-group-item-action:focus{color:#466e5b;background-color:#ccd9d3}html .list-group-item-green-300.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-green-300.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-green-300.list-group-item-action.active{color:#fff;background-color:#466e5b;border-color:#466e5b}}@media print{html .list-group-item-green-400,html[data-netbox-color-mode=dark] .list-group-item-green-400,html[data-netbox-color-mode=light] .list-group-item-green-400{color:#2b5f47;background-color:#daece4}html .list-group-item-green-400.list-group-item-action:hover,html .list-group-item-green-400.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-green-400.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-green-400.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-green-400.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-green-400.list-group-item-action:focus{color:#2b5f47;background-color:#c4d4cd}html .list-group-item-green-400.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-green-400.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-green-400.list-group-item-action.active{color:#fff;background-color:#2b5f47;border-color:#2b5f47}}@media print{html .list-group-item-green-500,html[data-netbox-color-mode=dark] .list-group-item-green-500,html[data-netbox-color-mode=light] .list-group-item-green-500{color:#0f5132;background-color:#d1e7dd}html .list-group-item-green-500.list-group-item-action:hover,html .list-group-item-green-500.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-green-500.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-green-500.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-green-500.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-green-500.list-group-item-action:focus{color:#0f5132;background-color:#bcd0c7}html .list-group-item-green-500.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-green-500.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-green-500.list-group-item-action.active{color:#fff;background-color:#0f5132;border-color:#0f5132}}@media print{html .list-group-item-green-600,html[data-netbox-color-mode=dark] .list-group-item-green-600,html[data-netbox-color-mode=light] .list-group-item-green-600{color:#0c4128;background-color:#d0e2d9}html .list-group-item-green-600.list-group-item-action:hover,html .list-group-item-green-600.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-green-600.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-green-600.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-green-600.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-green-600.list-group-item-action:focus{color:#0c4128;background-color:#bbcbc3}html .list-group-item-green-600.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-green-600.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-green-600.list-group-item-action.active{color:#fff;background-color:#0c4128;border-color:#0c4128}}@media print{html .list-group-item-green-700,html[data-netbox-color-mode=dark] .list-group-item-green-700,html[data-netbox-color-mode=light] .list-group-item-green-700{color:#09311e;background-color:#cfdcd6}html .list-group-item-green-700.list-group-item-action:hover,html .list-group-item-green-700.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-green-700.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-green-700.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-green-700.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-green-700.list-group-item-action:focus{color:#09311e;background-color:#bac6c1}html .list-group-item-green-700.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-green-700.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-green-700.list-group-item-action.active{color:#fff;background-color:#09311e;border-color:#09311e}}@media print{html .list-group-item-green-800,html[data-netbox-color-mode=dark] .list-group-item-green-800,html[data-netbox-color-mode=light] .list-group-item-green-800{color:#062014;background-color:#ced7d3}html .list-group-item-green-800.list-group-item-action:hover,html .list-group-item-green-800.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-green-800.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-green-800.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-green-800.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-green-800.list-group-item-action:focus{color:#062014;background-color:#b9c2be}html .list-group-item-green-800.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-green-800.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-green-800.list-group-item-action.active{color:#fff;background-color:#062014;border-color:#062014}}@media print{html .list-group-item-green-900,html[data-netbox-color-mode=dark] .list-group-item-green-900,html[data-netbox-color-mode=light] .list-group-item-green-900{color:#03100a;background-color:#cdd1cf}html .list-group-item-green-900.list-group-item-action:hover,html .list-group-item-green-900.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-green-900.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-green-900.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-green-900.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-green-900.list-group-item-action:focus{color:#03100a;background-color:#b9bcba}html .list-group-item-green-900.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-green-900.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-green-900.list-group-item-action.active{color:#fff;background-color:#03100a;border-color:#03100a}}@media print{html .list-group-item-blue-100,html[data-netbox-color-mode=dark] .list-group-item-blue-100,html[data-netbox-color-mode=light] .list-group-item-blue-100{color:#535a66;background-color:#f5f9ff}html .list-group-item-blue-100.list-group-item-action:hover,html .list-group-item-blue-100.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-blue-100.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-blue-100.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-blue-100.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-blue-100.list-group-item-action:focus{color:#535a66;background-color:#dde0e6}html .list-group-item-blue-100.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-blue-100.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-blue-100.list-group-item-action.active{color:#fff;background-color:#535a66;border-color:#535a66}}@media print{html .list-group-item-blue-200,html[data-netbox-color-mode=dark] .list-group-item-blue-200,html[data-netbox-color-mode=light] .list-group-item-blue-200{color:#3f4f66;background-color:#ecf3ff}html .list-group-item-blue-200.list-group-item-action:hover,html .list-group-item-blue-200.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-blue-200.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-blue-200.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-blue-200.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-blue-200.list-group-item-action:focus{color:#3f4f66;background-color:#d4dbe6}html .list-group-item-blue-200.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-blue-200.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-blue-200.list-group-item-action.active{color:#fff;background-color:#3f4f66;border-color:#3f4f66}}@media print{html .list-group-item-blue-300,html[data-netbox-color-mode=dark] .list-group-item-blue-300,html[data-netbox-color-mode=light] .list-group-item-blue-300{color:#426598;background-color:#e2eeff}html .list-group-item-blue-300.list-group-item-action:hover,html .list-group-item-blue-300.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-blue-300.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-blue-300.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-blue-300.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-blue-300.list-group-item-action:focus{color:#426598;background-color:#cbd6e6}html .list-group-item-blue-300.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-blue-300.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-blue-300.list-group-item-action.active{color:#fff;background-color:#426598;border-color:#426598}}@media print{html .list-group-item-blue-400,html[data-netbox-color-mode=dark] .list-group-item-blue-400,html[data-netbox-color-mode=light] .list-group-item-blue-400{color:#255398;background-color:#d8e8ff}html .list-group-item-blue-400.list-group-item-action:hover,html .list-group-item-blue-400.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-blue-400.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-blue-400.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-blue-400.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-blue-400.list-group-item-action:focus{color:#255398;background-color:#c2d1e6}html .list-group-item-blue-400.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-blue-400.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-blue-400.list-group-item-action.active{color:#fff;background-color:#255398;border-color:#255398}}@media print{html .list-group-item-blue-500,html[data-netbox-color-mode=dark] .list-group-item-blue-500,html[data-netbox-color-mode=light] .list-group-item-blue-500{color:#084298;background-color:#cfe2ff}html .list-group-item-blue-500.list-group-item-action:hover,html .list-group-item-blue-500.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-blue-500.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-blue-500.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-blue-500.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-blue-500.list-group-item-action:focus{color:#084298;background-color:#bacbe6}html .list-group-item-blue-500.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-blue-500.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-blue-500.list-group-item-action.active{color:#fff;background-color:#084298;border-color:#084298}}@media print{html .list-group-item-blue-600,html[data-netbox-color-mode=dark] .list-group-item-blue-600,html[data-netbox-color-mode=light] .list-group-item-blue-600{color:#063579;background-color:#cedef4}html .list-group-item-blue-600.list-group-item-action:hover,html .list-group-item-blue-600.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-blue-600.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-blue-600.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-blue-600.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-blue-600.list-group-item-action:focus{color:#063579;background-color:#b9c8dc}html .list-group-item-blue-600.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-blue-600.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-blue-600.list-group-item-action.active{color:#fff;background-color:#063579;border-color:#063579}}@media print{html .list-group-item-blue-700,html[data-netbox-color-mode=dark] .list-group-item-blue-700,html[data-netbox-color-mode=light] .list-group-item-blue-700{color:#05285b;background-color:#ced9ea}html .list-group-item-blue-700.list-group-item-action:hover,html .list-group-item-blue-700.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-blue-700.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-blue-700.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-blue-700.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-blue-700.list-group-item-action:focus{color:#05285b;background-color:#b9c3d3}html .list-group-item-blue-700.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-blue-700.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-blue-700.list-group-item-action.active{color:#fff;background-color:#05285b;border-color:#05285b}}@media print{html .list-group-item-blue-800,html[data-netbox-color-mode=dark] .list-group-item-blue-800,html[data-netbox-color-mode=light] .list-group-item-blue-800{color:#031a3d;background-color:#cdd5e0}html .list-group-item-blue-800.list-group-item-action:hover,html .list-group-item-blue-800.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-blue-800.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-blue-800.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-blue-800.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-blue-800.list-group-item-action:focus{color:#031a3d;background-color:#b9c0ca}html .list-group-item-blue-800.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-blue-800.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-blue-800.list-group-item-action.active{color:#fff;background-color:#031a3d;border-color:#031a3d}}@media print{html .list-group-item-blue-900,html[data-netbox-color-mode=dark] .list-group-item-blue-900,html[data-netbox-color-mode=light] .list-group-item-blue-900{color:#020d1f;background-color:#cdd0d6}html .list-group-item-blue-900.list-group-item-action:hover,html .list-group-item-blue-900.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-blue-900.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-blue-900.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-blue-900.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-blue-900.list-group-item-action:focus{color:#020d1f;background-color:#b9bbc1}html .list-group-item-blue-900.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-blue-900.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-blue-900.list-group-item-action.active{color:#fff;background-color:#020d1f;border-color:#020d1f}}@media print{html .list-group-item-cyan-100,html[data-netbox-color-mode=dark] .list-group-item-cyan-100,html[data-netbox-color-mode=light] .list-group-item-cyan-100{color:#536265;background-color:#f5fdfe}html .list-group-item-cyan-100.list-group-item-action:hover,html .list-group-item-cyan-100.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-cyan-100.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-cyan-100.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-cyan-100.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-cyan-100.list-group-item-action:focus{color:#536265;background-color:#dde4e5}html .list-group-item-cyan-100.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-cyan-100.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-cyan-100.list-group-item-action.active{color:#fff;background-color:#536265;border-color:#536265}}@media print{html .list-group-item-cyan-200,html[data-netbox-color-mode=dark] .list-group-item-cyan-200,html[data-netbox-color-mode=light] .list-group-item-cyan-200{color:#3f5e64;background-color:#ecfbfe}html .list-group-item-cyan-200.list-group-item-action:hover,html .list-group-item-cyan-200.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-cyan-200.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-cyan-200.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-cyan-200.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-cyan-200.list-group-item-action:focus{color:#3f5e64;background-color:#d4e2e5}html .list-group-item-cyan-200.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-cyan-200.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-cyan-200.list-group-item-action.active{color:#fff;background-color:#3f5e64;border-color:#3f5e64}}@media print{html .list-group-item-cyan-300,html[data-netbox-color-mode=dark] .list-group-item-cyan-300,html[data-netbox-color-mode=light] .list-group-item-cyan-300{color:#2c5962;background-color:#e2f9fd}html .list-group-item-cyan-300.list-group-item-action:hover,html .list-group-item-cyan-300.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-cyan-300.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-cyan-300.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-cyan-300.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-cyan-300.list-group-item-action:focus{color:#2c5962;background-color:#cbe0e4}html .list-group-item-cyan-300.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-cyan-300.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-cyan-300.list-group-item-action.active{color:#fff;background-color:#2c5962;border-color:#2c5962}}@media print{html .list-group-item-cyan-400,html[data-netbox-color-mode=dark] .list-group-item-cyan-400,html[data-netbox-color-mode=light] .list-group-item-cyan-400{color:#185561;background-color:#d8f7fd}html .list-group-item-cyan-400.list-group-item-action:hover,html .list-group-item-cyan-400.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-cyan-400.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-cyan-400.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-cyan-400.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-cyan-400.list-group-item-action:focus{color:#185561;background-color:#c2dee4}html .list-group-item-cyan-400.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-cyan-400.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-cyan-400.list-group-item-action.active{color:#fff;background-color:#185561;border-color:#185561}}@media print{html .list-group-item-cyan-500,html[data-netbox-color-mode=dark] .list-group-item-cyan-500,html[data-netbox-color-mode=light] .list-group-item-cyan-500{color:#055160;background-color:#cff4fc}html .list-group-item-cyan-500.list-group-item-action:hover,html .list-group-item-cyan-500.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-cyan-500.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-cyan-500.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-cyan-500.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-cyan-500.list-group-item-action:focus{color:#055160;background-color:#badce3}html .list-group-item-cyan-500.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-cyan-500.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-cyan-500.list-group-item-action.active{color:#fff;background-color:#055160;border-color:#055160}}@media print{html .list-group-item-cyan-600,html[data-netbox-color-mode=dark] .list-group-item-cyan-600,html[data-netbox-color-mode=light] .list-group-item-cyan-600{color:#066173;background-color:#ceecf2}html .list-group-item-cyan-600.list-group-item-action:hover,html .list-group-item-cyan-600.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-cyan-600.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-cyan-600.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-cyan-600.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-cyan-600.list-group-item-action:focus{color:#066173;background-color:#b9d4da}html .list-group-item-cyan-600.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-cyan-600.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-cyan-600.list-group-item-action.active{color:#fff;background-color:#066173;border-color:#066173}}@media print{html .list-group-item-cyan-700,html[data-netbox-color-mode=dark] .list-group-item-cyan-700,html[data-netbox-color-mode=light] .list-group-item-cyan-700{color:#054956;background-color:#cee4e9}html .list-group-item-cyan-700.list-group-item-action:hover,html .list-group-item-cyan-700.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-cyan-700.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-cyan-700.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-cyan-700.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-cyan-700.list-group-item-action:focus{color:#054956;background-color:#b9cdd2}html .list-group-item-cyan-700.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-cyan-700.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-cyan-700.list-group-item-action.active{color:#fff;background-color:#054956;border-color:#054956}}@media print{html .list-group-item-cyan-800,html[data-netbox-color-mode=dark] .list-group-item-cyan-800,html[data-netbox-color-mode=light] .list-group-item-cyan-800{color:#03313a;background-color:#cddcdf}html .list-group-item-cyan-800.list-group-item-action:hover,html .list-group-item-cyan-800.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-cyan-800.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-cyan-800.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-cyan-800.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-cyan-800.list-group-item-action:focus{color:#03313a;background-color:#b9c6c9}html .list-group-item-cyan-800.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-cyan-800.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-cyan-800.list-group-item-action.active{color:#fff;background-color:#03313a;border-color:#03313a}}@media print{html .list-group-item-cyan-900,html[data-netbox-color-mode=dark] .list-group-item-cyan-900,html[data-netbox-color-mode=light] .list-group-item-cyan-900{color:#02181d;background-color:#cdd4d6}html .list-group-item-cyan-900.list-group-item-action:hover,html .list-group-item-cyan-900.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-cyan-900.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-cyan-900.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-cyan-900.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-cyan-900.list-group-item-action:focus{color:#02181d;background-color:#b9bfc1}html .list-group-item-cyan-900.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-cyan-900.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-cyan-900.list-group-item-action.active{color:#fff;background-color:#02181d;border-color:#02181d}}@media print{html .list-group-item-indigo-100,html[data-netbox-color-mode=dark] .list-group-item-indigo-100,html[data-netbox-color-mode=light] .list-group-item-indigo-100{color:#5a5365;background-color:#f9f5fe}html .list-group-item-indigo-100.list-group-item-action:hover,html .list-group-item-indigo-100.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-indigo-100.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-indigo-100.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-indigo-100.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-indigo-100.list-group-item-action:focus{color:#5a5365;background-color:#e0dde5}html .list-group-item-indigo-100.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-indigo-100.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-indigo-100.list-group-item-action.active{color:#fff;background-color:#5a5365;border-color:#5a5365}}@media print{html .list-group-item-indigo-200,html[data-netbox-color-mode=dark] .list-group-item-indigo-200,html[data-netbox-color-mode=light] .list-group-item-indigo-200{color:#745f96;background-color:#f3ecfe}html .list-group-item-indigo-200.list-group-item-action:hover,html .list-group-item-indigo-200.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-indigo-200.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-indigo-200.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-indigo-200.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-indigo-200.list-group-item-action:focus{color:#745f96;background-color:#dbd4e5}html .list-group-item-indigo-200.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-indigo-200.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-indigo-200.list-group-item-action.active{color:#fff;background-color:#745f96;border-color:#745f96}}@media print{html .list-group-item-indigo-300,html[data-netbox-color-mode=dark] .list-group-item-indigo-300,html[data-netbox-color-mode=light] .list-group-item-indigo-300{color:#624394;background-color:#ede2fd}html .list-group-item-indigo-300.list-group-item-action:hover,html .list-group-item-indigo-300.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-indigo-300.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-indigo-300.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-indigo-300.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-indigo-300.list-group-item-action:focus{color:#624394;background-color:#d5cbe4}html .list-group-item-indigo-300.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-indigo-300.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-indigo-300.list-group-item-action.active{color:#fff;background-color:#624394;border-color:#624394}}@media print{html .list-group-item-indigo-400,html[data-netbox-color-mode=dark] .list-group-item-indigo-400,html[data-netbox-color-mode=light] .list-group-item-indigo-400{color:#502693;background-color:#e7d9fd}html .list-group-item-indigo-400.list-group-item-action:hover,html .list-group-item-indigo-400.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-indigo-400.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-indigo-400.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-indigo-400.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-indigo-400.list-group-item-action:focus{color:#502693;background-color:#d0c3e4}html .list-group-item-indigo-400.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-indigo-400.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-indigo-400.list-group-item-action.active{color:#fff;background-color:#502693;border-color:#502693}}@media print{html .list-group-item-indigo-500,html[data-netbox-color-mode=dark] .list-group-item-indigo-500,html[data-netbox-color-mode=light] .list-group-item-indigo-500{color:#3d0a91;background-color:#e0cffc}html .list-group-item-indigo-500.list-group-item-action:hover,html .list-group-item-indigo-500.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-indigo-500.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-indigo-500.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-indigo-500.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-indigo-500.list-group-item-action:focus{color:#3d0a91;background-color:#cabae3}html .list-group-item-indigo-500.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-indigo-500.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-indigo-500.list-group-item-action.active{color:#fff;background-color:#3d0a91;border-color:#3d0a91}}@media print{html .list-group-item-indigo-600,html[data-netbox-color-mode=dark] .list-group-item-indigo-600,html[data-netbox-color-mode=light] .list-group-item-indigo-600{color:#310874;background-color:#dccff3}html .list-group-item-indigo-600.list-group-item-action:hover,html .list-group-item-indigo-600.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-indigo-600.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-indigo-600.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-indigo-600.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-indigo-600.list-group-item-action:focus{color:#310874;background-color:#c6badb}html .list-group-item-indigo-600.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-indigo-600.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-indigo-600.list-group-item-action.active{color:#fff;background-color:#310874;border-color:#310874}}@media print{html .list-group-item-indigo-700,html[data-netbox-color-mode=dark] .list-group-item-indigo-700,html[data-netbox-color-mode=light] .list-group-item-indigo-700{color:#250657;background-color:#d8cee9}html .list-group-item-indigo-700.list-group-item-action:hover,html .list-group-item-indigo-700.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-indigo-700.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-indigo-700.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-indigo-700.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-indigo-700.list-group-item-action:focus{color:#250657;background-color:#c2b9d2}html .list-group-item-indigo-700.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-indigo-700.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-indigo-700.list-group-item-action.active{color:#fff;background-color:#250657;border-color:#250657}}@media print{html .list-group-item-indigo-800,html[data-netbox-color-mode=dark] .list-group-item-indigo-800,html[data-netbox-color-mode=light] .list-group-item-indigo-800{color:#19043a;background-color:#d4cddf}html .list-group-item-indigo-800.list-group-item-action:hover,html .list-group-item-indigo-800.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-indigo-800.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-indigo-800.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-indigo-800.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-indigo-800.list-group-item-action:focus{color:#19043a;background-color:#bfb9c9}html .list-group-item-indigo-800.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-indigo-800.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-indigo-800.list-group-item-action.active{color:#fff;background-color:#19043a;border-color:#19043a}}@media print{html .list-group-item-indigo-900,html[data-netbox-color-mode=dark] .list-group-item-indigo-900,html[data-netbox-color-mode=light] .list-group-item-indigo-900{color:#0c021d;background-color:#d0cdd6}html .list-group-item-indigo-900.list-group-item-action:hover,html .list-group-item-indigo-900.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-indigo-900.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-indigo-900.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-indigo-900.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-indigo-900.list-group-item-action:focus{color:#0c021d;background-color:#bbb9c1}html .list-group-item-indigo-900.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-indigo-900.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-indigo-900.list-group-item-action.active{color:#fff;background-color:#0c021d;border-color:#0c021d}}@media print{html .list-group-item-purple-100,html[data-netbox-color-mode=dark] .list-group-item-purple-100,html[data-netbox-color-mode=light] .list-group-item-purple-100{color:#5a5761;background-color:#f9f7fd}html .list-group-item-purple-100.list-group-item-action:hover,html .list-group-item-purple-100.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-purple-100.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-purple-100.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-purple-100.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-purple-100.list-group-item-action:focus{color:#5a5761;background-color:#e0dee4}html .list-group-item-purple-100.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-purple-100.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-purple-100.list-group-item-action.active{color:#fff;background-color:#5a5761;border-color:#5a5761}}@media print{html .list-group-item-purple-200,html[data-netbox-color-mode=dark] .list-group-item-purple-200,html[data-netbox-color-mode=light] .list-group-item-purple-200{color:#4f485c;background-color:#f3f0fa}html .list-group-item-purple-200.list-group-item-action:hover,html .list-group-item-purple-200.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-purple-200.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-purple-200.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-purple-200.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-purple-200.list-group-item-action:focus{color:#4f485c;background-color:#dbd8e1}html .list-group-item-purple-200.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-purple-200.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-purple-200.list-group-item-action.active{color:#fff;background-color:#4f485c;border-color:#4f485c}}@media print{html .list-group-item-purple-300,html[data-netbox-color-mode=dark] .list-group-item-purple-300,html[data-netbox-color-mode=light] .list-group-item-purple-300{color:#655583;background-color:#eee8f8}html .list-group-item-purple-300.list-group-item-action:hover,html .list-group-item-purple-300.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-purple-300.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-purple-300.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-purple-300.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-purple-300.list-group-item-action:focus{color:#655583;background-color:#d6d1df}html .list-group-item-purple-300.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-purple-300.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-purple-300.list-group-item-action.active{color:#fff;background-color:#655583;border-color:#655583}}@media print{html .list-group-item-purple-400,html[data-netbox-color-mode=dark] .list-group-item-purple-400,html[data-netbox-color-mode=light] .list-group-item-purple-400{color:#543e7b;background-color:#e8e1f5}html .list-group-item-purple-400.list-group-item-action:hover,html .list-group-item-purple-400.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-purple-400.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-purple-400.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-purple-400.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-purple-400.list-group-item-action:focus{color:#543e7b;background-color:#d1cbdd}html .list-group-item-purple-400.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-purple-400.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-purple-400.list-group-item-action.active{color:#fff;background-color:#543e7b;border-color:#543e7b}}@media print{html .list-group-item-purple-500,html[data-netbox-color-mode=dark] .list-group-item-purple-500,html[data-netbox-color-mode=light] .list-group-item-purple-500{color:#432874;background-color:#e2d9f3}html .list-group-item-purple-500.list-group-item-action:hover,html .list-group-item-purple-500.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-purple-500.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-purple-500.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-purple-500.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-purple-500.list-group-item-action:focus{color:#432874;background-color:#cbc3db}html .list-group-item-purple-500.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-purple-500.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-purple-500.list-group-item-action.active{color:#fff;background-color:#432874;border-color:#432874}}@media print{html .list-group-item-purple-600,html[data-netbox-color-mode=dark] .list-group-item-purple-600,html[data-netbox-color-mode=light] .list-group-item-purple-600{color:#35205c;background-color:#ded7eb}html .list-group-item-purple-600.list-group-item-action:hover,html .list-group-item-purple-600.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-purple-600.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-purple-600.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-purple-600.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-purple-600.list-group-item-action:focus{color:#35205c;background-color:#c8c2d4}html .list-group-item-purple-600.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-purple-600.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-purple-600.list-group-item-action.active{color:#fff;background-color:#35205c;border-color:#35205c}}@media print{html .list-group-item-purple-700,html[data-netbox-color-mode=dark] .list-group-item-purple-700,html[data-netbox-color-mode=light] .list-group-item-purple-700{color:#281846;background-color:#d9d4e3}html .list-group-item-purple-700.list-group-item-action:hover,html .list-group-item-purple-700.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-purple-700.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-purple-700.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-purple-700.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-purple-700.list-group-item-action:focus{color:#281846;background-color:#c3bfcc}html .list-group-item-purple-700.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-purple-700.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-purple-700.list-group-item-action.active{color:#fff;background-color:#281846;border-color:#281846}}@media print{html .list-group-item-purple-800,html[data-netbox-color-mode=dark] .list-group-item-purple-800,html[data-netbox-color-mode=light] .list-group-item-purple-800{color:#1a102e;background-color:#d5d1db}html .list-group-item-purple-800.list-group-item-action:hover,html .list-group-item-purple-800.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-purple-800.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-purple-800.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-purple-800.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-purple-800.list-group-item-action:focus{color:#1a102e;background-color:#c0bcc5}html .list-group-item-purple-800.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-purple-800.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-purple-800.list-group-item-action.active{color:#fff;background-color:#1a102e;border-color:#1a102e}}@media print{html .list-group-item-purple-900,html[data-netbox-color-mode=dark] .list-group-item-purple-900,html[data-netbox-color-mode=light] .list-group-item-purple-900{color:#0d0817;background-color:#d0cfd4}html .list-group-item-purple-900.list-group-item-action:hover,html .list-group-item-purple-900.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-purple-900.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-purple-900.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-purple-900.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-purple-900.list-group-item-action:focus{color:#0d0817;background-color:#bbbabf}html .list-group-item-purple-900.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-purple-900.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-purple-900.list-group-item-action.active{color:#fff;background-color:#0d0817;border-color:#0d0817}}@media print{html .list-group-item-pink-100,html[data-netbox-color-mode=dark] .list-group-item-pink-100,html[data-netbox-color-mode=light] .list-group-item-pink-100{color:#63565c;background-color:#fdf7fa}html .list-group-item-pink-100.list-group-item-action:hover,html .list-group-item-pink-100.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-pink-100.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-pink-100.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-pink-100.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-pink-100.list-group-item-action:focus{color:#63565c;background-color:#e4dee1}html .list-group-item-pink-100.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-pink-100.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-pink-100.list-group-item-action.active{color:#fff;background-color:#63565c;border-color:#63565c}}@media print{html .list-group-item-pink-200,html[data-netbox-color-mode=dark] .list-group-item-pink-200,html[data-netbox-color-mode=light] .list-group-item-pink-200{color:#604552;background-color:#fceff5}html .list-group-item-pink-200.list-group-item-action:hover,html .list-group-item-pink-200.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-pink-200.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-pink-200.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-pink-200.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-pink-200.list-group-item-action:focus{color:#604552;background-color:#e3d7dd}html .list-group-item-pink-200.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-pink-200.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-pink-200.list-group-item-action.active{color:#fff;background-color:#604552;border-color:#604552}}@media print{html .list-group-item-pink-300,html[data-netbox-color-mode=dark] .list-group-item-pink-300,html[data-netbox-color-mode=light] .list-group-item-pink-300{color:#8a506d;background-color:#fae7f0}html .list-group-item-pink-300.list-group-item-action:hover,html .list-group-item-pink-300.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-pink-300.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-pink-300.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-pink-300.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-pink-300.list-group-item-action:focus{color:#8a506d;background-color:#e1d0d8}html .list-group-item-pink-300.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-pink-300.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-pink-300.list-group-item-action.active{color:#fff;background-color:#8a506d;border-color:#8a506d}}@media print{html .list-group-item-pink-400,html[data-netbox-color-mode=dark] .list-group-item-pink-400,html[data-netbox-color-mode=light] .list-group-item-pink-400{color:#85375e;background-color:#f8deeb}html .list-group-item-pink-400.list-group-item-action:hover,html .list-group-item-pink-400.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-pink-400.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-pink-400.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-pink-400.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-pink-400.list-group-item-action:focus{color:#85375e;background-color:#dfc8d4}html .list-group-item-pink-400.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-pink-400.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-pink-400.list-group-item-action.active{color:#fff;background-color:#85375e;border-color:#85375e}}@media print{html .list-group-item-pink-500,html[data-netbox-color-mode=dark] .list-group-item-pink-500,html[data-netbox-color-mode=light] .list-group-item-pink-500{color:#801f4f;background-color:#f7d6e6}html .list-group-item-pink-500.list-group-item-action:hover,html .list-group-item-pink-500.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-pink-500.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-pink-500.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-pink-500.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-pink-500.list-group-item-action:focus{color:#801f4f;background-color:#dec1cf}html .list-group-item-pink-500.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-pink-500.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-pink-500.list-group-item-action.active{color:#fff;background-color:#801f4f;border-color:#801f4f}}@media print{html .list-group-item-pink-600,html[data-netbox-color-mode=dark] .list-group-item-pink-600,html[data-netbox-color-mode=light] .list-group-item-pink-600{color:#671940;background-color:#eed4e1}html .list-group-item-pink-600.list-group-item-action:hover,html .list-group-item-pink-600.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-pink-600.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-pink-600.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-pink-600.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-pink-600.list-group-item-action:focus{color:#671940;background-color:#d6bfcb}html .list-group-item-pink-600.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-pink-600.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-pink-600.list-group-item-action.active{color:#fff;background-color:#671940;border-color:#671940}}@media print{html .list-group-item-pink-700,html[data-netbox-color-mode=dark] .list-group-item-pink-700,html[data-netbox-color-mode=light] .list-group-item-pink-700{color:#4d132f;background-color:#e6d2dc}html .list-group-item-pink-700.list-group-item-action:hover,html .list-group-item-pink-700.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-pink-700.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-pink-700.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-pink-700.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-pink-700.list-group-item-action:focus{color:#4d132f;background-color:#cfbdc6}html .list-group-item-pink-700.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-pink-700.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-pink-700.list-group-item-action.active{color:#fff;background-color:#4d132f;border-color:#4d132f}}@media print{html .list-group-item-pink-800,html[data-netbox-color-mode=dark] .list-group-item-pink-800,html[data-netbox-color-mode=light] .list-group-item-pink-800{color:#340c20;background-color:#ddd0d7}html .list-group-item-pink-800.list-group-item-action:hover,html .list-group-item-pink-800.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-pink-800.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-pink-800.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-pink-800.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-pink-800.list-group-item-action:focus{color:#340c20;background-color:#c7bbc2}html .list-group-item-pink-800.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-pink-800.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-pink-800.list-group-item-action.active{color:#fff;background-color:#340c20;border-color:#340c20}}@media print{html .list-group-item-pink-900,html[data-netbox-color-mode=dark] .list-group-item-pink-900,html[data-netbox-color-mode=light] .list-group-item-pink-900{color:#1a0610;background-color:#d5ced1}html .list-group-item-pink-900.list-group-item-action:hover,html .list-group-item-pink-900.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-pink-900.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-pink-900.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-pink-900.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-pink-900.list-group-item-action:focus{color:#1a0610;background-color:#c0b9bc}html .list-group-item-pink-900.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-pink-900.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-pink-900.list-group-item-action.active{color:#fff;background-color:#1a0610;border-color:#1a0610}}@media print{html .btn-close,html[data-netbox-color-mode=dark] .btn-close,html[data-netbox-color-mode=light] .btn-close{box-sizing:content-box;width:1em;height:1em;padding:.25em;color:#000;background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat;border:0;border-radius:.375rem;opacity:.5}html .btn-close:hover,html[data-netbox-color-mode=dark] .btn-close:hover,html[data-netbox-color-mode=light] .btn-close:hover{color:#000;text-decoration:none;opacity:.75}html .btn-close:focus,html[data-netbox-color-mode=dark] .btn-close:focus,html[data-netbox-color-mode=light] .btn-close:focus{outline:0;box-shadow:0 0 0 .25rem #0d6efd40;opacity:1}html .btn-close:disabled,html .btn-close.disabled,html[data-netbox-color-mode=dark] .btn-close:disabled,html[data-netbox-color-mode=dark] .btn-close.disabled,html[data-netbox-color-mode=light] .btn-close:disabled,html[data-netbox-color-mode=light] .btn-close.disabled{pointer-events:none;user-select:none;opacity:.25}}@media print{html .btn-close-white,html[data-netbox-color-mode=dark] .btn-close-white,html[data-netbox-color-mode=light] .btn-close-white{filter:invert(1) grayscale(100%) brightness(200%)}}@media print{html .toast,html[data-netbox-color-mode=dark] .toast,html[data-netbox-color-mode=light] .toast{width:350px;max-width:100%;font-size:.875rem;pointer-events:auto;background-color:#ffffffd9;background-clip:padding-box;border:1px solid rgba(0,0,0,.1);box-shadow:0 .5rem 1rem #00000026;border-radius:.375rem}html .toast:not(.showing):not(.show),html[data-netbox-color-mode=dark] .toast:not(.showing):not(.show),html[data-netbox-color-mode=light] .toast:not(.showing):not(.show){opacity:0}html .toast.hide,html[data-netbox-color-mode=dark] .toast.hide,html[data-netbox-color-mode=light] .toast.hide{display:none}}@media print{html .toast-container,html[data-netbox-color-mode=dark] .toast-container,html[data-netbox-color-mode=light] .toast-container{width:max-content;max-width:100%;pointer-events:none}html .toast-container>:not(:last-child),html[data-netbox-color-mode=dark] .toast-container>:not(:last-child),html[data-netbox-color-mode=light] .toast-container>:not(:last-child){margin-bottom:.75rem}}@media print{html .toast-header,html[data-netbox-color-mode=dark] .toast-header,html[data-netbox-color-mode=light] .toast-header{display:flex;align-items:center;padding:.5rem .75rem;color:#6c757d;background-color:#ffffffd9;background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,.05);border-top-left-radius:calc(.375rem - 1px);border-top-right-radius:calc(.375rem - 1px)}html .toast-header .btn-close,html[data-netbox-color-mode=dark] .toast-header .btn-close,html[data-netbox-color-mode=light] .toast-header .btn-close{margin-right:-.375rem;margin-left:.75rem}}@media print{html .toast-body,html[data-netbox-color-mode=dark] .toast-body,html[data-netbox-color-mode=light] .toast-body{padding:.75rem;word-wrap:break-word}}@media print{html .modal,html[data-netbox-color-mode=dark] .modal,html[data-netbox-color-mode=light] .modal{position:fixed;top:0;left:0;z-index:1060;display:none;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;outline:0}}@media print{html .modal-dialog,html[data-netbox-color-mode=dark] .modal-dialog,html[data-netbox-color-mode=light] .modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade html .modal-dialog,.modal.fade html[data-netbox-color-mode=dark] .modal-dialog,.modal.fade html[data-netbox-color-mode=light] .modal-dialog{transition:transform .3s ease-out;transform:translateY(-50px)}}@media print and (prefers-reduced-motion: reduce){.modal.fade html .modal-dialog,.modal.fade html[data-netbox-color-mode=dark] .modal-dialog,.modal.fade html[data-netbox-color-mode=light] .modal-dialog{transition:none}}@media print{.modal.show html .modal-dialog,.modal.show html[data-netbox-color-mode=dark] .modal-dialog,.modal.show html[data-netbox-color-mode=light] .modal-dialog{transform:none}}@media print{.modal.modal-static html .modal-dialog,.modal.modal-static html[data-netbox-color-mode=dark] .modal-dialog,.modal.modal-static html[data-netbox-color-mode=light] .modal-dialog{transform:scale(1.02)}}@media print{html .modal-dialog-scrollable,html[data-netbox-color-mode=dark] .modal-dialog-scrollable,html[data-netbox-color-mode=light] .modal-dialog-scrollable{height:calc(100% - 1rem)}html .modal-dialog-scrollable .modal-content,html[data-netbox-color-mode=dark] .modal-dialog-scrollable .modal-content,html[data-netbox-color-mode=light] .modal-dialog-scrollable .modal-content{max-height:100%;overflow:hidden}html .modal-dialog-scrollable .modal-body,html[data-netbox-color-mode=dark] .modal-dialog-scrollable .modal-body,html[data-netbox-color-mode=light] .modal-dialog-scrollable .modal-body{overflow-y:auto}}@media print{html .modal-dialog-centered,html[data-netbox-color-mode=dark] .modal-dialog-centered,html[data-netbox-color-mode=light] .modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - 1rem)}}@media print{html .modal-content,html[data-netbox-color-mode=dark] .modal-content,html[data-netbox-color-mode=light] .modal-content{position:relative;display:flex;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.75rem;outline:0}}@media print{html .modal-backdrop,html[data-netbox-color-mode=dark] .modal-backdrop,html[data-netbox-color-mode=light] .modal-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}html .modal-backdrop.fade,html[data-netbox-color-mode=dark] .modal-backdrop.fade,html[data-netbox-color-mode=light] .modal-backdrop.fade{opacity:0}html .modal-backdrop.show,html[data-netbox-color-mode=dark] .modal-backdrop.show,html[data-netbox-color-mode=light] .modal-backdrop.show{opacity:.5}}@media print{html .modal-header,html[data-netbox-color-mode=dark] .modal-header,html[data-netbox-color-mode=light] .modal-header{display:flex;flex-shrink:0;align-items:center;justify-content:space-between;padding:1rem;border-bottom:1px solid #dee2e6;border-top-left-radius:calc(.75rem - 1px);border-top-right-radius:calc(.75rem - 1px)}html .modal-header .btn-close,html[data-netbox-color-mode=dark] .modal-header .btn-close,html[data-netbox-color-mode=light] .modal-header .btn-close{padding:.5rem;margin:-.5rem -.5rem -.5rem auto}}@media print{html .modal-title,html[data-netbox-color-mode=dark] .modal-title,html[data-netbox-color-mode=light] .modal-title{margin-bottom:0;line-height:1.5}}@media print{html .modal-body,html[data-netbox-color-mode=dark] .modal-body,html[data-netbox-color-mode=light] .modal-body{position:relative;flex:1 1 auto;padding:1rem}}@media print{html .modal-footer,html[data-netbox-color-mode=dark] .modal-footer,html[data-netbox-color-mode=light] .modal-footer{display:flex;flex-wrap:wrap;flex-shrink:0;align-items:center;justify-content:flex-end;padding:.75rem;border-top:1px solid #dee2e6;border-bottom-right-radius:calc(.75rem - 1px);border-bottom-left-radius:calc(.75rem - 1px)}html .modal-footer>*,html[data-netbox-color-mode=dark] .modal-footer>*,html[data-netbox-color-mode=light] .modal-footer>*{margin:.25rem}}@media print and (min-width: 576px){html .modal-dialog,html[data-netbox-color-mode=dark] .modal-dialog,html[data-netbox-color-mode=light] .modal-dialog{max-width:500px;margin:1.75rem auto}html .modal-dialog-scrollable,html[data-netbox-color-mode=dark] .modal-dialog-scrollable,html[data-netbox-color-mode=light] .modal-dialog-scrollable{height:calc(100% - 3.5rem)}html .modal-dialog-centered,html[data-netbox-color-mode=dark] .modal-dialog-centered,html[data-netbox-color-mode=light] .modal-dialog-centered{min-height:calc(100% - 3.5rem)}html .modal-sm,html[data-netbox-color-mode=dark] .modal-sm,html[data-netbox-color-mode=light] .modal-sm{max-width:300px}}@media print and (min-width: 992px){html .modal-lg,html .modal-xl,html[data-netbox-color-mode=dark] .modal-lg,html[data-netbox-color-mode=dark] .modal-xl,html[data-netbox-color-mode=light] .modal-lg,html[data-netbox-color-mode=light] .modal-xl{max-width:800px}}@media print and (min-width: 1200px){html .modal-xl,html[data-netbox-color-mode=dark] .modal-xl,html[data-netbox-color-mode=light] .modal-xl{max-width:1140px}}@media print{html .modal-fullscreen,html[data-netbox-color-mode=dark] .modal-fullscreen,html[data-netbox-color-mode=light] .modal-fullscreen{width:100vw;max-width:none;height:100%;margin:0}html .modal-fullscreen .modal-content,html[data-netbox-color-mode=dark] .modal-fullscreen .modal-content,html[data-netbox-color-mode=light] .modal-fullscreen .modal-content{height:100%;border:0;border-radius:0}html .modal-fullscreen .modal-header,html[data-netbox-color-mode=dark] .modal-fullscreen .modal-header,html[data-netbox-color-mode=light] .modal-fullscreen .modal-header{border-radius:0}html .modal-fullscreen .modal-body,html[data-netbox-color-mode=dark] .modal-fullscreen .modal-body,html[data-netbox-color-mode=light] .modal-fullscreen .modal-body{overflow-y:auto}html .modal-fullscreen .modal-footer,html[data-netbox-color-mode=dark] .modal-fullscreen .modal-footer,html[data-netbox-color-mode=light] .modal-fullscreen .modal-footer{border-radius:0}}@media print and (max-width: 575.98px){html .modal-fullscreen-sm-down,html[data-netbox-color-mode=dark] .modal-fullscreen-sm-down,html[data-netbox-color-mode=light] .modal-fullscreen-sm-down{width:100vw;max-width:none;height:100%;margin:0}html .modal-fullscreen-sm-down .modal-content,html[data-netbox-color-mode=dark] .modal-fullscreen-sm-down .modal-content,html[data-netbox-color-mode=light] .modal-fullscreen-sm-down .modal-content{height:100%;border:0;border-radius:0}html .modal-fullscreen-sm-down .modal-header,html[data-netbox-color-mode=dark] .modal-fullscreen-sm-down .modal-header,html[data-netbox-color-mode=light] .modal-fullscreen-sm-down .modal-header{border-radius:0}html .modal-fullscreen-sm-down .modal-body,html[data-netbox-color-mode=dark] .modal-fullscreen-sm-down .modal-body,html[data-netbox-color-mode=light] .modal-fullscreen-sm-down .modal-body{overflow-y:auto}html .modal-fullscreen-sm-down .modal-footer,html[data-netbox-color-mode=dark] .modal-fullscreen-sm-down .modal-footer,html[data-netbox-color-mode=light] .modal-fullscreen-sm-down .modal-footer{border-radius:0}}@media print and (max-width: 767.98px){html .modal-fullscreen-md-down,html[data-netbox-color-mode=dark] .modal-fullscreen-md-down,html[data-netbox-color-mode=light] .modal-fullscreen-md-down{width:100vw;max-width:none;height:100%;margin:0}html .modal-fullscreen-md-down .modal-content,html[data-netbox-color-mode=dark] .modal-fullscreen-md-down .modal-content,html[data-netbox-color-mode=light] .modal-fullscreen-md-down .modal-content{height:100%;border:0;border-radius:0}html .modal-fullscreen-md-down .modal-header,html[data-netbox-color-mode=dark] .modal-fullscreen-md-down .modal-header,html[data-netbox-color-mode=light] .modal-fullscreen-md-down .modal-header{border-radius:0}html .modal-fullscreen-md-down .modal-body,html[data-netbox-color-mode=dark] .modal-fullscreen-md-down .modal-body,html[data-netbox-color-mode=light] .modal-fullscreen-md-down .modal-body{overflow-y:auto}html .modal-fullscreen-md-down .modal-footer,html[data-netbox-color-mode=dark] .modal-fullscreen-md-down .modal-footer,html[data-netbox-color-mode=light] .modal-fullscreen-md-down .modal-footer{border-radius:0}}@media print and (max-width: 991.98px){html .modal-fullscreen-lg-down,html[data-netbox-color-mode=dark] .modal-fullscreen-lg-down,html[data-netbox-color-mode=light] .modal-fullscreen-lg-down{width:100vw;max-width:none;height:100%;margin:0}html .modal-fullscreen-lg-down .modal-content,html[data-netbox-color-mode=dark] .modal-fullscreen-lg-down .modal-content,html[data-netbox-color-mode=light] .modal-fullscreen-lg-down .modal-content{height:100%;border:0;border-radius:0}html .modal-fullscreen-lg-down .modal-header,html[data-netbox-color-mode=dark] .modal-fullscreen-lg-down .modal-header,html[data-netbox-color-mode=light] .modal-fullscreen-lg-down .modal-header{border-radius:0}html .modal-fullscreen-lg-down .modal-body,html[data-netbox-color-mode=dark] .modal-fullscreen-lg-down .modal-body,html[data-netbox-color-mode=light] .modal-fullscreen-lg-down .modal-body{overflow-y:auto}html .modal-fullscreen-lg-down .modal-footer,html[data-netbox-color-mode=dark] .modal-fullscreen-lg-down .modal-footer,html[data-netbox-color-mode=light] .modal-fullscreen-lg-down .modal-footer{border-radius:0}}@media print and (max-width: 1199.98px){html .modal-fullscreen-xl-down,html[data-netbox-color-mode=dark] .modal-fullscreen-xl-down,html[data-netbox-color-mode=light] .modal-fullscreen-xl-down{width:100vw;max-width:none;height:100%;margin:0}html .modal-fullscreen-xl-down .modal-content,html[data-netbox-color-mode=dark] .modal-fullscreen-xl-down .modal-content,html[data-netbox-color-mode=light] .modal-fullscreen-xl-down .modal-content{height:100%;border:0;border-radius:0}html .modal-fullscreen-xl-down .modal-header,html[data-netbox-color-mode=dark] .modal-fullscreen-xl-down .modal-header,html[data-netbox-color-mode=light] .modal-fullscreen-xl-down .modal-header{border-radius:0}html .modal-fullscreen-xl-down .modal-body,html[data-netbox-color-mode=dark] .modal-fullscreen-xl-down .modal-body,html[data-netbox-color-mode=light] .modal-fullscreen-xl-down .modal-body{overflow-y:auto}html .modal-fullscreen-xl-down .modal-footer,html[data-netbox-color-mode=dark] .modal-fullscreen-xl-down .modal-footer,html[data-netbox-color-mode=light] .modal-fullscreen-xl-down .modal-footer{border-radius:0}}@media print and (max-width: 1399.98px){html .modal-fullscreen-xxl-down,html[data-netbox-color-mode=dark] .modal-fullscreen-xxl-down,html[data-netbox-color-mode=light] .modal-fullscreen-xxl-down{width:100vw;max-width:none;height:100%;margin:0}html .modal-fullscreen-xxl-down .modal-content,html[data-netbox-color-mode=dark] .modal-fullscreen-xxl-down .modal-content,html[data-netbox-color-mode=light] .modal-fullscreen-xxl-down .modal-content{height:100%;border:0;border-radius:0}html .modal-fullscreen-xxl-down .modal-header,html[data-netbox-color-mode=dark] .modal-fullscreen-xxl-down .modal-header,html[data-netbox-color-mode=light] .modal-fullscreen-xxl-down .modal-header{border-radius:0}html .modal-fullscreen-xxl-down .modal-body,html[data-netbox-color-mode=dark] .modal-fullscreen-xxl-down .modal-body,html[data-netbox-color-mode=light] .modal-fullscreen-xxl-down .modal-body{overflow-y:auto}html .modal-fullscreen-xxl-down .modal-footer,html[data-netbox-color-mode=dark] .modal-fullscreen-xxl-down .modal-footer,html[data-netbox-color-mode=light] .modal-fullscreen-xxl-down .modal-footer{border-radius:0}}@media print{html .tooltip,html[data-netbox-color-mode=dark] .tooltip,html[data-netbox-color-mode=light] .tooltip{position:absolute;z-index:1080;display:block;margin:0;font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}html .tooltip.show,html[data-netbox-color-mode=dark] .tooltip.show,html[data-netbox-color-mode=light] .tooltip.show{opacity:.9}html .tooltip .tooltip-arrow,html[data-netbox-color-mode=dark] .tooltip .tooltip-arrow,html[data-netbox-color-mode=light] .tooltip .tooltip-arrow{position:absolute;display:block;width:.8rem;height:.4rem}html .tooltip .tooltip-arrow:before,html[data-netbox-color-mode=dark] .tooltip .tooltip-arrow:before,html[data-netbox-color-mode=light] .tooltip .tooltip-arrow:before{position:absolute;content:"";border-color:transparent;border-style:solid}}@media print{html .bs-tooltip-top,html .bs-tooltip-auto[data-popper-placement^=top],html[data-netbox-color-mode=dark] .bs-tooltip-top,html[data-netbox-color-mode=light] .bs-tooltip-top{padding:.4rem 0}html .bs-tooltip-top .tooltip-arrow,html .bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow,html[data-netbox-color-mode=dark] .bs-tooltip-top .tooltip-arrow,html[data-netbox-color-mode=light] .bs-tooltip-top .tooltip-arrow{bottom:0}html .bs-tooltip-top .tooltip-arrow:before,html .bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow:before,html[data-netbox-color-mode=dark] .bs-tooltip-top .tooltip-arrow:before,html[data-netbox-color-mode=light] .bs-tooltip-top .tooltip-arrow:before{top:-1px;border-width:.4rem .4rem 0;border-top-color:#000}}@media print{html .bs-tooltip-end,html .bs-tooltip-auto[data-popper-placement^=right],html[data-netbox-color-mode=dark] .bs-tooltip-end,html[data-netbox-color-mode=light] .bs-tooltip-end{padding:0 .4rem}html .bs-tooltip-end .tooltip-arrow,html .bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow,html[data-netbox-color-mode=dark] .bs-tooltip-end .tooltip-arrow,html[data-netbox-color-mode=light] .bs-tooltip-end .tooltip-arrow{left:0;width:.4rem;height:.8rem}html .bs-tooltip-end .tooltip-arrow:before,html .bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow:before,html[data-netbox-color-mode=dark] .bs-tooltip-end .tooltip-arrow:before,html[data-netbox-color-mode=light] .bs-tooltip-end .tooltip-arrow:before{right:-1px;border-width:.4rem .4rem .4rem 0;border-right-color:#000}}@media print{html .bs-tooltip-bottom,html .bs-tooltip-auto[data-popper-placement^=bottom],html[data-netbox-color-mode=dark] .bs-tooltip-bottom,html[data-netbox-color-mode=light] .bs-tooltip-bottom{padding:.4rem 0}html .bs-tooltip-bottom .tooltip-arrow,html .bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow,html[data-netbox-color-mode=dark] .bs-tooltip-bottom .tooltip-arrow,html[data-netbox-color-mode=light] .bs-tooltip-bottom .tooltip-arrow{top:0}html .bs-tooltip-bottom .tooltip-arrow:before,html .bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow:before,html[data-netbox-color-mode=dark] .bs-tooltip-bottom .tooltip-arrow:before,html[data-netbox-color-mode=light] .bs-tooltip-bottom .tooltip-arrow:before{bottom:-1px;border-width:0 .4rem .4rem;border-bottom-color:#000}}@media print{html .bs-tooltip-start,html .bs-tooltip-auto[data-popper-placement^=left],html[data-netbox-color-mode=dark] .bs-tooltip-start,html[data-netbox-color-mode=light] .bs-tooltip-start{padding:0 .4rem}html .bs-tooltip-start .tooltip-arrow,html .bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow,html[data-netbox-color-mode=dark] .bs-tooltip-start .tooltip-arrow,html[data-netbox-color-mode=light] .bs-tooltip-start .tooltip-arrow{right:0;width:.4rem;height:.8rem}html .bs-tooltip-start .tooltip-arrow:before,html .bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow:before,html[data-netbox-color-mode=dark] .bs-tooltip-start .tooltip-arrow:before,html[data-netbox-color-mode=light] .bs-tooltip-start .tooltip-arrow:before{left:-1px;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}}@media print{html .tooltip-inner,html[data-netbox-color-mode=dark] .tooltip-inner,html[data-netbox-color-mode=light] .tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.375rem}}@media print{html .popover,html[data-netbox-color-mode=dark] .popover,html[data-netbox-color-mode=light] .popover{position:absolute;top:0;left:0;z-index:1070;display:block;max-width:276px;font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.75rem}html .popover .popover-arrow,html[data-netbox-color-mode=dark] .popover .popover-arrow,html[data-netbox-color-mode=light] .popover .popover-arrow{position:absolute;display:block;width:1rem;height:.5rem}html .popover .popover-arrow:before,html .popover .popover-arrow:after,html[data-netbox-color-mode=dark] .popover .popover-arrow:before,html[data-netbox-color-mode=dark] .popover .popover-arrow:after,html[data-netbox-color-mode=light] .popover .popover-arrow:before,html[data-netbox-color-mode=light] .popover .popover-arrow:after{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}}@media print{html .bs-popover-top>.popover-arrow,html .bs-popover-auto[data-popper-placement^=top]>.popover-arrow,html[data-netbox-color-mode=dark] .bs-popover-top>.popover-arrow,html[data-netbox-color-mode=light] .bs-popover-top>.popover-arrow{bottom:calc(-.5rem - 1px)}html .bs-popover-top>.popover-arrow:before,html .bs-popover-auto[data-popper-placement^=top]>.popover-arrow:before,html[data-netbox-color-mode=dark] .bs-popover-top>.popover-arrow:before,html[data-netbox-color-mode=light] .bs-popover-top>.popover-arrow:before{bottom:0;border-width:.5rem .5rem 0;border-top-color:#00000040}html .bs-popover-top>.popover-arrow:after,html .bs-popover-auto[data-popper-placement^=top]>.popover-arrow:after,html[data-netbox-color-mode=dark] .bs-popover-top>.popover-arrow:after,html[data-netbox-color-mode=light] .bs-popover-top>.popover-arrow:after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}}@media print{html .bs-popover-end>.popover-arrow,html .bs-popover-auto[data-popper-placement^=right]>.popover-arrow,html[data-netbox-color-mode=dark] .bs-popover-end>.popover-arrow,html[data-netbox-color-mode=light] .bs-popover-end>.popover-arrow{left:calc(-.5rem - 1px);width:.5rem;height:1rem}html .bs-popover-end>.popover-arrow:before,html .bs-popover-auto[data-popper-placement^=right]>.popover-arrow:before,html[data-netbox-color-mode=dark] .bs-popover-end>.popover-arrow:before,html[data-netbox-color-mode=light] .bs-popover-end>.popover-arrow:before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:#00000040}html .bs-popover-end>.popover-arrow:after,html .bs-popover-auto[data-popper-placement^=right]>.popover-arrow:after,html[data-netbox-color-mode=dark] .bs-popover-end>.popover-arrow:after,html[data-netbox-color-mode=light] .bs-popover-end>.popover-arrow:after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}}@media print{html .bs-popover-bottom>.popover-arrow,html .bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow,html[data-netbox-color-mode=dark] .bs-popover-bottom>.popover-arrow,html[data-netbox-color-mode=light] .bs-popover-bottom>.popover-arrow{top:calc(-.5rem - 1px)}html .bs-popover-bottom>.popover-arrow:before,html .bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow:before,html[data-netbox-color-mode=dark] .bs-popover-bottom>.popover-arrow:before,html[data-netbox-color-mode=light] .bs-popover-bottom>.popover-arrow:before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:#00000040}html .bs-popover-bottom>.popover-arrow:after,html .bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow:after,html[data-netbox-color-mode=dark] .bs-popover-bottom>.popover-arrow:after,html[data-netbox-color-mode=light] .bs-popover-bottom>.popover-arrow:after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#fff}html .bs-popover-bottom .popover-header:before,html .bs-popover-auto[data-popper-placement^=bottom] .popover-header:before,html[data-netbox-color-mode=dark] .bs-popover-bottom .popover-header:before,html[data-netbox-color-mode=light] .bs-popover-bottom .popover-header:before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f0f0f0}}@media print{html .bs-popover-start>.popover-arrow,html .bs-popover-auto[data-popper-placement^=left]>.popover-arrow,html[data-netbox-color-mode=dark] .bs-popover-start>.popover-arrow,html[data-netbox-color-mode=light] .bs-popover-start>.popover-arrow{right:calc(-.5rem - 1px);width:.5rem;height:1rem}html .bs-popover-start>.popover-arrow:before,html .bs-popover-auto[data-popper-placement^=left]>.popover-arrow:before,html[data-netbox-color-mode=dark] .bs-popover-start>.popover-arrow:before,html[data-netbox-color-mode=light] .bs-popover-start>.popover-arrow:before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:#00000040}html .bs-popover-start>.popover-arrow:after,html .bs-popover-auto[data-popper-placement^=left]>.popover-arrow:after,html[data-netbox-color-mode=dark] .bs-popover-start>.popover-arrow:after,html[data-netbox-color-mode=light] .bs-popover-start>.popover-arrow:after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}}@media print{html .popover-header,html[data-netbox-color-mode=dark] .popover-header,html[data-netbox-color-mode=light] .popover-header{padding:.5rem 1rem;margin-bottom:0;font-size:1rem;background-color:#f0f0f0;border-bottom:1px solid rgba(0,0,0,.2);border-top-left-radius:calc(.75rem - 1px);border-top-right-radius:calc(.75rem - 1px)}html .popover-header:empty,html[data-netbox-color-mode=dark] .popover-header:empty,html[data-netbox-color-mode=light] .popover-header:empty{display:none}}@media print{html .popover-body,html[data-netbox-color-mode=dark] .popover-body,html[data-netbox-color-mode=light] .popover-body{padding:1rem;color:#212529}}@media print{html .carousel,html[data-netbox-color-mode=dark] .carousel,html[data-netbox-color-mode=light] .carousel{position:relative}}@media print{html .carousel.pointer-event,html[data-netbox-color-mode=dark] .carousel.pointer-event,html[data-netbox-color-mode=light] .carousel.pointer-event{touch-action:pan-y}}@media print{html .carousel-inner,html[data-netbox-color-mode=dark] .carousel-inner,html[data-netbox-color-mode=light] .carousel-inner{position:relative;width:100%;overflow:hidden}html .carousel-inner:after,html[data-netbox-color-mode=dark] .carousel-inner:after,html[data-netbox-color-mode=light] .carousel-inner:after{display:block;clear:both;content:""}}@media print{html .carousel-item,html[data-netbox-color-mode=dark] .carousel-item,html[data-netbox-color-mode=light] .carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;backface-visibility:hidden;transition:transform .6s ease-in-out}}@media print and (prefers-reduced-motion: reduce){html .carousel-item,html[data-netbox-color-mode=dark] .carousel-item,html[data-netbox-color-mode=light] .carousel-item{transition:none}}@media print{html .carousel-item.active,html .carousel-item-next,html .carousel-item-prev,html[data-netbox-color-mode=dark] .carousel-item.active,html[data-netbox-color-mode=dark] .carousel-item-next,html[data-netbox-color-mode=dark] .carousel-item-prev,html[data-netbox-color-mode=light] .carousel-item.active,html[data-netbox-color-mode=light] .carousel-item-next,html[data-netbox-color-mode=light] .carousel-item-prev{display:block}}@media print{html .carousel-item-next:not(.carousel-item-start),html .active.carousel-item-end,html[data-netbox-color-mode=dark] .carousel-item-next:not(.carousel-item-start),html[data-netbox-color-mode=dark] .active.carousel-item-end,html[data-netbox-color-mode=light] .carousel-item-next:not(.carousel-item-start),html[data-netbox-color-mode=light] .active.carousel-item-end{transform:translate(100%)}}@media print{html .carousel-item-prev:not(.carousel-item-end),html .active.carousel-item-start,html[data-netbox-color-mode=dark] .carousel-item-prev:not(.carousel-item-end),html[data-netbox-color-mode=dark] .active.carousel-item-start,html[data-netbox-color-mode=light] .carousel-item-prev:not(.carousel-item-end),html[data-netbox-color-mode=light] .active.carousel-item-start{transform:translate(-100%)}}@media print{html .carousel-fade .carousel-item,html[data-netbox-color-mode=dark] .carousel-fade .carousel-item,html[data-netbox-color-mode=light] .carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}html .carousel-fade .carousel-item.active,html .carousel-fade .carousel-item-next.carousel-item-start,html .carousel-fade .carousel-item-prev.carousel-item-end,html[data-netbox-color-mode=dark] .carousel-fade .carousel-item.active,html[data-netbox-color-mode=dark] .carousel-fade .carousel-item-next.carousel-item-start,html[data-netbox-color-mode=dark] .carousel-fade .carousel-item-prev.carousel-item-end,html[data-netbox-color-mode=light] .carousel-fade .carousel-item.active,html[data-netbox-color-mode=light] .carousel-fade .carousel-item-next.carousel-item-start,html[data-netbox-color-mode=light] .carousel-fade .carousel-item-prev.carousel-item-end{z-index:1;opacity:1}html .carousel-fade .active.carousel-item-start,html .carousel-fade .active.carousel-item-end,html[data-netbox-color-mode=dark] .carousel-fade .active.carousel-item-start,html[data-netbox-color-mode=dark] .carousel-fade .active.carousel-item-end,html[data-netbox-color-mode=light] .carousel-fade .active.carousel-item-start,html[data-netbox-color-mode=light] .carousel-fade .active.carousel-item-end{z-index:0;opacity:0;transition:opacity 0s .6s}}@media print and (prefers-reduced-motion: reduce){html .carousel-fade .active.carousel-item-start,html .carousel-fade .active.carousel-item-end,html[data-netbox-color-mode=dark] .carousel-fade .active.carousel-item-start,html[data-netbox-color-mode=dark] .carousel-fade .active.carousel-item-end,html[data-netbox-color-mode=light] .carousel-fade .active.carousel-item-start,html[data-netbox-color-mode=light] .carousel-fade .active.carousel-item-end{transition:none}}@media print{html .carousel-control-prev,html .carousel-control-next,html[data-netbox-color-mode=dark] .carousel-control-prev,html[data-netbox-color-mode=dark] .carousel-control-next,html[data-netbox-color-mode=light] .carousel-control-prev,html[data-netbox-color-mode=light] .carousel-control-next{position:absolute;top:0;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:none;border:0;opacity:.5;transition:opacity .15s ease}}@media print and (prefers-reduced-motion: reduce){html .carousel-control-prev,html .carousel-control-next,html[data-netbox-color-mode=dark] .carousel-control-prev,html[data-netbox-color-mode=dark] .carousel-control-next,html[data-netbox-color-mode=light] .carousel-control-prev,html[data-netbox-color-mode=light] .carousel-control-next{transition:none}}@media print{html .carousel-control-prev:hover,html .carousel-control-prev:focus,html .carousel-control-next:hover,html .carousel-control-next:focus,html[data-netbox-color-mode=dark] .carousel-control-prev:hover,html[data-netbox-color-mode=dark] .carousel-control-prev:focus,html[data-netbox-color-mode=dark] .carousel-control-next:hover,html[data-netbox-color-mode=dark] .carousel-control-next:focus,html[data-netbox-color-mode=light] .carousel-control-prev:hover,html[data-netbox-color-mode=light] .carousel-control-prev:focus,html[data-netbox-color-mode=light] .carousel-control-next:hover,html[data-netbox-color-mode=light] .carousel-control-next:focus{color:#fff;text-decoration:none;outline:0;opacity:.9}}@media print{html .carousel-control-prev,html[data-netbox-color-mode=dark] .carousel-control-prev,html[data-netbox-color-mode=light] .carousel-control-prev{left:0}}@media print{html .carousel-control-next,html[data-netbox-color-mode=dark] .carousel-control-next,html[data-netbox-color-mode=light] .carousel-control-next{right:0}}@media print{html .carousel-control-prev-icon,html .carousel-control-next-icon,html[data-netbox-color-mode=dark] .carousel-control-prev-icon,html[data-netbox-color-mode=dark] .carousel-control-next-icon,html[data-netbox-color-mode=light] .carousel-control-prev-icon,html[data-netbox-color-mode=light] .carousel-control-next-icon{display:inline-block;width:2rem;height:2rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}}@media print{html .carousel-control-prev-icon,html[data-netbox-color-mode=dark] .carousel-control-prev-icon,html[data-netbox-color-mode=light] .carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e")}}@media print{html .carousel-control-next-icon,html[data-netbox-color-mode=dark] .carousel-control-next-icon,html[data-netbox-color-mode=light] .carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}}@media print{html .carousel-indicators,html[data-netbox-color-mode=dark] .carousel-indicators,html[data-netbox-color-mode=light] .carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:2;display:flex;justify-content:center;padding:0;margin-right:15%;margin-bottom:1rem;margin-left:15%;list-style:none}html .carousel-indicators [data-bs-target],html[data-netbox-color-mode=dark] .carousel-indicators [data-bs-target],html[data-netbox-color-mode=light] .carousel-indicators [data-bs-target]{box-sizing:content-box;flex:0 1 auto;width:30px;height:3px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border:0;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}}@media print and (prefers-reduced-motion: reduce){html .carousel-indicators [data-bs-target],html[data-netbox-color-mode=dark] .carousel-indicators [data-bs-target],html[data-netbox-color-mode=light] .carousel-indicators [data-bs-target]{transition:none}}@media print{html .carousel-indicators .active,html[data-netbox-color-mode=dark] .carousel-indicators .active,html[data-netbox-color-mode=light] .carousel-indicators .active{opacity:1}}@media print{html .carousel-caption,html[data-netbox-color-mode=dark] .carousel-caption,html[data-netbox-color-mode=light] .carousel-caption{position:absolute;right:15%;bottom:1.25rem;left:15%;padding-top:1.25rem;padding-bottom:1.25rem;color:#fff;text-align:center}}@media print{html .carousel-dark .carousel-control-prev-icon,html .carousel-dark .carousel-control-next-icon,html[data-netbox-color-mode=dark] .carousel-dark .carousel-control-prev-icon,html[data-netbox-color-mode=dark] .carousel-dark .carousel-control-next-icon,html[data-netbox-color-mode=light] .carousel-dark .carousel-control-prev-icon,html[data-netbox-color-mode=light] .carousel-dark .carousel-control-next-icon{filter:invert(1) grayscale(100)}html .carousel-dark .carousel-indicators [data-bs-target],html[data-netbox-color-mode=dark] .carousel-dark .carousel-indicators [data-bs-target],html[data-netbox-color-mode=light] .carousel-dark .carousel-indicators [data-bs-target]{background-color:#000}html .carousel-dark .carousel-caption,html[data-netbox-color-mode=dark] .carousel-dark .carousel-caption,html[data-netbox-color-mode=light] .carousel-dark .carousel-caption{color:#000}}@media print{@keyframes spinner-border{to{transform:rotate(360deg)}}}@media print{html .spinner-border,html[data-netbox-color-mode=dark] .spinner-border,html[data-netbox-color-mode=light] .spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:-.125em;border:.25em solid currentColor;border-right-color:transparent;border-radius:50%;animation:.75s linear infinite spinner-border}}@media print{html .spinner-border-sm,html[data-netbox-color-mode=dark] .spinner-border-sm,html[data-netbox-color-mode=light] .spinner-border-sm{width:1rem;height:1rem;border-width:.2em}}@media print{@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}}@media print{html .spinner-grow,html[data-netbox-color-mode=dark] .spinner-grow,html[data-netbox-color-mode=light] .spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:-.125em;background-color:currentColor;border-radius:50%;opacity:0;animation:.75s linear infinite spinner-grow}}@media print{html .spinner-grow-sm,html[data-netbox-color-mode=dark] .spinner-grow-sm,html[data-netbox-color-mode=light] .spinner-grow-sm{width:1rem;height:1rem}}@media print and (prefers-reduced-motion: reduce){html .spinner-border,html .spinner-grow,html[data-netbox-color-mode=dark] .spinner-border,html[data-netbox-color-mode=dark] .spinner-grow,html[data-netbox-color-mode=light] .spinner-border,html[data-netbox-color-mode=light] .spinner-grow{animation-duration:1.5s}}@media print{html .clearfix:after,html[data-netbox-color-mode=dark] .clearfix:after,html[data-netbox-color-mode=light] .clearfix:after{display:block;clear:both;content:""}}@media print{html .link-primary,html[data-netbox-color-mode=dark] .link-primary,html[data-netbox-color-mode=light] .link-primary{color:#337ab7}html .link-primary:hover,html .link-primary:focus,html[data-netbox-color-mode=dark] .link-primary:hover,html[data-netbox-color-mode=dark] .link-primary:focus,html[data-netbox-color-mode=light] .link-primary:hover,html[data-netbox-color-mode=light] .link-primary:focus{color:#296292}}@media print{html .link-secondary,html[data-netbox-color-mode=dark] .link-secondary,html[data-netbox-color-mode=light] .link-secondary{color:#6c757d}html .link-secondary:hover,html .link-secondary:focus,html[data-netbox-color-mode=dark] .link-secondary:hover,html[data-netbox-color-mode=dark] .link-secondary:focus,html[data-netbox-color-mode=light] .link-secondary:hover,html[data-netbox-color-mode=light] .link-secondary:focus{color:#565e64}}@media print{html .link-success,html[data-netbox-color-mode=dark] .link-success,html[data-netbox-color-mode=light] .link-success{color:#198754}html .link-success:hover,html .link-success:focus,html[data-netbox-color-mode=dark] .link-success:hover,html[data-netbox-color-mode=dark] .link-success:focus,html[data-netbox-color-mode=light] .link-success:hover,html[data-netbox-color-mode=light] .link-success:focus{color:#146c43}}@media print{html .link-info,html[data-netbox-color-mode=dark] .link-info,html[data-netbox-color-mode=light] .link-info{color:#0dcaf0}html .link-info:hover,html .link-info:focus,html[data-netbox-color-mode=dark] .link-info:hover,html[data-netbox-color-mode=dark] .link-info:focus,html[data-netbox-color-mode=light] .link-info:hover,html[data-netbox-color-mode=light] .link-info:focus{color:#3dd5f3}}@media print{html .link-warning,html[data-netbox-color-mode=dark] .link-warning,html[data-netbox-color-mode=light] .link-warning{color:#ffc107}html .link-warning:hover,html .link-warning:focus,html[data-netbox-color-mode=dark] .link-warning:hover,html[data-netbox-color-mode=dark] .link-warning:focus,html[data-netbox-color-mode=light] .link-warning:hover,html[data-netbox-color-mode=light] .link-warning:focus{color:#ffcd39}}@media print{html .link-danger,html[data-netbox-color-mode=dark] .link-danger,html[data-netbox-color-mode=light] .link-danger{color:#dc3545}html .link-danger:hover,html .link-danger:focus,html[data-netbox-color-mode=dark] .link-danger:hover,html[data-netbox-color-mode=dark] .link-danger:focus,html[data-netbox-color-mode=light] .link-danger:hover,html[data-netbox-color-mode=light] .link-danger:focus{color:#b02a37}}@media print{html .link-light,html[data-netbox-color-mode=dark] .link-light,html[data-netbox-color-mode=light] .link-light{color:#f8f9fa}html .link-light:hover,html .link-light:focus,html[data-netbox-color-mode=dark] .link-light:hover,html[data-netbox-color-mode=dark] .link-light:focus,html[data-netbox-color-mode=light] .link-light:hover,html[data-netbox-color-mode=light] .link-light:focus{color:#f9fafb}}@media print{html .link-dark,html[data-netbox-color-mode=dark] .link-dark,html[data-netbox-color-mode=light] .link-dark{color:#212529}html .link-dark:hover,html .link-dark:focus,html[data-netbox-color-mode=dark] .link-dark:hover,html[data-netbox-color-mode=dark] .link-dark:focus,html[data-netbox-color-mode=light] .link-dark:hover,html[data-netbox-color-mode=light] .link-dark:focus{color:#1a1e21}}@media print{html .link-red,html[data-netbox-color-mode=dark] .link-red,html[data-netbox-color-mode=light] .link-red{color:#dc3545}html .link-red:hover,html .link-red:focus,html[data-netbox-color-mode=dark] .link-red:hover,html[data-netbox-color-mode=dark] .link-red:focus,html[data-netbox-color-mode=light] .link-red:hover,html[data-netbox-color-mode=light] .link-red:focus{color:#b02a37}}@media print{html .link-yellow,html[data-netbox-color-mode=dark] .link-yellow,html[data-netbox-color-mode=light] .link-yellow{color:#ffc107}html .link-yellow:hover,html .link-yellow:focus,html[data-netbox-color-mode=dark] .link-yellow:hover,html[data-netbox-color-mode=dark] .link-yellow:focus,html[data-netbox-color-mode=light] .link-yellow:hover,html[data-netbox-color-mode=light] .link-yellow:focus{color:#ffcd39}}@media print{html .link-green,html[data-netbox-color-mode=dark] .link-green,html[data-netbox-color-mode=light] .link-green{color:#198754}html .link-green:hover,html .link-green:focus,html[data-netbox-color-mode=dark] .link-green:hover,html[data-netbox-color-mode=dark] .link-green:focus,html[data-netbox-color-mode=light] .link-green:hover,html[data-netbox-color-mode=light] .link-green:focus{color:#146c43}}@media print{html .link-blue,html[data-netbox-color-mode=dark] .link-blue,html[data-netbox-color-mode=light] .link-blue{color:#0d6efd}html .link-blue:hover,html .link-blue:focus,html[data-netbox-color-mode=dark] .link-blue:hover,html[data-netbox-color-mode=dark] .link-blue:focus,html[data-netbox-color-mode=light] .link-blue:hover,html[data-netbox-color-mode=light] .link-blue:focus{color:#0a58ca}}@media print{html .link-cyan,html[data-netbox-color-mode=dark] .link-cyan,html[data-netbox-color-mode=light] .link-cyan{color:#0dcaf0}html .link-cyan:hover,html .link-cyan:focus,html[data-netbox-color-mode=dark] .link-cyan:hover,html[data-netbox-color-mode=dark] .link-cyan:focus,html[data-netbox-color-mode=light] .link-cyan:hover,html[data-netbox-color-mode=light] .link-cyan:focus{color:#3dd5f3}}@media print{html .link-indigo,html[data-netbox-color-mode=dark] .link-indigo,html[data-netbox-color-mode=light] .link-indigo{color:#6610f2}html .link-indigo:hover,html .link-indigo:focus,html[data-netbox-color-mode=dark] .link-indigo:hover,html[data-netbox-color-mode=dark] .link-indigo:focus,html[data-netbox-color-mode=light] .link-indigo:hover,html[data-netbox-color-mode=light] .link-indigo:focus{color:#520dc2}}@media print{html .link-purple,html[data-netbox-color-mode=dark] .link-purple,html[data-netbox-color-mode=light] .link-purple{color:#6f42c1}html .link-purple:hover,html .link-purple:focus,html[data-netbox-color-mode=dark] .link-purple:hover,html[data-netbox-color-mode=dark] .link-purple:focus,html[data-netbox-color-mode=light] .link-purple:hover,html[data-netbox-color-mode=light] .link-purple:focus{color:#59359a}}@media print{html .link-pink,html[data-netbox-color-mode=dark] .link-pink,html[data-netbox-color-mode=light] .link-pink{color:#d63384}html .link-pink:hover,html .link-pink:focus,html[data-netbox-color-mode=dark] .link-pink:hover,html[data-netbox-color-mode=dark] .link-pink:focus,html[data-netbox-color-mode=light] .link-pink:hover,html[data-netbox-color-mode=light] .link-pink:focus{color:#ab296a}}@media print{html .link-darker,html[data-netbox-color-mode=dark] .link-darker,html[data-netbox-color-mode=light] .link-darker{color:#1b1f22}html .link-darker:hover,html .link-darker:focus,html[data-netbox-color-mode=dark] .link-darker:hover,html[data-netbox-color-mode=dark] .link-darker:focus,html[data-netbox-color-mode=light] .link-darker:hover,html[data-netbox-color-mode=light] .link-darker:focus{color:#16191b}}@media print{html .link-darkest,html[data-netbox-color-mode=dark] .link-darkest,html[data-netbox-color-mode=light] .link-darkest{color:#171b1d}html .link-darkest:hover,html .link-darkest:focus,html[data-netbox-color-mode=dark] .link-darkest:hover,html[data-netbox-color-mode=dark] .link-darkest:focus,html[data-netbox-color-mode=light] .link-darkest:hover,html[data-netbox-color-mode=light] .link-darkest:focus{color:#121617}}@media print{html .link-gray,html[data-netbox-color-mode=dark] .link-gray,html[data-netbox-color-mode=light] .link-gray{color:#ced4da}html .link-gray:hover,html .link-gray:focus,html[data-netbox-color-mode=dark] .link-gray:hover,html[data-netbox-color-mode=dark] .link-gray:focus,html[data-netbox-color-mode=light] .link-gray:hover,html[data-netbox-color-mode=light] .link-gray:focus{color:#d8dde1}}@media print{html .link-gray-100,html[data-netbox-color-mode=dark] .link-gray-100,html[data-netbox-color-mode=light] .link-gray-100{color:#f8f9fa}html .link-gray-100:hover,html .link-gray-100:focus,html[data-netbox-color-mode=dark] .link-gray-100:hover,html[data-netbox-color-mode=dark] .link-gray-100:focus,html[data-netbox-color-mode=light] .link-gray-100:hover,html[data-netbox-color-mode=light] .link-gray-100:focus{color:#f9fafb}}@media print{html .link-gray-200,html[data-netbox-color-mode=dark] .link-gray-200,html[data-netbox-color-mode=light] .link-gray-200{color:#e9ecef}html .link-gray-200:hover,html .link-gray-200:focus,html[data-netbox-color-mode=dark] .link-gray-200:hover,html[data-netbox-color-mode=dark] .link-gray-200:focus,html[data-netbox-color-mode=light] .link-gray-200:hover,html[data-netbox-color-mode=light] .link-gray-200:focus{color:#edf0f2}}@media print{html .link-gray-300,html[data-netbox-color-mode=dark] .link-gray-300,html[data-netbox-color-mode=light] .link-gray-300{color:#dee2e6}html .link-gray-300:hover,html .link-gray-300:focus,html[data-netbox-color-mode=dark] .link-gray-300:hover,html[data-netbox-color-mode=dark] .link-gray-300:focus,html[data-netbox-color-mode=light] .link-gray-300:hover,html[data-netbox-color-mode=light] .link-gray-300:focus{color:#e5e8eb}}@media print{html .link-gray-400,html[data-netbox-color-mode=dark] .link-gray-400,html[data-netbox-color-mode=light] .link-gray-400{color:#ced4da}html .link-gray-400:hover,html .link-gray-400:focus,html[data-netbox-color-mode=dark] .link-gray-400:hover,html[data-netbox-color-mode=dark] .link-gray-400:focus,html[data-netbox-color-mode=light] .link-gray-400:hover,html[data-netbox-color-mode=light] .link-gray-400:focus{color:#d8dde1}}@media print{html .link-gray-500,html[data-netbox-color-mode=dark] .link-gray-500,html[data-netbox-color-mode=light] .link-gray-500{color:#adb5bd}html .link-gray-500:hover,html .link-gray-500:focus,html[data-netbox-color-mode=dark] .link-gray-500:hover,html[data-netbox-color-mode=dark] .link-gray-500:focus,html[data-netbox-color-mode=light] .link-gray-500:hover,html[data-netbox-color-mode=light] .link-gray-500:focus{color:#bdc4ca}}@media print{html .link-gray-600,html[data-netbox-color-mode=dark] .link-gray-600,html[data-netbox-color-mode=light] .link-gray-600{color:#6c757d}html .link-gray-600:hover,html .link-gray-600:focus,html[data-netbox-color-mode=dark] .link-gray-600:hover,html[data-netbox-color-mode=dark] .link-gray-600:focus,html[data-netbox-color-mode=light] .link-gray-600:hover,html[data-netbox-color-mode=light] .link-gray-600:focus{color:#565e64}}@media print{html .link-gray-700,html[data-netbox-color-mode=dark] .link-gray-700,html[data-netbox-color-mode=light] .link-gray-700{color:#495057}html .link-gray-700:hover,html .link-gray-700:focus,html[data-netbox-color-mode=dark] .link-gray-700:hover,html[data-netbox-color-mode=dark] .link-gray-700:focus,html[data-netbox-color-mode=light] .link-gray-700:hover,html[data-netbox-color-mode=light] .link-gray-700:focus{color:#3a4046}}@media print{html .link-gray-800,html[data-netbox-color-mode=dark] .link-gray-800,html[data-netbox-color-mode=light] .link-gray-800{color:#343a40}html .link-gray-800:hover,html .link-gray-800:focus,html[data-netbox-color-mode=dark] .link-gray-800:hover,html[data-netbox-color-mode=dark] .link-gray-800:focus,html[data-netbox-color-mode=light] .link-gray-800:hover,html[data-netbox-color-mode=light] .link-gray-800:focus{color:#2a2e33}}@media print{html .link-gray-900,html[data-netbox-color-mode=dark] .link-gray-900,html[data-netbox-color-mode=light] .link-gray-900{color:#212529}html .link-gray-900:hover,html .link-gray-900:focus,html[data-netbox-color-mode=dark] .link-gray-900:hover,html[data-netbox-color-mode=dark] .link-gray-900:focus,html[data-netbox-color-mode=light] .link-gray-900:hover,html[data-netbox-color-mode=light] .link-gray-900:focus{color:#1a1e21}}@media print{html .link-red-100,html[data-netbox-color-mode=dark] .link-red-100,html[data-netbox-color-mode=light] .link-red-100{color:#f8d7da}html .link-red-100:hover,html .link-red-100:focus,html[data-netbox-color-mode=dark] .link-red-100:hover,html[data-netbox-color-mode=dark] .link-red-100:focus,html[data-netbox-color-mode=light] .link-red-100:hover,html[data-netbox-color-mode=light] .link-red-100:focus{color:#f9dfe1}}@media print{html .link-red-200,html[data-netbox-color-mode=dark] .link-red-200,html[data-netbox-color-mode=light] .link-red-200{color:#f1aeb5}html .link-red-200:hover,html .link-red-200:focus,html[data-netbox-color-mode=dark] .link-red-200:hover,html[data-netbox-color-mode=dark] .link-red-200:focus,html[data-netbox-color-mode=light] .link-red-200:hover,html[data-netbox-color-mode=light] .link-red-200:focus{color:#f4bec4}}@media print{html .link-red-300,html[data-netbox-color-mode=dark] .link-red-300,html[data-netbox-color-mode=light] .link-red-300{color:#ea868f}html .link-red-300:hover,html .link-red-300:focus,html[data-netbox-color-mode=dark] .link-red-300:hover,html[data-netbox-color-mode=dark] .link-red-300:focus,html[data-netbox-color-mode=light] .link-red-300:hover,html[data-netbox-color-mode=light] .link-red-300:focus{color:#ee9ea5}}@media print{html .link-red-400,html[data-netbox-color-mode=dark] .link-red-400,html[data-netbox-color-mode=light] .link-red-400{color:#e35d6a}html .link-red-400:hover,html .link-red-400:focus,html[data-netbox-color-mode=dark] .link-red-400:hover,html[data-netbox-color-mode=dark] .link-red-400:focus,html[data-netbox-color-mode=light] .link-red-400:hover,html[data-netbox-color-mode=light] .link-red-400:focus{color:#e97d88}}@media print{html .link-red-500,html[data-netbox-color-mode=dark] .link-red-500,html[data-netbox-color-mode=light] .link-red-500{color:#dc3545}html .link-red-500:hover,html .link-red-500:focus,html[data-netbox-color-mode=dark] .link-red-500:hover,html[data-netbox-color-mode=dark] .link-red-500:focus,html[data-netbox-color-mode=light] .link-red-500:hover,html[data-netbox-color-mode=light] .link-red-500:focus{color:#b02a37}}@media print{html .link-red-600,html[data-netbox-color-mode=dark] .link-red-600,html[data-netbox-color-mode=light] .link-red-600{color:#b02a37}html .link-red-600:hover,html .link-red-600:focus,html[data-netbox-color-mode=dark] .link-red-600:hover,html[data-netbox-color-mode=dark] .link-red-600:focus,html[data-netbox-color-mode=light] .link-red-600:hover,html[data-netbox-color-mode=light] .link-red-600:focus{color:#8d222c}}@media print{html .link-red-700,html[data-netbox-color-mode=dark] .link-red-700,html[data-netbox-color-mode=light] .link-red-700{color:#842029}html .link-red-700:hover,html .link-red-700:focus,html[data-netbox-color-mode=dark] .link-red-700:hover,html[data-netbox-color-mode=dark] .link-red-700:focus,html[data-netbox-color-mode=light] .link-red-700:hover,html[data-netbox-color-mode=light] .link-red-700:focus{color:#6a1a21}}@media print{html .link-red-800,html[data-netbox-color-mode=dark] .link-red-800,html[data-netbox-color-mode=light] .link-red-800{color:#58151c}html .link-red-800:hover,html .link-red-800:focus,html[data-netbox-color-mode=dark] .link-red-800:hover,html[data-netbox-color-mode=dark] .link-red-800:focus,html[data-netbox-color-mode=light] .link-red-800:hover,html[data-netbox-color-mode=light] .link-red-800:focus{color:#461116}}@media print{html .link-red-900,html[data-netbox-color-mode=dark] .link-red-900,html[data-netbox-color-mode=light] .link-red-900{color:#2c0b0e}html .link-red-900:hover,html .link-red-900:focus,html[data-netbox-color-mode=dark] .link-red-900:hover,html[data-netbox-color-mode=dark] .link-red-900:focus,html[data-netbox-color-mode=light] .link-red-900:hover,html[data-netbox-color-mode=light] .link-red-900:focus{color:#23090b}}@media print{html .link-yellow-100,html[data-netbox-color-mode=dark] .link-yellow-100,html[data-netbox-color-mode=light] .link-yellow-100{color:#fff3cd}html .link-yellow-100:hover,html .link-yellow-100:focus,html[data-netbox-color-mode=dark] .link-yellow-100:hover,html[data-netbox-color-mode=dark] .link-yellow-100:focus,html[data-netbox-color-mode=light] .link-yellow-100:hover,html[data-netbox-color-mode=light] .link-yellow-100:focus{color:#fff5d7}}@media print{html .link-yellow-200,html[data-netbox-color-mode=dark] .link-yellow-200,html[data-netbox-color-mode=light] .link-yellow-200{color:#ffe69c}html .link-yellow-200:hover,html .link-yellow-200:focus,html[data-netbox-color-mode=dark] .link-yellow-200:hover,html[data-netbox-color-mode=dark] .link-yellow-200:focus,html[data-netbox-color-mode=light] .link-yellow-200:hover,html[data-netbox-color-mode=light] .link-yellow-200:focus{color:#ffebb0}}@media print{html .link-yellow-300,html[data-netbox-color-mode=dark] .link-yellow-300,html[data-netbox-color-mode=light] .link-yellow-300{color:#ffda6a}html .link-yellow-300:hover,html .link-yellow-300:focus,html[data-netbox-color-mode=dark] .link-yellow-300:hover,html[data-netbox-color-mode=dark] .link-yellow-300:focus,html[data-netbox-color-mode=light] .link-yellow-300:hover,html[data-netbox-color-mode=light] .link-yellow-300:focus{color:#ffe188}}@media print{html .link-yellow-400,html[data-netbox-color-mode=dark] .link-yellow-400,html[data-netbox-color-mode=light] .link-yellow-400{color:#ffcd39}html .link-yellow-400:hover,html .link-yellow-400:focus,html[data-netbox-color-mode=dark] .link-yellow-400:hover,html[data-netbox-color-mode=dark] .link-yellow-400:focus,html[data-netbox-color-mode=light] .link-yellow-400:hover,html[data-netbox-color-mode=light] .link-yellow-400:focus{color:#ffd761}}@media print{html .link-yellow-500,html[data-netbox-color-mode=dark] .link-yellow-500,html[data-netbox-color-mode=light] .link-yellow-500{color:#ffc107}html .link-yellow-500:hover,html .link-yellow-500:focus,html[data-netbox-color-mode=dark] .link-yellow-500:hover,html[data-netbox-color-mode=dark] .link-yellow-500:focus,html[data-netbox-color-mode=light] .link-yellow-500:hover,html[data-netbox-color-mode=light] .link-yellow-500:focus{color:#ffcd39}}@media print{html .link-yellow-600,html[data-netbox-color-mode=dark] .link-yellow-600,html[data-netbox-color-mode=light] .link-yellow-600{color:#cc9a06}html .link-yellow-600:hover,html .link-yellow-600:focus,html[data-netbox-color-mode=dark] .link-yellow-600:hover,html[data-netbox-color-mode=dark] .link-yellow-600:focus,html[data-netbox-color-mode=light] .link-yellow-600:hover,html[data-netbox-color-mode=light] .link-yellow-600:focus{color:#d6ae38}}@media print{html .link-yellow-700,html[data-netbox-color-mode=dark] .link-yellow-700,html[data-netbox-color-mode=light] .link-yellow-700{color:#997404}html .link-yellow-700:hover,html .link-yellow-700:focus,html[data-netbox-color-mode=dark] .link-yellow-700:hover,html[data-netbox-color-mode=dark] .link-yellow-700:focus,html[data-netbox-color-mode=light] .link-yellow-700:hover,html[data-netbox-color-mode=light] .link-yellow-700:focus{color:#ad9036}}@media print{html .link-yellow-800,html[data-netbox-color-mode=dark] .link-yellow-800,html[data-netbox-color-mode=light] .link-yellow-800{color:#664d03}html .link-yellow-800:hover,html .link-yellow-800:focus,html[data-netbox-color-mode=dark] .link-yellow-800:hover,html[data-netbox-color-mode=dark] .link-yellow-800:focus,html[data-netbox-color-mode=light] .link-yellow-800:hover,html[data-netbox-color-mode=light] .link-yellow-800:focus{color:#523e02}}@media print{html .link-yellow-900,html[data-netbox-color-mode=dark] .link-yellow-900,html[data-netbox-color-mode=light] .link-yellow-900{color:#332701}html .link-yellow-900:hover,html .link-yellow-900:focus,html[data-netbox-color-mode=dark] .link-yellow-900:hover,html[data-netbox-color-mode=dark] .link-yellow-900:focus,html[data-netbox-color-mode=light] .link-yellow-900:hover,html[data-netbox-color-mode=light] .link-yellow-900:focus{color:#291f01}}@media print{html .link-green-100,html[data-netbox-color-mode=dark] .link-green-100,html[data-netbox-color-mode=light] .link-green-100{color:#d1e7dd}html .link-green-100:hover,html .link-green-100:focus,html[data-netbox-color-mode=dark] .link-green-100:hover,html[data-netbox-color-mode=dark] .link-green-100:focus,html[data-netbox-color-mode=light] .link-green-100:hover,html[data-netbox-color-mode=light] .link-green-100:focus{color:#daece4}}@media print{html .link-green-200,html[data-netbox-color-mode=dark] .link-green-200,html[data-netbox-color-mode=light] .link-green-200{color:#a3cfbb}html .link-green-200:hover,html .link-green-200:focus,html[data-netbox-color-mode=dark] .link-green-200:hover,html[data-netbox-color-mode=dark] .link-green-200:focus,html[data-netbox-color-mode=light] .link-green-200:hover,html[data-netbox-color-mode=light] .link-green-200:focus{color:#b5d9c9}}@media print{html .link-green-300,html[data-netbox-color-mode=dark] .link-green-300,html[data-netbox-color-mode=light] .link-green-300{color:#75b798}html .link-green-300:hover,html .link-green-300:focus,html[data-netbox-color-mode=dark] .link-green-300:hover,html[data-netbox-color-mode=dark] .link-green-300:focus,html[data-netbox-color-mode=light] .link-green-300:hover,html[data-netbox-color-mode=light] .link-green-300:focus{color:#91c5ad}}@media print{html .link-green-400,html[data-netbox-color-mode=dark] .link-green-400,html[data-netbox-color-mode=light] .link-green-400{color:#479f76}html .link-green-400:hover,html .link-green-400:focus,html[data-netbox-color-mode=dark] .link-green-400:hover,html[data-netbox-color-mode=dark] .link-green-400:focus,html[data-netbox-color-mode=light] .link-green-400:hover,html[data-netbox-color-mode=light] .link-green-400:focus{color:#6cb291}}@media print{html .link-green-500,html[data-netbox-color-mode=dark] .link-green-500,html[data-netbox-color-mode=light] .link-green-500{color:#198754}html .link-green-500:hover,html .link-green-500:focus,html[data-netbox-color-mode=dark] .link-green-500:hover,html[data-netbox-color-mode=dark] .link-green-500:focus,html[data-netbox-color-mode=light] .link-green-500:hover,html[data-netbox-color-mode=light] .link-green-500:focus{color:#146c43}}@media print{html .link-green-600,html[data-netbox-color-mode=dark] .link-green-600,html[data-netbox-color-mode=light] .link-green-600{color:#146c43}html .link-green-600:hover,html .link-green-600:focus,html[data-netbox-color-mode=dark] .link-green-600:hover,html[data-netbox-color-mode=dark] .link-green-600:focus,html[data-netbox-color-mode=light] .link-green-600:hover,html[data-netbox-color-mode=light] .link-green-600:focus{color:#105636}}@media print{html .link-green-700,html[data-netbox-color-mode=dark] .link-green-700,html[data-netbox-color-mode=light] .link-green-700{color:#0f5132}html .link-green-700:hover,html .link-green-700:focus,html[data-netbox-color-mode=dark] .link-green-700:hover,html[data-netbox-color-mode=dark] .link-green-700:focus,html[data-netbox-color-mode=light] .link-green-700:hover,html[data-netbox-color-mode=light] .link-green-700:focus{color:#0c4128}}@media print{html .link-green-800,html[data-netbox-color-mode=dark] .link-green-800,html[data-netbox-color-mode=light] .link-green-800{color:#0a3622}html .link-green-800:hover,html .link-green-800:focus,html[data-netbox-color-mode=dark] .link-green-800:hover,html[data-netbox-color-mode=dark] .link-green-800:focus,html[data-netbox-color-mode=light] .link-green-800:hover,html[data-netbox-color-mode=light] .link-green-800:focus{color:#082b1b}}@media print{html .link-green-900,html[data-netbox-color-mode=dark] .link-green-900,html[data-netbox-color-mode=light] .link-green-900{color:#051b11}html .link-green-900:hover,html .link-green-900:focus,html[data-netbox-color-mode=dark] .link-green-900:hover,html[data-netbox-color-mode=dark] .link-green-900:focus,html[data-netbox-color-mode=light] .link-green-900:hover,html[data-netbox-color-mode=light] .link-green-900:focus{color:#04160e}}@media print{html .link-blue-100,html[data-netbox-color-mode=dark] .link-blue-100,html[data-netbox-color-mode=light] .link-blue-100{color:#cfe2ff}html .link-blue-100:hover,html .link-blue-100:focus,html[data-netbox-color-mode=dark] .link-blue-100:hover,html[data-netbox-color-mode=dark] .link-blue-100:focus,html[data-netbox-color-mode=light] .link-blue-100:hover,html[data-netbox-color-mode=light] .link-blue-100:focus{color:#d9e8ff}}@media print{html .link-blue-200,html[data-netbox-color-mode=dark] .link-blue-200,html[data-netbox-color-mode=light] .link-blue-200{color:#9ec5fe}html .link-blue-200:hover,html .link-blue-200:focus,html[data-netbox-color-mode=dark] .link-blue-200:hover,html[data-netbox-color-mode=dark] .link-blue-200:focus,html[data-netbox-color-mode=light] .link-blue-200:hover,html[data-netbox-color-mode=light] .link-blue-200:focus{color:#b1d1fe}}@media print{html .link-blue-300,html[data-netbox-color-mode=dark] .link-blue-300,html[data-netbox-color-mode=light] .link-blue-300{color:#6ea8fe}html .link-blue-300:hover,html .link-blue-300:focus,html[data-netbox-color-mode=dark] .link-blue-300:hover,html[data-netbox-color-mode=dark] .link-blue-300:focus,html[data-netbox-color-mode=light] .link-blue-300:hover,html[data-netbox-color-mode=light] .link-blue-300:focus{color:#8bb9fe}}@media print{html .link-blue-400,html[data-netbox-color-mode=dark] .link-blue-400,html[data-netbox-color-mode=light] .link-blue-400{color:#3d8bfd}html .link-blue-400:hover,html .link-blue-400:focus,html[data-netbox-color-mode=dark] .link-blue-400:hover,html[data-netbox-color-mode=dark] .link-blue-400:focus,html[data-netbox-color-mode=light] .link-blue-400:hover,html[data-netbox-color-mode=light] .link-blue-400:focus{color:#64a2fd}}@media print{html .link-blue-500,html[data-netbox-color-mode=dark] .link-blue-500,html[data-netbox-color-mode=light] .link-blue-500{color:#0d6efd}html .link-blue-500:hover,html .link-blue-500:focus,html[data-netbox-color-mode=dark] .link-blue-500:hover,html[data-netbox-color-mode=dark] .link-blue-500:focus,html[data-netbox-color-mode=light] .link-blue-500:hover,html[data-netbox-color-mode=light] .link-blue-500:focus{color:#0a58ca}}@media print{html .link-blue-600,html[data-netbox-color-mode=dark] .link-blue-600,html[data-netbox-color-mode=light] .link-blue-600{color:#0a58ca}html .link-blue-600:hover,html .link-blue-600:focus,html[data-netbox-color-mode=dark] .link-blue-600:hover,html[data-netbox-color-mode=dark] .link-blue-600:focus,html[data-netbox-color-mode=light] .link-blue-600:hover,html[data-netbox-color-mode=light] .link-blue-600:focus{color:#0846a2}}@media print{html .link-blue-700,html[data-netbox-color-mode=dark] .link-blue-700,html[data-netbox-color-mode=light] .link-blue-700{color:#084298}html .link-blue-700:hover,html .link-blue-700:focus,html[data-netbox-color-mode=dark] .link-blue-700:hover,html[data-netbox-color-mode=dark] .link-blue-700:focus,html[data-netbox-color-mode=light] .link-blue-700:hover,html[data-netbox-color-mode=light] .link-blue-700:focus{color:#06357a}}@media print{html .link-blue-800,html[data-netbox-color-mode=dark] .link-blue-800,html[data-netbox-color-mode=light] .link-blue-800{color:#052c65}html .link-blue-800:hover,html .link-blue-800:focus,html[data-netbox-color-mode=dark] .link-blue-800:hover,html[data-netbox-color-mode=dark] .link-blue-800:focus,html[data-netbox-color-mode=light] .link-blue-800:hover,html[data-netbox-color-mode=light] .link-blue-800:focus{color:#042351}}@media print{html .link-blue-900,html[data-netbox-color-mode=dark] .link-blue-900,html[data-netbox-color-mode=light] .link-blue-900{color:#031633}html .link-blue-900:hover,html .link-blue-900:focus,html[data-netbox-color-mode=dark] .link-blue-900:hover,html[data-netbox-color-mode=dark] .link-blue-900:focus,html[data-netbox-color-mode=light] .link-blue-900:hover,html[data-netbox-color-mode=light] .link-blue-900:focus{color:#021229}}@media print{html .link-cyan-100,html[data-netbox-color-mode=dark] .link-cyan-100,html[data-netbox-color-mode=light] .link-cyan-100{color:#cff4fc}html .link-cyan-100:hover,html .link-cyan-100:focus,html[data-netbox-color-mode=dark] .link-cyan-100:hover,html[data-netbox-color-mode=dark] .link-cyan-100:focus,html[data-netbox-color-mode=light] .link-cyan-100:hover,html[data-netbox-color-mode=light] .link-cyan-100:focus{color:#d9f6fd}}@media print{html .link-cyan-200,html[data-netbox-color-mode=dark] .link-cyan-200,html[data-netbox-color-mode=light] .link-cyan-200{color:#9eeaf9}html .link-cyan-200:hover,html .link-cyan-200:focus,html[data-netbox-color-mode=dark] .link-cyan-200:hover,html[data-netbox-color-mode=dark] .link-cyan-200:focus,html[data-netbox-color-mode=light] .link-cyan-200:hover,html[data-netbox-color-mode=light] .link-cyan-200:focus{color:#b1eefa}}@media print{html .link-cyan-300,html[data-netbox-color-mode=dark] .link-cyan-300,html[data-netbox-color-mode=light] .link-cyan-300{color:#6edff6}html .link-cyan-300:hover,html .link-cyan-300:focus,html[data-netbox-color-mode=dark] .link-cyan-300:hover,html[data-netbox-color-mode=dark] .link-cyan-300:focus,html[data-netbox-color-mode=light] .link-cyan-300:hover,html[data-netbox-color-mode=light] .link-cyan-300:focus{color:#8be5f8}}@media print{html .link-cyan-400,html[data-netbox-color-mode=dark] .link-cyan-400,html[data-netbox-color-mode=light] .link-cyan-400{color:#3dd5f3}html .link-cyan-400:hover,html .link-cyan-400:focus,html[data-netbox-color-mode=dark] .link-cyan-400:hover,html[data-netbox-color-mode=dark] .link-cyan-400:focus,html[data-netbox-color-mode=light] .link-cyan-400:hover,html[data-netbox-color-mode=light] .link-cyan-400:focus{color:#64ddf5}}@media print{html .link-cyan-500,html[data-netbox-color-mode=dark] .link-cyan-500,html[data-netbox-color-mode=light] .link-cyan-500{color:#0dcaf0}html .link-cyan-500:hover,html .link-cyan-500:focus,html[data-netbox-color-mode=dark] .link-cyan-500:hover,html[data-netbox-color-mode=dark] .link-cyan-500:focus,html[data-netbox-color-mode=light] .link-cyan-500:hover,html[data-netbox-color-mode=light] .link-cyan-500:focus{color:#3dd5f3}}@media print{html .link-cyan-600,html[data-netbox-color-mode=dark] .link-cyan-600,html[data-netbox-color-mode=light] .link-cyan-600{color:#0aa2c0}html .link-cyan-600:hover,html .link-cyan-600:focus,html[data-netbox-color-mode=dark] .link-cyan-600:hover,html[data-netbox-color-mode=dark] .link-cyan-600:focus,html[data-netbox-color-mode=light] .link-cyan-600:hover,html[data-netbox-color-mode=light] .link-cyan-600:focus{color:#3bb5cd}}@media print{html .link-cyan-700,html[data-netbox-color-mode=dark] .link-cyan-700,html[data-netbox-color-mode=light] .link-cyan-700{color:#087990}html .link-cyan-700:hover,html .link-cyan-700:focus,html[data-netbox-color-mode=dark] .link-cyan-700:hover,html[data-netbox-color-mode=dark] .link-cyan-700:focus,html[data-netbox-color-mode=light] .link-cyan-700:hover,html[data-netbox-color-mode=light] .link-cyan-700:focus{color:#066173}}@media print{html .link-cyan-800,html[data-netbox-color-mode=dark] .link-cyan-800,html[data-netbox-color-mode=light] .link-cyan-800{color:#055160}html .link-cyan-800:hover,html .link-cyan-800:focus,html[data-netbox-color-mode=dark] .link-cyan-800:hover,html[data-netbox-color-mode=dark] .link-cyan-800:focus,html[data-netbox-color-mode=light] .link-cyan-800:hover,html[data-netbox-color-mode=light] .link-cyan-800:focus{color:#04414d}}@media print{html .link-cyan-900,html[data-netbox-color-mode=dark] .link-cyan-900,html[data-netbox-color-mode=light] .link-cyan-900{color:#032830}html .link-cyan-900:hover,html .link-cyan-900:focus,html[data-netbox-color-mode=dark] .link-cyan-900:hover,html[data-netbox-color-mode=dark] .link-cyan-900:focus,html[data-netbox-color-mode=light] .link-cyan-900:hover,html[data-netbox-color-mode=light] .link-cyan-900:focus{color:#022026}}@media print{html .link-indigo-100,html[data-netbox-color-mode=dark] .link-indigo-100,html[data-netbox-color-mode=light] .link-indigo-100{color:#e0cffc}html .link-indigo-100:hover,html .link-indigo-100:focus,html[data-netbox-color-mode=dark] .link-indigo-100:hover,html[data-netbox-color-mode=dark] .link-indigo-100:focus,html[data-netbox-color-mode=light] .link-indigo-100:hover,html[data-netbox-color-mode=light] .link-indigo-100:focus{color:#e6d9fd}}@media print{html .link-indigo-200,html[data-netbox-color-mode=dark] .link-indigo-200,html[data-netbox-color-mode=light] .link-indigo-200{color:#c29ffa}html .link-indigo-200:hover,html .link-indigo-200:focus,html[data-netbox-color-mode=dark] .link-indigo-200:hover,html[data-netbox-color-mode=dark] .link-indigo-200:focus,html[data-netbox-color-mode=light] .link-indigo-200:hover,html[data-netbox-color-mode=light] .link-indigo-200:focus{color:#ceb2fb}}@media print{html .link-indigo-300,html[data-netbox-color-mode=dark] .link-indigo-300,html[data-netbox-color-mode=light] .link-indigo-300{color:#a370f7}html .link-indigo-300:hover,html .link-indigo-300:focus,html[data-netbox-color-mode=dark] .link-indigo-300:hover,html[data-netbox-color-mode=dark] .link-indigo-300:focus,html[data-netbox-color-mode=light] .link-indigo-300:hover,html[data-netbox-color-mode=light] .link-indigo-300:focus{color:#b58df9}}@media print{html .link-indigo-400,html[data-netbox-color-mode=dark] .link-indigo-400,html[data-netbox-color-mode=light] .link-indigo-400{color:#8540f5}html .link-indigo-400:hover,html .link-indigo-400:focus,html[data-netbox-color-mode=dark] .link-indigo-400:hover,html[data-netbox-color-mode=dark] .link-indigo-400:focus,html[data-netbox-color-mode=light] .link-indigo-400:hover,html[data-netbox-color-mode=light] .link-indigo-400:focus{color:#6a33c4}}@media print{html .link-indigo-500,html[data-netbox-color-mode=dark] .link-indigo-500,html[data-netbox-color-mode=light] .link-indigo-500{color:#6610f2}html .link-indigo-500:hover,html .link-indigo-500:focus,html[data-netbox-color-mode=dark] .link-indigo-500:hover,html[data-netbox-color-mode=dark] .link-indigo-500:focus,html[data-netbox-color-mode=light] .link-indigo-500:hover,html[data-netbox-color-mode=light] .link-indigo-500:focus{color:#520dc2}}@media print{html .link-indigo-600,html[data-netbox-color-mode=dark] .link-indigo-600,html[data-netbox-color-mode=light] .link-indigo-600{color:#520dc2}html .link-indigo-600:hover,html .link-indigo-600:focus,html[data-netbox-color-mode=dark] .link-indigo-600:hover,html[data-netbox-color-mode=dark] .link-indigo-600:focus,html[data-netbox-color-mode=light] .link-indigo-600:hover,html[data-netbox-color-mode=light] .link-indigo-600:focus{color:#420a9b}}@media print{html .link-indigo-700,html[data-netbox-color-mode=dark] .link-indigo-700,html[data-netbox-color-mode=light] .link-indigo-700{color:#3d0a91}html .link-indigo-700:hover,html .link-indigo-700:focus,html[data-netbox-color-mode=dark] .link-indigo-700:hover,html[data-netbox-color-mode=dark] .link-indigo-700:focus,html[data-netbox-color-mode=light] .link-indigo-700:hover,html[data-netbox-color-mode=light] .link-indigo-700:focus{color:#310874}}@media print{html .link-indigo-800,html[data-netbox-color-mode=dark] .link-indigo-800,html[data-netbox-color-mode=light] .link-indigo-800{color:#290661}html .link-indigo-800:hover,html .link-indigo-800:focus,html[data-netbox-color-mode=dark] .link-indigo-800:hover,html[data-netbox-color-mode=dark] .link-indigo-800:focus,html[data-netbox-color-mode=light] .link-indigo-800:hover,html[data-netbox-color-mode=light] .link-indigo-800:focus{color:#21054e}}@media print{html .link-indigo-900,html[data-netbox-color-mode=dark] .link-indigo-900,html[data-netbox-color-mode=light] .link-indigo-900{color:#140330}html .link-indigo-900:hover,html .link-indigo-900:focus,html[data-netbox-color-mode=dark] .link-indigo-900:hover,html[data-netbox-color-mode=dark] .link-indigo-900:focus,html[data-netbox-color-mode=light] .link-indigo-900:hover,html[data-netbox-color-mode=light] .link-indigo-900:focus{color:#100226}}@media print{html .link-purple-100,html[data-netbox-color-mode=dark] .link-purple-100,html[data-netbox-color-mode=light] .link-purple-100{color:#e2d9f3}html .link-purple-100:hover,html .link-purple-100:focus,html[data-netbox-color-mode=dark] .link-purple-100:hover,html[data-netbox-color-mode=dark] .link-purple-100:focus,html[data-netbox-color-mode=light] .link-purple-100:hover,html[data-netbox-color-mode=light] .link-purple-100:focus{color:#e8e1f5}}@media print{html .link-purple-200,html[data-netbox-color-mode=dark] .link-purple-200,html[data-netbox-color-mode=light] .link-purple-200{color:#c5b3e6}html .link-purple-200:hover,html .link-purple-200:focus,html[data-netbox-color-mode=dark] .link-purple-200:hover,html[data-netbox-color-mode=dark] .link-purple-200:focus,html[data-netbox-color-mode=light] .link-purple-200:hover,html[data-netbox-color-mode=light] .link-purple-200:focus{color:#d1c2eb}}@media print{html .link-purple-300,html[data-netbox-color-mode=dark] .link-purple-300,html[data-netbox-color-mode=light] .link-purple-300{color:#a98eda}html .link-purple-300:hover,html .link-purple-300:focus,html[data-netbox-color-mode=dark] .link-purple-300:hover,html[data-netbox-color-mode=dark] .link-purple-300:focus,html[data-netbox-color-mode=light] .link-purple-300:hover,html[data-netbox-color-mode=light] .link-purple-300:focus{color:#baa5e1}}@media print{html .link-purple-400,html[data-netbox-color-mode=dark] .link-purple-400,html[data-netbox-color-mode=light] .link-purple-400{color:#8c68cd}html .link-purple-400:hover,html .link-purple-400:focus,html[data-netbox-color-mode=dark] .link-purple-400:hover,html[data-netbox-color-mode=dark] .link-purple-400:focus,html[data-netbox-color-mode=light] .link-purple-400:hover,html[data-netbox-color-mode=light] .link-purple-400:focus{color:#a386d7}}@media print{html .link-purple-500,html[data-netbox-color-mode=dark] .link-purple-500,html[data-netbox-color-mode=light] .link-purple-500{color:#6f42c1}html .link-purple-500:hover,html .link-purple-500:focus,html[data-netbox-color-mode=dark] .link-purple-500:hover,html[data-netbox-color-mode=dark] .link-purple-500:focus,html[data-netbox-color-mode=light] .link-purple-500:hover,html[data-netbox-color-mode=light] .link-purple-500:focus{color:#59359a}}@media print{html .link-purple-600,html[data-netbox-color-mode=dark] .link-purple-600,html[data-netbox-color-mode=light] .link-purple-600{color:#59359a}html .link-purple-600:hover,html .link-purple-600:focus,html[data-netbox-color-mode=dark] .link-purple-600:hover,html[data-netbox-color-mode=dark] .link-purple-600:focus,html[data-netbox-color-mode=light] .link-purple-600:hover,html[data-netbox-color-mode=light] .link-purple-600:focus{color:#472a7b}}@media print{html .link-purple-700,html[data-netbox-color-mode=dark] .link-purple-700,html[data-netbox-color-mode=light] .link-purple-700{color:#432874}html .link-purple-700:hover,html .link-purple-700:focus,html[data-netbox-color-mode=dark] .link-purple-700:hover,html[data-netbox-color-mode=dark] .link-purple-700:focus,html[data-netbox-color-mode=light] .link-purple-700:hover,html[data-netbox-color-mode=light] .link-purple-700:focus{color:#36205d}}@media print{html .link-purple-800,html[data-netbox-color-mode=dark] .link-purple-800,html[data-netbox-color-mode=light] .link-purple-800{color:#2c1a4d}html .link-purple-800:hover,html .link-purple-800:focus,html[data-netbox-color-mode=dark] .link-purple-800:hover,html[data-netbox-color-mode=dark] .link-purple-800:focus,html[data-netbox-color-mode=light] .link-purple-800:hover,html[data-netbox-color-mode=light] .link-purple-800:focus{color:#23153e}}@media print{html .link-purple-900,html[data-netbox-color-mode=dark] .link-purple-900,html[data-netbox-color-mode=light] .link-purple-900{color:#160d27}html .link-purple-900:hover,html .link-purple-900:focus,html[data-netbox-color-mode=dark] .link-purple-900:hover,html[data-netbox-color-mode=dark] .link-purple-900:focus,html[data-netbox-color-mode=light] .link-purple-900:hover,html[data-netbox-color-mode=light] .link-purple-900:focus{color:#120a1f}}@media print{html .link-pink-100,html[data-netbox-color-mode=dark] .link-pink-100,html[data-netbox-color-mode=light] .link-pink-100{color:#f7d6e6}html .link-pink-100:hover,html .link-pink-100:focus,html[data-netbox-color-mode=dark] .link-pink-100:hover,html[data-netbox-color-mode=dark] .link-pink-100:focus,html[data-netbox-color-mode=light] .link-pink-100:hover,html[data-netbox-color-mode=light] .link-pink-100:focus{color:#f9deeb}}@media print{html .link-pink-200,html[data-netbox-color-mode=dark] .link-pink-200,html[data-netbox-color-mode=light] .link-pink-200{color:#efadce}html .link-pink-200:hover,html .link-pink-200:focus,html[data-netbox-color-mode=dark] .link-pink-200:hover,html[data-netbox-color-mode=dark] .link-pink-200:focus,html[data-netbox-color-mode=light] .link-pink-200:hover,html[data-netbox-color-mode=light] .link-pink-200:focus{color:#f2bdd8}}@media print{html .link-pink-300,html[data-netbox-color-mode=dark] .link-pink-300,html[data-netbox-color-mode=light] .link-pink-300{color:#e685b5}html .link-pink-300:hover,html .link-pink-300:focus,html[data-netbox-color-mode=dark] .link-pink-300:hover,html[data-netbox-color-mode=dark] .link-pink-300:focus,html[data-netbox-color-mode=light] .link-pink-300:hover,html[data-netbox-color-mode=light] .link-pink-300:focus{color:#eb9dc4}}@media print{html .link-pink-400,html[data-netbox-color-mode=dark] .link-pink-400,html[data-netbox-color-mode=light] .link-pink-400{color:#de5c9d}html .link-pink-400:hover,html .link-pink-400:focus,html[data-netbox-color-mode=dark] .link-pink-400:hover,html[data-netbox-color-mode=dark] .link-pink-400:focus,html[data-netbox-color-mode=light] .link-pink-400:hover,html[data-netbox-color-mode=light] .link-pink-400:focus{color:#e57db1}}@media print{html .link-pink-500,html[data-netbox-color-mode=dark] .link-pink-500,html[data-netbox-color-mode=light] .link-pink-500{color:#d63384}html .link-pink-500:hover,html .link-pink-500:focus,html[data-netbox-color-mode=dark] .link-pink-500:hover,html[data-netbox-color-mode=dark] .link-pink-500:focus,html[data-netbox-color-mode=light] .link-pink-500:hover,html[data-netbox-color-mode=light] .link-pink-500:focus{color:#ab296a}}@media print{html .link-pink-600,html[data-netbox-color-mode=dark] .link-pink-600,html[data-netbox-color-mode=light] .link-pink-600{color:#ab296a}html .link-pink-600:hover,html .link-pink-600:focus,html[data-netbox-color-mode=dark] .link-pink-600:hover,html[data-netbox-color-mode=dark] .link-pink-600:focus,html[data-netbox-color-mode=light] .link-pink-600:hover,html[data-netbox-color-mode=light] .link-pink-600:focus{color:#892155}}@media print{html .link-pink-700,html[data-netbox-color-mode=dark] .link-pink-700,html[data-netbox-color-mode=light] .link-pink-700{color:#801f4f}html .link-pink-700:hover,html .link-pink-700:focus,html[data-netbox-color-mode=dark] .link-pink-700:hover,html[data-netbox-color-mode=dark] .link-pink-700:focus,html[data-netbox-color-mode=light] .link-pink-700:hover,html[data-netbox-color-mode=light] .link-pink-700:focus{color:#66193f}}@media print{html .link-pink-800,html[data-netbox-color-mode=dark] .link-pink-800,html[data-netbox-color-mode=light] .link-pink-800{color:#561435}html .link-pink-800:hover,html .link-pink-800:focus,html[data-netbox-color-mode=dark] .link-pink-800:hover,html[data-netbox-color-mode=dark] .link-pink-800:focus,html[data-netbox-color-mode=light] .link-pink-800:hover,html[data-netbox-color-mode=light] .link-pink-800:focus{color:#45102a}}@media print{html .link-pink-900,html[data-netbox-color-mode=dark] .link-pink-900,html[data-netbox-color-mode=light] .link-pink-900{color:#2b0a1a}html .link-pink-900:hover,html .link-pink-900:focus,html[data-netbox-color-mode=dark] .link-pink-900:hover,html[data-netbox-color-mode=dark] .link-pink-900:focus,html[data-netbox-color-mode=light] .link-pink-900:hover,html[data-netbox-color-mode=light] .link-pink-900:focus{color:#220815}}@media print{html .ratio,html[data-netbox-color-mode=dark] .ratio,html[data-netbox-color-mode=light] .ratio{position:relative;width:100%}html .ratio:before,html[data-netbox-color-mode=dark] .ratio:before,html[data-netbox-color-mode=light] .ratio:before{display:block;padding-top:var(--bs-aspect-ratio);content:""}html .ratio>*,html[data-netbox-color-mode=dark] .ratio>*,html[data-netbox-color-mode=light] .ratio>*{position:absolute;top:0;left:0;width:100%;height:100%}}@media print{html .ratio-1x1,html[data-netbox-color-mode=dark] .ratio-1x1,html[data-netbox-color-mode=light] .ratio-1x1{--bs-aspect-ratio: 100%}}@media print{html .ratio-4x3,html[data-netbox-color-mode=dark] .ratio-4x3,html[data-netbox-color-mode=light] .ratio-4x3{--bs-aspect-ratio: calc(3 / 4 * 100%)}}@media print{html .ratio-16x9,html[data-netbox-color-mode=dark] .ratio-16x9,html[data-netbox-color-mode=light] .ratio-16x9{--bs-aspect-ratio: calc(9 / 16 * 100%)}}@media print{html .ratio-21x9,html[data-netbox-color-mode=dark] .ratio-21x9,html[data-netbox-color-mode=light] .ratio-21x9{--bs-aspect-ratio: calc(9 / 21 * 100%)}}@media print{html .fixed-top,html[data-netbox-color-mode=dark] .fixed-top,html[data-netbox-color-mode=light] .fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}}@media print{html .fixed-bottom,html[data-netbox-color-mode=dark] .fixed-bottom,html[data-netbox-color-mode=light] .fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}}@media print{html .sticky-top,html[data-netbox-color-mode=dark] .sticky-top,html[data-netbox-color-mode=light] .sticky-top{position:sticky;top:0;z-index:1020}}@media print and (min-width: 576px){html .sticky-sm-top,html[data-netbox-color-mode=dark] .sticky-sm-top,html[data-netbox-color-mode=light] .sticky-sm-top{position:sticky;top:0;z-index:1020}}@media print and (min-width: 768px){html .sticky-md-top,html[data-netbox-color-mode=dark] .sticky-md-top,html[data-netbox-color-mode=light] .sticky-md-top{position:sticky;top:0;z-index:1020}}@media print and (min-width: 992px){html .sticky-lg-top,html[data-netbox-color-mode=dark] .sticky-lg-top,html[data-netbox-color-mode=light] .sticky-lg-top{position:sticky;top:0;z-index:1020}}@media print and (min-width: 1200px){html .sticky-xl-top,html[data-netbox-color-mode=dark] .sticky-xl-top,html[data-netbox-color-mode=light] .sticky-xl-top{position:sticky;top:0;z-index:1020}}@media print and (min-width: 1400px){html .sticky-xxl-top,html[data-netbox-color-mode=dark] .sticky-xxl-top,html[data-netbox-color-mode=light] .sticky-xxl-top{position:sticky;top:0;z-index:1020}}@media print{html .visually-hidden,html .visually-hidden-focusable:not(:focus):not(:focus-within),html[data-netbox-color-mode=dark] .visually-hidden,html[data-netbox-color-mode=dark] .visually-hidden-focusable:not(:focus):not(:focus-within),html[data-netbox-color-mode=light] .visually-hidden,html[data-netbox-color-mode=light] .visually-hidden-focusable:not(:focus):not(:focus-within){position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}}@media print{html .stretched-link:after,html[data-netbox-color-mode=dark] .stretched-link:after,html[data-netbox-color-mode=light] .stretched-link:after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;content:""}}@media print{html .text-truncate,html[data-netbox-color-mode=dark] .text-truncate,html[data-netbox-color-mode=light] .text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}@media print{html .align-baseline,html[data-netbox-color-mode=dark] .align-baseline,html[data-netbox-color-mode=light] .align-baseline{vertical-align:baseline!important}}@media print{html .align-top,html[data-netbox-color-mode=dark] .align-top,html[data-netbox-color-mode=light] .align-top{vertical-align:top!important}}@media print{html .align-middle,html[data-netbox-color-mode=dark] .align-middle,html[data-netbox-color-mode=light] .align-middle{vertical-align:middle!important}}@media print{html .align-bottom,html[data-netbox-color-mode=dark] .align-bottom,html[data-netbox-color-mode=light] .align-bottom{vertical-align:bottom!important}}@media print{html .align-text-bottom,html[data-netbox-color-mode=dark] .align-text-bottom,html[data-netbox-color-mode=light] .align-text-bottom{vertical-align:text-bottom!important}}@media print{html .align-text-top,html[data-netbox-color-mode=dark] .align-text-top,html[data-netbox-color-mode=light] .align-text-top{vertical-align:text-top!important}}@media print{html .float-start,html[data-netbox-color-mode=dark] .float-start,html[data-netbox-color-mode=light] .float-start{float:left!important}}@media print{html .float-end,html[data-netbox-color-mode=dark] .float-end,html[data-netbox-color-mode=light] .float-end{float:right!important}}@media print{html .float-none,html[data-netbox-color-mode=dark] .float-none,html[data-netbox-color-mode=light] .float-none{float:none!important}}@media print{html .overflow-auto,html[data-netbox-color-mode=dark] .overflow-auto,html[data-netbox-color-mode=light] .overflow-auto{overflow:auto!important}}@media print{html .overflow-hidden,html[data-netbox-color-mode=dark] .overflow-hidden,html[data-netbox-color-mode=light] .overflow-hidden{overflow:hidden!important}}@media print{html .overflow-visible,html[data-netbox-color-mode=dark] .overflow-visible,html[data-netbox-color-mode=light] .overflow-visible{overflow:visible!important}}@media print{html .overflow-scroll,html[data-netbox-color-mode=dark] .overflow-scroll,html[data-netbox-color-mode=light] .overflow-scroll{overflow:scroll!important}}@media print{html .d-inline,html[data-netbox-color-mode=dark] .d-inline,html[data-netbox-color-mode=light] .d-inline{display:inline!important}}@media print{html .d-inline-block,html[data-netbox-color-mode=dark] .d-inline-block,html[data-netbox-color-mode=light] .d-inline-block{display:inline-block!important}}@media print{html .d-block,html[data-netbox-color-mode=dark] .d-block,html[data-netbox-color-mode=light] .d-block{display:block!important}}@media print{html .d-grid,html[data-netbox-color-mode=dark] .d-grid,html[data-netbox-color-mode=light] .d-grid{display:grid!important}}@media print{html .d-table,html[data-netbox-color-mode=dark] .d-table,html[data-netbox-color-mode=light] .d-table{display:table!important}}@media print{html .d-table-row,html[data-netbox-color-mode=dark] .d-table-row,html[data-netbox-color-mode=light] .d-table-row{display:table-row!important}}@media print{html .d-table-cell,html[data-netbox-color-mode=dark] .d-table-cell,html[data-netbox-color-mode=light] .d-table-cell{display:table-cell!important}}@media print{html .d-flex,html[data-netbox-color-mode=dark] .d-flex,html[data-netbox-color-mode=light] .d-flex{display:flex!important}}@media print{html .d-inline-flex,html[data-netbox-color-mode=dark] .d-inline-flex,html[data-netbox-color-mode=light] .d-inline-flex{display:inline-flex!important}}@media print{html .d-none,html[data-netbox-color-mode=dark] .d-none,html[data-netbox-color-mode=light] .d-none{display:none!important}}@media print{html .shadow,html[data-netbox-color-mode=dark] .shadow,html[data-netbox-color-mode=light] .shadow{box-shadow:0 .5rem 1rem #00000026!important}}@media print{html .shadow-sm,html[data-netbox-color-mode=dark] .shadow-sm,html[data-netbox-color-mode=light] .shadow-sm{box-shadow:0 .125rem .25rem #00000013!important}}@media print{html .shadow-lg,html[data-netbox-color-mode=dark] .shadow-lg,html[data-netbox-color-mode=light] .shadow-lg{box-shadow:0 1rem 3rem #0000002d!important}}@media print{html .shadow-none,html[data-netbox-color-mode=dark] .shadow-none,html[data-netbox-color-mode=light] .shadow-none{box-shadow:none!important}}@media print{html .position-static,html[data-netbox-color-mode=dark] .position-static,html[data-netbox-color-mode=light] .position-static{position:static!important}}@media print{html .position-relative,html[data-netbox-color-mode=dark] .position-relative,html[data-netbox-color-mode=light] .position-relative{position:relative!important}}@media print{html .position-absolute,html[data-netbox-color-mode=dark] .position-absolute,html[data-netbox-color-mode=light] .position-absolute{position:absolute!important}}@media print{html .position-fixed,html[data-netbox-color-mode=dark] .position-fixed,html[data-netbox-color-mode=light] .position-fixed{position:fixed!important}}@media print{html .position-sticky,html[data-netbox-color-mode=dark] .position-sticky,html[data-netbox-color-mode=light] .position-sticky{position:sticky!important}}@media print{html .top-0,html[data-netbox-color-mode=dark] .top-0,html[data-netbox-color-mode=light] .top-0{top:0!important}}@media print{html .top-50,html[data-netbox-color-mode=dark] .top-50,html[data-netbox-color-mode=light] .top-50{top:50%!important}}@media print{html .top-100,html[data-netbox-color-mode=dark] .top-100,html[data-netbox-color-mode=light] .top-100{top:100%!important}}@media print{html .bottom-0,html[data-netbox-color-mode=dark] .bottom-0,html[data-netbox-color-mode=light] .bottom-0{bottom:0!important}}@media print{html .bottom-50,html[data-netbox-color-mode=dark] .bottom-50,html[data-netbox-color-mode=light] .bottom-50{bottom:50%!important}}@media print{html .bottom-100,html[data-netbox-color-mode=dark] .bottom-100,html[data-netbox-color-mode=light] .bottom-100{bottom:100%!important}}@media print{html .start-0,html[data-netbox-color-mode=dark] .start-0,html[data-netbox-color-mode=light] .start-0{left:0!important}}@media print{html .start-50,html[data-netbox-color-mode=dark] .start-50,html[data-netbox-color-mode=light] .start-50{left:50%!important}}@media print{html .start-100,html[data-netbox-color-mode=dark] .start-100,html[data-netbox-color-mode=light] .start-100{left:100%!important}}@media print{html .end-0,html[data-netbox-color-mode=dark] .end-0,html[data-netbox-color-mode=light] .end-0{right:0!important}}@media print{html .end-50,html[data-netbox-color-mode=dark] .end-50,html[data-netbox-color-mode=light] .end-50{right:50%!important}}@media print{html .end-100,html[data-netbox-color-mode=dark] .end-100,html[data-netbox-color-mode=light] .end-100{right:100%!important}}@media print{html .translate-middle,html[data-netbox-color-mode=dark] .translate-middle,html[data-netbox-color-mode=light] .translate-middle{transform:translate(-50%,-50%)!important}}@media print{html .translate-middle-x,html[data-netbox-color-mode=dark] .translate-middle-x,html[data-netbox-color-mode=light] .translate-middle-x{transform:translate(-50%)!important}}@media print{html .translate-middle-y,html[data-netbox-color-mode=dark] .translate-middle-y,html[data-netbox-color-mode=light] .translate-middle-y{transform:translateY(-50%)!important}}@media print{html .border,html[data-netbox-color-mode=dark] .border,html[data-netbox-color-mode=light] .border{border:1px solid #dee2e6!important}}@media print{html .border-0,html[data-netbox-color-mode=dark] .border-0,html[data-netbox-color-mode=light] .border-0{border:0!important}}@media print{html .border-top,html[data-netbox-color-mode=dark] .border-top,html[data-netbox-color-mode=light] .border-top{border-top:1px solid #dee2e6!important}}@media print{html .border-top-0,html[data-netbox-color-mode=dark] .border-top-0,html[data-netbox-color-mode=light] .border-top-0{border-top:0!important}}@media print{html .border-end,html[data-netbox-color-mode=dark] .border-end,html[data-netbox-color-mode=light] .border-end{border-right:1px solid #dee2e6!important}}@media print{html .border-end-0,html[data-netbox-color-mode=dark] .border-end-0,html[data-netbox-color-mode=light] .border-end-0{border-right:0!important}}@media print{html .border-bottom,html[data-netbox-color-mode=dark] .border-bottom,html[data-netbox-color-mode=light] .border-bottom{border-bottom:1px solid #dee2e6!important}}@media print{html .border-bottom-0,html[data-netbox-color-mode=dark] .border-bottom-0,html[data-netbox-color-mode=light] .border-bottom-0{border-bottom:0!important}}@media print{html .border-start,html[data-netbox-color-mode=dark] .border-start,html[data-netbox-color-mode=light] .border-start{border-left:1px solid #dee2e6!important}}@media print{html .border-start-0,html[data-netbox-color-mode=dark] .border-start-0,html[data-netbox-color-mode=light] .border-start-0{border-left:0!important}}@media print{html .border-primary,html[data-netbox-color-mode=dark] .border-primary,html[data-netbox-color-mode=light] .border-primary{border-color:#337ab7!important}}@media print{html .border-secondary,html[data-netbox-color-mode=dark] .border-secondary,html[data-netbox-color-mode=light] .border-secondary{border-color:#6c757d!important}}@media print{html .border-success,html[data-netbox-color-mode=dark] .border-success,html[data-netbox-color-mode=light] .border-success{border-color:#198754!important}}@media print{html .border-info,html[data-netbox-color-mode=dark] .border-info,html[data-netbox-color-mode=light] .border-info{border-color:#0dcaf0!important}}@media print{html .border-warning,html[data-netbox-color-mode=dark] .border-warning,html[data-netbox-color-mode=light] .border-warning{border-color:#ffc107!important}}@media print{html .border-danger,html[data-netbox-color-mode=dark] .border-danger,html[data-netbox-color-mode=light] .border-danger{border-color:#dc3545!important}}@media print{html .border-light,html[data-netbox-color-mode=dark] .border-light,html[data-netbox-color-mode=light] .border-light{border-color:#f8f9fa!important}}@media print{html .border-dark,html[data-netbox-color-mode=dark] .border-dark,html[data-netbox-color-mode=light] .border-dark{border-color:#212529!important}}@media print{html .border-red,html[data-netbox-color-mode=dark] .border-red,html[data-netbox-color-mode=light] .border-red{border-color:#dc3545!important}}@media print{html .border-yellow,html[data-netbox-color-mode=dark] .border-yellow,html[data-netbox-color-mode=light] .border-yellow{border-color:#ffc107!important}}@media print{html .border-green,html[data-netbox-color-mode=dark] .border-green,html[data-netbox-color-mode=light] .border-green{border-color:#198754!important}}@media print{html .border-blue,html[data-netbox-color-mode=dark] .border-blue,html[data-netbox-color-mode=light] .border-blue{border-color:#0d6efd!important}}@media print{html .border-cyan,html[data-netbox-color-mode=dark] .border-cyan,html[data-netbox-color-mode=light] .border-cyan{border-color:#0dcaf0!important}}@media print{html .border-indigo,html[data-netbox-color-mode=dark] .border-indigo,html[data-netbox-color-mode=light] .border-indigo{border-color:#6610f2!important}}@media print{html .border-purple,html[data-netbox-color-mode=dark] .border-purple,html[data-netbox-color-mode=light] .border-purple{border-color:#6f42c1!important}}@media print{html .border-pink,html[data-netbox-color-mode=dark] .border-pink,html[data-netbox-color-mode=light] .border-pink{border-color:#d63384!important}}@media print{html .border-darker,html[data-netbox-color-mode=dark] .border-darker,html[data-netbox-color-mode=light] .border-darker{border-color:#1b1f22!important}}@media print{html .border-darkest,html[data-netbox-color-mode=dark] .border-darkest,html[data-netbox-color-mode=light] .border-darkest{border-color:#171b1d!important}}@media print{html .border-gray,html[data-netbox-color-mode=dark] .border-gray,html[data-netbox-color-mode=light] .border-gray{border-color:#ced4da!important}}@media print{html .border-gray-100,html[data-netbox-color-mode=dark] .border-gray-100,html[data-netbox-color-mode=light] .border-gray-100{border-color:#f8f9fa!important}}@media print{html .border-gray-200,html[data-netbox-color-mode=dark] .border-gray-200,html[data-netbox-color-mode=light] .border-gray-200{border-color:#e9ecef!important}}@media print{html .border-gray-300,html[data-netbox-color-mode=dark] .border-gray-300,html[data-netbox-color-mode=light] .border-gray-300{border-color:#dee2e6!important}}@media print{html .border-gray-400,html[data-netbox-color-mode=dark] .border-gray-400,html[data-netbox-color-mode=light] .border-gray-400{border-color:#ced4da!important}}@media print{html .border-gray-500,html[data-netbox-color-mode=dark] .border-gray-500,html[data-netbox-color-mode=light] .border-gray-500{border-color:#adb5bd!important}}@media print{html .border-gray-600,html[data-netbox-color-mode=dark] .border-gray-600,html[data-netbox-color-mode=light] .border-gray-600{border-color:#6c757d!important}}@media print{html .border-gray-700,html[data-netbox-color-mode=dark] .border-gray-700,html[data-netbox-color-mode=light] .border-gray-700{border-color:#495057!important}}@media print{html .border-gray-800,html[data-netbox-color-mode=dark] .border-gray-800,html[data-netbox-color-mode=light] .border-gray-800{border-color:#343a40!important}}@media print{html .border-gray-900,html[data-netbox-color-mode=dark] .border-gray-900,html[data-netbox-color-mode=light] .border-gray-900{border-color:#212529!important}}@media print{html .border-red-100,html[data-netbox-color-mode=dark] .border-red-100,html[data-netbox-color-mode=light] .border-red-100{border-color:#f8d7da!important}}@media print{html .border-red-200,html[data-netbox-color-mode=dark] .border-red-200,html[data-netbox-color-mode=light] .border-red-200{border-color:#f1aeb5!important}}@media print{html .border-red-300,html[data-netbox-color-mode=dark] .border-red-300,html[data-netbox-color-mode=light] .border-red-300{border-color:#ea868f!important}}@media print{html .border-red-400,html[data-netbox-color-mode=dark] .border-red-400,html[data-netbox-color-mode=light] .border-red-400{border-color:#e35d6a!important}}@media print{html .border-red-500,html[data-netbox-color-mode=dark] .border-red-500,html[data-netbox-color-mode=light] .border-red-500{border-color:#dc3545!important}}@media print{html .border-red-600,html[data-netbox-color-mode=dark] .border-red-600,html[data-netbox-color-mode=light] .border-red-600{border-color:#b02a37!important}}@media print{html .border-red-700,html[data-netbox-color-mode=dark] .border-red-700,html[data-netbox-color-mode=light] .border-red-700{border-color:#842029!important}}@media print{html .border-red-800,html[data-netbox-color-mode=dark] .border-red-800,html[data-netbox-color-mode=light] .border-red-800{border-color:#58151c!important}}@media print{html .border-red-900,html[data-netbox-color-mode=dark] .border-red-900,html[data-netbox-color-mode=light] .border-red-900{border-color:#2c0b0e!important}}@media print{html .border-yellow-100,html[data-netbox-color-mode=dark] .border-yellow-100,html[data-netbox-color-mode=light] .border-yellow-100{border-color:#fff3cd!important}}@media print{html .border-yellow-200,html[data-netbox-color-mode=dark] .border-yellow-200,html[data-netbox-color-mode=light] .border-yellow-200{border-color:#ffe69c!important}}@media print{html .border-yellow-300,html[data-netbox-color-mode=dark] .border-yellow-300,html[data-netbox-color-mode=light] .border-yellow-300{border-color:#ffda6a!important}}@media print{html .border-yellow-400,html[data-netbox-color-mode=dark] .border-yellow-400,html[data-netbox-color-mode=light] .border-yellow-400{border-color:#ffcd39!important}}@media print{html .border-yellow-500,html[data-netbox-color-mode=dark] .border-yellow-500,html[data-netbox-color-mode=light] .border-yellow-500{border-color:#ffc107!important}}@media print{html .border-yellow-600,html[data-netbox-color-mode=dark] .border-yellow-600,html[data-netbox-color-mode=light] .border-yellow-600{border-color:#cc9a06!important}}@media print{html .border-yellow-700,html[data-netbox-color-mode=dark] .border-yellow-700,html[data-netbox-color-mode=light] .border-yellow-700{border-color:#997404!important}}@media print{html .border-yellow-800,html[data-netbox-color-mode=dark] .border-yellow-800,html[data-netbox-color-mode=light] .border-yellow-800{border-color:#664d03!important}}@media print{html .border-yellow-900,html[data-netbox-color-mode=dark] .border-yellow-900,html[data-netbox-color-mode=light] .border-yellow-900{border-color:#332701!important}}@media print{html .border-green-100,html[data-netbox-color-mode=dark] .border-green-100,html[data-netbox-color-mode=light] .border-green-100{border-color:#d1e7dd!important}}@media print{html .border-green-200,html[data-netbox-color-mode=dark] .border-green-200,html[data-netbox-color-mode=light] .border-green-200{border-color:#a3cfbb!important}}@media print{html .border-green-300,html[data-netbox-color-mode=dark] .border-green-300,html[data-netbox-color-mode=light] .border-green-300{border-color:#75b798!important}}@media print{html .border-green-400,html[data-netbox-color-mode=dark] .border-green-400,html[data-netbox-color-mode=light] .border-green-400{border-color:#479f76!important}}@media print{html .border-green-500,html[data-netbox-color-mode=dark] .border-green-500,html[data-netbox-color-mode=light] .border-green-500{border-color:#198754!important}}@media print{html .border-green-600,html[data-netbox-color-mode=dark] .border-green-600,html[data-netbox-color-mode=light] .border-green-600{border-color:#146c43!important}}@media print{html .border-green-700,html[data-netbox-color-mode=dark] .border-green-700,html[data-netbox-color-mode=light] .border-green-700{border-color:#0f5132!important}}@media print{html .border-green-800,html[data-netbox-color-mode=dark] .border-green-800,html[data-netbox-color-mode=light] .border-green-800{border-color:#0a3622!important}}@media print{html .border-green-900,html[data-netbox-color-mode=dark] .border-green-900,html[data-netbox-color-mode=light] .border-green-900{border-color:#051b11!important}}@media print{html .border-blue-100,html[data-netbox-color-mode=dark] .border-blue-100,html[data-netbox-color-mode=light] .border-blue-100{border-color:#cfe2ff!important}}@media print{html .border-blue-200,html[data-netbox-color-mode=dark] .border-blue-200,html[data-netbox-color-mode=light] .border-blue-200{border-color:#9ec5fe!important}}@media print{html .border-blue-300,html[data-netbox-color-mode=dark] .border-blue-300,html[data-netbox-color-mode=light] .border-blue-300{border-color:#6ea8fe!important}}@media print{html .border-blue-400,html[data-netbox-color-mode=dark] .border-blue-400,html[data-netbox-color-mode=light] .border-blue-400{border-color:#3d8bfd!important}}@media print{html .border-blue-500,html[data-netbox-color-mode=dark] .border-blue-500,html[data-netbox-color-mode=light] .border-blue-500{border-color:#0d6efd!important}}@media print{html .border-blue-600,html[data-netbox-color-mode=dark] .border-blue-600,html[data-netbox-color-mode=light] .border-blue-600{border-color:#0a58ca!important}}@media print{html .border-blue-700,html[data-netbox-color-mode=dark] .border-blue-700,html[data-netbox-color-mode=light] .border-blue-700{border-color:#084298!important}}@media print{html .border-blue-800,html[data-netbox-color-mode=dark] .border-blue-800,html[data-netbox-color-mode=light] .border-blue-800{border-color:#052c65!important}}@media print{html .border-blue-900,html[data-netbox-color-mode=dark] .border-blue-900,html[data-netbox-color-mode=light] .border-blue-900{border-color:#031633!important}}@media print{html .border-cyan-100,html[data-netbox-color-mode=dark] .border-cyan-100,html[data-netbox-color-mode=light] .border-cyan-100{border-color:#cff4fc!important}}@media print{html .border-cyan-200,html[data-netbox-color-mode=dark] .border-cyan-200,html[data-netbox-color-mode=light] .border-cyan-200{border-color:#9eeaf9!important}}@media print{html .border-cyan-300,html[data-netbox-color-mode=dark] .border-cyan-300,html[data-netbox-color-mode=light] .border-cyan-300{border-color:#6edff6!important}}@media print{html .border-cyan-400,html[data-netbox-color-mode=dark] .border-cyan-400,html[data-netbox-color-mode=light] .border-cyan-400{border-color:#3dd5f3!important}}@media print{html .border-cyan-500,html[data-netbox-color-mode=dark] .border-cyan-500,html[data-netbox-color-mode=light] .border-cyan-500{border-color:#0dcaf0!important}}@media print{html .border-cyan-600,html[data-netbox-color-mode=dark] .border-cyan-600,html[data-netbox-color-mode=light] .border-cyan-600{border-color:#0aa2c0!important}}@media print{html .border-cyan-700,html[data-netbox-color-mode=dark] .border-cyan-700,html[data-netbox-color-mode=light] .border-cyan-700{border-color:#087990!important}}@media print{html .border-cyan-800,html[data-netbox-color-mode=dark] .border-cyan-800,html[data-netbox-color-mode=light] .border-cyan-800{border-color:#055160!important}}@media print{html .border-cyan-900,html[data-netbox-color-mode=dark] .border-cyan-900,html[data-netbox-color-mode=light] .border-cyan-900{border-color:#032830!important}}@media print{html .border-indigo-100,html[data-netbox-color-mode=dark] .border-indigo-100,html[data-netbox-color-mode=light] .border-indigo-100{border-color:#e0cffc!important}}@media print{html .border-indigo-200,html[data-netbox-color-mode=dark] .border-indigo-200,html[data-netbox-color-mode=light] .border-indigo-200{border-color:#c29ffa!important}}@media print{html .border-indigo-300,html[data-netbox-color-mode=dark] .border-indigo-300,html[data-netbox-color-mode=light] .border-indigo-300{border-color:#a370f7!important}}@media print{html .border-indigo-400,html[data-netbox-color-mode=dark] .border-indigo-400,html[data-netbox-color-mode=light] .border-indigo-400{border-color:#8540f5!important}}@media print{html .border-indigo-500,html[data-netbox-color-mode=dark] .border-indigo-500,html[data-netbox-color-mode=light] .border-indigo-500{border-color:#6610f2!important}}@media print{html .border-indigo-600,html[data-netbox-color-mode=dark] .border-indigo-600,html[data-netbox-color-mode=light] .border-indigo-600{border-color:#520dc2!important}}@media print{html .border-indigo-700,html[data-netbox-color-mode=dark] .border-indigo-700,html[data-netbox-color-mode=light] .border-indigo-700{border-color:#3d0a91!important}}@media print{html .border-indigo-800,html[data-netbox-color-mode=dark] .border-indigo-800,html[data-netbox-color-mode=light] .border-indigo-800{border-color:#290661!important}}@media print{html .border-indigo-900,html[data-netbox-color-mode=dark] .border-indigo-900,html[data-netbox-color-mode=light] .border-indigo-900{border-color:#140330!important}}@media print{html .border-purple-100,html[data-netbox-color-mode=dark] .border-purple-100,html[data-netbox-color-mode=light] .border-purple-100{border-color:#e2d9f3!important}}@media print{html .border-purple-200,html[data-netbox-color-mode=dark] .border-purple-200,html[data-netbox-color-mode=light] .border-purple-200{border-color:#c5b3e6!important}}@media print{html .border-purple-300,html[data-netbox-color-mode=dark] .border-purple-300,html[data-netbox-color-mode=light] .border-purple-300{border-color:#a98eda!important}}@media print{html .border-purple-400,html[data-netbox-color-mode=dark] .border-purple-400,html[data-netbox-color-mode=light] .border-purple-400{border-color:#8c68cd!important}}@media print{html .border-purple-500,html[data-netbox-color-mode=dark] .border-purple-500,html[data-netbox-color-mode=light] .border-purple-500{border-color:#6f42c1!important}}@media print{html .border-purple-600,html[data-netbox-color-mode=dark] .border-purple-600,html[data-netbox-color-mode=light] .border-purple-600{border-color:#59359a!important}}@media print{html .border-purple-700,html[data-netbox-color-mode=dark] .border-purple-700,html[data-netbox-color-mode=light] .border-purple-700{border-color:#432874!important}}@media print{html .border-purple-800,html[data-netbox-color-mode=dark] .border-purple-800,html[data-netbox-color-mode=light] .border-purple-800{border-color:#2c1a4d!important}}@media print{html .border-purple-900,html[data-netbox-color-mode=dark] .border-purple-900,html[data-netbox-color-mode=light] .border-purple-900{border-color:#160d27!important}}@media print{html .border-pink-100,html[data-netbox-color-mode=dark] .border-pink-100,html[data-netbox-color-mode=light] .border-pink-100{border-color:#f7d6e6!important}}@media print{html .border-pink-200,html[data-netbox-color-mode=dark] .border-pink-200,html[data-netbox-color-mode=light] .border-pink-200{border-color:#efadce!important}}@media print{html .border-pink-300,html[data-netbox-color-mode=dark] .border-pink-300,html[data-netbox-color-mode=light] .border-pink-300{border-color:#e685b5!important}}@media print{html .border-pink-400,html[data-netbox-color-mode=dark] .border-pink-400,html[data-netbox-color-mode=light] .border-pink-400{border-color:#de5c9d!important}}@media print{html .border-pink-500,html[data-netbox-color-mode=dark] .border-pink-500,html[data-netbox-color-mode=light] .border-pink-500{border-color:#d63384!important}}@media print{html .border-pink-600,html[data-netbox-color-mode=dark] .border-pink-600,html[data-netbox-color-mode=light] .border-pink-600{border-color:#ab296a!important}}@media print{html .border-pink-700,html[data-netbox-color-mode=dark] .border-pink-700,html[data-netbox-color-mode=light] .border-pink-700{border-color:#801f4f!important}}@media print{html .border-pink-800,html[data-netbox-color-mode=dark] .border-pink-800,html[data-netbox-color-mode=light] .border-pink-800{border-color:#561435!important}}@media print{html .border-pink-900,html[data-netbox-color-mode=dark] .border-pink-900,html[data-netbox-color-mode=light] .border-pink-900{border-color:#2b0a1a!important}}@media print{html .border-white,html[data-netbox-color-mode=dark] .border-white,html[data-netbox-color-mode=light] .border-white{border-color:#fff!important}}@media print{html .border-1,html[data-netbox-color-mode=dark] .border-1,html[data-netbox-color-mode=light] .border-1{border-width:1px!important}}@media print{html .border-2,html[data-netbox-color-mode=dark] .border-2,html[data-netbox-color-mode=light] .border-2{border-width:2px!important}}@media print{html .border-3,html[data-netbox-color-mode=dark] .border-3,html[data-netbox-color-mode=light] .border-3{border-width:3px!important}}@media print{html .border-4,html[data-netbox-color-mode=dark] .border-4,html[data-netbox-color-mode=light] .border-4{border-width:4px!important}}@media print{html .border-5,html[data-netbox-color-mode=dark] .border-5,html[data-netbox-color-mode=light] .border-5{border-width:5px!important}}@media print{html .w-25,html[data-netbox-color-mode=dark] .w-25,html[data-netbox-color-mode=light] .w-25{width:25%!important}}@media print{html .w-50,html[data-netbox-color-mode=dark] .w-50,html[data-netbox-color-mode=light] .w-50{width:50%!important}}@media print{html .w-75,html[data-netbox-color-mode=dark] .w-75,html[data-netbox-color-mode=light] .w-75{width:75%!important}}@media print{html .w-100,html[data-netbox-color-mode=dark] .w-100,html[data-netbox-color-mode=light] .w-100{width:100%!important}}@media print{html .w-auto,html[data-netbox-color-mode=dark] .w-auto,html[data-netbox-color-mode=light] .w-auto{width:auto!important}}@media print{html .mw-100,html[data-netbox-color-mode=dark] .mw-100,html[data-netbox-color-mode=light] .mw-100{max-width:100%!important}}@media print{html .vw-100,html[data-netbox-color-mode=dark] .vw-100,html[data-netbox-color-mode=light] .vw-100{width:100vw!important}}@media print{html .min-vw-100,html[data-netbox-color-mode=dark] .min-vw-100,html[data-netbox-color-mode=light] .min-vw-100{min-width:100vw!important}}@media print{html .h-25,html[data-netbox-color-mode=dark] .h-25,html[data-netbox-color-mode=light] .h-25{height:25%!important}}@media print{html .h-50,html[data-netbox-color-mode=dark] .h-50,html[data-netbox-color-mode=light] .h-50{height:50%!important}}@media print{html .h-75,html[data-netbox-color-mode=dark] .h-75,html[data-netbox-color-mode=light] .h-75{height:75%!important}}@media print{html .h-100,html[data-netbox-color-mode=dark] .h-100,html[data-netbox-color-mode=light] .h-100{height:100%!important}}@media print{html .h-auto,html[data-netbox-color-mode=dark] .h-auto,html[data-netbox-color-mode=light] .h-auto{height:auto!important}}@media print{html .mh-100,html[data-netbox-color-mode=dark] .mh-100,html[data-netbox-color-mode=light] .mh-100{max-height:100%!important}}@media print{html .vh-100,html[data-netbox-color-mode=dark] .vh-100,html[data-netbox-color-mode=light] .vh-100{height:100vh!important}}@media print{html .min-vh-100,html[data-netbox-color-mode=dark] .min-vh-100,html[data-netbox-color-mode=light] .min-vh-100{min-height:100vh!important}}@media print{html .flex-fill,html[data-netbox-color-mode=dark] .flex-fill,html[data-netbox-color-mode=light] .flex-fill{flex:1 1 auto!important}}@media print{html .flex-row,html[data-netbox-color-mode=dark] .flex-row,html[data-netbox-color-mode=light] .flex-row{flex-direction:row!important}}@media print{html .flex-column,html[data-netbox-color-mode=dark] .flex-column,html[data-netbox-color-mode=light] .flex-column{flex-direction:column!important}}@media print{html .flex-row-reverse,html[data-netbox-color-mode=dark] .flex-row-reverse,html[data-netbox-color-mode=light] .flex-row-reverse{flex-direction:row-reverse!important}}@media print{html .flex-column-reverse,html[data-netbox-color-mode=dark] .flex-column-reverse,html[data-netbox-color-mode=light] .flex-column-reverse{flex-direction:column-reverse!important}}@media print{html .flex-grow-0,html[data-netbox-color-mode=dark] .flex-grow-0,html[data-netbox-color-mode=light] .flex-grow-0{flex-grow:0!important}}@media print{html .flex-grow-1,html[data-netbox-color-mode=dark] .flex-grow-1,html[data-netbox-color-mode=light] .flex-grow-1{flex-grow:1!important}}@media print{html .flex-shrink-0,html[data-netbox-color-mode=dark] .flex-shrink-0,html[data-netbox-color-mode=light] .flex-shrink-0{flex-shrink:0!important}}@media print{html .flex-shrink-1,html[data-netbox-color-mode=dark] .flex-shrink-1,html[data-netbox-color-mode=light] .flex-shrink-1{flex-shrink:1!important}}@media print{html .flex-wrap,html[data-netbox-color-mode=dark] .flex-wrap,html[data-netbox-color-mode=light] .flex-wrap{flex-wrap:wrap!important}}@media print{html .flex-nowrap,html[data-netbox-color-mode=dark] .flex-nowrap,html[data-netbox-color-mode=light] .flex-nowrap{flex-wrap:nowrap!important}}@media print{html .flex-wrap-reverse,html[data-netbox-color-mode=dark] .flex-wrap-reverse,html[data-netbox-color-mode=light] .flex-wrap-reverse{flex-wrap:wrap-reverse!important}}@media print{html .gap-0,html[data-netbox-color-mode=dark] .gap-0,html[data-netbox-color-mode=light] .gap-0{gap:0!important}}@media print{html .gap-1,html[data-netbox-color-mode=dark] .gap-1,html[data-netbox-color-mode=light] .gap-1{gap:.25rem!important}}@media print{html .gap-2,html[data-netbox-color-mode=dark] .gap-2,html[data-netbox-color-mode=light] .gap-2{gap:.5rem!important}}@media print{html .gap-3,html[data-netbox-color-mode=dark] .gap-3,html[data-netbox-color-mode=light] .gap-3{gap:1rem!important}}@media print{html .gap-4,html[data-netbox-color-mode=dark] .gap-4,html[data-netbox-color-mode=light] .gap-4{gap:1.5rem!important}}@media print{html .gap-5,html[data-netbox-color-mode=dark] .gap-5,html[data-netbox-color-mode=light] .gap-5{gap:3rem!important}}@media print{html .justify-content-start,html[data-netbox-color-mode=dark] .justify-content-start,html[data-netbox-color-mode=light] .justify-content-start{justify-content:flex-start!important}}@media print{html .justify-content-end,html[data-netbox-color-mode=dark] .justify-content-end,html[data-netbox-color-mode=light] .justify-content-end{justify-content:flex-end!important}}@media print{html .justify-content-center,html[data-netbox-color-mode=dark] .justify-content-center,html[data-netbox-color-mode=light] .justify-content-center{justify-content:center!important}}@media print{html .justify-content-between,html[data-netbox-color-mode=dark] .justify-content-between,html[data-netbox-color-mode=light] .justify-content-between{justify-content:space-between!important}}@media print{html .justify-content-around,html[data-netbox-color-mode=dark] .justify-content-around,html[data-netbox-color-mode=light] .justify-content-around{justify-content:space-around!important}}@media print{html .justify-content-evenly,html[data-netbox-color-mode=dark] .justify-content-evenly,html[data-netbox-color-mode=light] .justify-content-evenly{justify-content:space-evenly!important}}@media print{html .align-items-start,html[data-netbox-color-mode=dark] .align-items-start,html[data-netbox-color-mode=light] .align-items-start{align-items:flex-start!important}}@media print{html .align-items-end,html[data-netbox-color-mode=dark] .align-items-end,html[data-netbox-color-mode=light] .align-items-end{align-items:flex-end!important}}@media print{html .align-items-center,html[data-netbox-color-mode=dark] .align-items-center,html[data-netbox-color-mode=light] .align-items-center{align-items:center!important}}@media print{html .align-items-baseline,html[data-netbox-color-mode=dark] .align-items-baseline,html[data-netbox-color-mode=light] .align-items-baseline{align-items:baseline!important}}@media print{html .align-items-stretch,html[data-netbox-color-mode=dark] .align-items-stretch,html[data-netbox-color-mode=light] .align-items-stretch{align-items:stretch!important}}@media print{html .align-content-start,html[data-netbox-color-mode=dark] .align-content-start,html[data-netbox-color-mode=light] .align-content-start{align-content:flex-start!important}}@media print{html .align-content-end,html[data-netbox-color-mode=dark] .align-content-end,html[data-netbox-color-mode=light] .align-content-end{align-content:flex-end!important}}@media print{html .align-content-center,html[data-netbox-color-mode=dark] .align-content-center,html[data-netbox-color-mode=light] .align-content-center{align-content:center!important}}@media print{html .align-content-between,html[data-netbox-color-mode=dark] .align-content-between,html[data-netbox-color-mode=light] .align-content-between{align-content:space-between!important}}@media print{html .align-content-around,html[data-netbox-color-mode=dark] .align-content-around,html[data-netbox-color-mode=light] .align-content-around{align-content:space-around!important}}@media print{html .align-content-stretch,html[data-netbox-color-mode=dark] .align-content-stretch,html[data-netbox-color-mode=light] .align-content-stretch{align-content:stretch!important}}@media print{html .align-self-auto,html[data-netbox-color-mode=dark] .align-self-auto,html[data-netbox-color-mode=light] .align-self-auto{align-self:auto!important}}@media print{html .align-self-start,html[data-netbox-color-mode=dark] .align-self-start,html[data-netbox-color-mode=light] .align-self-start{align-self:flex-start!important}}@media print{html .align-self-end,html[data-netbox-color-mode=dark] .align-self-end,html[data-netbox-color-mode=light] .align-self-end{align-self:flex-end!important}}@media print{html .align-self-center,html[data-netbox-color-mode=dark] .align-self-center,html[data-netbox-color-mode=light] .align-self-center{align-self:center!important}}@media print{html .align-self-baseline,html[data-netbox-color-mode=dark] .align-self-baseline,html[data-netbox-color-mode=light] .align-self-baseline{align-self:baseline!important}}@media print{html .align-self-stretch,html[data-netbox-color-mode=dark] .align-self-stretch,html[data-netbox-color-mode=light] .align-self-stretch{align-self:stretch!important}}@media print{html .order-first,html[data-netbox-color-mode=dark] .order-first,html[data-netbox-color-mode=light] .order-first{order:-1!important}}@media print{html .order-0,html[data-netbox-color-mode=dark] .order-0,html[data-netbox-color-mode=light] .order-0{order:0!important}}@media print{html .order-1,html[data-netbox-color-mode=dark] .order-1,html[data-netbox-color-mode=light] .order-1{order:1!important}}@media print{html .order-2,html[data-netbox-color-mode=dark] .order-2,html[data-netbox-color-mode=light] .order-2{order:2!important}}@media print{html .order-3,html[data-netbox-color-mode=dark] .order-3,html[data-netbox-color-mode=light] .order-3{order:3!important}}@media print{html .order-4,html[data-netbox-color-mode=dark] .order-4,html[data-netbox-color-mode=light] .order-4{order:4!important}}@media print{html .order-5,html[data-netbox-color-mode=dark] .order-5,html[data-netbox-color-mode=light] .order-5{order:5!important}}@media print{html .order-last,html[data-netbox-color-mode=dark] .order-last,html[data-netbox-color-mode=light] .order-last{order:6!important}}@media print{html .m-0,html[data-netbox-color-mode=dark] .m-0,html[data-netbox-color-mode=light] .m-0{margin:0!important}}@media print{html .m-1,html[data-netbox-color-mode=dark] .m-1,html[data-netbox-color-mode=light] .m-1{margin:.25rem!important}}@media print{html .m-2,html[data-netbox-color-mode=dark] .m-2,html[data-netbox-color-mode=light] .m-2{margin:.5rem!important}}@media print{html .m-3,html[data-netbox-color-mode=dark] .m-3,html[data-netbox-color-mode=light] .m-3{margin:1rem!important}}@media print{html .m-4,html[data-netbox-color-mode=dark] .m-4,html[data-netbox-color-mode=light] .m-4{margin:1.5rem!important}}@media print{html .m-5,html[data-netbox-color-mode=dark] .m-5,html[data-netbox-color-mode=light] .m-5{margin:3rem!important}}@media print{html .m-auto,html[data-netbox-color-mode=dark] .m-auto,html[data-netbox-color-mode=light] .m-auto{margin:auto!important}}@media print{html .mx-0,html[data-netbox-color-mode=dark] .mx-0,html[data-netbox-color-mode=light] .mx-0{margin-right:0!important;margin-left:0!important}}@media print{html .mx-1,html[data-netbox-color-mode=dark] .mx-1,html[data-netbox-color-mode=light] .mx-1{margin-right:.25rem!important;margin-left:.25rem!important}}@media print{html .mx-2,html[data-netbox-color-mode=dark] .mx-2,html[data-netbox-color-mode=light] .mx-2{margin-right:.5rem!important;margin-left:.5rem!important}}@media print{html .mx-3,html[data-netbox-color-mode=dark] .mx-3,html[data-netbox-color-mode=light] .mx-3{margin-right:1rem!important;margin-left:1rem!important}}@media print{html .mx-4,html[data-netbox-color-mode=dark] .mx-4,html[data-netbox-color-mode=light] .mx-4{margin-right:1.5rem!important;margin-left:1.5rem!important}}@media print{html .mx-5,html[data-netbox-color-mode=dark] .mx-5,html[data-netbox-color-mode=light] .mx-5{margin-right:3rem!important;margin-left:3rem!important}}@media print{html .mx-auto,html[data-netbox-color-mode=dark] .mx-auto,html[data-netbox-color-mode=light] .mx-auto{margin-right:auto!important;margin-left:auto!important}}@media print{html .my-0,html[data-netbox-color-mode=dark] .my-0,html[data-netbox-color-mode=light] .my-0{margin-top:0!important;margin-bottom:0!important}}@media print{html .my-1,html[data-netbox-color-mode=dark] .my-1,html[data-netbox-color-mode=light] .my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}}@media print{html .my-2,html[data-netbox-color-mode=dark] .my-2,html[data-netbox-color-mode=light] .my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}}@media print{html .my-3,html[data-netbox-color-mode=dark] .my-3,html[data-netbox-color-mode=light] .my-3{margin-top:1rem!important;margin-bottom:1rem!important}}@media print{html .my-4,html[data-netbox-color-mode=dark] .my-4,html[data-netbox-color-mode=light] .my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}}@media print{html .my-5,html[data-netbox-color-mode=dark] .my-5,html[data-netbox-color-mode=light] .my-5{margin-top:3rem!important;margin-bottom:3rem!important}}@media print{html .my-auto,html[data-netbox-color-mode=dark] .my-auto,html[data-netbox-color-mode=light] .my-auto{margin-top:auto!important;margin-bottom:auto!important}}@media print{html .mt-0,html[data-netbox-color-mode=dark] .mt-0,html[data-netbox-color-mode=light] .mt-0{margin-top:0!important}}@media print{html .mt-1,html[data-netbox-color-mode=dark] .mt-1,html[data-netbox-color-mode=light] .mt-1{margin-top:.25rem!important}}@media print{html .mt-2,html[data-netbox-color-mode=dark] .mt-2,html[data-netbox-color-mode=light] .mt-2{margin-top:.5rem!important}}@media print{html .mt-3,html[data-netbox-color-mode=dark] .mt-3,html[data-netbox-color-mode=light] .mt-3{margin-top:1rem!important}}@media print{html .mt-4,html[data-netbox-color-mode=dark] .mt-4,html[data-netbox-color-mode=light] .mt-4{margin-top:1.5rem!important}}@media print{html .mt-5,html[data-netbox-color-mode=dark] .mt-5,html[data-netbox-color-mode=light] .mt-5{margin-top:3rem!important}}@media print{html .mt-auto,html[data-netbox-color-mode=dark] .mt-auto,html[data-netbox-color-mode=light] .mt-auto{margin-top:auto!important}}@media print{html .me-0,html[data-netbox-color-mode=dark] .me-0,html[data-netbox-color-mode=light] .me-0{margin-right:0!important}}@media print{html .me-1,html[data-netbox-color-mode=dark] .me-1,html[data-netbox-color-mode=light] .me-1{margin-right:.25rem!important}}@media print{html .me-2,html[data-netbox-color-mode=dark] .me-2,html[data-netbox-color-mode=light] .me-2{margin-right:.5rem!important}}@media print{html .me-3,html[data-netbox-color-mode=dark] .me-3,html[data-netbox-color-mode=light] .me-3{margin-right:1rem!important}}@media print{html .me-4,html[data-netbox-color-mode=dark] .me-4,html[data-netbox-color-mode=light] .me-4{margin-right:1.5rem!important}}@media print{html .me-5,html[data-netbox-color-mode=dark] .me-5,html[data-netbox-color-mode=light] .me-5{margin-right:3rem!important}}@media print{html .me-auto,html[data-netbox-color-mode=dark] .me-auto,html[data-netbox-color-mode=light] .me-auto{margin-right:auto!important}}@media print{html .mb-0,html[data-netbox-color-mode=dark] .mb-0,html[data-netbox-color-mode=light] .mb-0{margin-bottom:0!important}}@media print{html .mb-1,html[data-netbox-color-mode=dark] .mb-1,html[data-netbox-color-mode=light] .mb-1{margin-bottom:.25rem!important}}@media print{html .mb-2,html[data-netbox-color-mode=dark] .mb-2,html[data-netbox-color-mode=light] .mb-2{margin-bottom:.5rem!important}}@media print{html .mb-3,html[data-netbox-color-mode=dark] .mb-3,html[data-netbox-color-mode=light] .mb-3{margin-bottom:1rem!important}}@media print{html .mb-4,html[data-netbox-color-mode=dark] .mb-4,html[data-netbox-color-mode=light] .mb-4{margin-bottom:1.5rem!important}}@media print{html .mb-5,html[data-netbox-color-mode=dark] .mb-5,html[data-netbox-color-mode=light] .mb-5{margin-bottom:3rem!important}}@media print{html .mb-auto,html[data-netbox-color-mode=dark] .mb-auto,html[data-netbox-color-mode=light] .mb-auto{margin-bottom:auto!important}}@media print{html .ms-0,html[data-netbox-color-mode=dark] .ms-0,html[data-netbox-color-mode=light] .ms-0{margin-left:0!important}}@media print{html .ms-1,html[data-netbox-color-mode=dark] .ms-1,html[data-netbox-color-mode=light] .ms-1{margin-left:.25rem!important}}@media print{html .ms-2,html[data-netbox-color-mode=dark] .ms-2,html[data-netbox-color-mode=light] .ms-2{margin-left:.5rem!important}}@media print{html .ms-3,html[data-netbox-color-mode=dark] .ms-3,html[data-netbox-color-mode=light] .ms-3{margin-left:1rem!important}}@media print{html .ms-4,html[data-netbox-color-mode=dark] .ms-4,html[data-netbox-color-mode=light] .ms-4{margin-left:1.5rem!important}}@media print{html .ms-5,html[data-netbox-color-mode=dark] .ms-5,html[data-netbox-color-mode=light] .ms-5{margin-left:3rem!important}}@media print{html .ms-auto,html[data-netbox-color-mode=dark] .ms-auto,html[data-netbox-color-mode=light] .ms-auto{margin-left:auto!important}}@media print{html .p-0,html[data-netbox-color-mode=dark] .p-0,html[data-netbox-color-mode=light] .p-0{padding:0!important}}@media print{html .p-1,html[data-netbox-color-mode=dark] .p-1,html[data-netbox-color-mode=light] .p-1{padding:.25rem!important}}@media print{html .p-2,html[data-netbox-color-mode=dark] .p-2,html[data-netbox-color-mode=light] .p-2{padding:.5rem!important}}@media print{html .p-3,html[data-netbox-color-mode=dark] .p-3,html[data-netbox-color-mode=light] .p-3{padding:1rem!important}}@media print{html .p-4,html[data-netbox-color-mode=dark] .p-4,html[data-netbox-color-mode=light] .p-4{padding:1.5rem!important}}@media print{html .p-5,html[data-netbox-color-mode=dark] .p-5,html[data-netbox-color-mode=light] .p-5{padding:3rem!important}}@media print{html .px-0,html[data-netbox-color-mode=dark] .px-0,html[data-netbox-color-mode=light] .px-0{padding-right:0!important;padding-left:0!important}}@media print{html .px-1,html[data-netbox-color-mode=dark] .px-1,html[data-netbox-color-mode=light] .px-1{padding-right:.25rem!important;padding-left:.25rem!important}}@media print{html .px-2,html[data-netbox-color-mode=dark] .px-2,html[data-netbox-color-mode=light] .px-2{padding-right:.5rem!important;padding-left:.5rem!important}}@media print{html .px-3,html[data-netbox-color-mode=dark] .px-3,html[data-netbox-color-mode=light] .px-3{padding-right:1rem!important;padding-left:1rem!important}}@media print{html .px-4,html[data-netbox-color-mode=dark] .px-4,html[data-netbox-color-mode=light] .px-4{padding-right:1.5rem!important;padding-left:1.5rem!important}}@media print{html .px-5,html[data-netbox-color-mode=dark] .px-5,html[data-netbox-color-mode=light] .px-5{padding-right:3rem!important;padding-left:3rem!important}}@media print{html .py-0,html[data-netbox-color-mode=dark] .py-0,html[data-netbox-color-mode=light] .py-0{padding-top:0!important;padding-bottom:0!important}}@media print{html .py-1,html[data-netbox-color-mode=dark] .py-1,html[data-netbox-color-mode=light] .py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}}@media print{html .py-2,html[data-netbox-color-mode=dark] .py-2,html[data-netbox-color-mode=light] .py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}}@media print{html .py-3,html[data-netbox-color-mode=dark] .py-3,html[data-netbox-color-mode=light] .py-3{padding-top:1rem!important;padding-bottom:1rem!important}}@media print{html .py-4,html[data-netbox-color-mode=dark] .py-4,html[data-netbox-color-mode=light] .py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}}@media print{html .py-5,html[data-netbox-color-mode=dark] .py-5,html[data-netbox-color-mode=light] .py-5{padding-top:3rem!important;padding-bottom:3rem!important}}@media print{html .pt-0,html[data-netbox-color-mode=dark] .pt-0,html[data-netbox-color-mode=light] .pt-0{padding-top:0!important}}@media print{html .pt-1,html[data-netbox-color-mode=dark] .pt-1,html[data-netbox-color-mode=light] .pt-1{padding-top:.25rem!important}}@media print{html .pt-2,html[data-netbox-color-mode=dark] .pt-2,html[data-netbox-color-mode=light] .pt-2{padding-top:.5rem!important}}@media print{html .pt-3,html[data-netbox-color-mode=dark] .pt-3,html[data-netbox-color-mode=light] .pt-3{padding-top:1rem!important}}@media print{html .pt-4,html[data-netbox-color-mode=dark] .pt-4,html[data-netbox-color-mode=light] .pt-4{padding-top:1.5rem!important}}@media print{html .pt-5,html[data-netbox-color-mode=dark] .pt-5,html[data-netbox-color-mode=light] .pt-5{padding-top:3rem!important}}@media print{html .pe-0,html[data-netbox-color-mode=dark] .pe-0,html[data-netbox-color-mode=light] .pe-0{padding-right:0!important}}@media print{html .pe-1,html[data-netbox-color-mode=dark] .pe-1,html[data-netbox-color-mode=light] .pe-1{padding-right:.25rem!important}}@media print{html .pe-2,html[data-netbox-color-mode=dark] .pe-2,html[data-netbox-color-mode=light] .pe-2{padding-right:.5rem!important}}@media print{html .pe-3,html[data-netbox-color-mode=dark] .pe-3,html[data-netbox-color-mode=light] .pe-3{padding-right:1rem!important}}@media print{html .pe-4,html[data-netbox-color-mode=dark] .pe-4,html[data-netbox-color-mode=light] .pe-4{padding-right:1.5rem!important}}@media print{html .pe-5,html[data-netbox-color-mode=dark] .pe-5,html[data-netbox-color-mode=light] .pe-5{padding-right:3rem!important}}@media print{html .pb-0,html[data-netbox-color-mode=dark] .pb-0,html[data-netbox-color-mode=light] .pb-0{padding-bottom:0!important}}@media print{html .pb-1,html[data-netbox-color-mode=dark] .pb-1,html[data-netbox-color-mode=light] .pb-1{padding-bottom:.25rem!important}}@media print{html .pb-2,html[data-netbox-color-mode=dark] .pb-2,html[data-netbox-color-mode=light] .pb-2{padding-bottom:.5rem!important}}@media print{html .pb-3,html[data-netbox-color-mode=dark] .pb-3,html[data-netbox-color-mode=light] .pb-3{padding-bottom:1rem!important}}@media print{html .pb-4,html[data-netbox-color-mode=dark] .pb-4,html[data-netbox-color-mode=light] .pb-4{padding-bottom:1.5rem!important}}@media print{html .pb-5,html[data-netbox-color-mode=dark] .pb-5,html[data-netbox-color-mode=light] .pb-5{padding-bottom:3rem!important}}@media print{html .ps-0,html[data-netbox-color-mode=dark] .ps-0,html[data-netbox-color-mode=light] .ps-0{padding-left:0!important}}@media print{html .ps-1,html[data-netbox-color-mode=dark] .ps-1,html[data-netbox-color-mode=light] .ps-1{padding-left:.25rem!important}}@media print{html .ps-2,html[data-netbox-color-mode=dark] .ps-2,html[data-netbox-color-mode=light] .ps-2{padding-left:.5rem!important}}@media print{html .ps-3,html[data-netbox-color-mode=dark] .ps-3,html[data-netbox-color-mode=light] .ps-3{padding-left:1rem!important}}@media print{html .ps-4,html[data-netbox-color-mode=dark] .ps-4,html[data-netbox-color-mode=light] .ps-4{padding-left:1.5rem!important}}@media print{html .ps-5,html[data-netbox-color-mode=dark] .ps-5,html[data-netbox-color-mode=light] .ps-5{padding-left:3rem!important}}@media print{html .font-monospace,html[data-netbox-color-mode=dark] .font-monospace,html[data-netbox-color-mode=light] .font-monospace{font-family:var(--bs-font-monospace)!important}}@media print{html .fs-1,html[data-netbox-color-mode=dark] .fs-1,html[data-netbox-color-mode=light] .fs-1{font-size:calc(1.375rem + 1.5vw)!important}}@media print{html .fs-2,html[data-netbox-color-mode=dark] .fs-2,html[data-netbox-color-mode=light] .fs-2{font-size:calc(1.325rem + .9vw)!important}}@media print{html .fs-3,html[data-netbox-color-mode=dark] .fs-3,html[data-netbox-color-mode=light] .fs-3{font-size:calc(1.3rem + .6vw)!important}}@media print{html .fs-4,html[data-netbox-color-mode=dark] .fs-4,html[data-netbox-color-mode=light] .fs-4{font-size:calc(1.275rem + .3vw)!important}}@media print{html .fs-5,html[data-netbox-color-mode=dark] .fs-5,html[data-netbox-color-mode=light] .fs-5{font-size:1.25rem!important}}@media print{html .fs-6,html[data-netbox-color-mode=dark] .fs-6,html[data-netbox-color-mode=light] .fs-6{font-size:1rem!important}}@media print{html .fst-italic,html[data-netbox-color-mode=dark] .fst-italic,html[data-netbox-color-mode=light] .fst-italic{font-style:italic!important}}@media print{html .fst-normal,html[data-netbox-color-mode=dark] .fst-normal,html[data-netbox-color-mode=light] .fst-normal{font-style:normal!important}}@media print{html .fw-light,html[data-netbox-color-mode=dark] .fw-light,html[data-netbox-color-mode=light] .fw-light{font-weight:300!important}}@media print{html .fw-lighter,html[data-netbox-color-mode=dark] .fw-lighter,html[data-netbox-color-mode=light] .fw-lighter{font-weight:200!important}}@media print{html .fw-normal,html[data-netbox-color-mode=dark] .fw-normal,html[data-netbox-color-mode=light] .fw-normal{font-weight:400!important}}@media print{html .fw-bold,html[data-netbox-color-mode=dark] .fw-bold,html[data-netbox-color-mode=light] .fw-bold{font-weight:700!important}}@media print{html .fw-bolder,html[data-netbox-color-mode=dark] .fw-bolder,html[data-netbox-color-mode=light] .fw-bolder{font-weight:800!important}}@media print{html .lh-1,html[data-netbox-color-mode=dark] .lh-1,html[data-netbox-color-mode=light] .lh-1{line-height:1!important}}@media print{html .lh-sm,html[data-netbox-color-mode=dark] .lh-sm,html[data-netbox-color-mode=light] .lh-sm{line-height:1.25!important}}@media print{html .lh-base,html[data-netbox-color-mode=dark] .lh-base,html[data-netbox-color-mode=light] .lh-base{line-height:1.5!important}}@media print{html .lh-lg,html[data-netbox-color-mode=dark] .lh-lg,html[data-netbox-color-mode=light] .lh-lg{line-height:1.75!important}}@media print{html .text-start,html[data-netbox-color-mode=dark] .text-start,html[data-netbox-color-mode=light] .text-start{text-align:left!important}}@media print{html .text-end,html[data-netbox-color-mode=dark] .text-end,html[data-netbox-color-mode=light] .text-end{text-align:right!important}}@media print{html .text-center,html[data-netbox-color-mode=dark] .text-center,html[data-netbox-color-mode=light] .text-center{text-align:center!important}}@media print{html .text-decoration-none,html[data-netbox-color-mode=dark] .text-decoration-none,html[data-netbox-color-mode=light] .text-decoration-none{text-decoration:none!important}}@media print{html .text-decoration-underline,html[data-netbox-color-mode=dark] .text-decoration-underline,html[data-netbox-color-mode=light] .text-decoration-underline{text-decoration:underline!important}}@media print{html .text-decoration-line-through,html[data-netbox-color-mode=dark] .text-decoration-line-through,html[data-netbox-color-mode=light] .text-decoration-line-through{text-decoration:line-through!important}}@media print{html .text-lowercase,html[data-netbox-color-mode=dark] .text-lowercase,html[data-netbox-color-mode=light] .text-lowercase{text-transform:lowercase!important}}@media print{html .text-uppercase,html[data-netbox-color-mode=dark] .text-uppercase,html[data-netbox-color-mode=light] .text-uppercase{text-transform:uppercase!important}}@media print{html .text-capitalize,html[data-netbox-color-mode=dark] .text-capitalize,html[data-netbox-color-mode=light] .text-capitalize{text-transform:capitalize!important}}@media print{html .text-wrap,html[data-netbox-color-mode=dark] .text-wrap,html[data-netbox-color-mode=light] .text-wrap{white-space:normal!important}}@media print{html .text-nowrap,html[data-netbox-color-mode=dark] .text-nowrap,html[data-netbox-color-mode=light] .text-nowrap{white-space:nowrap!important}}@media print{html .text-break,html[data-netbox-color-mode=dark] .text-break,html[data-netbox-color-mode=light] .text-break{word-wrap:break-word!important;word-break:break-word!important}}@media print{html .text-primary,html[data-netbox-color-mode=dark] .text-primary,html[data-netbox-color-mode=light] .text-primary{color:#337ab7!important}}@media print{html .text-secondary,html[data-netbox-color-mode=dark] .text-secondary,html[data-netbox-color-mode=light] .text-secondary{color:#6c757d!important}}@media print{html .text-success,html[data-netbox-color-mode=dark] .text-success,html[data-netbox-color-mode=light] .text-success{color:#198754!important}}@media print{html .text-info,html[data-netbox-color-mode=dark] .text-info,html[data-netbox-color-mode=light] .text-info{color:#0dcaf0!important}}@media print{html .text-warning,html[data-netbox-color-mode=dark] .text-warning,html[data-netbox-color-mode=light] .text-warning{color:#ffc107!important}}@media print{html .text-danger,html[data-netbox-color-mode=dark] .text-danger,html[data-netbox-color-mode=light] .text-danger{color:#dc3545!important}}@media print{html .text-light,html[data-netbox-color-mode=dark] .text-light,html[data-netbox-color-mode=light] .text-light{color:#f8f9fa!important}}@media print{html .text-dark,html[data-netbox-color-mode=dark] .text-dark,html[data-netbox-color-mode=light] .text-dark{color:#212529!important}}@media print{html .text-red,html[data-netbox-color-mode=dark] .text-red,html[data-netbox-color-mode=light] .text-red{color:#dc3545!important}}@media print{html .text-yellow,html[data-netbox-color-mode=dark] .text-yellow,html[data-netbox-color-mode=light] .text-yellow{color:#ffc107!important}}@media print{html .text-green,html[data-netbox-color-mode=dark] .text-green,html[data-netbox-color-mode=light] .text-green{color:#198754!important}}@media print{html .text-blue,html[data-netbox-color-mode=dark] .text-blue,html[data-netbox-color-mode=light] .text-blue{color:#0d6efd!important}}@media print{html .text-cyan,html[data-netbox-color-mode=dark] .text-cyan,html[data-netbox-color-mode=light] .text-cyan{color:#0dcaf0!important}}@media print{html .text-indigo,html[data-netbox-color-mode=dark] .text-indigo,html[data-netbox-color-mode=light] .text-indigo{color:#6610f2!important}}@media print{html .text-purple,html[data-netbox-color-mode=dark] .text-purple,html[data-netbox-color-mode=light] .text-purple{color:#6f42c1!important}}@media print{html .text-pink,html[data-netbox-color-mode=dark] .text-pink,html[data-netbox-color-mode=light] .text-pink{color:#d63384!important}}@media print{html .text-darker,html[data-netbox-color-mode=dark] .text-darker,html[data-netbox-color-mode=light] .text-darker{color:#1b1f22!important}}@media print{html .text-darkest,html[data-netbox-color-mode=dark] .text-darkest,html[data-netbox-color-mode=light] .text-darkest{color:#171b1d!important}}@media print{html .text-gray,html[data-netbox-color-mode=dark] .text-gray,html[data-netbox-color-mode=light] .text-gray{color:#ced4da!important}}@media print{html .text-gray-100,html[data-netbox-color-mode=dark] .text-gray-100,html[data-netbox-color-mode=light] .text-gray-100{color:#f8f9fa!important}}@media print{html .text-gray-200,html[data-netbox-color-mode=dark] .text-gray-200,html[data-netbox-color-mode=light] .text-gray-200{color:#e9ecef!important}}@media print{html .text-gray-300,html[data-netbox-color-mode=dark] .text-gray-300,html[data-netbox-color-mode=light] .text-gray-300{color:#dee2e6!important}}@media print{html .text-gray-400,html[data-netbox-color-mode=dark] .text-gray-400,html[data-netbox-color-mode=light] .text-gray-400{color:#ced4da!important}}@media print{html .text-gray-500,html[data-netbox-color-mode=dark] .text-gray-500,html[data-netbox-color-mode=light] .text-gray-500{color:#adb5bd!important}}@media print{html .text-gray-600,html[data-netbox-color-mode=dark] .text-gray-600,html[data-netbox-color-mode=light] .text-gray-600{color:#6c757d!important}}@media print{html .text-gray-700,html[data-netbox-color-mode=dark] .text-gray-700,html[data-netbox-color-mode=light] .text-gray-700{color:#495057!important}}@media print{html .text-gray-800,html[data-netbox-color-mode=dark] .text-gray-800,html[data-netbox-color-mode=light] .text-gray-800{color:#343a40!important}}@media print{html .text-gray-900,html[data-netbox-color-mode=dark] .text-gray-900,html[data-netbox-color-mode=light] .text-gray-900{color:#212529!important}}@media print{html .text-red-100,html[data-netbox-color-mode=dark] .text-red-100,html[data-netbox-color-mode=light] .text-red-100{color:#f8d7da!important}}@media print{html .text-red-200,html[data-netbox-color-mode=dark] .text-red-200,html[data-netbox-color-mode=light] .text-red-200{color:#f1aeb5!important}}@media print{html .text-red-300,html[data-netbox-color-mode=dark] .text-red-300,html[data-netbox-color-mode=light] .text-red-300{color:#ea868f!important}}@media print{html .text-red-400,html[data-netbox-color-mode=dark] .text-red-400,html[data-netbox-color-mode=light] .text-red-400{color:#e35d6a!important}}@media print{html .text-red-500,html[data-netbox-color-mode=dark] .text-red-500,html[data-netbox-color-mode=light] .text-red-500{color:#dc3545!important}}@media print{html .text-red-600,html[data-netbox-color-mode=dark] .text-red-600,html[data-netbox-color-mode=light] .text-red-600{color:#b02a37!important}}@media print{html .text-red-700,html[data-netbox-color-mode=dark] .text-red-700,html[data-netbox-color-mode=light] .text-red-700{color:#842029!important}}@media print{html .text-red-800,html[data-netbox-color-mode=dark] .text-red-800,html[data-netbox-color-mode=light] .text-red-800{color:#58151c!important}}@media print{html .text-red-900,html[data-netbox-color-mode=dark] .text-red-900,html[data-netbox-color-mode=light] .text-red-900{color:#2c0b0e!important}}@media print{html .text-yellow-100,html[data-netbox-color-mode=dark] .text-yellow-100,html[data-netbox-color-mode=light] .text-yellow-100{color:#fff3cd!important}}@media print{html .text-yellow-200,html[data-netbox-color-mode=dark] .text-yellow-200,html[data-netbox-color-mode=light] .text-yellow-200{color:#ffe69c!important}}@media print{html .text-yellow-300,html[data-netbox-color-mode=dark] .text-yellow-300,html[data-netbox-color-mode=light] .text-yellow-300{color:#ffda6a!important}}@media print{html .text-yellow-400,html[data-netbox-color-mode=dark] .text-yellow-400,html[data-netbox-color-mode=light] .text-yellow-400{color:#ffcd39!important}}@media print{html .text-yellow-500,html[data-netbox-color-mode=dark] .text-yellow-500,html[data-netbox-color-mode=light] .text-yellow-500{color:#ffc107!important}}@media print{html .text-yellow-600,html[data-netbox-color-mode=dark] .text-yellow-600,html[data-netbox-color-mode=light] .text-yellow-600{color:#cc9a06!important}}@media print{html .text-yellow-700,html[data-netbox-color-mode=dark] .text-yellow-700,html[data-netbox-color-mode=light] .text-yellow-700{color:#997404!important}}@media print{html .text-yellow-800,html[data-netbox-color-mode=dark] .text-yellow-800,html[data-netbox-color-mode=light] .text-yellow-800{color:#664d03!important}}@media print{html .text-yellow-900,html[data-netbox-color-mode=dark] .text-yellow-900,html[data-netbox-color-mode=light] .text-yellow-900{color:#332701!important}}@media print{html .text-green-100,html[data-netbox-color-mode=dark] .text-green-100,html[data-netbox-color-mode=light] .text-green-100{color:#d1e7dd!important}}@media print{html .text-green-200,html[data-netbox-color-mode=dark] .text-green-200,html[data-netbox-color-mode=light] .text-green-200{color:#a3cfbb!important}}@media print{html .text-green-300,html[data-netbox-color-mode=dark] .text-green-300,html[data-netbox-color-mode=light] .text-green-300{color:#75b798!important}}@media print{html .text-green-400,html[data-netbox-color-mode=dark] .text-green-400,html[data-netbox-color-mode=light] .text-green-400{color:#479f76!important}}@media print{html .text-green-500,html[data-netbox-color-mode=dark] .text-green-500,html[data-netbox-color-mode=light] .text-green-500{color:#198754!important}}@media print{html .text-green-600,html[data-netbox-color-mode=dark] .text-green-600,html[data-netbox-color-mode=light] .text-green-600{color:#146c43!important}}@media print{html .text-green-700,html[data-netbox-color-mode=dark] .text-green-700,html[data-netbox-color-mode=light] .text-green-700{color:#0f5132!important}}@media print{html .text-green-800,html[data-netbox-color-mode=dark] .text-green-800,html[data-netbox-color-mode=light] .text-green-800{color:#0a3622!important}}@media print{html .text-green-900,html[data-netbox-color-mode=dark] .text-green-900,html[data-netbox-color-mode=light] .text-green-900{color:#051b11!important}}@media print{html .text-blue-100,html[data-netbox-color-mode=dark] .text-blue-100,html[data-netbox-color-mode=light] .text-blue-100{color:#cfe2ff!important}}@media print{html .text-blue-200,html[data-netbox-color-mode=dark] .text-blue-200,html[data-netbox-color-mode=light] .text-blue-200{color:#9ec5fe!important}}@media print{html .text-blue-300,html[data-netbox-color-mode=dark] .text-blue-300,html[data-netbox-color-mode=light] .text-blue-300{color:#6ea8fe!important}}@media print{html .text-blue-400,html[data-netbox-color-mode=dark] .text-blue-400,html[data-netbox-color-mode=light] .text-blue-400{color:#3d8bfd!important}}@media print{html .text-blue-500,html[data-netbox-color-mode=dark] .text-blue-500,html[data-netbox-color-mode=light] .text-blue-500{color:#0d6efd!important}}@media print{html .text-blue-600,html[data-netbox-color-mode=dark] .text-blue-600,html[data-netbox-color-mode=light] .text-blue-600{color:#0a58ca!important}}@media print{html .text-blue-700,html[data-netbox-color-mode=dark] .text-blue-700,html[data-netbox-color-mode=light] .text-blue-700{color:#084298!important}}@media print{html .text-blue-800,html[data-netbox-color-mode=dark] .text-blue-800,html[data-netbox-color-mode=light] .text-blue-800{color:#052c65!important}}@media print{html .text-blue-900,html[data-netbox-color-mode=dark] .text-blue-900,html[data-netbox-color-mode=light] .text-blue-900{color:#031633!important}}@media print{html .text-cyan-100,html[data-netbox-color-mode=dark] .text-cyan-100,html[data-netbox-color-mode=light] .text-cyan-100{color:#cff4fc!important}}@media print{html .text-cyan-200,html[data-netbox-color-mode=dark] .text-cyan-200,html[data-netbox-color-mode=light] .text-cyan-200{color:#9eeaf9!important}}@media print{html .text-cyan-300,html[data-netbox-color-mode=dark] .text-cyan-300,html[data-netbox-color-mode=light] .text-cyan-300{color:#6edff6!important}}@media print{html .text-cyan-400,html[data-netbox-color-mode=dark] .text-cyan-400,html[data-netbox-color-mode=light] .text-cyan-400{color:#3dd5f3!important}}@media print{html .text-cyan-500,html[data-netbox-color-mode=dark] .text-cyan-500,html[data-netbox-color-mode=light] .text-cyan-500{color:#0dcaf0!important}}@media print{html .text-cyan-600,html[data-netbox-color-mode=dark] .text-cyan-600,html[data-netbox-color-mode=light] .text-cyan-600{color:#0aa2c0!important}}@media print{html .text-cyan-700,html[data-netbox-color-mode=dark] .text-cyan-700,html[data-netbox-color-mode=light] .text-cyan-700{color:#087990!important}}@media print{html .text-cyan-800,html[data-netbox-color-mode=dark] .text-cyan-800,html[data-netbox-color-mode=light] .text-cyan-800{color:#055160!important}}@media print{html .text-cyan-900,html[data-netbox-color-mode=dark] .text-cyan-900,html[data-netbox-color-mode=light] .text-cyan-900{color:#032830!important}}@media print{html .text-indigo-100,html[data-netbox-color-mode=dark] .text-indigo-100,html[data-netbox-color-mode=light] .text-indigo-100{color:#e0cffc!important}}@media print{html .text-indigo-200,html[data-netbox-color-mode=dark] .text-indigo-200,html[data-netbox-color-mode=light] .text-indigo-200{color:#c29ffa!important}}@media print{html .text-indigo-300,html[data-netbox-color-mode=dark] .text-indigo-300,html[data-netbox-color-mode=light] .text-indigo-300{color:#a370f7!important}}@media print{html .text-indigo-400,html[data-netbox-color-mode=dark] .text-indigo-400,html[data-netbox-color-mode=light] .text-indigo-400{color:#8540f5!important}}@media print{html .text-indigo-500,html[data-netbox-color-mode=dark] .text-indigo-500,html[data-netbox-color-mode=light] .text-indigo-500{color:#6610f2!important}}@media print{html .text-indigo-600,html[data-netbox-color-mode=dark] .text-indigo-600,html[data-netbox-color-mode=light] .text-indigo-600{color:#520dc2!important}}@media print{html .text-indigo-700,html[data-netbox-color-mode=dark] .text-indigo-700,html[data-netbox-color-mode=light] .text-indigo-700{color:#3d0a91!important}}@media print{html .text-indigo-800,html[data-netbox-color-mode=dark] .text-indigo-800,html[data-netbox-color-mode=light] .text-indigo-800{color:#290661!important}}@media print{html .text-indigo-900,html[data-netbox-color-mode=dark] .text-indigo-900,html[data-netbox-color-mode=light] .text-indigo-900{color:#140330!important}}@media print{html .text-purple-100,html[data-netbox-color-mode=dark] .text-purple-100,html[data-netbox-color-mode=light] .text-purple-100{color:#e2d9f3!important}}@media print{html .text-purple-200,html[data-netbox-color-mode=dark] .text-purple-200,html[data-netbox-color-mode=light] .text-purple-200{color:#c5b3e6!important}}@media print{html .text-purple-300,html[data-netbox-color-mode=dark] .text-purple-300,html[data-netbox-color-mode=light] .text-purple-300{color:#a98eda!important}}@media print{html .text-purple-400,html[data-netbox-color-mode=dark] .text-purple-400,html[data-netbox-color-mode=light] .text-purple-400{color:#8c68cd!important}}@media print{html .text-purple-500,html[data-netbox-color-mode=dark] .text-purple-500,html[data-netbox-color-mode=light] .text-purple-500{color:#6f42c1!important}}@media print{html .text-purple-600,html[data-netbox-color-mode=dark] .text-purple-600,html[data-netbox-color-mode=light] .text-purple-600{color:#59359a!important}}@media print{html .text-purple-700,html[data-netbox-color-mode=dark] .text-purple-700,html[data-netbox-color-mode=light] .text-purple-700{color:#432874!important}}@media print{html .text-purple-800,html[data-netbox-color-mode=dark] .text-purple-800,html[data-netbox-color-mode=light] .text-purple-800{color:#2c1a4d!important}}@media print{html .text-purple-900,html[data-netbox-color-mode=dark] .text-purple-900,html[data-netbox-color-mode=light] .text-purple-900{color:#160d27!important}}@media print{html .text-pink-100,html[data-netbox-color-mode=dark] .text-pink-100,html[data-netbox-color-mode=light] .text-pink-100{color:#f7d6e6!important}}@media print{html .text-pink-200,html[data-netbox-color-mode=dark] .text-pink-200,html[data-netbox-color-mode=light] .text-pink-200{color:#efadce!important}}@media print{html .text-pink-300,html[data-netbox-color-mode=dark] .text-pink-300,html[data-netbox-color-mode=light] .text-pink-300{color:#e685b5!important}}@media print{html .text-pink-400,html[data-netbox-color-mode=dark] .text-pink-400,html[data-netbox-color-mode=light] .text-pink-400{color:#de5c9d!important}}@media print{html .text-pink-500,html[data-netbox-color-mode=dark] .text-pink-500,html[data-netbox-color-mode=light] .text-pink-500{color:#d63384!important}}@media print{html .text-pink-600,html[data-netbox-color-mode=dark] .text-pink-600,html[data-netbox-color-mode=light] .text-pink-600{color:#ab296a!important}}@media print{html .text-pink-700,html[data-netbox-color-mode=dark] .text-pink-700,html[data-netbox-color-mode=light] .text-pink-700{color:#801f4f!important}}@media print{html .text-pink-800,html[data-netbox-color-mode=dark] .text-pink-800,html[data-netbox-color-mode=light] .text-pink-800{color:#561435!important}}@media print{html .text-pink-900,html[data-netbox-color-mode=dark] .text-pink-900,html[data-netbox-color-mode=light] .text-pink-900{color:#2b0a1a!important}}@media print{html .text-white,html[data-netbox-color-mode=dark] .text-white,html[data-netbox-color-mode=light] .text-white{color:#fff!important}}@media print{html .text-body,html[data-netbox-color-mode=dark] .text-body,html[data-netbox-color-mode=light] .text-body{color:#212529!important}}@media print{html .text-muted,html[data-netbox-color-mode=dark] .text-muted,html[data-netbox-color-mode=light] .text-muted{color:#6c757d!important}}@media print{html .text-black-50,html[data-netbox-color-mode=dark] .text-black-50,html[data-netbox-color-mode=light] .text-black-50{color:#00000080!important}}@media print{html .text-white-50,html[data-netbox-color-mode=dark] .text-white-50,html[data-netbox-color-mode=light] .text-white-50{color:#ffffff80!important}}@media print{html .text-reset,html[data-netbox-color-mode=dark] .text-reset,html[data-netbox-color-mode=light] .text-reset{color:inherit!important}}@media print{html .bg-primary,html[data-netbox-color-mode=dark] .bg-primary,html[data-netbox-color-mode=light] .bg-primary{background-color:#337ab7!important}}@media print{html .bg-secondary,html[data-netbox-color-mode=dark] .bg-secondary,html[data-netbox-color-mode=light] .bg-secondary{background-color:#6c757d!important}}@media print{html .bg-success,html[data-netbox-color-mode=dark] .bg-success,html[data-netbox-color-mode=light] .bg-success{background-color:#198754!important}}@media print{html .bg-info,html[data-netbox-color-mode=dark] .bg-info,html[data-netbox-color-mode=light] .bg-info{background-color:#0dcaf0!important}}@media print{html .bg-warning,html[data-netbox-color-mode=dark] .bg-warning,html[data-netbox-color-mode=light] .bg-warning{background-color:#ffc107!important}}@media print{html .bg-danger,html[data-netbox-color-mode=dark] .bg-danger,html[data-netbox-color-mode=light] .bg-danger{background-color:#dc3545!important}}@media print{html .bg-light,html[data-netbox-color-mode=dark] .bg-light,html[data-netbox-color-mode=light] .bg-light{background-color:#f8f9fa!important}}@media print{html .bg-dark,html[data-netbox-color-mode=dark] .bg-dark,html[data-netbox-color-mode=light] .bg-dark{background-color:#212529!important}}@media print{html .bg-red,html[data-netbox-color-mode=dark] .bg-red,html[data-netbox-color-mode=light] .bg-red{background-color:#dc3545!important}}@media print{html .bg-yellow,html[data-netbox-color-mode=dark] .bg-yellow,html[data-netbox-color-mode=light] .bg-yellow{background-color:#ffc107!important}}@media print{html .bg-green,html[data-netbox-color-mode=dark] .bg-green,html[data-netbox-color-mode=light] .bg-green{background-color:#198754!important}}@media print{html .bg-blue,html[data-netbox-color-mode=dark] .bg-blue,html[data-netbox-color-mode=light] .bg-blue{background-color:#0d6efd!important}}@media print{html .bg-cyan,html[data-netbox-color-mode=dark] .bg-cyan,html[data-netbox-color-mode=light] .bg-cyan{background-color:#0dcaf0!important}}@media print{html .bg-indigo,html[data-netbox-color-mode=dark] .bg-indigo,html[data-netbox-color-mode=light] .bg-indigo{background-color:#6610f2!important}}@media print{html .bg-purple,html[data-netbox-color-mode=dark] .bg-purple,html[data-netbox-color-mode=light] .bg-purple{background-color:#6f42c1!important}}@media print{html .bg-pink,html[data-netbox-color-mode=dark] .bg-pink,html[data-netbox-color-mode=light] .bg-pink{background-color:#d63384!important}}@media print{html .bg-darker,html[data-netbox-color-mode=dark] .bg-darker,html[data-netbox-color-mode=light] .bg-darker{background-color:#1b1f22!important}}@media print{html .bg-darkest,html[data-netbox-color-mode=dark] .bg-darkest,html[data-netbox-color-mode=light] .bg-darkest{background-color:#171b1d!important}}@media print{html .bg-gray,html[data-netbox-color-mode=dark] .bg-gray,html[data-netbox-color-mode=light] .bg-gray{background-color:#ced4da!important}}@media print{html .bg-gray-100,html[data-netbox-color-mode=dark] .bg-gray-100,html[data-netbox-color-mode=light] .bg-gray-100{background-color:#f8f9fa!important}}@media print{html .bg-gray-200,html[data-netbox-color-mode=dark] .bg-gray-200,html[data-netbox-color-mode=light] .bg-gray-200{background-color:#e9ecef!important}}@media print{html .bg-gray-300,html[data-netbox-color-mode=dark] .bg-gray-300,html[data-netbox-color-mode=light] .bg-gray-300{background-color:#dee2e6!important}}@media print{html .bg-gray-400,html[data-netbox-color-mode=dark] .bg-gray-400,html[data-netbox-color-mode=light] .bg-gray-400{background-color:#ced4da!important}}@media print{html .bg-gray-500,html[data-netbox-color-mode=dark] .bg-gray-500,html[data-netbox-color-mode=light] .bg-gray-500{background-color:#adb5bd!important}}@media print{html .bg-gray-600,html[data-netbox-color-mode=dark] .bg-gray-600,html[data-netbox-color-mode=light] .bg-gray-600{background-color:#6c757d!important}}@media print{html .bg-gray-700,html[data-netbox-color-mode=dark] .bg-gray-700,html[data-netbox-color-mode=light] .bg-gray-700{background-color:#495057!important}}@media print{html .bg-gray-800,html[data-netbox-color-mode=dark] .bg-gray-800,html[data-netbox-color-mode=light] .bg-gray-800{background-color:#343a40!important}}@media print{html .bg-gray-900,html[data-netbox-color-mode=dark] .bg-gray-900,html[data-netbox-color-mode=light] .bg-gray-900{background-color:#212529!important}}@media print{html .bg-red-100,html[data-netbox-color-mode=dark] .bg-red-100,html[data-netbox-color-mode=light] .bg-red-100{background-color:#f8d7da!important}}@media print{html .bg-red-200,html[data-netbox-color-mode=dark] .bg-red-200,html[data-netbox-color-mode=light] .bg-red-200{background-color:#f1aeb5!important}}@media print{html .bg-red-300,html[data-netbox-color-mode=dark] .bg-red-300,html[data-netbox-color-mode=light] .bg-red-300{background-color:#ea868f!important}}@media print{html .bg-red-400,html[data-netbox-color-mode=dark] .bg-red-400,html[data-netbox-color-mode=light] .bg-red-400{background-color:#e35d6a!important}}@media print{html .bg-red-500,html[data-netbox-color-mode=dark] .bg-red-500,html[data-netbox-color-mode=light] .bg-red-500{background-color:#dc3545!important}}@media print{html .bg-red-600,html[data-netbox-color-mode=dark] .bg-red-600,html[data-netbox-color-mode=light] .bg-red-600{background-color:#b02a37!important}}@media print{html .bg-red-700,html[data-netbox-color-mode=dark] .bg-red-700,html[data-netbox-color-mode=light] .bg-red-700{background-color:#842029!important}}@media print{html .bg-red-800,html[data-netbox-color-mode=dark] .bg-red-800,html[data-netbox-color-mode=light] .bg-red-800{background-color:#58151c!important}}@media print{html .bg-red-900,html[data-netbox-color-mode=dark] .bg-red-900,html[data-netbox-color-mode=light] .bg-red-900{background-color:#2c0b0e!important}}@media print{html .bg-yellow-100,html[data-netbox-color-mode=dark] .bg-yellow-100,html[data-netbox-color-mode=light] .bg-yellow-100{background-color:#fff3cd!important}}@media print{html .bg-yellow-200,html[data-netbox-color-mode=dark] .bg-yellow-200,html[data-netbox-color-mode=light] .bg-yellow-200{background-color:#ffe69c!important}}@media print{html .bg-yellow-300,html[data-netbox-color-mode=dark] .bg-yellow-300,html[data-netbox-color-mode=light] .bg-yellow-300{background-color:#ffda6a!important}}@media print{html .bg-yellow-400,html[data-netbox-color-mode=dark] .bg-yellow-400,html[data-netbox-color-mode=light] .bg-yellow-400{background-color:#ffcd39!important}}@media print{html .bg-yellow-500,html[data-netbox-color-mode=dark] .bg-yellow-500,html[data-netbox-color-mode=light] .bg-yellow-500{background-color:#ffc107!important}}@media print{html .bg-yellow-600,html[data-netbox-color-mode=dark] .bg-yellow-600,html[data-netbox-color-mode=light] .bg-yellow-600{background-color:#cc9a06!important}}@media print{html .bg-yellow-700,html[data-netbox-color-mode=dark] .bg-yellow-700,html[data-netbox-color-mode=light] .bg-yellow-700{background-color:#997404!important}}@media print{html .bg-yellow-800,html[data-netbox-color-mode=dark] .bg-yellow-800,html[data-netbox-color-mode=light] .bg-yellow-800{background-color:#664d03!important}}@media print{html .bg-yellow-900,html[data-netbox-color-mode=dark] .bg-yellow-900,html[data-netbox-color-mode=light] .bg-yellow-900{background-color:#332701!important}}@media print{html .bg-green-100,html[data-netbox-color-mode=dark] .bg-green-100,html[data-netbox-color-mode=light] .bg-green-100{background-color:#d1e7dd!important}}@media print{html .bg-green-200,html[data-netbox-color-mode=dark] .bg-green-200,html[data-netbox-color-mode=light] .bg-green-200{background-color:#a3cfbb!important}}@media print{html .bg-green-300,html[data-netbox-color-mode=dark] .bg-green-300,html[data-netbox-color-mode=light] .bg-green-300{background-color:#75b798!important}}@media print{html .bg-green-400,html[data-netbox-color-mode=dark] .bg-green-400,html[data-netbox-color-mode=light] .bg-green-400{background-color:#479f76!important}}@media print{html .bg-green-500,html[data-netbox-color-mode=dark] .bg-green-500,html[data-netbox-color-mode=light] .bg-green-500{background-color:#198754!important}}@media print{html .bg-green-600,html[data-netbox-color-mode=dark] .bg-green-600,html[data-netbox-color-mode=light] .bg-green-600{background-color:#146c43!important}}@media print{html .bg-green-700,html[data-netbox-color-mode=dark] .bg-green-700,html[data-netbox-color-mode=light] .bg-green-700{background-color:#0f5132!important}}@media print{html .bg-green-800,html[data-netbox-color-mode=dark] .bg-green-800,html[data-netbox-color-mode=light] .bg-green-800{background-color:#0a3622!important}}@media print{html .bg-green-900,html[data-netbox-color-mode=dark] .bg-green-900,html[data-netbox-color-mode=light] .bg-green-900{background-color:#051b11!important}}@media print{html .bg-blue-100,html[data-netbox-color-mode=dark] .bg-blue-100,html[data-netbox-color-mode=light] .bg-blue-100{background-color:#cfe2ff!important}}@media print{html .bg-blue-200,html[data-netbox-color-mode=dark] .bg-blue-200,html[data-netbox-color-mode=light] .bg-blue-200{background-color:#9ec5fe!important}}@media print{html .bg-blue-300,html[data-netbox-color-mode=dark] .bg-blue-300,html[data-netbox-color-mode=light] .bg-blue-300{background-color:#6ea8fe!important}}@media print{html .bg-blue-400,html[data-netbox-color-mode=dark] .bg-blue-400,html[data-netbox-color-mode=light] .bg-blue-400{background-color:#3d8bfd!important}}@media print{html .bg-blue-500,html[data-netbox-color-mode=dark] .bg-blue-500,html[data-netbox-color-mode=light] .bg-blue-500{background-color:#0d6efd!important}}@media print{html .bg-blue-600,html[data-netbox-color-mode=dark] .bg-blue-600,html[data-netbox-color-mode=light] .bg-blue-600{background-color:#0a58ca!important}}@media print{html .bg-blue-700,html[data-netbox-color-mode=dark] .bg-blue-700,html[data-netbox-color-mode=light] .bg-blue-700{background-color:#084298!important}}@media print{html .bg-blue-800,html[data-netbox-color-mode=dark] .bg-blue-800,html[data-netbox-color-mode=light] .bg-blue-800{background-color:#052c65!important}}@media print{html .bg-blue-900,html[data-netbox-color-mode=dark] .bg-blue-900,html[data-netbox-color-mode=light] .bg-blue-900{background-color:#031633!important}}@media print{html .bg-cyan-100,html[data-netbox-color-mode=dark] .bg-cyan-100,html[data-netbox-color-mode=light] .bg-cyan-100{background-color:#cff4fc!important}}@media print{html .bg-cyan-200,html[data-netbox-color-mode=dark] .bg-cyan-200,html[data-netbox-color-mode=light] .bg-cyan-200{background-color:#9eeaf9!important}}@media print{html .bg-cyan-300,html[data-netbox-color-mode=dark] .bg-cyan-300,html[data-netbox-color-mode=light] .bg-cyan-300{background-color:#6edff6!important}}@media print{html .bg-cyan-400,html[data-netbox-color-mode=dark] .bg-cyan-400,html[data-netbox-color-mode=light] .bg-cyan-400{background-color:#3dd5f3!important}}@media print{html .bg-cyan-500,html[data-netbox-color-mode=dark] .bg-cyan-500,html[data-netbox-color-mode=light] .bg-cyan-500{background-color:#0dcaf0!important}}@media print{html .bg-cyan-600,html[data-netbox-color-mode=dark] .bg-cyan-600,html[data-netbox-color-mode=light] .bg-cyan-600{background-color:#0aa2c0!important}}@media print{html .bg-cyan-700,html[data-netbox-color-mode=dark] .bg-cyan-700,html[data-netbox-color-mode=light] .bg-cyan-700{background-color:#087990!important}}@media print{html .bg-cyan-800,html[data-netbox-color-mode=dark] .bg-cyan-800,html[data-netbox-color-mode=light] .bg-cyan-800{background-color:#055160!important}}@media print{html .bg-cyan-900,html[data-netbox-color-mode=dark] .bg-cyan-900,html[data-netbox-color-mode=light] .bg-cyan-900{background-color:#032830!important}}@media print{html .bg-indigo-100,html[data-netbox-color-mode=dark] .bg-indigo-100,html[data-netbox-color-mode=light] .bg-indigo-100{background-color:#e0cffc!important}}@media print{html .bg-indigo-200,html[data-netbox-color-mode=dark] .bg-indigo-200,html[data-netbox-color-mode=light] .bg-indigo-200{background-color:#c29ffa!important}}@media print{html .bg-indigo-300,html[data-netbox-color-mode=dark] .bg-indigo-300,html[data-netbox-color-mode=light] .bg-indigo-300{background-color:#a370f7!important}}@media print{html .bg-indigo-400,html[data-netbox-color-mode=dark] .bg-indigo-400,html[data-netbox-color-mode=light] .bg-indigo-400{background-color:#8540f5!important}}@media print{html .bg-indigo-500,html[data-netbox-color-mode=dark] .bg-indigo-500,html[data-netbox-color-mode=light] .bg-indigo-500{background-color:#6610f2!important}}@media print{html .bg-indigo-600,html[data-netbox-color-mode=dark] .bg-indigo-600,html[data-netbox-color-mode=light] .bg-indigo-600{background-color:#520dc2!important}}@media print{html .bg-indigo-700,html[data-netbox-color-mode=dark] .bg-indigo-700,html[data-netbox-color-mode=light] .bg-indigo-700{background-color:#3d0a91!important}}@media print{html .bg-indigo-800,html[data-netbox-color-mode=dark] .bg-indigo-800,html[data-netbox-color-mode=light] .bg-indigo-800{background-color:#290661!important}}@media print{html .bg-indigo-900,html[data-netbox-color-mode=dark] .bg-indigo-900,html[data-netbox-color-mode=light] .bg-indigo-900{background-color:#140330!important}}@media print{html .bg-purple-100,html[data-netbox-color-mode=dark] .bg-purple-100,html[data-netbox-color-mode=light] .bg-purple-100{background-color:#e2d9f3!important}}@media print{html .bg-purple-200,html[data-netbox-color-mode=dark] .bg-purple-200,html[data-netbox-color-mode=light] .bg-purple-200{background-color:#c5b3e6!important}}@media print{html .bg-purple-300,html[data-netbox-color-mode=dark] .bg-purple-300,html[data-netbox-color-mode=light] .bg-purple-300{background-color:#a98eda!important}}@media print{html .bg-purple-400,html[data-netbox-color-mode=dark] .bg-purple-400,html[data-netbox-color-mode=light] .bg-purple-400{background-color:#8c68cd!important}}@media print{html .bg-purple-500,html[data-netbox-color-mode=dark] .bg-purple-500,html[data-netbox-color-mode=light] .bg-purple-500{background-color:#6f42c1!important}}@media print{html .bg-purple-600,html[data-netbox-color-mode=dark] .bg-purple-600,html[data-netbox-color-mode=light] .bg-purple-600{background-color:#59359a!important}}@media print{html .bg-purple-700,html[data-netbox-color-mode=dark] .bg-purple-700,html[data-netbox-color-mode=light] .bg-purple-700{background-color:#432874!important}}@media print{html .bg-purple-800,html[data-netbox-color-mode=dark] .bg-purple-800,html[data-netbox-color-mode=light] .bg-purple-800{background-color:#2c1a4d!important}}@media print{html .bg-purple-900,html[data-netbox-color-mode=dark] .bg-purple-900,html[data-netbox-color-mode=light] .bg-purple-900{background-color:#160d27!important}}@media print{html .bg-pink-100,html[data-netbox-color-mode=dark] .bg-pink-100,html[data-netbox-color-mode=light] .bg-pink-100{background-color:#f7d6e6!important}}@media print{html .bg-pink-200,html[data-netbox-color-mode=dark] .bg-pink-200,html[data-netbox-color-mode=light] .bg-pink-200{background-color:#efadce!important}}@media print{html .bg-pink-300,html[data-netbox-color-mode=dark] .bg-pink-300,html[data-netbox-color-mode=light] .bg-pink-300{background-color:#e685b5!important}}@media print{html .bg-pink-400,html[data-netbox-color-mode=dark] .bg-pink-400,html[data-netbox-color-mode=light] .bg-pink-400{background-color:#de5c9d!important}}@media print{html .bg-pink-500,html[data-netbox-color-mode=dark] .bg-pink-500,html[data-netbox-color-mode=light] .bg-pink-500{background-color:#d63384!important}}@media print{html .bg-pink-600,html[data-netbox-color-mode=dark] .bg-pink-600,html[data-netbox-color-mode=light] .bg-pink-600{background-color:#ab296a!important}}@media print{html .bg-pink-700,html[data-netbox-color-mode=dark] .bg-pink-700,html[data-netbox-color-mode=light] .bg-pink-700{background-color:#801f4f!important}}@media print{html .bg-pink-800,html[data-netbox-color-mode=dark] .bg-pink-800,html[data-netbox-color-mode=light] .bg-pink-800{background-color:#561435!important}}@media print{html .bg-pink-900,html[data-netbox-color-mode=dark] .bg-pink-900,html[data-netbox-color-mode=light] .bg-pink-900{background-color:#2b0a1a!important}}@media print{html .bg-body,html[data-netbox-color-mode=dark] .bg-body,html[data-netbox-color-mode=light] .bg-body{background-color:#fff!important}}@media print{html .bg-white,html[data-netbox-color-mode=dark] .bg-white,html[data-netbox-color-mode=light] .bg-white{background-color:#fff!important}}@media print{html .bg-transparent,html[data-netbox-color-mode=dark] .bg-transparent,html[data-netbox-color-mode=light] .bg-transparent{background-color:transparent!important}}@media print{html .bg-gradient,html[data-netbox-color-mode=dark] .bg-gradient,html[data-netbox-color-mode=light] .bg-gradient{background-image:var(--bs-gradient)!important}}@media print{html .user-select-all,html[data-netbox-color-mode=dark] .user-select-all,html[data-netbox-color-mode=light] .user-select-all{user-select:all!important}}@media print{html .user-select-auto,html[data-netbox-color-mode=dark] .user-select-auto,html[data-netbox-color-mode=light] .user-select-auto{user-select:auto!important}}@media print{html .user-select-none,html[data-netbox-color-mode=dark] .user-select-none,html[data-netbox-color-mode=light] .user-select-none{user-select:none!important}}@media print{html .pe-none,html[data-netbox-color-mode=dark] .pe-none,html[data-netbox-color-mode=light] .pe-none{pointer-events:none!important}}@media print{html .pe-auto,html[data-netbox-color-mode=dark] .pe-auto,html[data-netbox-color-mode=light] .pe-auto{pointer-events:auto!important}}@media print{html .rounded,html[data-netbox-color-mode=dark] .rounded,html[data-netbox-color-mode=light] .rounded{border-radius:.375rem!important}}@media print{html .rounded-0,html[data-netbox-color-mode=dark] .rounded-0,html[data-netbox-color-mode=light] .rounded-0{border-radius:0!important}}@media print{html .rounded-1,html[data-netbox-color-mode=dark] .rounded-1,html[data-netbox-color-mode=light] .rounded-1{border-radius:.375rem!important}}@media print{html .rounded-2,html[data-netbox-color-mode=dark] .rounded-2,html[data-netbox-color-mode=light] .rounded-2{border-radius:.375rem!important}}@media print{html .rounded-3,html[data-netbox-color-mode=dark] .rounded-3,html[data-netbox-color-mode=light] .rounded-3{border-radius:.75rem!important}}@media print{html .rounded-circle,html[data-netbox-color-mode=dark] .rounded-circle,html[data-netbox-color-mode=light] .rounded-circle{border-radius:50%!important}}@media print{html .rounded-pill,html[data-netbox-color-mode=dark] .rounded-pill,html[data-netbox-color-mode=light] .rounded-pill{border-radius:50rem!important}}@media print{html .rounded-top,html[data-netbox-color-mode=dark] .rounded-top,html[data-netbox-color-mode=light] .rounded-top{border-top-left-radius:.375rem!important;border-top-right-radius:.375rem!important}}@media print{html .rounded-end,html[data-netbox-color-mode=dark] .rounded-end,html[data-netbox-color-mode=light] .rounded-end{border-top-right-radius:.375rem!important;border-bottom-right-radius:.375rem!important}}@media print{html .rounded-bottom,html[data-netbox-color-mode=dark] .rounded-bottom,html[data-netbox-color-mode=light] .rounded-bottom{border-bottom-right-radius:.375rem!important;border-bottom-left-radius:.375rem!important}}@media print{html .rounded-start,html[data-netbox-color-mode=dark] .rounded-start,html[data-netbox-color-mode=light] .rounded-start{border-bottom-left-radius:.375rem!important;border-top-left-radius:.375rem!important}}@media print{html .visible,html[data-netbox-color-mode=dark] .visible,html[data-netbox-color-mode=light] .visible{visibility:visible!important}}@media print{html .invisible,html[data-netbox-color-mode=dark] .invisible,html[data-netbox-color-mode=light] .invisible{visibility:hidden!important}}@media print and (min-width: 576px){html .float-sm-start,html[data-netbox-color-mode=dark] .float-sm-start,html[data-netbox-color-mode=light] .float-sm-start{float:left!important}html .float-sm-end,html[data-netbox-color-mode=dark] .float-sm-end,html[data-netbox-color-mode=light] .float-sm-end{float:right!important}html .float-sm-none,html[data-netbox-color-mode=dark] .float-sm-none,html[data-netbox-color-mode=light] .float-sm-none{float:none!important}html .d-sm-inline,html[data-netbox-color-mode=dark] .d-sm-inline,html[data-netbox-color-mode=light] .d-sm-inline{display:inline!important}html .d-sm-inline-block,html[data-netbox-color-mode=dark] .d-sm-inline-block,html[data-netbox-color-mode=light] .d-sm-inline-block{display:inline-block!important}html .d-sm-block,html[data-netbox-color-mode=dark] .d-sm-block,html[data-netbox-color-mode=light] .d-sm-block{display:block!important}html .d-sm-grid,html[data-netbox-color-mode=dark] .d-sm-grid,html[data-netbox-color-mode=light] .d-sm-grid{display:grid!important}html .d-sm-table,html[data-netbox-color-mode=dark] .d-sm-table,html[data-netbox-color-mode=light] .d-sm-table{display:table!important}html .d-sm-table-row,html[data-netbox-color-mode=dark] .d-sm-table-row,html[data-netbox-color-mode=light] .d-sm-table-row{display:table-row!important}html .d-sm-table-cell,html[data-netbox-color-mode=dark] .d-sm-table-cell,html[data-netbox-color-mode=light] .d-sm-table-cell{display:table-cell!important}html .d-sm-flex,html[data-netbox-color-mode=dark] .d-sm-flex,html[data-netbox-color-mode=light] .d-sm-flex{display:flex!important}html .d-sm-inline-flex,html[data-netbox-color-mode=dark] .d-sm-inline-flex,html[data-netbox-color-mode=light] .d-sm-inline-flex{display:inline-flex!important}html .d-sm-none,html[data-netbox-color-mode=dark] .d-sm-none,html[data-netbox-color-mode=light] .d-sm-none{display:none!important}html .flex-sm-fill,html[data-netbox-color-mode=dark] .flex-sm-fill,html[data-netbox-color-mode=light] .flex-sm-fill{flex:1 1 auto!important}html .flex-sm-row,html[data-netbox-color-mode=dark] .flex-sm-row,html[data-netbox-color-mode=light] .flex-sm-row{flex-direction:row!important}html .flex-sm-column,html[data-netbox-color-mode=dark] .flex-sm-column,html[data-netbox-color-mode=light] .flex-sm-column{flex-direction:column!important}html .flex-sm-row-reverse,html[data-netbox-color-mode=dark] .flex-sm-row-reverse,html[data-netbox-color-mode=light] .flex-sm-row-reverse{flex-direction:row-reverse!important}html .flex-sm-column-reverse,html[data-netbox-color-mode=dark] .flex-sm-column-reverse,html[data-netbox-color-mode=light] .flex-sm-column-reverse{flex-direction:column-reverse!important}html .flex-sm-grow-0,html[data-netbox-color-mode=dark] .flex-sm-grow-0,html[data-netbox-color-mode=light] .flex-sm-grow-0{flex-grow:0!important}html .flex-sm-grow-1,html[data-netbox-color-mode=dark] .flex-sm-grow-1,html[data-netbox-color-mode=light] .flex-sm-grow-1{flex-grow:1!important}html .flex-sm-shrink-0,html[data-netbox-color-mode=dark] .flex-sm-shrink-0,html[data-netbox-color-mode=light] .flex-sm-shrink-0{flex-shrink:0!important}html .flex-sm-shrink-1,html[data-netbox-color-mode=dark] .flex-sm-shrink-1,html[data-netbox-color-mode=light] .flex-sm-shrink-1{flex-shrink:1!important}html .flex-sm-wrap,html[data-netbox-color-mode=dark] .flex-sm-wrap,html[data-netbox-color-mode=light] .flex-sm-wrap{flex-wrap:wrap!important}html .flex-sm-nowrap,html[data-netbox-color-mode=dark] .flex-sm-nowrap,html[data-netbox-color-mode=light] .flex-sm-nowrap{flex-wrap:nowrap!important}html .flex-sm-wrap-reverse,html[data-netbox-color-mode=dark] .flex-sm-wrap-reverse,html[data-netbox-color-mode=light] .flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}html .gap-sm-0,html[data-netbox-color-mode=dark] .gap-sm-0,html[data-netbox-color-mode=light] .gap-sm-0{gap:0!important}html .gap-sm-1,html[data-netbox-color-mode=dark] .gap-sm-1,html[data-netbox-color-mode=light] .gap-sm-1{gap:.25rem!important}html .gap-sm-2,html[data-netbox-color-mode=dark] .gap-sm-2,html[data-netbox-color-mode=light] .gap-sm-2{gap:.5rem!important}html .gap-sm-3,html[data-netbox-color-mode=dark] .gap-sm-3,html[data-netbox-color-mode=light] .gap-sm-3{gap:1rem!important}html .gap-sm-4,html[data-netbox-color-mode=dark] .gap-sm-4,html[data-netbox-color-mode=light] .gap-sm-4{gap:1.5rem!important}html .gap-sm-5,html[data-netbox-color-mode=dark] .gap-sm-5,html[data-netbox-color-mode=light] .gap-sm-5{gap:3rem!important}html .justify-content-sm-start,html[data-netbox-color-mode=dark] .justify-content-sm-start,html[data-netbox-color-mode=light] .justify-content-sm-start{justify-content:flex-start!important}html .justify-content-sm-end,html[data-netbox-color-mode=dark] .justify-content-sm-end,html[data-netbox-color-mode=light] .justify-content-sm-end{justify-content:flex-end!important}html .justify-content-sm-center,html[data-netbox-color-mode=dark] .justify-content-sm-center,html[data-netbox-color-mode=light] .justify-content-sm-center{justify-content:center!important}html .justify-content-sm-between,html[data-netbox-color-mode=dark] .justify-content-sm-between,html[data-netbox-color-mode=light] .justify-content-sm-between{justify-content:space-between!important}html .justify-content-sm-around,html[data-netbox-color-mode=dark] .justify-content-sm-around,html[data-netbox-color-mode=light] .justify-content-sm-around{justify-content:space-around!important}html .justify-content-sm-evenly,html[data-netbox-color-mode=dark] .justify-content-sm-evenly,html[data-netbox-color-mode=light] .justify-content-sm-evenly{justify-content:space-evenly!important}html .align-items-sm-start,html[data-netbox-color-mode=dark] .align-items-sm-start,html[data-netbox-color-mode=light] .align-items-sm-start{align-items:flex-start!important}html .align-items-sm-end,html[data-netbox-color-mode=dark] .align-items-sm-end,html[data-netbox-color-mode=light] .align-items-sm-end{align-items:flex-end!important}html .align-items-sm-center,html[data-netbox-color-mode=dark] .align-items-sm-center,html[data-netbox-color-mode=light] .align-items-sm-center{align-items:center!important}html .align-items-sm-baseline,html[data-netbox-color-mode=dark] .align-items-sm-baseline,html[data-netbox-color-mode=light] .align-items-sm-baseline{align-items:baseline!important}html .align-items-sm-stretch,html[data-netbox-color-mode=dark] .align-items-sm-stretch,html[data-netbox-color-mode=light] .align-items-sm-stretch{align-items:stretch!important}html .align-content-sm-start,html[data-netbox-color-mode=dark] .align-content-sm-start,html[data-netbox-color-mode=light] .align-content-sm-start{align-content:flex-start!important}html .align-content-sm-end,html[data-netbox-color-mode=dark] .align-content-sm-end,html[data-netbox-color-mode=light] .align-content-sm-end{align-content:flex-end!important}html .align-content-sm-center,html[data-netbox-color-mode=dark] .align-content-sm-center,html[data-netbox-color-mode=light] .align-content-sm-center{align-content:center!important}html .align-content-sm-between,html[data-netbox-color-mode=dark] .align-content-sm-between,html[data-netbox-color-mode=light] .align-content-sm-between{align-content:space-between!important}html .align-content-sm-around,html[data-netbox-color-mode=dark] .align-content-sm-around,html[data-netbox-color-mode=light] .align-content-sm-around{align-content:space-around!important}html .align-content-sm-stretch,html[data-netbox-color-mode=dark] .align-content-sm-stretch,html[data-netbox-color-mode=light] .align-content-sm-stretch{align-content:stretch!important}html .align-self-sm-auto,html[data-netbox-color-mode=dark] .align-self-sm-auto,html[data-netbox-color-mode=light] .align-self-sm-auto{align-self:auto!important}html .align-self-sm-start,html[data-netbox-color-mode=dark] .align-self-sm-start,html[data-netbox-color-mode=light] .align-self-sm-start{align-self:flex-start!important}html .align-self-sm-end,html[data-netbox-color-mode=dark] .align-self-sm-end,html[data-netbox-color-mode=light] .align-self-sm-end{align-self:flex-end!important}html .align-self-sm-center,html[data-netbox-color-mode=dark] .align-self-sm-center,html[data-netbox-color-mode=light] .align-self-sm-center{align-self:center!important}html .align-self-sm-baseline,html[data-netbox-color-mode=dark] .align-self-sm-baseline,html[data-netbox-color-mode=light] .align-self-sm-baseline{align-self:baseline!important}html .align-self-sm-stretch,html[data-netbox-color-mode=dark] .align-self-sm-stretch,html[data-netbox-color-mode=light] .align-self-sm-stretch{align-self:stretch!important}html .order-sm-first,html[data-netbox-color-mode=dark] .order-sm-first,html[data-netbox-color-mode=light] .order-sm-first{order:-1!important}html .order-sm-0,html[data-netbox-color-mode=dark] .order-sm-0,html[data-netbox-color-mode=light] .order-sm-0{order:0!important}html .order-sm-1,html[data-netbox-color-mode=dark] .order-sm-1,html[data-netbox-color-mode=light] .order-sm-1{order:1!important}html .order-sm-2,html[data-netbox-color-mode=dark] .order-sm-2,html[data-netbox-color-mode=light] .order-sm-2{order:2!important}html .order-sm-3,html[data-netbox-color-mode=dark] .order-sm-3,html[data-netbox-color-mode=light] .order-sm-3{order:3!important}html .order-sm-4,html[data-netbox-color-mode=dark] .order-sm-4,html[data-netbox-color-mode=light] .order-sm-4{order:4!important}html .order-sm-5,html[data-netbox-color-mode=dark] .order-sm-5,html[data-netbox-color-mode=light] .order-sm-5{order:5!important}html .order-sm-last,html[data-netbox-color-mode=dark] .order-sm-last,html[data-netbox-color-mode=light] .order-sm-last{order:6!important}html .m-sm-0,html[data-netbox-color-mode=dark] .m-sm-0,html[data-netbox-color-mode=light] .m-sm-0{margin:0!important}html .m-sm-1,html[data-netbox-color-mode=dark] .m-sm-1,html[data-netbox-color-mode=light] .m-sm-1{margin:.25rem!important}html .m-sm-2,html[data-netbox-color-mode=dark] .m-sm-2,html[data-netbox-color-mode=light] .m-sm-2{margin:.5rem!important}html .m-sm-3,html[data-netbox-color-mode=dark] .m-sm-3,html[data-netbox-color-mode=light] .m-sm-3{margin:1rem!important}html .m-sm-4,html[data-netbox-color-mode=dark] .m-sm-4,html[data-netbox-color-mode=light] .m-sm-4{margin:1.5rem!important}html .m-sm-5,html[data-netbox-color-mode=dark] .m-sm-5,html[data-netbox-color-mode=light] .m-sm-5{margin:3rem!important}html .m-sm-auto,html[data-netbox-color-mode=dark] .m-sm-auto,html[data-netbox-color-mode=light] .m-sm-auto{margin:auto!important}html .mx-sm-0,html[data-netbox-color-mode=dark] .mx-sm-0,html[data-netbox-color-mode=light] .mx-sm-0{margin-right:0!important;margin-left:0!important}html .mx-sm-1,html[data-netbox-color-mode=dark] .mx-sm-1,html[data-netbox-color-mode=light] .mx-sm-1{margin-right:.25rem!important;margin-left:.25rem!important}html .mx-sm-2,html[data-netbox-color-mode=dark] .mx-sm-2,html[data-netbox-color-mode=light] .mx-sm-2{margin-right:.5rem!important;margin-left:.5rem!important}html .mx-sm-3,html[data-netbox-color-mode=dark] .mx-sm-3,html[data-netbox-color-mode=light] .mx-sm-3{margin-right:1rem!important;margin-left:1rem!important}html .mx-sm-4,html[data-netbox-color-mode=dark] .mx-sm-4,html[data-netbox-color-mode=light] .mx-sm-4{margin-right:1.5rem!important;margin-left:1.5rem!important}html .mx-sm-5,html[data-netbox-color-mode=dark] .mx-sm-5,html[data-netbox-color-mode=light] .mx-sm-5{margin-right:3rem!important;margin-left:3rem!important}html .mx-sm-auto,html[data-netbox-color-mode=dark] .mx-sm-auto,html[data-netbox-color-mode=light] .mx-sm-auto{margin-right:auto!important;margin-left:auto!important}html .my-sm-0,html[data-netbox-color-mode=dark] .my-sm-0,html[data-netbox-color-mode=light] .my-sm-0{margin-top:0!important;margin-bottom:0!important}html .my-sm-1,html[data-netbox-color-mode=dark] .my-sm-1,html[data-netbox-color-mode=light] .my-sm-1{margin-top:.25rem!important;margin-bottom:.25rem!important}html .my-sm-2,html[data-netbox-color-mode=dark] .my-sm-2,html[data-netbox-color-mode=light] .my-sm-2{margin-top:.5rem!important;margin-bottom:.5rem!important}html .my-sm-3,html[data-netbox-color-mode=dark] .my-sm-3,html[data-netbox-color-mode=light] .my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important}html .my-sm-4,html[data-netbox-color-mode=dark] .my-sm-4,html[data-netbox-color-mode=light] .my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}html .my-sm-5,html[data-netbox-color-mode=dark] .my-sm-5,html[data-netbox-color-mode=light] .my-sm-5{margin-top:3rem!important;margin-bottom:3rem!important}html .my-sm-auto,html[data-netbox-color-mode=dark] .my-sm-auto,html[data-netbox-color-mode=light] .my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}html .mt-sm-0,html[data-netbox-color-mode=dark] .mt-sm-0,html[data-netbox-color-mode=light] .mt-sm-0{margin-top:0!important}html .mt-sm-1,html[data-netbox-color-mode=dark] .mt-sm-1,html[data-netbox-color-mode=light] .mt-sm-1{margin-top:.25rem!important}html .mt-sm-2,html[data-netbox-color-mode=dark] .mt-sm-2,html[data-netbox-color-mode=light] .mt-sm-2{margin-top:.5rem!important}html .mt-sm-3,html[data-netbox-color-mode=dark] .mt-sm-3,html[data-netbox-color-mode=light] .mt-sm-3{margin-top:1rem!important}html .mt-sm-4,html[data-netbox-color-mode=dark] .mt-sm-4,html[data-netbox-color-mode=light] .mt-sm-4{margin-top:1.5rem!important}html .mt-sm-5,html[data-netbox-color-mode=dark] .mt-sm-5,html[data-netbox-color-mode=light] .mt-sm-5{margin-top:3rem!important}html .mt-sm-auto,html[data-netbox-color-mode=dark] .mt-sm-auto,html[data-netbox-color-mode=light] .mt-sm-auto{margin-top:auto!important}html .me-sm-0,html[data-netbox-color-mode=dark] .me-sm-0,html[data-netbox-color-mode=light] .me-sm-0{margin-right:0!important}html .me-sm-1,html[data-netbox-color-mode=dark] .me-sm-1,html[data-netbox-color-mode=light] .me-sm-1{margin-right:.25rem!important}html .me-sm-2,html[data-netbox-color-mode=dark] .me-sm-2,html[data-netbox-color-mode=light] .me-sm-2{margin-right:.5rem!important}html .me-sm-3,html[data-netbox-color-mode=dark] .me-sm-3,html[data-netbox-color-mode=light] .me-sm-3{margin-right:1rem!important}html .me-sm-4,html[data-netbox-color-mode=dark] .me-sm-4,html[data-netbox-color-mode=light] .me-sm-4{margin-right:1.5rem!important}html .me-sm-5,html[data-netbox-color-mode=dark] .me-sm-5,html[data-netbox-color-mode=light] .me-sm-5{margin-right:3rem!important}html .me-sm-auto,html[data-netbox-color-mode=dark] .me-sm-auto,html[data-netbox-color-mode=light] .me-sm-auto{margin-right:auto!important}html .mb-sm-0,html[data-netbox-color-mode=dark] .mb-sm-0,html[data-netbox-color-mode=light] .mb-sm-0{margin-bottom:0!important}html .mb-sm-1,html[data-netbox-color-mode=dark] .mb-sm-1,html[data-netbox-color-mode=light] .mb-sm-1{margin-bottom:.25rem!important}html .mb-sm-2,html[data-netbox-color-mode=dark] .mb-sm-2,html[data-netbox-color-mode=light] .mb-sm-2{margin-bottom:.5rem!important}html .mb-sm-3,html[data-netbox-color-mode=dark] .mb-sm-3,html[data-netbox-color-mode=light] .mb-sm-3{margin-bottom:1rem!important}html .mb-sm-4,html[data-netbox-color-mode=dark] .mb-sm-4,html[data-netbox-color-mode=light] .mb-sm-4{margin-bottom:1.5rem!important}html .mb-sm-5,html[data-netbox-color-mode=dark] .mb-sm-5,html[data-netbox-color-mode=light] .mb-sm-5{margin-bottom:3rem!important}html .mb-sm-auto,html[data-netbox-color-mode=dark] .mb-sm-auto,html[data-netbox-color-mode=light] .mb-sm-auto{margin-bottom:auto!important}html .ms-sm-0,html[data-netbox-color-mode=dark] .ms-sm-0,html[data-netbox-color-mode=light] .ms-sm-0{margin-left:0!important}html .ms-sm-1,html[data-netbox-color-mode=dark] .ms-sm-1,html[data-netbox-color-mode=light] .ms-sm-1{margin-left:.25rem!important}html .ms-sm-2,html[data-netbox-color-mode=dark] .ms-sm-2,html[data-netbox-color-mode=light] .ms-sm-2{margin-left:.5rem!important}html .ms-sm-3,html[data-netbox-color-mode=dark] .ms-sm-3,html[data-netbox-color-mode=light] .ms-sm-3{margin-left:1rem!important}html .ms-sm-4,html[data-netbox-color-mode=dark] .ms-sm-4,html[data-netbox-color-mode=light] .ms-sm-4{margin-left:1.5rem!important}html .ms-sm-5,html[data-netbox-color-mode=dark] .ms-sm-5,html[data-netbox-color-mode=light] .ms-sm-5{margin-left:3rem!important}html .ms-sm-auto,html[data-netbox-color-mode=dark] .ms-sm-auto,html[data-netbox-color-mode=light] .ms-sm-auto{margin-left:auto!important}html .p-sm-0,html[data-netbox-color-mode=dark] .p-sm-0,html[data-netbox-color-mode=light] .p-sm-0{padding:0!important}html .p-sm-1,html[data-netbox-color-mode=dark] .p-sm-1,html[data-netbox-color-mode=light] .p-sm-1{padding:.25rem!important}html .p-sm-2,html[data-netbox-color-mode=dark] .p-sm-2,html[data-netbox-color-mode=light] .p-sm-2{padding:.5rem!important}html .p-sm-3,html[data-netbox-color-mode=dark] .p-sm-3,html[data-netbox-color-mode=light] .p-sm-3{padding:1rem!important}html .p-sm-4,html[data-netbox-color-mode=dark] .p-sm-4,html[data-netbox-color-mode=light] .p-sm-4{padding:1.5rem!important}html .p-sm-5,html[data-netbox-color-mode=dark] .p-sm-5,html[data-netbox-color-mode=light] .p-sm-5{padding:3rem!important}html .px-sm-0,html[data-netbox-color-mode=dark] .px-sm-0,html[data-netbox-color-mode=light] .px-sm-0{padding-right:0!important;padding-left:0!important}html .px-sm-1,html[data-netbox-color-mode=dark] .px-sm-1,html[data-netbox-color-mode=light] .px-sm-1{padding-right:.25rem!important;padding-left:.25rem!important}html .px-sm-2,html[data-netbox-color-mode=dark] .px-sm-2,html[data-netbox-color-mode=light] .px-sm-2{padding-right:.5rem!important;padding-left:.5rem!important}html .px-sm-3,html[data-netbox-color-mode=dark] .px-sm-3,html[data-netbox-color-mode=light] .px-sm-3{padding-right:1rem!important;padding-left:1rem!important}html .px-sm-4,html[data-netbox-color-mode=dark] .px-sm-4,html[data-netbox-color-mode=light] .px-sm-4{padding-right:1.5rem!important;padding-left:1.5rem!important}html .px-sm-5,html[data-netbox-color-mode=dark] .px-sm-5,html[data-netbox-color-mode=light] .px-sm-5{padding-right:3rem!important;padding-left:3rem!important}html .py-sm-0,html[data-netbox-color-mode=dark] .py-sm-0,html[data-netbox-color-mode=light] .py-sm-0{padding-top:0!important;padding-bottom:0!important}html .py-sm-1,html[data-netbox-color-mode=dark] .py-sm-1,html[data-netbox-color-mode=light] .py-sm-1{padding-top:.25rem!important;padding-bottom:.25rem!important}html .py-sm-2,html[data-netbox-color-mode=dark] .py-sm-2,html[data-netbox-color-mode=light] .py-sm-2{padding-top:.5rem!important;padding-bottom:.5rem!important}html .py-sm-3,html[data-netbox-color-mode=dark] .py-sm-3,html[data-netbox-color-mode=light] .py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important}html .py-sm-4,html[data-netbox-color-mode=dark] .py-sm-4,html[data-netbox-color-mode=light] .py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}html .py-sm-5,html[data-netbox-color-mode=dark] .py-sm-5,html[data-netbox-color-mode=light] .py-sm-5{padding-top:3rem!important;padding-bottom:3rem!important}html .pt-sm-0,html[data-netbox-color-mode=dark] .pt-sm-0,html[data-netbox-color-mode=light] .pt-sm-0{padding-top:0!important}html .pt-sm-1,html[data-netbox-color-mode=dark] .pt-sm-1,html[data-netbox-color-mode=light] .pt-sm-1{padding-top:.25rem!important}html .pt-sm-2,html[data-netbox-color-mode=dark] .pt-sm-2,html[data-netbox-color-mode=light] .pt-sm-2{padding-top:.5rem!important}html .pt-sm-3,html[data-netbox-color-mode=dark] .pt-sm-3,html[data-netbox-color-mode=light] .pt-sm-3{padding-top:1rem!important}html .pt-sm-4,html[data-netbox-color-mode=dark] .pt-sm-4,html[data-netbox-color-mode=light] .pt-sm-4{padding-top:1.5rem!important}html .pt-sm-5,html[data-netbox-color-mode=dark] .pt-sm-5,html[data-netbox-color-mode=light] .pt-sm-5{padding-top:3rem!important}html .pe-sm-0,html[data-netbox-color-mode=dark] .pe-sm-0,html[data-netbox-color-mode=light] .pe-sm-0{padding-right:0!important}html .pe-sm-1,html[data-netbox-color-mode=dark] .pe-sm-1,html[data-netbox-color-mode=light] .pe-sm-1{padding-right:.25rem!important}html .pe-sm-2,html[data-netbox-color-mode=dark] .pe-sm-2,html[data-netbox-color-mode=light] .pe-sm-2{padding-right:.5rem!important}html .pe-sm-3,html[data-netbox-color-mode=dark] .pe-sm-3,html[data-netbox-color-mode=light] .pe-sm-3{padding-right:1rem!important}html .pe-sm-4,html[data-netbox-color-mode=dark] .pe-sm-4,html[data-netbox-color-mode=light] .pe-sm-4{padding-right:1.5rem!important}html .pe-sm-5,html[data-netbox-color-mode=dark] .pe-sm-5,html[data-netbox-color-mode=light] .pe-sm-5{padding-right:3rem!important}html .pb-sm-0,html[data-netbox-color-mode=dark] .pb-sm-0,html[data-netbox-color-mode=light] .pb-sm-0{padding-bottom:0!important}html .pb-sm-1,html[data-netbox-color-mode=dark] .pb-sm-1,html[data-netbox-color-mode=light] .pb-sm-1{padding-bottom:.25rem!important}html .pb-sm-2,html[data-netbox-color-mode=dark] .pb-sm-2,html[data-netbox-color-mode=light] .pb-sm-2{padding-bottom:.5rem!important}html .pb-sm-3,html[data-netbox-color-mode=dark] .pb-sm-3,html[data-netbox-color-mode=light] .pb-sm-3{padding-bottom:1rem!important}html .pb-sm-4,html[data-netbox-color-mode=dark] .pb-sm-4,html[data-netbox-color-mode=light] .pb-sm-4{padding-bottom:1.5rem!important}html .pb-sm-5,html[data-netbox-color-mode=dark] .pb-sm-5,html[data-netbox-color-mode=light] .pb-sm-5{padding-bottom:3rem!important}html .ps-sm-0,html[data-netbox-color-mode=dark] .ps-sm-0,html[data-netbox-color-mode=light] .ps-sm-0{padding-left:0!important}html .ps-sm-1,html[data-netbox-color-mode=dark] .ps-sm-1,html[data-netbox-color-mode=light] .ps-sm-1{padding-left:.25rem!important}html .ps-sm-2,html[data-netbox-color-mode=dark] .ps-sm-2,html[data-netbox-color-mode=light] .ps-sm-2{padding-left:.5rem!important}html .ps-sm-3,html[data-netbox-color-mode=dark] .ps-sm-3,html[data-netbox-color-mode=light] .ps-sm-3{padding-left:1rem!important}html .ps-sm-4,html[data-netbox-color-mode=dark] .ps-sm-4,html[data-netbox-color-mode=light] .ps-sm-4{padding-left:1.5rem!important}html .ps-sm-5,html[data-netbox-color-mode=dark] .ps-sm-5,html[data-netbox-color-mode=light] .ps-sm-5{padding-left:3rem!important}html .text-sm-start,html[data-netbox-color-mode=dark] .text-sm-start,html[data-netbox-color-mode=light] .text-sm-start{text-align:left!important}html .text-sm-end,html[data-netbox-color-mode=dark] .text-sm-end,html[data-netbox-color-mode=light] .text-sm-end{text-align:right!important}html .text-sm-center,html[data-netbox-color-mode=dark] .text-sm-center,html[data-netbox-color-mode=light] .text-sm-center{text-align:center!important}}@media print and (min-width: 768px){html .float-md-start,html[data-netbox-color-mode=dark] .float-md-start,html[data-netbox-color-mode=light] .float-md-start{float:left!important}html .float-md-end,html[data-netbox-color-mode=dark] .float-md-end,html[data-netbox-color-mode=light] .float-md-end{float:right!important}html .float-md-none,html[data-netbox-color-mode=dark] .float-md-none,html[data-netbox-color-mode=light] .float-md-none{float:none!important}html .d-md-inline,html[data-netbox-color-mode=dark] .d-md-inline,html[data-netbox-color-mode=light] .d-md-inline{display:inline!important}html .d-md-inline-block,html[data-netbox-color-mode=dark] .d-md-inline-block,html[data-netbox-color-mode=light] .d-md-inline-block{display:inline-block!important}html .d-md-block,html[data-netbox-color-mode=dark] .d-md-block,html[data-netbox-color-mode=light] .d-md-block{display:block!important}html .d-md-grid,html[data-netbox-color-mode=dark] .d-md-grid,html[data-netbox-color-mode=light] .d-md-grid{display:grid!important}html .d-md-table,html[data-netbox-color-mode=dark] .d-md-table,html[data-netbox-color-mode=light] .d-md-table{display:table!important}html .d-md-table-row,html[data-netbox-color-mode=dark] .d-md-table-row,html[data-netbox-color-mode=light] .d-md-table-row{display:table-row!important}html .d-md-table-cell,html[data-netbox-color-mode=dark] .d-md-table-cell,html[data-netbox-color-mode=light] .d-md-table-cell{display:table-cell!important}html .d-md-flex,html[data-netbox-color-mode=dark] .d-md-flex,html[data-netbox-color-mode=light] .d-md-flex{display:flex!important}html .d-md-inline-flex,html[data-netbox-color-mode=dark] .d-md-inline-flex,html[data-netbox-color-mode=light] .d-md-inline-flex{display:inline-flex!important}html .d-md-none,html[data-netbox-color-mode=dark] .d-md-none,html[data-netbox-color-mode=light] .d-md-none{display:none!important}html .flex-md-fill,html[data-netbox-color-mode=dark] .flex-md-fill,html[data-netbox-color-mode=light] .flex-md-fill{flex:1 1 auto!important}html .flex-md-row,html[data-netbox-color-mode=dark] .flex-md-row,html[data-netbox-color-mode=light] .flex-md-row{flex-direction:row!important}html .flex-md-column,html[data-netbox-color-mode=dark] .flex-md-column,html[data-netbox-color-mode=light] .flex-md-column{flex-direction:column!important}html .flex-md-row-reverse,html[data-netbox-color-mode=dark] .flex-md-row-reverse,html[data-netbox-color-mode=light] .flex-md-row-reverse{flex-direction:row-reverse!important}html .flex-md-column-reverse,html[data-netbox-color-mode=dark] .flex-md-column-reverse,html[data-netbox-color-mode=light] .flex-md-column-reverse{flex-direction:column-reverse!important}html .flex-md-grow-0,html[data-netbox-color-mode=dark] .flex-md-grow-0,html[data-netbox-color-mode=light] .flex-md-grow-0{flex-grow:0!important}html .flex-md-grow-1,html[data-netbox-color-mode=dark] .flex-md-grow-1,html[data-netbox-color-mode=light] .flex-md-grow-1{flex-grow:1!important}html .flex-md-shrink-0,html[data-netbox-color-mode=dark] .flex-md-shrink-0,html[data-netbox-color-mode=light] .flex-md-shrink-0{flex-shrink:0!important}html .flex-md-shrink-1,html[data-netbox-color-mode=dark] .flex-md-shrink-1,html[data-netbox-color-mode=light] .flex-md-shrink-1{flex-shrink:1!important}html .flex-md-wrap,html[data-netbox-color-mode=dark] .flex-md-wrap,html[data-netbox-color-mode=light] .flex-md-wrap{flex-wrap:wrap!important}html .flex-md-nowrap,html[data-netbox-color-mode=dark] .flex-md-nowrap,html[data-netbox-color-mode=light] .flex-md-nowrap{flex-wrap:nowrap!important}html .flex-md-wrap-reverse,html[data-netbox-color-mode=dark] .flex-md-wrap-reverse,html[data-netbox-color-mode=light] .flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}html .gap-md-0,html[data-netbox-color-mode=dark] .gap-md-0,html[data-netbox-color-mode=light] .gap-md-0{gap:0!important}html .gap-md-1,html[data-netbox-color-mode=dark] .gap-md-1,html[data-netbox-color-mode=light] .gap-md-1{gap:.25rem!important}html .gap-md-2,html[data-netbox-color-mode=dark] .gap-md-2,html[data-netbox-color-mode=light] .gap-md-2{gap:.5rem!important}html .gap-md-3,html[data-netbox-color-mode=dark] .gap-md-3,html[data-netbox-color-mode=light] .gap-md-3{gap:1rem!important}html .gap-md-4,html[data-netbox-color-mode=dark] .gap-md-4,html[data-netbox-color-mode=light] .gap-md-4{gap:1.5rem!important}html .gap-md-5,html[data-netbox-color-mode=dark] .gap-md-5,html[data-netbox-color-mode=light] .gap-md-5{gap:3rem!important}html .justify-content-md-start,html[data-netbox-color-mode=dark] .justify-content-md-start,html[data-netbox-color-mode=light] .justify-content-md-start{justify-content:flex-start!important}html .justify-content-md-end,html[data-netbox-color-mode=dark] .justify-content-md-end,html[data-netbox-color-mode=light] .justify-content-md-end{justify-content:flex-end!important}html .justify-content-md-center,html[data-netbox-color-mode=dark] .justify-content-md-center,html[data-netbox-color-mode=light] .justify-content-md-center{justify-content:center!important}html .justify-content-md-between,html[data-netbox-color-mode=dark] .justify-content-md-between,html[data-netbox-color-mode=light] .justify-content-md-between{justify-content:space-between!important}html .justify-content-md-around,html[data-netbox-color-mode=dark] .justify-content-md-around,html[data-netbox-color-mode=light] .justify-content-md-around{justify-content:space-around!important}html .justify-content-md-evenly,html[data-netbox-color-mode=dark] .justify-content-md-evenly,html[data-netbox-color-mode=light] .justify-content-md-evenly{justify-content:space-evenly!important}html .align-items-md-start,html[data-netbox-color-mode=dark] .align-items-md-start,html[data-netbox-color-mode=light] .align-items-md-start{align-items:flex-start!important}html .align-items-md-end,html[data-netbox-color-mode=dark] .align-items-md-end,html[data-netbox-color-mode=light] .align-items-md-end{align-items:flex-end!important}html .align-items-md-center,html[data-netbox-color-mode=dark] .align-items-md-center,html[data-netbox-color-mode=light] .align-items-md-center{align-items:center!important}html .align-items-md-baseline,html[data-netbox-color-mode=dark] .align-items-md-baseline,html[data-netbox-color-mode=light] .align-items-md-baseline{align-items:baseline!important}html .align-items-md-stretch,html[data-netbox-color-mode=dark] .align-items-md-stretch,html[data-netbox-color-mode=light] .align-items-md-stretch{align-items:stretch!important}html .align-content-md-start,html[data-netbox-color-mode=dark] .align-content-md-start,html[data-netbox-color-mode=light] .align-content-md-start{align-content:flex-start!important}html .align-content-md-end,html[data-netbox-color-mode=dark] .align-content-md-end,html[data-netbox-color-mode=light] .align-content-md-end{align-content:flex-end!important}html .align-content-md-center,html[data-netbox-color-mode=dark] .align-content-md-center,html[data-netbox-color-mode=light] .align-content-md-center{align-content:center!important}html .align-content-md-between,html[data-netbox-color-mode=dark] .align-content-md-between,html[data-netbox-color-mode=light] .align-content-md-between{align-content:space-between!important}html .align-content-md-around,html[data-netbox-color-mode=dark] .align-content-md-around,html[data-netbox-color-mode=light] .align-content-md-around{align-content:space-around!important}html .align-content-md-stretch,html[data-netbox-color-mode=dark] .align-content-md-stretch,html[data-netbox-color-mode=light] .align-content-md-stretch{align-content:stretch!important}html .align-self-md-auto,html[data-netbox-color-mode=dark] .align-self-md-auto,html[data-netbox-color-mode=light] .align-self-md-auto{align-self:auto!important}html .align-self-md-start,html[data-netbox-color-mode=dark] .align-self-md-start,html[data-netbox-color-mode=light] .align-self-md-start{align-self:flex-start!important}html .align-self-md-end,html[data-netbox-color-mode=dark] .align-self-md-end,html[data-netbox-color-mode=light] .align-self-md-end{align-self:flex-end!important}html .align-self-md-center,html[data-netbox-color-mode=dark] .align-self-md-center,html[data-netbox-color-mode=light] .align-self-md-center{align-self:center!important}html .align-self-md-baseline,html[data-netbox-color-mode=dark] .align-self-md-baseline,html[data-netbox-color-mode=light] .align-self-md-baseline{align-self:baseline!important}html .align-self-md-stretch,html[data-netbox-color-mode=dark] .align-self-md-stretch,html[data-netbox-color-mode=light] .align-self-md-stretch{align-self:stretch!important}html .order-md-first,html[data-netbox-color-mode=dark] .order-md-first,html[data-netbox-color-mode=light] .order-md-first{order:-1!important}html .order-md-0,html[data-netbox-color-mode=dark] .order-md-0,html[data-netbox-color-mode=light] .order-md-0{order:0!important}html .order-md-1,html[data-netbox-color-mode=dark] .order-md-1,html[data-netbox-color-mode=light] .order-md-1{order:1!important}html .order-md-2,html[data-netbox-color-mode=dark] .order-md-2,html[data-netbox-color-mode=light] .order-md-2{order:2!important}html .order-md-3,html[data-netbox-color-mode=dark] .order-md-3,html[data-netbox-color-mode=light] .order-md-3{order:3!important}html .order-md-4,html[data-netbox-color-mode=dark] .order-md-4,html[data-netbox-color-mode=light] .order-md-4{order:4!important}html .order-md-5,html[data-netbox-color-mode=dark] .order-md-5,html[data-netbox-color-mode=light] .order-md-5{order:5!important}html .order-md-last,html[data-netbox-color-mode=dark] .order-md-last,html[data-netbox-color-mode=light] .order-md-last{order:6!important}html .m-md-0,html[data-netbox-color-mode=dark] .m-md-0,html[data-netbox-color-mode=light] .m-md-0{margin:0!important}html .m-md-1,html[data-netbox-color-mode=dark] .m-md-1,html[data-netbox-color-mode=light] .m-md-1{margin:.25rem!important}html .m-md-2,html[data-netbox-color-mode=dark] .m-md-2,html[data-netbox-color-mode=light] .m-md-2{margin:.5rem!important}html .m-md-3,html[data-netbox-color-mode=dark] .m-md-3,html[data-netbox-color-mode=light] .m-md-3{margin:1rem!important}html .m-md-4,html[data-netbox-color-mode=dark] .m-md-4,html[data-netbox-color-mode=light] .m-md-4{margin:1.5rem!important}html .m-md-5,html[data-netbox-color-mode=dark] .m-md-5,html[data-netbox-color-mode=light] .m-md-5{margin:3rem!important}html .m-md-auto,html[data-netbox-color-mode=dark] .m-md-auto,html[data-netbox-color-mode=light] .m-md-auto{margin:auto!important}html .mx-md-0,html[data-netbox-color-mode=dark] .mx-md-0,html[data-netbox-color-mode=light] .mx-md-0{margin-right:0!important;margin-left:0!important}html .mx-md-1,html[data-netbox-color-mode=dark] .mx-md-1,html[data-netbox-color-mode=light] .mx-md-1{margin-right:.25rem!important;margin-left:.25rem!important}html .mx-md-2,html[data-netbox-color-mode=dark] .mx-md-2,html[data-netbox-color-mode=light] .mx-md-2{margin-right:.5rem!important;margin-left:.5rem!important}html .mx-md-3,html[data-netbox-color-mode=dark] .mx-md-3,html[data-netbox-color-mode=light] .mx-md-3{margin-right:1rem!important;margin-left:1rem!important}html .mx-md-4,html[data-netbox-color-mode=dark] .mx-md-4,html[data-netbox-color-mode=light] .mx-md-4{margin-right:1.5rem!important;margin-left:1.5rem!important}html .mx-md-5,html[data-netbox-color-mode=dark] .mx-md-5,html[data-netbox-color-mode=light] .mx-md-5{margin-right:3rem!important;margin-left:3rem!important}html .mx-md-auto,html[data-netbox-color-mode=dark] .mx-md-auto,html[data-netbox-color-mode=light] .mx-md-auto{margin-right:auto!important;margin-left:auto!important}html .my-md-0,html[data-netbox-color-mode=dark] .my-md-0,html[data-netbox-color-mode=light] .my-md-0{margin-top:0!important;margin-bottom:0!important}html .my-md-1,html[data-netbox-color-mode=dark] .my-md-1,html[data-netbox-color-mode=light] .my-md-1{margin-top:.25rem!important;margin-bottom:.25rem!important}html .my-md-2,html[data-netbox-color-mode=dark] .my-md-2,html[data-netbox-color-mode=light] .my-md-2{margin-top:.5rem!important;margin-bottom:.5rem!important}html .my-md-3,html[data-netbox-color-mode=dark] .my-md-3,html[data-netbox-color-mode=light] .my-md-3{margin-top:1rem!important;margin-bottom:1rem!important}html .my-md-4,html[data-netbox-color-mode=dark] .my-md-4,html[data-netbox-color-mode=light] .my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}html .my-md-5,html[data-netbox-color-mode=dark] .my-md-5,html[data-netbox-color-mode=light] .my-md-5{margin-top:3rem!important;margin-bottom:3rem!important}html .my-md-auto,html[data-netbox-color-mode=dark] .my-md-auto,html[data-netbox-color-mode=light] .my-md-auto{margin-top:auto!important;margin-bottom:auto!important}html .mt-md-0,html[data-netbox-color-mode=dark] .mt-md-0,html[data-netbox-color-mode=light] .mt-md-0{margin-top:0!important}html .mt-md-1,html[data-netbox-color-mode=dark] .mt-md-1,html[data-netbox-color-mode=light] .mt-md-1{margin-top:.25rem!important}html .mt-md-2,html[data-netbox-color-mode=dark] .mt-md-2,html[data-netbox-color-mode=light] .mt-md-2{margin-top:.5rem!important}html .mt-md-3,html[data-netbox-color-mode=dark] .mt-md-3,html[data-netbox-color-mode=light] .mt-md-3{margin-top:1rem!important}html .mt-md-4,html[data-netbox-color-mode=dark] .mt-md-4,html[data-netbox-color-mode=light] .mt-md-4{margin-top:1.5rem!important}html .mt-md-5,html[data-netbox-color-mode=dark] .mt-md-5,html[data-netbox-color-mode=light] .mt-md-5{margin-top:3rem!important}html .mt-md-auto,html[data-netbox-color-mode=dark] .mt-md-auto,html[data-netbox-color-mode=light] .mt-md-auto{margin-top:auto!important}html .me-md-0,html[data-netbox-color-mode=dark] .me-md-0,html[data-netbox-color-mode=light] .me-md-0{margin-right:0!important}html .me-md-1,html[data-netbox-color-mode=dark] .me-md-1,html[data-netbox-color-mode=light] .me-md-1{margin-right:.25rem!important}html .me-md-2,html[data-netbox-color-mode=dark] .me-md-2,html[data-netbox-color-mode=light] .me-md-2{margin-right:.5rem!important}html .me-md-3,html[data-netbox-color-mode=dark] .me-md-3,html[data-netbox-color-mode=light] .me-md-3{margin-right:1rem!important}html .me-md-4,html[data-netbox-color-mode=dark] .me-md-4,html[data-netbox-color-mode=light] .me-md-4{margin-right:1.5rem!important}html .me-md-5,html[data-netbox-color-mode=dark] .me-md-5,html[data-netbox-color-mode=light] .me-md-5{margin-right:3rem!important}html .me-md-auto,html[data-netbox-color-mode=dark] .me-md-auto,html[data-netbox-color-mode=light] .me-md-auto{margin-right:auto!important}html .mb-md-0,html[data-netbox-color-mode=dark] .mb-md-0,html[data-netbox-color-mode=light] .mb-md-0{margin-bottom:0!important}html .mb-md-1,html[data-netbox-color-mode=dark] .mb-md-1,html[data-netbox-color-mode=light] .mb-md-1{margin-bottom:.25rem!important}html .mb-md-2,html[data-netbox-color-mode=dark] .mb-md-2,html[data-netbox-color-mode=light] .mb-md-2{margin-bottom:.5rem!important}html .mb-md-3,html[data-netbox-color-mode=dark] .mb-md-3,html[data-netbox-color-mode=light] .mb-md-3{margin-bottom:1rem!important}html .mb-md-4,html[data-netbox-color-mode=dark] .mb-md-4,html[data-netbox-color-mode=light] .mb-md-4{margin-bottom:1.5rem!important}html .mb-md-5,html[data-netbox-color-mode=dark] .mb-md-5,html[data-netbox-color-mode=light] .mb-md-5{margin-bottom:3rem!important}html .mb-md-auto,html[data-netbox-color-mode=dark] .mb-md-auto,html[data-netbox-color-mode=light] .mb-md-auto{margin-bottom:auto!important}html .ms-md-0,html[data-netbox-color-mode=dark] .ms-md-0,html[data-netbox-color-mode=light] .ms-md-0{margin-left:0!important}html .ms-md-1,html[data-netbox-color-mode=dark] .ms-md-1,html[data-netbox-color-mode=light] .ms-md-1{margin-left:.25rem!important}html .ms-md-2,html[data-netbox-color-mode=dark] .ms-md-2,html[data-netbox-color-mode=light] .ms-md-2{margin-left:.5rem!important}html .ms-md-3,html[data-netbox-color-mode=dark] .ms-md-3,html[data-netbox-color-mode=light] .ms-md-3{margin-left:1rem!important}html .ms-md-4,html[data-netbox-color-mode=dark] .ms-md-4,html[data-netbox-color-mode=light] .ms-md-4{margin-left:1.5rem!important}html .ms-md-5,html[data-netbox-color-mode=dark] .ms-md-5,html[data-netbox-color-mode=light] .ms-md-5{margin-left:3rem!important}html .ms-md-auto,html[data-netbox-color-mode=dark] .ms-md-auto,html[data-netbox-color-mode=light] .ms-md-auto{margin-left:auto!important}html .p-md-0,html[data-netbox-color-mode=dark] .p-md-0,html[data-netbox-color-mode=light] .p-md-0{padding:0!important}html .p-md-1,html[data-netbox-color-mode=dark] .p-md-1,html[data-netbox-color-mode=light] .p-md-1{padding:.25rem!important}html .p-md-2,html[data-netbox-color-mode=dark] .p-md-2,html[data-netbox-color-mode=light] .p-md-2{padding:.5rem!important}html .p-md-3,html[data-netbox-color-mode=dark] .p-md-3,html[data-netbox-color-mode=light] .p-md-3{padding:1rem!important}html .p-md-4,html[data-netbox-color-mode=dark] .p-md-4,html[data-netbox-color-mode=light] .p-md-4{padding:1.5rem!important}html .p-md-5,html[data-netbox-color-mode=dark] .p-md-5,html[data-netbox-color-mode=light] .p-md-5{padding:3rem!important}html .px-md-0,html[data-netbox-color-mode=dark] .px-md-0,html[data-netbox-color-mode=light] .px-md-0{padding-right:0!important;padding-left:0!important}html .px-md-1,html[data-netbox-color-mode=dark] .px-md-1,html[data-netbox-color-mode=light] .px-md-1{padding-right:.25rem!important;padding-left:.25rem!important}html .px-md-2,html[data-netbox-color-mode=dark] .px-md-2,html[data-netbox-color-mode=light] .px-md-2{padding-right:.5rem!important;padding-left:.5rem!important}html .px-md-3,html[data-netbox-color-mode=dark] .px-md-3,html[data-netbox-color-mode=light] .px-md-3{padding-right:1rem!important;padding-left:1rem!important}html .px-md-4,html[data-netbox-color-mode=dark] .px-md-4,html[data-netbox-color-mode=light] .px-md-4{padding-right:1.5rem!important;padding-left:1.5rem!important}html .px-md-5,html[data-netbox-color-mode=dark] .px-md-5,html[data-netbox-color-mode=light] .px-md-5{padding-right:3rem!important;padding-left:3rem!important}html .py-md-0,html[data-netbox-color-mode=dark] .py-md-0,html[data-netbox-color-mode=light] .py-md-0{padding-top:0!important;padding-bottom:0!important}html .py-md-1,html[data-netbox-color-mode=dark] .py-md-1,html[data-netbox-color-mode=light] .py-md-1{padding-top:.25rem!important;padding-bottom:.25rem!important}html .py-md-2,html[data-netbox-color-mode=dark] .py-md-2,html[data-netbox-color-mode=light] .py-md-2{padding-top:.5rem!important;padding-bottom:.5rem!important}html .py-md-3,html[data-netbox-color-mode=dark] .py-md-3,html[data-netbox-color-mode=light] .py-md-3{padding-top:1rem!important;padding-bottom:1rem!important}html .py-md-4,html[data-netbox-color-mode=dark] .py-md-4,html[data-netbox-color-mode=light] .py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}html .py-md-5,html[data-netbox-color-mode=dark] .py-md-5,html[data-netbox-color-mode=light] .py-md-5{padding-top:3rem!important;padding-bottom:3rem!important}html .pt-md-0,html[data-netbox-color-mode=dark] .pt-md-0,html[data-netbox-color-mode=light] .pt-md-0{padding-top:0!important}html .pt-md-1,html[data-netbox-color-mode=dark] .pt-md-1,html[data-netbox-color-mode=light] .pt-md-1{padding-top:.25rem!important}html .pt-md-2,html[data-netbox-color-mode=dark] .pt-md-2,html[data-netbox-color-mode=light] .pt-md-2{padding-top:.5rem!important}html .pt-md-3,html[data-netbox-color-mode=dark] .pt-md-3,html[data-netbox-color-mode=light] .pt-md-3{padding-top:1rem!important}html .pt-md-4,html[data-netbox-color-mode=dark] .pt-md-4,html[data-netbox-color-mode=light] .pt-md-4{padding-top:1.5rem!important}html .pt-md-5,html[data-netbox-color-mode=dark] .pt-md-5,html[data-netbox-color-mode=light] .pt-md-5{padding-top:3rem!important}html .pe-md-0,html[data-netbox-color-mode=dark] .pe-md-0,html[data-netbox-color-mode=light] .pe-md-0{padding-right:0!important}html .pe-md-1,html[data-netbox-color-mode=dark] .pe-md-1,html[data-netbox-color-mode=light] .pe-md-1{padding-right:.25rem!important}html .pe-md-2,html[data-netbox-color-mode=dark] .pe-md-2,html[data-netbox-color-mode=light] .pe-md-2{padding-right:.5rem!important}html .pe-md-3,html[data-netbox-color-mode=dark] .pe-md-3,html[data-netbox-color-mode=light] .pe-md-3{padding-right:1rem!important}html .pe-md-4,html[data-netbox-color-mode=dark] .pe-md-4,html[data-netbox-color-mode=light] .pe-md-4{padding-right:1.5rem!important}html .pe-md-5,html[data-netbox-color-mode=dark] .pe-md-5,html[data-netbox-color-mode=light] .pe-md-5{padding-right:3rem!important}html .pb-md-0,html[data-netbox-color-mode=dark] .pb-md-0,html[data-netbox-color-mode=light] .pb-md-0{padding-bottom:0!important}html .pb-md-1,html[data-netbox-color-mode=dark] .pb-md-1,html[data-netbox-color-mode=light] .pb-md-1{padding-bottom:.25rem!important}html .pb-md-2,html[data-netbox-color-mode=dark] .pb-md-2,html[data-netbox-color-mode=light] .pb-md-2{padding-bottom:.5rem!important}html .pb-md-3,html[data-netbox-color-mode=dark] .pb-md-3,html[data-netbox-color-mode=light] .pb-md-3{padding-bottom:1rem!important}html .pb-md-4,html[data-netbox-color-mode=dark] .pb-md-4,html[data-netbox-color-mode=light] .pb-md-4{padding-bottom:1.5rem!important}html .pb-md-5,html[data-netbox-color-mode=dark] .pb-md-5,html[data-netbox-color-mode=light] .pb-md-5{padding-bottom:3rem!important}html .ps-md-0,html[data-netbox-color-mode=dark] .ps-md-0,html[data-netbox-color-mode=light] .ps-md-0{padding-left:0!important}html .ps-md-1,html[data-netbox-color-mode=dark] .ps-md-1,html[data-netbox-color-mode=light] .ps-md-1{padding-left:.25rem!important}html .ps-md-2,html[data-netbox-color-mode=dark] .ps-md-2,html[data-netbox-color-mode=light] .ps-md-2{padding-left:.5rem!important}html .ps-md-3,html[data-netbox-color-mode=dark] .ps-md-3,html[data-netbox-color-mode=light] .ps-md-3{padding-left:1rem!important}html .ps-md-4,html[data-netbox-color-mode=dark] .ps-md-4,html[data-netbox-color-mode=light] .ps-md-4{padding-left:1.5rem!important}html .ps-md-5,html[data-netbox-color-mode=dark] .ps-md-5,html[data-netbox-color-mode=light] .ps-md-5{padding-left:3rem!important}html .text-md-start,html[data-netbox-color-mode=dark] .text-md-start,html[data-netbox-color-mode=light] .text-md-start{text-align:left!important}html .text-md-end,html[data-netbox-color-mode=dark] .text-md-end,html[data-netbox-color-mode=light] .text-md-end{text-align:right!important}html .text-md-center,html[data-netbox-color-mode=dark] .text-md-center,html[data-netbox-color-mode=light] .text-md-center{text-align:center!important}}@media print and (min-width: 992px){html .float-lg-start,html[data-netbox-color-mode=dark] .float-lg-start,html[data-netbox-color-mode=light] .float-lg-start{float:left!important}html .float-lg-end,html[data-netbox-color-mode=dark] .float-lg-end,html[data-netbox-color-mode=light] .float-lg-end{float:right!important}html .float-lg-none,html[data-netbox-color-mode=dark] .float-lg-none,html[data-netbox-color-mode=light] .float-lg-none{float:none!important}html .d-lg-inline,html[data-netbox-color-mode=dark] .d-lg-inline,html[data-netbox-color-mode=light] .d-lg-inline{display:inline!important}html .d-lg-inline-block,html[data-netbox-color-mode=dark] .d-lg-inline-block,html[data-netbox-color-mode=light] .d-lg-inline-block{display:inline-block!important}html .d-lg-block,html[data-netbox-color-mode=dark] .d-lg-block,html[data-netbox-color-mode=light] .d-lg-block{display:block!important}html .d-lg-grid,html[data-netbox-color-mode=dark] .d-lg-grid,html[data-netbox-color-mode=light] .d-lg-grid{display:grid!important}html .d-lg-table,html[data-netbox-color-mode=dark] .d-lg-table,html[data-netbox-color-mode=light] .d-lg-table{display:table!important}html .d-lg-table-row,html[data-netbox-color-mode=dark] .d-lg-table-row,html[data-netbox-color-mode=light] .d-lg-table-row{display:table-row!important}html .d-lg-table-cell,html[data-netbox-color-mode=dark] .d-lg-table-cell,html[data-netbox-color-mode=light] .d-lg-table-cell{display:table-cell!important}html .d-lg-flex,html[data-netbox-color-mode=dark] .d-lg-flex,html[data-netbox-color-mode=light] .d-lg-flex{display:flex!important}html .d-lg-inline-flex,html[data-netbox-color-mode=dark] .d-lg-inline-flex,html[data-netbox-color-mode=light] .d-lg-inline-flex{display:inline-flex!important}html .d-lg-none,html[data-netbox-color-mode=dark] .d-lg-none,html[data-netbox-color-mode=light] .d-lg-none{display:none!important}html .flex-lg-fill,html[data-netbox-color-mode=dark] .flex-lg-fill,html[data-netbox-color-mode=light] .flex-lg-fill{flex:1 1 auto!important}html .flex-lg-row,html[data-netbox-color-mode=dark] .flex-lg-row,html[data-netbox-color-mode=light] .flex-lg-row{flex-direction:row!important}html .flex-lg-column,html[data-netbox-color-mode=dark] .flex-lg-column,html[data-netbox-color-mode=light] .flex-lg-column{flex-direction:column!important}html .flex-lg-row-reverse,html[data-netbox-color-mode=dark] .flex-lg-row-reverse,html[data-netbox-color-mode=light] .flex-lg-row-reverse{flex-direction:row-reverse!important}html .flex-lg-column-reverse,html[data-netbox-color-mode=dark] .flex-lg-column-reverse,html[data-netbox-color-mode=light] .flex-lg-column-reverse{flex-direction:column-reverse!important}html .flex-lg-grow-0,html[data-netbox-color-mode=dark] .flex-lg-grow-0,html[data-netbox-color-mode=light] .flex-lg-grow-0{flex-grow:0!important}html .flex-lg-grow-1,html[data-netbox-color-mode=dark] .flex-lg-grow-1,html[data-netbox-color-mode=light] .flex-lg-grow-1{flex-grow:1!important}html .flex-lg-shrink-0,html[data-netbox-color-mode=dark] .flex-lg-shrink-0,html[data-netbox-color-mode=light] .flex-lg-shrink-0{flex-shrink:0!important}html .flex-lg-shrink-1,html[data-netbox-color-mode=dark] .flex-lg-shrink-1,html[data-netbox-color-mode=light] .flex-lg-shrink-1{flex-shrink:1!important}html .flex-lg-wrap,html[data-netbox-color-mode=dark] .flex-lg-wrap,html[data-netbox-color-mode=light] .flex-lg-wrap{flex-wrap:wrap!important}html .flex-lg-nowrap,html[data-netbox-color-mode=dark] .flex-lg-nowrap,html[data-netbox-color-mode=light] .flex-lg-nowrap{flex-wrap:nowrap!important}html .flex-lg-wrap-reverse,html[data-netbox-color-mode=dark] .flex-lg-wrap-reverse,html[data-netbox-color-mode=light] .flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}html .gap-lg-0,html[data-netbox-color-mode=dark] .gap-lg-0,html[data-netbox-color-mode=light] .gap-lg-0{gap:0!important}html .gap-lg-1,html[data-netbox-color-mode=dark] .gap-lg-1,html[data-netbox-color-mode=light] .gap-lg-1{gap:.25rem!important}html .gap-lg-2,html[data-netbox-color-mode=dark] .gap-lg-2,html[data-netbox-color-mode=light] .gap-lg-2{gap:.5rem!important}html .gap-lg-3,html[data-netbox-color-mode=dark] .gap-lg-3,html[data-netbox-color-mode=light] .gap-lg-3{gap:1rem!important}html .gap-lg-4,html[data-netbox-color-mode=dark] .gap-lg-4,html[data-netbox-color-mode=light] .gap-lg-4{gap:1.5rem!important}html .gap-lg-5,html[data-netbox-color-mode=dark] .gap-lg-5,html[data-netbox-color-mode=light] .gap-lg-5{gap:3rem!important}html .justify-content-lg-start,html[data-netbox-color-mode=dark] .justify-content-lg-start,html[data-netbox-color-mode=light] .justify-content-lg-start{justify-content:flex-start!important}html .justify-content-lg-end,html[data-netbox-color-mode=dark] .justify-content-lg-end,html[data-netbox-color-mode=light] .justify-content-lg-end{justify-content:flex-end!important}html .justify-content-lg-center,html[data-netbox-color-mode=dark] .justify-content-lg-center,html[data-netbox-color-mode=light] .justify-content-lg-center{justify-content:center!important}html .justify-content-lg-between,html[data-netbox-color-mode=dark] .justify-content-lg-between,html[data-netbox-color-mode=light] .justify-content-lg-between{justify-content:space-between!important}html .justify-content-lg-around,html[data-netbox-color-mode=dark] .justify-content-lg-around,html[data-netbox-color-mode=light] .justify-content-lg-around{justify-content:space-around!important}html .justify-content-lg-evenly,html[data-netbox-color-mode=dark] .justify-content-lg-evenly,html[data-netbox-color-mode=light] .justify-content-lg-evenly{justify-content:space-evenly!important}html .align-items-lg-start,html[data-netbox-color-mode=dark] .align-items-lg-start,html[data-netbox-color-mode=light] .align-items-lg-start{align-items:flex-start!important}html .align-items-lg-end,html[data-netbox-color-mode=dark] .align-items-lg-end,html[data-netbox-color-mode=light] .align-items-lg-end{align-items:flex-end!important}html .align-items-lg-center,html[data-netbox-color-mode=dark] .align-items-lg-center,html[data-netbox-color-mode=light] .align-items-lg-center{align-items:center!important}html .align-items-lg-baseline,html[data-netbox-color-mode=dark] .align-items-lg-baseline,html[data-netbox-color-mode=light] .align-items-lg-baseline{align-items:baseline!important}html .align-items-lg-stretch,html[data-netbox-color-mode=dark] .align-items-lg-stretch,html[data-netbox-color-mode=light] .align-items-lg-stretch{align-items:stretch!important}html .align-content-lg-start,html[data-netbox-color-mode=dark] .align-content-lg-start,html[data-netbox-color-mode=light] .align-content-lg-start{align-content:flex-start!important}html .align-content-lg-end,html[data-netbox-color-mode=dark] .align-content-lg-end,html[data-netbox-color-mode=light] .align-content-lg-end{align-content:flex-end!important}html .align-content-lg-center,html[data-netbox-color-mode=dark] .align-content-lg-center,html[data-netbox-color-mode=light] .align-content-lg-center{align-content:center!important}html .align-content-lg-between,html[data-netbox-color-mode=dark] .align-content-lg-between,html[data-netbox-color-mode=light] .align-content-lg-between{align-content:space-between!important}html .align-content-lg-around,html[data-netbox-color-mode=dark] .align-content-lg-around,html[data-netbox-color-mode=light] .align-content-lg-around{align-content:space-around!important}html .align-content-lg-stretch,html[data-netbox-color-mode=dark] .align-content-lg-stretch,html[data-netbox-color-mode=light] .align-content-lg-stretch{align-content:stretch!important}html .align-self-lg-auto,html[data-netbox-color-mode=dark] .align-self-lg-auto,html[data-netbox-color-mode=light] .align-self-lg-auto{align-self:auto!important}html .align-self-lg-start,html[data-netbox-color-mode=dark] .align-self-lg-start,html[data-netbox-color-mode=light] .align-self-lg-start{align-self:flex-start!important}html .align-self-lg-end,html[data-netbox-color-mode=dark] .align-self-lg-end,html[data-netbox-color-mode=light] .align-self-lg-end{align-self:flex-end!important}html .align-self-lg-center,html[data-netbox-color-mode=dark] .align-self-lg-center,html[data-netbox-color-mode=light] .align-self-lg-center{align-self:center!important}html .align-self-lg-baseline,html[data-netbox-color-mode=dark] .align-self-lg-baseline,html[data-netbox-color-mode=light] .align-self-lg-baseline{align-self:baseline!important}html .align-self-lg-stretch,html[data-netbox-color-mode=dark] .align-self-lg-stretch,html[data-netbox-color-mode=light] .align-self-lg-stretch{align-self:stretch!important}html .order-lg-first,html[data-netbox-color-mode=dark] .order-lg-first,html[data-netbox-color-mode=light] .order-lg-first{order:-1!important}html .order-lg-0,html[data-netbox-color-mode=dark] .order-lg-0,html[data-netbox-color-mode=light] .order-lg-0{order:0!important}html .order-lg-1,html[data-netbox-color-mode=dark] .order-lg-1,html[data-netbox-color-mode=light] .order-lg-1{order:1!important}html .order-lg-2,html[data-netbox-color-mode=dark] .order-lg-2,html[data-netbox-color-mode=light] .order-lg-2{order:2!important}html .order-lg-3,html[data-netbox-color-mode=dark] .order-lg-3,html[data-netbox-color-mode=light] .order-lg-3{order:3!important}html .order-lg-4,html[data-netbox-color-mode=dark] .order-lg-4,html[data-netbox-color-mode=light] .order-lg-4{order:4!important}html .order-lg-5,html[data-netbox-color-mode=dark] .order-lg-5,html[data-netbox-color-mode=light] .order-lg-5{order:5!important}html .order-lg-last,html[data-netbox-color-mode=dark] .order-lg-last,html[data-netbox-color-mode=light] .order-lg-last{order:6!important}html .m-lg-0,html[data-netbox-color-mode=dark] .m-lg-0,html[data-netbox-color-mode=light] .m-lg-0{margin:0!important}html .m-lg-1,html[data-netbox-color-mode=dark] .m-lg-1,html[data-netbox-color-mode=light] .m-lg-1{margin:.25rem!important}html .m-lg-2,html[data-netbox-color-mode=dark] .m-lg-2,html[data-netbox-color-mode=light] .m-lg-2{margin:.5rem!important}html .m-lg-3,html[data-netbox-color-mode=dark] .m-lg-3,html[data-netbox-color-mode=light] .m-lg-3{margin:1rem!important}html .m-lg-4,html[data-netbox-color-mode=dark] .m-lg-4,html[data-netbox-color-mode=light] .m-lg-4{margin:1.5rem!important}html .m-lg-5,html[data-netbox-color-mode=dark] .m-lg-5,html[data-netbox-color-mode=light] .m-lg-5{margin:3rem!important}html .m-lg-auto,html[data-netbox-color-mode=dark] .m-lg-auto,html[data-netbox-color-mode=light] .m-lg-auto{margin:auto!important}html .mx-lg-0,html[data-netbox-color-mode=dark] .mx-lg-0,html[data-netbox-color-mode=light] .mx-lg-0{margin-right:0!important;margin-left:0!important}html .mx-lg-1,html[data-netbox-color-mode=dark] .mx-lg-1,html[data-netbox-color-mode=light] .mx-lg-1{margin-right:.25rem!important;margin-left:.25rem!important}html .mx-lg-2,html[data-netbox-color-mode=dark] .mx-lg-2,html[data-netbox-color-mode=light] .mx-lg-2{margin-right:.5rem!important;margin-left:.5rem!important}html .mx-lg-3,html[data-netbox-color-mode=dark] .mx-lg-3,html[data-netbox-color-mode=light] .mx-lg-3{margin-right:1rem!important;margin-left:1rem!important}html .mx-lg-4,html[data-netbox-color-mode=dark] .mx-lg-4,html[data-netbox-color-mode=light] .mx-lg-4{margin-right:1.5rem!important;margin-left:1.5rem!important}html .mx-lg-5,html[data-netbox-color-mode=dark] .mx-lg-5,html[data-netbox-color-mode=light] .mx-lg-5{margin-right:3rem!important;margin-left:3rem!important}html .mx-lg-auto,html[data-netbox-color-mode=dark] .mx-lg-auto,html[data-netbox-color-mode=light] .mx-lg-auto{margin-right:auto!important;margin-left:auto!important}html .my-lg-0,html[data-netbox-color-mode=dark] .my-lg-0,html[data-netbox-color-mode=light] .my-lg-0{margin-top:0!important;margin-bottom:0!important}html .my-lg-1,html[data-netbox-color-mode=dark] .my-lg-1,html[data-netbox-color-mode=light] .my-lg-1{margin-top:.25rem!important;margin-bottom:.25rem!important}html .my-lg-2,html[data-netbox-color-mode=dark] .my-lg-2,html[data-netbox-color-mode=light] .my-lg-2{margin-top:.5rem!important;margin-bottom:.5rem!important}html .my-lg-3,html[data-netbox-color-mode=dark] .my-lg-3,html[data-netbox-color-mode=light] .my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important}html .my-lg-4,html[data-netbox-color-mode=dark] .my-lg-4,html[data-netbox-color-mode=light] .my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}html .my-lg-5,html[data-netbox-color-mode=dark] .my-lg-5,html[data-netbox-color-mode=light] .my-lg-5{margin-top:3rem!important;margin-bottom:3rem!important}html .my-lg-auto,html[data-netbox-color-mode=dark] .my-lg-auto,html[data-netbox-color-mode=light] .my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}html .mt-lg-0,html[data-netbox-color-mode=dark] .mt-lg-0,html[data-netbox-color-mode=light] .mt-lg-0{margin-top:0!important}html .mt-lg-1,html[data-netbox-color-mode=dark] .mt-lg-1,html[data-netbox-color-mode=light] .mt-lg-1{margin-top:.25rem!important}html .mt-lg-2,html[data-netbox-color-mode=dark] .mt-lg-2,html[data-netbox-color-mode=light] .mt-lg-2{margin-top:.5rem!important}html .mt-lg-3,html[data-netbox-color-mode=dark] .mt-lg-3,html[data-netbox-color-mode=light] .mt-lg-3{margin-top:1rem!important}html .mt-lg-4,html[data-netbox-color-mode=dark] .mt-lg-4,html[data-netbox-color-mode=light] .mt-lg-4{margin-top:1.5rem!important}html .mt-lg-5,html[data-netbox-color-mode=dark] .mt-lg-5,html[data-netbox-color-mode=light] .mt-lg-5{margin-top:3rem!important}html .mt-lg-auto,html[data-netbox-color-mode=dark] .mt-lg-auto,html[data-netbox-color-mode=light] .mt-lg-auto{margin-top:auto!important}html .me-lg-0,html[data-netbox-color-mode=dark] .me-lg-0,html[data-netbox-color-mode=light] .me-lg-0{margin-right:0!important}html .me-lg-1,html[data-netbox-color-mode=dark] .me-lg-1,html[data-netbox-color-mode=light] .me-lg-1{margin-right:.25rem!important}html .me-lg-2,html[data-netbox-color-mode=dark] .me-lg-2,html[data-netbox-color-mode=light] .me-lg-2{margin-right:.5rem!important}html .me-lg-3,html[data-netbox-color-mode=dark] .me-lg-3,html[data-netbox-color-mode=light] .me-lg-3{margin-right:1rem!important}html .me-lg-4,html[data-netbox-color-mode=dark] .me-lg-4,html[data-netbox-color-mode=light] .me-lg-4{margin-right:1.5rem!important}html .me-lg-5,html[data-netbox-color-mode=dark] .me-lg-5,html[data-netbox-color-mode=light] .me-lg-5{margin-right:3rem!important}html .me-lg-auto,html[data-netbox-color-mode=dark] .me-lg-auto,html[data-netbox-color-mode=light] .me-lg-auto{margin-right:auto!important}html .mb-lg-0,html[data-netbox-color-mode=dark] .mb-lg-0,html[data-netbox-color-mode=light] .mb-lg-0{margin-bottom:0!important}html .mb-lg-1,html[data-netbox-color-mode=dark] .mb-lg-1,html[data-netbox-color-mode=light] .mb-lg-1{margin-bottom:.25rem!important}html .mb-lg-2,html[data-netbox-color-mode=dark] .mb-lg-2,html[data-netbox-color-mode=light] .mb-lg-2{margin-bottom:.5rem!important}html .mb-lg-3,html[data-netbox-color-mode=dark] .mb-lg-3,html[data-netbox-color-mode=light] .mb-lg-3{margin-bottom:1rem!important}html .mb-lg-4,html[data-netbox-color-mode=dark] .mb-lg-4,html[data-netbox-color-mode=light] .mb-lg-4{margin-bottom:1.5rem!important}html .mb-lg-5,html[data-netbox-color-mode=dark] .mb-lg-5,html[data-netbox-color-mode=light] .mb-lg-5{margin-bottom:3rem!important}html .mb-lg-auto,html[data-netbox-color-mode=dark] .mb-lg-auto,html[data-netbox-color-mode=light] .mb-lg-auto{margin-bottom:auto!important}html .ms-lg-0,html[data-netbox-color-mode=dark] .ms-lg-0,html[data-netbox-color-mode=light] .ms-lg-0{margin-left:0!important}html .ms-lg-1,html[data-netbox-color-mode=dark] .ms-lg-1,html[data-netbox-color-mode=light] .ms-lg-1{margin-left:.25rem!important}html .ms-lg-2,html[data-netbox-color-mode=dark] .ms-lg-2,html[data-netbox-color-mode=light] .ms-lg-2{margin-left:.5rem!important}html .ms-lg-3,html[data-netbox-color-mode=dark] .ms-lg-3,html[data-netbox-color-mode=light] .ms-lg-3{margin-left:1rem!important}html .ms-lg-4,html[data-netbox-color-mode=dark] .ms-lg-4,html[data-netbox-color-mode=light] .ms-lg-4{margin-left:1.5rem!important}html .ms-lg-5,html[data-netbox-color-mode=dark] .ms-lg-5,html[data-netbox-color-mode=light] .ms-lg-5{margin-left:3rem!important}html .ms-lg-auto,html[data-netbox-color-mode=dark] .ms-lg-auto,html[data-netbox-color-mode=light] .ms-lg-auto{margin-left:auto!important}html .p-lg-0,html[data-netbox-color-mode=dark] .p-lg-0,html[data-netbox-color-mode=light] .p-lg-0{padding:0!important}html .p-lg-1,html[data-netbox-color-mode=dark] .p-lg-1,html[data-netbox-color-mode=light] .p-lg-1{padding:.25rem!important}html .p-lg-2,html[data-netbox-color-mode=dark] .p-lg-2,html[data-netbox-color-mode=light] .p-lg-2{padding:.5rem!important}html .p-lg-3,html[data-netbox-color-mode=dark] .p-lg-3,html[data-netbox-color-mode=light] .p-lg-3{padding:1rem!important}html .p-lg-4,html[data-netbox-color-mode=dark] .p-lg-4,html[data-netbox-color-mode=light] .p-lg-4{padding:1.5rem!important}html .p-lg-5,html[data-netbox-color-mode=dark] .p-lg-5,html[data-netbox-color-mode=light] .p-lg-5{padding:3rem!important}html .px-lg-0,html[data-netbox-color-mode=dark] .px-lg-0,html[data-netbox-color-mode=light] .px-lg-0{padding-right:0!important;padding-left:0!important}html .px-lg-1,html[data-netbox-color-mode=dark] .px-lg-1,html[data-netbox-color-mode=light] .px-lg-1{padding-right:.25rem!important;padding-left:.25rem!important}html .px-lg-2,html[data-netbox-color-mode=dark] .px-lg-2,html[data-netbox-color-mode=light] .px-lg-2{padding-right:.5rem!important;padding-left:.5rem!important}html .px-lg-3,html[data-netbox-color-mode=dark] .px-lg-3,html[data-netbox-color-mode=light] .px-lg-3{padding-right:1rem!important;padding-left:1rem!important}html .px-lg-4,html[data-netbox-color-mode=dark] .px-lg-4,html[data-netbox-color-mode=light] .px-lg-4{padding-right:1.5rem!important;padding-left:1.5rem!important}html .px-lg-5,html[data-netbox-color-mode=dark] .px-lg-5,html[data-netbox-color-mode=light] .px-lg-5{padding-right:3rem!important;padding-left:3rem!important}html .py-lg-0,html[data-netbox-color-mode=dark] .py-lg-0,html[data-netbox-color-mode=light] .py-lg-0{padding-top:0!important;padding-bottom:0!important}html .py-lg-1,html[data-netbox-color-mode=dark] .py-lg-1,html[data-netbox-color-mode=light] .py-lg-1{padding-top:.25rem!important;padding-bottom:.25rem!important}html .py-lg-2,html[data-netbox-color-mode=dark] .py-lg-2,html[data-netbox-color-mode=light] .py-lg-2{padding-top:.5rem!important;padding-bottom:.5rem!important}html .py-lg-3,html[data-netbox-color-mode=dark] .py-lg-3,html[data-netbox-color-mode=light] .py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important}html .py-lg-4,html[data-netbox-color-mode=dark] .py-lg-4,html[data-netbox-color-mode=light] .py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}html .py-lg-5,html[data-netbox-color-mode=dark] .py-lg-5,html[data-netbox-color-mode=light] .py-lg-5{padding-top:3rem!important;padding-bottom:3rem!important}html .pt-lg-0,html[data-netbox-color-mode=dark] .pt-lg-0,html[data-netbox-color-mode=light] .pt-lg-0{padding-top:0!important}html .pt-lg-1,html[data-netbox-color-mode=dark] .pt-lg-1,html[data-netbox-color-mode=light] .pt-lg-1{padding-top:.25rem!important}html .pt-lg-2,html[data-netbox-color-mode=dark] .pt-lg-2,html[data-netbox-color-mode=light] .pt-lg-2{padding-top:.5rem!important}html .pt-lg-3,html[data-netbox-color-mode=dark] .pt-lg-3,html[data-netbox-color-mode=light] .pt-lg-3{padding-top:1rem!important}html .pt-lg-4,html[data-netbox-color-mode=dark] .pt-lg-4,html[data-netbox-color-mode=light] .pt-lg-4{padding-top:1.5rem!important}html .pt-lg-5,html[data-netbox-color-mode=dark] .pt-lg-5,html[data-netbox-color-mode=light] .pt-lg-5{padding-top:3rem!important}html .pe-lg-0,html[data-netbox-color-mode=dark] .pe-lg-0,html[data-netbox-color-mode=light] .pe-lg-0{padding-right:0!important}html .pe-lg-1,html[data-netbox-color-mode=dark] .pe-lg-1,html[data-netbox-color-mode=light] .pe-lg-1{padding-right:.25rem!important}html .pe-lg-2,html[data-netbox-color-mode=dark] .pe-lg-2,html[data-netbox-color-mode=light] .pe-lg-2{padding-right:.5rem!important}html .pe-lg-3,html[data-netbox-color-mode=dark] .pe-lg-3,html[data-netbox-color-mode=light] .pe-lg-3{padding-right:1rem!important}html .pe-lg-4,html[data-netbox-color-mode=dark] .pe-lg-4,html[data-netbox-color-mode=light] .pe-lg-4{padding-right:1.5rem!important}html .pe-lg-5,html[data-netbox-color-mode=dark] .pe-lg-5,html[data-netbox-color-mode=light] .pe-lg-5{padding-right:3rem!important}html .pb-lg-0,html[data-netbox-color-mode=dark] .pb-lg-0,html[data-netbox-color-mode=light] .pb-lg-0{padding-bottom:0!important}html .pb-lg-1,html[data-netbox-color-mode=dark] .pb-lg-1,html[data-netbox-color-mode=light] .pb-lg-1{padding-bottom:.25rem!important}html .pb-lg-2,html[data-netbox-color-mode=dark] .pb-lg-2,html[data-netbox-color-mode=light] .pb-lg-2{padding-bottom:.5rem!important}html .pb-lg-3,html[data-netbox-color-mode=dark] .pb-lg-3,html[data-netbox-color-mode=light] .pb-lg-3{padding-bottom:1rem!important}html .pb-lg-4,html[data-netbox-color-mode=dark] .pb-lg-4,html[data-netbox-color-mode=light] .pb-lg-4{padding-bottom:1.5rem!important}html .pb-lg-5,html[data-netbox-color-mode=dark] .pb-lg-5,html[data-netbox-color-mode=light] .pb-lg-5{padding-bottom:3rem!important}html .ps-lg-0,html[data-netbox-color-mode=dark] .ps-lg-0,html[data-netbox-color-mode=light] .ps-lg-0{padding-left:0!important}html .ps-lg-1,html[data-netbox-color-mode=dark] .ps-lg-1,html[data-netbox-color-mode=light] .ps-lg-1{padding-left:.25rem!important}html .ps-lg-2,html[data-netbox-color-mode=dark] .ps-lg-2,html[data-netbox-color-mode=light] .ps-lg-2{padding-left:.5rem!important}html .ps-lg-3,html[data-netbox-color-mode=dark] .ps-lg-3,html[data-netbox-color-mode=light] .ps-lg-3{padding-left:1rem!important}html .ps-lg-4,html[data-netbox-color-mode=dark] .ps-lg-4,html[data-netbox-color-mode=light] .ps-lg-4{padding-left:1.5rem!important}html .ps-lg-5,html[data-netbox-color-mode=dark] .ps-lg-5,html[data-netbox-color-mode=light] .ps-lg-5{padding-left:3rem!important}html .text-lg-start,html[data-netbox-color-mode=dark] .text-lg-start,html[data-netbox-color-mode=light] .text-lg-start{text-align:left!important}html .text-lg-end,html[data-netbox-color-mode=dark] .text-lg-end,html[data-netbox-color-mode=light] .text-lg-end{text-align:right!important}html .text-lg-center,html[data-netbox-color-mode=dark] .text-lg-center,html[data-netbox-color-mode=light] .text-lg-center{text-align:center!important}}@media print and (min-width: 1200px){html .float-xl-start,html[data-netbox-color-mode=dark] .float-xl-start,html[data-netbox-color-mode=light] .float-xl-start{float:left!important}html .float-xl-end,html[data-netbox-color-mode=dark] .float-xl-end,html[data-netbox-color-mode=light] .float-xl-end{float:right!important}html .float-xl-none,html[data-netbox-color-mode=dark] .float-xl-none,html[data-netbox-color-mode=light] .float-xl-none{float:none!important}html .d-xl-inline,html[data-netbox-color-mode=dark] .d-xl-inline,html[data-netbox-color-mode=light] .d-xl-inline{display:inline!important}html .d-xl-inline-block,html[data-netbox-color-mode=dark] .d-xl-inline-block,html[data-netbox-color-mode=light] .d-xl-inline-block{display:inline-block!important}html .d-xl-block,html[data-netbox-color-mode=dark] .d-xl-block,html[data-netbox-color-mode=light] .d-xl-block{display:block!important}html .d-xl-grid,html[data-netbox-color-mode=dark] .d-xl-grid,html[data-netbox-color-mode=light] .d-xl-grid{display:grid!important}html .d-xl-table,html[data-netbox-color-mode=dark] .d-xl-table,html[data-netbox-color-mode=light] .d-xl-table{display:table!important}html .d-xl-table-row,html[data-netbox-color-mode=dark] .d-xl-table-row,html[data-netbox-color-mode=light] .d-xl-table-row{display:table-row!important}html .d-xl-table-cell,html[data-netbox-color-mode=dark] .d-xl-table-cell,html[data-netbox-color-mode=light] .d-xl-table-cell{display:table-cell!important}html .d-xl-flex,html[data-netbox-color-mode=dark] .d-xl-flex,html[data-netbox-color-mode=light] .d-xl-flex{display:flex!important}html .d-xl-inline-flex,html[data-netbox-color-mode=dark] .d-xl-inline-flex,html[data-netbox-color-mode=light] .d-xl-inline-flex{display:inline-flex!important}html .d-xl-none,html[data-netbox-color-mode=dark] .d-xl-none,html[data-netbox-color-mode=light] .d-xl-none{display:none!important}html .flex-xl-fill,html[data-netbox-color-mode=dark] .flex-xl-fill,html[data-netbox-color-mode=light] .flex-xl-fill{flex:1 1 auto!important}html .flex-xl-row,html[data-netbox-color-mode=dark] .flex-xl-row,html[data-netbox-color-mode=light] .flex-xl-row{flex-direction:row!important}html .flex-xl-column,html[data-netbox-color-mode=dark] .flex-xl-column,html[data-netbox-color-mode=light] .flex-xl-column{flex-direction:column!important}html .flex-xl-row-reverse,html[data-netbox-color-mode=dark] .flex-xl-row-reverse,html[data-netbox-color-mode=light] .flex-xl-row-reverse{flex-direction:row-reverse!important}html .flex-xl-column-reverse,html[data-netbox-color-mode=dark] .flex-xl-column-reverse,html[data-netbox-color-mode=light] .flex-xl-column-reverse{flex-direction:column-reverse!important}html .flex-xl-grow-0,html[data-netbox-color-mode=dark] .flex-xl-grow-0,html[data-netbox-color-mode=light] .flex-xl-grow-0{flex-grow:0!important}html .flex-xl-grow-1,html[data-netbox-color-mode=dark] .flex-xl-grow-1,html[data-netbox-color-mode=light] .flex-xl-grow-1{flex-grow:1!important}html .flex-xl-shrink-0,html[data-netbox-color-mode=dark] .flex-xl-shrink-0,html[data-netbox-color-mode=light] .flex-xl-shrink-0{flex-shrink:0!important}html .flex-xl-shrink-1,html[data-netbox-color-mode=dark] .flex-xl-shrink-1,html[data-netbox-color-mode=light] .flex-xl-shrink-1{flex-shrink:1!important}html .flex-xl-wrap,html[data-netbox-color-mode=dark] .flex-xl-wrap,html[data-netbox-color-mode=light] .flex-xl-wrap{flex-wrap:wrap!important}html .flex-xl-nowrap,html[data-netbox-color-mode=dark] .flex-xl-nowrap,html[data-netbox-color-mode=light] .flex-xl-nowrap{flex-wrap:nowrap!important}html .flex-xl-wrap-reverse,html[data-netbox-color-mode=dark] .flex-xl-wrap-reverse,html[data-netbox-color-mode=light] .flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}html .gap-xl-0,html[data-netbox-color-mode=dark] .gap-xl-0,html[data-netbox-color-mode=light] .gap-xl-0{gap:0!important}html .gap-xl-1,html[data-netbox-color-mode=dark] .gap-xl-1,html[data-netbox-color-mode=light] .gap-xl-1{gap:.25rem!important}html .gap-xl-2,html[data-netbox-color-mode=dark] .gap-xl-2,html[data-netbox-color-mode=light] .gap-xl-2{gap:.5rem!important}html .gap-xl-3,html[data-netbox-color-mode=dark] .gap-xl-3,html[data-netbox-color-mode=light] .gap-xl-3{gap:1rem!important}html .gap-xl-4,html[data-netbox-color-mode=dark] .gap-xl-4,html[data-netbox-color-mode=light] .gap-xl-4{gap:1.5rem!important}html .gap-xl-5,html[data-netbox-color-mode=dark] .gap-xl-5,html[data-netbox-color-mode=light] .gap-xl-5{gap:3rem!important}html .justify-content-xl-start,html[data-netbox-color-mode=dark] .justify-content-xl-start,html[data-netbox-color-mode=light] .justify-content-xl-start{justify-content:flex-start!important}html .justify-content-xl-end,html[data-netbox-color-mode=dark] .justify-content-xl-end,html[data-netbox-color-mode=light] .justify-content-xl-end{justify-content:flex-end!important}html .justify-content-xl-center,html[data-netbox-color-mode=dark] .justify-content-xl-center,html[data-netbox-color-mode=light] .justify-content-xl-center{justify-content:center!important}html .justify-content-xl-between,html[data-netbox-color-mode=dark] .justify-content-xl-between,html[data-netbox-color-mode=light] .justify-content-xl-between{justify-content:space-between!important}html .justify-content-xl-around,html[data-netbox-color-mode=dark] .justify-content-xl-around,html[data-netbox-color-mode=light] .justify-content-xl-around{justify-content:space-around!important}html .justify-content-xl-evenly,html[data-netbox-color-mode=dark] .justify-content-xl-evenly,html[data-netbox-color-mode=light] .justify-content-xl-evenly{justify-content:space-evenly!important}html .align-items-xl-start,html[data-netbox-color-mode=dark] .align-items-xl-start,html[data-netbox-color-mode=light] .align-items-xl-start{align-items:flex-start!important}html .align-items-xl-end,html[data-netbox-color-mode=dark] .align-items-xl-end,html[data-netbox-color-mode=light] .align-items-xl-end{align-items:flex-end!important}html .align-items-xl-center,html[data-netbox-color-mode=dark] .align-items-xl-center,html[data-netbox-color-mode=light] .align-items-xl-center{align-items:center!important}html .align-items-xl-baseline,html[data-netbox-color-mode=dark] .align-items-xl-baseline,html[data-netbox-color-mode=light] .align-items-xl-baseline{align-items:baseline!important}html .align-items-xl-stretch,html[data-netbox-color-mode=dark] .align-items-xl-stretch,html[data-netbox-color-mode=light] .align-items-xl-stretch{align-items:stretch!important}html .align-content-xl-start,html[data-netbox-color-mode=dark] .align-content-xl-start,html[data-netbox-color-mode=light] .align-content-xl-start{align-content:flex-start!important}html .align-content-xl-end,html[data-netbox-color-mode=dark] .align-content-xl-end,html[data-netbox-color-mode=light] .align-content-xl-end{align-content:flex-end!important}html .align-content-xl-center,html[data-netbox-color-mode=dark] .align-content-xl-center,html[data-netbox-color-mode=light] .align-content-xl-center{align-content:center!important}html .align-content-xl-between,html[data-netbox-color-mode=dark] .align-content-xl-between,html[data-netbox-color-mode=light] .align-content-xl-between{align-content:space-between!important}html .align-content-xl-around,html[data-netbox-color-mode=dark] .align-content-xl-around,html[data-netbox-color-mode=light] .align-content-xl-around{align-content:space-around!important}html .align-content-xl-stretch,html[data-netbox-color-mode=dark] .align-content-xl-stretch,html[data-netbox-color-mode=light] .align-content-xl-stretch{align-content:stretch!important}html .align-self-xl-auto,html[data-netbox-color-mode=dark] .align-self-xl-auto,html[data-netbox-color-mode=light] .align-self-xl-auto{align-self:auto!important}html .align-self-xl-start,html[data-netbox-color-mode=dark] .align-self-xl-start,html[data-netbox-color-mode=light] .align-self-xl-start{align-self:flex-start!important}html .align-self-xl-end,html[data-netbox-color-mode=dark] .align-self-xl-end,html[data-netbox-color-mode=light] .align-self-xl-end{align-self:flex-end!important}html .align-self-xl-center,html[data-netbox-color-mode=dark] .align-self-xl-center,html[data-netbox-color-mode=light] .align-self-xl-center{align-self:center!important}html .align-self-xl-baseline,html[data-netbox-color-mode=dark] .align-self-xl-baseline,html[data-netbox-color-mode=light] .align-self-xl-baseline{align-self:baseline!important}html .align-self-xl-stretch,html[data-netbox-color-mode=dark] .align-self-xl-stretch,html[data-netbox-color-mode=light] .align-self-xl-stretch{align-self:stretch!important}html .order-xl-first,html[data-netbox-color-mode=dark] .order-xl-first,html[data-netbox-color-mode=light] .order-xl-first{order:-1!important}html .order-xl-0,html[data-netbox-color-mode=dark] .order-xl-0,html[data-netbox-color-mode=light] .order-xl-0{order:0!important}html .order-xl-1,html[data-netbox-color-mode=dark] .order-xl-1,html[data-netbox-color-mode=light] .order-xl-1{order:1!important}html .order-xl-2,html[data-netbox-color-mode=dark] .order-xl-2,html[data-netbox-color-mode=light] .order-xl-2{order:2!important}html .order-xl-3,html[data-netbox-color-mode=dark] .order-xl-3,html[data-netbox-color-mode=light] .order-xl-3{order:3!important}html .order-xl-4,html[data-netbox-color-mode=dark] .order-xl-4,html[data-netbox-color-mode=light] .order-xl-4{order:4!important}html .order-xl-5,html[data-netbox-color-mode=dark] .order-xl-5,html[data-netbox-color-mode=light] .order-xl-5{order:5!important}html .order-xl-last,html[data-netbox-color-mode=dark] .order-xl-last,html[data-netbox-color-mode=light] .order-xl-last{order:6!important}html .m-xl-0,html[data-netbox-color-mode=dark] .m-xl-0,html[data-netbox-color-mode=light] .m-xl-0{margin:0!important}html .m-xl-1,html[data-netbox-color-mode=dark] .m-xl-1,html[data-netbox-color-mode=light] .m-xl-1{margin:.25rem!important}html .m-xl-2,html[data-netbox-color-mode=dark] .m-xl-2,html[data-netbox-color-mode=light] .m-xl-2{margin:.5rem!important}html .m-xl-3,html[data-netbox-color-mode=dark] .m-xl-3,html[data-netbox-color-mode=light] .m-xl-3{margin:1rem!important}html .m-xl-4,html[data-netbox-color-mode=dark] .m-xl-4,html[data-netbox-color-mode=light] .m-xl-4{margin:1.5rem!important}html .m-xl-5,html[data-netbox-color-mode=dark] .m-xl-5,html[data-netbox-color-mode=light] .m-xl-5{margin:3rem!important}html .m-xl-auto,html[data-netbox-color-mode=dark] .m-xl-auto,html[data-netbox-color-mode=light] .m-xl-auto{margin:auto!important}html .mx-xl-0,html[data-netbox-color-mode=dark] .mx-xl-0,html[data-netbox-color-mode=light] .mx-xl-0{margin-right:0!important;margin-left:0!important}html .mx-xl-1,html[data-netbox-color-mode=dark] .mx-xl-1,html[data-netbox-color-mode=light] .mx-xl-1{margin-right:.25rem!important;margin-left:.25rem!important}html .mx-xl-2,html[data-netbox-color-mode=dark] .mx-xl-2,html[data-netbox-color-mode=light] .mx-xl-2{margin-right:.5rem!important;margin-left:.5rem!important}html .mx-xl-3,html[data-netbox-color-mode=dark] .mx-xl-3,html[data-netbox-color-mode=light] .mx-xl-3{margin-right:1rem!important;margin-left:1rem!important}html .mx-xl-4,html[data-netbox-color-mode=dark] .mx-xl-4,html[data-netbox-color-mode=light] .mx-xl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}html .mx-xl-5,html[data-netbox-color-mode=dark] .mx-xl-5,html[data-netbox-color-mode=light] .mx-xl-5{margin-right:3rem!important;margin-left:3rem!important}html .mx-xl-auto,html[data-netbox-color-mode=dark] .mx-xl-auto,html[data-netbox-color-mode=light] .mx-xl-auto{margin-right:auto!important;margin-left:auto!important}html .my-xl-0,html[data-netbox-color-mode=dark] .my-xl-0,html[data-netbox-color-mode=light] .my-xl-0{margin-top:0!important;margin-bottom:0!important}html .my-xl-1,html[data-netbox-color-mode=dark] .my-xl-1,html[data-netbox-color-mode=light] .my-xl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}html .my-xl-2,html[data-netbox-color-mode=dark] .my-xl-2,html[data-netbox-color-mode=light] .my-xl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}html .my-xl-3,html[data-netbox-color-mode=dark] .my-xl-3,html[data-netbox-color-mode=light] .my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important}html .my-xl-4,html[data-netbox-color-mode=dark] .my-xl-4,html[data-netbox-color-mode=light] .my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}html .my-xl-5,html[data-netbox-color-mode=dark] .my-xl-5,html[data-netbox-color-mode=light] .my-xl-5{margin-top:3rem!important;margin-bottom:3rem!important}html .my-xl-auto,html[data-netbox-color-mode=dark] .my-xl-auto,html[data-netbox-color-mode=light] .my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}html .mt-xl-0,html[data-netbox-color-mode=dark] .mt-xl-0,html[data-netbox-color-mode=light] .mt-xl-0{margin-top:0!important}html .mt-xl-1,html[data-netbox-color-mode=dark] .mt-xl-1,html[data-netbox-color-mode=light] .mt-xl-1{margin-top:.25rem!important}html .mt-xl-2,html[data-netbox-color-mode=dark] .mt-xl-2,html[data-netbox-color-mode=light] .mt-xl-2{margin-top:.5rem!important}html .mt-xl-3,html[data-netbox-color-mode=dark] .mt-xl-3,html[data-netbox-color-mode=light] .mt-xl-3{margin-top:1rem!important}html .mt-xl-4,html[data-netbox-color-mode=dark] .mt-xl-4,html[data-netbox-color-mode=light] .mt-xl-4{margin-top:1.5rem!important}html .mt-xl-5,html[data-netbox-color-mode=dark] .mt-xl-5,html[data-netbox-color-mode=light] .mt-xl-5{margin-top:3rem!important}html .mt-xl-auto,html[data-netbox-color-mode=dark] .mt-xl-auto,html[data-netbox-color-mode=light] .mt-xl-auto{margin-top:auto!important}html .me-xl-0,html[data-netbox-color-mode=dark] .me-xl-0,html[data-netbox-color-mode=light] .me-xl-0{margin-right:0!important}html .me-xl-1,html[data-netbox-color-mode=dark] .me-xl-1,html[data-netbox-color-mode=light] .me-xl-1{margin-right:.25rem!important}html .me-xl-2,html[data-netbox-color-mode=dark] .me-xl-2,html[data-netbox-color-mode=light] .me-xl-2{margin-right:.5rem!important}html .me-xl-3,html[data-netbox-color-mode=dark] .me-xl-3,html[data-netbox-color-mode=light] .me-xl-3{margin-right:1rem!important}html .me-xl-4,html[data-netbox-color-mode=dark] .me-xl-4,html[data-netbox-color-mode=light] .me-xl-4{margin-right:1.5rem!important}html .me-xl-5,html[data-netbox-color-mode=dark] .me-xl-5,html[data-netbox-color-mode=light] .me-xl-5{margin-right:3rem!important}html .me-xl-auto,html[data-netbox-color-mode=dark] .me-xl-auto,html[data-netbox-color-mode=light] .me-xl-auto{margin-right:auto!important}html .mb-xl-0,html[data-netbox-color-mode=dark] .mb-xl-0,html[data-netbox-color-mode=light] .mb-xl-0{margin-bottom:0!important}html .mb-xl-1,html[data-netbox-color-mode=dark] .mb-xl-1,html[data-netbox-color-mode=light] .mb-xl-1{margin-bottom:.25rem!important}html .mb-xl-2,html[data-netbox-color-mode=dark] .mb-xl-2,html[data-netbox-color-mode=light] .mb-xl-2{margin-bottom:.5rem!important}html .mb-xl-3,html[data-netbox-color-mode=dark] .mb-xl-3,html[data-netbox-color-mode=light] .mb-xl-3{margin-bottom:1rem!important}html .mb-xl-4,html[data-netbox-color-mode=dark] .mb-xl-4,html[data-netbox-color-mode=light] .mb-xl-4{margin-bottom:1.5rem!important}html .mb-xl-5,html[data-netbox-color-mode=dark] .mb-xl-5,html[data-netbox-color-mode=light] .mb-xl-5{margin-bottom:3rem!important}html .mb-xl-auto,html[data-netbox-color-mode=dark] .mb-xl-auto,html[data-netbox-color-mode=light] .mb-xl-auto{margin-bottom:auto!important}html .ms-xl-0,html[data-netbox-color-mode=dark] .ms-xl-0,html[data-netbox-color-mode=light] .ms-xl-0{margin-left:0!important}html .ms-xl-1,html[data-netbox-color-mode=dark] .ms-xl-1,html[data-netbox-color-mode=light] .ms-xl-1{margin-left:.25rem!important}html .ms-xl-2,html[data-netbox-color-mode=dark] .ms-xl-2,html[data-netbox-color-mode=light] .ms-xl-2{margin-left:.5rem!important}html .ms-xl-3,html[data-netbox-color-mode=dark] .ms-xl-3,html[data-netbox-color-mode=light] .ms-xl-3{margin-left:1rem!important}html .ms-xl-4,html[data-netbox-color-mode=dark] .ms-xl-4,html[data-netbox-color-mode=light] .ms-xl-4{margin-left:1.5rem!important}html .ms-xl-5,html[data-netbox-color-mode=dark] .ms-xl-5,html[data-netbox-color-mode=light] .ms-xl-5{margin-left:3rem!important}html .ms-xl-auto,html[data-netbox-color-mode=dark] .ms-xl-auto,html[data-netbox-color-mode=light] .ms-xl-auto{margin-left:auto!important}html .p-xl-0,html[data-netbox-color-mode=dark] .p-xl-0,html[data-netbox-color-mode=light] .p-xl-0{padding:0!important}html .p-xl-1,html[data-netbox-color-mode=dark] .p-xl-1,html[data-netbox-color-mode=light] .p-xl-1{padding:.25rem!important}html .p-xl-2,html[data-netbox-color-mode=dark] .p-xl-2,html[data-netbox-color-mode=light] .p-xl-2{padding:.5rem!important}html .p-xl-3,html[data-netbox-color-mode=dark] .p-xl-3,html[data-netbox-color-mode=light] .p-xl-3{padding:1rem!important}html .p-xl-4,html[data-netbox-color-mode=dark] .p-xl-4,html[data-netbox-color-mode=light] .p-xl-4{padding:1.5rem!important}html .p-xl-5,html[data-netbox-color-mode=dark] .p-xl-5,html[data-netbox-color-mode=light] .p-xl-5{padding:3rem!important}html .px-xl-0,html[data-netbox-color-mode=dark] .px-xl-0,html[data-netbox-color-mode=light] .px-xl-0{padding-right:0!important;padding-left:0!important}html .px-xl-1,html[data-netbox-color-mode=dark] .px-xl-1,html[data-netbox-color-mode=light] .px-xl-1{padding-right:.25rem!important;padding-left:.25rem!important}html .px-xl-2,html[data-netbox-color-mode=dark] .px-xl-2,html[data-netbox-color-mode=light] .px-xl-2{padding-right:.5rem!important;padding-left:.5rem!important}html .px-xl-3,html[data-netbox-color-mode=dark] .px-xl-3,html[data-netbox-color-mode=light] .px-xl-3{padding-right:1rem!important;padding-left:1rem!important}html .px-xl-4,html[data-netbox-color-mode=dark] .px-xl-4,html[data-netbox-color-mode=light] .px-xl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}html .px-xl-5,html[data-netbox-color-mode=dark] .px-xl-5,html[data-netbox-color-mode=light] .px-xl-5{padding-right:3rem!important;padding-left:3rem!important}html .py-xl-0,html[data-netbox-color-mode=dark] .py-xl-0,html[data-netbox-color-mode=light] .py-xl-0{padding-top:0!important;padding-bottom:0!important}html .py-xl-1,html[data-netbox-color-mode=dark] .py-xl-1,html[data-netbox-color-mode=light] .py-xl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}html .py-xl-2,html[data-netbox-color-mode=dark] .py-xl-2,html[data-netbox-color-mode=light] .py-xl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}html .py-xl-3,html[data-netbox-color-mode=dark] .py-xl-3,html[data-netbox-color-mode=light] .py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important}html .py-xl-4,html[data-netbox-color-mode=dark] .py-xl-4,html[data-netbox-color-mode=light] .py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}html .py-xl-5,html[data-netbox-color-mode=dark] .py-xl-5,html[data-netbox-color-mode=light] .py-xl-5{padding-top:3rem!important;padding-bottom:3rem!important}html .pt-xl-0,html[data-netbox-color-mode=dark] .pt-xl-0,html[data-netbox-color-mode=light] .pt-xl-0{padding-top:0!important}html .pt-xl-1,html[data-netbox-color-mode=dark] .pt-xl-1,html[data-netbox-color-mode=light] .pt-xl-1{padding-top:.25rem!important}html .pt-xl-2,html[data-netbox-color-mode=dark] .pt-xl-2,html[data-netbox-color-mode=light] .pt-xl-2{padding-top:.5rem!important}html .pt-xl-3,html[data-netbox-color-mode=dark] .pt-xl-3,html[data-netbox-color-mode=light] .pt-xl-3{padding-top:1rem!important}html .pt-xl-4,html[data-netbox-color-mode=dark] .pt-xl-4,html[data-netbox-color-mode=light] .pt-xl-4{padding-top:1.5rem!important}html .pt-xl-5,html[data-netbox-color-mode=dark] .pt-xl-5,html[data-netbox-color-mode=light] .pt-xl-5{padding-top:3rem!important}html .pe-xl-0,html[data-netbox-color-mode=dark] .pe-xl-0,html[data-netbox-color-mode=light] .pe-xl-0{padding-right:0!important}html .pe-xl-1,html[data-netbox-color-mode=dark] .pe-xl-1,html[data-netbox-color-mode=light] .pe-xl-1{padding-right:.25rem!important}html .pe-xl-2,html[data-netbox-color-mode=dark] .pe-xl-2,html[data-netbox-color-mode=light] .pe-xl-2{padding-right:.5rem!important}html .pe-xl-3,html[data-netbox-color-mode=dark] .pe-xl-3,html[data-netbox-color-mode=light] .pe-xl-3{padding-right:1rem!important}html .pe-xl-4,html[data-netbox-color-mode=dark] .pe-xl-4,html[data-netbox-color-mode=light] .pe-xl-4{padding-right:1.5rem!important}html .pe-xl-5,html[data-netbox-color-mode=dark] .pe-xl-5,html[data-netbox-color-mode=light] .pe-xl-5{padding-right:3rem!important}html .pb-xl-0,html[data-netbox-color-mode=dark] .pb-xl-0,html[data-netbox-color-mode=light] .pb-xl-0{padding-bottom:0!important}html .pb-xl-1,html[data-netbox-color-mode=dark] .pb-xl-1,html[data-netbox-color-mode=light] .pb-xl-1{padding-bottom:.25rem!important}html .pb-xl-2,html[data-netbox-color-mode=dark] .pb-xl-2,html[data-netbox-color-mode=light] .pb-xl-2{padding-bottom:.5rem!important}html .pb-xl-3,html[data-netbox-color-mode=dark] .pb-xl-3,html[data-netbox-color-mode=light] .pb-xl-3{padding-bottom:1rem!important}html .pb-xl-4,html[data-netbox-color-mode=dark] .pb-xl-4,html[data-netbox-color-mode=light] .pb-xl-4{padding-bottom:1.5rem!important}html .pb-xl-5,html[data-netbox-color-mode=dark] .pb-xl-5,html[data-netbox-color-mode=light] .pb-xl-5{padding-bottom:3rem!important}html .ps-xl-0,html[data-netbox-color-mode=dark] .ps-xl-0,html[data-netbox-color-mode=light] .ps-xl-0{padding-left:0!important}html .ps-xl-1,html[data-netbox-color-mode=dark] .ps-xl-1,html[data-netbox-color-mode=light] .ps-xl-1{padding-left:.25rem!important}html .ps-xl-2,html[data-netbox-color-mode=dark] .ps-xl-2,html[data-netbox-color-mode=light] .ps-xl-2{padding-left:.5rem!important}html .ps-xl-3,html[data-netbox-color-mode=dark] .ps-xl-3,html[data-netbox-color-mode=light] .ps-xl-3{padding-left:1rem!important}html .ps-xl-4,html[data-netbox-color-mode=dark] .ps-xl-4,html[data-netbox-color-mode=light] .ps-xl-4{padding-left:1.5rem!important}html .ps-xl-5,html[data-netbox-color-mode=dark] .ps-xl-5,html[data-netbox-color-mode=light] .ps-xl-5{padding-left:3rem!important}html .text-xl-start,html[data-netbox-color-mode=dark] .text-xl-start,html[data-netbox-color-mode=light] .text-xl-start{text-align:left!important}html .text-xl-end,html[data-netbox-color-mode=dark] .text-xl-end,html[data-netbox-color-mode=light] .text-xl-end{text-align:right!important}html .text-xl-center,html[data-netbox-color-mode=dark] .text-xl-center,html[data-netbox-color-mode=light] .text-xl-center{text-align:center!important}}@media print and (min-width: 1400px){html .float-xxl-start,html[data-netbox-color-mode=dark] .float-xxl-start,html[data-netbox-color-mode=light] .float-xxl-start{float:left!important}html .float-xxl-end,html[data-netbox-color-mode=dark] .float-xxl-end,html[data-netbox-color-mode=light] .float-xxl-end{float:right!important}html .float-xxl-none,html[data-netbox-color-mode=dark] .float-xxl-none,html[data-netbox-color-mode=light] .float-xxl-none{float:none!important}html .d-xxl-inline,html[data-netbox-color-mode=dark] .d-xxl-inline,html[data-netbox-color-mode=light] .d-xxl-inline{display:inline!important}html .d-xxl-inline-block,html[data-netbox-color-mode=dark] .d-xxl-inline-block,html[data-netbox-color-mode=light] .d-xxl-inline-block{display:inline-block!important}html .d-xxl-block,html[data-netbox-color-mode=dark] .d-xxl-block,html[data-netbox-color-mode=light] .d-xxl-block{display:block!important}html .d-xxl-grid,html[data-netbox-color-mode=dark] .d-xxl-grid,html[data-netbox-color-mode=light] .d-xxl-grid{display:grid!important}html .d-xxl-table,html[data-netbox-color-mode=dark] .d-xxl-table,html[data-netbox-color-mode=light] .d-xxl-table{display:table!important}html .d-xxl-table-row,html[data-netbox-color-mode=dark] .d-xxl-table-row,html[data-netbox-color-mode=light] .d-xxl-table-row{display:table-row!important}html .d-xxl-table-cell,html[data-netbox-color-mode=dark] .d-xxl-table-cell,html[data-netbox-color-mode=light] .d-xxl-table-cell{display:table-cell!important}html .d-xxl-flex,html[data-netbox-color-mode=dark] .d-xxl-flex,html[data-netbox-color-mode=light] .d-xxl-flex{display:flex!important}html .d-xxl-inline-flex,html[data-netbox-color-mode=dark] .d-xxl-inline-flex,html[data-netbox-color-mode=light] .d-xxl-inline-flex{display:inline-flex!important}html .d-xxl-none,html[data-netbox-color-mode=dark] .d-xxl-none,html[data-netbox-color-mode=light] .d-xxl-none{display:none!important}html .flex-xxl-fill,html[data-netbox-color-mode=dark] .flex-xxl-fill,html[data-netbox-color-mode=light] .flex-xxl-fill{flex:1 1 auto!important}html .flex-xxl-row,html[data-netbox-color-mode=dark] .flex-xxl-row,html[data-netbox-color-mode=light] .flex-xxl-row{flex-direction:row!important}html .flex-xxl-column,html[data-netbox-color-mode=dark] .flex-xxl-column,html[data-netbox-color-mode=light] .flex-xxl-column{flex-direction:column!important}html .flex-xxl-row-reverse,html[data-netbox-color-mode=dark] .flex-xxl-row-reverse,html[data-netbox-color-mode=light] .flex-xxl-row-reverse{flex-direction:row-reverse!important}html .flex-xxl-column-reverse,html[data-netbox-color-mode=dark] .flex-xxl-column-reverse,html[data-netbox-color-mode=light] .flex-xxl-column-reverse{flex-direction:column-reverse!important}html .flex-xxl-grow-0,html[data-netbox-color-mode=dark] .flex-xxl-grow-0,html[data-netbox-color-mode=light] .flex-xxl-grow-0{flex-grow:0!important}html .flex-xxl-grow-1,html[data-netbox-color-mode=dark] .flex-xxl-grow-1,html[data-netbox-color-mode=light] .flex-xxl-grow-1{flex-grow:1!important}html .flex-xxl-shrink-0,html[data-netbox-color-mode=dark] .flex-xxl-shrink-0,html[data-netbox-color-mode=light] .flex-xxl-shrink-0{flex-shrink:0!important}html .flex-xxl-shrink-1,html[data-netbox-color-mode=dark] .flex-xxl-shrink-1,html[data-netbox-color-mode=light] .flex-xxl-shrink-1{flex-shrink:1!important}html .flex-xxl-wrap,html[data-netbox-color-mode=dark] .flex-xxl-wrap,html[data-netbox-color-mode=light] .flex-xxl-wrap{flex-wrap:wrap!important}html .flex-xxl-nowrap,html[data-netbox-color-mode=dark] .flex-xxl-nowrap,html[data-netbox-color-mode=light] .flex-xxl-nowrap{flex-wrap:nowrap!important}html .flex-xxl-wrap-reverse,html[data-netbox-color-mode=dark] .flex-xxl-wrap-reverse,html[data-netbox-color-mode=light] .flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}html .gap-xxl-0,html[data-netbox-color-mode=dark] .gap-xxl-0,html[data-netbox-color-mode=light] .gap-xxl-0{gap:0!important}html .gap-xxl-1,html[data-netbox-color-mode=dark] .gap-xxl-1,html[data-netbox-color-mode=light] .gap-xxl-1{gap:.25rem!important}html .gap-xxl-2,html[data-netbox-color-mode=dark] .gap-xxl-2,html[data-netbox-color-mode=light] .gap-xxl-2{gap:.5rem!important}html .gap-xxl-3,html[data-netbox-color-mode=dark] .gap-xxl-3,html[data-netbox-color-mode=light] .gap-xxl-3{gap:1rem!important}html .gap-xxl-4,html[data-netbox-color-mode=dark] .gap-xxl-4,html[data-netbox-color-mode=light] .gap-xxl-4{gap:1.5rem!important}html .gap-xxl-5,html[data-netbox-color-mode=dark] .gap-xxl-5,html[data-netbox-color-mode=light] .gap-xxl-5{gap:3rem!important}html .justify-content-xxl-start,html[data-netbox-color-mode=dark] .justify-content-xxl-start,html[data-netbox-color-mode=light] .justify-content-xxl-start{justify-content:flex-start!important}html .justify-content-xxl-end,html[data-netbox-color-mode=dark] .justify-content-xxl-end,html[data-netbox-color-mode=light] .justify-content-xxl-end{justify-content:flex-end!important}html .justify-content-xxl-center,html[data-netbox-color-mode=dark] .justify-content-xxl-center,html[data-netbox-color-mode=light] .justify-content-xxl-center{justify-content:center!important}html .justify-content-xxl-between,html[data-netbox-color-mode=dark] .justify-content-xxl-between,html[data-netbox-color-mode=light] .justify-content-xxl-between{justify-content:space-between!important}html .justify-content-xxl-around,html[data-netbox-color-mode=dark] .justify-content-xxl-around,html[data-netbox-color-mode=light] .justify-content-xxl-around{justify-content:space-around!important}html .justify-content-xxl-evenly,html[data-netbox-color-mode=dark] .justify-content-xxl-evenly,html[data-netbox-color-mode=light] .justify-content-xxl-evenly{justify-content:space-evenly!important}html .align-items-xxl-start,html[data-netbox-color-mode=dark] .align-items-xxl-start,html[data-netbox-color-mode=light] .align-items-xxl-start{align-items:flex-start!important}html .align-items-xxl-end,html[data-netbox-color-mode=dark] .align-items-xxl-end,html[data-netbox-color-mode=light] .align-items-xxl-end{align-items:flex-end!important}html .align-items-xxl-center,html[data-netbox-color-mode=dark] .align-items-xxl-center,html[data-netbox-color-mode=light] .align-items-xxl-center{align-items:center!important}html .align-items-xxl-baseline,html[data-netbox-color-mode=dark] .align-items-xxl-baseline,html[data-netbox-color-mode=light] .align-items-xxl-baseline{align-items:baseline!important}html .align-items-xxl-stretch,html[data-netbox-color-mode=dark] .align-items-xxl-stretch,html[data-netbox-color-mode=light] .align-items-xxl-stretch{align-items:stretch!important}html .align-content-xxl-start,html[data-netbox-color-mode=dark] .align-content-xxl-start,html[data-netbox-color-mode=light] .align-content-xxl-start{align-content:flex-start!important}html .align-content-xxl-end,html[data-netbox-color-mode=dark] .align-content-xxl-end,html[data-netbox-color-mode=light] .align-content-xxl-end{align-content:flex-end!important}html .align-content-xxl-center,html[data-netbox-color-mode=dark] .align-content-xxl-center,html[data-netbox-color-mode=light] .align-content-xxl-center{align-content:center!important}html .align-content-xxl-between,html[data-netbox-color-mode=dark] .align-content-xxl-between,html[data-netbox-color-mode=light] .align-content-xxl-between{align-content:space-between!important}html .align-content-xxl-around,html[data-netbox-color-mode=dark] .align-content-xxl-around,html[data-netbox-color-mode=light] .align-content-xxl-around{align-content:space-around!important}html .align-content-xxl-stretch,html[data-netbox-color-mode=dark] .align-content-xxl-stretch,html[data-netbox-color-mode=light] .align-content-xxl-stretch{align-content:stretch!important}html .align-self-xxl-auto,html[data-netbox-color-mode=dark] .align-self-xxl-auto,html[data-netbox-color-mode=light] .align-self-xxl-auto{align-self:auto!important}html .align-self-xxl-start,html[data-netbox-color-mode=dark] .align-self-xxl-start,html[data-netbox-color-mode=light] .align-self-xxl-start{align-self:flex-start!important}html .align-self-xxl-end,html[data-netbox-color-mode=dark] .align-self-xxl-end,html[data-netbox-color-mode=light] .align-self-xxl-end{align-self:flex-end!important}html .align-self-xxl-center,html[data-netbox-color-mode=dark] .align-self-xxl-center,html[data-netbox-color-mode=light] .align-self-xxl-center{align-self:center!important}html .align-self-xxl-baseline,html[data-netbox-color-mode=dark] .align-self-xxl-baseline,html[data-netbox-color-mode=light] .align-self-xxl-baseline{align-self:baseline!important}html .align-self-xxl-stretch,html[data-netbox-color-mode=dark] .align-self-xxl-stretch,html[data-netbox-color-mode=light] .align-self-xxl-stretch{align-self:stretch!important}html .order-xxl-first,html[data-netbox-color-mode=dark] .order-xxl-first,html[data-netbox-color-mode=light] .order-xxl-first{order:-1!important}html .order-xxl-0,html[data-netbox-color-mode=dark] .order-xxl-0,html[data-netbox-color-mode=light] .order-xxl-0{order:0!important}html .order-xxl-1,html[data-netbox-color-mode=dark] .order-xxl-1,html[data-netbox-color-mode=light] .order-xxl-1{order:1!important}html .order-xxl-2,html[data-netbox-color-mode=dark] .order-xxl-2,html[data-netbox-color-mode=light] .order-xxl-2{order:2!important}html .order-xxl-3,html[data-netbox-color-mode=dark] .order-xxl-3,html[data-netbox-color-mode=light] .order-xxl-3{order:3!important}html .order-xxl-4,html[data-netbox-color-mode=dark] .order-xxl-4,html[data-netbox-color-mode=light] .order-xxl-4{order:4!important}html .order-xxl-5,html[data-netbox-color-mode=dark] .order-xxl-5,html[data-netbox-color-mode=light] .order-xxl-5{order:5!important}html .order-xxl-last,html[data-netbox-color-mode=dark] .order-xxl-last,html[data-netbox-color-mode=light] .order-xxl-last{order:6!important}html .m-xxl-0,html[data-netbox-color-mode=dark] .m-xxl-0,html[data-netbox-color-mode=light] .m-xxl-0{margin:0!important}html .m-xxl-1,html[data-netbox-color-mode=dark] .m-xxl-1,html[data-netbox-color-mode=light] .m-xxl-1{margin:.25rem!important}html .m-xxl-2,html[data-netbox-color-mode=dark] .m-xxl-2,html[data-netbox-color-mode=light] .m-xxl-2{margin:.5rem!important}html .m-xxl-3,html[data-netbox-color-mode=dark] .m-xxl-3,html[data-netbox-color-mode=light] .m-xxl-3{margin:1rem!important}html .m-xxl-4,html[data-netbox-color-mode=dark] .m-xxl-4,html[data-netbox-color-mode=light] .m-xxl-4{margin:1.5rem!important}html .m-xxl-5,html[data-netbox-color-mode=dark] .m-xxl-5,html[data-netbox-color-mode=light] .m-xxl-5{margin:3rem!important}html .m-xxl-auto,html[data-netbox-color-mode=dark] .m-xxl-auto,html[data-netbox-color-mode=light] .m-xxl-auto{margin:auto!important}html .mx-xxl-0,html[data-netbox-color-mode=dark] .mx-xxl-0,html[data-netbox-color-mode=light] .mx-xxl-0{margin-right:0!important;margin-left:0!important}html .mx-xxl-1,html[data-netbox-color-mode=dark] .mx-xxl-1,html[data-netbox-color-mode=light] .mx-xxl-1{margin-right:.25rem!important;margin-left:.25rem!important}html .mx-xxl-2,html[data-netbox-color-mode=dark] .mx-xxl-2,html[data-netbox-color-mode=light] .mx-xxl-2{margin-right:.5rem!important;margin-left:.5rem!important}html .mx-xxl-3,html[data-netbox-color-mode=dark] .mx-xxl-3,html[data-netbox-color-mode=light] .mx-xxl-3{margin-right:1rem!important;margin-left:1rem!important}html .mx-xxl-4,html[data-netbox-color-mode=dark] .mx-xxl-4,html[data-netbox-color-mode=light] .mx-xxl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}html .mx-xxl-5,html[data-netbox-color-mode=dark] .mx-xxl-5,html[data-netbox-color-mode=light] .mx-xxl-5{margin-right:3rem!important;margin-left:3rem!important}html .mx-xxl-auto,html[data-netbox-color-mode=dark] .mx-xxl-auto,html[data-netbox-color-mode=light] .mx-xxl-auto{margin-right:auto!important;margin-left:auto!important}html .my-xxl-0,html[data-netbox-color-mode=dark] .my-xxl-0,html[data-netbox-color-mode=light] .my-xxl-0{margin-top:0!important;margin-bottom:0!important}html .my-xxl-1,html[data-netbox-color-mode=dark] .my-xxl-1,html[data-netbox-color-mode=light] .my-xxl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}html .my-xxl-2,html[data-netbox-color-mode=dark] .my-xxl-2,html[data-netbox-color-mode=light] .my-xxl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}html .my-xxl-3,html[data-netbox-color-mode=dark] .my-xxl-3,html[data-netbox-color-mode=light] .my-xxl-3{margin-top:1rem!important;margin-bottom:1rem!important}html .my-xxl-4,html[data-netbox-color-mode=dark] .my-xxl-4,html[data-netbox-color-mode=light] .my-xxl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}html .my-xxl-5,html[data-netbox-color-mode=dark] .my-xxl-5,html[data-netbox-color-mode=light] .my-xxl-5{margin-top:3rem!important;margin-bottom:3rem!important}html .my-xxl-auto,html[data-netbox-color-mode=dark] .my-xxl-auto,html[data-netbox-color-mode=light] .my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important}html .mt-xxl-0,html[data-netbox-color-mode=dark] .mt-xxl-0,html[data-netbox-color-mode=light] .mt-xxl-0{margin-top:0!important}html .mt-xxl-1,html[data-netbox-color-mode=dark] .mt-xxl-1,html[data-netbox-color-mode=light] .mt-xxl-1{margin-top:.25rem!important}html .mt-xxl-2,html[data-netbox-color-mode=dark] .mt-xxl-2,html[data-netbox-color-mode=light] .mt-xxl-2{margin-top:.5rem!important}html .mt-xxl-3,html[data-netbox-color-mode=dark] .mt-xxl-3,html[data-netbox-color-mode=light] .mt-xxl-3{margin-top:1rem!important}html .mt-xxl-4,html[data-netbox-color-mode=dark] .mt-xxl-4,html[data-netbox-color-mode=light] .mt-xxl-4{margin-top:1.5rem!important}html .mt-xxl-5,html[data-netbox-color-mode=dark] .mt-xxl-5,html[data-netbox-color-mode=light] .mt-xxl-5{margin-top:3rem!important}html .mt-xxl-auto,html[data-netbox-color-mode=dark] .mt-xxl-auto,html[data-netbox-color-mode=light] .mt-xxl-auto{margin-top:auto!important}html .me-xxl-0,html[data-netbox-color-mode=dark] .me-xxl-0,html[data-netbox-color-mode=light] .me-xxl-0{margin-right:0!important}html .me-xxl-1,html[data-netbox-color-mode=dark] .me-xxl-1,html[data-netbox-color-mode=light] .me-xxl-1{margin-right:.25rem!important}html .me-xxl-2,html[data-netbox-color-mode=dark] .me-xxl-2,html[data-netbox-color-mode=light] .me-xxl-2{margin-right:.5rem!important}html .me-xxl-3,html[data-netbox-color-mode=dark] .me-xxl-3,html[data-netbox-color-mode=light] .me-xxl-3{margin-right:1rem!important}html .me-xxl-4,html[data-netbox-color-mode=dark] .me-xxl-4,html[data-netbox-color-mode=light] .me-xxl-4{margin-right:1.5rem!important}html .me-xxl-5,html[data-netbox-color-mode=dark] .me-xxl-5,html[data-netbox-color-mode=light] .me-xxl-5{margin-right:3rem!important}html .me-xxl-auto,html[data-netbox-color-mode=dark] .me-xxl-auto,html[data-netbox-color-mode=light] .me-xxl-auto{margin-right:auto!important}html .mb-xxl-0,html[data-netbox-color-mode=dark] .mb-xxl-0,html[data-netbox-color-mode=light] .mb-xxl-0{margin-bottom:0!important}html .mb-xxl-1,html[data-netbox-color-mode=dark] .mb-xxl-1,html[data-netbox-color-mode=light] .mb-xxl-1{margin-bottom:.25rem!important}html .mb-xxl-2,html[data-netbox-color-mode=dark] .mb-xxl-2,html[data-netbox-color-mode=light] .mb-xxl-2{margin-bottom:.5rem!important}html .mb-xxl-3,html[data-netbox-color-mode=dark] .mb-xxl-3,html[data-netbox-color-mode=light] .mb-xxl-3{margin-bottom:1rem!important}html .mb-xxl-4,html[data-netbox-color-mode=dark] .mb-xxl-4,html[data-netbox-color-mode=light] .mb-xxl-4{margin-bottom:1.5rem!important}html .mb-xxl-5,html[data-netbox-color-mode=dark] .mb-xxl-5,html[data-netbox-color-mode=light] .mb-xxl-5{margin-bottom:3rem!important}html .mb-xxl-auto,html[data-netbox-color-mode=dark] .mb-xxl-auto,html[data-netbox-color-mode=light] .mb-xxl-auto{margin-bottom:auto!important}html .ms-xxl-0,html[data-netbox-color-mode=dark] .ms-xxl-0,html[data-netbox-color-mode=light] .ms-xxl-0{margin-left:0!important}html .ms-xxl-1,html[data-netbox-color-mode=dark] .ms-xxl-1,html[data-netbox-color-mode=light] .ms-xxl-1{margin-left:.25rem!important}html .ms-xxl-2,html[data-netbox-color-mode=dark] .ms-xxl-2,html[data-netbox-color-mode=light] .ms-xxl-2{margin-left:.5rem!important}html .ms-xxl-3,html[data-netbox-color-mode=dark] .ms-xxl-3,html[data-netbox-color-mode=light] .ms-xxl-3{margin-left:1rem!important}html .ms-xxl-4,html[data-netbox-color-mode=dark] .ms-xxl-4,html[data-netbox-color-mode=light] .ms-xxl-4{margin-left:1.5rem!important}html .ms-xxl-5,html[data-netbox-color-mode=dark] .ms-xxl-5,html[data-netbox-color-mode=light] .ms-xxl-5{margin-left:3rem!important}html .ms-xxl-auto,html[data-netbox-color-mode=dark] .ms-xxl-auto,html[data-netbox-color-mode=light] .ms-xxl-auto{margin-left:auto!important}html .p-xxl-0,html[data-netbox-color-mode=dark] .p-xxl-0,html[data-netbox-color-mode=light] .p-xxl-0{padding:0!important}html .p-xxl-1,html[data-netbox-color-mode=dark] .p-xxl-1,html[data-netbox-color-mode=light] .p-xxl-1{padding:.25rem!important}html .p-xxl-2,html[data-netbox-color-mode=dark] .p-xxl-2,html[data-netbox-color-mode=light] .p-xxl-2{padding:.5rem!important}html .p-xxl-3,html[data-netbox-color-mode=dark] .p-xxl-3,html[data-netbox-color-mode=light] .p-xxl-3{padding:1rem!important}html .p-xxl-4,html[data-netbox-color-mode=dark] .p-xxl-4,html[data-netbox-color-mode=light] .p-xxl-4{padding:1.5rem!important}html .p-xxl-5,html[data-netbox-color-mode=dark] .p-xxl-5,html[data-netbox-color-mode=light] .p-xxl-5{padding:3rem!important}html .px-xxl-0,html[data-netbox-color-mode=dark] .px-xxl-0,html[data-netbox-color-mode=light] .px-xxl-0{padding-right:0!important;padding-left:0!important}html .px-xxl-1,html[data-netbox-color-mode=dark] .px-xxl-1,html[data-netbox-color-mode=light] .px-xxl-1{padding-right:.25rem!important;padding-left:.25rem!important}html .px-xxl-2,html[data-netbox-color-mode=dark] .px-xxl-2,html[data-netbox-color-mode=light] .px-xxl-2{padding-right:.5rem!important;padding-left:.5rem!important}html .px-xxl-3,html[data-netbox-color-mode=dark] .px-xxl-3,html[data-netbox-color-mode=light] .px-xxl-3{padding-right:1rem!important;padding-left:1rem!important}html .px-xxl-4,html[data-netbox-color-mode=dark] .px-xxl-4,html[data-netbox-color-mode=light] .px-xxl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}html .px-xxl-5,html[data-netbox-color-mode=dark] .px-xxl-5,html[data-netbox-color-mode=light] .px-xxl-5{padding-right:3rem!important;padding-left:3rem!important}html .py-xxl-0,html[data-netbox-color-mode=dark] .py-xxl-0,html[data-netbox-color-mode=light] .py-xxl-0{padding-top:0!important;padding-bottom:0!important}html .py-xxl-1,html[data-netbox-color-mode=dark] .py-xxl-1,html[data-netbox-color-mode=light] .py-xxl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}html .py-xxl-2,html[data-netbox-color-mode=dark] .py-xxl-2,html[data-netbox-color-mode=light] .py-xxl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}html .py-xxl-3,html[data-netbox-color-mode=dark] .py-xxl-3,html[data-netbox-color-mode=light] .py-xxl-3{padding-top:1rem!important;padding-bottom:1rem!important}html .py-xxl-4,html[data-netbox-color-mode=dark] .py-xxl-4,html[data-netbox-color-mode=light] .py-xxl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}html .py-xxl-5,html[data-netbox-color-mode=dark] .py-xxl-5,html[data-netbox-color-mode=light] .py-xxl-5{padding-top:3rem!important;padding-bottom:3rem!important}html .pt-xxl-0,html[data-netbox-color-mode=dark] .pt-xxl-0,html[data-netbox-color-mode=light] .pt-xxl-0{padding-top:0!important}html .pt-xxl-1,html[data-netbox-color-mode=dark] .pt-xxl-1,html[data-netbox-color-mode=light] .pt-xxl-1{padding-top:.25rem!important}html .pt-xxl-2,html[data-netbox-color-mode=dark] .pt-xxl-2,html[data-netbox-color-mode=light] .pt-xxl-2{padding-top:.5rem!important}html .pt-xxl-3,html[data-netbox-color-mode=dark] .pt-xxl-3,html[data-netbox-color-mode=light] .pt-xxl-3{padding-top:1rem!important}html .pt-xxl-4,html[data-netbox-color-mode=dark] .pt-xxl-4,html[data-netbox-color-mode=light] .pt-xxl-4{padding-top:1.5rem!important}html .pt-xxl-5,html[data-netbox-color-mode=dark] .pt-xxl-5,html[data-netbox-color-mode=light] .pt-xxl-5{padding-top:3rem!important}html .pe-xxl-0,html[data-netbox-color-mode=dark] .pe-xxl-0,html[data-netbox-color-mode=light] .pe-xxl-0{padding-right:0!important}html .pe-xxl-1,html[data-netbox-color-mode=dark] .pe-xxl-1,html[data-netbox-color-mode=light] .pe-xxl-1{padding-right:.25rem!important}html .pe-xxl-2,html[data-netbox-color-mode=dark] .pe-xxl-2,html[data-netbox-color-mode=light] .pe-xxl-2{padding-right:.5rem!important}html .pe-xxl-3,html[data-netbox-color-mode=dark] .pe-xxl-3,html[data-netbox-color-mode=light] .pe-xxl-3{padding-right:1rem!important}html .pe-xxl-4,html[data-netbox-color-mode=dark] .pe-xxl-4,html[data-netbox-color-mode=light] .pe-xxl-4{padding-right:1.5rem!important}html .pe-xxl-5,html[data-netbox-color-mode=dark] .pe-xxl-5,html[data-netbox-color-mode=light] .pe-xxl-5{padding-right:3rem!important}html .pb-xxl-0,html[data-netbox-color-mode=dark] .pb-xxl-0,html[data-netbox-color-mode=light] .pb-xxl-0{padding-bottom:0!important}html .pb-xxl-1,html[data-netbox-color-mode=dark] .pb-xxl-1,html[data-netbox-color-mode=light] .pb-xxl-1{padding-bottom:.25rem!important}html .pb-xxl-2,html[data-netbox-color-mode=dark] .pb-xxl-2,html[data-netbox-color-mode=light] .pb-xxl-2{padding-bottom:.5rem!important}html .pb-xxl-3,html[data-netbox-color-mode=dark] .pb-xxl-3,html[data-netbox-color-mode=light] .pb-xxl-3{padding-bottom:1rem!important}html .pb-xxl-4,html[data-netbox-color-mode=dark] .pb-xxl-4,html[data-netbox-color-mode=light] .pb-xxl-4{padding-bottom:1.5rem!important}html .pb-xxl-5,html[data-netbox-color-mode=dark] .pb-xxl-5,html[data-netbox-color-mode=light] .pb-xxl-5{padding-bottom:3rem!important}html .ps-xxl-0,html[data-netbox-color-mode=dark] .ps-xxl-0,html[data-netbox-color-mode=light] .ps-xxl-0{padding-left:0!important}html .ps-xxl-1,html[data-netbox-color-mode=dark] .ps-xxl-1,html[data-netbox-color-mode=light] .ps-xxl-1{padding-left:.25rem!important}html .ps-xxl-2,html[data-netbox-color-mode=dark] .ps-xxl-2,html[data-netbox-color-mode=light] .ps-xxl-2{padding-left:.5rem!important}html .ps-xxl-3,html[data-netbox-color-mode=dark] .ps-xxl-3,html[data-netbox-color-mode=light] .ps-xxl-3{padding-left:1rem!important}html .ps-xxl-4,html[data-netbox-color-mode=dark] .ps-xxl-4,html[data-netbox-color-mode=light] .ps-xxl-4{padding-left:1.5rem!important}html .ps-xxl-5,html[data-netbox-color-mode=dark] .ps-xxl-5,html[data-netbox-color-mode=light] .ps-xxl-5{padding-left:3rem!important}html .text-xxl-start,html[data-netbox-color-mode=dark] .text-xxl-start,html[data-netbox-color-mode=light] .text-xxl-start{text-align:left!important}html .text-xxl-end,html[data-netbox-color-mode=dark] .text-xxl-end,html[data-netbox-color-mode=light] .text-xxl-end{text-align:right!important}html .text-xxl-center,html[data-netbox-color-mode=dark] .text-xxl-center,html[data-netbox-color-mode=light] .text-xxl-center{text-align:center!important}}@media print and (min-width: 1200px){html .fs-1,html[data-netbox-color-mode=dark] .fs-1,html[data-netbox-color-mode=light] .fs-1{font-size:2.5rem!important}html .fs-2,html[data-netbox-color-mode=dark] .fs-2,html[data-netbox-color-mode=light] .fs-2{font-size:2rem!important}html .fs-3,html[data-netbox-color-mode=dark] .fs-3,html[data-netbox-color-mode=light] .fs-3{font-size:1.75rem!important}html .fs-4,html[data-netbox-color-mode=dark] .fs-4,html[data-netbox-color-mode=light] .fs-4{font-size:1.5rem!important}}@media print{html .d-print-inline,html[data-netbox-color-mode=dark] .d-print-inline,html[data-netbox-color-mode=light] .d-print-inline{display:inline!important}html .d-print-inline-block,html[data-netbox-color-mode=dark] .d-print-inline-block,html[data-netbox-color-mode=light] .d-print-inline-block{display:inline-block!important}html .d-print-block,html[data-netbox-color-mode=dark] .d-print-block,html[data-netbox-color-mode=light] .d-print-block{display:block!important}html .d-print-grid,html[data-netbox-color-mode=dark] .d-print-grid,html[data-netbox-color-mode=light] .d-print-grid{display:grid!important}html .d-print-table,html[data-netbox-color-mode=dark] .d-print-table,html[data-netbox-color-mode=light] .d-print-table{display:table!important}html .d-print-table-row,html[data-netbox-color-mode=dark] .d-print-table-row,html[data-netbox-color-mode=light] .d-print-table-row{display:table-row!important}html .d-print-table-cell,html[data-netbox-color-mode=dark] .d-print-table-cell,html[data-netbox-color-mode=light] .d-print-table-cell{display:table-cell!important}html .d-print-flex,html[data-netbox-color-mode=dark] .d-print-flex,html[data-netbox-color-mode=light] .d-print-flex{display:flex!important}html .d-print-inline-flex,html[data-netbox-color-mode=dark] .d-print-inline-flex,html[data-netbox-color-mode=light] .d-print-inline-flex{display:inline-flex!important}html .d-print-none,html[data-netbox-color-mode=dark] .d-print-none,html[data-netbox-color-mode=light] .d-print-none{display:none!important}}@media print{html :root,html[data-netbox-color-mode=dark] :root,html[data-netbox-color-mode=light] :root{--nbx-select-content-bg: #fff;--nbx-select-option-selected-bg: #dee2e6;--nbx-select-option-hover-bg: #0d6efd;--nbx-select-option-hover-color: #fff;--nbx-select-placeholder-color: #adb5bd;--nbx-select-value-color: #fff}html :root[data-netbox-color-mode=dark],html[data-netbox-color-mode=dark] :root[data-netbox-color-mode=dark],html[data-netbox-color-mode=light] :root[data-netbox-color-mode=dark]{--nbx-select-content-bg: #212529;--nbx-select-option-selected-bg: #adb5bd;--nbx-select-option-hover-bg: #9ec5fe;--nbx-select-option-hover-color: #000;--nbx-select-placeholder-color: #495057;--nbx-select-value-color: #000}}@media print{html .ss-main,html[data-netbox-color-mode=dark] .ss-main,html[data-netbox-color-mode=light] .ss-main{position:relative;display:inline-block;user-select:none;color:#212529;width:100%}html .ss-main .ss-single-selected,html[data-netbox-color-mode=dark] .ss-main .ss-single-selected,html[data-netbox-color-mode=light] .ss-main .ss-single-selected{display:flex;cursor:pointer;width:100%;height:calc(1.5em + (.75rem + 2px));padding:.75rem;border:1px solid #ced4da;border-radius:.375rem;background-color:#fff;outline:0;box-sizing:border-box;transition:background-color .2s}html .ss-main .ss-single-selected.ss-disabled,html[data-netbox-color-mode=dark] .ss-main .ss-single-selected.ss-disabled,html[data-netbox-color-mode=light] .ss-main .ss-single-selected.ss-disabled{background-color:#ced4da;cursor:not-allowed}html .ss-main .ss-single-selected.ss-open-above,html[data-netbox-color-mode=dark] .ss-main .ss-single-selected.ss-open-above,html[data-netbox-color-mode=light] .ss-main .ss-single-selected.ss-open-above{border-top-left-radius:0;border-top-right-radius:0}html .ss-main .ss-single-selected.ss-open-below,html[data-netbox-color-mode=dark] .ss-main .ss-single-selected.ss-open-below,html[data-netbox-color-mode=light] .ss-main .ss-single-selected.ss-open-below{border-bottom-left-radius:0;border-bottom-right-radius:0}html .ss-main .ss-single-selected .placeholder,html[data-netbox-color-mode=dark] .ss-main .ss-single-selected .placeholder,html[data-netbox-color-mode=light] .ss-main .ss-single-selected .placeholder{display:flex;flex:1 1 100%;align-items:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:left;width:calc(100% - 30px);line-height:1em;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}html .ss-main .ss-single-selected .placeholder *,html[data-netbox-color-mode=dark] .ss-main .ss-single-selected .placeholder *,html[data-netbox-color-mode=light] .ss-main .ss-single-selected .placeholder *{display:flex;align-items:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:auto}html .ss-main .ss-single-selected .placeholder .ss-disabled,html[data-netbox-color-mode=dark] .ss-main .ss-single-selected .placeholder .ss-disabled,html[data-netbox-color-mode=light] .ss-main .ss-single-selected .placeholder .ss-disabled{color:#6c757d}html .ss-main .ss-single-selected .ss-deselect,html[data-netbox-color-mode=dark] .ss-main .ss-single-selected .ss-deselect,html[data-netbox-color-mode=light] .ss-main .ss-single-selected .ss-deselect{display:flex;align-items:center;justify-content:flex-end;flex:0 1 auto;margin:0 .75rem;font-weight:bold}html .ss-main .ss-single-selected .ss-deselect.ss-hide,html[data-netbox-color-mode=dark] .ss-main .ss-single-selected .ss-deselect.ss-hide,html[data-netbox-color-mode=light] .ss-main .ss-single-selected .ss-deselect.ss-hide{display:none}html .ss-main .ss-single-selected .ss-arrow,html[data-netbox-color-mode=dark] .ss-main .ss-single-selected .ss-arrow,html[data-netbox-color-mode=light] .ss-main .ss-single-selected .ss-arrow{display:flex;align-items:center;justify-content:flex-end;flex:0 1 auto;margin:0 .75rem}html .ss-main .ss-single-selected .ss-arrow span,html[data-netbox-color-mode=dark] .ss-main .ss-single-selected .ss-arrow span,html[data-netbox-color-mode=light] .ss-main .ss-single-selected .ss-arrow span{border:solid #212529;border-width:0 2px 2px 0;display:inline-block;padding:3px;transition:transform .2s,margin .2s}html .ss-main .ss-single-selected .ss-arrow span.arrow-up,html[data-netbox-color-mode=dark] .ss-main .ss-single-selected .ss-arrow span.arrow-up,html[data-netbox-color-mode=light] .ss-main .ss-single-selected .ss-arrow span.arrow-up{transform:rotate(-135deg);margin:3px 0 0}html .ss-main .ss-single-selected .ss-arrow span.arrow-down,html[data-netbox-color-mode=dark] .ss-main .ss-single-selected .ss-arrow span.arrow-down,html[data-netbox-color-mode=light] .ss-main .ss-single-selected .ss-arrow span.arrow-down{transform:rotate(45deg);margin:-3px 0 0}html .ss-main .ss-multi-selected,html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected,html[data-netbox-color-mode=light] .ss-main .ss-multi-selected{display:flex;flex-direction:row;cursor:pointer;min-height:calc(1.5em + (.75rem + 2px));width:100%;padding:0 0 0 3px;border:1px solid #ced4da;border-radius:.375rem;background-color:#fff;outline:0;box-sizing:border-box;transition:background-color .2s}html .ss-main .ss-multi-selected.ss-disabled,html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected.ss-disabled,html[data-netbox-color-mode=light] .ss-main .ss-multi-selected.ss-disabled{background-color:#ced4da;cursor:not-allowed}html .ss-main .ss-multi-selected.ss-disabled .ss-values .ss-disabled,html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected.ss-disabled .ss-values .ss-disabled,html[data-netbox-color-mode=light] .ss-main .ss-multi-selected.ss-disabled .ss-values .ss-disabled{color:#212529}html .ss-main .ss-multi-selected.ss-disabled .ss-values .ss-value .ss-value-delete,html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected.ss-disabled .ss-values .ss-value .ss-value-delete,html[data-netbox-color-mode=light] .ss-main .ss-multi-selected.ss-disabled .ss-values .ss-value .ss-value-delete{cursor:not-allowed}html .ss-main .ss-multi-selected.ss-open-above,html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected.ss-open-above,html[data-netbox-color-mode=light] .ss-main .ss-multi-selected.ss-open-above{border-top-left-radius:0;border-top-right-radius:0}html .ss-main .ss-multi-selected.ss-open-below,html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected.ss-open-below,html[data-netbox-color-mode=light] .ss-main .ss-multi-selected.ss-open-below{border-bottom-left-radius:0;border-bottom-right-radius:0}html .ss-main .ss-multi-selected .ss-values,html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-values,html[data-netbox-color-mode=light] .ss-main .ss-multi-selected .ss-values{display:flex;flex-wrap:wrap;justify-content:flex-start;flex:1 1 100%;width:calc(100% - 30px)}html .ss-main .ss-multi-selected .ss-values .ss-disabled,html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-values .ss-disabled,html[data-netbox-color-mode=light] .ss-main .ss-multi-selected .ss-values .ss-disabled{display:flex;padding:4px 5px;margin:2px 0;line-height:1em;align-items:center;width:100%;color:#6c757d;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@keyframes scaleIn{0%{transform:scale(0);opacity:0}to{transform:scale(1);opacity:1}}@keyframes scaleOut{0%{transform:scale(1);opacity:1}to{transform:scale(0);opacity:0}}html .ss-main .ss-multi-selected .ss-values .ss-value,html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-values .ss-value,html[data-netbox-color-mode=light] .ss-main .ss-multi-selected .ss-values .ss-value{display:flex;user-select:none;align-items:center;font-size:12px;padding:3px 5px;margin:3px 5px 3px 0;color:#fff;background-color:#0d6efd;border-radius:.375rem;animation-name:scaleIn;animation-duration:.2s;animation-timing-function:ease-out;animation-fill-mode:both}html .ss-main .ss-multi-selected .ss-values .ss-value.ss-out,html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-values .ss-value.ss-out,html[data-netbox-color-mode=light] .ss-main .ss-multi-selected .ss-values .ss-value.ss-out{animation-name:scaleOut;animation-duration:.2s;animation-timing-function:ease-out}html .ss-main .ss-multi-selected .ss-values .ss-value .ss-value-delete,html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-values .ss-value .ss-value-delete,html[data-netbox-color-mode=light] .ss-main .ss-multi-selected .ss-values .ss-value .ss-value-delete{margin:0 0 0 5px;cursor:pointer}html .ss-main .ss-multi-selected .ss-add,html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-add,html[data-netbox-color-mode=light] .ss-main .ss-multi-selected .ss-add{display:flex;flex:0 1 3px;margin:9px 12px 0 5px}html .ss-main .ss-multi-selected .ss-add .ss-plus,html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-add .ss-plus,html[data-netbox-color-mode=light] .ss-main .ss-multi-selected .ss-add .ss-plus{display:flex;justify-content:center;align-items:center;background:#212529;position:relative;height:10px;width:2px;transition:transform .2s}html .ss-main .ss-multi-selected .ss-add .ss-plus:after,html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-add .ss-plus:after,html[data-netbox-color-mode=light] .ss-main .ss-multi-selected .ss-add .ss-plus:after{background:#212529;content:"";position:absolute;height:2px;width:10px;left:-4px;top:4px}html .ss-main .ss-multi-selected .ss-add .ss-plus.ss-cross,html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-add .ss-plus.ss-cross,html[data-netbox-color-mode=light] .ss-main .ss-multi-selected .ss-add .ss-plus.ss-cross{transform:rotate(45deg)}}@media print{html .ss-content,html[data-netbox-color-mode=dark] .ss-content,html[data-netbox-color-mode=light] .ss-content{position:absolute;width:100%;margin:-1px 0 0;box-sizing:border-box;border:solid 1px #ced4da;z-index:1010;background-color:#fff;transform-origin:center top;transition:transform .2s,opacity .2s;opacity:0;transform:scaleY(0)}html .ss-content.ss-open,html[data-netbox-color-mode=dark] .ss-content.ss-open,html[data-netbox-color-mode=light] .ss-content.ss-open{display:block;opacity:1;transform:scaleY(1)}html .ss-content .ss-search,html[data-netbox-color-mode=dark] .ss-content .ss-search,html[data-netbox-color-mode=light] .ss-content .ss-search{display:flex;flex-direction:row;padding:.75rem}html .ss-content .ss-search.ss-hide,html[data-netbox-color-mode=dark] .ss-content .ss-search.ss-hide,html[data-netbox-color-mode=light] .ss-content .ss-search.ss-hide{height:0px;opacity:0;padding:0;margin:0}html .ss-content .ss-search.ss-hide input,html[data-netbox-color-mode=dark] .ss-content .ss-search.ss-hide input,html[data-netbox-color-mode=light] .ss-content .ss-search.ss-hide input{height:0px;opacity:0;padding:0;margin:0}html .ss-content .ss-search input,html[data-netbox-color-mode=dark] .ss-content .ss-search input,html[data-netbox-color-mode=light] .ss-content .ss-search input{display:inline-flex;font-size:inherit;line-height:inherit;flex:1 1 auto;width:100%;min-width:0px;height:30px;padding:.75rem;margin:0;border:1px solid #ced4da;border-radius:.375rem;background-color:#fff;outline:0;text-align:left;box-sizing:border-box;-webkit-box-sizing:border-box;-webkit-appearance:textfield}html .ss-content .ss-search input::placeholder,html[data-netbox-color-mode=dark] .ss-content .ss-search input::placeholder,html[data-netbox-color-mode=light] .ss-content .ss-search input::placeholder{color:#adb5bd;vertical-align:middle}html .ss-content .ss-search input:focus,html[data-netbox-color-mode=dark] .ss-content .ss-search input:focus,html[data-netbox-color-mode=light] .ss-content .ss-search input:focus{box-shadow:0 0 5px #0d6efd}html .ss-content .ss-search .ss-addable,html[data-netbox-color-mode=dark] .ss-content .ss-search .ss-addable,html[data-netbox-color-mode=light] .ss-content .ss-search .ss-addable{display:inline-flex;justify-content:center;align-items:center;cursor:pointer;font-size:22px;font-weight:bold;flex:0 0 30px;height:30px;margin:0 0 0 8px;border:1px solid #ced4da;border-radius:.375rem;box-sizing:border-box}html .ss-content .ss-addable,html[data-netbox-color-mode=dark] .ss-content .ss-addable,html[data-netbox-color-mode=light] .ss-content .ss-addable{padding-top:0}html .ss-content .ss-list,html[data-netbox-color-mode=dark] .ss-content .ss-list,html[data-netbox-color-mode=light] .ss-content .ss-list{max-height:200px;overflow-x:hidden;overflow-y:auto;text-align:left}html .ss-content .ss-list .ss-optgroup .ss-optgroup-label,html[data-netbox-color-mode=dark] .ss-content .ss-list .ss-optgroup .ss-optgroup-label,html[data-netbox-color-mode=light] .ss-content .ss-list .ss-optgroup .ss-optgroup-label{padding:6px 10px;font-weight:bold}html .ss-content .ss-list .ss-optgroup .ss-option,html[data-netbox-color-mode=dark] .ss-content .ss-list .ss-optgroup .ss-option,html[data-netbox-color-mode=light] .ss-content .ss-list .ss-optgroup .ss-option{padding:6px 6px 6px 25px}html .ss-content .ss-list .ss-optgroup-label-selectable,html[data-netbox-color-mode=dark] .ss-content .ss-list .ss-optgroup-label-selectable,html[data-netbox-color-mode=light] .ss-content .ss-list .ss-optgroup-label-selectable{cursor:pointer}html .ss-content .ss-list .ss-optgroup-label-selectable:hover,html[data-netbox-color-mode=dark] .ss-content .ss-list .ss-optgroup-label-selectable:hover,html[data-netbox-color-mode=light] .ss-content .ss-list .ss-optgroup-label-selectable:hover{color:#fff;background-color:#0d6efd}html .ss-content .ss-list .ss-option,html[data-netbox-color-mode=dark] .ss-content .ss-list .ss-option,html[data-netbox-color-mode=light] .ss-content .ss-list .ss-option{padding:6px 10px;cursor:pointer;user-select:none}html .ss-content .ss-list .ss-option *,html[data-netbox-color-mode=dark] .ss-content .ss-list .ss-option *,html[data-netbox-color-mode=light] .ss-content .ss-list .ss-option *{display:inline-block}html .ss-content .ss-list .ss-option:hover,html .ss-content .ss-list .ss-option.ss-highlighted,html[data-netbox-color-mode=dark] .ss-content .ss-list .ss-option:hover,html[data-netbox-color-mode=dark] .ss-content .ss-list .ss-option.ss-highlighted,html[data-netbox-color-mode=light] .ss-content .ss-list .ss-option:hover,html[data-netbox-color-mode=light] .ss-content .ss-list .ss-option.ss-highlighted{color:#fff;background-color:#0d6efd}html .ss-content .ss-list .ss-option.ss-disabled,html[data-netbox-color-mode=dark] .ss-content .ss-list .ss-option.ss-disabled,html[data-netbox-color-mode=light] .ss-content .ss-list .ss-option.ss-disabled{cursor:not-allowed;color:#6c757d;background-color:#fff}html .ss-content .ss-list .ss-option:not(.ss-disabled).ss-option-selected,html[data-netbox-color-mode=dark] .ss-content .ss-list .ss-option:not(.ss-disabled).ss-option-selected,html[data-netbox-color-mode=light] .ss-content .ss-list .ss-option:not(.ss-disabled).ss-option-selected{color:#212529;background-color:#0d6efd1a}html .ss-content .ss-list .ss-option.ss-hide,html[data-netbox-color-mode=dark] .ss-content .ss-list .ss-option.ss-hide,html[data-netbox-color-mode=light] .ss-content .ss-list .ss-option.ss-hide{display:none}html .ss-content .ss-list .ss-option .ss-search-highlight,html[data-netbox-color-mode=dark] .ss-content .ss-list .ss-option .ss-search-highlight,html[data-netbox-color-mode=light] .ss-content .ss-list .ss-option .ss-search-highlight{background-color:#ffc107}}@media print{html .ss-main,html[data-netbox-color-mode=dark] .ss-main,html[data-netbox-color-mode=light] .ss-main{color:#212529}html .ss-main.is-invalid .ss-single-selected,html .ss-main.is-invalid .ss-multi-selected,html[data-netbox-color-mode=dark] .ss-main.is-invalid .ss-single-selected,html[data-netbox-color-mode=dark] .ss-main.is-invalid .ss-multi-selected,html[data-netbox-color-mode=light] .ss-main.is-invalid .ss-single-selected,html[data-netbox-color-mode=light] .ss-main.is-invalid .ss-multi-selected{border-color:#dc3545}html .ss-main.is-valid .ss-single-selected,html .ss-main.is-valid .ss-multi-selected,html[data-netbox-color-mode=dark] .ss-main.is-valid .ss-single-selected,html[data-netbox-color-mode=dark] .ss-main.is-valid .ss-multi-selected,html[data-netbox-color-mode=light] .ss-main.is-valid .ss-single-selected,html[data-netbox-color-mode=light] .ss-main.is-valid .ss-multi-selected{border-color:#198754}html .ss-main .ss-single-selected,html .ss-main .ss-multi-selected,html[data-netbox-color-mode=dark] .ss-main .ss-single-selected,html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected,html[data-netbox-color-mode=light] .ss-main .ss-single-selected,html[data-netbox-color-mode=light] .ss-main .ss-multi-selected{padding:.375rem .75rem;background-color:#fff;border:1px solid #e9ecef}html .ss-main .ss-single-selected[disabled],html .ss-main .ss-multi-selected[disabled],html[data-netbox-color-mode=dark] .ss-main .ss-single-selected[disabled],html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected[disabled],html[data-netbox-color-mode=light] .ss-main .ss-single-selected[disabled],html[data-netbox-color-mode=light] .ss-main .ss-multi-selected[disabled]{color:#6c757d;background-color:#e9ecef}html .ss-main div.ss-multi-selected .ss-values .ss-disabled,html .ss-main div.ss-single-selected span.placeholder .ss-disabled,html[data-netbox-color-mode=dark] .ss-main div.ss-multi-selected .ss-values .ss-disabled,html[data-netbox-color-mode=dark] .ss-main div.ss-single-selected span.placeholder .ss-disabled,html[data-netbox-color-mode=light] .ss-main div.ss-multi-selected .ss-values .ss-disabled,html[data-netbox-color-mode=light] .ss-main div.ss-single-selected span.placeholder .ss-disabled{color:var(--nbx-select-placeholder-color)}html .ss-main .ss-single-selected span.ss-arrow span.arrow-down,html .ss-main .ss-single-selected span.ss-arrow span.arrow-up,html[data-netbox-color-mode=dark] .ss-main .ss-single-selected span.ss-arrow span.arrow-down,html[data-netbox-color-mode=dark] .ss-main .ss-single-selected span.ss-arrow span.arrow-up,html[data-netbox-color-mode=light] .ss-main .ss-single-selected span.ss-arrow span.arrow-down,html[data-netbox-color-mode=light] .ss-main .ss-single-selected span.ss-arrow span.arrow-up{border-color:currentColor;color:#6c757d}html .ss-main .ss-single-selected .placeholder .depth,html[data-netbox-color-mode=dark] .ss-main .ss-single-selected .placeholder .depth,html[data-netbox-color-mode=light] .ss-main .ss-single-selected .placeholder .depth{display:none}html .ss-main .ss-single-selected span.placeholder>*,html .ss-main .ss-single-selected span.placeholder,html[data-netbox-color-mode=dark] .ss-main .ss-single-selected span.placeholder>*,html[data-netbox-color-mode=dark] .ss-main .ss-single-selected span.placeholder,html[data-netbox-color-mode=light] .ss-main .ss-single-selected span.placeholder>*,html[data-netbox-color-mode=light] .ss-main .ss-single-selected span.placeholder{line-height:1.5}html .ss-main .ss-multi-selected,html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected,html[data-netbox-color-mode=light] .ss-main .ss-multi-selected{align-items:center;padding-right:.75rem;padding-left:.75rem}html .ss-main .ss-multi-selected .ss-values .ss-disabled,html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-values .ss-disabled,html[data-netbox-color-mode=light] .ss-main .ss-multi-selected .ss-values .ss-disabled{padding:4px 0}html .ss-main .ss-multi-selected .ss-values .ss-value,html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-values .ss-value,html[data-netbox-color-mode=light] .ss-main .ss-multi-selected .ss-values .ss-value{color:var(--nbx-select-value-color);border-radius:.375rem}html .ss-main .ss-multi-selected .ss-values .ss-value .depth,html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-values .ss-value .depth,html[data-netbox-color-mode=light] .ss-main .ss-multi-selected .ss-values .ss-value .depth{display:none}html .ss-main .ss-multi-selected .ss-add,html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-add,html[data-netbox-color-mode=light] .ss-main .ss-multi-selected .ss-add{margin:0 .75rem}html .ss-main .ss-content,html[data-netbox-color-mode=dark] .ss-main .ss-content,html[data-netbox-color-mode=light] .ss-main .ss-content{background-color:var(--nbx-select-content-bg);border-bottom-right-radius:.375rem;border-bottom-left-radius:.375rem}html .ss-main .ss-content .ss-list .ss-option.ss-option-selected,html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-list .ss-option.ss-option-selected,html[data-netbox-color-mode=light] .ss-main .ss-content .ss-list .ss-option.ss-option-selected{color:#212529;background-color:var(--nbx-select-option-selected-bg)}html .ss-main .ss-content .ss-list .ss-option:hover,html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-list .ss-option:hover,html[data-netbox-color-mode=light] .ss-main .ss-content .ss-list .ss-option:hover{color:var(--nbx-select-option-hover-color);background-color:var(--nbx-select-option-hover-bg)}html .ss-main .ss-content .ss-list .ss-option:last-child,html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-list .ss-option:last-child,html[data-netbox-color-mode=light] .ss-main .ss-content .ss-list .ss-option:last-child{border-bottom-right-radius:.375rem;border-bottom-left-radius:.375rem}html .ss-main .ss-content .ss-list .ss-option.ss-disabled,html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-list .ss-option.ss-disabled,html[data-netbox-color-mode=light] .ss-main .ss-content .ss-list .ss-option.ss-disabled{background-color:unset}html .ss-main .ss-content .ss-list .ss-option.ss-disabled:hover,html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-list .ss-option.ss-disabled:hover,html[data-netbox-color-mode=light] .ss-main .ss-content .ss-list .ss-option.ss-disabled:hover{color:#6c757d}html .ss-main .ss-content .ss-list .ss-option .depth,html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-list .ss-option .depth,html[data-netbox-color-mode=light] .ss-main .ss-content .ss-list .ss-option .depth{opacity:.3}html .ss-main .ss-content .ss-list::-webkit-scrollbar,html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-list::-webkit-scrollbar,html[data-netbox-color-mode=light] .ss-main .ss-content .ss-list::-webkit-scrollbar{right:0;width:4px}html .ss-main .ss-content .ss-list::-webkit-scrollbar:hover,html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-list::-webkit-scrollbar:hover,html[data-netbox-color-mode=light] .ss-main .ss-content .ss-list::-webkit-scrollbar:hover{opacity:.8}html .ss-main .ss-content .ss-list::-webkit-scrollbar-track,html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-list::-webkit-scrollbar-track,html[data-netbox-color-mode=light] .ss-main .ss-content .ss-list::-webkit-scrollbar-track{background:transparent}html .ss-main .ss-content .ss-list::-webkit-scrollbar-thumb,html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-list::-webkit-scrollbar-thumb,html[data-netbox-color-mode=light] .ss-main .ss-content .ss-list::-webkit-scrollbar-thumb{right:0;width:2px;background-color:var(--nbx-sidebar-scroll)}html .ss-main .ss-content .ss-search,html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-search,html[data-netbox-color-mode=light] .ss-main .ss-content .ss-search{padding-right:.5rem}html .ss-main .ss-content .ss-search button,html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-search button,html[data-netbox-color-mode=light] .ss-main .ss-content .ss-search button{margin-left:.75rem}html .ss-main .ss-content .ss-search input[type=search],html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-search input[type=search],html[data-netbox-color-mode=light] .ss-main .ss-content .ss-search input[type=search]{color:#212529;background-color:#fff;border:1px solid #e9ecef}html .ss-main .ss-content .ss-search input[type=search]:focus,html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-search input[type=search]:focus,html[data-netbox-color-mode=light] .ss-main .ss-content .ss-search input[type=search]:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}}@media print{html .sidenav,html[data-netbox-color-mode=dark] .sidenav,html[data-netbox-color-mode=light] .sidenav{position:fixed;top:0;bottom:0;left:0;z-index:1050;display:block;width:100%;max-width:3rem;padding-top:0;padding-right:0;padding-left:0;background-color:var(--nbx-sidebar-bg);border-right:1px solid #ced4da;transition:all .1s ease-in-out}}@media print and (max-width: 991.98px){html .sidenav,html[data-netbox-color-mode=dark] .sidenav,html[data-netbox-color-mode=light] .sidenav{transform:translate(-3rem)}html .sidenav+.content-container[class],html[data-netbox-color-mode=dark] .sidenav+.content-container[class],html[data-netbox-color-mode=light] .sidenav+.content-container[class]{margin-left:0}html .sidenav .profile-button-container[class],html[data-netbox-color-mode=dark] .sidenav .profile-button-container[class],html[data-netbox-color-mode=light] .sidenav .profile-button-container[class]{display:block}}@media print{html .sidenav .profile-button-container,html[data-netbox-color-mode=dark] .sidenav .profile-button-container,html[data-netbox-color-mode=light] .sidenav .profile-button-container{display:none;padding:.5rem 1rem}}@media print{html .sidenav+.content-container,html[data-netbox-color-mode=dark] .sidenav+.content-container,html[data-netbox-color-mode=light] .sidenav+.content-container{margin-left:3rem;transition:all .1s ease-in-out}}@media print{html .sidenav .sidenav-brand,html[data-netbox-color-mode=dark] .sidenav .sidenav-brand,html[data-netbox-color-mode=light] .sidenav .sidenav-brand{margin-right:0;transition:opacity .1s ease-in-out}}@media print{html .sidenav .sidenav-brand-icon,html[data-netbox-color-mode=dark] .sidenav .sidenav-brand-icon,html[data-netbox-color-mode=light] .sidenav .sidenav-brand-icon{transition:opacity .1s ease-in-out}}@media print{html .sidenav .sidenav-inner,html[data-netbox-color-mode=dark] .sidenav .sidenav-inner,html[data-netbox-color-mode=light] .sidenav .sidenav-inner{padding-right:1.5rem;padding-left:1.5rem}}@media print and (min-width: 768px){html .sidenav .sidenav-inner,html[data-netbox-color-mode=dark] .sidenav .sidenav-inner,html[data-netbox-color-mode=light] .sidenav .sidenav-inner{padding-right:0;padding-left:0}}@media print{html .sidenav .sidenav-brand-img,html .sidenav .sidenav-brand>img,html[data-netbox-color-mode=dark] .sidenav .sidenav-brand-img,html[data-netbox-color-mode=dark] .sidenav .sidenav-brand>img,html[data-netbox-color-mode=light] .sidenav .sidenav-brand-img,html[data-netbox-color-mode=light] .sidenav .sidenav-brand>img{max-width:100%;max-height:calc(16rem - 1rem)}}@media print{html .sidenav .navbar-heading,html[data-netbox-color-mode=dark] .sidenav .navbar-heading,html[data-netbox-color-mode=light] .sidenav .navbar-heading{padding-top:.5rem;padding-bottom:.5rem;font-size:.75rem;text-transform:uppercase;letter-spacing:.04em}}@media print{html .sidenav .sidenav-header,html[data-netbox-color-mode=dark] .sidenav .sidenav-header,html[data-netbox-color-mode=light] .sidenav .sidenav-header{position:relative;display:flex;align-items:center;justify-content:space-between;height:78px;padding:1rem;transition:all .1s ease-in-out}}@media print{html .sidenav .sidenav-toggle,html[data-netbox-color-mode=dark] .sidenav .sidenav-toggle,html[data-netbox-color-mode=light] .sidenav .sidenav-toggle{position:absolute;display:inline-block;opacity:0;transition:opacity 10ms ease-in-out;transition-delay:.1s}}@media print{html .sidenav .sidenav-collapse,html[data-netbox-color-mode=dark] .sidenav .sidenav-collapse,html[data-netbox-color-mode=light] .sidenav .sidenav-collapse{display:flex;flex:1;flex-direction:column;align-items:stretch;padding-right:1.5rem;padding-left:1.5rem;margin-right:-1.5rem;margin-left:-1.5rem}}@media print{html .sidenav .sidenav-collapse>*,html[data-netbox-color-mode=dark] .sidenav .sidenav-collapse>*,html[data-netbox-color-mode=light] .sidenav .sidenav-collapse>*{min-width:100%}}@media print and (min-width: 768px){html .sidenav .sidenav-collapse,html[data-netbox-color-mode=dark] .sidenav .sidenav-collapse,html[data-netbox-color-mode=light] .sidenav .sidenav-collapse{margin-right:0;margin-left:0}}@media print{html .sidenav .nav-group-header,html[data-netbox-color-mode=dark] .sidenav .nav-group-header,html[data-netbox-color-mode=light] .sidenav .nav-group-header{padding:.25rem 1rem;margin-top:.5rem;margin-bottom:0}}@media print{html .sidenav .nav .nav-item,html[data-netbox-color-mode=dark] .sidenav .nav .nav-item,html[data-netbox-color-mode=light] .sidenav .nav .nav-item{display:flex;align-items:center;justify-content:space-between;width:100%}}@media print{html .sidenav .nav .nav-item.no-buttons,html[data-netbox-color-mode=dark] .sidenav .nav .nav-item.no-buttons,html[data-netbox-color-mode=light] .sidenav .nav .nav-item.no-buttons{padding-right:5rem}}@media print{html .sidenav .collapse .nav .nav-item .nav-link,html[data-netbox-color-mode=dark] .sidenav .collapse .nav .nav-item .nav-link,html[data-netbox-color-mode=light] .sidenav .collapse .nav .nav-item .nav-link{width:100%;padding:.25rem .25rem .25rem 1rem;margin-top:0;margin-bottom:0;border-top-right-radius:.375rem;border-bottom-right-radius:.375rem}}@media print{html .sidenav .collapse .nav .nav-item .nav-link .sidenav-mini-icon,html[data-netbox-color-mode=dark] .sidenav .collapse .nav .nav-item .nav-link .sidenav-mini-icon,html[data-netbox-color-mode=light] .sidenav .collapse .nav .nav-item .nav-link .sidenav-mini-icon{width:1rem;text-align:center;transition:all .1s ease-in-out}}@media print{html .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle],html[data-netbox-color-mode=dark] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle],html[data-netbox-color-mode=light] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle]{width:unset;height:100%;padding-left:.5rem;font-weight:700;color:var(--nbx-sidenav-parent-color)}}@media print{html .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle].active,html[data-netbox-color-mode=dark] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle].active,html[data-netbox-color-mode=light] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle].active{color:#343a40;background:#cfe2ff}}@media print{html .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle]:after,html[data-netbox-color-mode=dark] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle]:after,html[data-netbox-color-mode=light] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle]:after{display:inline-block;margin-left:auto;font-family:"Material Design Icons";font-style:normal;font-weight:700;font-variant:normal;color:#6c757d;text-rendering:auto;-webkit-font-smoothing:antialiased;content:"\f0142";transition:all .1s ease-in-out}}@media print{html .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle][aria-expanded=true].active:after,html[data-netbox-color-mode=dark] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle][aria-expanded=true].active:after,html[data-netbox-color-mode=light] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle][aria-expanded=true].active:after{color:#343a40}}@media print{html .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle][aria-expanded=true]:after,html[data-netbox-color-mode=dark] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle][aria-expanded=true]:after,html[data-netbox-color-mode=light] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle][aria-expanded=true]:after{color:#0d6efd;transform:rotate(90deg)}}@media print{html .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle] .nav-link-text,html[data-netbox-color-mode=dark] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle] .nav-link-text,html[data-netbox-color-mode=light] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle] .nav-link-text{padding-left:.25rem;transition:all .1s ease-in-out}}@media print{html .sidenav .navbar-nav,html[data-netbox-color-mode=dark] .sidenav .navbar-nav,html[data-netbox-color-mode=light] .sidenav .navbar-nav{flex-direction:column;margin-right:-1.5rem;margin-left:-1.5rem}}@media print{html .sidenav .navbar-nav .nav-item,html[data-netbox-color-mode=dark] .sidenav .navbar-nav .nav-item,html[data-netbox-color-mode=light] .sidenav .navbar-nav .nav-item{margin-top:2px}}@media print{html .sidenav .navbar-nav .nav-item.disabled,html[data-netbox-color-mode=dark] .sidenav .navbar-nav .nav-item.disabled,html[data-netbox-color-mode=light] .sidenav .navbar-nav .nav-item.disabled{cursor:not-allowed;opacity:.8}}@media print{html .sidenav .navbar-nav .nav-item .nav-link,html[data-netbox-color-mode=dark] .sidenav .navbar-nav .nav-item .nav-link,html[data-netbox-color-mode=light] .sidenav .navbar-nav .nav-item .nav-link{position:relative;display:flex;align-items:center;width:100%;padding:.5rem 1rem;font-size:.875rem;color:var(--nbx-sidenav-link-color);white-space:nowrap;transition:all .1s ease-in-out}}@media print{html .sidenav .navbar-nav .nav-item .nav-link.active,html[data-netbox-color-mode=dark] .sidenav .navbar-nav .nav-item .nav-link.active,html[data-netbox-color-mode=light] .sidenav .navbar-nav .nav-item .nav-link.active{background-color:var(--nbx-sidebar-link-active-bg)}}@media print{html .sidenav .navbar-nav .nav-item .nav-link:hover:not(.active),html[data-netbox-color-mode=dark] .sidenav .navbar-nav .nav-item .nav-link:hover:not(.active),html[data-netbox-color-mode=light] .sidenav .navbar-nav .nav-item .nav-link:hover:not(.active){color:var(--nbx-body-color);background-color:var(--nbx-sidebar-link-hover-bg)}}@media print{html .sidenav .navbar-nav .nav-item .nav-link>i,html[data-netbox-color-mode=dark] .sidenav .navbar-nav .nav-item .nav-link>i,html[data-netbox-color-mode=light] .sidenav .navbar-nav .nav-item .nav-link>i{min-width:2rem;font-size:calc(45px / 2);text-align:center}}@media print{html .sidenav .navbar-nav .nav-group-label,html[data-netbox-color-mode=dark] .sidenav .navbar-nav .nav-group-label,html[data-netbox-color-mode=light] .sidenav .navbar-nav .nav-group-label{display:block;font-size:.75rem;font-weight:700;color:var(--nbx-sidenav-group-color);text-transform:uppercase;white-space:nowrap}}@media print{html body[data-sidenav-pinned] .sidenav .sidenav-toggle-icon,html[data-netbox-color-mode=dark] body[data-sidenav-pinned] .sidenav .sidenav-toggle-icon,html[data-netbox-color-mode=light] body[data-sidenav-pinned] .sidenav .sidenav-toggle-icon{color:var(--nbx-sidenav-pin-color);transform:rotate(90deg)}}@media print and (min-width: 1200px){html body[data-sidenav-pinned] .sidenav+.content-container,html[data-netbox-color-mode=dark] body[data-sidenav-pinned] .sidenav+.content-container,html[data-netbox-color-mode=light] body[data-sidenav-pinned] .sidenav+.content-container{margin-left:16rem}}@media print{html .g-sidenav-show:not(.g-sidenav-pinned) .sidenav .sidenav-toggle-icon,html[data-netbox-color-mode=dark] .g-sidenav-show:not(.g-sidenav-pinned) .sidenav .sidenav-toggle-icon,html[data-netbox-color-mode=light] .g-sidenav-show:not(.g-sidenav-pinned) .sidenav .sidenav-toggle-icon{transform:rotate(0)}}@media print{html body[data-sidenav-show] .sidenav,html body[data-sidenav-pinned] .sidenav,html[data-netbox-color-mode=dark] body[data-sidenav-show] .sidenav,html[data-netbox-color-mode=dark] body[data-sidenav-pinned] .sidenav,html[data-netbox-color-mode=light] body[data-sidenav-show] .sidenav,html[data-netbox-color-mode=light] body[data-sidenav-pinned] .sidenav{max-width:16rem}}@media print{html body[data-sidenav-show] .sidenav .sidenav-brand,html body[data-sidenav-show] .sidenav .navbar-heading,html body[data-sidenav-pinned] .sidenav .sidenav-brand,html body[data-sidenav-pinned] .sidenav .navbar-heading,html[data-netbox-color-mode=dark] body[data-sidenav-show] .sidenav .sidenav-brand,html[data-netbox-color-mode=dark] body[data-sidenav-show] .sidenav .navbar-heading,html[data-netbox-color-mode=dark] body[data-sidenav-pinned] .sidenav .sidenav-brand,html[data-netbox-color-mode=dark] body[data-sidenav-pinned] .sidenav .navbar-heading,html[data-netbox-color-mode=light] body[data-sidenav-show] .sidenav .sidenav-brand,html[data-netbox-color-mode=light] body[data-sidenav-show] .sidenav .navbar-heading,html[data-netbox-color-mode=light] body[data-sidenav-pinned] .sidenav .sidenav-brand,html[data-netbox-color-mode=light] body[data-sidenav-pinned] .sidenav .navbar-heading{display:block}}@media print{html body[data-sidenav-show] .sidenav .sidenav-brand,html body[data-sidenav-pinned] .sidenav .sidenav-brand,html[data-netbox-color-mode=dark] body[data-sidenav-show] .sidenav .sidenav-brand,html[data-netbox-color-mode=dark] body[data-sidenav-pinned] .sidenav .sidenav-brand,html[data-netbox-color-mode=light] body[data-sidenav-show] .sidenav .sidenav-brand,html[data-netbox-color-mode=light] body[data-sidenav-pinned] .sidenav .sidenav-brand{opacity:1;transform:translate(0)}}@media print{html body[data-sidenav-show] .sidenav .sidenav-brand-icon,html body[data-sidenav-pinned] .sidenav .sidenav-brand-icon,html[data-netbox-color-mode=dark] body[data-sidenav-show] .sidenav .sidenav-brand-icon,html[data-netbox-color-mode=dark] body[data-sidenav-pinned] .sidenav .sidenav-brand-icon,html[data-netbox-color-mode=light] body[data-sidenav-show] .sidenav .sidenav-brand-icon,html[data-netbox-color-mode=light] body[data-sidenav-pinned] .sidenav .sidenav-brand-icon{position:absolute;opacity:0}}@media print and (max-width: 991.98px){html body[data-sidenav-show] .sidenav,html body[data-sidenav-pinned] .sidenav,html[data-netbox-color-mode=dark] body[data-sidenav-show] .sidenav,html[data-netbox-color-mode=dark] body[data-sidenav-pinned] .sidenav,html[data-netbox-color-mode=light] body[data-sidenav-show] .sidenav,html[data-netbox-color-mode=light] body[data-sidenav-pinned] .sidenav{transform:translate(0)}}@media print{html body[data-sidenav-hide] .sidenav .sidenav-header,html body[data-sidenav-hidden] .sidenav .sidenav-header,html[data-netbox-color-mode=dark] body[data-sidenav-hide] .sidenav .sidenav-header,html[data-netbox-color-mode=dark] body[data-sidenav-hidden] .sidenav .sidenav-header,html[data-netbox-color-mode=light] body[data-sidenav-hide] .sidenav .sidenav-header,html[data-netbox-color-mode=light] body[data-sidenav-hidden] .sidenav .sidenav-header{padding:.5rem}}@media print{html body[data-sidenav-hide] .sidenav .sidenav-brand,html body[data-sidenav-hidden] .sidenav .sidenav-brand,html[data-netbox-color-mode=dark] body[data-sidenav-hide] .sidenav .sidenav-brand,html[data-netbox-color-mode=dark] body[data-sidenav-hidden] .sidenav .sidenav-brand,html[data-netbox-color-mode=light] body[data-sidenav-hide] .sidenav .sidenav-brand,html[data-netbox-color-mode=light] body[data-sidenav-hidden] .sidenav .sidenav-brand{position:absolute;opacity:0}}@media print{html body[data-sidenav-hide] .sidenav .sidenav-brand-icon,html body[data-sidenav-hidden] .sidenav .sidenav-brand-icon,html[data-netbox-color-mode=dark] body[data-sidenav-hide] .sidenav .sidenav-brand-icon,html[data-netbox-color-mode=dark] body[data-sidenav-hidden] .sidenav .sidenav-brand-icon,html[data-netbox-color-mode=light] body[data-sidenav-hide] .sidenav .sidenav-brand-icon,html[data-netbox-color-mode=light] body[data-sidenav-hidden] .sidenav .sidenav-brand-icon{opacity:1}}@media print{html body[data-sidenav-hide] .sidenav .sidenav-toggle,html body[data-sidenav-hidden] .sidenav .sidenav-toggle,html[data-netbox-color-mode=dark] body[data-sidenav-hide] .sidenav .sidenav-toggle,html[data-netbox-color-mode=dark] body[data-sidenav-hidden] .sidenav .sidenav-toggle,html[data-netbox-color-mode=light] body[data-sidenav-hide] .sidenav .sidenav-toggle,html[data-netbox-color-mode=light] body[data-sidenav-hidden] .sidenav .sidenav-toggle{opacity:0;position:absolute;transition:unset;transition-delay:0ms}}@media print{html body[data-sidenav-hide] .sidenav .navbar-nav>.nav-item>.nav-link:after,html body[data-sidenav-hidden] .sidenav .navbar-nav>.nav-item>.nav-link:after,html[data-netbox-color-mode=dark] body[data-sidenav-hide] .sidenav .navbar-nav>.nav-item>.nav-link:after,html[data-netbox-color-mode=dark] body[data-sidenav-hidden] .sidenav .navbar-nav>.nav-item>.nav-link:after,html[data-netbox-color-mode=light] body[data-sidenav-hide] .sidenav .navbar-nav>.nav-item>.nav-link:after,html[data-netbox-color-mode=light] body[data-sidenav-hidden] .sidenav .navbar-nav>.nav-item>.nav-link:after{content:""}}@media print{html body[data-sidenav-hide] .sidenav .nav-item .collapse,html body[data-sidenav-hidden] .sidenav .nav-item .collapse,html[data-netbox-color-mode=dark] body[data-sidenav-hide] .sidenav .nav-item .collapse,html[data-netbox-color-mode=dark] body[data-sidenav-hidden] .sidenav .nav-item .collapse,html[data-netbox-color-mode=light] body[data-sidenav-hide] .sidenav .nav-item .collapse,html[data-netbox-color-mode=light] body[data-sidenav-hidden] .sidenav .nav-item .collapse{display:none}}@media print{html body[data-sidenav-hide] .sidenav .nav-link-text,html body[data-sidenav-hidden] .sidenav .nav-link-text,html[data-netbox-color-mode=dark] body[data-sidenav-hide] .sidenav .nav-link-text,html[data-netbox-color-mode=dark] body[data-sidenav-hidden] .sidenav .nav-link-text,html[data-netbox-color-mode=light] body[data-sidenav-hide] .sidenav .nav-link-text,html[data-netbox-color-mode=light] body[data-sidenav-hidden] .sidenav .nav-link-text{opacity:0}}@media print{html body[data-sidenav-hide] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle].active,html body[data-sidenav-hidden] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle].active,html[data-netbox-color-mode=dark] body[data-sidenav-hide] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle].active,html[data-netbox-color-mode=dark] body[data-sidenav-hidden] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle].active,html[data-netbox-color-mode=light] body[data-sidenav-hide] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle].active,html[data-netbox-color-mode=light] body[data-sidenav-hidden] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle].active{margin-right:0;margin-left:0;border-radius:unset}}@media print{html body[data-sidenav-show] .sidenav .sidenav-brand,html[data-netbox-color-mode=dark] body[data-sidenav-show] .sidenav .sidenav-brand,html[data-netbox-color-mode=light] body[data-sidenav-show] .sidenav .sidenav-brand{display:block}}@media print{html body[data-sidenav-show] .sidenav .nav-item .collapse,html[data-netbox-color-mode=dark] body[data-sidenav-show] .sidenav .nav-item .collapse,html[data-netbox-color-mode=light] body[data-sidenav-show] .sidenav .nav-item .collapse{height:auto;transition:all .1s ease-in-out}}@media print{html body[data-sidenav-show] .sidenav .nav-item .nav-link .nav-link-text,html[data-netbox-color-mode=dark] body[data-sidenav-show] .sidenav .nav-item .nav-link .nav-link-text,html[data-netbox-color-mode=light] body[data-sidenav-show] .sidenav .nav-item .nav-link .nav-link-text{opacity:1}}@media print{html body[data-sidenav-show] .sidenav .nav-item .sidenav-mini-icon,html[data-netbox-color-mode=dark] body[data-sidenav-show] .sidenav .nav-item .sidenav-mini-icon,html[data-netbox-color-mode=light] body[data-sidenav-show] .sidenav .nav-item .sidenav-mini-icon{opacity:0}}@media print and (min-width: 992px){html body[data-sidenav-show] .sidenav .sidenav-toggle,html[data-netbox-color-mode=dark] body[data-sidenav-show] .sidenav .sidenav-toggle,html[data-netbox-color-mode=light] body[data-sidenav-show] .sidenav .sidenav-toggle{position:relative;opacity:1}}@media print{html .simplebar-track.simplebar-vertical,html[data-netbox-color-mode=dark] .simplebar-track.simplebar-vertical,html[data-netbox-color-mode=light] .simplebar-track.simplebar-vertical{right:0;width:6px;background-color:transparent}}@media print{html .simplebar-track.simplebar-vertical .simplebar-scrollbar,html[data-netbox-color-mode=dark] .simplebar-track.simplebar-vertical .simplebar-scrollbar,html[data-netbox-color-mode=light] .simplebar-track.simplebar-vertical .simplebar-scrollbar{transition:none}}@media print{html .simplebar-track.simplebar-vertical .simplebar-scrollbar:before,html[data-netbox-color-mode=dark] .simplebar-track.simplebar-vertical .simplebar-scrollbar:before,html[data-netbox-color-mode=light] .simplebar-track.simplebar-vertical .simplebar-scrollbar:before{right:0;width:3px;background:var(--nbx-sidebar-scroll);border-radius:.375rem}}@media print{html .simplebar-track.simplebar-vertical.simplebar-hover .simplebar-scrollbar:before,html[data-netbox-color-mode=dark] .simplebar-track.simplebar-vertical.simplebar-hover .simplebar-scrollbar:before,html[data-netbox-color-mode=light] .simplebar-track.simplebar-vertical.simplebar-hover .simplebar-scrollbar:before{width:5px}}@media print{html body,html[data-netbox-color-mode=dark] body,html[data-netbox-color-mode=light] body{color:var(--nbx-body-color);background-color:var(--nbx-body-bg);font-size:.875rem}}@media print{html pre,html[data-netbox-color-mode=dark] pre,html[data-netbox-color-mode=light] pre{padding:1rem;white-space:pre;background-color:var(--nbx-pre-bg);border:1px solid var(--nbx-pre-border-color);border-radius:.375rem}}@media print{html small,html .small,html[data-netbox-color-mode=dark] .small,html[data-netbox-color-mode=light] .small,html[data-netbox-color-mode=dark] small,html[data-netbox-color-mode=light] small{font-size:smaller!important}}@media print{html a[type=button],html[data-netbox-color-mode=dark] a[type=button],html[data-netbox-color-mode=light] a[type=button]{-webkit-appearance:unset!important}}@media print{html *[data-href],html[data-netbox-color-mode=dark] *[data-href],html[data-netbox-color-mode=light] *[data-href]{cursor:pointer}}@media print{html .form-control:not([type=file]),html[data-netbox-color-mode=dark] .form-control:not([type=file]),html[data-netbox-color-mode=light] .form-control:not([type=file]){font-size:inherit}}@media print{html .badge,html[data-netbox-color-mode=dark] .badge,html[data-netbox-color-mode=light] .badge{font-size:.75rem}}@media print{html .text-xs,html[data-netbox-color-mode=dark] .text-xs,html[data-netbox-color-mode=light] .text-xs{font-size:.75rem!important;line-height:1.25!important}}@media print{html .border-input,html[data-netbox-color-mode=dark] .border-input,html[data-netbox-color-mode=light] .border-input{border:1px solid #e9ecef!important}}@media print{html .ws-nowrap,html[data-netbox-color-mode=dark] .ws-nowrap,html[data-netbox-color-mode=light] .ws-nowrap{white-space:nowrap!important}}@media print{html table tr .vertical-align,html table td .vertical-align,html[data-netbox-color-mode=dark] table tr .vertical-align,html[data-netbox-color-mode=dark] table td .vertical-align,html[data-netbox-color-mode=light] table tr .vertical-align,html[data-netbox-color-mode=light] table td .vertical-align{vertical-align:middle}}@media print{html .noprint,html[data-netbox-color-mode=dark] .noprint,html[data-netbox-color-mode=light] .noprint{display:none!important;visibility:hidden!important}}@media print{html .printonly,html[data-netbox-color-mode=dark] .printonly,html[data-netbox-color-mode=light] .printonly{display:none!important;visibility:hidden!important}}@media print{html .printonly,html[data-netbox-color-mode=dark] .printonly,html[data-netbox-color-mode=light] .printonly{display:block!important;visibility:visible!important}}@media print{html :root,html[data-netbox-color-mode=dark] :root,html[data-netbox-color-mode=light] :root{--nbx-sidebar-bg: #e9ecef;--nbx-sidebar-scroll: #adb5bd;--nbx-sidebar-link-hover-bg: rgba(108, 117, 125, .15);--nbx-sidebar-link-active-bg: #cfe2ff;--nbx-sidebar-title-color: #6c757d;--nbx-sidebar-shadow: inset 0px -25px 20px -25px rgba(0, 0, 0, .25);--nbx-breadcrumb-bg: #e9ecef;--nbx-body-bg: #fff;--nbx-body-color: #343a40;--nbx-pre-bg: #f8f9fa;--nbx-pre-border-color: #6c757d;--nbx-change-added: rgba(25, 135, 84, .4);--nbx-change-removed: rgba(220, 53, 69, .4);--nbx-cable-node-bg: #f8f9fa;--nbx-cable-node-border-color: #e9ecef;--nbx-cable-termination-bg: #e9ecef;--nbx-cable-termination-border-color: #dee2e6;--nbx-search-filter-border-left-color: #dee2e6;--nbx-color-mode-toggle-color: #0d6efd;--nbx-sidenav-link-color: #343a40;--nbx-sidenav-pin-color: #fd7e14;--nbx-sidenav-parent-color: #343a40;--nbx-sidenav-group-color: #343a40}}@media print{html :root[data-netbox-color-mode=dark],html[data-netbox-color-mode=dark] :root[data-netbox-color-mode=dark],html[data-netbox-color-mode=light] :root[data-netbox-color-mode=dark]{--nbx-sidebar-bg: #212529;--nbx-sidebar-scroll: #495057;--nbx-sidebar-link-active-bg: rgba(110, 168, 254, .25);--nbx-sidebar-link-hover-bg: rgba(173, 181, 189, .15);--nbx-sidebar-title-color: #6c757d;--nbx-sidebar-shadow: inset 0px -25px 20px -25px rgba(255, 255, 255, .05);--nbx-breadcrumb-bg: #343a40;--nbx-body-bg: #1b1f22;--nbx-body-color: #f8f9fa;--nbx-pre-bg: #495057;--nbx-pre-border-color: #6c757d;--nbx-change-added: rgba(117, 183, 152, .4);--nbx-change-removed: rgba(234, 134, 143, .4);--nbx-cable-node-bg: #495057;--nbx-cable-node-border-color: #6c757d;--nbx-cable-termination-bg: #343a40;--nbx-cable-termination-border-color: #495057;--nbx-search-filter-border-left-color: #6c757d;--nbx-color-mode-toggle-color: #ffda6a;--nbx-sidenav-link-color: #e9ecef;--nbx-sidenav-pin-color: #ffc107;--nbx-sidenav-parent-color: #e9ecef;--nbx-sidenav-group-color: #6c757d}}@media print{html .bg-primary button.btn-close,html[data-netbox-color-mode=dark] .bg-primary button.btn-close,html[data-netbox-color-mode=light] .bg-primary button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%231f496e'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-primary,html[data-netbox-color-mode=dark] .btn.btn-ghost-primary,html[data-netbox-color-mode=light] .btn.btn-ghost-primary{color:#337ab7}}@media print{html .btn.btn-ghost-primary:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-primary:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-primary:hover{background-color:#337ab71f}}@media print{html .alert.alert-primary a:not(.btn),html .table-primary a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-primary a:not(.btn),html[data-netbox-color-mode=dark] .table-primary a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-primary a:not(.btn),html[data-netbox-color-mode=light] .table-primary a:not(.btn){font-weight:700;color:#1f496e}}@media print{html .alert.alert-primary .btn:not([class*=btn-outline]),html .table-primary .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-primary .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-primary .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-primary .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-primary .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-primary a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-primary a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-primary a:not(.btn){font-weight:700;color:#adcae2}}@media print{html .badge.bg-primary,html .toast.bg-primary,html .toast-header.bg-primary,html .progress-bar.bg-primary,html[data-netbox-color-mode=dark] .badge.bg-primary,html[data-netbox-color-mode=dark] .toast.bg-primary,html[data-netbox-color-mode=dark] .toast-header.bg-primary,html[data-netbox-color-mode=dark] .progress-bar.bg-primary,html[data-netbox-color-mode=light] .badge.bg-primary,html[data-netbox-color-mode=light] .toast.bg-primary,html[data-netbox-color-mode=light] .toast-header.bg-primary,html[data-netbox-color-mode=light] .progress-bar.bg-primary{color:#fff}}@media print{html .bg-secondary button.btn-close,html[data-netbox-color-mode=dark] .bg-secondary button.btn-close,html[data-netbox-color-mode=light] .bg-secondary button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%2341464b'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-secondary,html[data-netbox-color-mode=dark] .btn.btn-ghost-secondary,html[data-netbox-color-mode=light] .btn.btn-ghost-secondary{color:#6c757d}}@media print{html .btn.btn-ghost-secondary:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-secondary:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-secondary:hover{background-color:#6c757d1f}}@media print{html .alert.alert-secondary a:not(.btn),html .table-secondary a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-secondary a:not(.btn),html[data-netbox-color-mode=dark] .table-secondary a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-secondary a:not(.btn),html[data-netbox-color-mode=light] .table-secondary a:not(.btn){font-weight:700;color:#41464b}}@media print{html .alert.alert-secondary .btn:not([class*=btn-outline]),html .table-secondary .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-secondary .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-secondary .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-secondary .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-secondary .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-secondary a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-secondary a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-secondary a:not(.btn){font-weight:700;color:#c4c8cb}}@media print{html .badge.bg-secondary,html .toast.bg-secondary,html .toast-header.bg-secondary,html .progress-bar.bg-secondary,html[data-netbox-color-mode=dark] .badge.bg-secondary,html[data-netbox-color-mode=dark] .toast.bg-secondary,html[data-netbox-color-mode=dark] .toast-header.bg-secondary,html[data-netbox-color-mode=dark] .progress-bar.bg-secondary,html[data-netbox-color-mode=light] .badge.bg-secondary,html[data-netbox-color-mode=light] .toast.bg-secondary,html[data-netbox-color-mode=light] .toast-header.bg-secondary,html[data-netbox-color-mode=light] .progress-bar.bg-secondary{color:#fff}}@media print{html .bg-success button.btn-close,html[data-netbox-color-mode=dark] .bg-success button.btn-close,html[data-netbox-color-mode=light] .bg-success button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230f5132'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-success,html[data-netbox-color-mode=dark] .btn.btn-ghost-success,html[data-netbox-color-mode=light] .btn.btn-ghost-success{color:#198754}}@media print{html .btn.btn-ghost-success:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-success:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-success:hover{background-color:#1987541f}}@media print{html .alert.alert-success a:not(.btn),html .table-success a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-success a:not(.btn),html[data-netbox-color-mode=dark] .table-success a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-success a:not(.btn),html[data-netbox-color-mode=light] .table-success a:not(.btn){font-weight:700;color:#0f5132}}@media print{html .alert.alert-success .btn:not([class*=btn-outline]),html .table-success .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-success .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-success .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-success .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-success .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-success a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-success a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-success a:not(.btn){font-weight:700;color:#a3cfbb}}@media print{html .badge.bg-success,html .toast.bg-success,html .toast-header.bg-success,html .progress-bar.bg-success,html[data-netbox-color-mode=dark] .badge.bg-success,html[data-netbox-color-mode=dark] .toast.bg-success,html[data-netbox-color-mode=dark] .toast-header.bg-success,html[data-netbox-color-mode=dark] .progress-bar.bg-success,html[data-netbox-color-mode=light] .badge.bg-success,html[data-netbox-color-mode=light] .toast.bg-success,html[data-netbox-color-mode=light] .toast-header.bg-success,html[data-netbox-color-mode=light] .progress-bar.bg-success{color:#fff}}@media print{html .bg-info button.btn-close,html[data-netbox-color-mode=dark] .bg-info button.btn-close,html[data-netbox-color-mode=light] .bg-info button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23055160'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-info,html[data-netbox-color-mode=dark] .btn.btn-ghost-info,html[data-netbox-color-mode=light] .btn.btn-ghost-info{color:#0dcaf0}}@media print{html .btn.btn-ghost-info:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-info:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-info:hover{background-color:#0dcaf01f}}@media print{html .alert.alert-info a:not(.btn),html .table-info a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-info a:not(.btn),html[data-netbox-color-mode=dark] .table-info a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-info a:not(.btn),html[data-netbox-color-mode=light] .table-info a:not(.btn){font-weight:700;color:#055160}}@media print{html .alert.alert-info .btn:not([class*=btn-outline]),html .table-info .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-info .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-info .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-info .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-info .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-info a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-info a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-info a:not(.btn){font-weight:700;color:#055160}}@media print{html .badge.bg-info,html .toast.bg-info,html .toast-header.bg-info,html .progress-bar.bg-info,html[data-netbox-color-mode=dark] .badge.bg-info,html[data-netbox-color-mode=dark] .toast.bg-info,html[data-netbox-color-mode=dark] .toast-header.bg-info,html[data-netbox-color-mode=dark] .progress-bar.bg-info,html[data-netbox-color-mode=light] .badge.bg-info,html[data-netbox-color-mode=light] .toast.bg-info,html[data-netbox-color-mode=light] .toast-header.bg-info,html[data-netbox-color-mode=light] .progress-bar.bg-info{color:#000}}@media print{html .bg-warning button.btn-close,html[data-netbox-color-mode=dark] .bg-warning button.btn-close,html[data-netbox-color-mode=light] .bg-warning button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23664d03'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-warning,html[data-netbox-color-mode=dark] .btn.btn-ghost-warning,html[data-netbox-color-mode=light] .btn.btn-ghost-warning{color:#ffc107}}@media print{html .btn.btn-ghost-warning:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-warning:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-warning:hover{background-color:#ffc1071f}}@media print{html .alert.alert-warning a:not(.btn),html .table-warning a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-warning a:not(.btn),html[data-netbox-color-mode=dark] .table-warning a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-warning a:not(.btn),html[data-netbox-color-mode=light] .table-warning a:not(.btn){font-weight:700;color:#664d03}}@media print{html .alert.alert-warning .btn:not([class*=btn-outline]),html .table-warning .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-warning .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-warning .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-warning .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-warning .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-warning a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-warning a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-warning a:not(.btn){font-weight:700;color:#664d03}}@media print{html .badge.bg-warning,html .toast.bg-warning,html .toast-header.bg-warning,html .progress-bar.bg-warning,html[data-netbox-color-mode=dark] .badge.bg-warning,html[data-netbox-color-mode=dark] .toast.bg-warning,html[data-netbox-color-mode=dark] .toast-header.bg-warning,html[data-netbox-color-mode=dark] .progress-bar.bg-warning,html[data-netbox-color-mode=light] .badge.bg-warning,html[data-netbox-color-mode=light] .toast.bg-warning,html[data-netbox-color-mode=light] .toast-header.bg-warning,html[data-netbox-color-mode=light] .progress-bar.bg-warning{color:#000}}@media print{html .bg-danger button.btn-close,html[data-netbox-color-mode=dark] .bg-danger button.btn-close,html[data-netbox-color-mode=light] .bg-danger button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23842029'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-danger,html[data-netbox-color-mode=dark] .btn.btn-ghost-danger,html[data-netbox-color-mode=light] .btn.btn-ghost-danger{color:#dc3545}}@media print{html .btn.btn-ghost-danger:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-danger:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-danger:hover{background-color:#dc35451f}}@media print{html .alert.alert-danger a:not(.btn),html .table-danger a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-danger a:not(.btn),html[data-netbox-color-mode=dark] .table-danger a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-danger a:not(.btn),html[data-netbox-color-mode=light] .table-danger a:not(.btn){font-weight:700;color:#842029}}@media print{html .alert.alert-danger .btn:not([class*=btn-outline]),html .table-danger .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-danger .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-danger .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-danger .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-danger .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-danger a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-danger a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-danger a:not(.btn){font-weight:700;color:#f1aeb5}}@media print{html .badge.bg-danger,html .toast.bg-danger,html .toast-header.bg-danger,html .progress-bar.bg-danger,html[data-netbox-color-mode=dark] .badge.bg-danger,html[data-netbox-color-mode=dark] .toast.bg-danger,html[data-netbox-color-mode=dark] .toast-header.bg-danger,html[data-netbox-color-mode=dark] .progress-bar.bg-danger,html[data-netbox-color-mode=light] .badge.bg-danger,html[data-netbox-color-mode=light] .toast.bg-danger,html[data-netbox-color-mode=light] .toast-header.bg-danger,html[data-netbox-color-mode=light] .progress-bar.bg-danger{color:#fff}}@media print{html .bg-light button.btn-close,html[data-netbox-color-mode=dark] .bg-light button.btn-close,html[data-netbox-color-mode=light] .bg-light button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23636464'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-light,html[data-netbox-color-mode=dark] .btn.btn-ghost-light,html[data-netbox-color-mode=light] .btn.btn-ghost-light{color:#f8f9fa}}@media print{html .btn.btn-ghost-light:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-light:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-light:hover{background-color:#f8f9fa1f}}@media print{html .alert.alert-light a:not(.btn),html .table-light a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-light a:not(.btn),html[data-netbox-color-mode=dark] .table-light a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-light a:not(.btn),html[data-netbox-color-mode=light] .table-light a:not(.btn){font-weight:700;color:#636464}}@media print{html .alert.alert-light .btn:not([class*=btn-outline]),html .table-light .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-light .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-light .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-light .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-light .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-light a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-light a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-light a:not(.btn){font-weight:700;color:#636464}}@media print{html .badge.bg-light,html .toast.bg-light,html .toast-header.bg-light,html .progress-bar.bg-light,html[data-netbox-color-mode=dark] .badge.bg-light,html[data-netbox-color-mode=dark] .toast.bg-light,html[data-netbox-color-mode=dark] .toast-header.bg-light,html[data-netbox-color-mode=dark] .progress-bar.bg-light,html[data-netbox-color-mode=light] .badge.bg-light,html[data-netbox-color-mode=light] .toast.bg-light,html[data-netbox-color-mode=light] .toast-header.bg-light,html[data-netbox-color-mode=light] .progress-bar.bg-light{color:#000}}@media print{html .bg-dark button.btn-close,html[data-netbox-color-mode=dark] .bg-dark button.btn-close,html[data-netbox-color-mode=light] .bg-dark button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23141619'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-dark,html[data-netbox-color-mode=dark] .btn.btn-ghost-dark,html[data-netbox-color-mode=light] .btn.btn-ghost-dark{color:#212529}}@media print{html .btn.btn-ghost-dark:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-dark:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-dark:hover{background-color:#2125291f}}@media print{html .alert.alert-dark a:not(.btn),html .table-dark a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-dark a:not(.btn),html[data-netbox-color-mode=dark] .table-dark a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-dark a:not(.btn),html[data-netbox-color-mode=light] .table-dark a:not(.btn){font-weight:700;color:#141619}}@media print{html .alert.alert-dark .btn:not([class*=btn-outline]),html .table-dark .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-dark .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-dark .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-dark .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-dark .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-dark a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-dark a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-dark a:not(.btn){font-weight:700;color:#a6a8a9}}@media print{html .badge.bg-dark,html .toast.bg-dark,html .toast-header.bg-dark,html .progress-bar.bg-dark,html[data-netbox-color-mode=dark] .badge.bg-dark,html[data-netbox-color-mode=dark] .toast.bg-dark,html[data-netbox-color-mode=dark] .toast-header.bg-dark,html[data-netbox-color-mode=dark] .progress-bar.bg-dark,html[data-netbox-color-mode=light] .badge.bg-dark,html[data-netbox-color-mode=light] .toast.bg-dark,html[data-netbox-color-mode=light] .toast-header.bg-dark,html[data-netbox-color-mode=light] .progress-bar.bg-dark{color:#fff}}@media print{html .bg-red button.btn-close,html[data-netbox-color-mode=dark] .bg-red button.btn-close,html[data-netbox-color-mode=light] .bg-red button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23842029'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-red,html[data-netbox-color-mode=dark] .btn.btn-ghost-red,html[data-netbox-color-mode=light] .btn.btn-ghost-red{color:#dc3545}}@media print{html .btn.btn-ghost-red:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-red:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-red:hover{background-color:#dc35451f}}@media print{html .alert.alert-red a:not(.btn),html .table-red a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-red a:not(.btn),html[data-netbox-color-mode=dark] .table-red a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-red a:not(.btn),html[data-netbox-color-mode=light] .table-red a:not(.btn){font-weight:700;color:#842029}}@media print{html .alert.alert-red .btn:not([class*=btn-outline]),html .table-red .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-red .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-red .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-red .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-red .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-red a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-red a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-red a:not(.btn){font-weight:700;color:#f1aeb5}}@media print{html .badge.bg-red,html .toast.bg-red,html .toast-header.bg-red,html .progress-bar.bg-red,html[data-netbox-color-mode=dark] .badge.bg-red,html[data-netbox-color-mode=dark] .toast.bg-red,html[data-netbox-color-mode=dark] .toast-header.bg-red,html[data-netbox-color-mode=dark] .progress-bar.bg-red,html[data-netbox-color-mode=light] .badge.bg-red,html[data-netbox-color-mode=light] .toast.bg-red,html[data-netbox-color-mode=light] .toast-header.bg-red,html[data-netbox-color-mode=light] .progress-bar.bg-red{color:#fff}}@media print{html .bg-yellow button.btn-close,html[data-netbox-color-mode=dark] .bg-yellow button.btn-close,html[data-netbox-color-mode=light] .bg-yellow button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23664d03'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-yellow,html[data-netbox-color-mode=dark] .btn.btn-ghost-yellow,html[data-netbox-color-mode=light] .btn.btn-ghost-yellow{color:#ffc107}}@media print{html .btn.btn-ghost-yellow:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-yellow:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-yellow:hover{background-color:#ffc1071f}}@media print{html .alert.alert-yellow a:not(.btn),html .table-yellow a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-yellow a:not(.btn),html[data-netbox-color-mode=dark] .table-yellow a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-yellow a:not(.btn),html[data-netbox-color-mode=light] .table-yellow a:not(.btn){font-weight:700;color:#664d03}}@media print{html .alert.alert-yellow .btn:not([class*=btn-outline]),html .table-yellow .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-yellow .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-yellow .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-yellow .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-yellow .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-yellow a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-yellow a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-yellow a:not(.btn){font-weight:700;color:#664d03}}@media print{html .badge.bg-yellow,html .toast.bg-yellow,html .toast-header.bg-yellow,html .progress-bar.bg-yellow,html[data-netbox-color-mode=dark] .badge.bg-yellow,html[data-netbox-color-mode=dark] .toast.bg-yellow,html[data-netbox-color-mode=dark] .toast-header.bg-yellow,html[data-netbox-color-mode=dark] .progress-bar.bg-yellow,html[data-netbox-color-mode=light] .badge.bg-yellow,html[data-netbox-color-mode=light] .toast.bg-yellow,html[data-netbox-color-mode=light] .toast-header.bg-yellow,html[data-netbox-color-mode=light] .progress-bar.bg-yellow{color:#000}}@media print{html .bg-green button.btn-close,html[data-netbox-color-mode=dark] .bg-green button.btn-close,html[data-netbox-color-mode=light] .bg-green button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230f5132'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-green,html[data-netbox-color-mode=dark] .btn.btn-ghost-green,html[data-netbox-color-mode=light] .btn.btn-ghost-green{color:#198754}}@media print{html .btn.btn-ghost-green:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-green:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-green:hover{background-color:#1987541f}}@media print{html .alert.alert-green a:not(.btn),html .table-green a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-green a:not(.btn),html[data-netbox-color-mode=dark] .table-green a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-green a:not(.btn),html[data-netbox-color-mode=light] .table-green a:not(.btn){font-weight:700;color:#0f5132}}@media print{html .alert.alert-green .btn:not([class*=btn-outline]),html .table-green .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-green .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-green .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-green .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-green .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-green a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-green a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-green a:not(.btn){font-weight:700;color:#a3cfbb}}@media print{html .badge.bg-green,html .toast.bg-green,html .toast-header.bg-green,html .progress-bar.bg-green,html[data-netbox-color-mode=dark] .badge.bg-green,html[data-netbox-color-mode=dark] .toast.bg-green,html[data-netbox-color-mode=dark] .toast-header.bg-green,html[data-netbox-color-mode=dark] .progress-bar.bg-green,html[data-netbox-color-mode=light] .badge.bg-green,html[data-netbox-color-mode=light] .toast.bg-green,html[data-netbox-color-mode=light] .toast-header.bg-green,html[data-netbox-color-mode=light] .progress-bar.bg-green{color:#fff}}@media print{html .bg-blue button.btn-close,html[data-netbox-color-mode=dark] .bg-blue button.btn-close,html[data-netbox-color-mode=light] .bg-blue button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23084298'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-blue,html[data-netbox-color-mode=dark] .btn.btn-ghost-blue,html[data-netbox-color-mode=light] .btn.btn-ghost-blue{color:#0d6efd}}@media print{html .btn.btn-ghost-blue:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-blue:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-blue:hover{background-color:#0d6efd1f}}@media print{html .alert.alert-blue a:not(.btn),html .table-blue a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-blue a:not(.btn),html[data-netbox-color-mode=dark] .table-blue a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-blue a:not(.btn),html[data-netbox-color-mode=light] .table-blue a:not(.btn){font-weight:700;color:#084298}}@media print{html .alert.alert-blue .btn:not([class*=btn-outline]),html .table-blue .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-blue .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-blue .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-blue .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-blue .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-blue a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-blue a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-blue a:not(.btn){font-weight:700;color:#9ec5fe}}@media print{html .badge.bg-blue,html .toast.bg-blue,html .toast-header.bg-blue,html .progress-bar.bg-blue,html[data-netbox-color-mode=dark] .badge.bg-blue,html[data-netbox-color-mode=dark] .toast.bg-blue,html[data-netbox-color-mode=dark] .toast-header.bg-blue,html[data-netbox-color-mode=dark] .progress-bar.bg-blue,html[data-netbox-color-mode=light] .badge.bg-blue,html[data-netbox-color-mode=light] .toast.bg-blue,html[data-netbox-color-mode=light] .toast-header.bg-blue,html[data-netbox-color-mode=light] .progress-bar.bg-blue{color:#fff}}@media print{html .bg-cyan button.btn-close,html[data-netbox-color-mode=dark] .bg-cyan button.btn-close,html[data-netbox-color-mode=light] .bg-cyan button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23055160'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-cyan,html[data-netbox-color-mode=dark] .btn.btn-ghost-cyan,html[data-netbox-color-mode=light] .btn.btn-ghost-cyan{color:#0dcaf0}}@media print{html .btn.btn-ghost-cyan:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-cyan:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-cyan:hover{background-color:#0dcaf01f}}@media print{html .alert.alert-cyan a:not(.btn),html .table-cyan a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-cyan a:not(.btn),html[data-netbox-color-mode=dark] .table-cyan a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-cyan a:not(.btn),html[data-netbox-color-mode=light] .table-cyan a:not(.btn){font-weight:700;color:#055160}}@media print{html .alert.alert-cyan .btn:not([class*=btn-outline]),html .table-cyan .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-cyan .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-cyan .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-cyan .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-cyan .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-cyan a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-cyan a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-cyan a:not(.btn){font-weight:700;color:#055160}}@media print{html .badge.bg-cyan,html .toast.bg-cyan,html .toast-header.bg-cyan,html .progress-bar.bg-cyan,html[data-netbox-color-mode=dark] .badge.bg-cyan,html[data-netbox-color-mode=dark] .toast.bg-cyan,html[data-netbox-color-mode=dark] .toast-header.bg-cyan,html[data-netbox-color-mode=dark] .progress-bar.bg-cyan,html[data-netbox-color-mode=light] .badge.bg-cyan,html[data-netbox-color-mode=light] .toast.bg-cyan,html[data-netbox-color-mode=light] .toast-header.bg-cyan,html[data-netbox-color-mode=light] .progress-bar.bg-cyan{color:#000}}@media print{html .bg-indigo button.btn-close,html[data-netbox-color-mode=dark] .bg-indigo button.btn-close,html[data-netbox-color-mode=light] .bg-indigo button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%233d0a91'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-indigo,html[data-netbox-color-mode=dark] .btn.btn-ghost-indigo,html[data-netbox-color-mode=light] .btn.btn-ghost-indigo{color:#6610f2}}@media print{html .btn.btn-ghost-indigo:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-indigo:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-indigo:hover{background-color:#6610f21f}}@media print{html .alert.alert-indigo a:not(.btn),html .table-indigo a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-indigo a:not(.btn),html[data-netbox-color-mode=dark] .table-indigo a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-indigo a:not(.btn),html[data-netbox-color-mode=light] .table-indigo a:not(.btn){font-weight:700;color:#3d0a91}}@media print{html .alert.alert-indigo .btn:not([class*=btn-outline]),html .table-indigo .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-indigo .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-indigo .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-indigo .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-indigo .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-indigo a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-indigo a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-indigo a:not(.btn){font-weight:700;color:#c29ffa}}@media print{html .badge.bg-indigo,html .toast.bg-indigo,html .toast-header.bg-indigo,html .progress-bar.bg-indigo,html[data-netbox-color-mode=dark] .badge.bg-indigo,html[data-netbox-color-mode=dark] .toast.bg-indigo,html[data-netbox-color-mode=dark] .toast-header.bg-indigo,html[data-netbox-color-mode=dark] .progress-bar.bg-indigo,html[data-netbox-color-mode=light] .badge.bg-indigo,html[data-netbox-color-mode=light] .toast.bg-indigo,html[data-netbox-color-mode=light] .toast-header.bg-indigo,html[data-netbox-color-mode=light] .progress-bar.bg-indigo{color:#fff}}@media print{html .bg-purple button.btn-close,html[data-netbox-color-mode=dark] .bg-purple button.btn-close,html[data-netbox-color-mode=light] .bg-purple button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23432874'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-purple,html[data-netbox-color-mode=dark] .btn.btn-ghost-purple,html[data-netbox-color-mode=light] .btn.btn-ghost-purple{color:#6f42c1}}@media print{html .btn.btn-ghost-purple:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-purple:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-purple:hover{background-color:#6f42c11f}}@media print{html .alert.alert-purple a:not(.btn),html .table-purple a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-purple a:not(.btn),html[data-netbox-color-mode=dark] .table-purple a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-purple a:not(.btn),html[data-netbox-color-mode=light] .table-purple a:not(.btn){font-weight:700;color:#432874}}@media print{html .alert.alert-purple .btn:not([class*=btn-outline]),html .table-purple .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-purple .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-purple .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-purple .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-purple .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-purple a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-purple a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-purple a:not(.btn){font-weight:700;color:#c5b3e6}}@media print{html .badge.bg-purple,html .toast.bg-purple,html .toast-header.bg-purple,html .progress-bar.bg-purple,html[data-netbox-color-mode=dark] .badge.bg-purple,html[data-netbox-color-mode=dark] .toast.bg-purple,html[data-netbox-color-mode=dark] .toast-header.bg-purple,html[data-netbox-color-mode=dark] .progress-bar.bg-purple,html[data-netbox-color-mode=light] .badge.bg-purple,html[data-netbox-color-mode=light] .toast.bg-purple,html[data-netbox-color-mode=light] .toast-header.bg-purple,html[data-netbox-color-mode=light] .progress-bar.bg-purple{color:#fff}}@media print{html .bg-pink button.btn-close,html[data-netbox-color-mode=dark] .bg-pink button.btn-close,html[data-netbox-color-mode=light] .bg-pink button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23801f4f'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-pink,html[data-netbox-color-mode=dark] .btn.btn-ghost-pink,html[data-netbox-color-mode=light] .btn.btn-ghost-pink{color:#d63384}}@media print{html .btn.btn-ghost-pink:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-pink:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-pink:hover{background-color:#d633841f}}@media print{html .alert.alert-pink a:not(.btn),html .table-pink a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-pink a:not(.btn),html[data-netbox-color-mode=dark] .table-pink a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-pink a:not(.btn),html[data-netbox-color-mode=light] .table-pink a:not(.btn){font-weight:700;color:#801f4f}}@media print{html .alert.alert-pink .btn:not([class*=btn-outline]),html .table-pink .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-pink .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-pink .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-pink .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-pink .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-pink a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-pink a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-pink a:not(.btn){font-weight:700;color:#efadce}}@media print{html .badge.bg-pink,html .toast.bg-pink,html .toast-header.bg-pink,html .progress-bar.bg-pink,html[data-netbox-color-mode=dark] .badge.bg-pink,html[data-netbox-color-mode=dark] .toast.bg-pink,html[data-netbox-color-mode=dark] .toast-header.bg-pink,html[data-netbox-color-mode=dark] .progress-bar.bg-pink,html[data-netbox-color-mode=light] .badge.bg-pink,html[data-netbox-color-mode=light] .toast.bg-pink,html[data-netbox-color-mode=light] .toast-header.bg-pink,html[data-netbox-color-mode=light] .progress-bar.bg-pink{color:#fff}}@media print{html .bg-darker button.btn-close,html[data-netbox-color-mode=dark] .bg-darker button.btn-close,html[data-netbox-color-mode=light] .bg-darker button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23101314'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-darker,html[data-netbox-color-mode=dark] .btn.btn-ghost-darker,html[data-netbox-color-mode=light] .btn.btn-ghost-darker{color:#1b1f22}}@media print{html .btn.btn-ghost-darker:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-darker:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-darker:hover{background-color:#1b1f221f}}@media print{html .alert.alert-darker a:not(.btn),html .table-darker a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-darker a:not(.btn),html[data-netbox-color-mode=dark] .table-darker a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-darker a:not(.btn),html[data-netbox-color-mode=light] .table-darker a:not(.btn){font-weight:700;color:#101314}}@media print{html .alert.alert-darker .btn:not([class*=btn-outline]),html .table-darker .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-darker .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-darker .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-darker .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-darker .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-darker a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-darker a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-darker a:not(.btn){font-weight:700;color:#a4a5a7}}@media print{html .badge.bg-darker,html .toast.bg-darker,html .toast-header.bg-darker,html .progress-bar.bg-darker,html[data-netbox-color-mode=dark] .badge.bg-darker,html[data-netbox-color-mode=dark] .toast.bg-darker,html[data-netbox-color-mode=dark] .toast-header.bg-darker,html[data-netbox-color-mode=dark] .progress-bar.bg-darker,html[data-netbox-color-mode=light] .badge.bg-darker,html[data-netbox-color-mode=light] .toast.bg-darker,html[data-netbox-color-mode=light] .toast-header.bg-darker,html[data-netbox-color-mode=light] .progress-bar.bg-darker{color:#fff}}@media print{html .bg-darkest button.btn-close,html[data-netbox-color-mode=dark] .bg-darkest button.btn-close,html[data-netbox-color-mode=light] .bg-darkest button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230e1011'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-darkest,html[data-netbox-color-mode=dark] .btn.btn-ghost-darkest,html[data-netbox-color-mode=light] .btn.btn-ghost-darkest{color:#171b1d}}@media print{html .btn.btn-ghost-darkest:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-darkest:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-darkest:hover{background-color:#171b1d1f}}@media print{html .alert.alert-darkest a:not(.btn),html .table-darkest a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-darkest a:not(.btn),html[data-netbox-color-mode=dark] .table-darkest a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-darkest a:not(.btn),html[data-netbox-color-mode=light] .table-darkest a:not(.btn){font-weight:700;color:#0e1011}}@media print{html .alert.alert-darkest .btn:not([class*=btn-outline]),html .table-darkest .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-darkest .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-darkest .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-darkest .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-darkest .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-darkest a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-darkest a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-darkest a:not(.btn){font-weight:700;color:#a2a4a5}}@media print{html .badge.bg-darkest,html .toast.bg-darkest,html .toast-header.bg-darkest,html .progress-bar.bg-darkest,html[data-netbox-color-mode=dark] .badge.bg-darkest,html[data-netbox-color-mode=dark] .toast.bg-darkest,html[data-netbox-color-mode=dark] .toast-header.bg-darkest,html[data-netbox-color-mode=dark] .progress-bar.bg-darkest,html[data-netbox-color-mode=light] .badge.bg-darkest,html[data-netbox-color-mode=light] .toast.bg-darkest,html[data-netbox-color-mode=light] .toast-header.bg-darkest,html[data-netbox-color-mode=light] .progress-bar.bg-darkest{color:#fff}}@media print{html .bg-gray button.btn-close,html[data-netbox-color-mode=dark] .bg-gray button.btn-close,html[data-netbox-color-mode=light] .bg-gray button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23525557'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-gray,html[data-netbox-color-mode=dark] .btn.btn-ghost-gray,html[data-netbox-color-mode=light] .btn.btn-ghost-gray{color:#ced4da}}@media print{html .btn.btn-ghost-gray:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-gray:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-gray:hover{background-color:#ced4da1f}}@media print{html .alert.alert-gray a:not(.btn),html .table-gray a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-gray a:not(.btn),html[data-netbox-color-mode=dark] .table-gray a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-gray a:not(.btn),html[data-netbox-color-mode=light] .table-gray a:not(.btn){font-weight:700;color:#525557}}@media print{html .alert.alert-gray .btn:not([class*=btn-outline]),html .table-gray .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-gray .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-gray .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-gray .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-gray .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-gray a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-gray a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-gray a:not(.btn){font-weight:700;color:#525557}}@media print{html .badge.bg-gray,html .toast.bg-gray,html .toast-header.bg-gray,html .progress-bar.bg-gray,html[data-netbox-color-mode=dark] .badge.bg-gray,html[data-netbox-color-mode=dark] .toast.bg-gray,html[data-netbox-color-mode=dark] .toast-header.bg-gray,html[data-netbox-color-mode=dark] .progress-bar.bg-gray,html[data-netbox-color-mode=light] .badge.bg-gray,html[data-netbox-color-mode=light] .toast.bg-gray,html[data-netbox-color-mode=light] .toast-header.bg-gray,html[data-netbox-color-mode=light] .progress-bar.bg-gray{color:#000}}@media print{html .bg-gray-100 button.btn-close,html[data-netbox-color-mode=dark] .bg-gray-100 button.btn-close,html[data-netbox-color-mode=light] .bg-gray-100 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23636464'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-gray-100,html[data-netbox-color-mode=dark] .btn.btn-ghost-gray-100,html[data-netbox-color-mode=light] .btn.btn-ghost-gray-100{color:#f8f9fa}}@media print{html .btn.btn-ghost-gray-100:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-gray-100:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-gray-100:hover{background-color:#f8f9fa1f}}@media print{html .alert.alert-gray-100 a:not(.btn),html .table-gray-100 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-gray-100 a:not(.btn),html[data-netbox-color-mode=dark] .table-gray-100 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-gray-100 a:not(.btn),html[data-netbox-color-mode=light] .table-gray-100 a:not(.btn){font-weight:700;color:#636464}}@media print{html .alert.alert-gray-100 .btn:not([class*=btn-outline]),html .table-gray-100 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-gray-100 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-gray-100 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-gray-100 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-gray-100 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-gray-100 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-gray-100 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-gray-100 a:not(.btn){font-weight:700;color:#636464}}@media print{html .badge.bg-gray-100,html .toast.bg-gray-100,html .toast-header.bg-gray-100,html .progress-bar.bg-gray-100,html[data-netbox-color-mode=dark] .badge.bg-gray-100,html[data-netbox-color-mode=dark] .toast.bg-gray-100,html[data-netbox-color-mode=dark] .toast-header.bg-gray-100,html[data-netbox-color-mode=dark] .progress-bar.bg-gray-100,html[data-netbox-color-mode=light] .badge.bg-gray-100,html[data-netbox-color-mode=light] .toast.bg-gray-100,html[data-netbox-color-mode=light] .toast-header.bg-gray-100,html[data-netbox-color-mode=light] .progress-bar.bg-gray-100{color:#000}}@media print{html .bg-gray-200 button.btn-close,html[data-netbox-color-mode=dark] .bg-gray-200 button.btn-close,html[data-netbox-color-mode=light] .bg-gray-200 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%235d5e60'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-gray-200,html[data-netbox-color-mode=dark] .btn.btn-ghost-gray-200,html[data-netbox-color-mode=light] .btn.btn-ghost-gray-200{color:#e9ecef}}@media print{html .btn.btn-ghost-gray-200:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-gray-200:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-gray-200:hover{background-color:#e9ecef1f}}@media print{html .alert.alert-gray-200 a:not(.btn),html .table-gray-200 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-gray-200 a:not(.btn),html[data-netbox-color-mode=dark] .table-gray-200 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-gray-200 a:not(.btn),html[data-netbox-color-mode=light] .table-gray-200 a:not(.btn){font-weight:700;color:#5d5e60}}@media print{html .alert.alert-gray-200 .btn:not([class*=btn-outline]),html .table-gray-200 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-gray-200 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-gray-200 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-gray-200 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-gray-200 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-gray-200 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-gray-200 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-gray-200 a:not(.btn){font-weight:700;color:#5d5e60}}@media print{html .badge.bg-gray-200,html .toast.bg-gray-200,html .toast-header.bg-gray-200,html .progress-bar.bg-gray-200,html[data-netbox-color-mode=dark] .badge.bg-gray-200,html[data-netbox-color-mode=dark] .toast.bg-gray-200,html[data-netbox-color-mode=dark] .toast-header.bg-gray-200,html[data-netbox-color-mode=dark] .progress-bar.bg-gray-200,html[data-netbox-color-mode=light] .badge.bg-gray-200,html[data-netbox-color-mode=light] .toast.bg-gray-200,html[data-netbox-color-mode=light] .toast-header.bg-gray-200,html[data-netbox-color-mode=light] .progress-bar.bg-gray-200{color:#000}}@media print{html .bg-gray-300 button.btn-close,html[data-netbox-color-mode=dark] .bg-gray-300 button.btn-close,html[data-netbox-color-mode=light] .bg-gray-300 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23595a5c'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-gray-300,html[data-netbox-color-mode=dark] .btn.btn-ghost-gray-300,html[data-netbox-color-mode=light] .btn.btn-ghost-gray-300{color:#dee2e6}}@media print{html .btn.btn-ghost-gray-300:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-gray-300:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-gray-300:hover{background-color:#dee2e61f}}@media print{html .alert.alert-gray-300 a:not(.btn),html .table-gray-300 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-gray-300 a:not(.btn),html[data-netbox-color-mode=dark] .table-gray-300 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-gray-300 a:not(.btn),html[data-netbox-color-mode=light] .table-gray-300 a:not(.btn){font-weight:700;color:#595a5c}}@media print{html .alert.alert-gray-300 .btn:not([class*=btn-outline]),html .table-gray-300 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-gray-300 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-gray-300 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-gray-300 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-gray-300 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-gray-300 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-gray-300 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-gray-300 a:not(.btn){font-weight:700;color:#595a5c}}@media print{html .badge.bg-gray-300,html .toast.bg-gray-300,html .toast-header.bg-gray-300,html .progress-bar.bg-gray-300,html[data-netbox-color-mode=dark] .badge.bg-gray-300,html[data-netbox-color-mode=dark] .toast.bg-gray-300,html[data-netbox-color-mode=dark] .toast-header.bg-gray-300,html[data-netbox-color-mode=dark] .progress-bar.bg-gray-300,html[data-netbox-color-mode=light] .badge.bg-gray-300,html[data-netbox-color-mode=light] .toast.bg-gray-300,html[data-netbox-color-mode=light] .toast-header.bg-gray-300,html[data-netbox-color-mode=light] .progress-bar.bg-gray-300{color:#000}}@media print{html .bg-gray-400 button.btn-close,html[data-netbox-color-mode=dark] .bg-gray-400 button.btn-close,html[data-netbox-color-mode=light] .bg-gray-400 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23525557'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-gray-400,html[data-netbox-color-mode=dark] .btn.btn-ghost-gray-400,html[data-netbox-color-mode=light] .btn.btn-ghost-gray-400{color:#ced4da}}@media print{html .btn.btn-ghost-gray-400:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-gray-400:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-gray-400:hover{background-color:#ced4da1f}}@media print{html .alert.alert-gray-400 a:not(.btn),html .table-gray-400 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-gray-400 a:not(.btn),html[data-netbox-color-mode=dark] .table-gray-400 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-gray-400 a:not(.btn),html[data-netbox-color-mode=light] .table-gray-400 a:not(.btn){font-weight:700;color:#525557}}@media print{html .alert.alert-gray-400 .btn:not([class*=btn-outline]),html .table-gray-400 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-gray-400 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-gray-400 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-gray-400 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-gray-400 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-gray-400 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-gray-400 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-gray-400 a:not(.btn){font-weight:700;color:#525557}}@media print{html .badge.bg-gray-400,html .toast.bg-gray-400,html .toast-header.bg-gray-400,html .progress-bar.bg-gray-400,html[data-netbox-color-mode=dark] .badge.bg-gray-400,html[data-netbox-color-mode=dark] .toast.bg-gray-400,html[data-netbox-color-mode=dark] .toast-header.bg-gray-400,html[data-netbox-color-mode=dark] .progress-bar.bg-gray-400,html[data-netbox-color-mode=light] .badge.bg-gray-400,html[data-netbox-color-mode=light] .toast.bg-gray-400,html[data-netbox-color-mode=light] .toast-header.bg-gray-400,html[data-netbox-color-mode=light] .progress-bar.bg-gray-400{color:#000}}@media print{html .bg-gray-500 button.btn-close,html[data-netbox-color-mode=dark] .bg-gray-500 button.btn-close,html[data-netbox-color-mode=light] .bg-gray-500 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23686d71'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-gray-500,html[data-netbox-color-mode=dark] .btn.btn-ghost-gray-500,html[data-netbox-color-mode=light] .btn.btn-ghost-gray-500{color:#adb5bd}}@media print{html .btn.btn-ghost-gray-500:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-gray-500:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-gray-500:hover{background-color:#adb5bd1f}}@media print{html .alert.alert-gray-500 a:not(.btn),html .table-gray-500 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-gray-500 a:not(.btn),html[data-netbox-color-mode=dark] .table-gray-500 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-gray-500 a:not(.btn),html[data-netbox-color-mode=light] .table-gray-500 a:not(.btn){font-weight:700;color:#686d71}}@media print{html .alert.alert-gray-500 .btn:not([class*=btn-outline]),html .table-gray-500 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-gray-500 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-gray-500 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-gray-500 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-gray-500 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-gray-500 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-gray-500 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-gray-500 a:not(.btn){font-weight:700;color:#45484c}}@media print{html .badge.bg-gray-500,html .toast.bg-gray-500,html .toast-header.bg-gray-500,html .progress-bar.bg-gray-500,html[data-netbox-color-mode=dark] .badge.bg-gray-500,html[data-netbox-color-mode=dark] .toast.bg-gray-500,html[data-netbox-color-mode=dark] .toast-header.bg-gray-500,html[data-netbox-color-mode=dark] .progress-bar.bg-gray-500,html[data-netbox-color-mode=light] .badge.bg-gray-500,html[data-netbox-color-mode=light] .toast.bg-gray-500,html[data-netbox-color-mode=light] .toast-header.bg-gray-500,html[data-netbox-color-mode=light] .progress-bar.bg-gray-500{color:#000}}@media print{html .bg-gray-600 button.btn-close,html[data-netbox-color-mode=dark] .bg-gray-600 button.btn-close,html[data-netbox-color-mode=light] .bg-gray-600 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%2341464b'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-gray-600,html[data-netbox-color-mode=dark] .btn.btn-ghost-gray-600,html[data-netbox-color-mode=light] .btn.btn-ghost-gray-600{color:#6c757d}}@media print{html .btn.btn-ghost-gray-600:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-gray-600:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-gray-600:hover{background-color:#6c757d1f}}@media print{html .alert.alert-gray-600 a:not(.btn),html .table-gray-600 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-gray-600 a:not(.btn),html[data-netbox-color-mode=dark] .table-gray-600 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-gray-600 a:not(.btn),html[data-netbox-color-mode=light] .table-gray-600 a:not(.btn){font-weight:700;color:#41464b}}@media print{html .alert.alert-gray-600 .btn:not([class*=btn-outline]),html .table-gray-600 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-gray-600 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-gray-600 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-gray-600 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-gray-600 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-gray-600 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-gray-600 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-gray-600 a:not(.btn){font-weight:700;color:#c4c8cb}}@media print{html .badge.bg-gray-600,html .toast.bg-gray-600,html .toast-header.bg-gray-600,html .progress-bar.bg-gray-600,html[data-netbox-color-mode=dark] .badge.bg-gray-600,html[data-netbox-color-mode=dark] .toast.bg-gray-600,html[data-netbox-color-mode=dark] .toast-header.bg-gray-600,html[data-netbox-color-mode=dark] .progress-bar.bg-gray-600,html[data-netbox-color-mode=light] .badge.bg-gray-600,html[data-netbox-color-mode=light] .toast.bg-gray-600,html[data-netbox-color-mode=light] .toast-header.bg-gray-600,html[data-netbox-color-mode=light] .progress-bar.bg-gray-600{color:#fff}}@media print{html .bg-gray-700 button.btn-close,html[data-netbox-color-mode=dark] .bg-gray-700 button.btn-close,html[data-netbox-color-mode=light] .bg-gray-700 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%232c3034'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-gray-700,html[data-netbox-color-mode=dark] .btn.btn-ghost-gray-700,html[data-netbox-color-mode=light] .btn.btn-ghost-gray-700{color:#495057}}@media print{html .btn.btn-ghost-gray-700:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-gray-700:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-gray-700:hover{background-color:#4950571f}}@media print{html .alert.alert-gray-700 a:not(.btn),html .table-gray-700 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-gray-700 a:not(.btn),html[data-netbox-color-mode=dark] .table-gray-700 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-gray-700 a:not(.btn),html[data-netbox-color-mode=light] .table-gray-700 a:not(.btn){font-weight:700;color:#2c3034}}@media print{html .alert.alert-gray-700 .btn:not([class*=btn-outline]),html .table-gray-700 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-gray-700 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-gray-700 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-gray-700 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-gray-700 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-gray-700 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-gray-700 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-gray-700 a:not(.btn){font-weight:700;color:#b6b9bc}}@media print{html .badge.bg-gray-700,html .toast.bg-gray-700,html .toast-header.bg-gray-700,html .progress-bar.bg-gray-700,html[data-netbox-color-mode=dark] .badge.bg-gray-700,html[data-netbox-color-mode=dark] .toast.bg-gray-700,html[data-netbox-color-mode=dark] .toast-header.bg-gray-700,html[data-netbox-color-mode=dark] .progress-bar.bg-gray-700,html[data-netbox-color-mode=light] .badge.bg-gray-700,html[data-netbox-color-mode=light] .toast.bg-gray-700,html[data-netbox-color-mode=light] .toast-header.bg-gray-700,html[data-netbox-color-mode=light] .progress-bar.bg-gray-700{color:#fff}}@media print{html .bg-gray-800 button.btn-close,html[data-netbox-color-mode=dark] .bg-gray-800 button.btn-close,html[data-netbox-color-mode=light] .bg-gray-800 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%231f2326'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-gray-800,html[data-netbox-color-mode=dark] .btn.btn-ghost-gray-800,html[data-netbox-color-mode=light] .btn.btn-ghost-gray-800{color:#343a40}}@media print{html .btn.btn-ghost-gray-800:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-gray-800:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-gray-800:hover{background-color:#343a401f}}@media print{html .alert.alert-gray-800 a:not(.btn),html .table-gray-800 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-gray-800 a:not(.btn),html[data-netbox-color-mode=dark] .table-gray-800 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-gray-800 a:not(.btn),html[data-netbox-color-mode=light] .table-gray-800 a:not(.btn){font-weight:700;color:#1f2326}}@media print{html .alert.alert-gray-800 .btn:not([class*=btn-outline]),html .table-gray-800 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-gray-800 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-gray-800 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-gray-800 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-gray-800 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-gray-800 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-gray-800 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-gray-800 a:not(.btn){font-weight:700;color:#aeb0b3}}@media print{html .badge.bg-gray-800,html .toast.bg-gray-800,html .toast-header.bg-gray-800,html .progress-bar.bg-gray-800,html[data-netbox-color-mode=dark] .badge.bg-gray-800,html[data-netbox-color-mode=dark] .toast.bg-gray-800,html[data-netbox-color-mode=dark] .toast-header.bg-gray-800,html[data-netbox-color-mode=dark] .progress-bar.bg-gray-800,html[data-netbox-color-mode=light] .badge.bg-gray-800,html[data-netbox-color-mode=light] .toast.bg-gray-800,html[data-netbox-color-mode=light] .toast-header.bg-gray-800,html[data-netbox-color-mode=light] .progress-bar.bg-gray-800{color:#fff}}@media print{html .bg-gray-900 button.btn-close,html[data-netbox-color-mode=dark] .bg-gray-900 button.btn-close,html[data-netbox-color-mode=light] .bg-gray-900 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23141619'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-gray-900,html[data-netbox-color-mode=dark] .btn.btn-ghost-gray-900,html[data-netbox-color-mode=light] .btn.btn-ghost-gray-900{color:#212529}}@media print{html .btn.btn-ghost-gray-900:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-gray-900:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-gray-900:hover{background-color:#2125291f}}@media print{html .alert.alert-gray-900 a:not(.btn),html .table-gray-900 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-gray-900 a:not(.btn),html[data-netbox-color-mode=dark] .table-gray-900 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-gray-900 a:not(.btn),html[data-netbox-color-mode=light] .table-gray-900 a:not(.btn){font-weight:700;color:#141619}}@media print{html .alert.alert-gray-900 .btn:not([class*=btn-outline]),html .table-gray-900 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-gray-900 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-gray-900 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-gray-900 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-gray-900 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-gray-900 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-gray-900 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-gray-900 a:not(.btn){font-weight:700;color:#a6a8a9}}@media print{html .badge.bg-gray-900,html .toast.bg-gray-900,html .toast-header.bg-gray-900,html .progress-bar.bg-gray-900,html[data-netbox-color-mode=dark] .badge.bg-gray-900,html[data-netbox-color-mode=dark] .toast.bg-gray-900,html[data-netbox-color-mode=dark] .toast-header.bg-gray-900,html[data-netbox-color-mode=dark] .progress-bar.bg-gray-900,html[data-netbox-color-mode=light] .badge.bg-gray-900,html[data-netbox-color-mode=light] .toast.bg-gray-900,html[data-netbox-color-mode=light] .toast-header.bg-gray-900,html[data-netbox-color-mode=light] .progress-bar.bg-gray-900{color:#fff}}@media print{html .bg-red-100 button.btn-close,html[data-netbox-color-mode=dark] .bg-red-100 button.btn-close,html[data-netbox-color-mode=light] .bg-red-100 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23635657'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-red-100,html[data-netbox-color-mode=dark] .btn.btn-ghost-red-100,html[data-netbox-color-mode=light] .btn.btn-ghost-red-100{color:#f8d7da}}@media print{html .btn.btn-ghost-red-100:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-red-100:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-red-100:hover{background-color:#f8d7da1f}}@media print{html .alert.alert-red-100 a:not(.btn),html .table-red-100 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-red-100 a:not(.btn),html[data-netbox-color-mode=dark] .table-red-100 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-red-100 a:not(.btn),html[data-netbox-color-mode=light] .table-red-100 a:not(.btn){font-weight:700;color:#635657}}@media print{html .alert.alert-red-100 .btn:not([class*=btn-outline]),html .table-red-100 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-red-100 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-red-100 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-red-100 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-red-100 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-red-100 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-red-100 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-red-100 a:not(.btn){font-weight:700;color:#635657}}@media print{html .badge.bg-red-100,html .toast.bg-red-100,html .toast-header.bg-red-100,html .progress-bar.bg-red-100,html[data-netbox-color-mode=dark] .badge.bg-red-100,html[data-netbox-color-mode=dark] .toast.bg-red-100,html[data-netbox-color-mode=dark] .toast-header.bg-red-100,html[data-netbox-color-mode=dark] .progress-bar.bg-red-100,html[data-netbox-color-mode=light] .badge.bg-red-100,html[data-netbox-color-mode=light] .toast.bg-red-100,html[data-netbox-color-mode=light] .toast-header.bg-red-100,html[data-netbox-color-mode=light] .progress-bar.bg-red-100{color:#000}}@media print{html .bg-red-200 button.btn-close,html[data-netbox-color-mode=dark] .bg-red-200 button.btn-close,html[data-netbox-color-mode=light] .bg-red-200 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23604648'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-red-200,html[data-netbox-color-mode=dark] .btn.btn-ghost-red-200,html[data-netbox-color-mode=light] .btn.btn-ghost-red-200{color:#f1aeb5}}@media print{html .btn.btn-ghost-red-200:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-red-200:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-red-200:hover{background-color:#f1aeb51f}}@media print{html .alert.alert-red-200 a:not(.btn),html .table-red-200 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-red-200 a:not(.btn),html[data-netbox-color-mode=dark] .table-red-200 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-red-200 a:not(.btn),html[data-netbox-color-mode=light] .table-red-200 a:not(.btn){font-weight:700;color:#604648}}@media print{html .alert.alert-red-200 .btn:not([class*=btn-outline]),html .table-red-200 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-red-200 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-red-200 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-red-200 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-red-200 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-red-200 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-red-200 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-red-200 a:not(.btn){font-weight:700;color:#604648}}@media print{html .badge.bg-red-200,html .toast.bg-red-200,html .toast-header.bg-red-200,html .progress-bar.bg-red-200,html[data-netbox-color-mode=dark] .badge.bg-red-200,html[data-netbox-color-mode=dark] .toast.bg-red-200,html[data-netbox-color-mode=dark] .toast-header.bg-red-200,html[data-netbox-color-mode=dark] .progress-bar.bg-red-200,html[data-netbox-color-mode=light] .badge.bg-red-200,html[data-netbox-color-mode=light] .toast.bg-red-200,html[data-netbox-color-mode=light] .toast-header.bg-red-200,html[data-netbox-color-mode=light] .progress-bar.bg-red-200{color:#000}}@media print{html .bg-red-300 button.btn-close,html[data-netbox-color-mode=dark] .bg-red-300 button.btn-close,html[data-netbox-color-mode=light] .bg-red-300 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%238c5056'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-red-300,html[data-netbox-color-mode=dark] .btn.btn-ghost-red-300,html[data-netbox-color-mode=light] .btn.btn-ghost-red-300{color:#ea868f}}@media print{html .btn.btn-ghost-red-300:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-red-300:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-red-300:hover{background-color:#ea868f1f}}@media print{html .alert.alert-red-300 a:not(.btn),html .table-red-300 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-red-300 a:not(.btn),html[data-netbox-color-mode=dark] .table-red-300 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-red-300 a:not(.btn),html[data-netbox-color-mode=light] .table-red-300 a:not(.btn){font-weight:700;color:#8c5056}}@media print{html .alert.alert-red-300 .btn:not([class*=btn-outline]),html .table-red-300 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-red-300 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-red-300 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-red-300 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-red-300 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-red-300 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-red-300 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-red-300 a:not(.btn){font-weight:700;color:#5e3639}}@media print{html .badge.bg-red-300,html .toast.bg-red-300,html .toast-header.bg-red-300,html .progress-bar.bg-red-300,html[data-netbox-color-mode=dark] .badge.bg-red-300,html[data-netbox-color-mode=dark] .toast.bg-red-300,html[data-netbox-color-mode=dark] .toast-header.bg-red-300,html[data-netbox-color-mode=dark] .progress-bar.bg-red-300,html[data-netbox-color-mode=light] .badge.bg-red-300,html[data-netbox-color-mode=light] .toast.bg-red-300,html[data-netbox-color-mode=light] .toast-header.bg-red-300,html[data-netbox-color-mode=light] .progress-bar.bg-red-300{color:#000}}@media print{html .bg-red-400 button.btn-close,html[data-netbox-color-mode=dark] .bg-red-400 button.btn-close,html[data-netbox-color-mode=light] .bg-red-400 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23883840'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-red-400,html[data-netbox-color-mode=dark] .btn.btn-ghost-red-400,html[data-netbox-color-mode=light] .btn.btn-ghost-red-400{color:#e35d6a}}@media print{html .btn.btn-ghost-red-400:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-red-400:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-red-400:hover{background-color:#e35d6a1f}}@media print{html .alert.alert-red-400 a:not(.btn),html .table-red-400 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-red-400 a:not(.btn),html[data-netbox-color-mode=dark] .table-red-400 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-red-400 a:not(.btn),html[data-netbox-color-mode=light] .table-red-400 a:not(.btn){font-weight:700;color:#883840}}@media print{html .alert.alert-red-400 .btn:not([class*=btn-outline]),html .table-red-400 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-red-400 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-red-400 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-red-400 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-red-400 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-red-400 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-red-400 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-red-400 a:not(.btn){font-weight:700;color:#5b252a}}@media print{html .badge.bg-red-400,html .toast.bg-red-400,html .toast-header.bg-red-400,html .progress-bar.bg-red-400,html[data-netbox-color-mode=dark] .badge.bg-red-400,html[data-netbox-color-mode=dark] .toast.bg-red-400,html[data-netbox-color-mode=dark] .toast-header.bg-red-400,html[data-netbox-color-mode=dark] .progress-bar.bg-red-400,html[data-netbox-color-mode=light] .badge.bg-red-400,html[data-netbox-color-mode=light] .toast.bg-red-400,html[data-netbox-color-mode=light] .toast-header.bg-red-400,html[data-netbox-color-mode=light] .progress-bar.bg-red-400{color:#000}}@media print{html .bg-red-500 button.btn-close,html[data-netbox-color-mode=dark] .bg-red-500 button.btn-close,html[data-netbox-color-mode=light] .bg-red-500 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23842029'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-red-500,html[data-netbox-color-mode=dark] .btn.btn-ghost-red-500,html[data-netbox-color-mode=light] .btn.btn-ghost-red-500{color:#dc3545}}@media print{html .btn.btn-ghost-red-500:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-red-500:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-red-500:hover{background-color:#dc35451f}}@media print{html .alert.alert-red-500 a:not(.btn),html .table-red-500 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-red-500 a:not(.btn),html[data-netbox-color-mode=dark] .table-red-500 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-red-500 a:not(.btn),html[data-netbox-color-mode=light] .table-red-500 a:not(.btn){font-weight:700;color:#842029}}@media print{html .alert.alert-red-500 .btn:not([class*=btn-outline]),html .table-red-500 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-red-500 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-red-500 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-red-500 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-red-500 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-red-500 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-red-500 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-red-500 a:not(.btn){font-weight:700;color:#f1aeb5}}@media print{html .badge.bg-red-500,html .toast.bg-red-500,html .toast-header.bg-red-500,html .progress-bar.bg-red-500,html[data-netbox-color-mode=dark] .badge.bg-red-500,html[data-netbox-color-mode=dark] .toast.bg-red-500,html[data-netbox-color-mode=dark] .toast-header.bg-red-500,html[data-netbox-color-mode=dark] .progress-bar.bg-red-500,html[data-netbox-color-mode=light] .badge.bg-red-500,html[data-netbox-color-mode=light] .toast.bg-red-500,html[data-netbox-color-mode=light] .toast-header.bg-red-500,html[data-netbox-color-mode=light] .progress-bar.bg-red-500{color:#fff}}@media print{html .bg-red-600 button.btn-close,html[data-netbox-color-mode=dark] .bg-red-600 button.btn-close,html[data-netbox-color-mode=light] .bg-red-600 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236a1921'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-red-600,html[data-netbox-color-mode=dark] .btn.btn-ghost-red-600,html[data-netbox-color-mode=light] .btn.btn-ghost-red-600{color:#b02a37}}@media print{html .btn.btn-ghost-red-600:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-red-600:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-red-600:hover{background-color:#b02a371f}}@media print{html .alert.alert-red-600 a:not(.btn),html .table-red-600 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-red-600 a:not(.btn),html[data-netbox-color-mode=dark] .table-red-600 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-red-600 a:not(.btn),html[data-netbox-color-mode=light] .table-red-600 a:not(.btn){font-weight:700;color:#6a1921}}@media print{html .alert.alert-red-600 .btn:not([class*=btn-outline]),html .table-red-600 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-red-600 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-red-600 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-red-600 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-red-600 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-red-600 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-red-600 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-red-600 a:not(.btn){font-weight:700;color:#dfaaaf}}@media print{html .badge.bg-red-600,html .toast.bg-red-600,html .toast-header.bg-red-600,html .progress-bar.bg-red-600,html[data-netbox-color-mode=dark] .badge.bg-red-600,html[data-netbox-color-mode=dark] .toast.bg-red-600,html[data-netbox-color-mode=dark] .toast-header.bg-red-600,html[data-netbox-color-mode=dark] .progress-bar.bg-red-600,html[data-netbox-color-mode=light] .badge.bg-red-600,html[data-netbox-color-mode=light] .toast.bg-red-600,html[data-netbox-color-mode=light] .toast-header.bg-red-600,html[data-netbox-color-mode=light] .progress-bar.bg-red-600{color:#fff}}@media print{html .bg-red-700 button.btn-close,html[data-netbox-color-mode=dark] .bg-red-700 button.btn-close,html[data-netbox-color-mode=light] .bg-red-700 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%234f1319'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-red-700,html[data-netbox-color-mode=dark] .btn.btn-ghost-red-700,html[data-netbox-color-mode=light] .btn.btn-ghost-red-700{color:#842029}}@media print{html .btn.btn-ghost-red-700:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-red-700:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-red-700:hover{background-color:#8420291f}}@media print{html .alert.alert-red-700 a:not(.btn),html .table-red-700 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-red-700 a:not(.btn),html[data-netbox-color-mode=dark] .table-red-700 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-red-700 a:not(.btn),html[data-netbox-color-mode=light] .table-red-700 a:not(.btn){font-weight:700;color:#4f1319}}@media print{html .alert.alert-red-700 .btn:not([class*=btn-outline]),html .table-red-700 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-red-700 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-red-700 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-red-700 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-red-700 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-red-700 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-red-700 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-red-700 a:not(.btn){font-weight:700;color:#cea6a9}}@media print{html .badge.bg-red-700,html .toast.bg-red-700,html .toast-header.bg-red-700,html .progress-bar.bg-red-700,html[data-netbox-color-mode=dark] .badge.bg-red-700,html[data-netbox-color-mode=dark] .toast.bg-red-700,html[data-netbox-color-mode=dark] .toast-header.bg-red-700,html[data-netbox-color-mode=dark] .progress-bar.bg-red-700,html[data-netbox-color-mode=light] .badge.bg-red-700,html[data-netbox-color-mode=light] .toast.bg-red-700,html[data-netbox-color-mode=light] .toast-header.bg-red-700,html[data-netbox-color-mode=light] .progress-bar.bg-red-700{color:#fff}}@media print{html .bg-red-800 button.btn-close,html[data-netbox-color-mode=dark] .bg-red-800 button.btn-close,html[data-netbox-color-mode=light] .bg-red-800 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23350d11'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-red-800,html[data-netbox-color-mode=dark] .btn.btn-ghost-red-800,html[data-netbox-color-mode=light] .btn.btn-ghost-red-800{color:#58151c}}@media print{html .btn.btn-ghost-red-800:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-red-800:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-red-800:hover{background-color:#58151c1f}}@media print{html .alert.alert-red-800 a:not(.btn),html .table-red-800 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-red-800 a:not(.btn),html[data-netbox-color-mode=dark] .table-red-800 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-red-800 a:not(.btn),html[data-netbox-color-mode=light] .table-red-800 a:not(.btn){font-weight:700;color:#350d11}}@media print{html .alert.alert-red-800 .btn:not([class*=btn-outline]),html .table-red-800 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-red-800 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-red-800 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-red-800 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-red-800 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-red-800 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-red-800 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-red-800 a:not(.btn){font-weight:700;color:#bca1a4}}@media print{html .badge.bg-red-800,html .toast.bg-red-800,html .toast-header.bg-red-800,html .progress-bar.bg-red-800,html[data-netbox-color-mode=dark] .badge.bg-red-800,html[data-netbox-color-mode=dark] .toast.bg-red-800,html[data-netbox-color-mode=dark] .toast-header.bg-red-800,html[data-netbox-color-mode=dark] .progress-bar.bg-red-800,html[data-netbox-color-mode=light] .badge.bg-red-800,html[data-netbox-color-mode=light] .toast.bg-red-800,html[data-netbox-color-mode=light] .toast-header.bg-red-800,html[data-netbox-color-mode=light] .progress-bar.bg-red-800{color:#fff}}@media print{html .bg-red-900 button.btn-close,html[data-netbox-color-mode=dark] .bg-red-900 button.btn-close,html[data-netbox-color-mode=light] .bg-red-900 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%231a0708'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-red-900,html[data-netbox-color-mode=dark] .btn.btn-ghost-red-900,html[data-netbox-color-mode=light] .btn.btn-ghost-red-900{color:#2c0b0e}}@media print{html .btn.btn-ghost-red-900:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-red-900:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-red-900:hover{background-color:#2c0b0e1f}}@media print{html .alert.alert-red-900 a:not(.btn),html .table-red-900 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-red-900 a:not(.btn),html[data-netbox-color-mode=dark] .table-red-900 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-red-900 a:not(.btn),html[data-netbox-color-mode=light] .table-red-900 a:not(.btn){font-weight:700;color:#1a0708}}@media print{html .alert.alert-red-900 .btn:not([class*=btn-outline]),html .table-red-900 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-red-900 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-red-900 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-red-900 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-red-900 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-red-900 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-red-900 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-red-900 a:not(.btn){font-weight:700;color:#ab9d9f}}@media print{html .badge.bg-red-900,html .toast.bg-red-900,html .toast-header.bg-red-900,html .progress-bar.bg-red-900,html[data-netbox-color-mode=dark] .badge.bg-red-900,html[data-netbox-color-mode=dark] .toast.bg-red-900,html[data-netbox-color-mode=dark] .toast-header.bg-red-900,html[data-netbox-color-mode=dark] .progress-bar.bg-red-900,html[data-netbox-color-mode=light] .badge.bg-red-900,html[data-netbox-color-mode=light] .toast.bg-red-900,html[data-netbox-color-mode=light] .toast-header.bg-red-900,html[data-netbox-color-mode=light] .progress-bar.bg-red-900{color:#fff}}@media print{html .bg-yellow-100 button.btn-close,html[data-netbox-color-mode=dark] .bg-yellow-100 button.btn-close,html[data-netbox-color-mode=light] .bg-yellow-100 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23666152'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-yellow-100,html[data-netbox-color-mode=dark] .btn.btn-ghost-yellow-100,html[data-netbox-color-mode=light] .btn.btn-ghost-yellow-100{color:#fff3cd}}@media print{html .btn.btn-ghost-yellow-100:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-yellow-100:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-yellow-100:hover{background-color:#fff3cd1f}}@media print{html .alert.alert-yellow-100 a:not(.btn),html .table-yellow-100 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-yellow-100 a:not(.btn),html[data-netbox-color-mode=dark] .table-yellow-100 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-yellow-100 a:not(.btn),html[data-netbox-color-mode=light] .table-yellow-100 a:not(.btn){font-weight:700;color:#666152}}@media print{html .alert.alert-yellow-100 .btn:not([class*=btn-outline]),html .table-yellow-100 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-yellow-100 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-yellow-100 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-yellow-100 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-yellow-100 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-yellow-100 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-yellow-100 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-yellow-100 a:not(.btn){font-weight:700;color:#666152}}@media print{html .badge.bg-yellow-100,html .toast.bg-yellow-100,html .toast-header.bg-yellow-100,html .progress-bar.bg-yellow-100,html[data-netbox-color-mode=dark] .badge.bg-yellow-100,html[data-netbox-color-mode=dark] .toast.bg-yellow-100,html[data-netbox-color-mode=dark] .toast-header.bg-yellow-100,html[data-netbox-color-mode=dark] .progress-bar.bg-yellow-100,html[data-netbox-color-mode=light] .badge.bg-yellow-100,html[data-netbox-color-mode=light] .toast.bg-yellow-100,html[data-netbox-color-mode=light] .toast-header.bg-yellow-100,html[data-netbox-color-mode=light] .progress-bar.bg-yellow-100{color:#000}}@media print{html .bg-yellow-200 button.btn-close,html[data-netbox-color-mode=dark] .bg-yellow-200 button.btn-close,html[data-netbox-color-mode=light] .bg-yellow-200 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23665c3e'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-yellow-200,html[data-netbox-color-mode=dark] .btn.btn-ghost-yellow-200,html[data-netbox-color-mode=light] .btn.btn-ghost-yellow-200{color:#ffe69c}}@media print{html .btn.btn-ghost-yellow-200:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-yellow-200:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-yellow-200:hover{background-color:#ffe69c1f}}@media print{html .alert.alert-yellow-200 a:not(.btn),html .table-yellow-200 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-yellow-200 a:not(.btn),html[data-netbox-color-mode=dark] .table-yellow-200 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-yellow-200 a:not(.btn),html[data-netbox-color-mode=light] .table-yellow-200 a:not(.btn){font-weight:700;color:#665c3e}}@media print{html .alert.alert-yellow-200 .btn:not([class*=btn-outline]),html .table-yellow-200 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-yellow-200 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-yellow-200 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-yellow-200 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-yellow-200 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-yellow-200 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-yellow-200 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-yellow-200 a:not(.btn){font-weight:700;color:#665c3e}}@media print{html .badge.bg-yellow-200,html .toast.bg-yellow-200,html .toast-header.bg-yellow-200,html .progress-bar.bg-yellow-200,html[data-netbox-color-mode=dark] .badge.bg-yellow-200,html[data-netbox-color-mode=dark] .toast.bg-yellow-200,html[data-netbox-color-mode=dark] .toast-header.bg-yellow-200,html[data-netbox-color-mode=dark] .progress-bar.bg-yellow-200,html[data-netbox-color-mode=light] .badge.bg-yellow-200,html[data-netbox-color-mode=light] .toast.bg-yellow-200,html[data-netbox-color-mode=light] .toast-header.bg-yellow-200,html[data-netbox-color-mode=light] .progress-bar.bg-yellow-200{color:#000}}@media print{html .bg-yellow-300 button.btn-close,html[data-netbox-color-mode=dark] .bg-yellow-300 button.btn-close,html[data-netbox-color-mode=light] .bg-yellow-300 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%2366572a'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-yellow-300,html[data-netbox-color-mode=dark] .btn.btn-ghost-yellow-300,html[data-netbox-color-mode=light] .btn.btn-ghost-yellow-300{color:#ffda6a}}@media print{html .btn.btn-ghost-yellow-300:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-yellow-300:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-yellow-300:hover{background-color:#ffda6a1f}}@media print{html .alert.alert-yellow-300 a:not(.btn),html .table-yellow-300 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-yellow-300 a:not(.btn),html[data-netbox-color-mode=dark] .table-yellow-300 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-yellow-300 a:not(.btn),html[data-netbox-color-mode=light] .table-yellow-300 a:not(.btn){font-weight:700;color:#66572a}}@media print{html .alert.alert-yellow-300 .btn:not([class*=btn-outline]),html .table-yellow-300 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-yellow-300 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-yellow-300 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-yellow-300 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-yellow-300 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-yellow-300 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-yellow-300 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-yellow-300 a:not(.btn){font-weight:700;color:#66572a}}@media print{html .badge.bg-yellow-300,html .toast.bg-yellow-300,html .toast-header.bg-yellow-300,html .progress-bar.bg-yellow-300,html[data-netbox-color-mode=dark] .badge.bg-yellow-300,html[data-netbox-color-mode=dark] .toast.bg-yellow-300,html[data-netbox-color-mode=dark] .toast-header.bg-yellow-300,html[data-netbox-color-mode=dark] .progress-bar.bg-yellow-300,html[data-netbox-color-mode=light] .badge.bg-yellow-300,html[data-netbox-color-mode=light] .toast.bg-yellow-300,html[data-netbox-color-mode=light] .toast-header.bg-yellow-300,html[data-netbox-color-mode=light] .progress-bar.bg-yellow-300{color:#000}}@media print{html .bg-yellow-400 button.btn-close,html[data-netbox-color-mode=dark] .bg-yellow-400 button.btn-close,html[data-netbox-color-mode=light] .bg-yellow-400 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23665217'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-yellow-400,html[data-netbox-color-mode=dark] .btn.btn-ghost-yellow-400,html[data-netbox-color-mode=light] .btn.btn-ghost-yellow-400{color:#ffcd39}}@media print{html .btn.btn-ghost-yellow-400:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-yellow-400:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-yellow-400:hover{background-color:#ffcd391f}}@media print{html .alert.alert-yellow-400 a:not(.btn),html .table-yellow-400 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-yellow-400 a:not(.btn),html[data-netbox-color-mode=dark] .table-yellow-400 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-yellow-400 a:not(.btn),html[data-netbox-color-mode=light] .table-yellow-400 a:not(.btn){font-weight:700;color:#665217}}@media print{html .alert.alert-yellow-400 .btn:not([class*=btn-outline]),html .table-yellow-400 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-yellow-400 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-yellow-400 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-yellow-400 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-yellow-400 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-yellow-400 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-yellow-400 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-yellow-400 a:not(.btn){font-weight:700;color:#665217}}@media print{html .badge.bg-yellow-400,html .toast.bg-yellow-400,html .toast-header.bg-yellow-400,html .progress-bar.bg-yellow-400,html[data-netbox-color-mode=dark] .badge.bg-yellow-400,html[data-netbox-color-mode=dark] .toast.bg-yellow-400,html[data-netbox-color-mode=dark] .toast-header.bg-yellow-400,html[data-netbox-color-mode=dark] .progress-bar.bg-yellow-400,html[data-netbox-color-mode=light] .badge.bg-yellow-400,html[data-netbox-color-mode=light] .toast.bg-yellow-400,html[data-netbox-color-mode=light] .toast-header.bg-yellow-400,html[data-netbox-color-mode=light] .progress-bar.bg-yellow-400{color:#000}}@media print{html .bg-yellow-500 button.btn-close,html[data-netbox-color-mode=dark] .bg-yellow-500 button.btn-close,html[data-netbox-color-mode=light] .bg-yellow-500 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23664d03'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-yellow-500,html[data-netbox-color-mode=dark] .btn.btn-ghost-yellow-500,html[data-netbox-color-mode=light] .btn.btn-ghost-yellow-500{color:#ffc107}}@media print{html .btn.btn-ghost-yellow-500:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-yellow-500:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-yellow-500:hover{background-color:#ffc1071f}}@media print{html .alert.alert-yellow-500 a:not(.btn),html .table-yellow-500 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-yellow-500 a:not(.btn),html[data-netbox-color-mode=dark] .table-yellow-500 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-yellow-500 a:not(.btn),html[data-netbox-color-mode=light] .table-yellow-500 a:not(.btn){font-weight:700;color:#664d03}}@media print{html .alert.alert-yellow-500 .btn:not([class*=btn-outline]),html .table-yellow-500 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-yellow-500 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-yellow-500 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-yellow-500 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-yellow-500 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-yellow-500 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-yellow-500 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-yellow-500 a:not(.btn){font-weight:700;color:#664d03}}@media print{html .badge.bg-yellow-500,html .toast.bg-yellow-500,html .toast-header.bg-yellow-500,html .progress-bar.bg-yellow-500,html[data-netbox-color-mode=dark] .badge.bg-yellow-500,html[data-netbox-color-mode=dark] .toast.bg-yellow-500,html[data-netbox-color-mode=dark] .toast-header.bg-yellow-500,html[data-netbox-color-mode=dark] .progress-bar.bg-yellow-500,html[data-netbox-color-mode=light] .badge.bg-yellow-500,html[data-netbox-color-mode=light] .toast.bg-yellow-500,html[data-netbox-color-mode=light] .toast-header.bg-yellow-500,html[data-netbox-color-mode=light] .progress-bar.bg-yellow-500{color:#000}}@media print{html .bg-yellow-600 button.btn-close,html[data-netbox-color-mode=dark] .bg-yellow-600 button.btn-close,html[data-netbox-color-mode=light] .bg-yellow-600 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%237a5c04'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-yellow-600,html[data-netbox-color-mode=dark] .btn.btn-ghost-yellow-600,html[data-netbox-color-mode=light] .btn.btn-ghost-yellow-600{color:#cc9a06}}@media print{html .btn.btn-ghost-yellow-600:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-yellow-600:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-yellow-600:hover{background-color:#cc9a061f}}@media print{html .alert.alert-yellow-600 a:not(.btn),html .table-yellow-600 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-yellow-600 a:not(.btn),html[data-netbox-color-mode=dark] .table-yellow-600 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-yellow-600 a:not(.btn),html[data-netbox-color-mode=light] .table-yellow-600 a:not(.btn){font-weight:700;color:#7a5c04}}@media print{html .alert.alert-yellow-600 .btn:not([class*=btn-outline]),html .table-yellow-600 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-yellow-600 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-yellow-600 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-yellow-600 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-yellow-600 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-yellow-600 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-yellow-600 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-yellow-600 a:not(.btn){font-weight:700;color:#523e02}}@media print{html .badge.bg-yellow-600,html .toast.bg-yellow-600,html .toast-header.bg-yellow-600,html .progress-bar.bg-yellow-600,html[data-netbox-color-mode=dark] .badge.bg-yellow-600,html[data-netbox-color-mode=dark] .toast.bg-yellow-600,html[data-netbox-color-mode=dark] .toast-header.bg-yellow-600,html[data-netbox-color-mode=dark] .progress-bar.bg-yellow-600,html[data-netbox-color-mode=light] .badge.bg-yellow-600,html[data-netbox-color-mode=light] .toast.bg-yellow-600,html[data-netbox-color-mode=light] .toast-header.bg-yellow-600,html[data-netbox-color-mode=light] .progress-bar.bg-yellow-600{color:#000}}@media print{html .bg-yellow-700 button.btn-close,html[data-netbox-color-mode=dark] .bg-yellow-700 button.btn-close,html[data-netbox-color-mode=light] .bg-yellow-700 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%235c4602'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-yellow-700,html[data-netbox-color-mode=dark] .btn.btn-ghost-yellow-700,html[data-netbox-color-mode=light] .btn.btn-ghost-yellow-700{color:#997404}}@media print{html .btn.btn-ghost-yellow-700:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-yellow-700:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-yellow-700:hover{background-color:#9974041f}}@media print{html .alert.alert-yellow-700 a:not(.btn),html .table-yellow-700 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-yellow-700 a:not(.btn),html[data-netbox-color-mode=dark] .table-yellow-700 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-yellow-700 a:not(.btn),html[data-netbox-color-mode=light] .table-yellow-700 a:not(.btn){font-weight:700;color:#5c4602}}@media print{html .alert.alert-yellow-700 .btn:not([class*=btn-outline]),html .table-yellow-700 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-yellow-700 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-yellow-700 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-yellow-700 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-yellow-700 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-yellow-700 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-yellow-700 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-yellow-700 a:not(.btn){font-weight:700;color:#3d2e02}}@media print{html .badge.bg-yellow-700,html .toast.bg-yellow-700,html .toast-header.bg-yellow-700,html .progress-bar.bg-yellow-700,html[data-netbox-color-mode=dark] .badge.bg-yellow-700,html[data-netbox-color-mode=dark] .toast.bg-yellow-700,html[data-netbox-color-mode=dark] .toast-header.bg-yellow-700,html[data-netbox-color-mode=dark] .progress-bar.bg-yellow-700,html[data-netbox-color-mode=light] .badge.bg-yellow-700,html[data-netbox-color-mode=light] .toast.bg-yellow-700,html[data-netbox-color-mode=light] .toast-header.bg-yellow-700,html[data-netbox-color-mode=light] .progress-bar.bg-yellow-700{color:#000}}@media print{html .bg-yellow-800 button.btn-close,html[data-netbox-color-mode=dark] .bg-yellow-800 button.btn-close,html[data-netbox-color-mode=light] .bg-yellow-800 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%233d2e02'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-yellow-800,html[data-netbox-color-mode=dark] .btn.btn-ghost-yellow-800,html[data-netbox-color-mode=light] .btn.btn-ghost-yellow-800{color:#664d03}}@media print{html .btn.btn-ghost-yellow-800:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-yellow-800:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-yellow-800:hover{background-color:#664d031f}}@media print{html .alert.alert-yellow-800 a:not(.btn),html .table-yellow-800 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-yellow-800 a:not(.btn),html[data-netbox-color-mode=dark] .table-yellow-800 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-yellow-800 a:not(.btn),html[data-netbox-color-mode=light] .table-yellow-800 a:not(.btn){font-weight:700;color:#3d2e02}}@media print{html .alert.alert-yellow-800 .btn:not([class*=btn-outline]),html .table-yellow-800 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-yellow-800 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-yellow-800 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-yellow-800 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-yellow-800 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-yellow-800 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-yellow-800 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-yellow-800 a:not(.btn){font-weight:700;color:#c2b89a}}@media print{html .badge.bg-yellow-800,html .toast.bg-yellow-800,html .toast-header.bg-yellow-800,html .progress-bar.bg-yellow-800,html[data-netbox-color-mode=dark] .badge.bg-yellow-800,html[data-netbox-color-mode=dark] .toast.bg-yellow-800,html[data-netbox-color-mode=dark] .toast-header.bg-yellow-800,html[data-netbox-color-mode=dark] .progress-bar.bg-yellow-800,html[data-netbox-color-mode=light] .badge.bg-yellow-800,html[data-netbox-color-mode=light] .toast.bg-yellow-800,html[data-netbox-color-mode=light] .toast-header.bg-yellow-800,html[data-netbox-color-mode=light] .progress-bar.bg-yellow-800{color:#fff}}@media print{html .bg-yellow-900 button.btn-close,html[data-netbox-color-mode=dark] .bg-yellow-900 button.btn-close,html[data-netbox-color-mode=light] .bg-yellow-900 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%231f1701'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-yellow-900,html[data-netbox-color-mode=dark] .btn.btn-ghost-yellow-900,html[data-netbox-color-mode=light] .btn.btn-ghost-yellow-900{color:#332701}}@media print{html .btn.btn-ghost-yellow-900:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-yellow-900:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-yellow-900:hover{background-color:#3327011f}}@media print{html .alert.alert-yellow-900 a:not(.btn),html .table-yellow-900 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-yellow-900 a:not(.btn),html[data-netbox-color-mode=dark] .table-yellow-900 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-yellow-900 a:not(.btn),html[data-netbox-color-mode=light] .table-yellow-900 a:not(.btn){font-weight:700;color:#1f1701}}@media print{html .alert.alert-yellow-900 .btn:not([class*=btn-outline]),html .table-yellow-900 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-yellow-900 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-yellow-900 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-yellow-900 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-yellow-900 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-yellow-900 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-yellow-900 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-yellow-900 a:not(.btn){font-weight:700;color:#ada999}}@media print{html .badge.bg-yellow-900,html .toast.bg-yellow-900,html .toast-header.bg-yellow-900,html .progress-bar.bg-yellow-900,html[data-netbox-color-mode=dark] .badge.bg-yellow-900,html[data-netbox-color-mode=dark] .toast.bg-yellow-900,html[data-netbox-color-mode=dark] .toast-header.bg-yellow-900,html[data-netbox-color-mode=dark] .progress-bar.bg-yellow-900,html[data-netbox-color-mode=light] .badge.bg-yellow-900,html[data-netbox-color-mode=light] .toast.bg-yellow-900,html[data-netbox-color-mode=light] .toast-header.bg-yellow-900,html[data-netbox-color-mode=light] .progress-bar.bg-yellow-900{color:#fff}}@media print{html .bg-green-100 button.btn-close,html[data-netbox-color-mode=dark] .bg-green-100 button.btn-close,html[data-netbox-color-mode=light] .bg-green-100 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23545c58'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-green-100,html[data-netbox-color-mode=dark] .btn.btn-ghost-green-100,html[data-netbox-color-mode=light] .btn.btn-ghost-green-100{color:#d1e7dd}}@media print{html .btn.btn-ghost-green-100:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-green-100:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-green-100:hover{background-color:#d1e7dd1f}}@media print{html .alert.alert-green-100 a:not(.btn),html .table-green-100 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-green-100 a:not(.btn),html[data-netbox-color-mode=dark] .table-green-100 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-green-100 a:not(.btn),html[data-netbox-color-mode=light] .table-green-100 a:not(.btn){font-weight:700;color:#545c58}}@media print{html .alert.alert-green-100 .btn:not([class*=btn-outline]),html .table-green-100 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-green-100 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-green-100 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-green-100 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-green-100 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-green-100 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-green-100 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-green-100 a:not(.btn){font-weight:700;color:#545c58}}@media print{html .badge.bg-green-100,html .toast.bg-green-100,html .toast-header.bg-green-100,html .progress-bar.bg-green-100,html[data-netbox-color-mode=dark] .badge.bg-green-100,html[data-netbox-color-mode=dark] .toast.bg-green-100,html[data-netbox-color-mode=dark] .toast-header.bg-green-100,html[data-netbox-color-mode=dark] .progress-bar.bg-green-100,html[data-netbox-color-mode=light] .badge.bg-green-100,html[data-netbox-color-mode=light] .toast.bg-green-100,html[data-netbox-color-mode=light] .toast-header.bg-green-100,html[data-netbox-color-mode=light] .progress-bar.bg-green-100{color:#000}}@media print{html .bg-green-200 button.btn-close,html[data-netbox-color-mode=dark] .bg-green-200 button.btn-close,html[data-netbox-color-mode=light] .bg-green-200 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%2341534b'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-green-200,html[data-netbox-color-mode=dark] .btn.btn-ghost-green-200,html[data-netbox-color-mode=light] .btn.btn-ghost-green-200{color:#a3cfbb}}@media print{html .btn.btn-ghost-green-200:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-green-200:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-green-200:hover{background-color:#a3cfbb1f}}@media print{html .alert.alert-green-200 a:not(.btn),html .table-green-200 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-green-200 a:not(.btn),html[data-netbox-color-mode=dark] .table-green-200 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-green-200 a:not(.btn),html[data-netbox-color-mode=light] .table-green-200 a:not(.btn){font-weight:700;color:#41534b}}@media print{html .alert.alert-green-200 .btn:not([class*=btn-outline]),html .table-green-200 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-green-200 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-green-200 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-green-200 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-green-200 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-green-200 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-green-200 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-green-200 a:not(.btn){font-weight:700;color:#41534b}}@media print{html .badge.bg-green-200,html .toast.bg-green-200,html .toast-header.bg-green-200,html .progress-bar.bg-green-200,html[data-netbox-color-mode=dark] .badge.bg-green-200,html[data-netbox-color-mode=dark] .toast.bg-green-200,html[data-netbox-color-mode=dark] .toast-header.bg-green-200,html[data-netbox-color-mode=dark] .progress-bar.bg-green-200,html[data-netbox-color-mode=light] .badge.bg-green-200,html[data-netbox-color-mode=light] .toast.bg-green-200,html[data-netbox-color-mode=light] .toast-header.bg-green-200,html[data-netbox-color-mode=light] .progress-bar.bg-green-200{color:#000}}@media print{html .bg-green-300 button.btn-close,html[data-netbox-color-mode=dark] .bg-green-300 button.btn-close,html[data-netbox-color-mode=light] .bg-green-300 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23466e5b'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-green-300,html[data-netbox-color-mode=dark] .btn.btn-ghost-green-300,html[data-netbox-color-mode=light] .btn.btn-ghost-green-300{color:#75b798}}@media print{html .btn.btn-ghost-green-300:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-green-300:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-green-300:hover{background-color:#75b7981f}}@media print{html .alert.alert-green-300 a:not(.btn),html .table-green-300 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-green-300 a:not(.btn),html[data-netbox-color-mode=dark] .table-green-300 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-green-300 a:not(.btn),html[data-netbox-color-mode=light] .table-green-300 a:not(.btn){font-weight:700;color:#466e5b}}@media print{html .alert.alert-green-300 .btn:not([class*=btn-outline]),html .table-green-300 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-green-300 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-green-300 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-green-300 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-green-300 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-green-300 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-green-300 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-green-300 a:not(.btn){font-weight:700;color:#2f493d}}@media print{html .badge.bg-green-300,html .toast.bg-green-300,html .toast-header.bg-green-300,html .progress-bar.bg-green-300,html[data-netbox-color-mode=dark] .badge.bg-green-300,html[data-netbox-color-mode=dark] .toast.bg-green-300,html[data-netbox-color-mode=dark] .toast-header.bg-green-300,html[data-netbox-color-mode=dark] .progress-bar.bg-green-300,html[data-netbox-color-mode=light] .badge.bg-green-300,html[data-netbox-color-mode=light] .toast.bg-green-300,html[data-netbox-color-mode=light] .toast-header.bg-green-300,html[data-netbox-color-mode=light] .progress-bar.bg-green-300{color:#000}}@media print{html .bg-green-400 button.btn-close,html[data-netbox-color-mode=dark] .bg-green-400 button.btn-close,html[data-netbox-color-mode=light] .bg-green-400 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%232b5f47'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-green-400,html[data-netbox-color-mode=dark] .btn.btn-ghost-green-400,html[data-netbox-color-mode=light] .btn.btn-ghost-green-400{color:#479f76}}@media print{html .btn.btn-ghost-green-400:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-green-400:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-green-400:hover{background-color:#479f761f}}@media print{html .alert.alert-green-400 a:not(.btn),html .table-green-400 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-green-400 a:not(.btn),html[data-netbox-color-mode=dark] .table-green-400 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-green-400 a:not(.btn),html[data-netbox-color-mode=light] .table-green-400 a:not(.btn){font-weight:700;color:#2b5f47}}@media print{html .alert.alert-green-400 .btn:not([class*=btn-outline]),html .table-green-400 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-green-400 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-green-400 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-green-400 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-green-400 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-green-400 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-green-400 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-green-400 a:not(.btn){font-weight:700;color:#1c402f}}@media print{html .badge.bg-green-400,html .toast.bg-green-400,html .toast-header.bg-green-400,html .progress-bar.bg-green-400,html[data-netbox-color-mode=dark] .badge.bg-green-400,html[data-netbox-color-mode=dark] .toast.bg-green-400,html[data-netbox-color-mode=dark] .toast-header.bg-green-400,html[data-netbox-color-mode=dark] .progress-bar.bg-green-400,html[data-netbox-color-mode=light] .badge.bg-green-400,html[data-netbox-color-mode=light] .toast.bg-green-400,html[data-netbox-color-mode=light] .toast-header.bg-green-400,html[data-netbox-color-mode=light] .progress-bar.bg-green-400{color:#000}}@media print{html .bg-green-500 button.btn-close,html[data-netbox-color-mode=dark] .bg-green-500 button.btn-close,html[data-netbox-color-mode=light] .bg-green-500 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230f5132'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-green-500,html[data-netbox-color-mode=dark] .btn.btn-ghost-green-500,html[data-netbox-color-mode=light] .btn.btn-ghost-green-500{color:#198754}}@media print{html .btn.btn-ghost-green-500:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-green-500:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-green-500:hover{background-color:#1987541f}}@media print{html .alert.alert-green-500 a:not(.btn),html .table-green-500 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-green-500 a:not(.btn),html[data-netbox-color-mode=dark] .table-green-500 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-green-500 a:not(.btn),html[data-netbox-color-mode=light] .table-green-500 a:not(.btn){font-weight:700;color:#0f5132}}@media print{html .alert.alert-green-500 .btn:not([class*=btn-outline]),html .table-green-500 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-green-500 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-green-500 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-green-500 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-green-500 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-green-500 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-green-500 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-green-500 a:not(.btn){font-weight:700;color:#a3cfbb}}@media print{html .badge.bg-green-500,html .toast.bg-green-500,html .toast-header.bg-green-500,html .progress-bar.bg-green-500,html[data-netbox-color-mode=dark] .badge.bg-green-500,html[data-netbox-color-mode=dark] .toast.bg-green-500,html[data-netbox-color-mode=dark] .toast-header.bg-green-500,html[data-netbox-color-mode=dark] .progress-bar.bg-green-500,html[data-netbox-color-mode=light] .badge.bg-green-500,html[data-netbox-color-mode=light] .toast.bg-green-500,html[data-netbox-color-mode=light] .toast-header.bg-green-500,html[data-netbox-color-mode=light] .progress-bar.bg-green-500{color:#fff}}@media print{html .bg-green-600 button.btn-close,html[data-netbox-color-mode=dark] .bg-green-600 button.btn-close,html[data-netbox-color-mode=light] .bg-green-600 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230c4128'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-green-600,html[data-netbox-color-mode=dark] .btn.btn-ghost-green-600,html[data-netbox-color-mode=light] .btn.btn-ghost-green-600{color:#146c43}}@media print{html .btn.btn-ghost-green-600:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-green-600:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-green-600:hover{background-color:#146c431f}}@media print{html .alert.alert-green-600 a:not(.btn),html .table-green-600 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-green-600 a:not(.btn),html[data-netbox-color-mode=dark] .table-green-600 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-green-600 a:not(.btn),html[data-netbox-color-mode=light] .table-green-600 a:not(.btn){font-weight:700;color:#0c4128}}@media print{html .alert.alert-green-600 .btn:not([class*=btn-outline]),html .table-green-600 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-green-600 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-green-600 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-green-600 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-green-600 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-green-600 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-green-600 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-green-600 a:not(.btn){font-weight:700;color:#a1c4b4}}@media print{html .badge.bg-green-600,html .toast.bg-green-600,html .toast-header.bg-green-600,html .progress-bar.bg-green-600,html[data-netbox-color-mode=dark] .badge.bg-green-600,html[data-netbox-color-mode=dark] .toast.bg-green-600,html[data-netbox-color-mode=dark] .toast-header.bg-green-600,html[data-netbox-color-mode=dark] .progress-bar.bg-green-600,html[data-netbox-color-mode=light] .badge.bg-green-600,html[data-netbox-color-mode=light] .toast.bg-green-600,html[data-netbox-color-mode=light] .toast-header.bg-green-600,html[data-netbox-color-mode=light] .progress-bar.bg-green-600{color:#fff}}@media print{html .bg-green-700 button.btn-close,html[data-netbox-color-mode=dark] .bg-green-700 button.btn-close,html[data-netbox-color-mode=light] .bg-green-700 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%2309311e'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-green-700,html[data-netbox-color-mode=dark] .btn.btn-ghost-green-700,html[data-netbox-color-mode=light] .btn.btn-ghost-green-700{color:#0f5132}}@media print{html .btn.btn-ghost-green-700:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-green-700:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-green-700:hover{background-color:#0f51321f}}@media print{html .alert.alert-green-700 a:not(.btn),html .table-green-700 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-green-700 a:not(.btn),html[data-netbox-color-mode=dark] .table-green-700 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-green-700 a:not(.btn),html[data-netbox-color-mode=light] .table-green-700 a:not(.btn){font-weight:700;color:#09311e}}@media print{html .alert.alert-green-700 .btn:not([class*=btn-outline]),html .table-green-700 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-green-700 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-green-700 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-green-700 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-green-700 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-green-700 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-green-700 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-green-700 a:not(.btn){font-weight:700;color:#9fb9ad}}@media print{html .badge.bg-green-700,html .toast.bg-green-700,html .toast-header.bg-green-700,html .progress-bar.bg-green-700,html[data-netbox-color-mode=dark] .badge.bg-green-700,html[data-netbox-color-mode=dark] .toast.bg-green-700,html[data-netbox-color-mode=dark] .toast-header.bg-green-700,html[data-netbox-color-mode=dark] .progress-bar.bg-green-700,html[data-netbox-color-mode=light] .badge.bg-green-700,html[data-netbox-color-mode=light] .toast.bg-green-700,html[data-netbox-color-mode=light] .toast-header.bg-green-700,html[data-netbox-color-mode=light] .progress-bar.bg-green-700{color:#fff}}@media print{html .bg-green-800 button.btn-close,html[data-netbox-color-mode=dark] .bg-green-800 button.btn-close,html[data-netbox-color-mode=light] .bg-green-800 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23062014'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-green-800,html[data-netbox-color-mode=dark] .btn.btn-ghost-green-800,html[data-netbox-color-mode=light] .btn.btn-ghost-green-800{color:#0a3622}}@media print{html .btn.btn-ghost-green-800:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-green-800:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-green-800:hover{background-color:#0a36221f}}@media print{html .alert.alert-green-800 a:not(.btn),html .table-green-800 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-green-800 a:not(.btn),html[data-netbox-color-mode=dark] .table-green-800 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-green-800 a:not(.btn),html[data-netbox-color-mode=light] .table-green-800 a:not(.btn){font-weight:700;color:#062014}}@media print{html .alert.alert-green-800 .btn:not([class*=btn-outline]),html .table-green-800 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-green-800 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-green-800 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-green-800 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-green-800 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-green-800 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-green-800 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-green-800 a:not(.btn){font-weight:700;color:#9dafa7}}@media print{html .badge.bg-green-800,html .toast.bg-green-800,html .toast-header.bg-green-800,html .progress-bar.bg-green-800,html[data-netbox-color-mode=dark] .badge.bg-green-800,html[data-netbox-color-mode=dark] .toast.bg-green-800,html[data-netbox-color-mode=dark] .toast-header.bg-green-800,html[data-netbox-color-mode=dark] .progress-bar.bg-green-800,html[data-netbox-color-mode=light] .badge.bg-green-800,html[data-netbox-color-mode=light] .toast.bg-green-800,html[data-netbox-color-mode=light] .toast-header.bg-green-800,html[data-netbox-color-mode=light] .progress-bar.bg-green-800{color:#fff}}@media print{html .bg-green-900 button.btn-close,html[data-netbox-color-mode=dark] .bg-green-900 button.btn-close,html[data-netbox-color-mode=light] .bg-green-900 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%2303100a'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-green-900,html[data-netbox-color-mode=dark] .btn.btn-ghost-green-900,html[data-netbox-color-mode=light] .btn.btn-ghost-green-900{color:#051b11}}@media print{html .btn.btn-ghost-green-900:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-green-900:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-green-900:hover{background-color:#051b111f}}@media print{html .alert.alert-green-900 a:not(.btn),html .table-green-900 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-green-900 a:not(.btn),html[data-netbox-color-mode=dark] .table-green-900 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-green-900 a:not(.btn),html[data-netbox-color-mode=light] .table-green-900 a:not(.btn){font-weight:700;color:#03100a}}@media print{html .alert.alert-green-900 .btn:not([class*=btn-outline]),html .table-green-900 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-green-900 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-green-900 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-green-900 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-green-900 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-green-900 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-green-900 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-green-900 a:not(.btn){font-weight:700;color:#9ba4a0}}@media print{html .badge.bg-green-900,html .toast.bg-green-900,html .toast-header.bg-green-900,html .progress-bar.bg-green-900,html[data-netbox-color-mode=dark] .badge.bg-green-900,html[data-netbox-color-mode=dark] .toast.bg-green-900,html[data-netbox-color-mode=dark] .toast-header.bg-green-900,html[data-netbox-color-mode=dark] .progress-bar.bg-green-900,html[data-netbox-color-mode=light] .badge.bg-green-900,html[data-netbox-color-mode=light] .toast.bg-green-900,html[data-netbox-color-mode=light] .toast-header.bg-green-900,html[data-netbox-color-mode=light] .progress-bar.bg-green-900{color:#fff}}@media print{html .bg-blue-100 button.btn-close,html[data-netbox-color-mode=dark] .bg-blue-100 button.btn-close,html[data-netbox-color-mode=light] .bg-blue-100 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23535a66'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-blue-100,html[data-netbox-color-mode=dark] .btn.btn-ghost-blue-100,html[data-netbox-color-mode=light] .btn.btn-ghost-blue-100{color:#cfe2ff}}@media print{html .btn.btn-ghost-blue-100:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-blue-100:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-blue-100:hover{background-color:#cfe2ff1f}}@media print{html .alert.alert-blue-100 a:not(.btn),html .table-blue-100 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-blue-100 a:not(.btn),html[data-netbox-color-mode=dark] .table-blue-100 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-blue-100 a:not(.btn),html[data-netbox-color-mode=light] .table-blue-100 a:not(.btn){font-weight:700;color:#535a66}}@media print{html .alert.alert-blue-100 .btn:not([class*=btn-outline]),html .table-blue-100 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-blue-100 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-blue-100 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-blue-100 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-blue-100 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-blue-100 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-blue-100 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-blue-100 a:not(.btn){font-weight:700;color:#535a66}}@media print{html .badge.bg-blue-100,html .toast.bg-blue-100,html .toast-header.bg-blue-100,html .progress-bar.bg-blue-100,html[data-netbox-color-mode=dark] .badge.bg-blue-100,html[data-netbox-color-mode=dark] .toast.bg-blue-100,html[data-netbox-color-mode=dark] .toast-header.bg-blue-100,html[data-netbox-color-mode=dark] .progress-bar.bg-blue-100,html[data-netbox-color-mode=light] .badge.bg-blue-100,html[data-netbox-color-mode=light] .toast.bg-blue-100,html[data-netbox-color-mode=light] .toast-header.bg-blue-100,html[data-netbox-color-mode=light] .progress-bar.bg-blue-100{color:#000}}@media print{html .bg-blue-200 button.btn-close,html[data-netbox-color-mode=dark] .bg-blue-200 button.btn-close,html[data-netbox-color-mode=light] .bg-blue-200 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%233f4f66'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-blue-200,html[data-netbox-color-mode=dark] .btn.btn-ghost-blue-200,html[data-netbox-color-mode=light] .btn.btn-ghost-blue-200{color:#9ec5fe}}@media print{html .btn.btn-ghost-blue-200:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-blue-200:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-blue-200:hover{background-color:#9ec5fe1f}}@media print{html .alert.alert-blue-200 a:not(.btn),html .table-blue-200 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-blue-200 a:not(.btn),html[data-netbox-color-mode=dark] .table-blue-200 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-blue-200 a:not(.btn),html[data-netbox-color-mode=light] .table-blue-200 a:not(.btn){font-weight:700;color:#3f4f66}}@media print{html .alert.alert-blue-200 .btn:not([class*=btn-outline]),html .table-blue-200 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-blue-200 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-blue-200 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-blue-200 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-blue-200 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-blue-200 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-blue-200 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-blue-200 a:not(.btn){font-weight:700;color:#3f4f66}}@media print{html .badge.bg-blue-200,html .toast.bg-blue-200,html .toast-header.bg-blue-200,html .progress-bar.bg-blue-200,html[data-netbox-color-mode=dark] .badge.bg-blue-200,html[data-netbox-color-mode=dark] .toast.bg-blue-200,html[data-netbox-color-mode=dark] .toast-header.bg-blue-200,html[data-netbox-color-mode=dark] .progress-bar.bg-blue-200,html[data-netbox-color-mode=light] .badge.bg-blue-200,html[data-netbox-color-mode=light] .toast.bg-blue-200,html[data-netbox-color-mode=light] .toast-header.bg-blue-200,html[data-netbox-color-mode=light] .progress-bar.bg-blue-200{color:#000}}@media print{html .bg-blue-300 button.btn-close,html[data-netbox-color-mode=dark] .bg-blue-300 button.btn-close,html[data-netbox-color-mode=light] .bg-blue-300 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23426598'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-blue-300,html[data-netbox-color-mode=dark] .btn.btn-ghost-blue-300,html[data-netbox-color-mode=light] .btn.btn-ghost-blue-300{color:#6ea8fe}}@media print{html .btn.btn-ghost-blue-300:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-blue-300:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-blue-300:hover{background-color:#6ea8fe1f}}@media print{html .alert.alert-blue-300 a:not(.btn),html .table-blue-300 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-blue-300 a:not(.btn),html[data-netbox-color-mode=dark] .table-blue-300 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-blue-300 a:not(.btn),html[data-netbox-color-mode=light] .table-blue-300 a:not(.btn){font-weight:700;color:#426598}}@media print{html .alert.alert-blue-300 .btn:not([class*=btn-outline]),html .table-blue-300 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-blue-300 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-blue-300 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-blue-300 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-blue-300 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-blue-300 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-blue-300 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-blue-300 a:not(.btn){font-weight:700;color:#2c4366}}@media print{html .badge.bg-blue-300,html .toast.bg-blue-300,html .toast-header.bg-blue-300,html .progress-bar.bg-blue-300,html[data-netbox-color-mode=dark] .badge.bg-blue-300,html[data-netbox-color-mode=dark] .toast.bg-blue-300,html[data-netbox-color-mode=dark] .toast-header.bg-blue-300,html[data-netbox-color-mode=dark] .progress-bar.bg-blue-300,html[data-netbox-color-mode=light] .badge.bg-blue-300,html[data-netbox-color-mode=light] .toast.bg-blue-300,html[data-netbox-color-mode=light] .toast-header.bg-blue-300,html[data-netbox-color-mode=light] .progress-bar.bg-blue-300{color:#000}}@media print{html .bg-blue-400 button.btn-close,html[data-netbox-color-mode=dark] .bg-blue-400 button.btn-close,html[data-netbox-color-mode=light] .bg-blue-400 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23255398'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-blue-400,html[data-netbox-color-mode=dark] .btn.btn-ghost-blue-400,html[data-netbox-color-mode=light] .btn.btn-ghost-blue-400{color:#3d8bfd}}@media print{html .btn.btn-ghost-blue-400:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-blue-400:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-blue-400:hover{background-color:#3d8bfd1f}}@media print{html .alert.alert-blue-400 a:not(.btn),html .table-blue-400 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-blue-400 a:not(.btn),html[data-netbox-color-mode=dark] .table-blue-400 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-blue-400 a:not(.btn),html[data-netbox-color-mode=light] .table-blue-400 a:not(.btn){font-weight:700;color:#255398}}@media print{html .alert.alert-blue-400 .btn:not([class*=btn-outline]),html .table-blue-400 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-blue-400 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-blue-400 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-blue-400 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-blue-400 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-blue-400 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-blue-400 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-blue-400 a:not(.btn){font-weight:700;color:#183865}}@media print{html .badge.bg-blue-400,html .toast.bg-blue-400,html .toast-header.bg-blue-400,html .progress-bar.bg-blue-400,html[data-netbox-color-mode=dark] .badge.bg-blue-400,html[data-netbox-color-mode=dark] .toast.bg-blue-400,html[data-netbox-color-mode=dark] .toast-header.bg-blue-400,html[data-netbox-color-mode=dark] .progress-bar.bg-blue-400,html[data-netbox-color-mode=light] .badge.bg-blue-400,html[data-netbox-color-mode=light] .toast.bg-blue-400,html[data-netbox-color-mode=light] .toast-header.bg-blue-400,html[data-netbox-color-mode=light] .progress-bar.bg-blue-400{color:#000}}@media print{html .bg-blue-500 button.btn-close,html[data-netbox-color-mode=dark] .bg-blue-500 button.btn-close,html[data-netbox-color-mode=light] .bg-blue-500 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23084298'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-blue-500,html[data-netbox-color-mode=dark] .btn.btn-ghost-blue-500,html[data-netbox-color-mode=light] .btn.btn-ghost-blue-500{color:#0d6efd}}@media print{html .btn.btn-ghost-blue-500:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-blue-500:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-blue-500:hover{background-color:#0d6efd1f}}@media print{html .alert.alert-blue-500 a:not(.btn),html .table-blue-500 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-blue-500 a:not(.btn),html[data-netbox-color-mode=dark] .table-blue-500 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-blue-500 a:not(.btn),html[data-netbox-color-mode=light] .table-blue-500 a:not(.btn){font-weight:700;color:#084298}}@media print{html .alert.alert-blue-500 .btn:not([class*=btn-outline]),html .table-blue-500 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-blue-500 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-blue-500 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-blue-500 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-blue-500 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-blue-500 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-blue-500 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-blue-500 a:not(.btn){font-weight:700;color:#9ec5fe}}@media print{html .badge.bg-blue-500,html .toast.bg-blue-500,html .toast-header.bg-blue-500,html .progress-bar.bg-blue-500,html[data-netbox-color-mode=dark] .badge.bg-blue-500,html[data-netbox-color-mode=dark] .toast.bg-blue-500,html[data-netbox-color-mode=dark] .toast-header.bg-blue-500,html[data-netbox-color-mode=dark] .progress-bar.bg-blue-500,html[data-netbox-color-mode=light] .badge.bg-blue-500,html[data-netbox-color-mode=light] .toast.bg-blue-500,html[data-netbox-color-mode=light] .toast-header.bg-blue-500,html[data-netbox-color-mode=light] .progress-bar.bg-blue-500{color:#fff}}@media print{html .bg-blue-600 button.btn-close,html[data-netbox-color-mode=dark] .bg-blue-600 button.btn-close,html[data-netbox-color-mode=light] .bg-blue-600 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23063579'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-blue-600,html[data-netbox-color-mode=dark] .btn.btn-ghost-blue-600,html[data-netbox-color-mode=light] .btn.btn-ghost-blue-600{color:#0a58ca}}@media print{html .btn.btn-ghost-blue-600:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-blue-600:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-blue-600:hover{background-color:#0a58ca1f}}@media print{html .alert.alert-blue-600 a:not(.btn),html .table-blue-600 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-blue-600 a:not(.btn),html[data-netbox-color-mode=dark] .table-blue-600 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-blue-600 a:not(.btn),html[data-netbox-color-mode=light] .table-blue-600 a:not(.btn){font-weight:700;color:#063579}}@media print{html .alert.alert-blue-600 .btn:not([class*=btn-outline]),html .table-blue-600 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-blue-600 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-blue-600 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-blue-600 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-blue-600 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-blue-600 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-blue-600 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-blue-600 a:not(.btn){font-weight:700;color:#9dbcea}}@media print{html .badge.bg-blue-600,html .toast.bg-blue-600,html .toast-header.bg-blue-600,html .progress-bar.bg-blue-600,html[data-netbox-color-mode=dark] .badge.bg-blue-600,html[data-netbox-color-mode=dark] .toast.bg-blue-600,html[data-netbox-color-mode=dark] .toast-header.bg-blue-600,html[data-netbox-color-mode=dark] .progress-bar.bg-blue-600,html[data-netbox-color-mode=light] .badge.bg-blue-600,html[data-netbox-color-mode=light] .toast.bg-blue-600,html[data-netbox-color-mode=light] .toast-header.bg-blue-600,html[data-netbox-color-mode=light] .progress-bar.bg-blue-600{color:#fff}}@media print{html .bg-blue-700 button.btn-close,html[data-netbox-color-mode=dark] .bg-blue-700 button.btn-close,html[data-netbox-color-mode=light] .bg-blue-700 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%2305285b'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-blue-700,html[data-netbox-color-mode=dark] .btn.btn-ghost-blue-700,html[data-netbox-color-mode=light] .btn.btn-ghost-blue-700{color:#084298}}@media print{html .btn.btn-ghost-blue-700:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-blue-700:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-blue-700:hover{background-color:#0842981f}}@media print{html .alert.alert-blue-700 a:not(.btn),html .table-blue-700 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-blue-700 a:not(.btn),html[data-netbox-color-mode=dark] .table-blue-700 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-blue-700 a:not(.btn),html[data-netbox-color-mode=light] .table-blue-700 a:not(.btn){font-weight:700;color:#05285b}}@media print{html .alert.alert-blue-700 .btn:not([class*=btn-outline]),html .table-blue-700 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-blue-700 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-blue-700 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-blue-700 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-blue-700 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-blue-700 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-blue-700 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-blue-700 a:not(.btn){font-weight:700;color:#9cb3d6}}@media print{html .badge.bg-blue-700,html .toast.bg-blue-700,html .toast-header.bg-blue-700,html .progress-bar.bg-blue-700,html[data-netbox-color-mode=dark] .badge.bg-blue-700,html[data-netbox-color-mode=dark] .toast.bg-blue-700,html[data-netbox-color-mode=dark] .toast-header.bg-blue-700,html[data-netbox-color-mode=dark] .progress-bar.bg-blue-700,html[data-netbox-color-mode=light] .badge.bg-blue-700,html[data-netbox-color-mode=light] .toast.bg-blue-700,html[data-netbox-color-mode=light] .toast-header.bg-blue-700,html[data-netbox-color-mode=light] .progress-bar.bg-blue-700{color:#fff}}@media print{html .bg-blue-800 button.btn-close,html[data-netbox-color-mode=dark] .bg-blue-800 button.btn-close,html[data-netbox-color-mode=light] .bg-blue-800 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23031a3d'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-blue-800,html[data-netbox-color-mode=dark] .btn.btn-ghost-blue-800,html[data-netbox-color-mode=light] .btn.btn-ghost-blue-800{color:#052c65}}@media print{html .btn.btn-ghost-blue-800:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-blue-800:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-blue-800:hover{background-color:#052c651f}}@media print{html .alert.alert-blue-800 a:not(.btn),html .table-blue-800 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-blue-800 a:not(.btn),html[data-netbox-color-mode=dark] .table-blue-800 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-blue-800 a:not(.btn),html[data-netbox-color-mode=light] .table-blue-800 a:not(.btn){font-weight:700;color:#031a3d}}@media print{html .alert.alert-blue-800 .btn:not([class*=btn-outline]),html .table-blue-800 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-blue-800 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-blue-800 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-blue-800 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-blue-800 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-blue-800 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-blue-800 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-blue-800 a:not(.btn){font-weight:700;color:#9babc1}}@media print{html .badge.bg-blue-800,html .toast.bg-blue-800,html .toast-header.bg-blue-800,html .progress-bar.bg-blue-800,html[data-netbox-color-mode=dark] .badge.bg-blue-800,html[data-netbox-color-mode=dark] .toast.bg-blue-800,html[data-netbox-color-mode=dark] .toast-header.bg-blue-800,html[data-netbox-color-mode=dark] .progress-bar.bg-blue-800,html[data-netbox-color-mode=light] .badge.bg-blue-800,html[data-netbox-color-mode=light] .toast.bg-blue-800,html[data-netbox-color-mode=light] .toast-header.bg-blue-800,html[data-netbox-color-mode=light] .progress-bar.bg-blue-800{color:#fff}}@media print{html .bg-blue-900 button.btn-close,html[data-netbox-color-mode=dark] .bg-blue-900 button.btn-close,html[data-netbox-color-mode=light] .bg-blue-900 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23020d1f'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-blue-900,html[data-netbox-color-mode=dark] .btn.btn-ghost-blue-900,html[data-netbox-color-mode=light] .btn.btn-ghost-blue-900{color:#031633}}@media print{html .btn.btn-ghost-blue-900:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-blue-900:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-blue-900:hover{background-color:#0316331f}}@media print{html .alert.alert-blue-900 a:not(.btn),html .table-blue-900 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-blue-900 a:not(.btn),html[data-netbox-color-mode=dark] .table-blue-900 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-blue-900 a:not(.btn),html[data-netbox-color-mode=light] .table-blue-900 a:not(.btn){font-weight:700;color:#020d1f}}@media print{html .alert.alert-blue-900 .btn:not([class*=btn-outline]),html .table-blue-900 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-blue-900 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-blue-900 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-blue-900 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-blue-900 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-blue-900 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-blue-900 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-blue-900 a:not(.btn){font-weight:700;color:#9aa2ad}}@media print{html .badge.bg-blue-900,html .toast.bg-blue-900,html .toast-header.bg-blue-900,html .progress-bar.bg-blue-900,html[data-netbox-color-mode=dark] .badge.bg-blue-900,html[data-netbox-color-mode=dark] .toast.bg-blue-900,html[data-netbox-color-mode=dark] .toast-header.bg-blue-900,html[data-netbox-color-mode=dark] .progress-bar.bg-blue-900,html[data-netbox-color-mode=light] .badge.bg-blue-900,html[data-netbox-color-mode=light] .toast.bg-blue-900,html[data-netbox-color-mode=light] .toast-header.bg-blue-900,html[data-netbox-color-mode=light] .progress-bar.bg-blue-900{color:#fff}}@media print{html .bg-cyan-100 button.btn-close,html[data-netbox-color-mode=dark] .bg-cyan-100 button.btn-close,html[data-netbox-color-mode=light] .bg-cyan-100 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23536265'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-cyan-100,html[data-netbox-color-mode=dark] .btn.btn-ghost-cyan-100,html[data-netbox-color-mode=light] .btn.btn-ghost-cyan-100{color:#cff4fc}}@media print{html .btn.btn-ghost-cyan-100:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-cyan-100:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-cyan-100:hover{background-color:#cff4fc1f}}@media print{html .alert.alert-cyan-100 a:not(.btn),html .table-cyan-100 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-cyan-100 a:not(.btn),html[data-netbox-color-mode=dark] .table-cyan-100 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-cyan-100 a:not(.btn),html[data-netbox-color-mode=light] .table-cyan-100 a:not(.btn){font-weight:700;color:#536265}}@media print{html .alert.alert-cyan-100 .btn:not([class*=btn-outline]),html .table-cyan-100 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-cyan-100 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-cyan-100 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-cyan-100 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-cyan-100 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-cyan-100 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-cyan-100 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-cyan-100 a:not(.btn){font-weight:700;color:#536265}}@media print{html .badge.bg-cyan-100,html .toast.bg-cyan-100,html .toast-header.bg-cyan-100,html .progress-bar.bg-cyan-100,html[data-netbox-color-mode=dark] .badge.bg-cyan-100,html[data-netbox-color-mode=dark] .toast.bg-cyan-100,html[data-netbox-color-mode=dark] .toast-header.bg-cyan-100,html[data-netbox-color-mode=dark] .progress-bar.bg-cyan-100,html[data-netbox-color-mode=light] .badge.bg-cyan-100,html[data-netbox-color-mode=light] .toast.bg-cyan-100,html[data-netbox-color-mode=light] .toast-header.bg-cyan-100,html[data-netbox-color-mode=light] .progress-bar.bg-cyan-100{color:#000}}@media print{html .bg-cyan-200 button.btn-close,html[data-netbox-color-mode=dark] .bg-cyan-200 button.btn-close,html[data-netbox-color-mode=light] .bg-cyan-200 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%233f5e64'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-cyan-200,html[data-netbox-color-mode=dark] .btn.btn-ghost-cyan-200,html[data-netbox-color-mode=light] .btn.btn-ghost-cyan-200{color:#9eeaf9}}@media print{html .btn.btn-ghost-cyan-200:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-cyan-200:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-cyan-200:hover{background-color:#9eeaf91f}}@media print{html .alert.alert-cyan-200 a:not(.btn),html .table-cyan-200 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-cyan-200 a:not(.btn),html[data-netbox-color-mode=dark] .table-cyan-200 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-cyan-200 a:not(.btn),html[data-netbox-color-mode=light] .table-cyan-200 a:not(.btn){font-weight:700;color:#3f5e64}}@media print{html .alert.alert-cyan-200 .btn:not([class*=btn-outline]),html .table-cyan-200 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-cyan-200 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-cyan-200 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-cyan-200 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-cyan-200 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-cyan-200 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-cyan-200 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-cyan-200 a:not(.btn){font-weight:700;color:#3f5e64}}@media print{html .badge.bg-cyan-200,html .toast.bg-cyan-200,html .toast-header.bg-cyan-200,html .progress-bar.bg-cyan-200,html[data-netbox-color-mode=dark] .badge.bg-cyan-200,html[data-netbox-color-mode=dark] .toast.bg-cyan-200,html[data-netbox-color-mode=dark] .toast-header.bg-cyan-200,html[data-netbox-color-mode=dark] .progress-bar.bg-cyan-200,html[data-netbox-color-mode=light] .badge.bg-cyan-200,html[data-netbox-color-mode=light] .toast.bg-cyan-200,html[data-netbox-color-mode=light] .toast-header.bg-cyan-200,html[data-netbox-color-mode=light] .progress-bar.bg-cyan-200{color:#000}}@media print{html .bg-cyan-300 button.btn-close,html[data-netbox-color-mode=dark] .bg-cyan-300 button.btn-close,html[data-netbox-color-mode=light] .bg-cyan-300 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%232c5962'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-cyan-300,html[data-netbox-color-mode=dark] .btn.btn-ghost-cyan-300,html[data-netbox-color-mode=light] .btn.btn-ghost-cyan-300{color:#6edff6}}@media print{html .btn.btn-ghost-cyan-300:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-cyan-300:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-cyan-300:hover{background-color:#6edff61f}}@media print{html .alert.alert-cyan-300 a:not(.btn),html .table-cyan-300 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-cyan-300 a:not(.btn),html[data-netbox-color-mode=dark] .table-cyan-300 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-cyan-300 a:not(.btn),html[data-netbox-color-mode=light] .table-cyan-300 a:not(.btn){font-weight:700;color:#2c5962}}@media print{html .alert.alert-cyan-300 .btn:not([class*=btn-outline]),html .table-cyan-300 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-cyan-300 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-cyan-300 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-cyan-300 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-cyan-300 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-cyan-300 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-cyan-300 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-cyan-300 a:not(.btn){font-weight:700;color:#2c5962}}@media print{html .badge.bg-cyan-300,html .toast.bg-cyan-300,html .toast-header.bg-cyan-300,html .progress-bar.bg-cyan-300,html[data-netbox-color-mode=dark] .badge.bg-cyan-300,html[data-netbox-color-mode=dark] .toast.bg-cyan-300,html[data-netbox-color-mode=dark] .toast-header.bg-cyan-300,html[data-netbox-color-mode=dark] .progress-bar.bg-cyan-300,html[data-netbox-color-mode=light] .badge.bg-cyan-300,html[data-netbox-color-mode=light] .toast.bg-cyan-300,html[data-netbox-color-mode=light] .toast-header.bg-cyan-300,html[data-netbox-color-mode=light] .progress-bar.bg-cyan-300{color:#000}}@media print{html .bg-cyan-400 button.btn-close,html[data-netbox-color-mode=dark] .bg-cyan-400 button.btn-close,html[data-netbox-color-mode=light] .bg-cyan-400 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23185561'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-cyan-400,html[data-netbox-color-mode=dark] .btn.btn-ghost-cyan-400,html[data-netbox-color-mode=light] .btn.btn-ghost-cyan-400{color:#3dd5f3}}@media print{html .btn.btn-ghost-cyan-400:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-cyan-400:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-cyan-400:hover{background-color:#3dd5f31f}}@media print{html .alert.alert-cyan-400 a:not(.btn),html .table-cyan-400 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-cyan-400 a:not(.btn),html[data-netbox-color-mode=dark] .table-cyan-400 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-cyan-400 a:not(.btn),html[data-netbox-color-mode=light] .table-cyan-400 a:not(.btn){font-weight:700;color:#185561}}@media print{html .alert.alert-cyan-400 .btn:not([class*=btn-outline]),html .table-cyan-400 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-cyan-400 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-cyan-400 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-cyan-400 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-cyan-400 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-cyan-400 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-cyan-400 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-cyan-400 a:not(.btn){font-weight:700;color:#185561}}@media print{html .badge.bg-cyan-400,html .toast.bg-cyan-400,html .toast-header.bg-cyan-400,html .progress-bar.bg-cyan-400,html[data-netbox-color-mode=dark] .badge.bg-cyan-400,html[data-netbox-color-mode=dark] .toast.bg-cyan-400,html[data-netbox-color-mode=dark] .toast-header.bg-cyan-400,html[data-netbox-color-mode=dark] .progress-bar.bg-cyan-400,html[data-netbox-color-mode=light] .badge.bg-cyan-400,html[data-netbox-color-mode=light] .toast.bg-cyan-400,html[data-netbox-color-mode=light] .toast-header.bg-cyan-400,html[data-netbox-color-mode=light] .progress-bar.bg-cyan-400{color:#000}}@media print{html .bg-cyan-500 button.btn-close,html[data-netbox-color-mode=dark] .bg-cyan-500 button.btn-close,html[data-netbox-color-mode=light] .bg-cyan-500 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23055160'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-cyan-500,html[data-netbox-color-mode=dark] .btn.btn-ghost-cyan-500,html[data-netbox-color-mode=light] .btn.btn-ghost-cyan-500{color:#0dcaf0}}@media print{html .btn.btn-ghost-cyan-500:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-cyan-500:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-cyan-500:hover{background-color:#0dcaf01f}}@media print{html .alert.alert-cyan-500 a:not(.btn),html .table-cyan-500 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-cyan-500 a:not(.btn),html[data-netbox-color-mode=dark] .table-cyan-500 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-cyan-500 a:not(.btn),html[data-netbox-color-mode=light] .table-cyan-500 a:not(.btn){font-weight:700;color:#055160}}@media print{html .alert.alert-cyan-500 .btn:not([class*=btn-outline]),html .table-cyan-500 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-cyan-500 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-cyan-500 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-cyan-500 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-cyan-500 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-cyan-500 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-cyan-500 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-cyan-500 a:not(.btn){font-weight:700;color:#055160}}@media print{html .badge.bg-cyan-500,html .toast.bg-cyan-500,html .toast-header.bg-cyan-500,html .progress-bar.bg-cyan-500,html[data-netbox-color-mode=dark] .badge.bg-cyan-500,html[data-netbox-color-mode=dark] .toast.bg-cyan-500,html[data-netbox-color-mode=dark] .toast-header.bg-cyan-500,html[data-netbox-color-mode=dark] .progress-bar.bg-cyan-500,html[data-netbox-color-mode=light] .badge.bg-cyan-500,html[data-netbox-color-mode=light] .toast.bg-cyan-500,html[data-netbox-color-mode=light] .toast-header.bg-cyan-500,html[data-netbox-color-mode=light] .progress-bar.bg-cyan-500{color:#000}}@media print{html .bg-cyan-600 button.btn-close,html[data-netbox-color-mode=dark] .bg-cyan-600 button.btn-close,html[data-netbox-color-mode=light] .bg-cyan-600 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23066173'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-cyan-600,html[data-netbox-color-mode=dark] .btn.btn-ghost-cyan-600,html[data-netbox-color-mode=light] .btn.btn-ghost-cyan-600{color:#0aa2c0}}@media print{html .btn.btn-ghost-cyan-600:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-cyan-600:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-cyan-600:hover{background-color:#0aa2c01f}}@media print{html .alert.alert-cyan-600 a:not(.btn),html .table-cyan-600 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-cyan-600 a:not(.btn),html[data-netbox-color-mode=dark] .table-cyan-600 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-cyan-600 a:not(.btn),html[data-netbox-color-mode=light] .table-cyan-600 a:not(.btn){font-weight:700;color:#066173}}@media print{html .alert.alert-cyan-600 .btn:not([class*=btn-outline]),html .table-cyan-600 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-cyan-600 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-cyan-600 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-cyan-600 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-cyan-600 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-cyan-600 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-cyan-600 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-cyan-600 a:not(.btn){font-weight:700;color:#04414d}}@media print{html .badge.bg-cyan-600,html .toast.bg-cyan-600,html .toast-header.bg-cyan-600,html .progress-bar.bg-cyan-600,html[data-netbox-color-mode=dark] .badge.bg-cyan-600,html[data-netbox-color-mode=dark] .toast.bg-cyan-600,html[data-netbox-color-mode=dark] .toast-header.bg-cyan-600,html[data-netbox-color-mode=dark] .progress-bar.bg-cyan-600,html[data-netbox-color-mode=light] .badge.bg-cyan-600,html[data-netbox-color-mode=light] .toast.bg-cyan-600,html[data-netbox-color-mode=light] .toast-header.bg-cyan-600,html[data-netbox-color-mode=light] .progress-bar.bg-cyan-600{color:#000}}@media print{html .bg-cyan-700 button.btn-close,html[data-netbox-color-mode=dark] .bg-cyan-700 button.btn-close,html[data-netbox-color-mode=light] .bg-cyan-700 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23054956'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-cyan-700,html[data-netbox-color-mode=dark] .btn.btn-ghost-cyan-700,html[data-netbox-color-mode=light] .btn.btn-ghost-cyan-700{color:#087990}}@media print{html .btn.btn-ghost-cyan-700:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-cyan-700:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-cyan-700:hover{background-color:#0879901f}}@media print{html .alert.alert-cyan-700 a:not(.btn),html .table-cyan-700 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-cyan-700 a:not(.btn),html[data-netbox-color-mode=dark] .table-cyan-700 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-cyan-700 a:not(.btn),html[data-netbox-color-mode=light] .table-cyan-700 a:not(.btn){font-weight:700;color:#054956}}@media print{html .alert.alert-cyan-700 .btn:not([class*=btn-outline]),html .table-cyan-700 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-cyan-700 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-cyan-700 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-cyan-700 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-cyan-700 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-cyan-700 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-cyan-700 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-cyan-700 a:not(.btn){font-weight:700;color:#9cc9d3}}@media print{html .badge.bg-cyan-700,html .toast.bg-cyan-700,html .toast-header.bg-cyan-700,html .progress-bar.bg-cyan-700,html[data-netbox-color-mode=dark] .badge.bg-cyan-700,html[data-netbox-color-mode=dark] .toast.bg-cyan-700,html[data-netbox-color-mode=dark] .toast-header.bg-cyan-700,html[data-netbox-color-mode=dark] .progress-bar.bg-cyan-700,html[data-netbox-color-mode=light] .badge.bg-cyan-700,html[data-netbox-color-mode=light] .toast.bg-cyan-700,html[data-netbox-color-mode=light] .toast-header.bg-cyan-700,html[data-netbox-color-mode=light] .progress-bar.bg-cyan-700{color:#fff}}@media print{html .bg-cyan-800 button.btn-close,html[data-netbox-color-mode=dark] .bg-cyan-800 button.btn-close,html[data-netbox-color-mode=light] .bg-cyan-800 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%2303313a'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-cyan-800,html[data-netbox-color-mode=dark] .btn.btn-ghost-cyan-800,html[data-netbox-color-mode=light] .btn.btn-ghost-cyan-800{color:#055160}}@media print{html .btn.btn-ghost-cyan-800:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-cyan-800:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-cyan-800:hover{background-color:#0551601f}}@media print{html .alert.alert-cyan-800 a:not(.btn),html .table-cyan-800 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-cyan-800 a:not(.btn),html[data-netbox-color-mode=dark] .table-cyan-800 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-cyan-800 a:not(.btn),html[data-netbox-color-mode=light] .table-cyan-800 a:not(.btn){font-weight:700;color:#03313a}}@media print{html .alert.alert-cyan-800 .btn:not([class*=btn-outline]),html .table-cyan-800 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-cyan-800 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-cyan-800 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-cyan-800 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-cyan-800 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-cyan-800 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-cyan-800 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-cyan-800 a:not(.btn){font-weight:700;color:#9bb9bf}}@media print{html .badge.bg-cyan-800,html .toast.bg-cyan-800,html .toast-header.bg-cyan-800,html .progress-bar.bg-cyan-800,html[data-netbox-color-mode=dark] .badge.bg-cyan-800,html[data-netbox-color-mode=dark] .toast.bg-cyan-800,html[data-netbox-color-mode=dark] .toast-header.bg-cyan-800,html[data-netbox-color-mode=dark] .progress-bar.bg-cyan-800,html[data-netbox-color-mode=light] .badge.bg-cyan-800,html[data-netbox-color-mode=light] .toast.bg-cyan-800,html[data-netbox-color-mode=light] .toast-header.bg-cyan-800,html[data-netbox-color-mode=light] .progress-bar.bg-cyan-800{color:#fff}}@media print{html .bg-cyan-900 button.btn-close,html[data-netbox-color-mode=dark] .bg-cyan-900 button.btn-close,html[data-netbox-color-mode=light] .bg-cyan-900 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%2302181d'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-cyan-900,html[data-netbox-color-mode=dark] .btn.btn-ghost-cyan-900,html[data-netbox-color-mode=light] .btn.btn-ghost-cyan-900{color:#032830}}@media print{html .btn.btn-ghost-cyan-900:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-cyan-900:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-cyan-900:hover{background-color:#0328301f}}@media print{html .alert.alert-cyan-900 a:not(.btn),html .table-cyan-900 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-cyan-900 a:not(.btn),html[data-netbox-color-mode=dark] .table-cyan-900 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-cyan-900 a:not(.btn),html[data-netbox-color-mode=light] .table-cyan-900 a:not(.btn){font-weight:700;color:#02181d}}@media print{html .alert.alert-cyan-900 .btn:not([class*=btn-outline]),html .table-cyan-900 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-cyan-900 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-cyan-900 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-cyan-900 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-cyan-900 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-cyan-900 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-cyan-900 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-cyan-900 a:not(.btn){font-weight:700;color:#9aa9ac}}@media print{html .badge.bg-cyan-900,html .toast.bg-cyan-900,html .toast-header.bg-cyan-900,html .progress-bar.bg-cyan-900,html[data-netbox-color-mode=dark] .badge.bg-cyan-900,html[data-netbox-color-mode=dark] .toast.bg-cyan-900,html[data-netbox-color-mode=dark] .toast-header.bg-cyan-900,html[data-netbox-color-mode=dark] .progress-bar.bg-cyan-900,html[data-netbox-color-mode=light] .badge.bg-cyan-900,html[data-netbox-color-mode=light] .toast.bg-cyan-900,html[data-netbox-color-mode=light] .toast-header.bg-cyan-900,html[data-netbox-color-mode=light] .progress-bar.bg-cyan-900{color:#fff}}@media print{html .bg-indigo-100 button.btn-close,html[data-netbox-color-mode=dark] .bg-indigo-100 button.btn-close,html[data-netbox-color-mode=light] .bg-indigo-100 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%235a5365'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-indigo-100,html[data-netbox-color-mode=dark] .btn.btn-ghost-indigo-100,html[data-netbox-color-mode=light] .btn.btn-ghost-indigo-100{color:#e0cffc}}@media print{html .btn.btn-ghost-indigo-100:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-indigo-100:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-indigo-100:hover{background-color:#e0cffc1f}}@media print{html .alert.alert-indigo-100 a:not(.btn),html .table-indigo-100 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-indigo-100 a:not(.btn),html[data-netbox-color-mode=dark] .table-indigo-100 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-indigo-100 a:not(.btn),html[data-netbox-color-mode=light] .table-indigo-100 a:not(.btn){font-weight:700;color:#5a5365}}@media print{html .alert.alert-indigo-100 .btn:not([class*=btn-outline]),html .table-indigo-100 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-indigo-100 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-indigo-100 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-indigo-100 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-indigo-100 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-indigo-100 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-indigo-100 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-indigo-100 a:not(.btn){font-weight:700;color:#5a5365}}@media print{html .badge.bg-indigo-100,html .toast.bg-indigo-100,html .toast-header.bg-indigo-100,html .progress-bar.bg-indigo-100,html[data-netbox-color-mode=dark] .badge.bg-indigo-100,html[data-netbox-color-mode=dark] .toast.bg-indigo-100,html[data-netbox-color-mode=dark] .toast-header.bg-indigo-100,html[data-netbox-color-mode=dark] .progress-bar.bg-indigo-100,html[data-netbox-color-mode=light] .badge.bg-indigo-100,html[data-netbox-color-mode=light] .toast.bg-indigo-100,html[data-netbox-color-mode=light] .toast-header.bg-indigo-100,html[data-netbox-color-mode=light] .progress-bar.bg-indigo-100{color:#000}}@media print{html .bg-indigo-200 button.btn-close,html[data-netbox-color-mode=dark] .bg-indigo-200 button.btn-close,html[data-netbox-color-mode=light] .bg-indigo-200 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23745f96'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-indigo-200,html[data-netbox-color-mode=dark] .btn.btn-ghost-indigo-200,html[data-netbox-color-mode=light] .btn.btn-ghost-indigo-200{color:#c29ffa}}@media print{html .btn.btn-ghost-indigo-200:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-indigo-200:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-indigo-200:hover{background-color:#c29ffa1f}}@media print{html .alert.alert-indigo-200 a:not(.btn),html .table-indigo-200 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-indigo-200 a:not(.btn),html[data-netbox-color-mode=dark] .table-indigo-200 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-indigo-200 a:not(.btn),html[data-netbox-color-mode=light] .table-indigo-200 a:not(.btn){font-weight:700;color:#745f96}}@media print{html .alert.alert-indigo-200 .btn:not([class*=btn-outline]),html .table-indigo-200 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-indigo-200 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-indigo-200 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-indigo-200 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-indigo-200 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-indigo-200 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-indigo-200 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-indigo-200 a:not(.btn){font-weight:700;color:#4e4064}}@media print{html .badge.bg-indigo-200,html .toast.bg-indigo-200,html .toast-header.bg-indigo-200,html .progress-bar.bg-indigo-200,html[data-netbox-color-mode=dark] .badge.bg-indigo-200,html[data-netbox-color-mode=dark] .toast.bg-indigo-200,html[data-netbox-color-mode=dark] .toast-header.bg-indigo-200,html[data-netbox-color-mode=dark] .progress-bar.bg-indigo-200,html[data-netbox-color-mode=light] .badge.bg-indigo-200,html[data-netbox-color-mode=light] .toast.bg-indigo-200,html[data-netbox-color-mode=light] .toast-header.bg-indigo-200,html[data-netbox-color-mode=light] .progress-bar.bg-indigo-200{color:#000}}@media print{html .bg-indigo-300 button.btn-close,html[data-netbox-color-mode=dark] .bg-indigo-300 button.btn-close,html[data-netbox-color-mode=light] .bg-indigo-300 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23624394'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-indigo-300,html[data-netbox-color-mode=dark] .btn.btn-ghost-indigo-300,html[data-netbox-color-mode=light] .btn.btn-ghost-indigo-300{color:#a370f7}}@media print{html .btn.btn-ghost-indigo-300:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-indigo-300:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-indigo-300:hover{background-color:#a370f71f}}@media print{html .alert.alert-indigo-300 a:not(.btn),html .table-indigo-300 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-indigo-300 a:not(.btn),html[data-netbox-color-mode=dark] .table-indigo-300 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-indigo-300 a:not(.btn),html[data-netbox-color-mode=light] .table-indigo-300 a:not(.btn){font-weight:700;color:#624394}}@media print{html .alert.alert-indigo-300 .btn:not([class*=btn-outline]),html .table-indigo-300 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-indigo-300 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-indigo-300 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-indigo-300 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-indigo-300 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-indigo-300 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-indigo-300 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-indigo-300 a:not(.btn){font-weight:700;color:#412d63}}@media print{html .badge.bg-indigo-300,html .toast.bg-indigo-300,html .toast-header.bg-indigo-300,html .progress-bar.bg-indigo-300,html[data-netbox-color-mode=dark] .badge.bg-indigo-300,html[data-netbox-color-mode=dark] .toast.bg-indigo-300,html[data-netbox-color-mode=dark] .toast-header.bg-indigo-300,html[data-netbox-color-mode=dark] .progress-bar.bg-indigo-300,html[data-netbox-color-mode=light] .badge.bg-indigo-300,html[data-netbox-color-mode=light] .toast.bg-indigo-300,html[data-netbox-color-mode=light] .toast-header.bg-indigo-300,html[data-netbox-color-mode=light] .progress-bar.bg-indigo-300{color:#000}}@media print{html .bg-indigo-400 button.btn-close,html[data-netbox-color-mode=dark] .bg-indigo-400 button.btn-close,html[data-netbox-color-mode=light] .bg-indigo-400 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23502693'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-indigo-400,html[data-netbox-color-mode=dark] .btn.btn-ghost-indigo-400,html[data-netbox-color-mode=light] .btn.btn-ghost-indigo-400{color:#8540f5}}@media print{html .btn.btn-ghost-indigo-400:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-indigo-400:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-indigo-400:hover{background-color:#8540f51f}}@media print{html .alert.alert-indigo-400 a:not(.btn),html .table-indigo-400 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-indigo-400 a:not(.btn),html[data-netbox-color-mode=dark] .table-indigo-400 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-indigo-400 a:not(.btn),html[data-netbox-color-mode=light] .table-indigo-400 a:not(.btn){font-weight:700;color:#502693}}@media print{html .alert.alert-indigo-400 .btn:not([class*=btn-outline]),html .table-indigo-400 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-indigo-400 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-indigo-400 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-indigo-400 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-indigo-400 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-indigo-400 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-indigo-400 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-indigo-400 a:not(.btn){font-weight:700;color:#ceb3fb}}@media print{html .badge.bg-indigo-400,html .toast.bg-indigo-400,html .toast-header.bg-indigo-400,html .progress-bar.bg-indigo-400,html[data-netbox-color-mode=dark] .badge.bg-indigo-400,html[data-netbox-color-mode=dark] .toast.bg-indigo-400,html[data-netbox-color-mode=dark] .toast-header.bg-indigo-400,html[data-netbox-color-mode=dark] .progress-bar.bg-indigo-400,html[data-netbox-color-mode=light] .badge.bg-indigo-400,html[data-netbox-color-mode=light] .toast.bg-indigo-400,html[data-netbox-color-mode=light] .toast-header.bg-indigo-400,html[data-netbox-color-mode=light] .progress-bar.bg-indigo-400{color:#fff}}@media print{html .bg-indigo-500 button.btn-close,html[data-netbox-color-mode=dark] .bg-indigo-500 button.btn-close,html[data-netbox-color-mode=light] .bg-indigo-500 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%233d0a91'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-indigo-500,html[data-netbox-color-mode=dark] .btn.btn-ghost-indigo-500,html[data-netbox-color-mode=light] .btn.btn-ghost-indigo-500{color:#6610f2}}@media print{html .btn.btn-ghost-indigo-500:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-indigo-500:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-indigo-500:hover{background-color:#6610f21f}}@media print{html .alert.alert-indigo-500 a:not(.btn),html .table-indigo-500 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-indigo-500 a:not(.btn),html[data-netbox-color-mode=dark] .table-indigo-500 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-indigo-500 a:not(.btn),html[data-netbox-color-mode=light] .table-indigo-500 a:not(.btn){font-weight:700;color:#3d0a91}}@media print{html .alert.alert-indigo-500 .btn:not([class*=btn-outline]),html .table-indigo-500 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-indigo-500 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-indigo-500 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-indigo-500 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-indigo-500 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-indigo-500 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-indigo-500 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-indigo-500 a:not(.btn){font-weight:700;color:#c29ffa}}@media print{html .badge.bg-indigo-500,html .toast.bg-indigo-500,html .toast-header.bg-indigo-500,html .progress-bar.bg-indigo-500,html[data-netbox-color-mode=dark] .badge.bg-indigo-500,html[data-netbox-color-mode=dark] .toast.bg-indigo-500,html[data-netbox-color-mode=dark] .toast-header.bg-indigo-500,html[data-netbox-color-mode=dark] .progress-bar.bg-indigo-500,html[data-netbox-color-mode=light] .badge.bg-indigo-500,html[data-netbox-color-mode=light] .toast.bg-indigo-500,html[data-netbox-color-mode=light] .toast-header.bg-indigo-500,html[data-netbox-color-mode=light] .progress-bar.bg-indigo-500{color:#fff}}@media print{html .bg-indigo-600 button.btn-close,html[data-netbox-color-mode=dark] .bg-indigo-600 button.btn-close,html[data-netbox-color-mode=light] .bg-indigo-600 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23310874'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-indigo-600,html[data-netbox-color-mode=dark] .btn.btn-ghost-indigo-600,html[data-netbox-color-mode=light] .btn.btn-ghost-indigo-600{color:#520dc2}}@media print{html .btn.btn-ghost-indigo-600:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-indigo-600:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-indigo-600:hover{background-color:#520dc21f}}@media print{html .alert.alert-indigo-600 a:not(.btn),html .table-indigo-600 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-indigo-600 a:not(.btn),html[data-netbox-color-mode=dark] .table-indigo-600 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-indigo-600 a:not(.btn),html[data-netbox-color-mode=light] .table-indigo-600 a:not(.btn){font-weight:700;color:#310874}}@media print{html .alert.alert-indigo-600 .btn:not([class*=btn-outline]),html .table-indigo-600 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-indigo-600 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-indigo-600 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-indigo-600 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-indigo-600 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-indigo-600 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-indigo-600 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-indigo-600 a:not(.btn){font-weight:700;color:#ba9ee7}}@media print{html .badge.bg-indigo-600,html .toast.bg-indigo-600,html .toast-header.bg-indigo-600,html .progress-bar.bg-indigo-600,html[data-netbox-color-mode=dark] .badge.bg-indigo-600,html[data-netbox-color-mode=dark] .toast.bg-indigo-600,html[data-netbox-color-mode=dark] .toast-header.bg-indigo-600,html[data-netbox-color-mode=dark] .progress-bar.bg-indigo-600,html[data-netbox-color-mode=light] .badge.bg-indigo-600,html[data-netbox-color-mode=light] .toast.bg-indigo-600,html[data-netbox-color-mode=light] .toast-header.bg-indigo-600,html[data-netbox-color-mode=light] .progress-bar.bg-indigo-600{color:#fff}}@media print{html .bg-indigo-700 button.btn-close,html[data-netbox-color-mode=dark] .bg-indigo-700 button.btn-close,html[data-netbox-color-mode=light] .bg-indigo-700 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23250657'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-indigo-700,html[data-netbox-color-mode=dark] .btn.btn-ghost-indigo-700,html[data-netbox-color-mode=light] .btn.btn-ghost-indigo-700{color:#3d0a91}}@media print{html .btn.btn-ghost-indigo-700:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-indigo-700:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-indigo-700:hover{background-color:#3d0a911f}}@media print{html .alert.alert-indigo-700 a:not(.btn),html .table-indigo-700 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-indigo-700 a:not(.btn),html[data-netbox-color-mode=dark] .table-indigo-700 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-indigo-700 a:not(.btn),html[data-netbox-color-mode=light] .table-indigo-700 a:not(.btn){font-weight:700;color:#250657}}@media print{html .alert.alert-indigo-700 .btn:not([class*=btn-outline]),html .table-indigo-700 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-indigo-700 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-indigo-700 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-indigo-700 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-indigo-700 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-indigo-700 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-indigo-700 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-indigo-700 a:not(.btn){font-weight:700;color:#b19dd3}}@media print{html .badge.bg-indigo-700,html .toast.bg-indigo-700,html .toast-header.bg-indigo-700,html .progress-bar.bg-indigo-700,html[data-netbox-color-mode=dark] .badge.bg-indigo-700,html[data-netbox-color-mode=dark] .toast.bg-indigo-700,html[data-netbox-color-mode=dark] .toast-header.bg-indigo-700,html[data-netbox-color-mode=dark] .progress-bar.bg-indigo-700,html[data-netbox-color-mode=light] .badge.bg-indigo-700,html[data-netbox-color-mode=light] .toast.bg-indigo-700,html[data-netbox-color-mode=light] .toast-header.bg-indigo-700,html[data-netbox-color-mode=light] .progress-bar.bg-indigo-700{color:#fff}}@media print{html .bg-indigo-800 button.btn-close,html[data-netbox-color-mode=dark] .bg-indigo-800 button.btn-close,html[data-netbox-color-mode=light] .bg-indigo-800 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%2319043a'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-indigo-800,html[data-netbox-color-mode=dark] .btn.btn-ghost-indigo-800,html[data-netbox-color-mode=light] .btn.btn-ghost-indigo-800{color:#290661}}@media print{html .btn.btn-ghost-indigo-800:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-indigo-800:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-indigo-800:hover{background-color:#2906611f}}@media print{html .alert.alert-indigo-800 a:not(.btn),html .table-indigo-800 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-indigo-800 a:not(.btn),html[data-netbox-color-mode=dark] .table-indigo-800 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-indigo-800 a:not(.btn),html[data-netbox-color-mode=light] .table-indigo-800 a:not(.btn){font-weight:700;color:#19043a}}@media print{html .alert.alert-indigo-800 .btn:not([class*=btn-outline]),html .table-indigo-800 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-indigo-800 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-indigo-800 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-indigo-800 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-indigo-800 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-indigo-800 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-indigo-800 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-indigo-800 a:not(.btn){font-weight:700;color:#a99bc0}}@media print{html .badge.bg-indigo-800,html .toast.bg-indigo-800,html .toast-header.bg-indigo-800,html .progress-bar.bg-indigo-800,html[data-netbox-color-mode=dark] .badge.bg-indigo-800,html[data-netbox-color-mode=dark] .toast.bg-indigo-800,html[data-netbox-color-mode=dark] .toast-header.bg-indigo-800,html[data-netbox-color-mode=dark] .progress-bar.bg-indigo-800,html[data-netbox-color-mode=light] .badge.bg-indigo-800,html[data-netbox-color-mode=light] .toast.bg-indigo-800,html[data-netbox-color-mode=light] .toast-header.bg-indigo-800,html[data-netbox-color-mode=light] .progress-bar.bg-indigo-800{color:#fff}}@media print{html .bg-indigo-900 button.btn-close,html[data-netbox-color-mode=dark] .bg-indigo-900 button.btn-close,html[data-netbox-color-mode=light] .bg-indigo-900 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230c021d'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-indigo-900,html[data-netbox-color-mode=dark] .btn.btn-ghost-indigo-900,html[data-netbox-color-mode=light] .btn.btn-ghost-indigo-900{color:#140330}}@media print{html .btn.btn-ghost-indigo-900:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-indigo-900:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-indigo-900:hover{background-color:#1403301f}}@media print{html .alert.alert-indigo-900 a:not(.btn),html .table-indigo-900 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-indigo-900 a:not(.btn),html[data-netbox-color-mode=dark] .table-indigo-900 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-indigo-900 a:not(.btn),html[data-netbox-color-mode=light] .table-indigo-900 a:not(.btn){font-weight:700;color:#0c021d}}@media print{html .alert.alert-indigo-900 .btn:not([class*=btn-outline]),html .table-indigo-900 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-indigo-900 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-indigo-900 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-indigo-900 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-indigo-900 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-indigo-900 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-indigo-900 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-indigo-900 a:not(.btn){font-weight:700;color:#a19aac}}@media print{html .badge.bg-indigo-900,html .toast.bg-indigo-900,html .toast-header.bg-indigo-900,html .progress-bar.bg-indigo-900,html[data-netbox-color-mode=dark] .badge.bg-indigo-900,html[data-netbox-color-mode=dark] .toast.bg-indigo-900,html[data-netbox-color-mode=dark] .toast-header.bg-indigo-900,html[data-netbox-color-mode=dark] .progress-bar.bg-indigo-900,html[data-netbox-color-mode=light] .badge.bg-indigo-900,html[data-netbox-color-mode=light] .toast.bg-indigo-900,html[data-netbox-color-mode=light] .toast-header.bg-indigo-900,html[data-netbox-color-mode=light] .progress-bar.bg-indigo-900{color:#fff}}@media print{html .bg-purple-100 button.btn-close,html[data-netbox-color-mode=dark] .bg-purple-100 button.btn-close,html[data-netbox-color-mode=light] .bg-purple-100 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%235a5761'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-purple-100,html[data-netbox-color-mode=dark] .btn.btn-ghost-purple-100,html[data-netbox-color-mode=light] .btn.btn-ghost-purple-100{color:#e2d9f3}}@media print{html .btn.btn-ghost-purple-100:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-purple-100:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-purple-100:hover{background-color:#e2d9f31f}}@media print{html .alert.alert-purple-100 a:not(.btn),html .table-purple-100 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-purple-100 a:not(.btn),html[data-netbox-color-mode=dark] .table-purple-100 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-purple-100 a:not(.btn),html[data-netbox-color-mode=light] .table-purple-100 a:not(.btn){font-weight:700;color:#5a5761}}@media print{html .alert.alert-purple-100 .btn:not([class*=btn-outline]),html .table-purple-100 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-purple-100 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-purple-100 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-purple-100 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-purple-100 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-purple-100 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-purple-100 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-purple-100 a:not(.btn){font-weight:700;color:#5a5761}}@media print{html .badge.bg-purple-100,html .toast.bg-purple-100,html .toast-header.bg-purple-100,html .progress-bar.bg-purple-100,html[data-netbox-color-mode=dark] .badge.bg-purple-100,html[data-netbox-color-mode=dark] .toast.bg-purple-100,html[data-netbox-color-mode=dark] .toast-header.bg-purple-100,html[data-netbox-color-mode=dark] .progress-bar.bg-purple-100,html[data-netbox-color-mode=light] .badge.bg-purple-100,html[data-netbox-color-mode=light] .toast.bg-purple-100,html[data-netbox-color-mode=light] .toast-header.bg-purple-100,html[data-netbox-color-mode=light] .progress-bar.bg-purple-100{color:#000}}@media print{html .bg-purple-200 button.btn-close,html[data-netbox-color-mode=dark] .bg-purple-200 button.btn-close,html[data-netbox-color-mode=light] .bg-purple-200 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%234f485c'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-purple-200,html[data-netbox-color-mode=dark] .btn.btn-ghost-purple-200,html[data-netbox-color-mode=light] .btn.btn-ghost-purple-200{color:#c5b3e6}}@media print{html .btn.btn-ghost-purple-200:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-purple-200:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-purple-200:hover{background-color:#c5b3e61f}}@media print{html .alert.alert-purple-200 a:not(.btn),html .table-purple-200 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-purple-200 a:not(.btn),html[data-netbox-color-mode=dark] .table-purple-200 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-purple-200 a:not(.btn),html[data-netbox-color-mode=light] .table-purple-200 a:not(.btn){font-weight:700;color:#4f485c}}@media print{html .alert.alert-purple-200 .btn:not([class*=btn-outline]),html .table-purple-200 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-purple-200 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-purple-200 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-purple-200 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-purple-200 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-purple-200 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-purple-200 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-purple-200 a:not(.btn){font-weight:700;color:#4f485c}}@media print{html .badge.bg-purple-200,html .toast.bg-purple-200,html .toast-header.bg-purple-200,html .progress-bar.bg-purple-200,html[data-netbox-color-mode=dark] .badge.bg-purple-200,html[data-netbox-color-mode=dark] .toast.bg-purple-200,html[data-netbox-color-mode=dark] .toast-header.bg-purple-200,html[data-netbox-color-mode=dark] .progress-bar.bg-purple-200,html[data-netbox-color-mode=light] .badge.bg-purple-200,html[data-netbox-color-mode=light] .toast.bg-purple-200,html[data-netbox-color-mode=light] .toast-header.bg-purple-200,html[data-netbox-color-mode=light] .progress-bar.bg-purple-200{color:#000}}@media print{html .bg-purple-300 button.btn-close,html[data-netbox-color-mode=dark] .bg-purple-300 button.btn-close,html[data-netbox-color-mode=light] .bg-purple-300 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23655583'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-purple-300,html[data-netbox-color-mode=dark] .btn.btn-ghost-purple-300,html[data-netbox-color-mode=light] .btn.btn-ghost-purple-300{color:#a98eda}}@media print{html .btn.btn-ghost-purple-300:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-purple-300:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-purple-300:hover{background-color:#a98eda1f}}@media print{html .alert.alert-purple-300 a:not(.btn),html .table-purple-300 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-purple-300 a:not(.btn),html[data-netbox-color-mode=dark] .table-purple-300 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-purple-300 a:not(.btn),html[data-netbox-color-mode=light] .table-purple-300 a:not(.btn){font-weight:700;color:#655583}}@media print{html .alert.alert-purple-300 .btn:not([class*=btn-outline]),html .table-purple-300 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-purple-300 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-purple-300 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-purple-300 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-purple-300 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-purple-300 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-purple-300 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-purple-300 a:not(.btn){font-weight:700;color:#443957}}@media print{html .badge.bg-purple-300,html .toast.bg-purple-300,html .toast-header.bg-purple-300,html .progress-bar.bg-purple-300,html[data-netbox-color-mode=dark] .badge.bg-purple-300,html[data-netbox-color-mode=dark] .toast.bg-purple-300,html[data-netbox-color-mode=dark] .toast-header.bg-purple-300,html[data-netbox-color-mode=dark] .progress-bar.bg-purple-300,html[data-netbox-color-mode=light] .badge.bg-purple-300,html[data-netbox-color-mode=light] .toast.bg-purple-300,html[data-netbox-color-mode=light] .toast-header.bg-purple-300,html[data-netbox-color-mode=light] .progress-bar.bg-purple-300{color:#000}}@media print{html .bg-purple-400 button.btn-close,html[data-netbox-color-mode=dark] .bg-purple-400 button.btn-close,html[data-netbox-color-mode=light] .bg-purple-400 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23543e7b'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-purple-400,html[data-netbox-color-mode=dark] .btn.btn-ghost-purple-400,html[data-netbox-color-mode=light] .btn.btn-ghost-purple-400{color:#8c68cd}}@media print{html .btn.btn-ghost-purple-400:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-purple-400:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-purple-400:hover{background-color:#8c68cd1f}}@media print{html .alert.alert-purple-400 a:not(.btn),html .table-purple-400 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-purple-400 a:not(.btn),html[data-netbox-color-mode=dark] .table-purple-400 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-purple-400 a:not(.btn),html[data-netbox-color-mode=light] .table-purple-400 a:not(.btn){font-weight:700;color:#543e7b}}@media print{html .alert.alert-purple-400 .btn:not([class*=btn-outline]),html .table-purple-400 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-purple-400 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-purple-400 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-purple-400 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-purple-400 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-purple-400 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-purple-400 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-purple-400 a:not(.btn){font-weight:700;color:#382a52}}@media print{html .badge.bg-purple-400,html .toast.bg-purple-400,html .toast-header.bg-purple-400,html .progress-bar.bg-purple-400,html[data-netbox-color-mode=dark] .badge.bg-purple-400,html[data-netbox-color-mode=dark] .toast.bg-purple-400,html[data-netbox-color-mode=dark] .toast-header.bg-purple-400,html[data-netbox-color-mode=dark] .progress-bar.bg-purple-400,html[data-netbox-color-mode=light] .badge.bg-purple-400,html[data-netbox-color-mode=light] .toast.bg-purple-400,html[data-netbox-color-mode=light] .toast-header.bg-purple-400,html[data-netbox-color-mode=light] .progress-bar.bg-purple-400{color:#000}}@media print{html .bg-purple-500 button.btn-close,html[data-netbox-color-mode=dark] .bg-purple-500 button.btn-close,html[data-netbox-color-mode=light] .bg-purple-500 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23432874'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-purple-500,html[data-netbox-color-mode=dark] .btn.btn-ghost-purple-500,html[data-netbox-color-mode=light] .btn.btn-ghost-purple-500{color:#6f42c1}}@media print{html .btn.btn-ghost-purple-500:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-purple-500:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-purple-500:hover{background-color:#6f42c11f}}@media print{html .alert.alert-purple-500 a:not(.btn),html .table-purple-500 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-purple-500 a:not(.btn),html[data-netbox-color-mode=dark] .table-purple-500 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-purple-500 a:not(.btn),html[data-netbox-color-mode=light] .table-purple-500 a:not(.btn){font-weight:700;color:#432874}}@media print{html .alert.alert-purple-500 .btn:not([class*=btn-outline]),html .table-purple-500 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-purple-500 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-purple-500 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-purple-500 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-purple-500 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-purple-500 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-purple-500 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-purple-500 a:not(.btn){font-weight:700;color:#c5b3e6}}@media print{html .badge.bg-purple-500,html .toast.bg-purple-500,html .toast-header.bg-purple-500,html .progress-bar.bg-purple-500,html[data-netbox-color-mode=dark] .badge.bg-purple-500,html[data-netbox-color-mode=dark] .toast.bg-purple-500,html[data-netbox-color-mode=dark] .toast-header.bg-purple-500,html[data-netbox-color-mode=dark] .progress-bar.bg-purple-500,html[data-netbox-color-mode=light] .badge.bg-purple-500,html[data-netbox-color-mode=light] .toast.bg-purple-500,html[data-netbox-color-mode=light] .toast-header.bg-purple-500,html[data-netbox-color-mode=light] .progress-bar.bg-purple-500{color:#fff}}@media print{html .bg-purple-600 button.btn-close,html[data-netbox-color-mode=dark] .bg-purple-600 button.btn-close,html[data-netbox-color-mode=light] .bg-purple-600 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%2335205c'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-purple-600,html[data-netbox-color-mode=dark] .btn.btn-ghost-purple-600,html[data-netbox-color-mode=light] .btn.btn-ghost-purple-600{color:#59359a}}@media print{html .btn.btn-ghost-purple-600:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-purple-600:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-purple-600:hover{background-color:#59359a1f}}@media print{html .alert.alert-purple-600 a:not(.btn),html .table-purple-600 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-purple-600 a:not(.btn),html[data-netbox-color-mode=dark] .table-purple-600 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-purple-600 a:not(.btn),html[data-netbox-color-mode=light] .table-purple-600 a:not(.btn){font-weight:700;color:#35205c}}@media print{html .alert.alert-purple-600 .btn:not([class*=btn-outline]),html .table-purple-600 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-purple-600 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-purple-600 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-purple-600 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-purple-600 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-purple-600 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-purple-600 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-purple-600 a:not(.btn){font-weight:700;color:#bdaed7}}@media print{html .badge.bg-purple-600,html .toast.bg-purple-600,html .toast-header.bg-purple-600,html .progress-bar.bg-purple-600,html[data-netbox-color-mode=dark] .badge.bg-purple-600,html[data-netbox-color-mode=dark] .toast.bg-purple-600,html[data-netbox-color-mode=dark] .toast-header.bg-purple-600,html[data-netbox-color-mode=dark] .progress-bar.bg-purple-600,html[data-netbox-color-mode=light] .badge.bg-purple-600,html[data-netbox-color-mode=light] .toast.bg-purple-600,html[data-netbox-color-mode=light] .toast-header.bg-purple-600,html[data-netbox-color-mode=light] .progress-bar.bg-purple-600{color:#fff}}@media print{html .bg-purple-700 button.btn-close,html[data-netbox-color-mode=dark] .bg-purple-700 button.btn-close,html[data-netbox-color-mode=light] .bg-purple-700 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23281846'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-purple-700,html[data-netbox-color-mode=dark] .btn.btn-ghost-purple-700,html[data-netbox-color-mode=light] .btn.btn-ghost-purple-700{color:#432874}}@media print{html .btn.btn-ghost-purple-700:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-purple-700:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-purple-700:hover{background-color:#4328741f}}@media print{html .alert.alert-purple-700 a:not(.btn),html .table-purple-700 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-purple-700 a:not(.btn),html[data-netbox-color-mode=dark] .table-purple-700 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-purple-700 a:not(.btn),html[data-netbox-color-mode=light] .table-purple-700 a:not(.btn){font-weight:700;color:#281846}}@media print{html .alert.alert-purple-700 .btn:not([class*=btn-outline]),html .table-purple-700 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-purple-700 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-purple-700 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-purple-700 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-purple-700 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-purple-700 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-purple-700 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-purple-700 a:not(.btn){font-weight:700;color:#b4a9c7}}@media print{html .badge.bg-purple-700,html .toast.bg-purple-700,html .toast-header.bg-purple-700,html .progress-bar.bg-purple-700,html[data-netbox-color-mode=dark] .badge.bg-purple-700,html[data-netbox-color-mode=dark] .toast.bg-purple-700,html[data-netbox-color-mode=dark] .toast-header.bg-purple-700,html[data-netbox-color-mode=dark] .progress-bar.bg-purple-700,html[data-netbox-color-mode=light] .badge.bg-purple-700,html[data-netbox-color-mode=light] .toast.bg-purple-700,html[data-netbox-color-mode=light] .toast-header.bg-purple-700,html[data-netbox-color-mode=light] .progress-bar.bg-purple-700{color:#fff}}@media print{html .bg-purple-800 button.btn-close,html[data-netbox-color-mode=dark] .bg-purple-800 button.btn-close,html[data-netbox-color-mode=light] .bg-purple-800 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%231a102e'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-purple-800,html[data-netbox-color-mode=dark] .btn.btn-ghost-purple-800,html[data-netbox-color-mode=light] .btn.btn-ghost-purple-800{color:#2c1a4d}}@media print{html .btn.btn-ghost-purple-800:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-purple-800:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-purple-800:hover{background-color:#2c1a4d1f}}@media print{html .alert.alert-purple-800 a:not(.btn),html .table-purple-800 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-purple-800 a:not(.btn),html[data-netbox-color-mode=dark] .table-purple-800 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-purple-800 a:not(.btn),html[data-netbox-color-mode=light] .table-purple-800 a:not(.btn){font-weight:700;color:#1a102e}}@media print{html .alert.alert-purple-800 .btn:not([class*=btn-outline]),html .table-purple-800 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-purple-800 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-purple-800 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-purple-800 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-purple-800 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-purple-800 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-purple-800 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-purple-800 a:not(.btn){font-weight:700;color:#aba3b8}}@media print{html .badge.bg-purple-800,html .toast.bg-purple-800,html .toast-header.bg-purple-800,html .progress-bar.bg-purple-800,html[data-netbox-color-mode=dark] .badge.bg-purple-800,html[data-netbox-color-mode=dark] .toast.bg-purple-800,html[data-netbox-color-mode=dark] .toast-header.bg-purple-800,html[data-netbox-color-mode=dark] .progress-bar.bg-purple-800,html[data-netbox-color-mode=light] .badge.bg-purple-800,html[data-netbox-color-mode=light] .toast.bg-purple-800,html[data-netbox-color-mode=light] .toast-header.bg-purple-800,html[data-netbox-color-mode=light] .progress-bar.bg-purple-800{color:#fff}}@media print{html .bg-purple-900 button.btn-close,html[data-netbox-color-mode=dark] .bg-purple-900 button.btn-close,html[data-netbox-color-mode=light] .bg-purple-900 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230d0817'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-purple-900,html[data-netbox-color-mode=dark] .btn.btn-ghost-purple-900,html[data-netbox-color-mode=light] .btn.btn-ghost-purple-900{color:#160d27}}@media print{html .btn.btn-ghost-purple-900:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-purple-900:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-purple-900:hover{background-color:#160d271f}}@media print{html .alert.alert-purple-900 a:not(.btn),html .table-purple-900 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-purple-900 a:not(.btn),html[data-netbox-color-mode=dark] .table-purple-900 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-purple-900 a:not(.btn),html[data-netbox-color-mode=light] .table-purple-900 a:not(.btn){font-weight:700;color:#0d0817}}@media print{html .alert.alert-purple-900 .btn:not([class*=btn-outline]),html .table-purple-900 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-purple-900 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-purple-900 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-purple-900 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-purple-900 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-purple-900 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-purple-900 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-purple-900 a:not(.btn){font-weight:700;color:#a29ea9}}@media print{html .badge.bg-purple-900,html .toast.bg-purple-900,html .toast-header.bg-purple-900,html .progress-bar.bg-purple-900,html[data-netbox-color-mode=dark] .badge.bg-purple-900,html[data-netbox-color-mode=dark] .toast.bg-purple-900,html[data-netbox-color-mode=dark] .toast-header.bg-purple-900,html[data-netbox-color-mode=dark] .progress-bar.bg-purple-900,html[data-netbox-color-mode=light] .badge.bg-purple-900,html[data-netbox-color-mode=light] .toast.bg-purple-900,html[data-netbox-color-mode=light] .toast-header.bg-purple-900,html[data-netbox-color-mode=light] .progress-bar.bg-purple-900{color:#fff}}@media print{html .bg-pink-100 button.btn-close,html[data-netbox-color-mode=dark] .bg-pink-100 button.btn-close,html[data-netbox-color-mode=light] .bg-pink-100 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%2363565c'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-pink-100,html[data-netbox-color-mode=dark] .btn.btn-ghost-pink-100,html[data-netbox-color-mode=light] .btn.btn-ghost-pink-100{color:#f7d6e6}}@media print{html .btn.btn-ghost-pink-100:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-pink-100:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-pink-100:hover{background-color:#f7d6e61f}}@media print{html .alert.alert-pink-100 a:not(.btn),html .table-pink-100 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-pink-100 a:not(.btn),html[data-netbox-color-mode=dark] .table-pink-100 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-pink-100 a:not(.btn),html[data-netbox-color-mode=light] .table-pink-100 a:not(.btn){font-weight:700;color:#63565c}}@media print{html .alert.alert-pink-100 .btn:not([class*=btn-outline]),html .table-pink-100 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-pink-100 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-pink-100 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-pink-100 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-pink-100 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-pink-100 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-pink-100 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-pink-100 a:not(.btn){font-weight:700;color:#63565c}}@media print{html .badge.bg-pink-100,html .toast.bg-pink-100,html .toast-header.bg-pink-100,html .progress-bar.bg-pink-100,html[data-netbox-color-mode=dark] .badge.bg-pink-100,html[data-netbox-color-mode=dark] .toast.bg-pink-100,html[data-netbox-color-mode=dark] .toast-header.bg-pink-100,html[data-netbox-color-mode=dark] .progress-bar.bg-pink-100,html[data-netbox-color-mode=light] .badge.bg-pink-100,html[data-netbox-color-mode=light] .toast.bg-pink-100,html[data-netbox-color-mode=light] .toast-header.bg-pink-100,html[data-netbox-color-mode=light] .progress-bar.bg-pink-100{color:#000}}@media print{html .bg-pink-200 button.btn-close,html[data-netbox-color-mode=dark] .bg-pink-200 button.btn-close,html[data-netbox-color-mode=light] .bg-pink-200 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23604552'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-pink-200,html[data-netbox-color-mode=dark] .btn.btn-ghost-pink-200,html[data-netbox-color-mode=light] .btn.btn-ghost-pink-200{color:#efadce}}@media print{html .btn.btn-ghost-pink-200:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-pink-200:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-pink-200:hover{background-color:#efadce1f}}@media print{html .alert.alert-pink-200 a:not(.btn),html .table-pink-200 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-pink-200 a:not(.btn),html[data-netbox-color-mode=dark] .table-pink-200 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-pink-200 a:not(.btn),html[data-netbox-color-mode=light] .table-pink-200 a:not(.btn){font-weight:700;color:#604552}}@media print{html .alert.alert-pink-200 .btn:not([class*=btn-outline]),html .table-pink-200 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-pink-200 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-pink-200 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-pink-200 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-pink-200 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-pink-200 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-pink-200 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-pink-200 a:not(.btn){font-weight:700;color:#604552}}@media print{html .badge.bg-pink-200,html .toast.bg-pink-200,html .toast-header.bg-pink-200,html .progress-bar.bg-pink-200,html[data-netbox-color-mode=dark] .badge.bg-pink-200,html[data-netbox-color-mode=dark] .toast.bg-pink-200,html[data-netbox-color-mode=dark] .toast-header.bg-pink-200,html[data-netbox-color-mode=dark] .progress-bar.bg-pink-200,html[data-netbox-color-mode=light] .badge.bg-pink-200,html[data-netbox-color-mode=light] .toast.bg-pink-200,html[data-netbox-color-mode=light] .toast-header.bg-pink-200,html[data-netbox-color-mode=light] .progress-bar.bg-pink-200{color:#000}}@media print{html .bg-pink-300 button.btn-close,html[data-netbox-color-mode=dark] .bg-pink-300 button.btn-close,html[data-netbox-color-mode=light] .bg-pink-300 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%238a506d'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-pink-300,html[data-netbox-color-mode=dark] .btn.btn-ghost-pink-300,html[data-netbox-color-mode=light] .btn.btn-ghost-pink-300{color:#e685b5}}@media print{html .btn.btn-ghost-pink-300:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-pink-300:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-pink-300:hover{background-color:#e685b51f}}@media print{html .alert.alert-pink-300 a:not(.btn),html .table-pink-300 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-pink-300 a:not(.btn),html[data-netbox-color-mode=dark] .table-pink-300 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-pink-300 a:not(.btn),html[data-netbox-color-mode=light] .table-pink-300 a:not(.btn){font-weight:700;color:#8a506d}}@media print{html .alert.alert-pink-300 .btn:not([class*=btn-outline]),html .table-pink-300 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-pink-300 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-pink-300 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-pink-300 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-pink-300 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-pink-300 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-pink-300 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-pink-300 a:not(.btn){font-weight:700;color:#5c3548}}@media print{html .badge.bg-pink-300,html .toast.bg-pink-300,html .toast-header.bg-pink-300,html .progress-bar.bg-pink-300,html[data-netbox-color-mode=dark] .badge.bg-pink-300,html[data-netbox-color-mode=dark] .toast.bg-pink-300,html[data-netbox-color-mode=dark] .toast-header.bg-pink-300,html[data-netbox-color-mode=dark] .progress-bar.bg-pink-300,html[data-netbox-color-mode=light] .badge.bg-pink-300,html[data-netbox-color-mode=light] .toast.bg-pink-300,html[data-netbox-color-mode=light] .toast-header.bg-pink-300,html[data-netbox-color-mode=light] .progress-bar.bg-pink-300{color:#000}}@media print{html .bg-pink-400 button.btn-close,html[data-netbox-color-mode=dark] .bg-pink-400 button.btn-close,html[data-netbox-color-mode=light] .bg-pink-400 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%2385375e'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-pink-400,html[data-netbox-color-mode=dark] .btn.btn-ghost-pink-400,html[data-netbox-color-mode=light] .btn.btn-ghost-pink-400{color:#de5c9d}}@media print{html .btn.btn-ghost-pink-400:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-pink-400:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-pink-400:hover{background-color:#de5c9d1f}}@media print{html .alert.alert-pink-400 a:not(.btn),html .table-pink-400 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-pink-400 a:not(.btn),html[data-netbox-color-mode=dark] .table-pink-400 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-pink-400 a:not(.btn),html[data-netbox-color-mode=light] .table-pink-400 a:not(.btn){font-weight:700;color:#85375e}}@media print{html .alert.alert-pink-400 .btn:not([class*=btn-outline]),html .table-pink-400 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-pink-400 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-pink-400 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-pink-400 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-pink-400 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-pink-400 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-pink-400 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-pink-400 a:not(.btn){font-weight:700;color:#59253f}}@media print{html .badge.bg-pink-400,html .toast.bg-pink-400,html .toast-header.bg-pink-400,html .progress-bar.bg-pink-400,html[data-netbox-color-mode=dark] .badge.bg-pink-400,html[data-netbox-color-mode=dark] .toast.bg-pink-400,html[data-netbox-color-mode=dark] .toast-header.bg-pink-400,html[data-netbox-color-mode=dark] .progress-bar.bg-pink-400,html[data-netbox-color-mode=light] .badge.bg-pink-400,html[data-netbox-color-mode=light] .toast.bg-pink-400,html[data-netbox-color-mode=light] .toast-header.bg-pink-400,html[data-netbox-color-mode=light] .progress-bar.bg-pink-400{color:#000}}@media print{html .bg-pink-500 button.btn-close,html[data-netbox-color-mode=dark] .bg-pink-500 button.btn-close,html[data-netbox-color-mode=light] .bg-pink-500 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23801f4f'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-pink-500,html[data-netbox-color-mode=dark] .btn.btn-ghost-pink-500,html[data-netbox-color-mode=light] .btn.btn-ghost-pink-500{color:#d63384}}@media print{html .btn.btn-ghost-pink-500:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-pink-500:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-pink-500:hover{background-color:#d633841f}}@media print{html .alert.alert-pink-500 a:not(.btn),html .table-pink-500 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-pink-500 a:not(.btn),html[data-netbox-color-mode=dark] .table-pink-500 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-pink-500 a:not(.btn),html[data-netbox-color-mode=light] .table-pink-500 a:not(.btn){font-weight:700;color:#801f4f}}@media print{html .alert.alert-pink-500 .btn:not([class*=btn-outline]),html .table-pink-500 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-pink-500 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-pink-500 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-pink-500 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-pink-500 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-pink-500 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-pink-500 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-pink-500 a:not(.btn){font-weight:700;color:#efadce}}@media print{html .badge.bg-pink-500,html .toast.bg-pink-500,html .toast-header.bg-pink-500,html .progress-bar.bg-pink-500,html[data-netbox-color-mode=dark] .badge.bg-pink-500,html[data-netbox-color-mode=dark] .toast.bg-pink-500,html[data-netbox-color-mode=dark] .toast-header.bg-pink-500,html[data-netbox-color-mode=dark] .progress-bar.bg-pink-500,html[data-netbox-color-mode=light] .badge.bg-pink-500,html[data-netbox-color-mode=light] .toast.bg-pink-500,html[data-netbox-color-mode=light] .toast-header.bg-pink-500,html[data-netbox-color-mode=light] .progress-bar.bg-pink-500{color:#fff}}@media print{html .bg-pink-600 button.btn-close,html[data-netbox-color-mode=dark] .bg-pink-600 button.btn-close,html[data-netbox-color-mode=light] .bg-pink-600 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23671940'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-pink-600,html[data-netbox-color-mode=dark] .btn.btn-ghost-pink-600,html[data-netbox-color-mode=light] .btn.btn-ghost-pink-600{color:#ab296a}}@media print{html .btn.btn-ghost-pink-600:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-pink-600:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-pink-600:hover{background-color:#ab296a1f}}@media print{html .alert.alert-pink-600 a:not(.btn),html .table-pink-600 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-pink-600 a:not(.btn),html[data-netbox-color-mode=dark] .table-pink-600 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-pink-600 a:not(.btn),html[data-netbox-color-mode=light] .table-pink-600 a:not(.btn){font-weight:700;color:#671940}}@media print{html .alert.alert-pink-600 .btn:not([class*=btn-outline]),html .table-pink-600 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-pink-600 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-pink-600 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-pink-600 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-pink-600 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-pink-600 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-pink-600 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-pink-600 a:not(.btn){font-weight:700;color:#dda9c3}}@media print{html .badge.bg-pink-600,html .toast.bg-pink-600,html .toast-header.bg-pink-600,html .progress-bar.bg-pink-600,html[data-netbox-color-mode=dark] .badge.bg-pink-600,html[data-netbox-color-mode=dark] .toast.bg-pink-600,html[data-netbox-color-mode=dark] .toast-header.bg-pink-600,html[data-netbox-color-mode=dark] .progress-bar.bg-pink-600,html[data-netbox-color-mode=light] .badge.bg-pink-600,html[data-netbox-color-mode=light] .toast.bg-pink-600,html[data-netbox-color-mode=light] .toast-header.bg-pink-600,html[data-netbox-color-mode=light] .progress-bar.bg-pink-600{color:#fff}}@media print{html .bg-pink-700 button.btn-close,html[data-netbox-color-mode=dark] .bg-pink-700 button.btn-close,html[data-netbox-color-mode=light] .bg-pink-700 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%234d132f'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-pink-700,html[data-netbox-color-mode=dark] .btn.btn-ghost-pink-700,html[data-netbox-color-mode=light] .btn.btn-ghost-pink-700{color:#801f4f}}@media print{html .btn.btn-ghost-pink-700:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-pink-700:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-pink-700:hover{background-color:#801f4f1f}}@media print{html .alert.alert-pink-700 a:not(.btn),html .table-pink-700 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-pink-700 a:not(.btn),html[data-netbox-color-mode=dark] .table-pink-700 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-pink-700 a:not(.btn),html[data-netbox-color-mode=light] .table-pink-700 a:not(.btn){font-weight:700;color:#4d132f}}@media print{html .alert.alert-pink-700 .btn:not([class*=btn-outline]),html .table-pink-700 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-pink-700 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-pink-700 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-pink-700 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-pink-700 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-pink-700 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-pink-700 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-pink-700 a:not(.btn){font-weight:700;color:#cca5b9}}@media print{html .badge.bg-pink-700,html .toast.bg-pink-700,html .toast-header.bg-pink-700,html .progress-bar.bg-pink-700,html[data-netbox-color-mode=dark] .badge.bg-pink-700,html[data-netbox-color-mode=dark] .toast.bg-pink-700,html[data-netbox-color-mode=dark] .toast-header.bg-pink-700,html[data-netbox-color-mode=dark] .progress-bar.bg-pink-700,html[data-netbox-color-mode=light] .badge.bg-pink-700,html[data-netbox-color-mode=light] .toast.bg-pink-700,html[data-netbox-color-mode=light] .toast-header.bg-pink-700,html[data-netbox-color-mode=light] .progress-bar.bg-pink-700{color:#fff}}@media print{html .bg-pink-800 button.btn-close,html[data-netbox-color-mode=dark] .bg-pink-800 button.btn-close,html[data-netbox-color-mode=light] .bg-pink-800 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23340c20'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-pink-800,html[data-netbox-color-mode=dark] .btn.btn-ghost-pink-800,html[data-netbox-color-mode=light] .btn.btn-ghost-pink-800{color:#561435}}@media print{html .btn.btn-ghost-pink-800:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-pink-800:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-pink-800:hover{background-color:#5614351f}}@media print{html .alert.alert-pink-800 a:not(.btn),html .table-pink-800 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-pink-800 a:not(.btn),html[data-netbox-color-mode=dark] .table-pink-800 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-pink-800 a:not(.btn),html[data-netbox-color-mode=light] .table-pink-800 a:not(.btn){font-weight:700;color:#340c20}}@media print{html .alert.alert-pink-800 .btn:not([class*=btn-outline]),html .table-pink-800 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-pink-800 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-pink-800 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-pink-800 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-pink-800 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-pink-800 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-pink-800 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-pink-800 a:not(.btn){font-weight:700;color:#bba1ae}}@media print{html .badge.bg-pink-800,html .toast.bg-pink-800,html .toast-header.bg-pink-800,html .progress-bar.bg-pink-800,html[data-netbox-color-mode=dark] .badge.bg-pink-800,html[data-netbox-color-mode=dark] .toast.bg-pink-800,html[data-netbox-color-mode=dark] .toast-header.bg-pink-800,html[data-netbox-color-mode=dark] .progress-bar.bg-pink-800,html[data-netbox-color-mode=light] .badge.bg-pink-800,html[data-netbox-color-mode=light] .toast.bg-pink-800,html[data-netbox-color-mode=light] .toast-header.bg-pink-800,html[data-netbox-color-mode=light] .progress-bar.bg-pink-800{color:#fff}}@media print{html .bg-pink-900 button.btn-close,html[data-netbox-color-mode=dark] .bg-pink-900 button.btn-close,html[data-netbox-color-mode=light] .bg-pink-900 button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%231a0610'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-pink-900,html[data-netbox-color-mode=dark] .btn.btn-ghost-pink-900,html[data-netbox-color-mode=light] .btn.btn-ghost-pink-900{color:#2b0a1a}}@media print{html .btn.btn-ghost-pink-900:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-pink-900:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-pink-900:hover{background-color:#2b0a1a1f}}@media print{html .alert.alert-pink-900 a:not(.btn),html .table-pink-900 a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-pink-900 a:not(.btn),html[data-netbox-color-mode=dark] .table-pink-900 a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-pink-900 a:not(.btn),html[data-netbox-color-mode=light] .table-pink-900 a:not(.btn){font-weight:700;color:#1a0610}}@media print{html .alert.alert-pink-900 .btn:not([class*=btn-outline]),html .table-pink-900 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-pink-900 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-pink-900 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-pink-900 .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-pink-900 .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-pink-900 a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-pink-900 a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-pink-900 a:not(.btn){font-weight:700;color:#aa9da3}}@media print{html .badge.bg-pink-900,html .toast.bg-pink-900,html .toast-header.bg-pink-900,html .progress-bar.bg-pink-900,html[data-netbox-color-mode=dark] .badge.bg-pink-900,html[data-netbox-color-mode=dark] .toast.bg-pink-900,html[data-netbox-color-mode=dark] .toast-header.bg-pink-900,html[data-netbox-color-mode=dark] .progress-bar.bg-pink-900,html[data-netbox-color-mode=light] .badge.bg-pink-900,html[data-netbox-color-mode=light] .toast.bg-pink-900,html[data-netbox-color-mode=light] .toast-header.bg-pink-900,html[data-netbox-color-mode=light] .progress-bar.bg-pink-900{color:#fff}}@media print{html table td>.progress,html[data-netbox-color-mode=dark] table td>.progress,html[data-netbox-color-mode=light] table td>.progress{min-width:6rem}}@media print{html .small .form-control,html[data-netbox-color-mode=dark] .small .form-control,html[data-netbox-color-mode=light] .small .form-control{font-size:.875rem}}@media print{html :not(.card-body)>.col:not(:last-child):not(:only-child),html[data-netbox-color-mode=dark] :not(.card-body)>.col:not(:last-child):not(:only-child),html[data-netbox-color-mode=light] :not(.card-body)>.col:not(:last-child):not(:only-child){margin-bottom:1rem}}@media print{html .nav-mobile,html[data-netbox-color-mode=dark] .nav-mobile,html[data-netbox-color-mode=light] .nav-mobile{display:none;flex-direction:column;align-items:center;justify-content:space-between;width:100%}}@media print and (max-width: 991.98px){html .nav-mobile,html[data-netbox-color-mode=dark] .nav-mobile,html[data-netbox-color-mode=light] .nav-mobile{display:flex}}@media print{html .nav-mobile .nav-mobile-top,html[data-netbox-color-mode=dark] .nav-mobile .nav-mobile-top,html[data-netbox-color-mode=light] .nav-mobile .nav-mobile-top{display:flex;align-items:center;justify-content:space-between;width:100%}}@media print{html .card>.table.table-flush,html[data-netbox-color-mode=dark] .card>.table.table-flush,html[data-netbox-color-mode=light] .card>.table.table-flush{margin-bottom:0;overflow:hidden;border-bottom-right-radius:.375rem;border-bottom-left-radius:.375rem}}@media print{html .card>.table.table-flush thead th[scope=col],html[data-netbox-color-mode=dark] .card>.table.table-flush thead th[scope=col],html[data-netbox-color-mode=light] .card>.table.table-flush thead th[scope=col]{padding-top:1rem;padding-bottom:1rem;text-transform:uppercase;vertical-align:middle;background-color:#f8f9fa;border-top:1px solid rgba(0,0,0,.125);border-bottom-color:#00000020}}@media print{html .card>.table.table-flush th,html .card>.table.table-flush td,html[data-netbox-color-mode=dark] .card>.table.table-flush th,html[data-netbox-color-mode=dark] .card>.table.table-flush td,html[data-netbox-color-mode=light] .card>.table.table-flush th,html[data-netbox-color-mode=light] .card>.table.table-flush td{padding-right:1.5rem!important;padding-left:1.5rem!important;border-right:0;border-left:0}}@media print{html .card>.table.table-flush tr[class],html[data-netbox-color-mode=dark] .card>.table.table-flush tr[class],html[data-netbox-color-mode=light] .card>.table.table-flush tr[class]{border-color:#00000020!important}}@media print{html .card>.table.table-flush tr[class]:last-of-type,html[data-netbox-color-mode=dark] .card>.table.table-flush tr[class]:last-of-type,html[data-netbox-color-mode=light] .card>.table.table-flush tr[class]:last-of-type{border-bottom-color:transparent!important;border-bottom-right-radius:.375rem;border-bottom-left-radius:.375rem}}@media print{html .header-alert-container,html[data-netbox-color-mode=dark] .header-alert-container,html[data-netbox-color-mode=light] .header-alert-container{display:flex;align-items:center;justify-content:center;padding:0 1rem}}@media print{html .header-alert-container .alert,html[data-netbox-color-mode=dark] .header-alert-container .alert,html[data-netbox-color-mode=light] .header-alert-container .alert{width:100%}}@media print and (min-width: 768px){html .header-alert-container .alert,html[data-netbox-color-mode=dark] .header-alert-container .alert,html[data-netbox-color-mode=light] .header-alert-container .alert{max-width:75%}}@media print and (min-width: 992px){html .header-alert-container .alert,html[data-netbox-color-mode=dark] .header-alert-container .alert,html[data-netbox-color-mode=light] .header-alert-container .alert{max-width:50%}}@media print{html span.profile-button .dropdown-menu,html[data-netbox-color-mode=dark] span.profile-button .dropdown-menu,html[data-netbox-color-mode=light] span.profile-button .dropdown-menu{right:0;left:auto;display:block!important;margin-top:.5rem;box-shadow:0 .5rem 1rem #00000026;transition:opacity .2s ease-in-out}}@media print{html span.profile-button .dropdown-menu:not(.show),html[data-netbox-color-mode=dark] span.profile-button .dropdown-menu:not(.show),html[data-netbox-color-mode=light] span.profile-button .dropdown-menu:not(.show){pointer-events:none;opacity:0}}@media print{html span.profile-button .dropdown-menu.show,html[data-netbox-color-mode=dark] span.profile-button .dropdown-menu.show,html[data-netbox-color-mode=light] span.profile-button .dropdown-menu.show{pointer-events:auto;opacity:1}}@media print{html div#advanced-search-content div.card div.card-body div.col:not(:last-child),html[data-netbox-color-mode=dark] div#advanced-search-content div.card div.card-body div.col:not(:last-child),html[data-netbox-color-mode=light] div#advanced-search-content div.card div.card-body div.col:not(:last-child){margin-right:1rem}}@media print{html table td a,html[data-netbox-color-mode=dark] table td a,html[data-netbox-color-mode=light] table td a{text-decoration:none}}@media print{html table td a:hover,html[data-netbox-color-mode=dark] table td a:hover,html[data-netbox-color-mode=light] table td a:hover{text-decoration:underline}}@media print{html table td .dropdown,html[data-netbox-color-mode=dark] table td .dropdown,html[data-netbox-color-mode=light] table td .dropdown{position:static}}@media print{html table th a,html table th a:hover,html[data-netbox-color-mode=dark] table th a,html[data-netbox-color-mode=dark] table th a:hover,html[data-netbox-color-mode=light] table th a,html[data-netbox-color-mode=light] table th a:hover{color:#212529;text-decoration:none}}@media print{html table td,html table th,html[data-netbox-color-mode=dark] table td,html[data-netbox-color-mode=dark] table th,html[data-netbox-color-mode=light] table td,html[data-netbox-color-mode=light] table th{font-size:.875rem;line-height:1.25;vertical-align:middle}}@media print{html table td.min-width,html table th.min-width,html[data-netbox-color-mode=dark] table td.min-width,html[data-netbox-color-mode=dark] table th.min-width,html[data-netbox-color-mode=light] table td.min-width,html[data-netbox-color-mode=light] table th.min-width{width:1%}}@media print{html table td .form-check-input,html table th .form-check-input,html[data-netbox-color-mode=dark] table td .form-check-input,html[data-netbox-color-mode=dark] table th .form-check-input,html[data-netbox-color-mode=light] table td .form-check-input,html[data-netbox-color-mode=light] table th .form-check-input{margin-top:.125em;font-size:1rem}}@media print{html table td .btn-sm,html table td .btn-group-sm>.btn,html table th .btn-sm,html table th .btn-group-sm>.btn,html[data-netbox-color-mode=dark] table td .btn-sm,html[data-netbox-color-mode=dark] table td html[data-netbox-color-mode=light] .btn-group-sm>.btn,html[data-netbox-color-mode=dark] table th .btn-sm,html[data-netbox-color-mode=dark] table th html[data-netbox-color-mode=light] .btn-group-sm>.btn,html[data-netbox-color-mode=light] table td .btn-sm,html[data-netbox-color-mode=light] table td html[data-netbox-color-mode=dark] .btn-group-sm>.btn,html[data-netbox-color-mode=light] table th .btn-sm,html[data-netbox-color-mode=light] table th html[data-netbox-color-mode=dark] .btn-group-sm>.btn{line-height:1}}@media print{html table td p,html table th p,html[data-netbox-color-mode=dark] table td p,html[data-netbox-color-mode=dark] table th p,html[data-netbox-color-mode=light] table td p,html[data-netbox-color-mode=light] table th p{margin-bottom:0}}@media print{html table.table>:not(caption)>*>*,html[data-netbox-color-mode=dark] table.table>:not(caption)>*>*,html[data-netbox-color-mode=light] table.table>:not(caption)>*>*{padding-right:.25rem!important;padding-left:.25rem!important}}@media print{html table.object-list th,html[data-netbox-color-mode=dark] table.object-list th,html[data-netbox-color-mode=light] table.object-list th{font-size:.75rem;line-height:1;vertical-align:bottom}}@media print{html table.attr-table th,html[data-netbox-color-mode=dark] table.attr-table th,html[data-netbox-color-mode=light] table.attr-table th{font-weight:normal;width:25%}}@media print{html div.title-container,html[data-netbox-color-mode=dark] div.title-container,html[data-netbox-color-mode=light] div.title-container{display:flex;flex-direction:column;flex-wrap:wrap;justify-content:space-between}}@media print and (min-width: 992px){html div.title-container,html[data-netbox-color-mode=dark] div.title-container,html[data-netbox-color-mode=light] div.title-container{flex-direction:row}}@media print{html div.title-container #content-title,html[data-netbox-color-mode=dark] div.title-container #content-title,html[data-netbox-color-mode=light] div.title-container #content-title{display:flex;flex:1 0;flex-direction:column;padding-bottom:.5rem}}@media print{html .controls,html[data-netbox-color-mode=dark] .controls,html[data-netbox-color-mode=light] .controls{margin-bottom:.5rem}}@media print{html .controls,html[data-netbox-color-mode=dark] .controls,html[data-netbox-color-mode=light] .controls{display:none!important}}@media print{html .controls .control-group,html[data-netbox-color-mode=dark] .controls .control-group,html[data-netbox-color-mode=light] .controls .control-group{display:flex;flex-wrap:wrap;justify-content:flex-start}}@media print and (min-width: 992px){html .controls .control-group,html[data-netbox-color-mode=dark] .controls .control-group,html[data-netbox-color-mode=light] .controls .control-group{justify-content:flex-end}}@media print{html .controls .control-group>*,html[data-netbox-color-mode=dark] .controls .control-group>*,html[data-netbox-color-mode=light] .controls .control-group>*{margin:.25rem}}@media print{html .controls .control-group>*:first-child,html[data-netbox-color-mode=dark] .controls .control-group>*:first-child,html[data-netbox-color-mode=light] .controls .control-group>*:first-child{margin-left:0}}@media print{html .controls .control-group>*:last-child,html[data-netbox-color-mode=dark] .controls .control-group>*:last-child,html[data-netbox-color-mode=light] .controls .control-group>*:last-child{margin-right:0}}@media print{html .object-subtitle,html[data-netbox-color-mode=dark] .object-subtitle,html[data-netbox-color-mode=light] .object-subtitle{display:block;font-size:.875rem;color:#6c757d}}@media print and (min-width: 768px){html .object-subtitle,html[data-netbox-color-mode=dark] .object-subtitle,html[data-netbox-color-mode=light] .object-subtitle{display:inline-block}}@media print{html .object-subtitle>span,html[data-netbox-color-mode=dark] .object-subtitle>span,html[data-netbox-color-mode=light] .object-subtitle>span{display:block}}@media print{html .object-subtitle>span.separator,html[data-netbox-color-mode=dark] .object-subtitle>span.separator,html[data-netbox-color-mode=light] .object-subtitle>span.separator{display:none}}@media print and (min-width: 768px){html .object-subtitle>span,html .object-subtitle>span.separator,html[data-netbox-color-mode=dark] .object-subtitle>span,html[data-netbox-color-mode=dark] .object-subtitle>span.separator,html[data-netbox-color-mode=light] .object-subtitle>span,html[data-netbox-color-mode=light] .object-subtitle>span.separator{display:inline-block}}@media print{html nav.search,html[data-netbox-color-mode=dark] nav.search,html[data-netbox-color-mode=light] nav.search{z-index:999;justify-content:center;background-color:var(--nbx-body-bg)}}@media print{html nav.search .search-container,html[data-netbox-color-mode=dark] nav.search .search-container,html[data-netbox-color-mode=light] nav.search .search-container{display:flex;width:100%}}@media print and (max-width: 991.98px){html nav.search .search-container,html[data-netbox-color-mode=dark] nav.search .search-container,html[data-netbox-color-mode=light] nav.search .search-container{display:none}}@media print{html nav.search .input-group .search-obj-selected,html[data-netbox-color-mode=dark] nav.search .input-group .search-obj-selected,html[data-netbox-color-mode=light] nav.search .input-group .search-obj-selected{border-color:#e9ecef}}@media print{html nav.search .input-group .dropdown-toggle,html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle,html[data-netbox-color-mode=light] nav.search .input-group .dropdown-toggle{color:#000;border-color:#e9ecef;margin-left:0;font-weight:400;line-height:1.5;color:#212529;background-color:#e9ecef;border:1px solid #e9ecef;border-radius:.375rem;border-left:1px solid var(--nbx-search-filter-border-left-color)}}@media print{html nav.search .input-group .dropdown-toggle:hover,html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle:hover,html[data-netbox-color-mode=light] nav.search .input-group .dropdown-toggle:hover{color:#000;background-color:#eceff1;border-color:#ebeef1}}@media print{.btn-check:focus+html nav.search .input-group .dropdown-toggle,html nav.search .input-group .dropdown-toggle:focus,.btn-check:focus+html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle,html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle:focus,.btn-check:focus+html[data-netbox-color-mode=light] nav.search .input-group .dropdown-toggle,html[data-netbox-color-mode=light] nav.search .input-group .dropdown-toggle:focus{color:#000;background-color:#eceff1;border-color:#ebeef1;box-shadow:0 0 0 .25rem #c6c9cb80}}@media print{.btn-check:checked+html nav.search .input-group .dropdown-toggle,.btn-check:active+html nav.search .input-group .dropdown-toggle,html nav.search .input-group .dropdown-toggle:active,html nav.search .input-group .dropdown-toggle.active,.show>html nav.search .input-group .dropdown-toggle.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle,.btn-check:active+html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle,html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle:active,html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle.active,.show>html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] nav.search .input-group .dropdown-toggle,.btn-check:active+html[data-netbox-color-mode=light] nav.search .input-group .dropdown-toggle,html[data-netbox-color-mode=light] nav.search .input-group .dropdown-toggle:active,html[data-netbox-color-mode=light] nav.search .input-group .dropdown-toggle.active,.show>html[data-netbox-color-mode=light] nav.search .input-group .dropdown-toggle.dropdown-toggle{color:#000;background-color:#edf0f2;border-color:#ebeef1}}@media print{.btn-check:checked+html nav.search .input-group .dropdown-toggle:focus,.btn-check:active+html nav.search .input-group .dropdown-toggle:focus,html nav.search .input-group .dropdown-toggle:active:focus,html nav.search .input-group .dropdown-toggle.active:focus,.show>html nav.search .input-group .dropdown-toggle.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle:focus,.btn-check:active+html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle:focus,html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle:active:focus,html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle.active:focus,.show>html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] nav.search .input-group .dropdown-toggle:focus,.btn-check:active+html[data-netbox-color-mode=light] nav.search .input-group .dropdown-toggle:focus,html[data-netbox-color-mode=light] nav.search .input-group .dropdown-toggle:active:focus,html[data-netbox-color-mode=light] nav.search .input-group .dropdown-toggle.active:focus,.show>html[data-netbox-color-mode=light] nav.search .input-group .dropdown-toggle.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #c6c9cb80}}@media print{html nav.search .input-group .dropdown-toggle:disabled,html nav.search .input-group .dropdown-toggle.disabled,html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle:disabled,html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle.disabled,html[data-netbox-color-mode=light] nav.search .input-group .dropdown-toggle:disabled,html[data-netbox-color-mode=light] nav.search .input-group .dropdown-toggle.disabled{color:#000;background-color:#e9ecef;border-color:#e9ecef}}@media print{html nav.search .input-group .dropdown-toggle:focus,html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle:focus,html[data-netbox-color-mode=light] nav.search .input-group .dropdown-toggle:focus{box-shadow:unset!important}}@media print{html nav.search .input-group .dropdown-toggle:after,html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle:after,html[data-netbox-color-mode=light] nav.search .input-group .dropdown-toggle:after{display:none}}@media print{html nav.search .input-group .search-obj-selector,html[data-netbox-color-mode=dark] nav.search .input-group .search-obj-selector,html[data-netbox-color-mode=light] nav.search .input-group .search-obj-selector{max-height:70vh;overflow-y:auto}}@media print{html nav.search .input-group .search-obj-selector .dropdown-item,html nav.search .input-group .search-obj-selector .dropdown-header,html[data-netbox-color-mode=dark] nav.search .input-group .search-obj-selector .dropdown-item,html[data-netbox-color-mode=dark] nav.search .input-group .search-obj-selector .dropdown-header,html[data-netbox-color-mode=light] nav.search .input-group .search-obj-selector .dropdown-item,html[data-netbox-color-mode=light] nav.search .input-group .search-obj-selector .dropdown-header{font-size:.875rem}}@media print{html nav.search .input-group .search-obj-selector .dropdown-header,html[data-netbox-color-mode=dark] nav.search .input-group .search-obj-selector .dropdown-header,html[data-netbox-color-mode=light] nav.search .input-group .search-obj-selector .dropdown-header{text-transform:uppercase}}@media print{html main.layout,html[data-netbox-color-mode=dark] main.layout,html[data-netbox-color-mode=light] main.layout{display:flex;flex-wrap:nowrap;height:100vh;height:-webkit-fill-available;max-height:100vh;overflow-x:auto;overflow-y:hidden}}@media print{html main.layout,html[data-netbox-color-mode=dark] main.layout,html[data-netbox-color-mode=light] main.layout{position:static!important;display:block!important;height:100%;overflow-x:visible!important;overflow-y:visible!important}}@media print{html main.login-container,html[data-netbox-color-mode=dark] main.login-container,html[data-netbox-color-mode=light] main.login-container{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;max-width:100vw;height:calc(100vh - 4rem);padding-top:40px;padding-bottom:40px}}@media print{html main.login-container+footer.footer button.color-mode-toggle,html[data-netbox-color-mode=dark] main.login-container+footer.footer button.color-mode-toggle,html[data-netbox-color-mode=light] main.login-container+footer.footer button.color-mode-toggle{color:var(--nbx-color-mode-toggle-color)}}@media print{html .footer,html[data-netbox-color-mode=dark] .footer,html[data-netbox-color-mode=light] .footer{padding:0}}@media print{html .footer .nav-link,html[data-netbox-color-mode=dark] .footer .nav-link,html[data-netbox-color-mode=light] .footer .nav-link{padding:.5rem}}@media print and (max-width: 767.98px){html .footer,html[data-netbox-color-mode=dark] .footer,html[data-netbox-color-mode=light] .footer{margin-bottom:8rem}}@media print{html footer.login-footer,html[data-netbox-color-mode=dark] footer.login-footer,html[data-netbox-color-mode=light] footer.login-footer{height:4rem;margin-top:auto}}@media print{html footer.login-footer .container-fluid,html footer.login-footer .container-sm,html footer.login-footer .container-md,html footer.login-footer .container-lg,html footer.login-footer .container-xl,html footer.login-footer .container-xxl,html[data-netbox-color-mode=dark] footer.login-footer .container-fluid,html[data-netbox-color-mode=light] footer.login-footer .container-fluid{display:flex;justify-content:flex-end;padding:.75rem 1.5rem}}@media print{html h1.accordion-item-title,html .accordion-item-title.h1,html h2.accordion-item-title,html .accordion-item-title.h2,html h3.accordion-item-title,html .accordion-item-title.h3,html h4.accordion-item-title,html .accordion-item-title.h4,html h5.accordion-item-title,html .accordion-item-title.h5,html h6.accordion-item-title,html .accordion-item-title.h6,html[data-netbox-color-mode=dark] h1.accordion-item-title,html[data-netbox-color-mode=dark] h2.accordion-item-title,html[data-netbox-color-mode=dark] h3.accordion-item-title,html[data-netbox-color-mode=dark] h4.accordion-item-title,html[data-netbox-color-mode=dark] h5.accordion-item-title,html[data-netbox-color-mode=dark] h6.accordion-item-title,html[data-netbox-color-mode=light] h1.accordion-item-title,html[data-netbox-color-mode=light] h2.accordion-item-title,html[data-netbox-color-mode=light] h3.accordion-item-title,html[data-netbox-color-mode=light] h4.accordion-item-title,html[data-netbox-color-mode=light] h5.accordion-item-title,html[data-netbox-color-mode=light] h6.accordion-item-title{padding:.25rem .5rem;font-size:.875rem;font-weight:700;color:var(--nbx-sidebar-title-color);text-transform:uppercase}}@media print{html .form-login,html[data-netbox-color-mode=dark] .form-login,html[data-netbox-color-mode=light] .form-login{width:100%;max-width:330px;padding:15px}}@media print{html .form-login input:focus,html[data-netbox-color-mode=dark] .form-login input:focus,html[data-netbox-color-mode=light] .form-login input:focus{z-index:1}}@media print{html .form-login input[type=text],html[data-netbox-color-mode=dark] .form-login input[type=text],html[data-netbox-color-mode=light] .form-login input[type=text]{margin-bottom:-1px;border-bottom-right-radius:0;border-bottom-left-radius:0}}@media print{html .form-login input[type=password],html[data-netbox-color-mode=dark] .form-login input[type=password],html[data-netbox-color-mode=light] .form-login input[type=password]{margin-bottom:10px;border-top-left-radius:0;border-top-right-radius:0}}@media print{html .form-login .form-control,html[data-netbox-color-mode=dark] .form-login .form-control,html[data-netbox-color-mode=light] .form-login .form-control{position:relative;box-sizing:border-box;height:auto;padding:10px;font-size:16px}}@media print{html .navbar-brand,html[data-netbox-color-mode=dark] .navbar-brand,html[data-netbox-color-mode=light] .navbar-brand{padding-top:.75rem;padding-bottom:.75rem;font-size:1rem}}@media print{html nav.nav.nav-pills .nav-item.nav-link,html[data-netbox-color-mode=dark] nav.nav.nav-pills .nav-item.nav-link,html[data-netbox-color-mode=light] nav.nav.nav-pills .nav-item.nav-link{padding:.25rem .5rem;font-size:.875rem;border-radius:.375rem}}@media print{html nav.nav.nav-pills .nav-item.nav-link:hover,html[data-netbox-color-mode=dark] nav.nav.nav-pills .nav-item.nav-link:hover,html[data-netbox-color-mode=light] nav.nav.nav-pills .nav-item.nav-link:hover{color:#343a40;background-color:#cfe2ff}}@media print{html div.content-container,html[data-netbox-color-mode=dark] div.content-container,html[data-netbox-color-mode=light] div.content-container{position:relative;display:flex;flex-direction:column;width:calc(100% - 3rem);min-height:100vh;overflow-x:hidden;overflow-y:auto}}@media print{html div.content-container:focus,html div.content-container:focus-visible,html[data-netbox-color-mode=dark] div.content-container:focus,html[data-netbox-color-mode=dark] div.content-container:focus-visible,html[data-netbox-color-mode=light] div.content-container:focus,html[data-netbox-color-mode=light] div.content-container:focus-visible{outline:0}}@media print{html div.content-container div.content,html[data-netbox-color-mode=dark] div.content-container div.content,html[data-netbox-color-mode=light] div.content-container div.content{flex:1}}@media print and (max-width: 991.98px){html div.content-container,html[data-netbox-color-mode=dark] div.content-container,html[data-netbox-color-mode=light] div.content-container{width:100%}}@media print{html div.content-container,html[data-netbox-color-mode=dark] div.content-container,html[data-netbox-color-mode=light] div.content-container{width:100%!important;margin-left:0!important}}@media print and (max-width: 768px){html .sidebar.collapse.show~.content-container>.content,html[data-netbox-color-mode=dark] .sidebar.collapse.show~.content-container>.content,html[data-netbox-color-mode=light] .sidebar.collapse.show~.content-container>.content{position:fixed;top:0;left:0;overflow-y:hidden}}@media print{html .tooltip,html[data-netbox-color-mode=dark] .tooltip,html[data-netbox-color-mode=light] .tooltip{pointer-events:none}}@media print{html span.color-label,html[data-netbox-color-mode=dark] span.color-label,html[data-netbox-color-mode=light] span.color-label{display:block;width:5rem;height:1rem;padding:.35em .65em;border:1px solid #303030;border-radius:.375rem;box-shadow:0 .125rem .25rem #00000013}}@media print{html .btn,html[data-netbox-color-mode=dark] .btn,html[data-netbox-color-mode=light] .btn{white-space:nowrap}}@media print{html .card,html[data-netbox-color-mode=dark] .card,html[data-netbox-color-mode=light] .card{box-shadow:0 .125rem .25rem #00000013}}@media print{html .card .card-header,html[data-netbox-color-mode=dark] .card .card-header,html[data-netbox-color-mode=light] .card .card-header{padding:1rem;color:var(--nbx-body-color);border-bottom:none}}@media print{html .card .card-header+.card-body,html[data-netbox-color-mode=dark] .card .card-header+.card-body,html[data-netbox-color-mode=light] .card .card-header+.card-body{padding-top:0}}@media print{html .card .card-body.small .form-control,html .card .card-body.small .form-select,html[data-netbox-color-mode=dark] .card .card-body.small .form-control,html[data-netbox-color-mode=dark] .card .card-body.small .form-select,html[data-netbox-color-mode=light] .card .card-body.small .form-control,html[data-netbox-color-mode=light] .card .card-body.small .form-select{font-size:.875rem}}@media print{html .card .card-divider,html[data-netbox-color-mode=dark] .card .card-divider,html[data-netbox-color-mode=light] .card .card-divider{width:100%;height:1px;margin:1rem 0;border-top:1px solid rgba(0,0,0,.125);opacity:.25}}@media print{html .card,html[data-netbox-color-mode=dark] .card,html[data-netbox-color-mode=light] .card{box-shadow:unset!important}}@media print{html .form-floating,html[data-netbox-color-mode=dark] .form-floating,html[data-netbox-color-mode=light] .form-floating{position:relative}}@media print{html .form-floating>.input-group>.form-control,html .form-floating>.input-group>.form-select,html[data-netbox-color-mode=dark] .form-floating>.input-group>.form-control,html[data-netbox-color-mode=dark] .form-floating>.input-group>.form-select,html[data-netbox-color-mode=light] .form-floating>.input-group>.form-control,html[data-netbox-color-mode=light] .form-floating>.input-group>.form-select{height:calc(3.5rem + 2px);padding:1rem .75rem}}@media print{html .form-floating>.input-group>label,html[data-netbox-color-mode=dark] .form-floating>.input-group>label,html[data-netbox-color-mode=light] .form-floating>.input-group>label{position:absolute;top:0;left:0;height:100%;padding:1rem .75rem;pointer-events:none;border:1px solid transparent;transform-origin:0 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out}}@media print and (prefers-reduced-motion: reduce){html .form-floating>.input-group>label,html[data-netbox-color-mode=dark] .form-floating>.input-group>label,html[data-netbox-color-mode=light] .form-floating>.input-group>label{transition:none}}@media print{html .form-floating>.input-group>.form-control::placeholder,html[data-netbox-color-mode=dark] .form-floating>.input-group>.form-control::placeholder,html[data-netbox-color-mode=light] .form-floating>.input-group>.form-control::placeholder{color:transparent}}@media print{html .form-floating>.input-group>.form-control:focus,html .form-floating>.input-group>.form-control:not(:placeholder-shown),html[data-netbox-color-mode=dark] .form-floating>.input-group>.form-control:focus,html[data-netbox-color-mode=dark] .form-floating>.input-group>.form-control:not(:placeholder-shown),html[data-netbox-color-mode=light] .form-floating>.input-group>.form-control:focus,html[data-netbox-color-mode=light] .form-floating>.input-group>.form-control:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}}@media print{html .form-floating>.input-group>.form-control:-webkit-autofill,html[data-netbox-color-mode=dark] .form-floating>.input-group>.form-control:-webkit-autofill,html[data-netbox-color-mode=light] .form-floating>.input-group>.form-control:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}}@media print{html .form-floating>.input-group>.form-select,html .form-floating>.choices>.choices__inner,html .form-floating>.ss-main span.placeholder,html .form-floating>.ss-main div.ss-values,html[data-netbox-color-mode=dark] .form-floating>.input-group>.form-select,html[data-netbox-color-mode=dark] .form-floating>.choices>.choices__inner,html[data-netbox-color-mode=dark] .form-floating>.ss-main span.placeholder,html[data-netbox-color-mode=dark] .form-floating>.ss-main div.ss-values,html[data-netbox-color-mode=light] .form-floating>.input-group>.form-select,html[data-netbox-color-mode=light] .form-floating>.choices>.choices__inner,html[data-netbox-color-mode=light] .form-floating>.ss-main span.placeholder,html[data-netbox-color-mode=light] .form-floating>.ss-main div.ss-values{padding-top:1.625rem;padding-bottom:.625rem}}@media print{html .form-floating>.input-group>.form-control:focus~label,html .form-floating>.input-group>.form-control:not(:placeholder-shown)~label,html .form-floating>.input-group>.form-select~label,html .form-floating>.choices~label,html .form-floating>.ss-main~label,html[data-netbox-color-mode=dark] .form-floating>.input-group>.form-control:focus~label,html[data-netbox-color-mode=dark] .form-floating>.input-group>.form-control:not(:placeholder-shown)~label,html[data-netbox-color-mode=dark] .form-floating>.input-group>.form-select~label,html[data-netbox-color-mode=dark] .form-floating>.choices~label,html[data-netbox-color-mode=dark] .form-floating>.ss-main~label,html[data-netbox-color-mode=light] .form-floating>.input-group>.form-control:focus~label,html[data-netbox-color-mode=light] .form-floating>.input-group>.form-control:not(:placeholder-shown)~label,html[data-netbox-color-mode=light] .form-floating>.input-group>.form-select~label,html[data-netbox-color-mode=light] .form-floating>.choices~label,html[data-netbox-color-mode=light] .form-floating>.ss-main~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translate(.15rem);z-index:4}}@media print{html .form-floating>.input-group>.form-control:-webkit-autofill~label,html[data-netbox-color-mode=dark] .form-floating>.input-group>.form-control:-webkit-autofill~label,html[data-netbox-color-mode=light] .form-floating>.input-group>.form-control:-webkit-autofill~label{z-index:4;opacity:.65;transform:scale(.85) translateY(-.5rem) translate(.15rem)}}@media print{html .form-object-edit,html[data-netbox-color-mode=dark] .form-object-edit,html[data-netbox-color-mode=light] .form-object-edit{margin:0 auto;max-width:800px}}@media print{html textarea.form-control[rows="10"],html[data-netbox-color-mode=dark] textarea.form-control[rows="10"],html[data-netbox-color-mode=light] textarea.form-control[rows="10"]{height:18rem}}@media print{html textarea#id_local_context_data,html textarea.markdown,html textarea#id_public_key,html textarea.form-control[name=csv],html textarea.form-control[name=data],html[data-netbox-color-mode=dark] textarea#id_local_context_data,html[data-netbox-color-mode=dark] textarea.markdown,html[data-netbox-color-mode=dark] textarea#id_public_key,html[data-netbox-color-mode=dark] textarea.form-control[name=csv],html[data-netbox-color-mode=dark] textarea.form-control[name=data],html[data-netbox-color-mode=light] textarea#id_local_context_data,html[data-netbox-color-mode=light] textarea.markdown,html[data-netbox-color-mode=light] textarea#id_public_key,html[data-netbox-color-mode=light] textarea.form-control[name=csv],html[data-netbox-color-mode=light] textarea.form-control[name=data]{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}}@media print{html .card:not(:only-of-type),html[data-netbox-color-mode=dark] .card:not(:only-of-type),html[data-netbox-color-mode=light] .card:not(:only-of-type){margin-bottom:1rem}}@media print{html .stat-btn,html[data-netbox-color-mode=dark] .stat-btn,html[data-netbox-color-mode=light] .stat-btn{min-width:3rem}}@media print{html nav.breadcrumb-container,html[data-netbox-color-mode=dark] nav.breadcrumb-container,html[data-netbox-color-mode=light] nav.breadcrumb-container{width:fit-content;padding:.35em .65em;font-size:.875rem}}@media print{html nav.breadcrumb-container ol.breadcrumb,html[data-netbox-color-mode=dark] nav.breadcrumb-container ol.breadcrumb,html[data-netbox-color-mode=light] nav.breadcrumb-container ol.breadcrumb{margin-bottom:0}}@media print{html nav.breadcrumb-container ol.breadcrumb li.breadcrumb-item>a,html[data-netbox-color-mode=dark] nav.breadcrumb-container ol.breadcrumb li.breadcrumb-item>a,html[data-netbox-color-mode=light] nav.breadcrumb-container ol.breadcrumb li.breadcrumb-item>a{text-decoration:none}}@media print{html nav.breadcrumb-container ol.breadcrumb li.breadcrumb-item>a:hover,html[data-netbox-color-mode=dark] nav.breadcrumb-container ol.breadcrumb li.breadcrumb-item>a:hover,html[data-netbox-color-mode=light] nav.breadcrumb-container ol.breadcrumb li.breadcrumb-item>a:hover{text-decoration:underline}}@media print{html div.paginator>form>div.input-group,html[data-netbox-color-mode=dark] div.paginator>form>div.input-group,html[data-netbox-color-mode=light] div.paginator>form>div.input-group{width:fit-content}}@media print{html label.required,html[data-netbox-color-mode=dark] label.required,html[data-netbox-color-mode=light] label.required{font-weight:700}}@media print{html label.required:after,html[data-netbox-color-mode=dark] label.required:after,html[data-netbox-color-mode=light] label.required:after{position:absolute;display:inline-block;margin:0 0 0 2px;font-family:"Material Design Icons";font-size:8px;font-style:normal;font-weight:600;text-decoration:none;content:"\f06c4"}}@media print{html div.bulk-buttons,html[data-netbox-color-mode=dark] div.bulk-buttons,html[data-netbox-color-mode=light] div.bulk-buttons{display:flex;justify-content:space-between;margin:.5rem 0}}@media print{html div.bulk-buttons>div.bulk-button-group,html[data-netbox-color-mode=dark] div.bulk-buttons>div.bulk-button-group,html[data-netbox-color-mode=light] div.bulk-buttons>div.bulk-button-group{display:flex;flex-wrap:wrap;align-items:flex-start}}@media print{html div.bulk-buttons>div.bulk-button-group:first-of-type:not(:last-of-type)>*:first-child,html[data-netbox-color-mode=dark] div.bulk-buttons>div.bulk-button-group:first-of-type:not(:last-of-type)>*:first-child,html[data-netbox-color-mode=light] div.bulk-buttons>div.bulk-button-group:first-of-type:not(:last-of-type)>*:first-child{margin-left:0}}@media print{html div.bulk-buttons>div.bulk-button-group:last-of-type:not(:first-of-type)>*:last-child,html[data-netbox-color-mode=dark] div.bulk-buttons>div.bulk-button-group:last-of-type:not(:first-of-type)>*:last-child,html[data-netbox-color-mode=light] div.bulk-buttons>div.bulk-button-group:last-of-type:not(:first-of-type)>*:last-child{margin-right:0}}@media print{html div.bulk-buttons>div.bulk-button-group>*,html[data-netbox-color-mode=dark] div.bulk-buttons>div.bulk-button-group>*,html[data-netbox-color-mode=light] div.bulk-buttons>div.bulk-button-group>*{margin:.25rem}}@media print{html table tbody tr.primary,html[data-netbox-color-mode=dark] table tbody tr.primary,html[data-netbox-color-mode=light] table tbody tr.primary{background-color:#337ab726;border-color:#adb5bd}}@media print{html table tbody tr.secondary,html[data-netbox-color-mode=dark] table tbody tr.secondary,html[data-netbox-color-mode=light] table tbody tr.secondary{background-color:#6c757d26;border-color:#adb5bd}}@media print{html table tbody tr.success,html[data-netbox-color-mode=dark] table tbody tr.success,html[data-netbox-color-mode=light] table tbody tr.success{background-color:#19875426;border-color:#adb5bd}}@media print{html table tbody tr.info,html[data-netbox-color-mode=dark] table tbody tr.info,html[data-netbox-color-mode=light] table tbody tr.info{background-color:#0dcaf026;border-color:#adb5bd}}@media print{html table tbody tr.warning,html[data-netbox-color-mode=dark] table tbody tr.warning,html[data-netbox-color-mode=light] table tbody tr.warning{background-color:#ffc10726;border-color:#adb5bd}}@media print{html table tbody tr.danger,html[data-netbox-color-mode=dark] table tbody tr.danger,html[data-netbox-color-mode=light] table tbody tr.danger{background-color:#dc354526;border-color:#adb5bd}}@media print{html table tbody tr.light,html[data-netbox-color-mode=dark] table tbody tr.light,html[data-netbox-color-mode=light] table tbody tr.light{background-color:#f8f9fa26;border-color:#adb5bd}}@media print{html table tbody tr.dark,html[data-netbox-color-mode=dark] table tbody tr.dark,html[data-netbox-color-mode=light] table tbody tr.dark{background-color:#21252926;border-color:#adb5bd}}@media print{html table tbody tr.red,html[data-netbox-color-mode=dark] table tbody tr.red,html[data-netbox-color-mode=light] table tbody tr.red{background-color:#dc354526;border-color:#adb5bd}}@media print{html table tbody tr.yellow,html[data-netbox-color-mode=dark] table tbody tr.yellow,html[data-netbox-color-mode=light] table tbody tr.yellow{background-color:#ffc10726;border-color:#adb5bd}}@media print{html table tbody tr.green,html[data-netbox-color-mode=dark] table tbody tr.green,html[data-netbox-color-mode=light] table tbody tr.green{background-color:#19875426;border-color:#adb5bd}}@media print{html table tbody tr.blue,html[data-netbox-color-mode=dark] table tbody tr.blue,html[data-netbox-color-mode=light] table tbody tr.blue{background-color:#0d6efd26;border-color:#adb5bd}}@media print{html table tbody tr.cyan,html[data-netbox-color-mode=dark] table tbody tr.cyan,html[data-netbox-color-mode=light] table tbody tr.cyan{background-color:#0dcaf026;border-color:#adb5bd}}@media print{html table tbody tr.indigo,html[data-netbox-color-mode=dark] table tbody tr.indigo,html[data-netbox-color-mode=light] table tbody tr.indigo{background-color:#6610f226;border-color:#adb5bd}}@media print{html table tbody tr.purple,html[data-netbox-color-mode=dark] table tbody tr.purple,html[data-netbox-color-mode=light] table tbody tr.purple{background-color:#6f42c126;border-color:#adb5bd}}@media print{html table tbody tr.pink,html[data-netbox-color-mode=dark] table tbody tr.pink,html[data-netbox-color-mode=light] table tbody tr.pink{background-color:#d6338426;border-color:#adb5bd}}@media print{html table tbody tr.darker,html[data-netbox-color-mode=dark] table tbody tr.darker,html[data-netbox-color-mode=light] table tbody tr.darker{background-color:#1b1f2226;border-color:#adb5bd}}@media print{html table tbody tr.darkest,html[data-netbox-color-mode=dark] table tbody tr.darkest,html[data-netbox-color-mode=light] table tbody tr.darkest{background-color:#171b1d26;border-color:#adb5bd}}@media print{html table tbody tr.gray,html[data-netbox-color-mode=dark] table tbody tr.gray,html[data-netbox-color-mode=light] table tbody tr.gray{background-color:#ced4da26;border-color:#adb5bd}}@media print{html table tbody tr.gray-100,html[data-netbox-color-mode=dark] table tbody tr.gray-100,html[data-netbox-color-mode=light] table tbody tr.gray-100{background-color:#f8f9fa26;border-color:#adb5bd}}@media print{html table tbody tr.gray-200,html[data-netbox-color-mode=dark] table tbody tr.gray-200,html[data-netbox-color-mode=light] table tbody tr.gray-200{background-color:#e9ecef26;border-color:#adb5bd}}@media print{html table tbody tr.gray-300,html[data-netbox-color-mode=dark] table tbody tr.gray-300,html[data-netbox-color-mode=light] table tbody tr.gray-300{background-color:#dee2e626;border-color:#adb5bd}}@media print{html table tbody tr.gray-400,html[data-netbox-color-mode=dark] table tbody tr.gray-400,html[data-netbox-color-mode=light] table tbody tr.gray-400{background-color:#ced4da26;border-color:#adb5bd}}@media print{html table tbody tr.gray-500,html[data-netbox-color-mode=dark] table tbody tr.gray-500,html[data-netbox-color-mode=light] table tbody tr.gray-500{background-color:#adb5bd26;border-color:#adb5bd}}@media print{html table tbody tr.gray-600,html[data-netbox-color-mode=dark] table tbody tr.gray-600,html[data-netbox-color-mode=light] table tbody tr.gray-600{background-color:#6c757d26;border-color:#adb5bd}}@media print{html table tbody tr.gray-700,html[data-netbox-color-mode=dark] table tbody tr.gray-700,html[data-netbox-color-mode=light] table tbody tr.gray-700{background-color:#49505726;border-color:#adb5bd}}@media print{html table tbody tr.gray-800,html[data-netbox-color-mode=dark] table tbody tr.gray-800,html[data-netbox-color-mode=light] table tbody tr.gray-800{background-color:#343a4026;border-color:#adb5bd}}@media print{html table tbody tr.gray-900,html[data-netbox-color-mode=dark] table tbody tr.gray-900,html[data-netbox-color-mode=light] table tbody tr.gray-900{background-color:#21252926;border-color:#adb5bd}}@media print{html table tbody tr.red-100,html[data-netbox-color-mode=dark] table tbody tr.red-100,html[data-netbox-color-mode=light] table tbody tr.red-100{background-color:#f8d7da26;border-color:#adb5bd}}@media print{html table tbody tr.red-200,html[data-netbox-color-mode=dark] table tbody tr.red-200,html[data-netbox-color-mode=light] table tbody tr.red-200{background-color:#f1aeb526;border-color:#adb5bd}}@media print{html table tbody tr.red-300,html[data-netbox-color-mode=dark] table tbody tr.red-300,html[data-netbox-color-mode=light] table tbody tr.red-300{background-color:#ea868f26;border-color:#adb5bd}}@media print{html table tbody tr.red-400,html[data-netbox-color-mode=dark] table tbody tr.red-400,html[data-netbox-color-mode=light] table tbody tr.red-400{background-color:#e35d6a26;border-color:#adb5bd}}@media print{html table tbody tr.red-500,html[data-netbox-color-mode=dark] table tbody tr.red-500,html[data-netbox-color-mode=light] table tbody tr.red-500{background-color:#dc354526;border-color:#adb5bd}}@media print{html table tbody tr.red-600,html[data-netbox-color-mode=dark] table tbody tr.red-600,html[data-netbox-color-mode=light] table tbody tr.red-600{background-color:#b02a3726;border-color:#adb5bd}}@media print{html table tbody tr.red-700,html[data-netbox-color-mode=dark] table tbody tr.red-700,html[data-netbox-color-mode=light] table tbody tr.red-700{background-color:#84202926;border-color:#adb5bd}}@media print{html table tbody tr.red-800,html[data-netbox-color-mode=dark] table tbody tr.red-800,html[data-netbox-color-mode=light] table tbody tr.red-800{background-color:#58151c26;border-color:#adb5bd}}@media print{html table tbody tr.red-900,html[data-netbox-color-mode=dark] table tbody tr.red-900,html[data-netbox-color-mode=light] table tbody tr.red-900{background-color:#2c0b0e26;border-color:#adb5bd}}@media print{html table tbody tr.yellow-100,html[data-netbox-color-mode=dark] table tbody tr.yellow-100,html[data-netbox-color-mode=light] table tbody tr.yellow-100{background-color:#fff3cd26;border-color:#adb5bd}}@media print{html table tbody tr.yellow-200,html[data-netbox-color-mode=dark] table tbody tr.yellow-200,html[data-netbox-color-mode=light] table tbody tr.yellow-200{background-color:#ffe69c26;border-color:#adb5bd}}@media print{html table tbody tr.yellow-300,html[data-netbox-color-mode=dark] table tbody tr.yellow-300,html[data-netbox-color-mode=light] table tbody tr.yellow-300{background-color:#ffda6a26;border-color:#adb5bd}}@media print{html table tbody tr.yellow-400,html[data-netbox-color-mode=dark] table tbody tr.yellow-400,html[data-netbox-color-mode=light] table tbody tr.yellow-400{background-color:#ffcd3926;border-color:#adb5bd}}@media print{html table tbody tr.yellow-500,html[data-netbox-color-mode=dark] table tbody tr.yellow-500,html[data-netbox-color-mode=light] table tbody tr.yellow-500{background-color:#ffc10726;border-color:#adb5bd}}@media print{html table tbody tr.yellow-600,html[data-netbox-color-mode=dark] table tbody tr.yellow-600,html[data-netbox-color-mode=light] table tbody tr.yellow-600{background-color:#cc9a0626;border-color:#adb5bd}}@media print{html table tbody tr.yellow-700,html[data-netbox-color-mode=dark] table tbody tr.yellow-700,html[data-netbox-color-mode=light] table tbody tr.yellow-700{background-color:#99740426;border-color:#adb5bd}}@media print{html table tbody tr.yellow-800,html[data-netbox-color-mode=dark] table tbody tr.yellow-800,html[data-netbox-color-mode=light] table tbody tr.yellow-800{background-color:#664d0326;border-color:#adb5bd}}@media print{html table tbody tr.yellow-900,html[data-netbox-color-mode=dark] table tbody tr.yellow-900,html[data-netbox-color-mode=light] table tbody tr.yellow-900{background-color:#33270126;border-color:#adb5bd}}@media print{html table tbody tr.green-100,html[data-netbox-color-mode=dark] table tbody tr.green-100,html[data-netbox-color-mode=light] table tbody tr.green-100{background-color:#d1e7dd26;border-color:#adb5bd}}@media print{html table tbody tr.green-200,html[data-netbox-color-mode=dark] table tbody tr.green-200,html[data-netbox-color-mode=light] table tbody tr.green-200{background-color:#a3cfbb26;border-color:#adb5bd}}@media print{html table tbody tr.green-300,html[data-netbox-color-mode=dark] table tbody tr.green-300,html[data-netbox-color-mode=light] table tbody tr.green-300{background-color:#75b79826;border-color:#adb5bd}}@media print{html table tbody tr.green-400,html[data-netbox-color-mode=dark] table tbody tr.green-400,html[data-netbox-color-mode=light] table tbody tr.green-400{background-color:#479f7626;border-color:#adb5bd}}@media print{html table tbody tr.green-500,html[data-netbox-color-mode=dark] table tbody tr.green-500,html[data-netbox-color-mode=light] table tbody tr.green-500{background-color:#19875426;border-color:#adb5bd}}@media print{html table tbody tr.green-600,html[data-netbox-color-mode=dark] table tbody tr.green-600,html[data-netbox-color-mode=light] table tbody tr.green-600{background-color:#146c4326;border-color:#adb5bd}}@media print{html table tbody tr.green-700,html[data-netbox-color-mode=dark] table tbody tr.green-700,html[data-netbox-color-mode=light] table tbody tr.green-700{background-color:#0f513226;border-color:#adb5bd}}@media print{html table tbody tr.green-800,html[data-netbox-color-mode=dark] table tbody tr.green-800,html[data-netbox-color-mode=light] table tbody tr.green-800{background-color:#0a362226;border-color:#adb5bd}}@media print{html table tbody tr.green-900,html[data-netbox-color-mode=dark] table tbody tr.green-900,html[data-netbox-color-mode=light] table tbody tr.green-900{background-color:#051b1126;border-color:#adb5bd}}@media print{html table tbody tr.blue-100,html[data-netbox-color-mode=dark] table tbody tr.blue-100,html[data-netbox-color-mode=light] table tbody tr.blue-100{background-color:#cfe2ff26;border-color:#adb5bd}}@media print{html table tbody tr.blue-200,html[data-netbox-color-mode=dark] table tbody tr.blue-200,html[data-netbox-color-mode=light] table tbody tr.blue-200{background-color:#9ec5fe26;border-color:#adb5bd}}@media print{html table tbody tr.blue-300,html[data-netbox-color-mode=dark] table tbody tr.blue-300,html[data-netbox-color-mode=light] table tbody tr.blue-300{background-color:#6ea8fe26;border-color:#adb5bd}}@media print{html table tbody tr.blue-400,html[data-netbox-color-mode=dark] table tbody tr.blue-400,html[data-netbox-color-mode=light] table tbody tr.blue-400{background-color:#3d8bfd26;border-color:#adb5bd}}@media print{html table tbody tr.blue-500,html[data-netbox-color-mode=dark] table tbody tr.blue-500,html[data-netbox-color-mode=light] table tbody tr.blue-500{background-color:#0d6efd26;border-color:#adb5bd}}@media print{html table tbody tr.blue-600,html[data-netbox-color-mode=dark] table tbody tr.blue-600,html[data-netbox-color-mode=light] table tbody tr.blue-600{background-color:#0a58ca26;border-color:#adb5bd}}@media print{html table tbody tr.blue-700,html[data-netbox-color-mode=dark] table tbody tr.blue-700,html[data-netbox-color-mode=light] table tbody tr.blue-700{background-color:#08429826;border-color:#adb5bd}}@media print{html table tbody tr.blue-800,html[data-netbox-color-mode=dark] table tbody tr.blue-800,html[data-netbox-color-mode=light] table tbody tr.blue-800{background-color:#052c6526;border-color:#adb5bd}}@media print{html table tbody tr.blue-900,html[data-netbox-color-mode=dark] table tbody tr.blue-900,html[data-netbox-color-mode=light] table tbody tr.blue-900{background-color:#03163326;border-color:#adb5bd}}@media print{html table tbody tr.cyan-100,html[data-netbox-color-mode=dark] table tbody tr.cyan-100,html[data-netbox-color-mode=light] table tbody tr.cyan-100{background-color:#cff4fc26;border-color:#adb5bd}}@media print{html table tbody tr.cyan-200,html[data-netbox-color-mode=dark] table tbody tr.cyan-200,html[data-netbox-color-mode=light] table tbody tr.cyan-200{background-color:#9eeaf926;border-color:#adb5bd}}@media print{html table tbody tr.cyan-300,html[data-netbox-color-mode=dark] table tbody tr.cyan-300,html[data-netbox-color-mode=light] table tbody tr.cyan-300{background-color:#6edff626;border-color:#adb5bd}}@media print{html table tbody tr.cyan-400,html[data-netbox-color-mode=dark] table tbody tr.cyan-400,html[data-netbox-color-mode=light] table tbody tr.cyan-400{background-color:#3dd5f326;border-color:#adb5bd}}@media print{html table tbody tr.cyan-500,html[data-netbox-color-mode=dark] table tbody tr.cyan-500,html[data-netbox-color-mode=light] table tbody tr.cyan-500{background-color:#0dcaf026;border-color:#adb5bd}}@media print{html table tbody tr.cyan-600,html[data-netbox-color-mode=dark] table tbody tr.cyan-600,html[data-netbox-color-mode=light] table tbody tr.cyan-600{background-color:#0aa2c026;border-color:#adb5bd}}@media print{html table tbody tr.cyan-700,html[data-netbox-color-mode=dark] table tbody tr.cyan-700,html[data-netbox-color-mode=light] table tbody tr.cyan-700{background-color:#08799026;border-color:#adb5bd}}@media print{html table tbody tr.cyan-800,html[data-netbox-color-mode=dark] table tbody tr.cyan-800,html[data-netbox-color-mode=light] table tbody tr.cyan-800{background-color:#05516026;border-color:#adb5bd}}@media print{html table tbody tr.cyan-900,html[data-netbox-color-mode=dark] table tbody tr.cyan-900,html[data-netbox-color-mode=light] table tbody tr.cyan-900{background-color:#03283026;border-color:#adb5bd}}@media print{html table tbody tr.indigo-100,html[data-netbox-color-mode=dark] table tbody tr.indigo-100,html[data-netbox-color-mode=light] table tbody tr.indigo-100{background-color:#e0cffc26;border-color:#adb5bd}}@media print{html table tbody tr.indigo-200,html[data-netbox-color-mode=dark] table tbody tr.indigo-200,html[data-netbox-color-mode=light] table tbody tr.indigo-200{background-color:#c29ffa26;border-color:#adb5bd}}@media print{html table tbody tr.indigo-300,html[data-netbox-color-mode=dark] table tbody tr.indigo-300,html[data-netbox-color-mode=light] table tbody tr.indigo-300{background-color:#a370f726;border-color:#adb5bd}}@media print{html table tbody tr.indigo-400,html[data-netbox-color-mode=dark] table tbody tr.indigo-400,html[data-netbox-color-mode=light] table tbody tr.indigo-400{background-color:#8540f526;border-color:#adb5bd}}@media print{html table tbody tr.indigo-500,html[data-netbox-color-mode=dark] table tbody tr.indigo-500,html[data-netbox-color-mode=light] table tbody tr.indigo-500{background-color:#6610f226;border-color:#adb5bd}}@media print{html table tbody tr.indigo-600,html[data-netbox-color-mode=dark] table tbody tr.indigo-600,html[data-netbox-color-mode=light] table tbody tr.indigo-600{background-color:#520dc226;border-color:#adb5bd}}@media print{html table tbody tr.indigo-700,html[data-netbox-color-mode=dark] table tbody tr.indigo-700,html[data-netbox-color-mode=light] table tbody tr.indigo-700{background-color:#3d0a9126;border-color:#adb5bd}}@media print{html table tbody tr.indigo-800,html[data-netbox-color-mode=dark] table tbody tr.indigo-800,html[data-netbox-color-mode=light] table tbody tr.indigo-800{background-color:#29066126;border-color:#adb5bd}}@media print{html table tbody tr.indigo-900,html[data-netbox-color-mode=dark] table tbody tr.indigo-900,html[data-netbox-color-mode=light] table tbody tr.indigo-900{background-color:#14033026;border-color:#adb5bd}}@media print{html table tbody tr.purple-100,html[data-netbox-color-mode=dark] table tbody tr.purple-100,html[data-netbox-color-mode=light] table tbody tr.purple-100{background-color:#e2d9f326;border-color:#adb5bd}}@media print{html table tbody tr.purple-200,html[data-netbox-color-mode=dark] table tbody tr.purple-200,html[data-netbox-color-mode=light] table tbody tr.purple-200{background-color:#c5b3e626;border-color:#adb5bd}}@media print{html table tbody tr.purple-300,html[data-netbox-color-mode=dark] table tbody tr.purple-300,html[data-netbox-color-mode=light] table tbody tr.purple-300{background-color:#a98eda26;border-color:#adb5bd}}@media print{html table tbody tr.purple-400,html[data-netbox-color-mode=dark] table tbody tr.purple-400,html[data-netbox-color-mode=light] table tbody tr.purple-400{background-color:#8c68cd26;border-color:#adb5bd}}@media print{html table tbody tr.purple-500,html[data-netbox-color-mode=dark] table tbody tr.purple-500,html[data-netbox-color-mode=light] table tbody tr.purple-500{background-color:#6f42c126;border-color:#adb5bd}}@media print{html table tbody tr.purple-600,html[data-netbox-color-mode=dark] table tbody tr.purple-600,html[data-netbox-color-mode=light] table tbody tr.purple-600{background-color:#59359a26;border-color:#adb5bd}}@media print{html table tbody tr.purple-700,html[data-netbox-color-mode=dark] table tbody tr.purple-700,html[data-netbox-color-mode=light] table tbody tr.purple-700{background-color:#43287426;border-color:#adb5bd}}@media print{html table tbody tr.purple-800,html[data-netbox-color-mode=dark] table tbody tr.purple-800,html[data-netbox-color-mode=light] table tbody tr.purple-800{background-color:#2c1a4d26;border-color:#adb5bd}}@media print{html table tbody tr.purple-900,html[data-netbox-color-mode=dark] table tbody tr.purple-900,html[data-netbox-color-mode=light] table tbody tr.purple-900{background-color:#160d2726;border-color:#adb5bd}}@media print{html table tbody tr.pink-100,html[data-netbox-color-mode=dark] table tbody tr.pink-100,html[data-netbox-color-mode=light] table tbody tr.pink-100{background-color:#f7d6e626;border-color:#adb5bd}}@media print{html table tbody tr.pink-200,html[data-netbox-color-mode=dark] table tbody tr.pink-200,html[data-netbox-color-mode=light] table tbody tr.pink-200{background-color:#efadce26;border-color:#adb5bd}}@media print{html table tbody tr.pink-300,html[data-netbox-color-mode=dark] table tbody tr.pink-300,html[data-netbox-color-mode=light] table tbody tr.pink-300{background-color:#e685b526;border-color:#adb5bd}}@media print{html table tbody tr.pink-400,html[data-netbox-color-mode=dark] table tbody tr.pink-400,html[data-netbox-color-mode=light] table tbody tr.pink-400{background-color:#de5c9d26;border-color:#adb5bd}}@media print{html table tbody tr.pink-500,html[data-netbox-color-mode=dark] table tbody tr.pink-500,html[data-netbox-color-mode=light] table tbody tr.pink-500{background-color:#d6338426;border-color:#adb5bd}}@media print{html table tbody tr.pink-600,html[data-netbox-color-mode=dark] table tbody tr.pink-600,html[data-netbox-color-mode=light] table tbody tr.pink-600{background-color:#ab296a26;border-color:#adb5bd}}@media print{html table tbody tr.pink-700,html[data-netbox-color-mode=dark] table tbody tr.pink-700,html[data-netbox-color-mode=light] table tbody tr.pink-700{background-color:#801f4f26;border-color:#adb5bd}}@media print{html table tbody tr.pink-800,html[data-netbox-color-mode=dark] table tbody tr.pink-800,html[data-netbox-color-mode=light] table tbody tr.pink-800{background-color:#56143526;border-color:#adb5bd}}@media print{html table tbody tr.pink-900,html[data-netbox-color-mode=dark] table tbody tr.pink-900,html[data-netbox-color-mode=light] table tbody tr.pink-900{background-color:#2b0a1a26;border-color:#adb5bd}}@media print{html table .table-badge-group .table-badge,html[data-netbox-color-mode=dark] table .table-badge-group .table-badge,html[data-netbox-color-mode=light] table .table-badge-group .table-badge{display:block;width:min-content;font-size:.875rem;font-weight:400}}@media print{html table .table-badge-group .table-badge:not(.badge),html[data-netbox-color-mode=dark] table .table-badge-group .table-badge:not(.badge),html[data-netbox-color-mode=light] table .table-badge-group .table-badge:not(.badge){padding:0 .65em}}@media print{html table .table-badge-group .table-badge.badge:not(:last-of-type):not(:only-child),html[data-netbox-color-mode=dark] table .table-badge-group .table-badge.badge:not(:last-of-type):not(:only-child),html[data-netbox-color-mode=light] table .table-badge-group .table-badge.badge:not(:last-of-type):not(:only-child){margin-bottom:.25rem}}@media print{html pre.change-data,html[data-netbox-color-mode=dark] pre.change-data,html[data-netbox-color-mode=light] pre.change-data{padding-right:0;padding-left:0}}@media print{html pre.change-data>span,html[data-netbox-color-mode=dark] pre.change-data>span,html[data-netbox-color-mode=light] pre.change-data>span{display:block;padding-right:1rem;padding-left:1rem}}@media print{html pre.change-data>span.added,html[data-netbox-color-mode=dark] pre.change-data>span.added,html[data-netbox-color-mode=light] pre.change-data>span.added{background-color:var(--nbx-change-added)}}@media print{html pre.change-data>span.removed,html[data-netbox-color-mode=dark] pre.change-data>span.removed,html[data-netbox-color-mode=light] pre.change-data>span.removed{background-color:var(--nbx-change-removed)}}@media print{html pre.change-diff,html[data-netbox-color-mode=dark] pre.change-diff,html[data-netbox-color-mode=light] pre.change-diff{border-color:transparent}}@media print{html pre.change-diff.change-removed,html[data-netbox-color-mode=dark] pre.change-diff.change-removed,html[data-netbox-color-mode=light] pre.change-diff.change-removed{background-color:var(--nbx-change-removed)}}@media print{html pre.change-diff.change-added,html[data-netbox-color-mode=dark] pre.change-diff.change-added,html[data-netbox-color-mode=light] pre.change-diff.change-added{background-color:var(--nbx-change-added)}}@media print{html div.card-overlay,html[data-netbox-color-mode=dark] div.card-overlay,html[data-netbox-color-mode=light] div.card-overlay{position:absolute;display:flex;align-items:center;justify-content:center;width:100%;height:100%;background-color:#ffffffbf;border-radius:.375rem}}@media print{html div.card-overlay>div.spinner-border,html[data-netbox-color-mode=dark] div.card-overlay>div.spinner-border,html[data-netbox-color-mode=light] div.card-overlay>div.spinner-border{width:6rem;height:6rem;color:#6c757d}}@media print{html .table-controls,html[data-netbox-color-mode=dark] .table-controls,html[data-netbox-color-mode=light] .table-controls{display:flex}}@media print and (min-width: 768px){html .table-controls,html[data-netbox-color-mode=dark] .table-controls,html[data-netbox-color-mode=light] .table-controls{margin-top:0!important;margin-bottom:0!important}}@media print{html .table-controls .table-configure,html[data-netbox-color-mode=dark] .table-controls .table-configure,html[data-netbox-color-mode=light] .table-controls .table-configure{justify-content:flex-start}}@media print and (min-width: 768px){html .table-controls .table-configure,html[data-netbox-color-mode=dark] .table-controls .table-configure,html[data-netbox-color-mode=light] .table-controls .table-configure{justify-content:flex-end}}@media print{html .table-controls .form-switch.form-check-inline,html[data-netbox-color-mode=dark] .table-controls .form-switch.form-check-inline,html[data-netbox-color-mode=light] .table-controls .form-switch.form-check-inline{flex:1 0 auto;font-size:.875rem}}@media print{html .paginator,html[data-netbox-color-mode=dark] .paginator,html[data-netbox-color-mode=light] .paginator{display:flex;flex-direction:column;align-items:flex-end;padding:1rem 0}}@media print{html .nav-tabs .nav-link:hover,html[data-netbox-color-mode=dark] .nav-tabs .nav-link:hover,html[data-netbox-color-mode=light] .nav-tabs .nav-link:hover{border-bottom-color:transparent}}@media print{html .nav-tabs .nav-link.active,html[data-netbox-color-mode=dark] .nav-tabs .nav-link.active,html[data-netbox-color-mode=light] .nav-tabs .nav-link.active{background-color:#f8f9fa;border-bottom-color:#f8f9fa;transform:translateY(1px)}}@media print{html .tab-content,html[data-netbox-color-mode=dark] .tab-content,html[data-netbox-color-mode=light] .tab-content{display:flex;flex-direction:column;padding:1rem;background-color:#f8f9fa;border-bottom:1px solid #dee2e6}}@media print{html .tab-content,html[data-netbox-color-mode=dark] .tab-content,html[data-netbox-color-mode=light] .tab-content{background-color:var(--nbx-body-bg)!important;border-bottom:none!important}}@media print{html .masonry,html[data-netbox-color-mode=dark] .masonry,html[data-netbox-color-mode=light] .masonry{position:static!important;display:block!important;height:unset!important}}@media print{html .masonry .masonry-item,html[data-netbox-color-mode=dark] .masonry .masonry-item,html[data-netbox-color-mode=light] .masonry .masonry-item{position:static!important;top:unset!important;left:unset!important;display:block!important}}@media print{html .record-depth,html[data-netbox-color-mode=dark] .record-depth,html[data-netbox-color-mode=light] .record-depth{display:inline;font-size:1rem;user-select:none;opacity:.33}}@media print{html .record-depth span:only-of-type,html .record-depth span:last-of-type,html[data-netbox-color-mode=dark] .record-depth span:only-of-type,html[data-netbox-color-mode=dark] .record-depth span:last-of-type,html[data-netbox-color-mode=light] .record-depth span:only-of-type,html[data-netbox-color-mode=light] .record-depth span:last-of-type{margin-right:.25rem}}@media print{html .popover.image-preview-popover,html[data-netbox-color-mode=dark] .popover.image-preview-popover,html[data-netbox-color-mode=light] .popover.image-preview-popover{max-width:unset}}@media print{html #django-messages,html[data-netbox-color-mode=dark] #django-messages,html[data-netbox-color-mode=light] #django-messages{position:fixed;right:1rem;bottom:0;margin:1rem}}@media print{html html[data-netbox-url-name=home] .content-container,html html[data-netbox-url-name=home] .search,html[data-netbox-color-mode=dark] html[data-netbox-url-name=home] .content-container,html[data-netbox-color-mode=dark] html[data-netbox-url-name=home] .search,html[data-netbox-color-mode=light] html[data-netbox-url-name=home] .content-container,html[data-netbox-color-mode=light] html[data-netbox-url-name=home] .search{background-color:#f8f9fa!important}}@media print{html html[data-netbox-url-name=home][data-netbox-color-mode=dark] .content-container,html html[data-netbox-url-name=home][data-netbox-color-mode=dark] .search,html[data-netbox-color-mode=dark] html[data-netbox-url-name=home][data-netbox-color-mode=dark] .content-container,html[data-netbox-color-mode=dark] html[data-netbox-url-name=home][data-netbox-color-mode=dark] .search,html[data-netbox-color-mode=light] html[data-netbox-url-name=home][data-netbox-color-mode=dark] .content-container,html[data-netbox-color-mode=light] html[data-netbox-url-name=home][data-netbox-color-mode=dark] .search{background-color:#171b1d!important}}@media print{html html[data-netbox-url-name=login] #django-messages,html[data-netbox-color-mode=dark] html[data-netbox-url-name=login] #django-messages,html[data-netbox-color-mode=light] html[data-netbox-url-name=login] #django-messages{display:none}} diff --git a/netbox/project-static/styles/netbox.scss b/netbox/project-static/styles/netbox.scss index 8ce526985..b21f38f89 100644 --- a/netbox/project-static/styles/netbox.scss +++ b/netbox/project-static/styles/netbox.scss @@ -814,7 +814,7 @@ table .table-badge-group { } &.badge:not(:last-of-type):not(:only-child) { - margin-bottom: map.get($spacers, 2); + margin-bottom: map.get($spacers, 1); } } } From be912358586a6baa9d709f2251ff4f531a0179b2 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Tue, 9 Nov 2021 16:08:11 -0500 Subject: [PATCH 196/289] Changelog for #7740 --- docs/release-notes/version-3.0.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/release-notes/version-3.0.md b/docs/release-notes/version-3.0.md index 1f3716383..ef99c4a0e 100644 --- a/docs/release-notes/version-3.0.md +++ b/docs/release-notes/version-3.0.md @@ -4,6 +4,7 @@ ### Enhancements +* [#7740](https://github.com/netbox-community/netbox/issues/7740) - Add mini-DIN 8 console port type * [#7760](https://github.com/netbox-community/netbox/issues/7760) - Add `vid` filter field to VLANs list ### Bug Fixes From 3ad773beb3bfadf2b6ecaa5dd843acba3a2fb49e Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Tue, 9 Nov 2021 16:46:58 -0500 Subject: [PATCH 197/289] Fixes #7741: Fix 404 when attaching multiple images in succession --- docs/release-notes/version-3.0.md | 1 + netbox/extras/models/models.py | 2 ++ netbox/extras/views.py | 6 +----- .../inc/image_attachments_panel.html | 2 +- netbox/utilities/templatetags/helpers.py | 20 +++++++++++++++++++ 5 files changed, 25 insertions(+), 6 deletions(-) diff --git a/docs/release-notes/version-3.0.md b/docs/release-notes/version-3.0.md index ef99c4a0e..7a3005421 100644 --- a/docs/release-notes/version-3.0.md +++ b/docs/release-notes/version-3.0.md @@ -10,6 +10,7 @@ ### Bug Fixes * [#7701](https://github.com/netbox-community/netbox/issues/7701) - Fix conflation of assigned IP status & role in interface tables +* [#7741](https://github.com/netbox-community/netbox/issues/7741) - Fix 404 when attaching multiple images in succession * [#7752](https://github.com/netbox-community/netbox/issues/7752) - Fix minimum version check under Python v3.10 * [#7766](https://github.com/netbox-community/netbox/issues/7766) - Add missing outer dimension columns to rack table * [#7780](https://github.com/netbox-community/netbox/issues/7780) - Preserve mutli-line values during CSV file import diff --git a/netbox/extras/models/models.py b/netbox/extras/models/models.py index 75f5242d3..2c56f2f0f 100644 --- a/netbox/extras/models/models.py +++ b/netbox/extras/models/models.py @@ -357,6 +357,8 @@ class ImageAttachment(BigIDModel): objects = RestrictedQuerySet.as_manager() + clone_fields = ('content_type', 'object_id') + class Meta: ordering = ('name', 'pk') # name may be non-unique diff --git a/netbox/extras/views.py b/netbox/extras/views.py index d39f50c79..b0387c73d 100644 --- a/netbox/extras/views.py +++ b/netbox/extras/views.py @@ -475,11 +475,7 @@ class ImageAttachmentEditView(generic.ObjectEditView): def alter_obj(self, instance, request, args, kwargs): if not instance.pk: # Assign the parent object based on URL kwargs - try: - app_label, model = request.GET.get('content_type').split('.') - except (AttributeError, ValueError): - raise Http404("Content type not specified") - content_type = get_object_or_404(ContentType, app_label=app_label, model=model) + content_type = get_object_or_404(ContentType, pk=request.GET.get('content_type')) instance.parent = get_object_or_404(content_type.model_class(), pk=request.GET.get('object_id')) return instance diff --git a/netbox/templates/inc/image_attachments_panel.html b/netbox/templates/inc/image_attachments_panel.html index ca7312901..9706a7ffe 100644 --- a/netbox/templates/inc/image_attachments_panel.html +++ b/netbox/templates/inc/image_attachments_panel.html @@ -44,7 +44,7 @@ {% if perms.extras.add_imageattachment %} diff --git a/netbox/utilities/templatetags/helpers.py b/netbox/utilities/templatetags/helpers.py index 1695c8257..5b5534321 100644 --- a/netbox/utilities/templatetags/helpers.py +++ b/netbox/utilities/templatetags/helpers.py @@ -6,6 +6,7 @@ from typing import Dict, Any import yaml from django import template from django.conf import settings +from django.contrib.contenttypes.models import ContentType from django.template.defaultfilters import date from django.urls import NoReverseMatch, reverse from django.utils import timezone @@ -78,6 +79,25 @@ def meta(obj, attr): return getattr(obj._meta, attr, '') +@register.filter() +def content_type(obj): + """ + Return the ContentType for the given object. + """ + return ContentType.objects.get_for_model(obj) + + +@register.filter() +def content_type_id(obj): + """ + Return the ContentType ID for the given object. + """ + content_type = ContentType.objects.get_for_model(obj) + if content_type: + return content_type.pk + return None + + @register.filter() def viewname(model, action): """ From 34f24de3e48482486255c6c60983b81f2247d425 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Tue, 9 Nov 2021 17:08:28 -0500 Subject: [PATCH 198/289] Fixes #7757: Fix 404 when assigning multiple contacts/FHRP groups in succession --- docs/release-notes/version-3.1.md | 1 + netbox/ipam/models/fhrp.py | 6 +-- netbox/ipam/views.py | 6 +-- netbox/templates/inc/panels/contacts.html | 2 +- netbox/templates/inc/panels/nhrp_groups.html | 49 ------------------- .../ipam/inc/panels/fhrp_groups.html | 6 +-- netbox/tenancy/models/contacts.py | 2 + netbox/tenancy/views.py | 6 +-- 8 files changed, 12 insertions(+), 66 deletions(-) delete mode 100644 netbox/templates/inc/panels/nhrp_groups.html diff --git a/docs/release-notes/version-3.1.md b/docs/release-notes/version-3.1.md index b19e7979c..912a68357 100644 --- a/docs/release-notes/version-3.1.md +++ b/docs/release-notes/version-3.1.md @@ -8,6 +8,7 @@ ### Bug Fixes * [#7756](https://github.com/netbox-community/netbox/issues/7756) - Fix AttributeError exception when editing an IP address assigned to a FHRPGroup +* [#7757](https://github.com/netbox-community/netbox/issues/7757) - Fix 404 when assigning multiple contacts/FHRP groups in succession * [#7768](https://github.com/netbox-community/netbox/issues/7768) - Validate IP address status when creating a new FHRP group * [#7771](https://github.com/netbox-community/netbox/issues/7771) - Group assignment should be optional when creating contacts via REST API diff --git a/netbox/ipam/models/fhrp.py b/netbox/ipam/models/fhrp.py index 5a12a54bb..e6624b27b 100644 --- a/netbox/ipam/models/fhrp.py +++ b/netbox/ipam/models/fhrp.py @@ -52,9 +52,7 @@ class FHRPGroup(PrimaryModel): objects = RestrictedQuerySet.as_manager() - clone_fields = [ - 'protocol', 'auth_type', 'auth_key' - ] + clone_fields = ('protocol', 'auth_type', 'auth_key') class Meta: ordering = ['protocol', 'group_id', 'pk'] @@ -91,6 +89,8 @@ class FHRPGroupAssignment(ChangeLoggedModel): objects = RestrictedQuerySet.as_manager() + clone_fields = ('interface_type', 'interface_id') + class Meta: ordering = ('-priority', 'pk') unique_together = ('interface_type', 'interface_id', 'group') diff --git a/netbox/ipam/views.py b/netbox/ipam/views.py index 407f6d29e..2267a27d3 100644 --- a/netbox/ipam/views.py +++ b/netbox/ipam/views.py @@ -976,11 +976,7 @@ class FHRPGroupAssignmentEditView(generic.ObjectEditView): def alter_obj(self, instance, request, args, kwargs): if not instance.pk: # Assign the interface based on URL kwargs - try: - app_label, model = request.GET.get('interface_type').split('.') - except (AttributeError, ValueError): - raise Http404("Content type not specified") - content_type = get_object_or_404(ContentType, app_label=app_label, model=model) + content_type = get_object_or_404(ContentType, pk=request.GET.get('interface_type')) instance.interface = get_object_or_404(content_type.model_class(), pk=request.GET.get('interface_id')) return instance diff --git a/netbox/templates/inc/panels/contacts.html b/netbox/templates/inc/panels/contacts.html index 872c11153..e3e5cf483 100644 --- a/netbox/templates/inc/panels/contacts.html +++ b/netbox/templates/inc/panels/contacts.html @@ -41,7 +41,7 @@ {% if perms.tenancy.add_contactassignment %} diff --git a/netbox/templates/inc/panels/nhrp_groups.html b/netbox/templates/inc/panels/nhrp_groups.html deleted file mode 100644 index 223354441..000000000 --- a/netbox/templates/inc/panels/nhrp_groups.html +++ /dev/null @@ -1,49 +0,0 @@ -{% load helpers %} - -
-
Contacts
-
- {% with fhrp_groups=object.fhrp_group_assignments.all %} - {% if contacts.exists %} - - - - - - - - {% for contact in contacts %} - - - - - - - {% endfor %} -
ProtocolGroup IDPriority
- {{ contact.contact }} - {{ contact.role|placeholder }}{{ contact.get_priority_display|placeholder }} - {% if perms.tenancy.change_contactassignment %} - - - - {% endif %} - {% if perms.tenancy.delete_contactassignment %} - - - - {% endif %} -
- {% else %} -
None
- {% endif %} - {% endwith %} -
- {% if perms.tenancy.add_contactassignment %} - - {% endif %} -
diff --git a/netbox/templates/ipam/inc/panels/fhrp_groups.html b/netbox/templates/ipam/inc/panels/fhrp_groups.html index 9692927a3..6583694ef 100644 --- a/netbox/templates/ipam/inc/panels/fhrp_groups.html +++ b/netbox/templates/ipam/inc/panels/fhrp_groups.html @@ -46,7 +46,7 @@
NoneNone
- {% badge vc_member.vc_position %} + {% badge vc_member.vc_position show_empty=True %} {% if object.master == vc_member %} From 2f064cdfd1429ee835062cdb9d88ffc64f3ddf9a Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Thu, 11 Nov 2021 12:30:28 -0500 Subject: [PATCH 205/289] Changelog for #7767 --- docs/release-notes/version-3.0.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/release-notes/version-3.0.md b/docs/release-notes/version-3.0.md index fdbf58908..366f0bca0 100644 --- a/docs/release-notes/version-3.0.md +++ b/docs/release-notes/version-3.0.md @@ -6,6 +6,7 @@ * [#7740](https://github.com/netbox-community/netbox/issues/7740) - Add mini-DIN 8 console port type * [#7760](https://github.com/netbox-community/netbox/issues/7760) - Add `vid` filter field to VLANs list +* [#7767](https://github.com/netbox-community/netbox/issues/7767) - Add visual aids to interfaces table for type, enabled status ### Bug Fixes From 83b21027055ec9e619b33e30423da49fe0d5f326 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Thu, 11 Nov 2021 14:05:35 -0500 Subject: [PATCH 206/289] Closes #7769: Enable assignment of IP addresses to an existing FHRP group --- docs/release-notes/version-3.1.md | 1 + netbox/ipam/forms/models.py | 20 ++++-- netbox/ipam/models/fhrp.py | 2 +- netbox/ipam/views.py | 6 ++ netbox/templates/ipam/fhrpgroup.html | 7 +++ netbox/templates/ipam/ipaddress_edit.html | 76 ++++++++++------------- 6 files changed, 63 insertions(+), 49 deletions(-) diff --git a/docs/release-notes/version-3.1.md b/docs/release-notes/version-3.1.md index 912a68357..2c09082af 100644 --- a/docs/release-notes/version-3.1.md +++ b/docs/release-notes/version-3.1.md @@ -3,6 +3,7 @@ ### Enhancements * [#7619](https://github.com/netbox-community/netbox/issues/7619) - Permit custom validation rules to be defined as plain data or dotted path to class +* [#7769](https://github.com/netbox-community/netbox/issues/7769) - Enable assignment of IP addresses to an existing FHRP group * [#7775](https://github.com/netbox-community/netbox/issues/7775) - Enable dynamic config for `CHANGELOG_RETENTION`, `CUSTOM_VALIDATORS`, and `GRAPHQL_ENABLED` ### Bug Fixes diff --git a/netbox/ipam/forms/models.py b/netbox/ipam/forms/models.py index 2875c5182..eea3bb216 100644 --- a/netbox/ipam/forms/models.py +++ b/netbox/ipam/forms/models.py @@ -321,6 +321,11 @@ class IPAddressForm(BootstrapMixin, TenancyForm, CustomFieldModelForm): 'virtual_machine_id': '$virtual_machine' } ) + fhrpgroup = DynamicModelChoiceField( + queryset=FHRPGroup.objects.all(), + required=False, + label='FHRP Group' + ) vrf = DynamicModelChoiceField( queryset=VRF.objects.all(), required=False, @@ -428,6 +433,8 @@ class IPAddressForm(BootstrapMixin, TenancyForm, CustomFieldModelForm): initial['interface'] = instance.assigned_object elif type(instance.assigned_object) is VMInterface: initial['vminterface'] = instance.assigned_object + elif type(instance.assigned_object) is FHRPGroup: + initial['fhrpgroup'] = instance.assigned_object if instance.nat_inside: nat_inside_parent = instance.nat_inside.assigned_object if type(nat_inside_parent) is Interface: @@ -454,10 +461,13 @@ class IPAddressForm(BootstrapMixin, TenancyForm, CustomFieldModelForm): def clean(self): super().clean() - # Cannot select both a device interface and a VM interface - if self.cleaned_data.get('interface') and self.cleaned_data.get('vminterface'): - raise forms.ValidationError("Cannot select both a device interface and a virtual machine interface") - self.instance.assigned_object = self.cleaned_data.get('interface') or self.cleaned_data.get('vminterface') + # Handle object assignment + if self.cleaned_data['interface']: + self.instance.assigned_object = self.cleaned_data['interface'] + elif self.cleaned_data['vminterface']: + self.instance.assigned_object = self.cleaned_data['vminterface'] + elif self.cleaned_data['fhrpgroup']: + self.instance.assigned_object = self.cleaned_data['fhrpgroup'] # Primary IP assignment is only available if an interface has been assigned. interface = self.cleaned_data.get('interface') or self.cleaned_data.get('vminterface') @@ -471,7 +481,7 @@ class IPAddressForm(BootstrapMixin, TenancyForm, CustomFieldModelForm): # Assign/clear this IPAddress as the primary for the associated Device/VirtualMachine. interface = self.instance.assigned_object - if interface: + if type(interface) in (Interface, VMInterface): parent = interface.parent_object if self.cleaned_data['primary_for_parent']: if ipaddress.address.version == 4: diff --git a/netbox/ipam/models/fhrp.py b/netbox/ipam/models/fhrp.py index e6624b27b..42ba8d84d 100644 --- a/netbox/ipam/models/fhrp.py +++ b/netbox/ipam/models/fhrp.py @@ -47,7 +47,7 @@ class FHRPGroup(PrimaryModel): to='ipam.IPAddress', content_type_field='assigned_object_type', object_id_field='assigned_object_id', - related_query_name='fhrp_group' + related_query_name='fhrpgroup' ) objects = RestrictedQuerySet.as_manager() diff --git a/netbox/ipam/views.py b/netbox/ipam/views.py index 2267a27d3..21f0857b3 100644 --- a/netbox/ipam/views.py +++ b/netbox/ipam/views.py @@ -739,6 +739,12 @@ class IPAddressEditView(generic.ObjectEditView): except (ValueError, VMInterface.DoesNotExist): pass + elif 'fhrpgroup' in request.GET: + try: + obj.assigned_object = FHRPGroup.objects.get(pk=request.GET['fhrpgroup']) + except (ValueError, FHRPGroup.DoesNotExist): + pass + return obj diff --git a/netbox/templates/ipam/fhrpgroup.html b/netbox/templates/ipam/fhrpgroup.html index a7fa1a248..0ee94ab90 100644 --- a/netbox/templates/ipam/fhrpgroup.html +++ b/netbox/templates/ipam/fhrpgroup.html @@ -68,6 +68,13 @@
None
{% endif %} + {% if perms.ipam.add_ipaddress %} + + {% endif %}
Members
diff --git a/netbox/templates/ipam/ipaddress_edit.html b/netbox/templates/ipam/ipaddress_edit.html index c23fcd63c..e611aefbb 100644 --- a/netbox/templates/ipam/ipaddress_edit.html +++ b/netbox/templates/ipam/ipaddress_edit.html @@ -33,51 +33,41 @@
Interface Assignment
- {% with vm_tab_active=form.initial.vminterface %} -
-
- -
+
+
+
-
-
- {% render_field form.device %} - {% render_field form.interface %} -
-
- {% render_field form.virtual_machine %} - {% render_field form.vminterface %} -
- {% render_field form.primary_for_parent %} +
+
+
+ {% render_field form.device %} + {% render_field form.interface %}
- {% endwith %} +
+ {% render_field form.virtual_machine %} + {% render_field form.vminterface %} +
+
+ {% render_field form.fhrpgroup %} +
+ {% render_field form.primary_for_parent %} +
From 834f68e6e43e7bdded9a5df62e9aa31101c433d3 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Thu, 11 Nov 2021 14:45:10 -0500 Subject: [PATCH 207/289] Fixes #7761: Extend cable tracing across bridged interfaces --- docs/release-notes/version-3.1.md | 1 + netbox/dcim/models/device_components.py | 22 +++++++++++++++------- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/docs/release-notes/version-3.1.md b/docs/release-notes/version-3.1.md index 2c09082af..a8b1711c9 100644 --- a/docs/release-notes/version-3.1.md +++ b/docs/release-notes/version-3.1.md @@ -3,6 +3,7 @@ ### Enhancements * [#7619](https://github.com/netbox-community/netbox/issues/7619) - Permit custom validation rules to be defined as plain data or dotted path to class +* [#7761](https://github.com/netbox-community/netbox/issues/7761) - Extend cable tracing across bridged interfaces * [#7769](https://github.com/netbox-community/netbox/issues/7769) - Enable assignment of IP addresses to an existing FHRP group * [#7775](https://github.com/netbox-community/netbox/issues/7775) - Enable dynamic config for `CHANGELOG_RETENTION`, `CUSTOM_VALIDATORS`, and `GRAPHQL_ENABLED` diff --git a/netbox/dcim/models/device_components.py b/netbox/dcim/models/device_components.py index 3896e5e83..ff10bc853 100644 --- a/netbox/dcim/models/device_components.py +++ b/netbox/dcim/models/device_components.py @@ -189,15 +189,23 @@ class PathEndpoint(models.Model): abstract = True def trace(self): - if self._path is None: - return [] + origin = self + path = [] # Construct the complete path - path = [self, *self._path.get_path()] - while (len(path) + 1) % 3: - # Pad to ensure we have complete three-tuples (e.g. for paths that end at a non-connected FrontPort) - path.append(None) - path.append(self._path.destination) + while origin is not None: + + if origin._path is None: + return path + + path.extend([origin, *origin._path.get_path()]) + while (len(path) + 1) % 3: + # Pad to ensure we have complete three-tuples (e.g. for paths that end at a non-connected FrontPort) + path.append(None) + path.append(origin._path.destination) + + # Check for bridge interface to continue the trace + origin = getattr(origin._path.destination, 'bridge', None) # Return the path as a list of three-tuples (A termination, cable, B termination) return list(zip(*[iter(path)] * 3)) From d529c1b5b33c1578691aec36765e01339e362d84 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Thu, 11 Nov 2021 15:04:22 -0500 Subject: [PATCH 208/289] Housekeeping: Use RestrictedQuerySet for default manager on base models --- netbox/circuits/models/circuits.py | 7 ------- netbox/circuits/models/providers.py | 4 ---- netbox/dcim/models/cables.py | 3 --- netbox/dcim/models/device_component_templates.py | 3 --- netbox/dcim/models/device_components.py | 3 --- netbox/dcim/models/devices.py | 11 ----------- netbox/dcim/models/power.py | 5 ----- netbox/dcim/models/racks.py | 7 ------- netbox/dcim/models/sites.py | 3 --- netbox/extras/models/models.py | 8 -------- netbox/extras/models/tags.py | 3 --- netbox/ipam/models/fhrp.py | 5 ----- netbox/ipam/models/ip.py | 11 ----------- netbox/ipam/models/services.py | 3 --- netbox/ipam/models/vlans.py | 3 --- netbox/ipam/models/vrfs.py | 5 ----- netbox/netbox/models.py | 7 +++++++ netbox/tenancy/models/contacts.py | 7 ------- netbox/tenancy/models/tenants.py | 3 --- netbox/virtualization/models.py | 9 --------- netbox/wireless/models.py | 5 ----- 21 files changed, 7 insertions(+), 108 deletions(-) diff --git a/netbox/circuits/models/circuits.py b/netbox/circuits/models/circuits.py index 3af3c6bc0..602c0f403 100644 --- a/netbox/circuits/models/circuits.py +++ b/netbox/circuits/models/circuits.py @@ -7,7 +7,6 @@ from circuits.choices import * from dcim.models import LinkTermination from extras.utils import extras_features from netbox.models import ChangeLoggedModel, OrganizationalModel, PrimaryModel -from utilities.querysets import RestrictedQuerySet __all__ = ( 'Circuit', @@ -35,8 +34,6 @@ class CircuitType(OrganizationalModel): blank=True, ) - objects = RestrictedQuerySet.as_manager() - class Meta: ordering = ['name'] @@ -123,8 +120,6 @@ class Circuit(PrimaryModel): null=True ) - objects = RestrictedQuerySet.as_manager() - clone_fields = [ 'provider', 'type', 'status', 'tenant', 'install_date', 'commit_rate', 'description', ] @@ -195,8 +190,6 @@ class CircuitTermination(ChangeLoggedModel, LinkTermination): blank=True ) - objects = RestrictedQuerySet.as_manager() - class Meta: ordering = ['circuit', 'term_side'] unique_together = ['circuit', 'term_side'] diff --git a/netbox/circuits/models/providers.py b/netbox/circuits/models/providers.py index 1449e9520..b3a6902f9 100644 --- a/netbox/circuits/models/providers.py +++ b/netbox/circuits/models/providers.py @@ -59,8 +59,6 @@ class Provider(PrimaryModel): to='tenancy.ContactAssignment' ) - objects = RestrictedQuerySet.as_manager() - clone_fields = [ 'asn', 'account', 'portal_url', 'noc_contact', 'admin_contact', ] @@ -97,8 +95,6 @@ class ProviderNetwork(PrimaryModel): blank=True ) - objects = RestrictedQuerySet.as_manager() - class Meta: ordering = ('provider', 'name') constraints = ( diff --git a/netbox/dcim/models/cables.py b/netbox/dcim/models/cables.py index 54012f0e9..333972b21 100644 --- a/netbox/dcim/models/cables.py +++ b/netbox/dcim/models/cables.py @@ -14,7 +14,6 @@ from dcim.utils import decompile_path_node, object_to_path_node, path_node_to_ob from extras.utils import extras_features from netbox.models import BigIDModel, PrimaryModel from utilities.fields import ColorField -from utilities.querysets import RestrictedQuerySet from utilities.utils import to_meters from .devices import Device from .device_components import FrontPort, RearPort @@ -116,8 +115,6 @@ class Cable(PrimaryModel): null=True ) - objects = RestrictedQuerySet.as_manager() - class Meta: ordering = ['pk'] unique_together = ( diff --git a/netbox/dcim/models/device_component_templates.py b/netbox/dcim/models/device_component_templates.py index e704f74a7..42e453669 100644 --- a/netbox/dcim/models/device_component_templates.py +++ b/netbox/dcim/models/device_component_templates.py @@ -7,7 +7,6 @@ from dcim.constants import * from extras.utils import extras_features from netbox.models import ChangeLoggedModel from utilities.fields import ColorField, NaturalOrderingField -from utilities.querysets import RestrictedQuerySet from utilities.ordering import naturalize_interface from .device_components import ( ConsolePort, ConsoleServerPort, DeviceBay, FrontPort, Interface, PowerOutlet, PowerPort, RearPort, @@ -50,8 +49,6 @@ class ComponentTemplateModel(ChangeLoggedModel): blank=True ) - objects = RestrictedQuerySet.as_manager() - class Meta: abstract = True diff --git a/netbox/dcim/models/device_components.py b/netbox/dcim/models/device_components.py index ff10bc853..75363b4f0 100644 --- a/netbox/dcim/models/device_components.py +++ b/netbox/dcim/models/device_components.py @@ -16,7 +16,6 @@ from netbox.models import PrimaryModel from utilities.fields import ColorField, NaturalOrderingField from utilities.mptt import TreeManager from utilities.ordering import naturalize_interface -from utilities.querysets import RestrictedQuerySet from utilities.query_functions import CollateAsChar from wireless.choices import * from wireless.utils import get_channel_attr @@ -65,8 +64,6 @@ class ComponentModel(PrimaryModel): blank=True ) - objects = RestrictedQuerySet.as_manager() - class Meta: abstract = True diff --git a/netbox/dcim/models/devices.py b/netbox/dcim/models/devices.py index 418944a4a..7039f6cdd 100644 --- a/netbox/dcim/models/devices.py +++ b/netbox/dcim/models/devices.py @@ -18,7 +18,6 @@ from netbox.config import ConfigItem from netbox.models import OrganizationalModel, PrimaryModel from utilities.choices import ColorChoices from utilities.fields import ColorField, NaturalOrderingField -from utilities.querysets import RestrictedQuerySet from .device_components import * @@ -59,8 +58,6 @@ class Manufacturer(OrganizationalModel): to='tenancy.ContactAssignment' ) - objects = RestrictedQuerySet.as_manager() - class Meta: ordering = ['name'] @@ -137,8 +134,6 @@ class DeviceType(PrimaryModel): blank=True ) - objects = RestrictedQuerySet.as_manager() - clone_fields = [ 'manufacturer', 'u_height', 'is_full_depth', 'subdevice_role', 'airflow', ] @@ -379,8 +374,6 @@ class DeviceRole(OrganizationalModel): blank=True, ) - objects = RestrictedQuerySet.as_manager() - class Meta: ordering = ['name'] @@ -431,8 +424,6 @@ class Platform(OrganizationalModel): blank=True ) - objects = RestrictedQuerySet.as_manager() - class Meta: ordering = ['name'] @@ -896,8 +887,6 @@ class VirtualChassis(PrimaryModel): blank=True ) - objects = RestrictedQuerySet.as_manager() - class Meta: ordering = ['name'] verbose_name_plural = 'virtual chassis' diff --git a/netbox/dcim/models/power.py b/netbox/dcim/models/power.py index 30e11b342..b5d8d4c83 100644 --- a/netbox/dcim/models/power.py +++ b/netbox/dcim/models/power.py @@ -8,7 +8,6 @@ from dcim.choices import * from dcim.constants import * from extras.utils import extras_features from netbox.models import PrimaryModel -from utilities.querysets import RestrictedQuerySet from utilities.validators import ExclusionValidator from .device_components import LinkTermination, PathEndpoint @@ -49,8 +48,6 @@ class PowerPanel(PrimaryModel): to='extras.ImageAttachment' ) - objects = RestrictedQuerySet.as_manager() - class Meta: ordering = ['site', 'name'] unique_together = ['site', 'name'] @@ -131,8 +128,6 @@ class PowerFeed(PrimaryModel, PathEndpoint, LinkTermination): blank=True ) - objects = RestrictedQuerySet.as_manager() - clone_fields = [ 'power_panel', 'rack', 'status', 'type', 'mark_connected', 'supply', 'phase', 'voltage', 'amperage', 'max_utilization', 'available_power', diff --git a/netbox/dcim/models/racks.py b/netbox/dcim/models/racks.py index 0bc28acaa..082ecfe57 100644 --- a/netbox/dcim/models/racks.py +++ b/netbox/dcim/models/racks.py @@ -18,7 +18,6 @@ from netbox.config import get_config from netbox.models import OrganizationalModel, PrimaryModel from utilities.choices import ColorChoices from utilities.fields import ColorField, NaturalOrderingField -from utilities.querysets import RestrictedQuerySet from utilities.utils import array_to_string from .device_components import PowerOutlet, PowerPort from .devices import Device @@ -56,8 +55,6 @@ class RackRole(OrganizationalModel): blank=True, ) - objects = RestrictedQuerySet.as_manager() - class Meta: ordering = ['name'] @@ -190,8 +187,6 @@ class Rack(PrimaryModel): to='extras.ImageAttachment' ) - objects = RestrictedQuerySet.as_manager() - clone_fields = [ 'site', 'location', 'tenant', 'status', 'role', 'type', 'width', 'u_height', 'desc_units', 'outer_width', 'outer_depth', 'outer_unit', @@ -471,8 +466,6 @@ class RackReservation(PrimaryModel): max_length=200 ) - objects = RestrictedQuerySet.as_manager() - class Meta: ordering = ['created', 'pk'] diff --git a/netbox/dcim/models/sites.py b/netbox/dcim/models/sites.py index 79f8921d5..fd40b30c4 100644 --- a/netbox/dcim/models/sites.py +++ b/netbox/dcim/models/sites.py @@ -11,7 +11,6 @@ from dcim.fields import ASNField from extras.utils import extras_features from netbox.models import NestedGroupModel, PrimaryModel from utilities.fields import NaturalOrderingField -from utilities.querysets import RestrictedQuerySet __all__ = ( 'Location', @@ -259,8 +258,6 @@ class Site(PrimaryModel): to='extras.ImageAttachment' ) - objects = RestrictedQuerySet.as_manager() - clone_fields = [ 'status', 'region', 'group', 'tenant', 'facility', 'asn', 'time_zone', 'description', 'physical_address', 'shipping_address', 'latitude', 'longitude', 'contact_name', 'contact_phone', 'contact_email', diff --git a/netbox/extras/models/models.py b/netbox/extras/models/models.py index fc2662826..5d4379d6a 100644 --- a/netbox/extras/models/models.py +++ b/netbox/extras/models/models.py @@ -125,8 +125,6 @@ class Webhook(ChangeLoggedModel): 'Leave blank to use the system defaults.' ) - objects = RestrictedQuerySet.as_manager() - class Meta: ordering = ('name',) unique_together = ('payload_url', 'type_create', 'type_update', 'type_delete',) @@ -222,8 +220,6 @@ class CustomLink(ChangeLoggedModel): help_text="Force link to open in a new window" ) - objects = RestrictedQuerySet.as_manager() - class Meta: ordering = ['group_name', 'weight', 'name'] @@ -268,8 +264,6 @@ class ExportTemplate(ChangeLoggedModel): help_text="Download file as attachment" ) - objects = RestrictedQuerySet.as_manager() - class Meta: ordering = ['content_type', 'name'] unique_together = [ @@ -429,8 +423,6 @@ class JournalEntry(ChangeLoggedModel): ) comments = models.TextField() - objects = RestrictedQuerySet.as_manager() - class Meta: ordering = ('-created',) verbose_name_plural = 'journal entries' diff --git a/netbox/extras/models/tags.py b/netbox/extras/models/tags.py index afeeee53d..e5e740eb5 100644 --- a/netbox/extras/models/tags.py +++ b/netbox/extras/models/tags.py @@ -7,7 +7,6 @@ from extras.utils import extras_features from netbox.models import BigIDModel, ChangeLoggedModel from utilities.choices import ColorChoices from utilities.fields import ColorField -from utilities.querysets import RestrictedQuerySet # @@ -24,8 +23,6 @@ class Tag(ChangeLoggedModel, TagBase): blank=True, ) - objects = RestrictedQuerySet.as_manager() - class Meta: ordering = ['name'] diff --git a/netbox/ipam/models/fhrp.py b/netbox/ipam/models/fhrp.py index 42ba8d84d..0176b2f71 100644 --- a/netbox/ipam/models/fhrp.py +++ b/netbox/ipam/models/fhrp.py @@ -8,7 +8,6 @@ from extras.utils import extras_features from netbox.models import ChangeLoggedModel, PrimaryModel from ipam.choices import * from ipam.constants import * -from utilities.querysets import RestrictedQuerySet __all__ = ( 'FHRPGroup', @@ -50,8 +49,6 @@ class FHRPGroup(PrimaryModel): related_query_name='fhrpgroup' ) - objects = RestrictedQuerySet.as_manager() - clone_fields = ('protocol', 'auth_type', 'auth_key') class Meta: @@ -87,8 +84,6 @@ class FHRPGroupAssignment(ChangeLoggedModel): ) ) - objects = RestrictedQuerySet.as_manager() - clone_fields = ('interface_type', 'interface_id') class Meta: diff --git a/netbox/ipam/models/ip.py b/netbox/ipam/models/ip.py index b6c0a1b6b..c361acd01 100644 --- a/netbox/ipam/models/ip.py +++ b/netbox/ipam/models/ip.py @@ -18,7 +18,6 @@ from ipam.managers import IPAddressManager from ipam.querysets import PrefixQuerySet from ipam.validators import DNSValidator from netbox.config import get_config -from utilities.querysets import RestrictedQuerySet from virtualization.models import VirtualMachine @@ -57,8 +56,6 @@ class RIR(OrganizationalModel): blank=True ) - objects = RestrictedQuerySet.as_manager() - class Meta: ordering = ['name'] verbose_name = 'RIR' @@ -100,8 +97,6 @@ class ASN(PrimaryModel): null=True ) - objects = RestrictedQuerySet.as_manager() - class Meta: ordering = ['asn'] verbose_name = 'ASN' @@ -143,8 +138,6 @@ class Aggregate(PrimaryModel): blank=True ) - objects = RestrictedQuerySet.as_manager() - clone_fields = [ 'rir', 'tenant', 'date_added', 'description', ] @@ -235,8 +228,6 @@ class Role(OrganizationalModel): blank=True, ) - objects = RestrictedQuerySet.as_manager() - class Meta: ordering = ['weight', 'name'] @@ -592,8 +583,6 @@ class IPRange(PrimaryModel): blank=True ) - objects = RestrictedQuerySet.as_manager() - clone_fields = [ 'vrf', 'tenant', 'status', 'role', 'description', ] diff --git a/netbox/ipam/models/services.py b/netbox/ipam/models/services.py index 9efe7fed7..5c1ebb9dd 100644 --- a/netbox/ipam/models/services.py +++ b/netbox/ipam/models/services.py @@ -8,7 +8,6 @@ from extras.utils import extras_features from ipam.choices import * from ipam.constants import * from netbox.models import PrimaryModel -from utilities.querysets import RestrictedQuerySet from utilities.utils import array_to_string @@ -65,8 +64,6 @@ class Service(PrimaryModel): blank=True ) - objects = RestrictedQuerySet.as_manager() - class Meta: ordering = ('protocol', 'ports', 'pk') # (protocol, port) may be non-unique diff --git a/netbox/ipam/models/vlans.py b/netbox/ipam/models/vlans.py index 14eaa7ccc..1c1691a62 100644 --- a/netbox/ipam/models/vlans.py +++ b/netbox/ipam/models/vlans.py @@ -11,7 +11,6 @@ from ipam.choices import * from ipam.constants import * from ipam.querysets import VLANQuerySet from netbox.models import OrganizationalModel, PrimaryModel -from utilities.querysets import RestrictedQuerySet from virtualization.models import VMInterface @@ -52,8 +51,6 @@ class VLANGroup(OrganizationalModel): blank=True ) - objects = RestrictedQuerySet.as_manager() - class Meta: ordering = ('name', 'pk') # Name may be non-unique unique_together = [ diff --git a/netbox/ipam/models/vrfs.py b/netbox/ipam/models/vrfs.py index c8e703520..11fab9c44 100644 --- a/netbox/ipam/models/vrfs.py +++ b/netbox/ipam/models/vrfs.py @@ -4,7 +4,6 @@ from django.urls import reverse from extras.utils import extras_features from ipam.constants import * from netbox.models import PrimaryModel -from utilities.querysets import RestrictedQuerySet __all__ = ( @@ -58,8 +57,6 @@ class VRF(PrimaryModel): blank=True ) - objects = RestrictedQuerySet.as_manager() - clone_fields = [ 'tenant', 'enforce_unique', 'description', ] @@ -100,8 +97,6 @@ class RouteTarget(PrimaryModel): null=True ) - objects = RestrictedQuerySet.as_manager() - class Meta: ordering = ['name'] diff --git a/netbox/netbox/models.py b/netbox/netbox/models.py index 9f3e00b66..091bae7bd 100644 --- a/netbox/netbox/models.py +++ b/netbox/netbox/models.py @@ -11,6 +11,7 @@ from taggit.managers import TaggableManager from extras.choices import ObjectChangeActionChoices from netbox.signals import post_clean from utilities.mptt import TreeManager +from utilities.querysets import RestrictedQuerySet from utilities.utils import serialize_object __all__ = ( @@ -169,6 +170,8 @@ class ChangeLoggedModel(ChangeLoggingMixin, CustomValidationMixin, BigIDModel): """ Base model for all objects which support change logging. """ + objects = RestrictedQuerySet.as_manager() + class Meta: abstract = True @@ -183,6 +186,8 @@ class PrimaryModel(ChangeLoggingMixin, CustomFieldsMixin, CustomValidationMixin, content_type_field='assigned_object_type' ) + objects = RestrictedQuerySet.as_manager() + class Meta: abstract = True @@ -251,6 +256,8 @@ class OrganizationalModel(ChangeLoggingMixin, CustomFieldsMixin, CustomValidatio blank=True ) + objects = RestrictedQuerySet.as_manager() + class Meta: abstract = True ordering = ('name',) diff --git a/netbox/tenancy/models/contacts.py b/netbox/tenancy/models/contacts.py index efc50c978..42a7ffe7d 100644 --- a/netbox/tenancy/models/contacts.py +++ b/netbox/tenancy/models/contacts.py @@ -7,7 +7,6 @@ from mptt.models import TreeForeignKey from extras.utils import extras_features from netbox.models import ChangeLoggedModel, NestedGroupModel, OrganizationalModel, PrimaryModel from tenancy.choices import * -from utilities.querysets import RestrictedQuerySet __all__ = ( 'ContactAssignment', @@ -69,8 +68,6 @@ class ContactRole(OrganizationalModel): blank=True, ) - objects = RestrictedQuerySet.as_manager() - class Meta: ordering = ['name'] @@ -115,8 +112,6 @@ class Contact(PrimaryModel): blank=True ) - objects = RestrictedQuerySet.as_manager() - clone_fields = [ 'group', ] @@ -161,8 +156,6 @@ class ContactAssignment(ChangeLoggedModel): blank=True ) - objects = RestrictedQuerySet.as_manager() - clone_fields = ('content_type', 'object_id') class Meta: diff --git a/netbox/tenancy/models/tenants.py b/netbox/tenancy/models/tenants.py index 7dae2c093..d480f9112 100644 --- a/netbox/tenancy/models/tenants.py +++ b/netbox/tenancy/models/tenants.py @@ -5,7 +5,6 @@ from mptt.models import TreeForeignKey from extras.utils import extras_features from netbox.models import NestedGroupModel, PrimaryModel -from utilities.querysets import RestrictedQuerySet __all__ = ( 'Tenant', @@ -80,8 +79,6 @@ class Tenant(PrimaryModel): to='tenancy.ContactAssignment' ) - objects = RestrictedQuerySet.as_manager() - clone_fields = [ 'group', 'description', ] diff --git a/netbox/virtualization/models.py b/netbox/virtualization/models.py index 08df36d4d..5a1bcd42f 100644 --- a/netbox/virtualization/models.py +++ b/netbox/virtualization/models.py @@ -13,7 +13,6 @@ from netbox.models import OrganizationalModel, PrimaryModel from utilities.fields import NaturalOrderingField from utilities.ordering import naturalize_interface from utilities.query_functions import CollateAsChar -from utilities.querysets import RestrictedQuerySet from .choices import * @@ -48,8 +47,6 @@ class ClusterType(OrganizationalModel): blank=True ) - objects = RestrictedQuerySet.as_manager() - class Meta: ordering = ['name'] @@ -93,8 +90,6 @@ class ClusterGroup(OrganizationalModel): to='tenancy.ContactAssignment' ) - objects = RestrictedQuerySet.as_manager() - class Meta: ordering = ['name'] @@ -158,8 +153,6 @@ class Cluster(PrimaryModel): to='tenancy.ContactAssignment' ) - objects = RestrictedQuerySet.as_manager() - clone_fields = [ 'type', 'group', 'tenant', 'site', ] @@ -405,8 +398,6 @@ class VMInterface(PrimaryModel, BaseInterface): related_query_name='+' ) - objects = RestrictedQuerySet.as_manager() - class Meta: verbose_name = 'interface' ordering = ('virtual_machine', CollateAsChar('_name')) diff --git a/netbox/wireless/models.py b/netbox/wireless/models.py index 45a7881b7..4d6d26a92 100644 --- a/netbox/wireless/models.py +++ b/netbox/wireless/models.py @@ -7,7 +7,6 @@ from dcim.choices import LinkStatusChoices from dcim.constants import WIRELESS_IFACE_TYPES from extras.utils import extras_features from netbox.models import BigIDModel, NestedGroupModel, PrimaryModel -from utilities.querysets import RestrictedQuerySet from .choices import * from .constants import * @@ -109,8 +108,6 @@ class WirelessLAN(WirelessAuthenticationBase, PrimaryModel): blank=True ) - objects = RestrictedQuerySet.as_manager() - class Meta: ordering = ('ssid', 'pk') verbose_name = 'Wireless LAN' @@ -171,8 +168,6 @@ class WirelessLink(WirelessAuthenticationBase, PrimaryModel): null=True ) - objects = RestrictedQuerySet.as_manager() - clone_fields = ('ssid', 'status') class Meta: From a7990942276f125694e7fa33f6d5c58925574aee Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Thu, 11 Nov 2021 15:38:34 -0500 Subject: [PATCH 209/289] Fixes #7788: Improve XSS mitigation in Markdown renderer --- docs/release-notes/version-3.0.md | 1 + netbox/utilities/templatetags/helpers.py | 9 +++++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/docs/release-notes/version-3.0.md b/docs/release-notes/version-3.0.md index 366f0bca0..5ba2ac35f 100644 --- a/docs/release-notes/version-3.0.md +++ b/docs/release-notes/version-3.0.md @@ -17,6 +17,7 @@ * [#7766](https://github.com/netbox-community/netbox/issues/7766) - Add missing outer dimension columns to rack table * [#7780](https://github.com/netbox-community/netbox/issues/7780) - Preserve multi-line values during CSV file import * [#7783](https://github.com/netbox-community/netbox/issues/7783) - Fix indentation of locations under site view +* [#7788](https://github.com/netbox-community/netbox/issues/7788) - Improve XSS mitigation in Markdown renderer * [#7791](https://github.com/netbox-community/netbox/issues/7791) - Enable sorting device bays table by installed device status * [#7802](https://github.com/netbox-community/netbox/issues/7802) - Differentiate ID and VID columns in VLANs table diff --git a/netbox/utilities/templatetags/helpers.py b/netbox/utilities/templatetags/helpers.py index 5b5534321..b047bb698 100644 --- a/netbox/utilities/templatetags/helpers.py +++ b/netbox/utilities/templatetags/helpers.py @@ -40,14 +40,19 @@ def render_markdown(value): """ Render text as Markdown """ + schemes = '|'.join(settings.ALLOWED_URL_SCHEMES) + # Strip HTML tags value = strip_tags(value) # Sanitize Markdown links - schemes = '|'.join(settings.ALLOWED_URL_SCHEMES) - pattern = fr'\[(.+)\]\((?!({schemes})).*:(.+)\)' + pattern = fr'\[([^\]]+)\]\((?!({schemes})).*:(.+)\)' value = re.sub(pattern, '[\\1](\\3)', value, flags=re.IGNORECASE) + # Sanitize Markdown reference links + pattern = fr'\[(.+)\]:\w?(?!({schemes})).*:(.+)' + value = re.sub(pattern, '[\\1]: \\3', value, flags=re.IGNORECASE) + # Render Markdown html = markdown(value, extensions=['fenced_code', 'tables']) From 0b705553a565edbd03c808fc8376f109b2c653fb Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Thu, 11 Nov 2021 16:16:54 -0500 Subject: [PATCH 210/289] Fixes #7809: Add missing export template support for various models --- docs/release-notes/version-3.0.md | 1 + netbox/extras/forms/models.py | 2 +- netbox/extras/models/customfields.py | 2 +- netbox/extras/models/models.py | 8 ++++---- netbox/extras/models/tags.py | 2 +- 5 files changed, 8 insertions(+), 7 deletions(-) diff --git a/docs/release-notes/version-3.0.md b/docs/release-notes/version-3.0.md index 5ba2ac35f..27c8fffad 100644 --- a/docs/release-notes/version-3.0.md +++ b/docs/release-notes/version-3.0.md @@ -20,6 +20,7 @@ * [#7788](https://github.com/netbox-community/netbox/issues/7788) - Improve XSS mitigation in Markdown renderer * [#7791](https://github.com/netbox-community/netbox/issues/7791) - Enable sorting device bays table by installed device status * [#7802](https://github.com/netbox-community/netbox/issues/7802) - Differentiate ID and VID columns in VLANs table +* [#7809](https://github.com/netbox-community/netbox/issues/7809) - Add missing export template support for various models --- diff --git a/netbox/extras/forms/models.py b/netbox/extras/forms/models.py index 7e462e62b..61c341334 100644 --- a/netbox/extras/forms/models.py +++ b/netbox/extras/forms/models.py @@ -70,7 +70,7 @@ class CustomLinkForm(BootstrapMixin, forms.ModelForm): class ExportTemplateForm(BootstrapMixin, forms.ModelForm): content_type = ContentTypeChoiceField( queryset=ContentType.objects.all(), - limit_choices_to=FeatureQuery('custom_links') + limit_choices_to=FeatureQuery('export_templates') ) class Meta: diff --git a/netbox/extras/models/customfields.py b/netbox/extras/models/customfields.py index c74bb0cde..245079863 100644 --- a/netbox/extras/models/customfields.py +++ b/netbox/extras/models/customfields.py @@ -31,7 +31,7 @@ class CustomFieldManager(models.Manager.from_queryset(RestrictedQuerySet)): return self.get_queryset().filter(content_types=content_type) -@extras_features('webhooks') +@extras_features('webhooks', 'export_templates') class CustomField(ChangeLoggedModel): content_types = models.ManyToManyField( to=ContentType, diff --git a/netbox/extras/models/models.py b/netbox/extras/models/models.py index 2c56f2f0f..1b20cc79c 100644 --- a/netbox/extras/models/models.py +++ b/netbox/extras/models/models.py @@ -9,7 +9,7 @@ from django.db import models from django.http import HttpResponse from django.urls import reverse from django.utils import timezone -from django.utils.formats import date_format, time_format +from django.utils.formats import date_format from rest_framework.utils.encoders import JSONEncoder from extras.choices import * @@ -36,7 +36,7 @@ __all__ = ( # Webhooks # -@extras_features('webhooks') +@extras_features('webhooks', 'export_templates') class Webhook(ChangeLoggedModel): """ A Webhook defines a request that will be sent to a remote application when an object is created, updated, and/or @@ -175,7 +175,7 @@ class Webhook(ChangeLoggedModel): # Custom links # -@extras_features('webhooks') +@extras_features('webhooks', 'export_templates') class CustomLink(ChangeLoggedModel): """ A custom link to an external representation of a NetBox object. The link text and URL fields accept Jinja2 template @@ -234,7 +234,7 @@ class CustomLink(ChangeLoggedModel): # Export templates # -@extras_features('webhooks') +@extras_features('webhooks', 'export_templates') class ExportTemplate(ChangeLoggedModel): content_type = models.ForeignKey( to=ContentType, diff --git a/netbox/extras/models/tags.py b/netbox/extras/models/tags.py index afeeee53d..da2016875 100644 --- a/netbox/extras/models/tags.py +++ b/netbox/extras/models/tags.py @@ -14,7 +14,7 @@ from utilities.querysets import RestrictedQuerySet # Tags # -@extras_features('webhooks') +@extras_features('webhooks', 'export_templates') class Tag(ChangeLoggedModel, TagBase): color = ColorField( default=ColorChoices.COLOR_GREY From 9f8068e8d12da7ac9399e622fa2c4ec5d74fe452 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Thu, 11 Nov 2021 16:21:27 -0500 Subject: [PATCH 211/289] Fixes #7808: Fix reference values for content type under custom field import form --- docs/release-notes/version-3.0.md | 1 + netbox/utilities/forms/fields.py | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/release-notes/version-3.0.md b/docs/release-notes/version-3.0.md index 27c8fffad..03a4d3a59 100644 --- a/docs/release-notes/version-3.0.md +++ b/docs/release-notes/version-3.0.md @@ -20,6 +20,7 @@ * [#7788](https://github.com/netbox-community/netbox/issues/7788) - Improve XSS mitigation in Markdown renderer * [#7791](https://github.com/netbox-community/netbox/issues/7791) - Enable sorting device bays table by installed device status * [#7802](https://github.com/netbox-community/netbox/issues/7802) - Differentiate ID and VID columns in VLANs table +* [#7808](https://github.com/netbox-community/netbox/issues/7808) - Fix reference values for content type under custom field import form * [#7809](https://github.com/netbox-community/netbox/issues/7809) - Add missing export template support for various models --- diff --git a/netbox/utilities/forms/fields.py b/netbox/utilities/forms/fields.py index d9f1719ec..bca293b0b 100644 --- a/netbox/utilities/forms/fields.py +++ b/netbox/utilities/forms/fields.py @@ -304,7 +304,7 @@ class CSVMultipleContentTypeField(forms.ModelMultipleChoiceField): app_label, model = name.split('.') ct_filter |= Q(app_label=app_label, model=model) return list(ContentType.objects.filter(ct_filter).values_list('pk', flat=True)) - return super().prepare_value(value) + return f'{value.app_label}.{value.model}' # From daf6c8e327ff3128449a3add684a76bd7fef4268 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Fri, 12 Nov 2021 08:23:58 -0500 Subject: [PATCH 212/289] Fixes #7814: Fix restriction of user & group objects in GraphQL API queries --- docs/release-notes/version-3.0.md | 1 + netbox/users/graphql/types.py | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/release-notes/version-3.0.md b/docs/release-notes/version-3.0.md index 03a4d3a59..324cda952 100644 --- a/docs/release-notes/version-3.0.md +++ b/docs/release-notes/version-3.0.md @@ -22,6 +22,7 @@ * [#7802](https://github.com/netbox-community/netbox/issues/7802) - Differentiate ID and VID columns in VLANs table * [#7808](https://github.com/netbox-community/netbox/issues/7808) - Fix reference values for content type under custom field import form * [#7809](https://github.com/netbox-community/netbox/issues/7809) - Add missing export template support for various models +* [#7814](https://github.com/netbox-community/netbox/issues/7814) - Fix restriction of user & group objects in GraphQL API queries --- diff --git a/netbox/users/graphql/types.py b/netbox/users/graphql/types.py index 3315744b9..d948686c6 100644 --- a/netbox/users/graphql/types.py +++ b/netbox/users/graphql/types.py @@ -19,7 +19,7 @@ class GroupType(DjangoObjectType): @classmethod def get_queryset(cls, queryset, info): - return RestrictedQuerySet(model=Group) + return RestrictedQuerySet(model=Group).restrict(info.context.user, 'view') class UserType(DjangoObjectType): @@ -34,4 +34,4 @@ class UserType(DjangoObjectType): @classmethod def get_queryset(cls, queryset, info): - return RestrictedQuerySet(model=User) + return RestrictedQuerySet(model=User).restrict(info.context.user, 'view') From 49e77841e06f47f29294c9b69dca97c87285a2d7 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Fri, 12 Nov 2021 08:36:33 -0500 Subject: [PATCH 213/289] Release v3.0.10 --- .github/ISSUE_TEMPLATE/bug_report.yaml | 2 +- .github/ISSUE_TEMPLATE/feature_request.yaml | 2 +- docs/release-notes/version-3.0.md | 2 +- netbox/netbox/settings.py | 2 +- requirements.txt | 4 ++-- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.yaml b/.github/ISSUE_TEMPLATE/bug_report.yaml index fa773eb13..79fb0e334 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yaml +++ b/.github/ISSUE_TEMPLATE/bug_report.yaml @@ -14,7 +14,7 @@ body: attributes: label: NetBox version description: What version of NetBox are you currently running? - placeholder: v3.0.9 + placeholder: v3.0.10 validations: required: true - type: dropdown diff --git a/.github/ISSUE_TEMPLATE/feature_request.yaml b/.github/ISSUE_TEMPLATE/feature_request.yaml index a6fc342be..76944eecb 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.yaml +++ b/.github/ISSUE_TEMPLATE/feature_request.yaml @@ -14,7 +14,7 @@ body: attributes: label: NetBox version description: What version of NetBox are you currently running? - placeholder: v3.0.9 + placeholder: v3.0.10 validations: required: true - type: dropdown diff --git a/docs/release-notes/version-3.0.md b/docs/release-notes/version-3.0.md index 324cda952..4c263e78f 100644 --- a/docs/release-notes/version-3.0.md +++ b/docs/release-notes/version-3.0.md @@ -1,6 +1,6 @@ # NetBox v3.0 -## v3.0.10 (FUTURE) +## v3.0.10 (2021-11-12) ### Enhancements diff --git a/netbox/netbox/settings.py b/netbox/netbox/settings.py index b0c996141..83655d0c5 100644 --- a/netbox/netbox/settings.py +++ b/netbox/netbox/settings.py @@ -17,7 +17,7 @@ from django.core.validators import URLValidator # Environment setup # -VERSION = '3.0.10-dev' +VERSION = '3.0.10' # Hostname HOSTNAME = platform.node() diff --git a/requirements.txt b/requirements.txt index c537a39c3..84ad0c398 100644 --- a/requirements.txt +++ b/requirements.txt @@ -15,13 +15,13 @@ djangorestframework==3.12.4 drf-yasg[validation]==1.20.0 graphene_django==2.15.0 gunicorn==20.1.0 -Jinja2==3.0.2 +Jinja2==3.0.3 Markdown==3.3.4 markdown-include==0.6.0 mkdocs-material==7.3.6 netaddr==0.8.0 Pillow==8.4.0 -psycopg2-binary==2.9.1 +psycopg2-binary==2.9.2 PyYAML==6.0 svgwrite==1.4.1 tablib==3.1.0 From c0ca1eaf9044ace9d4b7933d6ff75a9d53e55bb1 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Fri, 12 Nov 2021 08:54:08 -0500 Subject: [PATCH 214/289] PRVB --- docs/release-notes/version-3.0.md | 4 ++++ netbox/netbox/settings.py | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/docs/release-notes/version-3.0.md b/docs/release-notes/version-3.0.md index 4c263e78f..4e7ead79c 100644 --- a/docs/release-notes/version-3.0.md +++ b/docs/release-notes/version-3.0.md @@ -1,5 +1,9 @@ # NetBox v3.0 +## v3.0.11 (FUTURE) + +--- + ## v3.0.10 (2021-11-12) ### Enhancements diff --git a/netbox/netbox/settings.py b/netbox/netbox/settings.py index 83655d0c5..b7886b23c 100644 --- a/netbox/netbox/settings.py +++ b/netbox/netbox/settings.py @@ -17,7 +17,7 @@ from django.core.validators import URLValidator # Environment setup # -VERSION = '3.0.10' +VERSION = '3.0.11-dev' # Hostname HOSTNAME = platform.node() From 500f213c6b8b85d6a994fa5f396712edf9c458f6 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Fri, 12 Nov 2021 09:29:55 -0500 Subject: [PATCH 215/289] Fix erroneous merge resolution --- netbox/utilities/templatetags/helpers.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/netbox/utilities/templatetags/helpers.py b/netbox/utilities/templatetags/helpers.py index cc60b0ec0..9499845b6 100644 --- a/netbox/utilities/templatetags/helpers.py +++ b/netbox/utilities/templatetags/helpers.py @@ -15,6 +15,7 @@ from django.utils.html import strip_tags from django.utils.safestring import mark_safe from markdown import markdown +from netbox.config import get_config from utilities.forms import get_selected_values, TableConfigForm from utilities.utils import foreground_color @@ -41,7 +42,7 @@ def render_markdown(value): """ Render text as Markdown """ - schemes = '|'.join(settings.ALLOWED_URL_SCHEMES) + schemes = '|'.join(get_config().ALLOWED_URL_SCHEMES) # Strip HTML tags value = strip_tags(value) From 8aa73c59009a1936f40123dd46696d3776a6048c Mon Sep 17 00:00:00 2001 From: Flo <52775027+FloEisen@users.noreply.github.com> Date: Fri, 12 Nov 2021 16:05:42 +0100 Subject: [PATCH 216/289] Add IEEE 802.15.1 Interface Type --- netbox/dcim/choices.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/netbox/dcim/choices.py b/netbox/dcim/choices.py index 5a732fa8d..d3cdbdf8f 100644 --- a/netbox/dcim/choices.py +++ b/netbox/dcim/choices.py @@ -739,6 +739,7 @@ class InterfaceTypeChoices(ChoiceSet): TYPE_80211AC = 'ieee802.11ac' TYPE_80211AD = 'ieee802.11ad' TYPE_80211AX = 'ieee802.11ax' + TYPE_802151 = 'ieee802.15.1' # Cellular TYPE_GSM = 'gsm' @@ -850,6 +851,7 @@ class InterfaceTypeChoices(ChoiceSet): (TYPE_80211AC, 'IEEE 802.11ac'), (TYPE_80211AD, 'IEEE 802.11ad'), (TYPE_80211AX, 'IEEE 802.11ax'), + (TYPE_802151, 'IEEE 802.15.1 (Bluetooth)'), ) ), ( From 17e01644f5ff6d55a18f5f308058cd3258b7f6c0 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Fri, 12 Nov 2021 13:32:52 -0500 Subject: [PATCH 217/289] Fixes #7813: Fix handling of errors during export template rendering --- docs/release-notes/version-3.0.md | 4 ++ netbox/netbox/views/generic.py | 66 ++++++++++++++++++------------- 2 files changed, 42 insertions(+), 28 deletions(-) diff --git a/docs/release-notes/version-3.0.md b/docs/release-notes/version-3.0.md index 4e7ead79c..e6217f967 100644 --- a/docs/release-notes/version-3.0.md +++ b/docs/release-notes/version-3.0.md @@ -2,6 +2,10 @@ ## v3.0.11 (FUTURE) +### Bug Fixes + +* [#7813](https://github.com/netbox-community/netbox/issues/7813) - Fix handling of errors during export template rendering + --- ## v3.0.10 (2021-11-12) diff --git a/netbox/netbox/views/generic.py b/netbox/netbox/views/generic.py index 44e83f5ec..1c2ff9917 100644 --- a/netbox/netbox/views/generic.py +++ b/netbox/netbox/views/generic.py @@ -93,6 +93,13 @@ class ObjectListView(ObjectPermissionRequiredMixin, View): def get_required_permission(self): return get_permission_for_model(self.queryset.model, 'view') + def get_table(self, request, permissions): + table = self.table(self.queryset, user=request.user) + if 'pk' in table.base_columns and (permissions['change'] or permissions['delete']): + table.columns.show('pk') + + return table + def export_yaml(self): """ Export the queryset of objects as concatenated YAML documents. @@ -123,8 +130,20 @@ class ObjectListView(ObjectPermissionRequiredMixin, View): filename=f'netbox_{self.queryset.model._meta.verbose_name_plural}.csv' ) - def get(self, request): + def export_template(self, template, request): + """ + Render an ExportTemplate using the current queryset. + :param template: ExportTemplate instance + :param request: The current request + """ + try: + return template.render_to_response(self.queryset) + except Exception as e: + messages.error(request, f"There was an error rendering the selected export template ({template.name}): {e}") + return redirect(request.path) + + def get(self, request): model = self.queryset.model content_type = ContentType.objects.get_for_model(model) @@ -137,42 +156,33 @@ class ObjectListView(ObjectPermissionRequiredMixin, View): perm_name = get_permission_for_model(model, action) permissions[action] = request.user.has_perm(perm_name) - # Export template/YAML rendering - if 'export' in request.GET and request.GET['export'] != 'table': + if 'export' in request.GET: - # An export template has been specified - if request.GET['export']: - et = get_object_or_404(ExportTemplate, content_type=content_type, name=request.GET['export']) - try: - return et.render_to_response(self.queryset) - except Exception as e: - messages.error( - request, - "There was an error rendering the selected export template ({}): {}".format( - et.name, e - ) - ) + # Export the current table view + if request.GET['export'] == 'table': + table = self.get_table(request, permissions) + columns = [name for name, _ in table.selected_columns] + return self.export_table(table, columns) - # Check for YAML export support + # Render an ExportTemplate + elif request.GET['export']: + template = get_object_or_404(ExportTemplate, content_type=content_type, name=request.GET['export']) + return self.export_template(template, request) + + # Check for YAML export support on the model elif hasattr(model, 'to_yaml'): response = HttpResponse(self.export_yaml(), content_type='text/yaml') filename = 'netbox_{}.yaml'.format(self.queryset.model._meta.verbose_name_plural) response['Content-Disposition'] = 'attachment; filename="{}"'.format(filename) return response - # Construct the objects table - table = self.table(self.queryset, user=request.user) - if 'pk' in table.base_columns and (permissions['change'] or permissions['delete']): - table.columns.show('pk') + # Fall back to default table/YAML export + else: + table = self.get_table(request, permissions) + return self.export_table(table) - # Handle table-based exports (current view or static CSV-based) - if request.GET.get('export') == 'table': - columns = [name for name, _ in table.selected_columns] - return self.export_table(table, columns) - elif 'export' in request.GET: - return self.export_table(table) - - # Paginate the objects table + # Render the objects table + table = self.get_table(request, permissions) paginate_table(table, request) context = { From bb99c3e6f9247d85f9f81e43e9d5505c6ddee1ee Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Fri, 12 Nov 2021 13:46:06 -0500 Subject: [PATCH 218/289] Changelog for #7803, #7810 --- docs/release-notes/version-3.0.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/docs/release-notes/version-3.0.md b/docs/release-notes/version-3.0.md index e6217f967..de2ae3f74 100644 --- a/docs/release-notes/version-3.0.md +++ b/docs/release-notes/version-3.0.md @@ -2,6 +2,11 @@ ## v3.0.11 (FUTURE) +### Enhancements + +* [#7803](https://github.com/netbox-community/netbox/issues/7803) - Improve live reloading of custom scripts +* [#7810](https://github.com/netbox-community/netbox/issues/7810) - Add IEEE 802.15.1 interface type + ### Bug Fixes * [#7813](https://github.com/netbox-community/netbox/issues/7813) - Fix handling of errors during export template rendering From 1fed564c477e220e2b5acc19e30becf850e74e03 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Fri, 12 Nov 2021 14:44:14 -0500 Subject: [PATCH 219/289] Clean up script & report lists --- netbox/templates/extras/report_list.html | 190 +++++++++++------------ netbox/templates/extras/script_list.html | 130 ++++++++-------- 2 files changed, 149 insertions(+), 171 deletions(-) diff --git a/netbox/templates/extras/report_list.html b/netbox/templates/extras/report_list.html index 498e56b8d..99d6da730 100644 --- a/netbox/templates/extras/report_list.html +++ b/netbox/templates/extras/report_list.html @@ -3,108 +3,94 @@ {% block title %}Reports{% endblock %} -{% block content %} -
-
- {% if reports %} - {% for module, module_reports in reports %} -
-
{{ module|bettertitle }}
-
- - - - - - - - - - - - {% for report in module_reports %} - - - - - - - - {% for method, stats in report.result.data.items %} - - - - - {% endfor %} - {% endfor %} - -
NameStatusDescriptionLast Run
- {{ report.name }} - - {% include 'extras/inc/job_label.html' with result=report.result %} - {{ report.description|render_markdown|placeholder }} - {% if report.result %} - {{ report.result.created|annotated_date }} - {% else %} - Never - {% endif %} - - {% if perms.extras.run_report %} -
-
- {% csrf_token %} - -
-
- {% endif %} -
- {{ method }} - - {{ stats.success }} - {{ stats.info }} - {{ stats.warning }} - {{ stats.failure }} -
+{% block tabs %} + +{% endblock tabs %} + +{% block content-wrapper %} +
+ {% if reports %} + {% for module, module_reports in reports %} +
+
+ + {{ module|bettertitle }} +
+
+ + + + + + + + + + + + {% for report in module_reports %} + + + + + + + + {% for method, stats in report.result.data.items %} + + + + + {% endfor %} {% endfor %} - {% else %} - - {% endif %} + +
NameStatusDescriptionLast Run
+ {{ report.name }} + + {% include 'extras/inc/job_label.html' with result=report.result %} + {{ report.description|render_markdown|placeholder }} + {% if report.result %} + {{ report.result.created|annotated_date }} + {% else %} + Never + {% endif %} + + {% if perms.extras.run_report %} +
+
+ {% csrf_token %} + +
- + {% endif %} +
+ {{ method }} + + {{ stats.success }} + {{ stats.info }} + {{ stats.warning }} + {{ stats.failure }} +
+
-
- {% if reports %} -
-
- {% for module, module_reports in reports %} -
{{ module|bettertitle }}
- - {% endfor %} -
-
- {% endif %} -
-
-{% endblock %} + {% endfor %} + {% else %} + + {% endif %} +
+{% endblock content-wrapper %} diff --git a/netbox/templates/extras/script_list.html b/netbox/templates/extras/script_list.html index 1cc35d36c..ccbdca705 100644 --- a/netbox/templates/extras/script_list.html +++ b/netbox/templates/extras/script_list.html @@ -3,74 +3,66 @@ {% block title %}Scripts{% endblock %} -{% block content %} -
-
- {% if scripts %} - {% for module, module_scripts in scripts.items %} -

{{ module|bettertitle }}

- - - - - - - - - - - {% for class_name, script in module_scripts.items %} - - - - - {% if script.result %} - - {% else %} - - {% endif %} - - {% endfor %} - -
NameStatusDescriptionLast Run
- {{ script }} - - {% include 'extras/inc/job_label.html' with result=script.result %} - {{ script.Meta.description|render_markdown }} - {{ script.result.created|annotated_date }} - Never
+{% block tabs %} + +{% endblock tabs %} + +{% block content-wrapper %} +
+ {% if scripts %} + {% for module, module_scripts in scripts.items %} +
+
+ + {{ module|bettertitle }} +
+
+ + + + + + + + + + + {% for class_name, script in module_scripts.items %} + + + + + {% if script.result %} + + {% else %} + + {% endif %} + {% endfor %} - {% else %} -
-

No Scripts Found

- Scripts should be saved to {{ settings.SCRIPTS_ROOT }}. -
- This path can be changed by setting SCRIPTS_ROOT in NetBox's configuration. -
- {% endif %} + +
NameStatusDescriptionLast Run
+ {{ script }} + + {% include 'extras/inc/job_label.html' with result=script.result %} + + {{ script.Meta.description|render_markdown|placeholder }} + + {{ script.result.created|annotated_date }} + Never
+
-
- {% if scripts %} -
-
- {% for module, module_scripts in scripts.items %} -
{{ module|bettertitle }}
-
- -
- {% endfor %} -
-
- {% endif %} -
-
-{% endblock %} + {% endfor %} + {% else %} +
+

No Scripts Found

+ Scripts should be saved to {{ settings.SCRIPTS_ROOT }}. +
+ This path can be changed by setting SCRIPTS_ROOT in NetBox's configuration. +
+ {% endif %} +
+{% endblock content-wrapper %} From f49d7008a0d7074e0211a753eeed81fd81b1a949 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Fri, 12 Nov 2021 15:05:33 -0500 Subject: [PATCH 220/289] Add q filters for connection lists --- netbox/dcim/filtersets.py | 13 +++++++++++++ netbox/dcim/forms/filtersets.py | 15 +++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/netbox/dcim/filtersets.py b/netbox/dcim/filtersets.py index df7f415e2..ba7ede783 100644 --- a/netbox/dcim/filtersets.py +++ b/netbox/dcim/filtersets.py @@ -1394,6 +1394,10 @@ class PowerFeedFilterSet(PrimaryModelFilterSet, CableTerminationFilterSet, PathE # class ConnectionFilterSet(BaseFilterSet): + q = django_filters.CharFilter( + method='search', + label='Search', + ) site_id = MultiValueNumberFilter( method='filter_connections', field_name='device__site_id' @@ -1416,6 +1420,15 @@ class ConnectionFilterSet(BaseFilterSet): return queryset return queryset.filter(**{f'{name}__in': value}) + def search(self, queryset, name, value): + if not value.strip(): + return queryset + qs_filter = ( + Q(device__name__icontains=value) | + Q(cable__label__icontains=value) + ) + return queryset.filter(qs_filter) + class ConsoleConnectionFilterSet(ConnectionFilterSet): diff --git a/netbox/dcim/forms/filtersets.py b/netbox/dcim/forms/filtersets.py index 4ef53c469..93299a17e 100644 --- a/netbox/dcim/forms/filtersets.py +++ b/netbox/dcim/forms/filtersets.py @@ -1068,6 +1068,11 @@ class InventoryItemFilterForm(DeviceComponentFilterForm): # class ConsoleConnectionFilterForm(BootstrapMixin, forms.Form): + q = forms.CharField( + required=False, + widget=forms.TextInput(attrs={'placeholder': _('All Fields')}), + label=_('Search') + ) region_id = DynamicModelMultipleChoiceField( queryset=Region.objects.all(), required=False, @@ -1095,6 +1100,11 @@ class ConsoleConnectionFilterForm(BootstrapMixin, forms.Form): class PowerConnectionFilterForm(BootstrapMixin, forms.Form): + q = forms.CharField( + required=False, + widget=forms.TextInput(attrs={'placeholder': _('All Fields')}), + label=_('Search') + ) region_id = DynamicModelMultipleChoiceField( queryset=Region.objects.all(), required=False, @@ -1122,6 +1132,11 @@ class PowerConnectionFilterForm(BootstrapMixin, forms.Form): class InterfaceConnectionFilterForm(BootstrapMixin, forms.Form): + q = forms.CharField( + required=False, + widget=forms.TextInput(attrs={'placeholder': _('All Fields')}), + label=_('Search') + ) region_id = DynamicModelMultipleChoiceField( queryset=Region.objects.all(), required=False, From 50f283cf28ae607731b314646707991d11014ae9 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Fri, 12 Nov 2021 15:17:44 -0500 Subject: [PATCH 221/289] Add q filter for extras models --- netbox/extras/filtersets.py | 60 +++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/netbox/extras/filtersets.py b/netbox/extras/filtersets.py index af8d904f4..1ed25cdac 100644 --- a/netbox/extras/filtersets.py +++ b/netbox/extras/filtersets.py @@ -35,6 +35,10 @@ EXACT_FILTER_TYPES = ( class WebhookFilterSet(BaseFilterSet): + q = django_filters.CharFilter( + method='search', + label='Search', + ) content_types = ContentTypeFilter() http_method = django_filters.MultipleChoiceFilter( choices=WebhookHttpMethodChoices @@ -47,30 +51,81 @@ class WebhookFilterSet(BaseFilterSet): 'http_method', 'http_content_type', 'secret', 'ssl_verification', 'ca_file_path', ] + def search(self, queryset, name, value): + if not value.strip(): + return queryset + return queryset.filter( + Q(name__icontains=value) | + Q(payload_url__icontains=value) + ) + class CustomFieldFilterSet(BaseFilterSet): + q = django_filters.CharFilter( + method='search', + label='Search', + ) content_types = ContentTypeFilter() class Meta: model = CustomField fields = ['id', 'content_types', 'name', 'required', 'filter_logic', 'weight'] + def search(self, queryset, name, value): + if not value.strip(): + return queryset + return queryset.filter( + Q(name__icontains=value) | + Q(label__icontains=value) | + Q(description__icontains=value) + ) + class CustomLinkFilterSet(BaseFilterSet): + q = django_filters.CharFilter( + method='search', + label='Search', + ) class Meta: model = CustomLink fields = ['id', 'content_type', 'name', 'link_text', 'link_url', 'weight', 'group_name', 'new_window'] + def search(self, queryset, name, value): + if not value.strip(): + return queryset + return queryset.filter( + Q(name__icontains=value) | + Q(link_text__icontains=value) | + Q(link_url__icontains=value) | + Q(group_name__icontains=value) + ) + class ExportTemplateFilterSet(BaseFilterSet): + q = django_filters.CharFilter( + method='search', + label='Search', + ) class Meta: model = ExportTemplate fields = ['id', 'content_type', 'name'] + def search(self, queryset, name, value): + if not value.strip(): + return queryset + return queryset.filter( + Q(name__icontains=value) | + Q(description__icontains=value) + ) + class ImageAttachmentFilterSet(BaseFilterSet): + q = django_filters.CharFilter( + method='search', + label='Search', + ) created = django_filters.DateTimeFilter() content_type = ContentTypeFilter() @@ -78,6 +133,11 @@ class ImageAttachmentFilterSet(BaseFilterSet): model = ImageAttachment fields = ['id', 'content_type_id', 'object_id', 'name'] + def search(self, queryset, name, value): + if not value.strip(): + return queryset + return queryset.filter(name__icontains=value) + class JournalEntryFilterSet(ChangeLoggedModelFilterSet): q = django_filters.CharFilter( From 467fa5a84757bb011515356ca498f7c9037dff55 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Fri, 12 Nov 2021 15:30:16 -0500 Subject: [PATCH 222/289] Add q filters for Token and ObjectPermission filter sets --- netbox/users/filtersets.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/netbox/users/filtersets.py b/netbox/users/filtersets.py index 80643c1e5..ad296ea25 100644 --- a/netbox/users/filtersets.py +++ b/netbox/users/filtersets.py @@ -99,8 +99,20 @@ class TokenFilterSet(BaseFilterSet): model = Token fields = ['id', 'key', 'write_enabled'] + def search(self, queryset, name, value): + if not value.strip(): + return queryset + return queryset.filter( + Q(user__username__icontains=value) | + Q(description__icontains=value) + ) + class ObjectPermissionFilterSet(BaseFilterSet): + q = django_filters.CharFilter( + method='search', + label='Search', + ) user_id = django_filters.ModelMultipleChoiceFilter( field_name='users', queryset=User.objects.all(), @@ -127,3 +139,11 @@ class ObjectPermissionFilterSet(BaseFilterSet): class Meta: model = ObjectPermission fields = ['id', 'name', 'enabled', 'object_types'] + + def search(self, queryset, name, value): + if not value.strip(): + return queryset + return queryset.filter( + Q(name__icontains=value) | + Q(description__icontains=value) + ) From f3beabba69c369fb4f53ac832150ce87c83e25c5 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Fri, 12 Nov 2021 15:33:49 -0500 Subject: [PATCH 223/289] Changelog for #2101 --- docs/release-notes/version-3.0.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/release-notes/version-3.0.md b/docs/release-notes/version-3.0.md index de2ae3f74..bb9a18c75 100644 --- a/docs/release-notes/version-3.0.md +++ b/docs/release-notes/version-3.0.md @@ -4,6 +4,7 @@ ### Enhancements +* [#2101](https://github.com/netbox-community/netbox/issues/2101) - Add missing `q` filters for necessary models * [#7803](https://github.com/netbox-community/netbox/issues/7803) - Improve live reloading of custom scripts * [#7810](https://github.com/netbox-community/netbox/issues/7810) - Add IEEE 802.15.1 interface type From fa8a8abc984faa62073fd06996c2dce436751bd2 Mon Sep 17 00:00:00 2001 From: Rhys Barrie Date: Sat, 13 Nov 2021 21:30:38 -0500 Subject: [PATCH 224/289] netbox-community/netbox#7424: Add virtual_chassis and virtual_chassis_id filter to device components --- netbox/dcim/filtersets.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/netbox/dcim/filtersets.py b/netbox/dcim/filtersets.py index ba7ede783..f7cf011ce 100644 --- a/netbox/dcim/filtersets.py +++ b/netbox/dcim/filtersets.py @@ -861,6 +861,17 @@ class DeviceComponentFilterSet(django_filters.FilterSet): to_field_name='name', label='Device (name)', ) + virtual_chassis_id = django_filters.ModelMultipleChoiceFilter( + field_name='device__virtual_chassis', + queryset=VirtualChassis.objects.all(), + label='Virtual Chassis (ID)' + ) + virtual_chassis = django_filters.ModelMultipleChoiceFilter( + field_name='device__virtual_chassis__name', + queryset=VirtualChassis.objects.all(), + to_field_name='name', + label='Virtual Chassis', + ) tag = TagFilter() def search(self, queryset, name, value): From 6b21c8453fc68cb6bb999f69fd52342759aed22c Mon Sep 17 00:00:00 2001 From: Rhys Barrie Date: Sat, 13 Nov 2021 21:33:52 -0500 Subject: [PATCH 225/289] netbox-community/netbox#7424: Add virtual_chassis field to device component filter form --- netbox/dcim/api/nested_serializers.py | 2 +- netbox/dcim/forms/filtersets.py | 24 +++++++++++++++--------- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/netbox/dcim/api/nested_serializers.py b/netbox/dcim/api/nested_serializers.py index 67ae9b046..1fdde78d7 100644 --- a/netbox/dcim/api/nested_serializers.py +++ b/netbox/dcim/api/nested_serializers.py @@ -340,7 +340,7 @@ class NestedVirtualChassisSerializer(WritableNestedSerializer): class Meta: model = models.VirtualChassis - fields = ['id', 'name', 'url', 'master', 'member_count'] + fields = ['id', 'url', 'display', 'name', 'master', 'member_count'] # diff --git a/netbox/dcim/forms/filtersets.py b/netbox/dcim/forms/filtersets.py index 93299a17e..6d76c4003 100644 --- a/netbox/dcim/forms/filtersets.py +++ b/netbox/dcim/forms/filtersets.py @@ -92,6 +92,12 @@ class DeviceComponentFilterForm(BootstrapMixin, CustomFieldModelFilterForm): label=_('Location'), fetch_trigger='open' ) + virtual_chassis_id = DynamicModelMultipleChoiceField( + queryset=VirtualChassis.objects.all(), + required=False, + label=_('Virtual Chassis'), + fetch_trigger='open' + ) device_id = DynamicModelMultipleChoiceField( queryset=Device.objects.all(), required=False, @@ -888,7 +894,7 @@ class ConsolePortFilterForm(DeviceComponentFilterForm): field_groups = [ ['q', 'tag'], ['name', 'label', 'type', 'speed'], - ['region_id', 'site_group_id', 'site_id', 'location_id', 'device_id'], + ['region_id', 'site_group_id', 'site_id', 'location_id', 'virtual_chassis_id', 'device_id'], ] type = forms.MultipleChoiceField( choices=ConsolePortTypeChoices, @@ -908,7 +914,7 @@ class ConsoleServerPortFilterForm(DeviceComponentFilterForm): field_groups = [ ['q', 'tag'], ['name', 'label', 'type', 'speed'], - ['region_id', 'site_group_id', 'site_id', 'location_id', 'device_id'], + ['region_id', 'site_group_id', 'site_id', 'location_id', 'virtual_chassis_id', 'device_id'], ] type = forms.MultipleChoiceField( choices=ConsolePortTypeChoices, @@ -928,7 +934,7 @@ class PowerPortFilterForm(DeviceComponentFilterForm): field_groups = [ ['q', 'tag'], ['name', 'label', 'type'], - ['region_id', 'site_group_id', 'site_id', 'location_id', 'device_id'], + ['region_id', 'site_group_id', 'site_id', 'location_id', 'virtual_chassis_id', 'device_id'], ] type = forms.MultipleChoiceField( choices=PowerPortTypeChoices, @@ -943,7 +949,7 @@ class PowerOutletFilterForm(DeviceComponentFilterForm): field_groups = [ ['q', 'tag'], ['name', 'label', 'type'], - ['region_id', 'site_group_id', 'site_id', 'location_id', 'device_id'], + ['region_id', 'site_group_id', 'site_id', 'location_id', 'virtual_chassis_id', 'device_id'], ] type = forms.MultipleChoiceField( choices=PowerOutletTypeChoices, @@ -958,7 +964,7 @@ class InterfaceFilterForm(DeviceComponentFilterForm): field_groups = [ ['q', 'tag'], ['name', 'label', 'kind', 'type', 'enabled', 'mgmt_only', 'mac_address'], - ['region_id', 'site_group_id', 'site_id', 'location_id', 'device_id'], + ['region_id', 'site_group_id', 'site_id', 'location_id', 'virtual_chassis_id', 'device_id'], ] kind = forms.MultipleChoiceField( choices=InterfaceKindChoices, @@ -993,7 +999,7 @@ class FrontPortFilterForm(DeviceComponentFilterForm): field_groups = [ ['q', 'tag'], ['name', 'label', 'type', 'color'], - ['region_id', 'site_group_id', 'site_id', 'location_id', 'device_id'], + ['region_id', 'site_group_id', 'site_id', 'location_id', 'virtual_chassis_id', 'device_id'], ] model = FrontPort type = forms.MultipleChoiceField( @@ -1012,7 +1018,7 @@ class RearPortFilterForm(DeviceComponentFilterForm): field_groups = [ ['q', 'tag'], ['name', 'label', 'type', 'color'], - ['region_id', 'site_group_id', 'site_id', 'location_id', 'device_id'], + ['region_id', 'site_group_id', 'site_id', 'location_id', 'virtual_chassis_id', 'device_id'], ] type = forms.MultipleChoiceField( choices=PortTypeChoices, @@ -1030,7 +1036,7 @@ class DeviceBayFilterForm(DeviceComponentFilterForm): field_groups = [ ['q', 'tag'], ['name', 'label'], - ['region_id', 'site_group_id', 'site_id', 'location_id', 'device_id'], + ['region_id', 'site_group_id', 'site_id', 'location_id', 'virtual_chassis_id', 'device_id'], ] tag = TagFilterField(model) @@ -1040,7 +1046,7 @@ class InventoryItemFilterForm(DeviceComponentFilterForm): field_groups = [ ['q', 'tag'], ['name', 'label', 'manufacturer_id', 'serial', 'asset_tag', 'discovered'], - ['region_id', 'site_group_id', 'site_id', 'location_id', 'device_id'], + ['region_id', 'site_group_id', 'site_id', 'location_id', 'virtual_chassis_id', 'device_id'], ] manufacturer_id = DynamicModelMultipleChoiceField( queryset=Manufacturer.objects.all(), From f77f7ca0ec7887ad1f075654f87658908d83346b Mon Sep 17 00:00:00 2001 From: Rhys Barrie Date: Sat, 13 Nov 2021 21:35:13 -0500 Subject: [PATCH 226/289] netbox-community/netbox#7424:make device component device field filter from selected virtual chassis --- netbox/dcim/forms/filtersets.py | 1 + 1 file changed, 1 insertion(+) diff --git a/netbox/dcim/forms/filtersets.py b/netbox/dcim/forms/filtersets.py index 6d76c4003..70a20d8a5 100644 --- a/netbox/dcim/forms/filtersets.py +++ b/netbox/dcim/forms/filtersets.py @@ -104,6 +104,7 @@ class DeviceComponentFilterForm(BootstrapMixin, CustomFieldModelFilterForm): query_params={ 'site_id': '$site_id', 'location_id': '$location_id', + 'virtual_chassis_id': '$virtual_chassis_id' }, label=_('Device'), fetch_trigger='open' From a8c958ece2038be0ac849312663785f4e4791d51 Mon Sep 17 00:00:00 2001 From: Rhys Barrie Date: Sat, 13 Nov 2021 22:01:15 -0500 Subject: [PATCH 227/289] netbox-community/netbox#7424: fix test failure from adding virtual chassis filter field --- netbox/dcim/tests/test_api.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/netbox/dcim/tests/test_api.py b/netbox/dcim/tests/test_api.py index e5977b760..3fc48beed 100644 --- a/netbox/dcim/tests/test_api.py +++ b/netbox/dcim/tests/test_api.py @@ -1524,7 +1524,7 @@ class ConnectedDeviceTest(APITestCase): class VirtualChassisTest(APIViewTestCases.APIViewTestCase): model = VirtualChassis - brief_fields = ['id', 'master', 'member_count', 'name', 'url'] + brief_fields = ['display', 'id', 'master', 'member_count', 'name', 'url'] @classmethod def setUpTestData(cls): From 68b544c676fba9542d09cd7b5c71e0315c885b80 Mon Sep 17 00:00:00 2001 From: Rhys Barrie Date: Sat, 13 Nov 2021 22:16:18 -0500 Subject: [PATCH 228/289] netbox-community/netbox#7424: add filterset test for virtual_chassis_id --- netbox/dcim/tests/test_filtersets.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/netbox/dcim/tests/test_filtersets.py b/netbox/dcim/tests/test_filtersets.py index fb94bde08..2b5da8576 100644 --- a/netbox/dcim/tests/test_filtersets.py +++ b/netbox/dcim/tests/test_filtersets.py @@ -2048,6 +2048,11 @@ class InterfaceTestCase(TestCase, ChangeLoggedFilterSetTests): ) Device.objects.bulk_create(devices) + # VirtualChassis assignment for filtering + virtual_chassis = VirtualChassis.objects.create(master=devices[0]) + Device.objects.filter(pk=devices[0].pk).update(virtual_chassis=virtual_chassis, vc_position=1, vc_priority=1) + Device.objects.filter(pk=devices[1].pk).update(virtual_chassis=virtual_chassis, vc_position=2, vc_priority=2) + interfaces = ( Interface(device=devices[0], name='Interface 1', label='A', type=InterfaceTypeChoices.TYPE_1GE_SFP, enabled=True, mgmt_only=True, mtu=100, mode=InterfaceModeChoices.MODE_ACCESS, mac_address='00-00-00-00-00-01', description='First'), Interface(device=devices[1], name='Interface 2', label='B', type=InterfaceTypeChoices.TYPE_1GE_GBIC, enabled=True, mgmt_only=True, mtu=200, mode=InterfaceModeChoices.MODE_TAGGED, mac_address='00-00-00-00-00-02', description='Second'), @@ -2157,6 +2162,10 @@ class InterfaceTestCase(TestCase, ChangeLoggedFilterSetTests): params = {'location': [locations[0].slug, locations[1].slug]} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + def test_virtual_chassis_id(self): + params = {'virtual_chassis_id': [VirtualChassis.objects.first().pk]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + def test_device(self): devices = Device.objects.all()[:2] params = {'device_id': [devices[0].pk, devices[1].pk]} From a5a480133ff0c2c9764f2b72d10d0c50434fac08 Mon Sep 17 00:00:00 2001 From: Rhys Barrie Date: Sat, 13 Nov 2021 23:08:46 -0500 Subject: [PATCH 229/289] netbox-community/netbox#7229: Fix context of VLAN table in VLAN Group view --- netbox/templates/ipam/vlangroup.html | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/netbox/templates/ipam/vlangroup.html b/netbox/templates/ipam/vlangroup.html index a46bef3b0..daa2c8e8c 100644 --- a/netbox/templates/ipam/vlangroup.html +++ b/netbox/templates/ipam/vlangroup.html @@ -1,6 +1,7 @@ {% extends 'generic/object.html' %} {% load helpers %} {% load plugins %} +{% load render_table from django_tables2 %} {% block breadcrumbs %} {{ block.super }} @@ -68,7 +69,7 @@ VLANs
- {% include 'inc/table.html' with table=vlans_table %} + {% render_table vlans_table 'inc/table.html' %}
{% if perms.ipam.add_vlan %} """ +INTERFACE_FHRPGROUPS = """ +
+ {% for assignment in value.all %} + {{ assignment.group.group_id }} ({{ assignment.group.get_protocol_display }}) + {% endfor %} +
+""" + INTERFACE_TAGGED_VLANS = """ {% if record.mode == 'tagged' %} {% for vlan in record.tagged_vlans.all %} diff --git a/netbox/virtualization/tables.py b/netbox/virtualization/tables.py index 28a57c7ef..501b5c0c7 100644 --- a/netbox/virtualization/tables.py +++ b/netbox/virtualization/tables.py @@ -171,7 +171,7 @@ class VMInterfaceTable(BaseInterfaceTable): model = VMInterface fields = ( 'pk', 'id', 'name', 'virtual_machine', 'enabled', 'mac_address', 'mtu', 'mode', 'description', 'tags', - 'ip_addresses', 'untagged_vlan', 'tagged_vlans', + 'ip_addresses', 'fhrp_groups', 'untagged_vlan', 'tagged_vlans', ) default_columns = ('pk', 'name', 'virtual_machine', 'enabled', 'description') @@ -193,7 +193,7 @@ class VirtualMachineVMInterfaceTable(VMInterfaceTable): model = VMInterface fields = ( 'pk', 'id', 'name', 'enabled', 'parent', 'bridge', 'mac_address', 'mtu', 'mode', 'description', 'tags', - 'ip_addresses', 'untagged_vlan', 'tagged_vlans', 'actions', + 'ip_addresses', 'fhrp_groups', 'untagged_vlan', 'tagged_vlans', 'actions', ) default_columns = ( 'pk', 'name', 'enabled', 'mac_address', 'mtu', 'mode', 'description', 'ip_addresses', 'actions', From b6fe613329a2a356e0ec3e34a3327244764c1980 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Fri, 19 Nov 2021 10:42:13 -0500 Subject: [PATCH 258/289] Fix redirection after creating FHRP group assignment --- netbox/ipam/models/fhrp.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/netbox/ipam/models/fhrp.py b/netbox/ipam/models/fhrp.py index 0176b2f71..fe8c80b6b 100644 --- a/netbox/ipam/models/fhrp.py +++ b/netbox/ipam/models/fhrp.py @@ -93,3 +93,9 @@ class FHRPGroupAssignment(ChangeLoggedModel): def __str__(self): return f'{self.interface}: {self.group} ({self.priority})' + + def get_absolute_url(self): + # Used primarily for redirection after creating a new assignment + if self.interface: + return self.interface.get_absolute_url() + return None From 5f59f458f449cd625964128349a028367231e9c3 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Fri, 19 Nov 2021 11:34:59 -0500 Subject: [PATCH 259/289] Fixes #7880: Include assigned IP addresses in FHRP group object representation --- docs/release-notes/version-3.1.md | 1 + netbox/dcim/tables/template_code.py | 2 +- netbox/ipam/api/views.py | 1 + netbox/ipam/models/fhrp.py | 12 +++++++++++- netbox/templates/ipam/fhrpgroup.html | 3 +++ 5 files changed, 17 insertions(+), 2 deletions(-) diff --git a/docs/release-notes/version-3.1.md b/docs/release-notes/version-3.1.md index dba962b9f..61618b0f1 100644 --- a/docs/release-notes/version-3.1.md +++ b/docs/release-notes/version-3.1.md @@ -24,6 +24,7 @@ * [#7768](https://github.com/netbox-community/netbox/issues/7768) - Validate IP address status when creating a new FHRP group * [#7771](https://github.com/netbox-community/netbox/issues/7771) - Group assignment should be optional when creating contacts via REST API * [#7849](https://github.com/netbox-community/netbox/issues/7849) - Fix exception when creating an FHRPGroup with an invalid IP address +* [#7880](https://github.com/netbox-community/netbox/issues/7880) - Include assigned IP addresses in FHRP group object representation ### REST API Changes diff --git a/netbox/dcim/tables/template_code.py b/netbox/dcim/tables/template_code.py index 12b0fe4a2..ccca32be8 100644 --- a/netbox/dcim/tables/template_code.py +++ b/netbox/dcim/tables/template_code.py @@ -53,7 +53,7 @@ INTERFACE_IPADDRESSES = """ INTERFACE_FHRPGROUPS = """ """ diff --git a/netbox/ipam/api/views.py b/netbox/ipam/api/views.py index 5e40a2081..cdb40333d 100644 --- a/netbox/ipam/api/views.py +++ b/netbox/ipam/api/views.py @@ -138,6 +138,7 @@ class FHRPGroupViewSet(CustomFieldModelViewSet): queryset = FHRPGroup.objects.prefetch_related('ip_addresses', 'tags') serializer_class = serializers.FHRPGroupSerializer filterset_class = filtersets.FHRPGroupFilterSet + brief_prefetch_fields = ('ip_addresses',) class FHRPGroupAssignmentViewSet(CustomFieldModelViewSet): diff --git a/netbox/ipam/models/fhrp.py b/netbox/ipam/models/fhrp.py index fe8c80b6b..0a099499f 100644 --- a/netbox/ipam/models/fhrp.py +++ b/netbox/ipam/models/fhrp.py @@ -56,7 +56,17 @@ class FHRPGroup(PrimaryModel): verbose_name = 'FHRP group' def __str__(self): - return f'{self.get_protocol_display()} group {self.group_id}' + name = f'{self.get_protocol_display()}: {self.group_id}' + + # Append the list of assigned IP addresses to serve as an additional identifier + if self.pk: + ip_addresses = [ + str(ip.address) for ip in self.ip_addresses.all() + ] + if ip_addresses: + return f"{name} ({', '.join(ip_addresses)})" + + return name def get_absolute_url(self): return reverse('ipam:fhrpgroup', args=[self.pk]) diff --git a/netbox/templates/ipam/fhrpgroup.html b/netbox/templates/ipam/fhrpgroup.html index 0ee94ab90..32ed1fc1c 100644 --- a/netbox/templates/ipam/fhrpgroup.html +++ b/netbox/templates/ipam/fhrpgroup.html @@ -3,6 +3,9 @@ {% load plugins %} {% load render_table from django_tables2 %} +{# Omit assigned IP addresses from object representation #} +{% block title %}{{ object.get_protocol_display }}: {{ object.group_id }}{% endblock %} + {% block breadcrumbs %} {{ block.super }} From 7072f207c001dfb10383151919a993540e7bb1ce Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Fri, 19 Nov 2021 11:42:34 -0500 Subject: [PATCH 260/289] Call out all models with cable_peer name changes --- docs/release-notes/version-3.1.md | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/docs/release-notes/version-3.1.md b/docs/release-notes/version-3.1.md index 61618b0f1..cbcf5478b 100644 --- a/docs/release-notes/version-3.1.md +++ b/docs/release-notes/version-3.1.md @@ -160,12 +160,24 @@ Support for single sign-on (SSO) authentication has been added via the [python-s * tenancy.TenantGroup * virtualization.ClusterGroup * virtualization.ClusterType +* circuits.CircuitTermination + * `cable_peer` has been renamed to `link_peer` + * `cable_peer_type` has been renamed to `link_peer_type` * dcim.Cable * Added `tenant` field +* dcim.ConsolePort + * `cable_peer` has been renamed to `link_peer` + * `cable_peer_type` has been renamed to `link_peer_type` +* dcim.ConsoleServerPort + * `cable_peer` has been renamed to `link_peer` + * `cable_peer_type` has been renamed to `link_peer_type` * dcim.Device * Added `airflow` field * dcim.DeviceType * Added `airflow` field +* dcim.FrontPort + * `cable_peer` has been renamed to `link_peer` + * `cable_peer_type` has been renamed to `link_peer_type` * dcim.Interface * `cable_peer` has been renamed to `link_peer` * `cable_peer_type` has been renamed to `link_peer_type` @@ -180,6 +192,18 @@ Support for single sign-on (SSO) authentication has been added via the [python-s * Added `count_fhrp_groups` read-only field * dcim.Location * Added `tenant` field +* dcim.PowerFeed + * `cable_peer` has been renamed to `link_peer` + * `cable_peer_type` has been renamed to `link_peer_type` +* dcim.PowerOutlet + * `cable_peer` has been renamed to `link_peer` + * `cable_peer_type` has been renamed to `link_peer_type` +* dcim.PowerPort + * `cable_peer` has been renamed to `link_peer` + * `cable_peer_type` has been renamed to `link_peer_type` +* dcim.RearPort + * `cable_peer` has been renamed to `link_peer` + * `cable_peer_type` has been renamed to `link_peer_type` * dcim.Site * Added `asns` relationship to ipam.ASN * extras.Webhook From b7c9ca720a0d84cc506921fb83c2d618fbc0ae71 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Fri, 19 Nov 2021 15:12:45 -0500 Subject: [PATCH 261/289] Closes #7886: Introduce a base FilterForm class --- netbox/circuits/forms/filtersets.py | 20 ---- netbox/dcim/forms/filtersets.py | 108 +--------------------- netbox/extras/forms/customfields.py | 4 +- netbox/extras/forms/filtersets.py | 60 ++---------- netbox/ipam/forms/filtersets.py | 65 ------------- netbox/tenancy/forms/filtersets.py | 25 ----- netbox/utilities/forms/forms.py | 15 +++ netbox/virtualization/forms/filtersets.py | 30 +----- netbox/wireless/forms/filtersets.py | 15 --- 9 files changed, 33 insertions(+), 309 deletions(-) diff --git a/netbox/circuits/forms/filtersets.py b/netbox/circuits/forms/filtersets.py index 5f7d5b612..0822ff206 100644 --- a/netbox/circuits/forms/filtersets.py +++ b/netbox/circuits/forms/filtersets.py @@ -23,11 +23,6 @@ class ProviderFilterForm(CustomFieldModelFilterForm): ['region_id', 'site_group_id', 'site_id'], ['asn'], ] - q = forms.CharField( - required=False, - widget=forms.TextInput(attrs={'placeholder': _('All Fields')}), - label=_('Search') - ) region_id = DynamicModelMultipleChoiceField( queryset=Region.objects.all(), required=False, @@ -63,11 +58,6 @@ class ProviderNetworkFilterForm(CustomFieldModelFilterForm): ('q', 'tag'), ('provider_id',), ) - q = forms.CharField( - required=False, - widget=forms.TextInput(attrs={'placeholder': _('All Fields')}), - label=_('Search') - ) provider_id = DynamicModelMultipleChoiceField( queryset=Provider.objects.all(), required=False, @@ -79,11 +69,6 @@ class ProviderNetworkFilterForm(CustomFieldModelFilterForm): class CircuitTypeFilterForm(CustomFieldModelFilterForm): model = CircuitType - q = forms.CharField( - required=False, - widget=forms.TextInput(attrs={'placeholder': _('All Fields')}), - label=_('Search') - ) tag = TagFilterField(model) @@ -96,11 +81,6 @@ class CircuitFilterForm(TenancyFilterForm, CustomFieldModelFilterForm): ['region_id', 'site_group_id', 'site_id'], ['tenant_group_id', 'tenant_id'], ] - q = forms.CharField( - required=False, - widget=forms.TextInput(attrs={'placeholder': _('All Fields')}), - label=_('Search') - ) type_id = DynamicModelMultipleChoiceField( queryset=CircuitType.objects.all(), required=False, diff --git a/netbox/dcim/forms/filtersets.py b/netbox/dcim/forms/filtersets.py index 72b7418c1..21e8c9c97 100644 --- a/netbox/dcim/forms/filtersets.py +++ b/netbox/dcim/forms/filtersets.py @@ -9,7 +9,7 @@ from extras.forms import CustomFieldModelFilterForm, LocalConfigContextFilterFor from ipam.models import ASN from tenancy.forms import TenancyFilterForm from utilities.forms import ( - APISelectMultiple, add_blank_choice, BootstrapMixin, ColorField, DynamicModelMultipleChoiceField, StaticSelect, + APISelectMultiple, add_blank_choice, ColorField, DynamicModelMultipleChoiceField, FilterForm, StaticSelect, StaticSelectMultiple, TagFilterField, BOOLEAN_WITH_BLANK_CHOICES, ) from wireless.choices import * @@ -51,11 +51,6 @@ class DeviceComponentFilterForm(CustomFieldModelFilterForm): field_order = [ 'q', 'name', 'label', 'region_id', 'site_group_id', 'site_id', ] - q = forms.CharField( - required=False, - widget=forms.TextInput(attrs={'placeholder': _('All Fields')}), - label=_('Search') - ) name = forms.CharField( required=False ) @@ -114,11 +109,6 @@ class DeviceComponentFilterForm(CustomFieldModelFilterForm): class RegionFilterForm(CustomFieldModelFilterForm): model = Region - q = forms.CharField( - required=False, - widget=forms.TextInput(attrs={'placeholder': _('All Fields')}), - label=_('Search') - ) parent_id = DynamicModelMultipleChoiceField( queryset=Region.objects.all(), required=False, @@ -130,11 +120,6 @@ class RegionFilterForm(CustomFieldModelFilterForm): class SiteGroupFilterForm(CustomFieldModelFilterForm): model = SiteGroup - q = forms.CharField( - required=False, - widget=forms.TextInput(attrs={'placeholder': _('All Fields')}), - label=_('Search') - ) parent_id = DynamicModelMultipleChoiceField( queryset=SiteGroup.objects.all(), required=False, @@ -153,11 +138,6 @@ class SiteFilterForm(TenancyFilterForm, CustomFieldModelFilterForm): ['tenant_group_id', 'tenant_id'], ['asn_id'] ] - q = forms.CharField( - required=False, - widget=forms.TextInput(attrs={'placeholder': _('All Fields')}), - label=_('Search') - ) status = forms.MultipleChoiceField( choices=SiteStatusChoices, required=False, @@ -191,11 +171,6 @@ class LocationFilterForm(TenancyFilterForm, CustomFieldModelFilterForm): ['region_id', 'site_group_id', 'site_id', 'parent_id'], ['tenant_group_id', 'tenant_id'], ] - q = forms.CharField( - required=False, - widget=forms.TextInput(attrs={'placeholder': _('All Fields')}), - label=_('Search') - ) region_id = DynamicModelMultipleChoiceField( queryset=Region.objects.all(), required=False, @@ -233,11 +208,6 @@ class LocationFilterForm(TenancyFilterForm, CustomFieldModelFilterForm): class RackRoleFilterForm(CustomFieldModelFilterForm): model = RackRole - q = forms.CharField( - required=False, - widget=forms.TextInput(attrs={'placeholder': _('All Fields')}), - label=_('Search') - ) tag = TagFilterField(model) @@ -251,11 +221,6 @@ class RackFilterForm(TenancyFilterForm, CustomFieldModelFilterForm): ['type', 'width', 'serial', 'asset_tag'], ['tenant_group_id', 'tenant_id'], ] - q = forms.CharField( - required=False, - widget=forms.TextInput(attrs={'placeholder': _('All Fields')}), - label=_('Search') - ) region_id = DynamicModelMultipleChoiceField( queryset=Region.objects.all(), required=False, @@ -338,11 +303,6 @@ class RackReservationFilterForm(TenancyFilterForm, CustomFieldModelFilterForm): ['region_id', 'site_id', 'location_id'], ['tenant_group_id', 'tenant_id'], ] - q = forms.CharField( - required=False, - widget=forms.TextInput(attrs={'placeholder': _('All Fields')}), - label=_('Search') - ) region_id = DynamicModelMultipleChoiceField( queryset=Region.objects.all(), required=False, @@ -379,11 +339,6 @@ class RackReservationFilterForm(TenancyFilterForm, CustomFieldModelFilterForm): class ManufacturerFilterForm(CustomFieldModelFilterForm): model = Manufacturer - q = forms.CharField( - required=False, - widget=forms.TextInput(attrs={'placeholder': _('All Fields')}), - label=_('Search') - ) tag = TagFilterField(model) @@ -394,11 +349,6 @@ class DeviceTypeFilterForm(CustomFieldModelFilterForm): ['manufacturer_id', 'subdevice_role', 'airflow'], ['console_ports', 'console_server_ports', 'power_ports', 'power_outlets', 'interfaces', 'pass_through_ports'], ] - q = forms.CharField( - required=False, - widget=forms.TextInput(attrs={'placeholder': _('All Fields')}), - label=_('Search') - ) manufacturer_id = DynamicModelMultipleChoiceField( queryset=Manufacturer.objects.all(), required=False, @@ -462,21 +412,11 @@ class DeviceTypeFilterForm(CustomFieldModelFilterForm): class DeviceRoleFilterForm(CustomFieldModelFilterForm): model = DeviceRole - q = forms.CharField( - required=False, - widget=forms.TextInput(attrs={'placeholder': _('All Fields')}), - label=_('Search') - ) tag = TagFilterField(model) class PlatformFilterForm(CustomFieldModelFilterForm): model = Platform - q = forms.CharField( - required=False, - widget=forms.TextInput(attrs={'placeholder': _('All Fields')}), - label=_('Search') - ) manufacturer_id = DynamicModelMultipleChoiceField( queryset=Manufacturer.objects.all(), required=False, @@ -503,11 +443,6 @@ class DeviceFilterForm(LocalConfigContextFilterForm, TenancyFilterForm, CustomFi 'power_outlets', 'interfaces', 'pass_through_ports', 'local_context_data', ], ] - q = forms.CharField( - required=False, - widget=forms.TextInput(attrs={'placeholder': _('All Fields')}), - label=_('Search') - ) region_id = DynamicModelMultipleChoiceField( queryset=Region.objects.all(), required=False, @@ -666,11 +601,6 @@ class VirtualChassisFilterForm(TenancyFilterForm, CustomFieldModelFilterForm): ['region_id', 'site_group_id', 'site_id'], ['tenant_group_id', 'tenant_id'], ] - q = forms.CharField( - required=False, - widget=forms.TextInput(attrs={'placeholder': _('All Fields')}), - label=_('Search') - ) region_id = DynamicModelMultipleChoiceField( queryset=Region.objects.all(), required=False, @@ -704,11 +634,6 @@ class CableFilterForm(TenancyFilterForm, CustomFieldModelFilterForm): ['type', 'status', 'color'], ['tenant_group_id', 'tenant_id'], ] - q = forms.CharField( - required=False, - widget=forms.TextInput(attrs={'placeholder': _('All Fields')}), - label=_('Search') - ) region_id = DynamicModelMultipleChoiceField( queryset=Region.objects.all(), required=False, @@ -767,11 +692,6 @@ class PowerPanelFilterForm(CustomFieldModelFilterForm): ('q', 'tag'), ('region_id', 'site_group_id', 'site_id', 'location_id') ) - q = forms.CharField( - required=False, - widget=forms.TextInput(attrs={'placeholder': _('All Fields')}), - label=_('Search') - ) region_id = DynamicModelMultipleChoiceField( queryset=Region.objects.all(), required=False, @@ -815,11 +735,6 @@ class PowerFeedFilterForm(CustomFieldModelFilterForm): ['power_panel_id', 'rack_id'], ['status', 'type', 'supply', 'phase', 'voltage', 'amperage', 'max_utilization'], ] - q = forms.CharField( - required=False, - widget=forms.TextInput(attrs={'placeholder': _('All Fields')}), - label=_('Search') - ) region_id = DynamicModelMultipleChoiceField( queryset=Region.objects.all(), required=False, @@ -1112,12 +1027,7 @@ class InventoryItemFilterForm(DeviceComponentFilterForm): # Connections # -class ConsoleConnectionFilterForm(BootstrapMixin, forms.Form): - q = forms.CharField( - required=False, - widget=forms.TextInput(attrs={'placeholder': _('All Fields')}), - label=_('Search') - ) +class ConsoleConnectionFilterForm(FilterForm): region_id = DynamicModelMultipleChoiceField( queryset=Region.objects.all(), required=False, @@ -1144,12 +1054,7 @@ class ConsoleConnectionFilterForm(BootstrapMixin, forms.Form): ) -class PowerConnectionFilterForm(BootstrapMixin, forms.Form): - q = forms.CharField( - required=False, - widget=forms.TextInput(attrs={'placeholder': _('All Fields')}), - label=_('Search') - ) +class PowerConnectionFilterForm(FilterForm): region_id = DynamicModelMultipleChoiceField( queryset=Region.objects.all(), required=False, @@ -1176,12 +1081,7 @@ class PowerConnectionFilterForm(BootstrapMixin, forms.Form): ) -class InterfaceConnectionFilterForm(BootstrapMixin, forms.Form): - q = forms.CharField( - required=False, - widget=forms.TextInput(attrs={'placeholder': _('All Fields')}), - label=_('Search') - ) +class InterfaceConnectionFilterForm(FilterForm): region_id = DynamicModelMultipleChoiceField( queryset=Region.objects.all(), required=False, diff --git a/netbox/extras/forms/customfields.py b/netbox/extras/forms/customfields.py index e5c200b6a..d58e6ce65 100644 --- a/netbox/extras/forms/customfields.py +++ b/netbox/extras/forms/customfields.py @@ -4,7 +4,7 @@ from django.db.models import Q from extras.choices import * from extras.models import * -from utilities.forms import BootstrapMixin, BulkEditForm, CSVModelForm +from utilities.forms import BootstrapMixin, BulkEditForm, CSVModelForm, FilterForm __all__ = ( 'CustomFieldModelCSVForm', @@ -105,7 +105,7 @@ class CustomFieldModelBulkEditForm(BulkEditForm): self.custom_fields.append(cf.name) -class CustomFieldModelFilterForm(BootstrapMixin, forms.Form): +class CustomFieldModelFilterForm(FilterForm): def __init__(self, *args, **kwargs): diff --git a/netbox/extras/forms/filtersets.py b/netbox/extras/forms/filtersets.py index 6196ba8da..07375a203 100644 --- a/netbox/extras/forms/filtersets.py +++ b/netbox/extras/forms/filtersets.py @@ -9,9 +9,8 @@ from extras.models import * from extras.utils import FeatureQuery from tenancy.models import Tenant, TenantGroup from utilities.forms import ( - add_blank_choice, APISelectMultiple, BootstrapMixin, ContentTypeChoiceField, - ContentTypeMultipleChoiceField, DateTimePicker, DynamicModelMultipleChoiceField, StaticSelect, - StaticSelectMultiple, BOOLEAN_WITH_BLANK_CHOICES, + add_blank_choice, APISelectMultiple, ContentTypeChoiceField, ContentTypeMultipleChoiceField, DateTimePicker, + DynamicModelMultipleChoiceField, FilterForm, StaticSelect, StaticSelectMultiple, BOOLEAN_WITH_BLANK_CHOICES, ) from virtualization.models import Cluster, ClusterGroup @@ -28,17 +27,12 @@ __all__ = ( ) -class CustomFieldFilterForm(BootstrapMixin, forms.Form): +class CustomFieldFilterForm(FilterForm): field_groups = [ ['q'], ['type', 'content_types'], ['weight', 'required'], ] - q = forms.CharField( - required=False, - widget=forms.TextInput(attrs={'placeholder': _('All Fields')}), - label=_('Search') - ) content_types = ContentTypeMultipleChoiceField( queryset=ContentType.objects.all(), limit_choices_to=FeatureQuery('custom_fields'), @@ -61,16 +55,11 @@ class CustomFieldFilterForm(BootstrapMixin, forms.Form): ) -class CustomLinkFilterForm(BootstrapMixin, forms.Form): +class CustomLinkFilterForm(FilterForm): field_groups = [ ['q'], ['content_type', 'weight', 'new_window'], ] - q = forms.CharField( - required=False, - widget=forms.TextInput(attrs={'placeholder': _('All Fields')}), - label=_('Search') - ) content_type = ContentTypeChoiceField( queryset=ContentType.objects.all(), limit_choices_to=FeatureQuery('custom_fields'), @@ -87,16 +76,11 @@ class CustomLinkFilterForm(BootstrapMixin, forms.Form): ) -class ExportTemplateFilterForm(BootstrapMixin, forms.Form): +class ExportTemplateFilterForm(FilterForm): field_groups = [ ['q'], ['content_type', 'mime_type', 'file_extension', 'as_attachment'], ] - q = forms.CharField( - required=False, - widget=forms.TextInput(attrs={'placeholder': _('All Fields')}), - label=_('Search') - ) content_type = ContentTypeChoiceField( queryset=ContentType.objects.all(), limit_choices_to=FeatureQuery('custom_fields'), @@ -117,17 +101,12 @@ class ExportTemplateFilterForm(BootstrapMixin, forms.Form): ) -class WebhookFilterForm(BootstrapMixin, forms.Form): +class WebhookFilterForm(FilterForm): field_groups = [ ['q'], ['content_types', 'http_method', 'enabled'], ['type_create', 'type_update', 'type_delete'], ] - q = forms.CharField( - required=False, - widget=forms.TextInput(attrs={'placeholder': _('All Fields')}), - label=_('Search') - ) content_types = ContentTypeMultipleChoiceField( queryset=ContentType.objects.all(), limit_choices_to=FeatureQuery('custom_fields'), @@ -165,12 +144,8 @@ class WebhookFilterForm(BootstrapMixin, forms.Form): ) -class TagFilterForm(BootstrapMixin, forms.Form): +class TagFilterForm(FilterForm): model = Tag - q = forms.CharField( - required=False, - label=_('Search') - ) content_type_id = ContentTypeMultipleChoiceField( queryset=ContentType.objects.filter(FeatureQuery('tags').get_query()), required=False, @@ -178,7 +153,7 @@ class TagFilterForm(BootstrapMixin, forms.Form): ) -class ConfigContextFilterForm(BootstrapMixin, forms.Form): +class ConfigContextFilterForm(FilterForm): field_groups = [ ['q', 'tag'], ['region_id', 'site_group_id', 'site_id'], @@ -186,11 +161,6 @@ class ConfigContextFilterForm(BootstrapMixin, forms.Form): ['cluster_group_id', 'cluster_id'], ['tenant_group_id', 'tenant_id'] ] - q = forms.CharField( - required=False, - widget=forms.TextInput(attrs={'placeholder': _('All Fields')}), - label=_('Search') - ) region_id = DynamicModelMultipleChoiceField( queryset=Region.objects.all(), required=False, @@ -270,18 +240,13 @@ class LocalConfigContextFilterForm(forms.Form): ) -class JournalEntryFilterForm(BootstrapMixin, forms.Form): +class JournalEntryFilterForm(FilterForm): model = JournalEntry field_groups = [ ['q'], ['created_before', 'created_after', 'created_by_id'], ['assigned_object_type_id', 'kind'] ] - q = forms.CharField( - required=False, - widget=forms.TextInput(attrs={'placeholder': _('All Fields')}), - label=_('Search') - ) created_after = forms.DateTimeField( required=False, label=_('After'), @@ -317,18 +282,13 @@ class JournalEntryFilterForm(BootstrapMixin, forms.Form): ) -class ObjectChangeFilterForm(BootstrapMixin, forms.Form): +class ObjectChangeFilterForm(FilterForm): model = ObjectChange field_groups = [ ['q'], ['time_before', 'time_after', 'action'], ['user_id', 'changed_object_type_id'], ] - q = forms.CharField( - required=False, - widget=forms.TextInput(attrs={'placeholder': _('All Fields')}), - label=_('Search') - ) time_after = forms.DateTimeField( required=False, label=_('After'), diff --git a/netbox/ipam/forms/filtersets.py b/netbox/ipam/forms/filtersets.py index 159170ab4..75953001b 100644 --- a/netbox/ipam/forms/filtersets.py +++ b/netbox/ipam/forms/filtersets.py @@ -45,11 +45,6 @@ class VRFFilterForm(TenancyFilterForm, CustomFieldModelFilterForm): ['import_target_id', 'export_target_id'], ['tenant_group_id', 'tenant_id'], ] - q = forms.CharField( - required=False, - widget=forms.TextInput(attrs={'placeholder': _('All Fields')}), - label=_('Search') - ) import_target_id = DynamicModelMultipleChoiceField( queryset=RouteTarget.objects.all(), required=False, @@ -72,11 +67,6 @@ class RouteTargetFilterForm(TenancyFilterForm, CustomFieldModelFilterForm): ['importing_vrf_id', 'exporting_vrf_id'], ['tenant_group_id', 'tenant_id'], ] - q = forms.CharField( - required=False, - widget=forms.TextInput(attrs={'placeholder': _('All Fields')}), - label=_('Search') - ) importing_vrf_id = DynamicModelMultipleChoiceField( queryset=VRF.objects.all(), required=False, @@ -94,11 +84,6 @@ class RouteTargetFilterForm(TenancyFilterForm, CustomFieldModelFilterForm): class RIRFilterForm(CustomFieldModelFilterForm): model = RIR - q = forms.CharField( - required=False, - widget=forms.TextInput(attrs={'placeholder': _('All Fields')}), - label=_('Search') - ) is_private = forms.NullBooleanField( required=False, label=_('Private'), @@ -116,11 +101,6 @@ class AggregateFilterForm(TenancyFilterForm, CustomFieldModelFilterForm): ['family', 'rir_id'], ['tenant_group_id', 'tenant_id'] ] - q = forms.CharField( - required=False, - widget=forms.TextInput(attrs={'placeholder': _('All Fields')}), - label=_('Search') - ) family = forms.ChoiceField( required=False, choices=add_blank_choice(IPAddressFamilyChoices), @@ -144,11 +124,6 @@ class ASNFilterForm(TenancyFilterForm, CustomFieldModelFilterForm): ['tenant_group_id', 'tenant_id'], ['site_id'], ] - q = forms.CharField( - required=False, - widget=forms.TextInput(attrs={'placeholder': _('All Fields')}), - label=_('Search') - ) rir_id = DynamicModelMultipleChoiceField( queryset=RIR.objects.all(), required=False, @@ -165,11 +140,6 @@ class ASNFilterForm(TenancyFilterForm, CustomFieldModelFilterForm): class RoleFilterForm(CustomFieldModelFilterForm): model = Role - q = forms.CharField( - required=False, - widget=forms.TextInput(attrs={'placeholder': _('All Fields')}), - label=_('Search') - ) tag = TagFilterField(model) @@ -182,11 +152,6 @@ class PrefixFilterForm(TenancyFilterForm, CustomFieldModelFilterForm): ['region_id', 'site_group_id', 'site_id'], ['tenant_group_id', 'tenant_id'] ] - q = forms.CharField( - required=False, - widget=forms.TextInput(attrs={'placeholder': _('All Fields')}), - label=_('Search') - ) mask_length__lte = forms.IntegerField( widget=forms.HiddenInput() ) @@ -282,11 +247,6 @@ class IPRangeFilterForm(TenancyFilterForm, CustomFieldModelFilterForm): ['family', 'vrf_id', 'status', 'role_id'], ['tenant_group_id', 'tenant_id'], ] - q = forms.CharField( - required=False, - widget=forms.TextInput(attrs={'placeholder': _('All Fields')}), - label=_('Search') - ) family = forms.ChoiceField( required=False, choices=add_blank_choice(IPAddressFamilyChoices), @@ -327,11 +287,6 @@ class IPAddressFilterForm(TenancyFilterForm, CustomFieldModelFilterForm): ['vrf_id', 'present_in_vrf_id'], ['tenant_group_id', 'tenant_id'], ] - q = forms.CharField( - required=False, - widget=forms.TextInput(attrs={'placeholder': _('All Fields')}), - label=_('Search') - ) parent = forms.CharField( required=False, widget=forms.TextInput( @@ -393,11 +348,6 @@ class FHRPGroupFilterForm(CustomFieldModelFilterForm): ('protocol', 'group_id'), ('auth_type', 'auth_key'), ) - q = forms.CharField( - required=False, - widget=forms.TextInput(attrs={'placeholder': _('All Fields')}), - label=_('Search') - ) protocol = forms.MultipleChoiceField( choices=FHRPGroupProtocolChoices, required=False, @@ -427,11 +377,6 @@ class VLANGroupFilterForm(CustomFieldModelFilterForm): ['region', 'sitegroup', 'site', 'location', 'rack'] ] model = VLANGroup - q = forms.CharField( - required=False, - widget=forms.TextInput(attrs={'placeholder': _('All Fields')}), - label=_('Search') - ) region = DynamicModelMultipleChoiceField( queryset=Region.objects.all(), required=False, @@ -473,11 +418,6 @@ class VLANFilterForm(TenancyFilterForm, CustomFieldModelFilterForm): ['group_id', 'status', 'role_id', 'vid'], ['tenant_group_id', 'tenant_id'], ] - q = forms.CharField( - required=False, - widget=forms.TextInput(attrs={'placeholder': _('All Fields')}), - label=_('Search') - ) region_id = DynamicModelMultipleChoiceField( queryset=Region.objects.all(), required=False, @@ -535,11 +475,6 @@ class ServiceFilterForm(CustomFieldModelFilterForm): ('q', 'tag'), ('protocol', 'port'), ) - q = forms.CharField( - required=False, - widget=forms.TextInput(attrs={'placeholder': _('All Fields')}), - label=_('Search') - ) protocol = forms.ChoiceField( choices=add_blank_choice(ServiceProtocolChoices), required=False, diff --git a/netbox/tenancy/forms/filtersets.py b/netbox/tenancy/forms/filtersets.py index 1e4f2d06e..957f0ab7b 100644 --- a/netbox/tenancy/forms/filtersets.py +++ b/netbox/tenancy/forms/filtersets.py @@ -20,11 +20,6 @@ __all__ = ( class TenantGroupFilterForm(CustomFieldModelFilterForm): model = TenantGroup - q = forms.CharField( - required=False, - widget=forms.TextInput(attrs={'placeholder': _('All Fields')}), - label=_('Search') - ) parent_id = DynamicModelMultipleChoiceField( queryset=TenantGroup.objects.all(), required=False, @@ -40,11 +35,6 @@ class TenantFilterForm(CustomFieldModelFilterForm): ('q', 'tag'), ('group_id',), ) - q = forms.CharField( - required=False, - widget=forms.TextInput(attrs={'placeholder': _('All Fields')}), - label=_('Search') - ) group_id = DynamicModelMultipleChoiceField( queryset=TenantGroup.objects.all(), required=False, @@ -61,11 +51,6 @@ class TenantFilterForm(CustomFieldModelFilterForm): class ContactGroupFilterForm(CustomFieldModelFilterForm): model = ContactGroup - q = forms.CharField( - required=False, - widget=forms.TextInput(attrs={'placeholder': _('All Fields')}), - label=_('Search') - ) parent_id = DynamicModelMultipleChoiceField( queryset=ContactGroup.objects.all(), required=False, @@ -77,11 +62,6 @@ class ContactGroupFilterForm(CustomFieldModelFilterForm): class ContactRoleFilterForm(CustomFieldModelFilterForm): model = ContactRole - q = forms.CharField( - required=False, - widget=forms.TextInput(attrs={'placeholder': _('All Fields')}), - label=_('Search') - ) tag = TagFilterField(model) @@ -91,11 +71,6 @@ class ContactFilterForm(CustomFieldModelFilterForm): ('q', 'tag'), ('group_id',), ) - q = forms.CharField( - required=False, - widget=forms.TextInput(attrs={'placeholder': _('All Fields')}), - label=_('Search') - ) group_id = DynamicModelMultipleChoiceField( queryset=ContactGroup.objects.all(), required=False, diff --git a/netbox/utilities/forms/forms.py b/netbox/utilities/forms/forms.py index 1cb5ae123..87fa4ae33 100644 --- a/netbox/utilities/forms/forms.py +++ b/netbox/utilities/forms/forms.py @@ -3,6 +3,7 @@ import re import yaml from django import forms +from django.utils.translation import gettext as _ from .widgets import APISelect, APISelectMultiple, ClearableFileInput, StaticSelect @@ -13,6 +14,7 @@ __all__ = ( 'BulkRenameForm', 'ConfirmationForm', 'CSVModelForm', + 'FilterForm', 'ImportForm', 'ReturnURLForm', 'TableConfigForm', @@ -177,6 +179,19 @@ class ImportForm(BootstrapMixin, forms.Form): }) +class FilterForm(BootstrapMixin, forms.Form): + """ + Base Form class for FilterSet forms. + """ + q = forms.CharField( + required=False, + widget=forms.TextInput( + attrs={'placeholder': _('All fields')} + ), + label=_('Search') + ) + + class TableConfigForm(BootstrapMixin, forms.Form): """ Form for configuring user's table preferences. diff --git a/netbox/virtualization/forms/filtersets.py b/netbox/virtualization/forms/filtersets.py index cea980f5f..7132ba316 100644 --- a/netbox/virtualization/forms/filtersets.py +++ b/netbox/virtualization/forms/filtersets.py @@ -5,8 +5,7 @@ from dcim.models import DeviceRole, Platform, Region, Site, SiteGroup from extras.forms import CustomFieldModelFilterForm, LocalConfigContextFilterForm from tenancy.forms import TenancyFilterForm from utilities.forms import ( - BootstrapMixin, DynamicModelMultipleChoiceField, StaticSelect, StaticSelectMultiple, TagFilterField, - BOOLEAN_WITH_BLANK_CHOICES, + DynamicModelMultipleChoiceField, StaticSelect, StaticSelectMultiple, TagFilterField, BOOLEAN_WITH_BLANK_CHOICES, ) from virtualization.choices import * from virtualization.models import * @@ -22,21 +21,11 @@ __all__ = ( class ClusterTypeFilterForm(CustomFieldModelFilterForm): model = ClusterType - q = forms.CharField( - required=False, - widget=forms.TextInput(attrs={'placeholder': _('All Fields')}), - label=_('Search') - ) tag = TagFilterField(model) class ClusterGroupFilterForm(CustomFieldModelFilterForm): model = ClusterGroup - q = forms.CharField( - required=False, - widget=forms.TextInput(attrs={'placeholder': _('All Fields')}), - label=_('Search') - ) tag = TagFilterField(model) @@ -51,11 +40,6 @@ class ClusterFilterForm(TenancyFilterForm, CustomFieldModelFilterForm): ['region_id', 'site_group_id', 'site_id'], ['tenant_group_id', 'tenant_id'], ] - q = forms.CharField( - required=False, - widget=forms.TextInput(attrs={'placeholder': _('All Fields')}), - label=_('Search') - ) type_id = DynamicModelMultipleChoiceField( queryset=ClusterType.objects.all(), required=False, @@ -104,11 +88,6 @@ class VirtualMachineFilterForm(LocalConfigContextFilterForm, TenancyFilterForm, ['status', 'role_id', 'platform_id', 'mac_address', 'has_primary_ip', 'local_context_data'], ['tenant_group_id', 'tenant_id'], ] - q = forms.CharField( - required=False, - widget=forms.TextInput(attrs={'placeholder': _('All Fields')}), - label=_('Search') - ) cluster_group_id = DynamicModelMultipleChoiceField( queryset=ClusterGroup.objects.all(), required=False, @@ -188,18 +167,13 @@ class VirtualMachineFilterForm(LocalConfigContextFilterForm, TenancyFilterForm, tag = TagFilterField(model) -class VMInterfaceFilterForm(BootstrapMixin, forms.Form): +class VMInterfaceFilterForm(CustomFieldModelFilterForm): model = VMInterface field_groups = [ ['q', 'tag'], ['cluster_id', 'virtual_machine_id'], ['enabled', 'mac_address'], ] - q = forms.CharField( - required=False, - widget=forms.TextInput(attrs={'placeholder': _('All Fields')}), - label=_('Search') - ) cluster_id = DynamicModelMultipleChoiceField( queryset=Cluster.objects.all(), required=False, diff --git a/netbox/wireless/forms/filtersets.py b/netbox/wireless/forms/filtersets.py index a8787c78e..b94332bd7 100644 --- a/netbox/wireless/forms/filtersets.py +++ b/netbox/wireless/forms/filtersets.py @@ -16,11 +16,6 @@ __all__ = ( class WirelessLANGroupFilterForm(CustomFieldModelFilterForm): model = WirelessLANGroup - q = forms.CharField( - required=False, - widget=forms.TextInput(attrs={'placeholder': _('All Fields')}), - label=_('Search') - ) parent_id = DynamicModelMultipleChoiceField( queryset=WirelessLANGroup.objects.all(), required=False, @@ -36,11 +31,6 @@ class WirelessLANFilterForm(CustomFieldModelFilterForm): ('q', 'tag'), ('group_id',), ] - q = forms.CharField( - required=False, - widget=forms.TextInput(attrs={'placeholder': _('All Fields')}), - label=_('Search') - ) ssid = forms.CharField( required=False, label='SSID' @@ -70,11 +60,6 @@ class WirelessLANFilterForm(CustomFieldModelFilterForm): class WirelessLinkFilterForm(CustomFieldModelFilterForm): model = WirelessLink - q = forms.CharField( - required=False, - widget=forms.TextInput(attrs={'placeholder': _('All Fields')}), - label=_('Search') - ) ssid = forms.CharField( required=False, label='SSID' From eded00cbb3444a0e5de0bd08acb02c96875c7ed0 Mon Sep 17 00:00:00 2001 From: Robin Schneider Date: Sun, 21 Nov 2021 22:23:29 +0100 Subject: [PATCH 262/289] chore: Always use "CEE 7" (with the space) consistently --- netbox/dcim/choices.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/netbox/dcim/choices.py b/netbox/dcim/choices.py index d3cdbdf8f..40c61e899 100644 --- a/netbox/dcim/choices.py +++ b/netbox/dcim/choices.py @@ -640,8 +640,8 @@ class PowerOutletTypeChoices(ChoiceSet): (TYPE_CS8464C, 'CS8464C'), )), ('ITA/International', ( - (TYPE_ITA_E, 'ITA Type E (CEE7/5)'), - (TYPE_ITA_F, 'ITA Type F (CEE7/3)'), + (TYPE_ITA_E, 'ITA Type E (CEE 7/5)'), + (TYPE_ITA_F, 'ITA Type F (CEE 7/3)'), (TYPE_ITA_G, 'ITA Type G (BS 1363)'), (TYPE_ITA_H, 'ITA Type H'), (TYPE_ITA_I, 'ITA Type I'), From 175498940e77291768137432c9ea12b0620b22f9 Mon Sep 17 00:00:00 2001 From: Robin Schneider Date: Sun, 21 Nov 2021 23:41:36 +0100 Subject: [PATCH 263/289] Fixes #7897: CEE 7/5 is only a power outlet, no power port Ref: * https://en.wikipedia.org/wiki/CEE_7_standard_AC_plugs_and_sockets#CEE_7/5_socket_and_CEE_7/6_plug_(French;_Type_E) * https://blog.packetsar.com/wp-content/uploads/Power_and_Cooling_Cheat_Sheet.pdf --- netbox/dcim/choices.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/netbox/dcim/choices.py b/netbox/dcim/choices.py index 40c61e899..36eb24c96 100644 --- a/netbox/dcim/choices.py +++ b/netbox/dcim/choices.py @@ -428,7 +428,7 @@ class PowerPortTypeChoices(ChoiceSet): )), ('International/ITA', ( (TYPE_ITA_C, 'ITA Type C (CEE 7/16)'), - (TYPE_ITA_E, 'ITA Type E (CEE 7/5)'), + (TYPE_ITA_E, 'ITA Type E (CEE 7/6)'), (TYPE_ITA_F, 'ITA Type F (CEE 7/4)'), (TYPE_ITA_EF, 'ITA Type E/F (CEE 7/7)'), (TYPE_ITA_G, 'ITA Type G (BS 1363)'), From f90c591c785df5493e1fb8f1ee0e193bbe63e15a Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Mon, 22 Nov 2021 13:36:51 -0500 Subject: [PATCH 264/289] Fixes #7890: Correct typo --- docs/release-notes/version-3.0.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/release-notes/version-3.0.md b/docs/release-notes/version-3.0.md index 184b5debb..92a3dd39e 100644 --- a/docs/release-notes/version-3.0.md +++ b/docs/release-notes/version-3.0.md @@ -448,7 +448,7 @@ Note that NetBox's `rqworker` process will _not_ service custom queues by defaul * [#6154](https://github.com/netbox-community/netbox/issues/6154) - Allow decimal values for cable lengths * [#6328](https://github.com/netbox-community/netbox/issues/6328) - Build and serve documentation locally -### Bug Fixes (from v3.2-beta2) +### Bug Fixes (from v3.0-beta2) * [#6977](https://github.com/netbox-community/netbox/issues/6977) - Truncate global search dropdown on small screens * [#6979](https://github.com/netbox-community/netbox/issues/6979) - Hide "create & add another" button for circuit terminations From 1e42fecf6645bfdf4b42a00b94e02c136a2c6f9e Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Wed, 24 Nov 2021 09:15:30 -0500 Subject: [PATCH 265/289] Changelog for #7657 --- docs/release-notes/version-3.0.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/release-notes/version-3.0.md b/docs/release-notes/version-3.0.md index 92a3dd39e..4bf7e54ce 100644 --- a/docs/release-notes/version-3.0.md +++ b/docs/release-notes/version-3.0.md @@ -14,6 +14,7 @@ ### Bug Fixes * [#7399](https://github.com/netbox-community/netbox/issues/7399) - Fix excessive CPU utilization when `AUTH_LDAP_FIND_GROUP_PERMS` is enabled +* [#7657](https://github.com/netbox-community/netbox/issues/7657) - Make change logging middleware thread-safe * [#7720](https://github.com/netbox-community/netbox/issues/7720) - Fix initialization of custom script MultiObjectVar field with multiple values * [#7729](https://github.com/netbox-community/netbox/issues/7729) - Fix permissions evaluation when displaying VLAN group VLANs table * [#7739](https://github.com/netbox-community/netbox/issues/7739) - Fix exception when tracing cable across circuit with no far end termination From 416caa8f50763d3ee6a8340f9e9fedbd53b5b4d0 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Wed, 24 Nov 2021 13:17:59 -0500 Subject: [PATCH 266/289] Hide code blocks when not needed --- netbox/templates/extras/webhook.html | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/netbox/templates/extras/webhook.html b/netbox/templates/extras/webhook.html index c92ec4c99..266fa9263 100644 --- a/netbox/templates/extras/webhook.html +++ b/netbox/templates/extras/webhook.html @@ -137,7 +137,11 @@ Additional Headers
-
{{ object.additional_headers }}
+ {% if object.additional_headers %} +
{{ object.additional_headers }}
+ {% else %} + None + {% endif %}
@@ -145,7 +149,11 @@ Body Template
-
{{ object.body_template }}
+ {% if object.body_template %} +
{{ object.body_template }}
+ {% else %} + None + {% endif %}
{% plugin_right_page object %} From 57ccbf44b8854311880499f99a9dc6b013b390be Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Wed, 24 Nov 2021 13:25:57 -0500 Subject: [PATCH 267/289] Release v3.0.11 --- .github/ISSUE_TEMPLATE/bug_report.yaml | 2 +- .github/ISSUE_TEMPLATE/feature_request.yaml | 2 +- docs/release-notes/version-3.0.md | 2 +- netbox/netbox/settings.py | 2 +- requirements.txt | 4 ++-- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.yaml b/.github/ISSUE_TEMPLATE/bug_report.yaml index 79fb0e334..4a6dba734 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yaml +++ b/.github/ISSUE_TEMPLATE/bug_report.yaml @@ -14,7 +14,7 @@ body: attributes: label: NetBox version description: What version of NetBox are you currently running? - placeholder: v3.0.10 + placeholder: v3.0.11 validations: required: true - type: dropdown diff --git a/.github/ISSUE_TEMPLATE/feature_request.yaml b/.github/ISSUE_TEMPLATE/feature_request.yaml index 76944eecb..4c3ab0277 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.yaml +++ b/.github/ISSUE_TEMPLATE/feature_request.yaml @@ -14,7 +14,7 @@ body: attributes: label: NetBox version description: What version of NetBox are you currently running? - placeholder: v3.0.10 + placeholder: v3.0.11 validations: required: true - type: dropdown diff --git a/docs/release-notes/version-3.0.md b/docs/release-notes/version-3.0.md index 4bf7e54ce..f76869f6e 100644 --- a/docs/release-notes/version-3.0.md +++ b/docs/release-notes/version-3.0.md @@ -1,6 +1,6 @@ # NetBox v3.0 -## v3.0.11 (FUTURE) +## v3.0.11 (2021-11-24) ### Enhancements diff --git a/netbox/netbox/settings.py b/netbox/netbox/settings.py index b7886b23c..8538c1d36 100644 --- a/netbox/netbox/settings.py +++ b/netbox/netbox/settings.py @@ -17,7 +17,7 @@ from django.core.validators import URLValidator # Environment setup # -VERSION = '3.0.11-dev' +VERSION = '3.0.11' # Hostname HOSTNAME = platform.node() diff --git a/requirements.txt b/requirements.txt index 84ad0c398..0f089a87c 100644 --- a/requirements.txt +++ b/requirements.txt @@ -7,7 +7,7 @@ django-mptt==0.13.4 django-pglocks==1.0.4 django-prometheus==2.1.0 django-redis==5.0.0 -django-rq==2.4.1 +django-rq==2.5.1 django-tables2==2.4.1 django-taggit==1.5.1 django-timezone-field==4.2.1 @@ -16,7 +16,7 @@ drf-yasg[validation]==1.20.0 graphene_django==2.15.0 gunicorn==20.1.0 Jinja2==3.0.3 -Markdown==3.3.4 +Markdown==3.3.6 markdown-include==0.6.0 mkdocs-material==7.3.6 netaddr==0.8.0 From 86ada33577786140899c28792c8c26fc68d599c5 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Wed, 24 Nov 2021 13:58:57 -0500 Subject: [PATCH 268/289] PRVB --- docs/release-notes/version-3.0.md | 4 ++++ netbox/netbox/settings.py | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/docs/release-notes/version-3.0.md b/docs/release-notes/version-3.0.md index f76869f6e..f7fbe06ab 100644 --- a/docs/release-notes/version-3.0.md +++ b/docs/release-notes/version-3.0.md @@ -1,5 +1,9 @@ # NetBox v3.0 +## v3.0.12 (FUTURE) + +--- + ## v3.0.11 (2021-11-24) ### Enhancements diff --git a/netbox/netbox/settings.py b/netbox/netbox/settings.py index 8538c1d36..7c205cca4 100644 --- a/netbox/netbox/settings.py +++ b/netbox/netbox/settings.py @@ -17,7 +17,7 @@ from django.core.validators import URLValidator # Environment setup # -VERSION = '3.0.11' +VERSION = '3.0.12-dev' # Hostname HOSTNAME = platform.node() From 8bb0cba949ca6fd4fe3d48b1cec0153ab1ae4817 Mon Sep 17 00:00:00 2001 From: kkthxbye <> Date: Thu, 25 Nov 2021 08:09:50 +0100 Subject: [PATCH 269/289] Fix #7751 - LDAP: Only get API user from ldap when FIND_GROUP_PERMS is enabled --- netbox/netbox/api/authentication.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/netbox/netbox/api/authentication.py b/netbox/netbox/api/authentication.py index 7f8bee318..5e177bfcb 100644 --- a/netbox/netbox/api/authentication.py +++ b/netbox/netbox/api/authentication.py @@ -29,10 +29,13 @@ class TokenAuthentication(authentication.TokenAuthentication): if settings.REMOTE_AUTH_BACKEND == 'netbox.authentication.LDAPBackend': from netbox.authentication import LDAPBackend ldap_backend = LDAPBackend() - user = ldap_backend.populate_user(token.user.username) - # If the user is found in the LDAP directory use it, if not fallback to the local user - if user: - return user, token + + # Load from LDAP if FIND_GROUP_PERMS is active + if ldap_backend.settings.FIND_GROUP_PERMS: + user = ldap_backend.populate_user(token.user.username) + # If the user is found in the LDAP directory use it, if not fallback to the local user + if user: + return user, token return token.user, token From a0b9ac7bcc195a5cd8e5577a0dff16cb51d9775f Mon Sep 17 00:00:00 2001 From: kkthxbye <> Date: Thu, 25 Nov 2021 12:14:07 +0100 Subject: [PATCH 270/289] UI: Improve performance of the quick filter --- netbox/project-static/dist/netbox.js | 2 +- netbox/project-static/dist/netbox.js.map | 2 +- netbox/project-static/src/search.ts | 22 ++++++++++++++++------ 3 files changed, 18 insertions(+), 8 deletions(-) diff --git a/netbox/project-static/dist/netbox.js b/netbox/project-static/dist/netbox.js index 6a60ff56d..b8567f060 100644 --- a/netbox/project-static/dist/netbox.js +++ b/netbox/project-static/dist/netbox.js @@ -6,7 +6,7 @@ `+E.join("")+` `}}function jv(){r.calendarContainer.classList.add("hasWeeks");var b=u("div","flatpickr-weekwrapper");b.appendChild(u("span","flatpickr-weekday",r.l10n.weekAbbreviation));var E=u("div","flatpickr-weeks");return b.appendChild(E),{weekWrapper:b,weekNumbers:E}}function Ro(b,E){E===void 0&&(E=!0);var w=E?b:b-r.currentMonth;w<0&&r._hidePrevMonthArrow===!0||w>0&&r._hideNextMonthArrow===!0||(r.currentMonth+=w,(r.currentMonth<0||r.currentMonth>11)&&(r.currentYear+=r.currentMonth>11?1:-1,r.currentMonth=(r.currentMonth+12)%12,ie("onYearChange"),Gn()),Ki(),ie("onMonthChange"),Ji())}function Hv(b,E){b===void 0&&(b=!0),E===void 0&&(E=!0),r.input.value="",r.altInput!==void 0&&(r.altInput.value=""),r.mobileInput!==void 0&&(r.mobileInput.value=""),r.selectedDates=[],r.latestSelectedDateObj=void 0,E===!0&&(r.currentYear=r._initialDate.getFullYear(),r.currentMonth=r._initialDate.getMonth()),r.showTimeInput=!1,r.config.enableTime===!0&&Te(),r.redraw(),b&&ie("onChange")}function qv(){r.isOpen=!1,r.isMobile||(r.calendarContainer!==void 0&&r.calendarContainer.classList.remove("open"),r._input!==void 0&&r._input.classList.remove("active")),ie("onClose")}function $v(){r.config!==void 0&&ie("onDestroy");for(var b=r._handlers.length;b--;){var E=r._handlers[b];E.element.removeEventListener(E.event,E.handler,E.options)}if(r._handlers=[],r.mobileInput)r.mobileInput.parentNode&&r.mobileInput.parentNode.removeChild(r.mobileInput),r.mobileInput=void 0;else if(r.calendarContainer&&r.calendarContainer.parentNode)if(r.config.static&&r.calendarContainer.parentNode){var w=r.calendarContainer.parentNode;if(w.lastChild&&w.removeChild(w.lastChild),w.parentNode){for(;w.firstChild;)w.parentNode.insertBefore(w.firstChild,w);w.parentNode.removeChild(w)}}else r.calendarContainer.parentNode.removeChild(r.calendarContainer);r.altInput&&(r.input.type="text",r.altInput.parentNode&&r.altInput.parentNode.removeChild(r.altInput),delete r.altInput),r.input&&(r.input.type=r.input._type,r.input.classList.remove("flatpickr-input"),r.input.removeAttribute("readonly"),r.input.value=""),["_showTimeInput","latestSelectedDateObj","_hideNextMonthArrow","_hidePrevMonthArrow","__hideNextMonthArrow","__hidePrevMonthArrow","isMobile","isOpen","selectedDateElem","minDateHasTime","maxDateHasTime","days","daysContainer","_input","_positionElement","innerContainer","rContainer","monthNav","todayDateElem","calendarContainer","weekdayContainer","prevMonthNav","nextMonthNav","monthsDropdownContainer","currentMonthElement","currentYearElement","navigationCurrentMonth","selectedDateElem","config"].forEach(function(D){try{delete r[D]}catch(R){}})}function Xn(b){return r.config.appendTo&&r.config.appendTo.contains(b)?!0:r.calendarContainer.contains(b)}function jo(b){if(r.isOpen&&!r.config.inline){var E=p(b),w=Xn(E),D=E===r.input||E===r.altInput||r.element.contains(E)||b.path&&b.path.indexOf&&(~b.path.indexOf(r.input)||~b.path.indexOf(r.altInput)),R=b.type==="blur"?D&&b.relatedTarget&&!Xn(b.relatedTarget):!D&&!w&&!Xn(b.relatedTarget),P=!r.config.ignoredFocusElements.some(function(F){return F.contains(E)});R&&P&&(r.timeContainer!==void 0&&r.minuteElement!==void 0&&r.hourElement!==void 0&&q(),r.close(),r.config.mode==="range"&&r.selectedDates.length===1&&(r.clear(!1),r.redraw()))}}function Gi(b){if(!(!b||r.config.minDate&&br.config.maxDate.getFullYear())){var E=b,w=r.currentYear!==E;r.currentYear=E||r.currentYear,r.config.maxDate&&r.currentYear===r.config.maxDate.getFullYear()?r.currentMonth=Math.min(r.config.maxDate.getMonth(),r.currentMonth):r.config.minDate&&r.currentYear===r.config.minDate.getFullYear()&&(r.currentMonth=Math.max(r.config.minDate.getMonth(),r.currentMonth)),w&&(r.redraw(),ie("onYearChange"),Gn())}}function zt(b,E){E===void 0&&(E=!0);var w=r.parseDate(b,void 0,E);if(r.config.minDate&&w&&k(w,r.config.minDate,E!==void 0?E:!r.minDateHasTime)<0||r.config.maxDate&&w&&k(w,r.config.maxDate,E!==void 0?E:!r.maxDateHasTime)>0)return!1;if(r.config.enable.length===0&&r.config.disable.length===0)return!0;if(w===void 0)return!1;for(var D=r.config.enable.length>0,R=D?r.config.enable:r.config.disable,P=0,F=void 0;P=F.from.getTime()&&w.getTime()<=F.to.getTime())return D}return!D}function Xi(b){return r.daysContainer!==void 0?b.className.indexOf("hidden")===-1&&r.daysContainer.contains(b):!1}function Fv(b){var E=b.target===r._input,w=r.config.allowInput,D=r.isOpen&&(!w||!E),R=r.config.inline&&E&&!w;if(b.keyCode===13&&E){if(w)return r.setDate(r._input.value,!0,b.target===r.altInput?r.config.altFormat:r.config.dateFormat),b.target.blur();r.open()}else if(Xn(b.target)||D||R){var P=!!r.timeContainer&&r.timeContainer.contains(b.target);switch(b.keyCode){case 13:P?(b.preventDefault(),q(),qo()):zl(b);break;case 27:b.preventDefault(),qo();break;case 8:case 46:E&&!r.config.allowInput&&(b.preventDefault(),r.clear());break;case 37:case 39:if(!P&&!E){if(b.preventDefault(),r.daysContainer!==void 0&&(w===!1||document.activeElement&&Xi(document.activeElement))){var F=b.keyCode===39?1:-1;b.ctrlKey?(b.stopPropagation(),Ro(F),At(ct(1),0)):At(void 0,F)}}else r.hourElement&&r.hourElement.focus();break;case 38:case 40:b.preventDefault();var V=b.keyCode===40?1:-1;r.daysContainer&&b.target.$i!==void 0||b.target===r.input||b.target===r.altInput?b.ctrlKey?(b.stopPropagation(),Gi(r.currentYear-V),At(ct(1),0)):P||At(void 0,V*7):b.target===r.currentYearElement?Gi(r.currentYear-V):r.config.enableTime&&(!P&&r.hourElement&&r.hourElement.focus(),q(b),r._debouncedChange());break;case 9:if(P){var U=[r.hourElement,r.minuteElement,r.secondElement,r.amPM].concat(r.pluginElements).filter(function(xe){return xe}),X=U.indexOf(b.target);if(X!==-1){var J=U[X+(b.shiftKey?-1:1)];b.preventDefault(),(J||r._input).focus()}}else!r.config.noCalendar&&r.daysContainer&&r.daysContainer.contains(b.target)&&b.shiftKey&&(b.preventDefault(),r._input.focus());break;default:break}}if(r.amPM!==void 0&&b.target===r.amPM)switch(b.key){case r.l10n.amPM[0].charAt(0):case r.l10n.amPM[0].charAt(0).toLowerCase():r.amPM.textContent=r.l10n.amPM[0],ee(),ut();break;case r.l10n.amPM[1].charAt(0):case r.l10n.amPM[1].charAt(0).toLowerCase():r.amPM.textContent=r.l10n.amPM[1],ee(),ut();break}(E||Xn(b.target))&&ie("onKeyDown",b)}function Ho(b){if(!(r.selectedDates.length!==1||b&&(!b.classList.contains("flatpickr-day")||b.classList.contains("flatpickr-disabled")))){for(var E=b?b.dateObj.getTime():r.days.firstElementChild.dateObj.getTime(),w=r.parseDate(r.selectedDates[0],void 0,!0).getTime(),D=Math.min(E,r.selectedDates[0].getTime()),R=Math.max(E,r.selectedDates[0].getTime()),P=!1,F=0,V=0,U=D;UD&&UF)?F=U:U>w&&(!V||U0&&ht0&&ht>V;if(er)return ft.classList.add("notAllowed"),["inRange","startRange","endRange"].forEach(function(Zn){ft.classList.remove(Zn)}),"continue";if(P&&!er)return"continue";["startRange","inRange","endRange","notAllowed"].forEach(function(Zn){ft.classList.remove(Zn)}),b!==void 0&&(b.classList.add(E<=r.selectedDates[0].getTime()?"startRange":"endRange"),wE&&ht===w&&ft.classList.add("endRange"),ht>=F&&(V===0||ht<=V)&&M(ht,w,E)&&ft.classList.add("inRange"))},dt=0,Jn=J.children.length;dt0||w.getMinutes()>0||w.getSeconds()>0),r.selectedDates&&(r.selectedDates=r.selectedDates.filter(function(R){return zt(R)}),!r.selectedDates.length&&b==="min"&&we(w),ut()),r.daysContainer&&(Bl(),w!==void 0?r.currentYearElement[b]=w.getFullYear().toString():r.currentYearElement.removeAttribute(b),r.currentYearElement.disabled=!!D&&w!==void 0&&D.getFullYear()===w.getFullYear())}}function Wv(){var b=["wrap","weekNumbers","allowInput","clickOpens","time_24hr","enableTime","noCalendar","altInput","shorthandCurrentMonth","inline","static","enableSeconds","disableMobile"],E=t({},T,JSON.parse(JSON.stringify(S.dataset||{}))),w={};r.config.parseDate=E.parseDate,r.config.formatDate=E.formatDate,Object.defineProperty(r.config,"enable",{get:function(){return r.config._enable},set:function(J){r.config._enable=Vl(J)}}),Object.defineProperty(r.config,"disable",{get:function(){return r.config._disable},set:function(J){r.config._disable=Vl(J)}});var D=E.mode==="time";if(!E.dateFormat&&(E.enableTime||D)){var R=z.defaultConfig.dateFormat||n.dateFormat;w.dateFormat=E.noCalendar||D?"H:i"+(E.enableSeconds?":S":""):R+" H:i"+(E.enableSeconds?":S":"")}if(E.altInput&&(E.enableTime||D)&&!E.altFormat){var P=z.defaultConfig.altFormat||n.altFormat;w.altFormat=E.noCalendar||D?"h:i"+(E.enableSeconds?":S K":" K"):P+(" h:i"+(E.enableSeconds?":S":"")+" K")}E.altInputClass||(r.config.altInputClass=r.input.className+" "+r.config.altInputClass),Object.defineProperty(r.config,"minDate",{get:function(){return r.config._minDate},set:$l("min")}),Object.defineProperty(r.config,"maxDate",{get:function(){return r.config._maxDate},set:$l("max")});var F=function(J){return function(xe){r.config[J==="min"?"_minTime":"_maxTime"]=r.parseDate(xe,"H:i:S")}};Object.defineProperty(r.config,"minTime",{get:function(){return r.config._minTime},set:F("min")}),Object.defineProperty(r.config,"maxTime",{get:function(){return r.config._maxTime},set:F("max")}),E.mode==="time"&&(r.config.noCalendar=!0,r.config.enableTime=!0),Object.assign(r.config,w,E);for(var V=0;V-1?r.config[X]=c(U[X]).map(L).concat(r.config[X]):typeof E[X]=="undefined"&&(r.config[X]=U[X])}ie("onParseConfig")}function Fl(){typeof r.config.locale!="object"&&typeof z.l10ns[r.config.locale]=="undefined"&&r.config.errorHandler(new Error("flatpickr: invalid locale "+r.config.locale)),r.l10n=t({},z.l10ns.default,typeof r.config.locale=="object"?r.config.locale:r.config.locale!=="default"?z.l10ns[r.config.locale]:void 0),y.K="("+r.l10n.amPM[0]+"|"+r.l10n.amPM[1]+"|"+r.l10n.amPM[0].toLowerCase()+"|"+r.l10n.amPM[1].toLowerCase()+")";var b=t({},T,JSON.parse(JSON.stringify(S.dataset||{})));b.time_24hr===void 0&&z.defaultConfig.time_24hr===void 0&&(r.config.time_24hr=r.l10n.time_24hr),r.formatDate=A(r),r.parseDate=O({config:r.config,l10n:r.l10n})}function Qn(b){if(r.calendarContainer!==void 0){ie("onPreCalendarPosition");var E=b||r._positionElement,w=Array.prototype.reduce.call(r.calendarContainer.children,function(tb,nb){return tb+nb.offsetHeight},0),D=r.calendarContainer.offsetWidth,R=r.config.position.split(" "),P=R[0],F=R.length>1?R[1]:null,V=E.getBoundingClientRect(),U=window.innerHeight-V.bottom,X=P==="above"||P!=="below"&&Uw,J=window.pageYOffset+V.top+(X?-w-2:E.offsetHeight+2);if(d(r.calendarContainer,"arrowTop",!X),d(r.calendarContainer,"arrowBottom",X),!r.config.inline){var xe=window.pageXOffset+V.left-(F!=null&&F==="center"?(D-V.width)/2:0),dt=window.document.body.offsetWidth-(window.pageXOffset+V.right),Jn=xe+D>window.document.body.offsetWidth,Bo=dt+D>window.document.body.offsetWidth;if(d(r.calendarContainer,"rightMost",Jn),!r.config.static)if(r.calendarContainer.style.top=J+"px",!Jn)r.calendarContainer.style.left=xe+"px",r.calendarContainer.style.right="auto";else if(!Bo)r.calendarContainer.style.left="auto",r.calendarContainer.style.right=dt+"px";else{var Zi=document.styleSheets[0];if(Zi===void 0)return;var ft=window.document.body.offsetWidth,zo=Math.max(0,ft/2-D/2),ht=".flatpickr-calendar.centerMost:before",er=".flatpickr-calendar.centerMost:after",Zn=Zi.cssRules.length,eb="{left:"+V.left+"px;right:auto;}";d(r.calendarContainer,"rightMost",!1),d(r.calendarContainer,"centerMost",!0),Zi.insertRule(ht+","+er+eb,Zn),r.calendarContainer.style.left=zo+"px",r.calendarContainer.style.right="auto"}}}}function Bl(){r.config.noCalendar||r.isMobile||(Ji(),Ki())}function qo(){r._input.focus(),window.navigator.userAgent.indexOf("MSIE")!==-1||navigator.msMaxTouchPoints!==void 0?setTimeout(r.close,0):r.close()}function zl(b){b.preventDefault(),b.stopPropagation();var E=function(J){return J.classList&&J.classList.contains("flatpickr-day")&&!J.classList.contains("flatpickr-disabled")&&!J.classList.contains("notAllowed")},w=m(b.target,E);if(w!==void 0){var D=w,R=r.latestSelectedDateObj=new Date(D.dateObj.getTime()),P=(R.getMonth()r.currentMonth+r.config.showMonths-1)&&r.config.mode!=="range";if(r.selectedDateElem=D,r.config.mode==="single")r.selectedDates=[R];else if(r.config.mode==="multiple"){var F=Fo(R);F?r.selectedDates.splice(parseInt(F),1):r.selectedDates.push(R)}else r.config.mode==="range"&&(r.selectedDates.length===2&&r.clear(!1,!1),r.latestSelectedDateObj=R,r.selectedDates.push(R),k(R,r.selectedDates[0],!0)!==0&&r.selectedDates.sort(function(J,xe){return J.getTime()-xe.getTime()}));if(ee(),P){var V=r.currentYear!==R.getFullYear();r.currentYear=R.getFullYear(),r.currentMonth=R.getMonth(),V&&(ie("onYearChange"),Gn()),ie("onMonthChange")}if(Ji(),Ki(),ut(),r.config.enableTime&&setTimeout(function(){return r.showTimeInput=!0},50),!P&&r.config.mode!=="range"&&r.config.showMonths===1?Ge(D):r.selectedDateElem!==void 0&&r.hourElement===void 0&&r.selectedDateElem&&r.selectedDateElem.focus(),r.hourElement!==void 0&&r.hourElement!==void 0&&r.hourElement.focus(),r.config.closeOnSelect){var U=r.config.mode==="single"&&!r.config.enableTime,X=r.config.mode==="range"&&r.selectedDates.length===2&&!r.config.enableTime;(U||X)&&qo()}lt()}}var Qi={locale:[Fl,Hl],showMonths:[Rl,I,jl],minDate:[ke],maxDate:[ke]};function Vv(b,E){if(b!==null&&typeof b=="object"){Object.assign(r.config,b);for(var w in b)Qi[w]!==void 0&&Qi[w].forEach(function(D){return D()})}else r.config[b]=E,Qi[b]!==void 0?Qi[b].forEach(function(D){return D()}):e.indexOf(b)>-1&&(r.config[b]=c(E));r.redraw(),ut(!1)}function Wl(b,E){var w=[];if(b instanceof Array)w=b.map(function(D){return r.parseDate(D,E)});else if(b instanceof Date||typeof b=="number")w=[r.parseDate(b,E)];else if(typeof b=="string")switch(r.config.mode){case"single":case"time":w=[r.parseDate(b,E)];break;case"multiple":w=b.split(r.config.conjunction).map(function(D){return r.parseDate(D,E)});break;case"range":w=b.split(r.l10n.rangeSeparator).map(function(D){return r.parseDate(D,E)});break;default:break}else r.config.errorHandler(new Error("Invalid date supplied: "+JSON.stringify(b)));r.selectedDates=w.filter(function(D){return D instanceof Date&&zt(D,!1)}),r.config.mode==="range"&&r.selectedDates.sort(function(D,R){return D.getTime()-R.getTime()})}function Yv(b,E,w){if(E===void 0&&(E=!1),w===void 0&&(w=r.config.dateFormat),b!==0&&!b||b instanceof Array&&b.length===0)return r.clear(E);Wl(b,w),r.showTimeInput=r.selectedDates.length>0,r.latestSelectedDateObj=r.selectedDates[r.selectedDates.length-1],r.redraw(),ke(),we(),r.selectedDates.length===0&&r.clear(!1),ut(E),E&&ie("onChange")}function Vl(b){return b.slice().map(function(E){return typeof E=="string"||typeof E=="number"||E instanceof Date?r.parseDate(E,void 0,!0):E&&typeof E=="object"&&E.from&&E.to?{from:r.parseDate(E.from,void 0),to:r.parseDate(E.to,void 0)}:E}).filter(function(E){return E})}function Uv(){r.selectedDates=[],r.now=r.parseDate(r.config.now)||new Date;var b=r.config.defaultDate||((r.input.nodeName==="INPUT"||r.input.nodeName==="TEXTAREA")&&r.input.placeholder&&r.input.value===r.input.placeholder?null:r.input.value);b&&Wl(b,r.config.dateFormat),r._initialDate=r.selectedDates.length>0?r.selectedDates[0]:r.config.minDate&&r.config.minDate.getTime()>r.now.getTime()?r.config.minDate:r.config.maxDate&&r.config.maxDate.getTime()0&&(r.latestSelectedDateObj=r.selectedDates[0]),r.config.minTime!==void 0&&(r.config.minTime=r.parseDate(r.config.minTime,"H:i")),r.config.maxTime!==void 0&&(r.config.maxTime=r.parseDate(r.config.maxTime,"H:i")),r.minDateHasTime=!!r.config.minDate&&(r.config.minDate.getHours()>0||r.config.minDate.getMinutes()>0||r.config.minDate.getSeconds()>0),r.maxDateHasTime=!!r.config.maxDate&&(r.config.maxDate.getHours()>0||r.config.maxDate.getMinutes()>0||r.config.maxDate.getSeconds()>0),Object.defineProperty(r,"showTimeInput",{get:function(){return r._showTimeInput},set:function(E){r._showTimeInput=E,r.calendarContainer&&d(r.calendarContainer,"showTimeInput",E),r.isOpen&&Qn()}})}function Kv(){if(r.input=r.config.wrap?S.querySelector("[data-input]"):S,!r.input){r.config.errorHandler(new Error("Invalid input element specified"));return}r.input._type=r.input.type,r.input.type="text",r.input.classList.add("flatpickr-input"),r._input=r.input,r.config.altInput&&(r.altInput=u(r.input.nodeName,r.config.altInputClass),r._input=r.altInput,r.altInput.placeholder=r.input.placeholder,r.altInput.disabled=r.input.disabled,r.altInput.required=r.input.required,r.altInput.tabIndex=r.input.tabIndex,r.altInput.type="text",r.input.setAttribute("type","hidden"),!r.config.static&&r.input.parentNode&&r.input.parentNode.insertBefore(r.altInput,r.input.nextSibling)),r.config.allowInput||r._input.setAttribute("readonly","readonly"),r._positionElement=r.config.positionElement||r._input}function Gv(){var b=r.config.enableTime?r.config.noCalendar?"time":"datetime-local":"date";r.mobileInput=u("input",r.input.className+" flatpickr-mobile"),r.mobileInput.step=r.input.getAttribute("step")||"any",r.mobileInput.tabIndex=1,r.mobileInput.type=b,r.mobileInput.disabled=r.input.disabled,r.mobileInput.required=r.input.required,r.mobileInput.placeholder=r.input.placeholder,r.mobileFormatStr=b==="datetime-local"?"Y-m-d\\TH:i:S":b==="date"?"Y-m-d":"H:i:S",r.selectedDates.length>0&&(r.mobileInput.defaultValue=r.mobileInput.value=r.formatDate(r.selectedDates[0],r.mobileFormatStr)),r.config.minDate&&(r.mobileInput.min=r.formatDate(r.config.minDate,"Y-m-d")),r.config.maxDate&&(r.mobileInput.max=r.formatDate(r.config.maxDate,"Y-m-d")),r.input.type="hidden",r.altInput!==void 0&&(r.altInput.type="hidden");try{r.input.parentNode&&r.input.parentNode.insertBefore(r.mobileInput,r.input.nextSibling)}catch(E){}ne(r.mobileInput,"change",function(E){r.setDate(E.target.value,!1,r.mobileFormatStr),ie("onChange"),ie("onClose")})}function Xv(b){if(r.isOpen===!0)return r.close();r.open(b)}function ie(b,E){if(r.config!==void 0){var w=r.config[b];if(w!==void 0&&w.length>0)for(var D=0;w[D]&&D=0&&k(b,r.selectedDates[1])<=0}function Ji(){r.config.noCalendar||r.isMobile||!r.monthNav||(r.yearElements.forEach(function(b,E){var w=new Date(r.currentYear,r.currentMonth,1);w.setMonth(r.currentMonth+E),r.config.showMonths>1||r.config.monthSelectorType==="static"?r.monthElements[E].textContent=v(w.getMonth(),r.config.shorthandCurrentMonth,r.l10n)+" ":r.monthsDropdownContainer.value=w.getMonth().toString(),b.value=w.getFullYear().toString()}),r._hidePrevMonthArrow=r.config.minDate!==void 0&&(r.currentYear===r.config.minDate.getFullYear()?r.currentMonth<=r.config.minDate.getMonth():r.currentYearr.config.maxDate.getMonth():r.currentYear>r.config.maxDate.getFullYear()))}function Yl(b){return r.selectedDates.map(function(E){return r.formatDate(E,b)}).filter(function(E,w,D){return r.config.mode!=="range"||r.config.enableTime||D.indexOf(E)===w}).join(r.config.mode!=="range"?r.config.conjunction:r.l10n.rangeSeparator)}function ut(b){b===void 0&&(b=!0),r.mobileInput!==void 0&&r.mobileFormatStr&&(r.mobileInput.value=r.latestSelectedDateObj!==void 0?r.formatDate(r.latestSelectedDateObj,r.mobileFormatStr):""),r.input.value=Yl(r.config.dateFormat),r.altInput!==void 0&&(r.altInput.value=Yl(r.config.altFormat)),b!==!1&&ie("onValueUpdate")}function Jv(b){var E=r.prevMonthNav.contains(b.target),w=r.nextMonthNav.contains(b.target);E||w?Ro(E?-1:1):r.yearElements.indexOf(b.target)>=0?b.target.select():b.target.classList.contains("arrowUp")?r.changeYear(r.currentYear+1):b.target.classList.contains("arrowDown")&&r.changeYear(r.currentYear-1)}function Zv(b){b.preventDefault();var E=b.type==="keydown",w=b.target;r.amPM!==void 0&&b.target===r.amPM&&(r.amPM.textContent=r.l10n.amPM[s(r.amPM.textContent===r.l10n.amPM[0])]);var D=parseFloat(w.getAttribute("min")),R=parseFloat(w.getAttribute("max")),P=parseFloat(w.getAttribute("step")),F=parseInt(w.value,10),V=b.delta||(E?b.which===38?1:-1:0),U=F+P*V;if(typeof w.value!="undefined"&&w.value.length===2){var X=w===r.hourElement,J=w===r.minuteElement;UR&&(U=w===r.hourElement?U-R-s(!r.amPM):D,J&&xt(void 0,1,r.hourElement)),r.amPM&&X&&(P===1?U+F===23:Math.abs(U-F)>P)&&(r.amPM.textContent=r.l10n.amPM[s(r.amPM.textContent===r.l10n.amPM[0])]),w.value=o(U)}}return N(),r}function Z(S,T){for(var r=Array.prototype.slice.call(S).filter(function(I){return I instanceof HTMLElement}),Y=[],N=0;Ntc,afterRead:()=>Jl,afterWrite:()=>rc,applyStyles:()=>xn,arrow:()=>rr,auto:()=>ti,basePlacements:()=>pt,beforeMain:()=>Zl,beforeRead:()=>Xl,beforeWrite:()=>nc,bottom:()=>fe,clippingParents:()=>Vo,computeStyles:()=>On,createPopper:()=>fr,createPopperBase:()=>fc,createPopperLite:()=>hc,detectOverflow:()=>Ae,end:()=>ni,eventListeners:()=>An,flip:()=>lr,hide:()=>cr,left:()=>ce,main:()=>ec,modifierPhases:()=>Uo,offset:()=>ur,placements:()=>ri,popper:()=>Wt,popperGenerator:()=>Qt,popperOffsets:()=>Dn,preventOverflow:()=>dr,read:()=>Ql,reference:()=>Yo,right:()=>le,start:()=>Xe,top:()=>oe,variationPlacements:()=>nr,viewport:()=>ii,write:()=>ic});var oe="top",fe="bottom",le="right",ce="left",ti="auto",pt=[oe,fe,le,ce],Xe="start",ni="end",Vo="clippingParents",ii="viewport",Wt="popper",Yo="reference",nr=pt.reduce(function(t,e){return t.concat([e+"-"+Xe,e+"-"+ni])},[]),ri=[].concat(pt,[ti]).reduce(function(t,e){return t.concat([e,e+"-"+Xe,e+"-"+ni])},[]),Xl="beforeRead",Ql="read",Jl="afterRead",Zl="beforeMain",ec="main",tc="afterMain",nc="beforeWrite",ic="write",rc="afterWrite",Uo=[Xl,Ql,Jl,Zl,ec,tc,nc,ic,rc];function ge(t){return t?(t.nodeName||"").toLowerCase():null}function se(t){if(t==null)return window;if(t.toString()!=="[object Window]"){var e=t.ownerDocument;return e&&e.defaultView||window}return t}function mt(t){var e=se(t).Element;return t instanceof e||t instanceof Element}function ue(t){var e=se(t).HTMLElement;return t instanceof e||t instanceof HTMLElement}function ir(t){if(typeof ShadowRoot=="undefined")return!1;var e=se(t).ShadowRoot;return t instanceof e||t instanceof ShadowRoot}function fb(t){var e=t.state;Object.keys(e.elements).forEach(function(n){var i=e.styles[n]||{},o=e.attributes[n]||{},s=e.elements[n];!ue(s)||!ge(s)||(Object.assign(s.style,i),Object.keys(o).forEach(function(a){var c=o[a];c===!1?s.removeAttribute(a):s.setAttribute(a,c===!0?"":c)}))})}function hb(t){var e=t.state,n={popper:{position:e.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(e.elements.popper.style,n.popper),e.styles=n,e.elements.arrow&&Object.assign(e.elements.arrow.style,n.arrow),function(){Object.keys(e.elements).forEach(function(i){var o=e.elements[i],s=e.attributes[i]||{},a=Object.keys(e.styles.hasOwnProperty(i)?e.styles[i]:n[i]),c=a.reduce(function(d,u){return d[u]="",d},{});!ue(o)||!ge(o)||(Object.assign(o.style,c),Object.keys(s).forEach(function(d){o.removeAttribute(d)}))})}}var xn={name:"applyStyles",enabled:!0,phase:"write",fn:fb,effect:hb,requires:["computeStyles"]};function ve(t){return t.split("-")[0]}var Ct=Math.round;function qe(t,e){e===void 0&&(e=!1);var n=t.getBoundingClientRect(),i=1,o=1;return ue(t)&&e&&(i=n.width/t.offsetWidth||1,o=n.height/t.offsetHeight||1),{width:Ct(n.width/i),height:Ct(n.height/o),top:Ct(n.top/o),right:Ct(n.right/i),bottom:Ct(n.bottom/o),left:Ct(n.left/i),x:Ct(n.left/i),y:Ct(n.top/o)}}function Vt(t){var e=qe(t),n=t.offsetWidth,i=t.offsetHeight;return Math.abs(e.width-n)<=1&&(n=e.width),Math.abs(e.height-i)<=1&&(i=e.height),{x:t.offsetLeft,y:t.offsetTop,width:n,height:i}}function oi(t,e){var n=e.getRootNode&&e.getRootNode();if(t.contains(e))return!0;if(n&&ir(n)){var i=e;do{if(i&&t.isSameNode(i))return!0;i=i.parentNode||i.host}while(i)}return!1}function Oe(t){return se(t).getComputedStyle(t)}function Ko(t){return["table","td","th"].indexOf(ge(t))>=0}function Ee(t){return((mt(t)?t.ownerDocument:t.document)||window.document).documentElement}function gt(t){return ge(t)==="html"?t:t.assignedSlot||t.parentNode||(ir(t)?t.host:null)||Ee(t)}function oc(t){return!ue(t)||Oe(t).position==="fixed"?null:t.offsetParent}function pb(t){var e=navigator.userAgent.toLowerCase().indexOf("firefox")!==-1,n=navigator.userAgent.indexOf("Trident")!==-1;if(n&&ue(t)){var i=Oe(t);if(i.position==="fixed")return null}for(var o=gt(t);ue(o)&&["html","body"].indexOf(ge(o))<0;){var s=Oe(o);if(s.transform!=="none"||s.perspective!=="none"||s.contain==="paint"||["transform","perspective"].indexOf(s.willChange)!==-1||e&&s.willChange==="filter"||e&&s.filter&&s.filter!=="none")return o;o=o.parentNode}return null}function Ye(t){for(var e=se(t),n=oc(t);n&&Ko(n)&&Oe(n).position==="static";)n=oc(n);return n&&(ge(n)==="html"||ge(n)==="body"&&Oe(n).position==="static")?e:n||pb(t)||e}function Yt(t){return["top","bottom"].indexOf(t)>=0?"x":"y"}var $e=Math.max,Lt=Math.min,si=Math.round;function Ut(t,e,n){return $e(t,Lt(e,n))}function ai(){return{top:0,right:0,bottom:0,left:0}}function li(t){return Object.assign({},ai(),t)}function ci(t,e){return e.reduce(function(n,i){return n[i]=t,n},{})}var mb=function(e,n){return e=typeof e=="function"?e(Object.assign({},n.rects,{placement:n.placement})):e,li(typeof e!="number"?e:ci(e,pt))};function gb(t){var e,n=t.state,i=t.name,o=t.options,s=n.elements.arrow,a=n.modifiersData.popperOffsets,c=ve(n.placement),d=Yt(c),u=[ce,le].indexOf(c)>=0,l=u?"height":"width";if(!(!s||!a)){var m=mb(o.padding,n),f=Vt(s),p=d==="y"?oe:ce,g=d==="y"?fe:le,v=n.rects.reference[l]+n.rects.reference[d]-a[d]-n.rects.popper[l],h=a[d]-n.rects.reference[d],y=Ye(s),_=y?d==="y"?y.clientHeight||0:y.clientWidth||0:0,A=v/2-h/2,O=m[p],k=_-f[l]-m[g],M=_/2-f[l]/2+A,H=Ut(O,M,k),$=d;n.modifiersData[i]=(e={},e[$]=H,e.centerOffset=H-M,e)}}function vb(t){var e=t.state,n=t.options,i=n.element,o=i===void 0?"[data-popper-arrow]":i;o!=null&&(typeof o=="string"&&(o=e.elements.popper.querySelector(o),!o)||!oi(e.elements.popper,o)||(e.elements.arrow=o))}var rr={name:"arrow",enabled:!0,phase:"main",fn:gb,effect:vb,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};var bb={top:"auto",right:"auto",bottom:"auto",left:"auto"};function yb(t){var e=t.x,n=t.y,i=window,o=i.devicePixelRatio||1;return{x:si(si(e*o)/o)||0,y:si(si(n*o)/o)||0}}function sc(t){var e,n=t.popper,i=t.popperRect,o=t.placement,s=t.offsets,a=t.position,c=t.gpuAcceleration,d=t.adaptive,u=t.roundOffsets,l=u===!0?yb(s):typeof u=="function"?u(s):s,m=l.x,f=m===void 0?0:m,p=l.y,g=p===void 0?0:p,v=s.hasOwnProperty("x"),h=s.hasOwnProperty("y"),y=ce,_=oe,A=window;if(d){var O=Ye(n),k="clientHeight",M="clientWidth";O===se(n)&&(O=Ee(n),Oe(O).position!=="static"&&(k="scrollHeight",M="scrollWidth")),O=O,o===oe&&(_=fe,g-=O[k]-i.height,g*=c?1:-1),o===ce&&(y=le,f-=O[M]-i.width,f*=c?1:-1)}var H=Object.assign({position:a},d&&bb);if(c){var $;return Object.assign({},H,($={},$[_]=h?"0":"",$[y]=v?"0":"",$.transform=(A.devicePixelRatio||1)<2?"translate("+f+"px, "+g+"px)":"translate3d("+f+"px, "+g+"px, 0)",$))}return Object.assign({},H,(e={},e[_]=h?g+"px":"",e[y]=v?f+"px":"",e.transform="",e))}function Eb(t){var e=t.state,n=t.options,i=n.gpuAcceleration,o=i===void 0?!0:i,s=n.adaptive,a=s===void 0?!0:s,c=n.roundOffsets,d=c===void 0?!0:c;if(!1)var u;var l={placement:ve(e.placement),popper:e.elements.popper,popperRect:e.rects.popper,gpuAcceleration:o};e.modifiersData.popperOffsets!=null&&(e.styles.popper=Object.assign({},e.styles.popper,sc(Object.assign({},l,{offsets:e.modifiersData.popperOffsets,position:e.options.strategy,adaptive:a,roundOffsets:d})))),e.modifiersData.arrow!=null&&(e.styles.arrow=Object.assign({},e.styles.arrow,sc(Object.assign({},l,{offsets:e.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:d})))),e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-placement":e.placement})}var On={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:Eb,data:{}};var or={passive:!0};function _b(t){var e=t.state,n=t.instance,i=t.options,o=i.scroll,s=o===void 0?!0:o,a=i.resize,c=a===void 0?!0:a,d=se(e.elements.popper),u=[].concat(e.scrollParents.reference,e.scrollParents.popper);return s&&u.forEach(function(l){l.addEventListener("scroll",n.update,or)}),c&&d.addEventListener("resize",n.update,or),function(){s&&u.forEach(function(l){l.removeEventListener("scroll",n.update,or)}),c&&d.removeEventListener("resize",n.update,or)}}var An={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:_b,data:{}};var Sb={left:"right",right:"left",bottom:"top",top:"bottom"};function Cn(t){return t.replace(/left|right|bottom|top/g,function(e){return Sb[e]})}var wb={start:"end",end:"start"};function sr(t){return t.replace(/start|end/g,function(e){return wb[e]})}function Kt(t){var e=se(t),n=e.pageXOffset,i=e.pageYOffset;return{scrollLeft:n,scrollTop:i}}function Gt(t){return qe(Ee(t)).left+Kt(t).scrollLeft}function Go(t){var e=se(t),n=Ee(t),i=e.visualViewport,o=n.clientWidth,s=n.clientHeight,a=0,c=0;return i&&(o=i.width,s=i.height,/^((?!chrome|android).)*safari/i.test(navigator.userAgent)||(a=i.offsetLeft,c=i.offsetTop)),{width:o,height:s,x:a+Gt(t),y:c}}function Xo(t){var e,n=Ee(t),i=Kt(t),o=(e=t.ownerDocument)==null?void 0:e.body,s=$e(n.scrollWidth,n.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),a=$e(n.scrollHeight,n.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),c=-i.scrollLeft+Gt(t),d=-i.scrollTop;return Oe(o||n).direction==="rtl"&&(c+=$e(n.clientWidth,o?o.clientWidth:0)-s),{width:s,height:a,x:c,y:d}}function Xt(t){var e=Oe(t),n=e.overflow,i=e.overflowX,o=e.overflowY;return/auto|scroll|overlay|hidden/.test(n+o+i)}function ar(t){return["html","body","#document"].indexOf(ge(t))>=0?t.ownerDocument.body:ue(t)&&Xt(t)?t:ar(gt(t))}function Dt(t,e){var n;e===void 0&&(e=[]);var i=ar(t),o=i===((n=t.ownerDocument)==null?void 0:n.body),s=se(i),a=o?[s].concat(s.visualViewport||[],Xt(i)?i:[]):i,c=e.concat(a);return o?c:c.concat(Dt(gt(a)))}function Ln(t){return Object.assign({},t,{left:t.x,top:t.y,right:t.x+t.width,bottom:t.y+t.height})}function Tb(t){var e=qe(t);return e.top=e.top+t.clientTop,e.left=e.left+t.clientLeft,e.bottom=e.top+t.clientHeight,e.right=e.left+t.clientWidth,e.width=t.clientWidth,e.height=t.clientHeight,e.x=e.left,e.y=e.top,e}function ac(t,e){return e===ii?Ln(Go(t)):ue(e)?Tb(e):Ln(Xo(Ee(t)))}function xb(t){var e=Dt(gt(t)),n=["absolute","fixed"].indexOf(Oe(t).position)>=0,i=n&&ue(t)?Ye(t):t;return mt(i)?e.filter(function(o){return mt(o)&&oi(o,i)&&ge(o)!=="body"}):[]}function Qo(t,e,n){var i=e==="clippingParents"?xb(t):[].concat(e),o=[].concat(i,[n]),s=o[0],a=o.reduce(function(c,d){var u=ac(t,d);return c.top=$e(u.top,c.top),c.right=Lt(u.right,c.right),c.bottom=Lt(u.bottom,c.bottom),c.left=$e(u.left,c.left),c},ac(t,s));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}function Qe(t){return t.split("-")[1]}function ui(t){var e=t.reference,n=t.element,i=t.placement,o=i?ve(i):null,s=i?Qe(i):null,a=e.x+e.width/2-n.width/2,c=e.y+e.height/2-n.height/2,d;switch(o){case oe:d={x:a,y:e.y-n.height};break;case fe:d={x:a,y:e.y+e.height};break;case le:d={x:e.x+e.width,y:c};break;case ce:d={x:e.x-n.width,y:c};break;default:d={x:e.x,y:e.y}}var u=o?Yt(o):null;if(u!=null){var l=u==="y"?"height":"width";switch(s){case Xe:d[u]=d[u]-(e[l]/2-n[l]/2);break;case ni:d[u]=d[u]+(e[l]/2-n[l]/2);break;default:}}return d}function Ae(t,e){e===void 0&&(e={});var n=e,i=n.placement,o=i===void 0?t.placement:i,s=n.boundary,a=s===void 0?Vo:s,c=n.rootBoundary,d=c===void 0?ii:c,u=n.elementContext,l=u===void 0?Wt:u,m=n.altBoundary,f=m===void 0?!1:m,p=n.padding,g=p===void 0?0:p,v=li(typeof g!="number"?g:ci(g,pt)),h=l===Wt?Yo:Wt,y=t.elements.reference,_=t.rects.popper,A=t.elements[f?h:l],O=Qo(mt(A)?A:A.contextElement||Ee(t.elements.popper),a,d),k=qe(y),M=ui({reference:k,element:_,strategy:"absolute",placement:o}),H=Ln(Object.assign({},_,M)),$=l===Wt?H:k,G={top:O.top-$.top+v.top,bottom:$.bottom-O.bottom+v.bottom,left:O.left-$.left+v.left,right:$.right-O.right+v.right},Z=t.modifiersData.offset;if(l===Wt&&Z){var z=Z[o];Object.keys(G).forEach(function(S){var T=[le,fe].indexOf(S)>=0?1:-1,r=[oe,fe].indexOf(S)>=0?"y":"x";G[S]+=z[r]*T})}return G}function Jo(t,e){e===void 0&&(e={});var n=e,i=n.placement,o=n.boundary,s=n.rootBoundary,a=n.padding,c=n.flipVariations,d=n.allowedAutoPlacements,u=d===void 0?ri:d,l=Qe(i),m=l?c?nr:nr.filter(function(g){return Qe(g)===l}):pt,f=m.filter(function(g){return u.indexOf(g)>=0});f.length===0&&(f=m);var p=f.reduce(function(g,v){return g[v]=Ae(t,{placement:v,boundary:o,rootBoundary:s,padding:a})[ve(v)],g},{});return Object.keys(p).sort(function(g,v){return p[g]-p[v]})}function Ob(t){if(ve(t)===ti)return[];var e=Cn(t);return[sr(t),e,sr(e)]}function Ab(t){var e=t.state,n=t.options,i=t.name;if(!e.modifiersData[i]._skip){for(var o=n.mainAxis,s=o===void 0?!0:o,a=n.altAxis,c=a===void 0?!0:a,d=n.fallbackPlacements,u=n.padding,l=n.boundary,m=n.rootBoundary,f=n.altBoundary,p=n.flipVariations,g=p===void 0?!0:p,v=n.allowedAutoPlacements,h=e.options.placement,y=ve(h),_=y===h,A=d||(_||!g?[Cn(h)]:Ob(h)),O=[h].concat(A).reduce(function(Te,pe){return Te.concat(ve(pe)===ti?Jo(e,{placement:pe,boundary:l,rootBoundary:m,padding:u,flipVariations:g,allowedAutoPlacements:v}):pe)},[]),k=e.rects.reference,M=e.rects.popper,H=new Map,$=!0,G=O[0],Z=0;Z=0,Y=r?"width":"height",N=Ae(e,{placement:z,boundary:l,rootBoundary:m,altBoundary:f,padding:u}),L=r?T?le:ce:T?fe:oe;k[Y]>M[Y]&&(L=Cn(L));var I=Cn(L),q=[];if(s&&q.push(N[S]<=0),c&&q.push(N[L]<=0,N[I]<=0),q.every(function(Te){return Te})){G=z,$=!1;break}H.set(z,q)}if($)for(var W=g?3:1,te=function(pe){var at=O.find(function(ne){var me=H.get(ne);if(me)return me.slice(0,pe).every(function(lt){return lt})});if(at)return G=at,"break"},ee=W;ee>0;ee--){var we=te(ee);if(we==="break")break}e.placement!==G&&(e.modifiersData[i]._skip=!0,e.placement=G,e.reset=!0)}}var lr={name:"flip",enabled:!0,phase:"main",fn:Ab,requiresIfExists:["offset"],data:{_skip:!1}};function lc(t,e,n){return n===void 0&&(n={x:0,y:0}),{top:t.top-e.height-n.y,right:t.right-e.width+n.x,bottom:t.bottom-e.height+n.y,left:t.left-e.width-n.x}}function cc(t){return[oe,le,fe,ce].some(function(e){return t[e]>=0})}function Cb(t){var e=t.state,n=t.name,i=e.rects.reference,o=e.rects.popper,s=e.modifiersData.preventOverflow,a=Ae(e,{elementContext:"reference"}),c=Ae(e,{altBoundary:!0}),d=lc(a,i),u=lc(c,o,s),l=cc(d),m=cc(u);e.modifiersData[n]={referenceClippingOffsets:d,popperEscapeOffsets:u,isReferenceHidden:l,hasPopperEscaped:m},e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-reference-hidden":l,"data-popper-escaped":m})}var cr={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:Cb};function Lb(t,e,n){var i=ve(t),o=[ce,oe].indexOf(i)>=0?-1:1,s=typeof n=="function"?n(Object.assign({},e,{placement:t})):n,a=s[0],c=s[1];return a=a||0,c=(c||0)*o,[ce,le].indexOf(i)>=0?{x:c,y:a}:{x:a,y:c}}function Db(t){var e=t.state,n=t.options,i=t.name,o=n.offset,s=o===void 0?[0,0]:o,a=ri.reduce(function(l,m){return l[m]=Lb(m,e.rects,s),l},{}),c=a[e.placement],d=c.x,u=c.y;e.modifiersData.popperOffsets!=null&&(e.modifiersData.popperOffsets.x+=d,e.modifiersData.popperOffsets.y+=u),e.modifiersData[i]=a}var ur={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:Db};function Mb(t){var e=t.state,n=t.name;e.modifiersData[n]=ui({reference:e.rects.reference,element:e.rects.popper,strategy:"absolute",placement:e.placement})}var Dn={name:"popperOffsets",enabled:!0,phase:"read",fn:Mb,data:{}};function Zo(t){return t==="x"?"y":"x"}function Ib(t){var e=t.state,n=t.options,i=t.name,o=n.mainAxis,s=o===void 0?!0:o,a=n.altAxis,c=a===void 0?!1:a,d=n.boundary,u=n.rootBoundary,l=n.altBoundary,m=n.padding,f=n.tether,p=f===void 0?!0:f,g=n.tetherOffset,v=g===void 0?0:g,h=Ae(e,{boundary:d,rootBoundary:u,padding:m,altBoundary:l}),y=ve(e.placement),_=Qe(e.placement),A=!_,O=Yt(y),k=Zo(O),M=e.modifiersData.popperOffsets,H=e.rects.reference,$=e.rects.popper,G=typeof v=="function"?v(Object.assign({},e.rects,{placement:e.placement})):v,Z={x:0,y:0};if(!!M){if(s||c){var z=O==="y"?oe:ce,S=O==="y"?fe:le,T=O==="y"?"height":"width",r=M[O],Y=M[O]+h[z],N=M[O]-h[S],L=p?-$[T]/2:0,I=_===Xe?H[T]:$[T],q=_===Xe?-$[T]:-H[T],W=e.elements.arrow,te=p&&W?Vt(W):{width:0,height:0},ee=e.modifiersData["arrow#persistent"]?e.modifiersData["arrow#persistent"].padding:ai(),we=ee[z],Te=ee[S],pe=Ut(0,H[T],te[T]),at=A?H[T]/2-L-pe-we-G:I-pe-we-G,ne=A?-H[T]/2+L+pe+Te+G:q+pe+Te+G,me=e.elements.arrow&&Ye(e.elements.arrow),lt=me?O==="y"?me.clientTop||0:me.clientLeft||0:0,Tt=e.modifiersData.offset?e.modifiersData.offset[e.placement][O]:0,ke=M[O]+at-Tt-lt,Bt=M[O]+ne-Tt;if(s){var xt=Ut(p?Lt(Y,ke):Y,r,p?$e(N,Bt):N);M[O]=xt,Z[O]=xt-r}if(c){var Tn=O==="x"?oe:ce,Ot=O==="x"?fe:le,Ge=M[k],ct=Ge+h[Tn],Ui=Ge-h[Ot],At=Ut(p?Lt(ct,ke):ct,Ge,p?$e(Ui,Bt):Ui);M[k]=At,Z[k]=At-Ge}}e.modifiersData[i]=Z}}var dr={name:"preventOverflow",enabled:!0,phase:"main",fn:Ib,requiresIfExists:["offset"]};function es(t){return{scrollLeft:t.scrollLeft,scrollTop:t.scrollTop}}function ts(t){return t===se(t)||!ue(t)?Kt(t):es(t)}function kb(t){var e=t.getBoundingClientRect(),n=e.width/t.offsetWidth||1,i=e.height/t.offsetHeight||1;return n!==1||i!==1}function ns(t,e,n){n===void 0&&(n=!1);var i=ue(e),o=ue(e)&&kb(e),s=Ee(e),a=qe(t,o),c={scrollLeft:0,scrollTop:0},d={x:0,y:0};return(i||!i&&!n)&&((ge(e)!=="body"||Xt(s))&&(c=ts(e)),ue(e)?(d=qe(e,!0),d.x+=e.clientLeft,d.y+=e.clientTop):s&&(d.x=Gt(s))),{x:a.left+c.scrollLeft-d.x,y:a.top+c.scrollTop-d.y,width:a.width,height:a.height}}function Pb(t){var e=new Map,n=new Set,i=[];t.forEach(function(s){e.set(s.name,s)});function o(s){n.add(s.name);var a=[].concat(s.requires||[],s.requiresIfExists||[]);a.forEach(function(c){if(!n.has(c)){var d=e.get(c);d&&o(d)}}),i.push(s)}return t.forEach(function(s){n.has(s.name)||o(s)}),i}function is(t){var e=Pb(t);return Uo.reduce(function(n,i){return n.concat(e.filter(function(o){return o.phase===i}))},[])}function rs(t){var e;return function(){return e||(e=new Promise(function(n){Promise.resolve().then(function(){e=void 0,n(t())})})),e}}function os(t){var e=t.reduce(function(n,i){var o=n[i.name];return n[i.name]=o?Object.assign({},o,i,{options:Object.assign({},o.options,i.options),data:Object.assign({},o.data,i.data)}):i,n},{});return Object.keys(e).map(function(n){return e[n]})}var uc={placement:"bottom",modifiers:[],strategy:"absolute"};function dc(){for(var t=arguments.length,e=new Array(t),n=0;nn.matches(e))},parents(t,e){let n=[],i=t.parentNode;for(;i&&i.nodeType===Node.ELEMENT_NODE&&i.nodeType!==jb;)i.matches(e)&&n.push(i),i=i.parentNode;return n},prev(t,e){let n=t.previousElementSibling;for(;n;){if(n.matches(e))return[n];n=n.previousElementSibling}return[]},next(t,e){let n=t.nextElementSibling;for(;n;){if(n.matches(e))return[n];n=n.nextElementSibling}return[]}},Hb=1e6,qb=1e3,ss="transitionend",$b=t=>t==null?`${t}`:{}.toString.call(t).match(/\s([a-z]+)/i)[1].toLowerCase(),pc=t=>{do t+=Math.floor(Math.random()*Hb);while(document.getElementById(t));return t},mc=t=>{let e=t.getAttribute("data-bs-target");if(!e||e==="#"){let n=t.getAttribute("href");if(!n||!n.includes("#")&&!n.startsWith("."))return null;n.includes("#")&&!n.startsWith("#")&&(n=`#${n.split("#")[1]}`),e=n&&n!=="#"?n.trim():null}return e},as=t=>{let e=mc(t);return e&&document.querySelector(e)?e:null},Mt=t=>{let e=mc(t);return e?document.querySelector(e):null},Fb=t=>{if(!t)return 0;let{transitionDuration:e,transitionDelay:n}=window.getComputedStyle(t),i=Number.parseFloat(e),o=Number.parseFloat(n);return!i&&!o?0:(e=e.split(",")[0],n=n.split(",")[0],(Number.parseFloat(e)+Number.parseFloat(n))*qb)},gc=t=>{t.dispatchEvent(new Event(ss))},It=t=>!t||typeof t!="object"?!1:(typeof t.jquery!="undefined"&&(t=t[0]),typeof t.nodeType!="undefined"),Mn=t=>It(t)?t.jquery?t[0]:t:typeof t=="string"&&t.length>0?B.findOne(t):null,vt=(t,e,n)=>{Object.keys(n).forEach(i=>{let o=n[i],s=e[i],a=s&&It(s)?"element":$b(s);if(!new RegExp(o).test(a))throw new TypeError(`${t.toUpperCase()}: Option "${i}" provided type "${a}" but expected type "${o}".`)})},pr=t=>!It(t)||t.getClientRects().length===0?!1:getComputedStyle(t).getPropertyValue("visibility")==="visible",In=t=>!t||t.nodeType!==Node.ELEMENT_NODE||t.classList.contains("disabled")?!0:typeof t.disabled!="undefined"?t.disabled:t.hasAttribute("disabled")&&t.getAttribute("disabled")!=="false",vc=t=>{if(!document.documentElement.attachShadow)return null;if(typeof t.getRootNode=="function"){let e=t.getRootNode();return e instanceof ShadowRoot?e:null}return t instanceof ShadowRoot?t:t.parentNode?vc(t.parentNode):null},mr=()=>{},kn=t=>t.offsetHeight,bc=()=>{let{jQuery:t}=window;return t&&!document.body.hasAttribute("data-bs-no-jquery")?t:null},ls=[],Bb=t=>{document.readyState==="loading"?(ls.length||document.addEventListener("DOMContentLoaded",()=>{ls.forEach(e=>e())}),ls.push(t)):t()},De=()=>document.documentElement.dir==="rtl",Fe=t=>{Bb(()=>{let e=bc();if(e){let n=t.NAME,i=e.fn[n];e.fn[n]=t.jQueryInterface,e.fn[n].Constructor=t,e.fn[n].noConflict=()=>(e.fn[n]=i,t.jQueryInterface)}})},Jt=t=>{typeof t=="function"&&t()},yc=(t,e,n=!0)=>{if(!n){Jt(t);return}let i=5,o=Fb(e)+i,s=!1,a=({target:c})=>{c===e&&(s=!0,e.removeEventListener(ss,a),Jt(t))};e.addEventListener(ss,a),setTimeout(()=>{s||gc(e)},o)},Ec=(t,e,n,i)=>{let o=t.indexOf(e);if(o===-1)return t[!n&&i?t.length-1:0];let s=t.length;return o+=n?1:-1,i&&(o=(o+s)%s),t[Math.max(0,Math.min(o,s-1))]},zb=/[^.]*(?=\..*)\.|.*/,Wb=/\..*/,Vb=/::\d+$/,cs={},_c=1,Yb={mouseenter:"mouseover",mouseleave:"mouseout"},Ub=/^(mouseenter|mouseleave)/i,Sc=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function wc(t,e){return e&&`${e}::${_c++}`||t.uidEvent||_c++}function Tc(t){let e=wc(t);return t.uidEvent=e,cs[e]=cs[e]||{},cs[e]}function Kb(t,e){return function n(i){return i.delegateTarget=t,n.oneOff&&C.off(t,i.type,e),e.apply(t,[i])}}function Gb(t,e,n){return function i(o){let s=t.querySelectorAll(e);for(let{target:a}=o;a&&a!==this;a=a.parentNode)for(let c=s.length;c--;)if(s[c]===a)return o.delegateTarget=a,i.oneOff&&C.off(t,o.type,e,n),n.apply(a,[o]);return null}}function xc(t,e,n=null){let i=Object.keys(t);for(let o=0,s=i.length;ofunction(v){if(!v.relatedTarget||v.relatedTarget!==v.delegateTarget&&!v.delegateTarget.contains(v.relatedTarget))return g.call(this,v)};i?i=p(i):n=p(n)}let[s,a,c]=Oc(e,n,i),d=Tc(t),u=d[c]||(d[c]={}),l=xc(u,a,s?n:null);if(l){l.oneOff=l.oneOff&&o;return}let m=wc(a,e.replace(zb,"")),f=s?Gb(t,n,i):Kb(t,n);f.delegationSelector=s?n:null,f.originalHandler=a,f.oneOff=o,f.uidEvent=m,u[m]=f,t.addEventListener(c,f,s)}function us(t,e,n,i,o){let s=xc(e[n],i,o);!s||(t.removeEventListener(n,s,Boolean(o)),delete e[n][s.uidEvent])}function Xb(t,e,n,i){let o=e[n]||{};Object.keys(o).forEach(s=>{if(s.includes(i)){let a=o[s];us(t,e,n,a.originalHandler,a.delegationSelector)}})}function Cc(t){return t=t.replace(Wb,""),Yb[t]||t}var C={on(t,e,n,i){Ac(t,e,n,i,!1)},one(t,e,n,i){Ac(t,e,n,i,!0)},off(t,e,n,i){if(typeof e!="string"||!t)return;let[o,s,a]=Oc(e,n,i),c=a!==e,d=Tc(t),u=e.startsWith(".");if(typeof s!="undefined"){if(!d||!d[a])return;us(t,d,a,s,o?n:null);return}u&&Object.keys(d).forEach(m=>{Xb(t,d,m,e.slice(1))});let l=d[a]||{};Object.keys(l).forEach(m=>{let f=m.replace(Vb,"");if(!c||e.includes(f)){let p=l[m];us(t,d,a,p.originalHandler,p.delegationSelector)}})},trigger(t,e,n){if(typeof e!="string"||!t)return null;let i=bc(),o=Cc(e),s=e!==o,a=Sc.has(o),c,d=!0,u=!0,l=!1,m=null;return s&&i&&(c=i.Event(e,n),i(t).trigger(c),d=!c.isPropagationStopped(),u=!c.isImmediatePropagationStopped(),l=c.isDefaultPrevented()),a?(m=document.createEvent("HTMLEvents"),m.initEvent(o,d,!0)):m=new CustomEvent(e,{bubbles:d,cancelable:!0}),typeof n!="undefined"&&Object.keys(n).forEach(f=>{Object.defineProperty(m,f,{get(){return n[f]}})}),l&&m.preventDefault(),u&&t.dispatchEvent(m),m.defaultPrevented&&typeof c!="undefined"&&c.preventDefault(),m}},kt=new Map,Zt={set(t,e,n){kt.has(t)||kt.set(t,new Map);let i=kt.get(t);if(!i.has(e)&&i.size!==0){console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(i.keys())[0]}.`);return}i.set(e,n)},get(t,e){return kt.has(t)&&kt.get(t).get(e)||null},remove(t,e){if(!kt.has(t))return;let n=kt.get(t);n.delete(e),n.size===0&&kt.delete(t)}},Qb="5.0.2",Be=class{constructor(e){e=Mn(e),!!e&&(this._element=e,Zt.set(this._element,this.constructor.DATA_KEY,this))}dispose(){Zt.remove(this._element,this.constructor.DATA_KEY),C.off(this._element,this.constructor.EVENT_KEY),Object.getOwnPropertyNames(this).forEach(e=>{this[e]=null})}_queueCallback(e,n,i=!0){yc(e,n,i)}static getInstance(e){return Zt.get(e,this.DATA_KEY)}static getOrCreateInstance(e,n={}){return this.getInstance(e)||new this(e,typeof n=="object"?n:null)}static get VERSION(){return Qb}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}},Jb="alert",Zb="bs.alert",ds=`.${Zb}`,ey=".data-api",ty='[data-bs-dismiss="alert"]',ny=`close${ds}`,iy=`closed${ds}`,ry=`click${ds}${ey}`,oy="alert",sy="fade",ay="show",Pn=class extends Be{static get NAME(){return Jb}close(e){let n=e?this._getRootElement(e):this._element,i=this._triggerCloseEvent(n);i===null||i.defaultPrevented||this._removeElement(n)}_getRootElement(e){return Mt(e)||e.closest(`.${oy}`)}_triggerCloseEvent(e){return C.trigger(e,ny)}_removeElement(e){e.classList.remove(ay);let n=e.classList.contains(sy);this._queueCallback(()=>this._destroyElement(e),e,n)}_destroyElement(e){e.remove(),C.trigger(e,iy)}static jQueryInterface(e){return this.each(function(){let n=Pn.getOrCreateInstance(this);e==="close"&&n[e](this)})}static handleDismiss(e){return function(n){n&&n.preventDefault(),e.close(this)}}};C.on(document,ry,ty,Pn.handleDismiss(new Pn));Fe(Pn);var ly="button",cy="bs.button",uy=`.${cy}`,dy=".data-api",fy="active",Lc='[data-bs-toggle="button"]',hy=`click${uy}${dy}`,di=class extends Be{static get NAME(){return ly}toggle(){this._element.setAttribute("aria-pressed",this._element.classList.toggle(fy))}static jQueryInterface(e){return this.each(function(){let n=di.getOrCreateInstance(this);e==="toggle"&&n[e]()})}};C.on(document,hy,Lc,t=>{t.preventDefault();let e=t.target.closest(Lc);di.getOrCreateInstance(e).toggle()});Fe(di);function Dc(t){return t==="true"?!0:t==="false"?!1:t===Number(t).toString()?Number(t):t===""||t==="null"?null:t}function fs(t){return t.replace(/[A-Z]/g,e=>`-${e.toLowerCase()}`)}var be={setDataAttribute(t,e,n){t.setAttribute(`data-bs-${fs(e)}`,n)},removeDataAttribute(t,e){t.removeAttribute(`data-bs-${fs(e)}`)},getDataAttributes(t){if(!t)return{};let e={};return Object.keys(t.dataset).filter(n=>n.startsWith("bs")).forEach(n=>{let i=n.replace(/^bs/,"");i=i.charAt(0).toLowerCase()+i.slice(1,i.length),e[i]=Dc(t.dataset[n])}),e},getDataAttribute(t,e){return Dc(t.getAttribute(`data-bs-${fs(e)}`))},offset(t){let e=t.getBoundingClientRect();return{top:e.top+document.body.scrollTop,left:e.left+document.body.scrollLeft}},position(t){return{top:t.offsetTop,left:t.offsetLeft}}},Mc="carousel",py="bs.carousel",Ne=`.${py}`,Ic=".data-api",my="ArrowLeft",gy="ArrowRight",vy=500,by=40,kc={interval:5e3,keyboard:!0,slide:!1,pause:"hover",wrap:!0,touch:!0},yy={interval:"(number|boolean)",keyboard:"boolean",slide:"(boolean|string)",pause:"(string|boolean)",wrap:"boolean",touch:"boolean"},en="next",tn="prev",nn="left",fi="right",Ey={[my]:fi,[gy]:nn},_y=`slide${Ne}`,Pc=`slid${Ne}`,Sy=`keydown${Ne}`,wy=`mouseenter${Ne}`,Ty=`mouseleave${Ne}`,xy=`touchstart${Ne}`,Oy=`touchmove${Ne}`,Ay=`touchend${Ne}`,Cy=`pointerdown${Ne}`,Ly=`pointerup${Ne}`,Dy=`dragstart${Ne}`,My=`load${Ne}${Ic}`,Iy=`click${Ne}${Ic}`,ky="carousel",rn="active",Py="slide",Ny="carousel-item-end",Ry="carousel-item-start",jy="carousel-item-next",Hy="carousel-item-prev",qy="pointer-event",$y=".active",gr=".active.carousel-item",Fy=".carousel-item",By=".carousel-item img",zy=".carousel-item-next, .carousel-item-prev",Wy=".carousel-indicators",Vy="[data-bs-target]",Yy="[data-bs-slide], [data-bs-slide-to]",Uy='[data-bs-ride="carousel"]',Nc="touch",Rc="pen",Je=class extends Be{constructor(e,n){super(e);this._items=null,this._interval=null,this._activeElement=null,this._isPaused=!1,this._isSliding=!1,this.touchTimeout=null,this.touchStartX=0,this.touchDeltaX=0,this._config=this._getConfig(n),this._indicatorsElement=B.findOne(Wy,this._element),this._touchSupported="ontouchstart"in document.documentElement||navigator.maxTouchPoints>0,this._pointerEvent=Boolean(window.PointerEvent),this._addEventListeners()}static get Default(){return kc}static get NAME(){return Mc}next(){this._slide(en)}nextWhenVisible(){!document.hidden&&pr(this._element)&&this.next()}prev(){this._slide(tn)}pause(e){e||(this._isPaused=!0),B.findOne(zy,this._element)&&(gc(this._element),this.cycle(!0)),clearInterval(this._interval),this._interval=null}cycle(e){e||(this._isPaused=!1),this._interval&&(clearInterval(this._interval),this._interval=null),this._config&&this._config.interval&&!this._isPaused&&(this._updateInterval(),this._interval=setInterval((document.visibilityState?this.nextWhenVisible:this.next).bind(this),this._config.interval))}to(e){this._activeElement=B.findOne(gr,this._element);let n=this._getItemIndex(this._activeElement);if(e>this._items.length-1||e<0)return;if(this._isSliding){C.one(this._element,Pc,()=>this.to(e));return}if(n===e){this.pause(),this.cycle();return}let i=e>n?en:tn;this._slide(i,this._items[e])}_getConfig(e){return e=K(K(K({},kc),be.getDataAttributes(this._element)),typeof e=="object"?e:{}),vt(Mc,e,yy),e}_handleSwipe(){let e=Math.abs(this.touchDeltaX);if(e<=by)return;let n=e/this.touchDeltaX;this.touchDeltaX=0,!!n&&this._slide(n>0?fi:nn)}_addEventListeners(){this._config.keyboard&&C.on(this._element,Sy,e=>this._keydown(e)),this._config.pause==="hover"&&(C.on(this._element,wy,e=>this.pause(e)),C.on(this._element,Ty,e=>this.cycle(e))),this._config.touch&&this._touchSupported&&this._addTouchEventListeners()}_addTouchEventListeners(){let e=o=>{this._pointerEvent&&(o.pointerType===Rc||o.pointerType===Nc)?this.touchStartX=o.clientX:this._pointerEvent||(this.touchStartX=o.touches[0].clientX)},n=o=>{this.touchDeltaX=o.touches&&o.touches.length>1?0:o.touches[0].clientX-this.touchStartX},i=o=>{this._pointerEvent&&(o.pointerType===Rc||o.pointerType===Nc)&&(this.touchDeltaX=o.clientX-this.touchStartX),this._handleSwipe(),this._config.pause==="hover"&&(this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout(s=>this.cycle(s),vy+this._config.interval))};B.find(By,this._element).forEach(o=>{C.on(o,Dy,s=>s.preventDefault())}),this._pointerEvent?(C.on(this._element,Cy,o=>e(o)),C.on(this._element,Ly,o=>i(o)),this._element.classList.add(qy)):(C.on(this._element,xy,o=>e(o)),C.on(this._element,Oy,o=>n(o)),C.on(this._element,Ay,o=>i(o)))}_keydown(e){if(/input|textarea/i.test(e.target.tagName))return;let n=Ey[e.key];n&&(e.preventDefault(),this._slide(n))}_getItemIndex(e){return this._items=e&&e.parentNode?B.find(Fy,e.parentNode):[],this._items.indexOf(e)}_getItemByOrder(e,n){let i=e===en;return Ec(this._items,n,i,this._config.wrap)}_triggerSlideEvent(e,n){let i=this._getItemIndex(e),o=this._getItemIndex(B.findOne(gr,this._element));return C.trigger(this._element,_y,{relatedTarget:e,direction:n,from:o,to:i})}_setActiveIndicatorElement(e){if(this._indicatorsElement){let n=B.findOne($y,this._indicatorsElement);n.classList.remove(rn),n.removeAttribute("aria-current");let i=B.find(Vy,this._indicatorsElement);for(let o=0;o{C.trigger(this._element,Pc,{relatedTarget:a,direction:f,from:s,to:c})};if(this._element.classList.contains(Py)){a.classList.add(m),kn(a),o.classList.add(l),a.classList.add(l);let v=()=>{a.classList.remove(l,m),a.classList.add(rn),o.classList.remove(rn,m,l),this._isSliding=!1,setTimeout(g,0)};this._queueCallback(v,o,!0)}else o.classList.remove(rn),a.classList.add(rn),this._isSliding=!1,g();d&&this.cycle()}_directionToOrder(e){return[fi,nn].includes(e)?De()?e===nn?tn:en:e===nn?en:tn:e}_orderToDirection(e){return[en,tn].includes(e)?De()?e===tn?nn:fi:e===tn?fi:nn:e}static carouselInterface(e,n){let i=Je.getOrCreateInstance(e,n),{_config:o}=i;typeof n=="object"&&(o=K(K({},o),n));let s=typeof n=="string"?n:o.slide;if(typeof n=="number")i.to(n);else if(typeof s=="string"){if(typeof i[s]=="undefined")throw new TypeError(`No method named "${s}"`);i[s]()}else o.interval&&o.ride&&(i.pause(),i.cycle())}static jQueryInterface(e){return this.each(function(){Je.carouselInterface(this,e)})}static dataApiClickHandler(e){let n=Mt(this);if(!n||!n.classList.contains(ky))return;let i=K(K({},be.getDataAttributes(n)),be.getDataAttributes(this)),o=this.getAttribute("data-bs-slide-to");o&&(i.interval=!1),Je.carouselInterface(n,i),o&&Je.getInstance(n).to(o),e.preventDefault()}};C.on(document,Iy,Yy,Je.dataApiClickHandler);C.on(window,My,()=>{let t=B.find(Uy);for(let e=0,n=t.length;eu===this._element);c!==null&&d.length&&(this._selector=c,this._triggerArray.push(a))}this._parent=this._config.parent?this._getParent():null,this._config.parent||this._addAriaAndCollapsedClass(this._element,this._triggerArray),this._config.toggle&&this.toggle()}static get Default(){return hs}static get NAME(){return jc}toggle(){this._element.classList.contains(on)?this.hide():this.show()}show(){if(this._isTransitioning||this._element.classList.contains(on))return;let e,n;this._parent&&(e=B.find(nE,this._parent).filter(u=>typeof this._config.parent=="string"?u.getAttribute("data-bs-parent")===this._config.parent:u.classList.contains(pi)),e.length===0&&(e=null));let i=B.findOne(this._selector);if(e){let u=e.find(l=>i!==l);if(n=u?Me.getInstance(u):null,n&&n._isTransitioning)return}if(C.trigger(this._element,Xy).defaultPrevented)return;e&&e.forEach(u=>{i!==u&&Me.collapseInterface(u,"hide"),n||Zt.set(u,Hc,null)});let s=this._getDimension();this._element.classList.remove(pi),this._element.classList.add(vr),this._element.style[s]=0,this._triggerArray.length&&this._triggerArray.forEach(u=>{u.classList.remove(br),u.setAttribute("aria-expanded",!0)}),this.setTransitioning(!0);let a=()=>{this._element.classList.remove(vr),this._element.classList.add(pi,on),this._element.style[s]="",this.setTransitioning(!1),C.trigger(this._element,Qy)},d=`scroll${s[0].toUpperCase()+s.slice(1)}`;this._queueCallback(a,this._element,!0),this._element.style[s]=`${this._element[d]}px`}hide(){if(this._isTransitioning||!this._element.classList.contains(on)||C.trigger(this._element,Jy).defaultPrevented)return;let n=this._getDimension();this._element.style[n]=`${this._element.getBoundingClientRect()[n]}px`,kn(this._element),this._element.classList.add(vr),this._element.classList.remove(pi,on);let i=this._triggerArray.length;if(i>0)for(let s=0;s{this.setTransitioning(!1),this._element.classList.remove(vr),this._element.classList.add(pi),C.trigger(this._element,Zy)};this._element.style[n]="",this._queueCallback(o,this._element,!0)}setTransitioning(e){this._isTransitioning=e}_getConfig(e){return e=K(K({},hs),e),e.toggle=Boolean(e.toggle),vt(jc,e,Gy),e}_getDimension(){return this._element.classList.contains(qc)?qc:tE}_getParent(){let{parent:e}=this._config;e=Mn(e);let n=`${mi}[data-bs-parent="${e}"]`;return B.find(n,e).forEach(i=>{let o=Mt(i);this._addAriaAndCollapsedClass(o,[i])}),e}_addAriaAndCollapsedClass(e,n){if(!e||!n.length)return;let i=e.classList.contains(on);n.forEach(o=>{i?o.classList.remove(br):o.classList.add(br),o.setAttribute("aria-expanded",i)})}static collapseInterface(e,n){let i=Me.getInstance(e),o=K(K(K({},hs),be.getDataAttributes(e)),typeof n=="object"&&n?n:{});if(!i&&o.toggle&&typeof n=="string"&&/show|hide/.test(n)&&(o.toggle=!1),i||(i=new Me(e,o)),typeof n=="string"){if(typeof i[n]=="undefined")throw new TypeError(`No method named "${n}"`);i[n]()}}static jQueryInterface(e){return this.each(function(){Me.collapseInterface(this,e)})}};C.on(document,eE,mi,function(t){(t.target.tagName==="A"||t.delegateTarget&&t.delegateTarget.tagName==="A")&&t.preventDefault();let e=be.getDataAttributes(this),n=as(this);B.find(n).forEach(o=>{let s=Me.getInstance(o),a;s?(s._parent===null&&typeof e.parent=="string"&&(s._config.parent=e.parent,s._parent=s._getParent()),a="toggle"):a=e,Me.collapseInterface(o,a)})});Fe(Me);var ps="dropdown",iE="bs.dropdown",Pt=`.${iE}`,ms=".data-api",yr="Escape",$c="Space",Fc="Tab",gs="ArrowUp",Er="ArrowDown",rE=2,oE=new RegExp(`${gs}|${Er}|${yr}`),sE=`hide${Pt}`,aE=`hidden${Pt}`,lE=`show${Pt}`,cE=`shown${Pt}`,uE=`click${Pt}`,Bc=`click${Pt}${ms}`,zc=`keydown${Pt}${ms}`,dE=`keyup${Pt}${ms}`,bt="show",fE="dropup",hE="dropend",pE="dropstart",mE="navbar",gi='[data-bs-toggle="dropdown"]',vs=".dropdown-menu",gE=".navbar-nav",vE=".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",bE=De()?"top-end":"top-start",yE=De()?"top-start":"top-end",EE=De()?"bottom-end":"bottom-start",_E=De()?"bottom-start":"bottom-end",SE=De()?"left-start":"right-start",wE=De()?"right-start":"left-start",TE={offset:[0,2],boundary:"clippingParents",reference:"toggle",display:"dynamic",popperConfig:null,autoClose:!0},xE={offset:"(array|string|function)",boundary:"(string|element)",reference:"(string|element|object)",display:"string",popperConfig:"(null|object|function)",autoClose:"(boolean|string)"},Ce=class extends Be{constructor(e,n){super(e);this._popper=null,this._config=this._getConfig(n),this._menu=this._getMenuElement(),this._inNavbar=this._detectNavbar(),this._addEventListeners()}static get Default(){return TE}static get DefaultType(){return xE}static get NAME(){return ps}toggle(){if(In(this._element))return;if(this._element.classList.contains(bt)){this.hide();return}this.show()}show(){if(In(this._element)||this._menu.classList.contains(bt))return;let e=Ce.getParentFromElement(this._element),n={relatedTarget:this._element};if(!C.trigger(this._element,lE,n).defaultPrevented){if(this._inNavbar)be.setDataAttribute(this._menu,"popper","none");else{if(typeof hr=="undefined")throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org)");let o=this._element;this._config.reference==="parent"?o=e:It(this._config.reference)?o=Mn(this._config.reference):typeof this._config.reference=="object"&&(o=this._config.reference);let s=this._getPopperConfig(),a=s.modifiers.find(c=>c.name==="applyStyles"&&c.enabled===!1);this._popper=fr(o,this._menu,s),a&&be.setDataAttribute(this._menu,"popper","static")}"ontouchstart"in document.documentElement&&!e.closest(gE)&&[].concat(...document.body.children).forEach(o=>C.on(o,"mouseover",mr)),this._element.focus(),this._element.setAttribute("aria-expanded",!0),this._menu.classList.toggle(bt),this._element.classList.toggle(bt),C.trigger(this._element,cE,n)}}hide(){if(In(this._element)||!this._menu.classList.contains(bt))return;let e={relatedTarget:this._element};this._completeHide(e)}dispose(){this._popper&&this._popper.destroy(),super.dispose()}update(){this._inNavbar=this._detectNavbar(),this._popper&&this._popper.update()}_addEventListeners(){C.on(this._element,uE,e=>{e.preventDefault(),this.toggle()})}_completeHide(e){C.trigger(this._element,sE,e).defaultPrevented||("ontouchstart"in document.documentElement&&[].concat(...document.body.children).forEach(i=>C.off(i,"mouseover",mr)),this._popper&&this._popper.destroy(),this._menu.classList.remove(bt),this._element.classList.remove(bt),this._element.setAttribute("aria-expanded","false"),be.removeDataAttribute(this._menu,"popper"),C.trigger(this._element,aE,e))}_getConfig(e){if(e=K(K(K({},this.constructor.Default),be.getDataAttributes(this._element)),e),vt(ps,e,this.constructor.DefaultType),typeof e.reference=="object"&&!It(e.reference)&&typeof e.reference.getBoundingClientRect!="function")throw new TypeError(`${ps.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`);return e}_getMenuElement(){return B.next(this._element,vs)[0]}_getPlacement(){let e=this._element.parentNode;if(e.classList.contains(hE))return SE;if(e.classList.contains(pE))return wE;let n=getComputedStyle(this._menu).getPropertyValue("--bs-position").trim()==="end";return e.classList.contains(fE)?n?yE:bE:n?_E:EE}_detectNavbar(){return this._element.closest(`.${mE}`)!==null}_getOffset(){let{offset:e}=this._config;return typeof e=="string"?e.split(",").map(n=>Number.parseInt(n,10)):typeof e=="function"?n=>e(n,this._element):e}_getPopperConfig(){let e={placement:this._getPlacement(),modifiers:[{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"offset",options:{offset:this._getOffset()}}]};return this._config.display==="static"&&(e.modifiers=[{name:"applyStyles",enabled:!1}]),K(K({},e),typeof this._config.popperConfig=="function"?this._config.popperConfig(e):this._config.popperConfig)}_selectMenuItem({key:e,target:n}){let i=B.find(vE,this._menu).filter(pr);!i.length||Ec(i,n,e===Er,!i.includes(n)).focus()}static dropdownInterface(e,n){let i=Ce.getOrCreateInstance(e,n);if(typeof n=="string"){if(typeof i[n]=="undefined")throw new TypeError(`No method named "${n}"`);i[n]()}}static jQueryInterface(e){return this.each(function(){Ce.dropdownInterface(this,e)})}static clearMenus(e){if(e&&(e.button===rE||e.type==="keyup"&&e.key!==Fc))return;let n=B.find(gi);for(let i=0,o=n.length;ithis.matches(gi)?this:B.prev(this,gi)[0];if(e.key===yr){i().focus(),Ce.clearMenus();return}if(e.key===gs||e.key===Er){n||i().click(),Ce.getInstance(i())._selectMenuItem(e);return}(!n||e.key===$c)&&Ce.clearMenus()}};C.on(document,zc,gi,Ce.dataApiKeydownHandler);C.on(document,zc,vs,Ce.dataApiKeydownHandler);C.on(document,Bc,Ce.clearMenus);C.on(document,dE,Ce.clearMenus);C.on(document,Bc,gi,function(t){t.preventDefault(),Ce.dropdownInterface(this)});Fe(Ce);var Wc=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",Vc=".sticky-top",_r=class{constructor(){this._element=document.body}getWidth(){let e=document.documentElement.clientWidth;return Math.abs(window.innerWidth-e)}hide(){let e=this.getWidth();this._disableOverFlow(),this._setElementAttributes(this._element,"paddingRight",n=>n+e),this._setElementAttributes(Wc,"paddingRight",n=>n+e),this._setElementAttributes(Vc,"marginRight",n=>n-e)}_disableOverFlow(){this._saveInitialAttribute(this._element,"overflow"),this._element.style.overflow="hidden"}_setElementAttributes(e,n,i){let o=this.getWidth(),s=a=>{if(a!==this._element&&window.innerWidth>a.clientWidth+o)return;this._saveInitialAttribute(a,n);let c=window.getComputedStyle(a)[n];a.style[n]=`${i(Number.parseFloat(c))}px`};this._applyManipulationCallback(e,s)}reset(){this._resetElementAttributes(this._element,"overflow"),this._resetElementAttributes(this._element,"paddingRight"),this._resetElementAttributes(Wc,"paddingRight"),this._resetElementAttributes(Vc,"marginRight")}_saveInitialAttribute(e,n){let i=e.style[n];i&&be.setDataAttribute(e,n,i)}_resetElementAttributes(e,n){let i=o=>{let s=be.getDataAttribute(o,n);typeof s=="undefined"?o.style.removeProperty(n):(be.removeDataAttribute(o,n),o.style[n]=s)};this._applyManipulationCallback(e,i)}_applyManipulationCallback(e,n){It(e)?n(e):B.find(e,this._element).forEach(n)}isOverflowing(){return this.getWidth()>0}},OE={isVisible:!0,isAnimated:!1,rootElement:"body",clickCallback:null},AE={isVisible:"boolean",isAnimated:"boolean",rootElement:"(element|string)",clickCallback:"(function|null)"},Yc="backdrop",CE="modal-backdrop",LE="fade",Uc="show",Kc=`mousedown.bs.${Yc}`,bs=class{constructor(e){this._config=this._getConfig(e),this._isAppended=!1,this._element=null}show(e){if(!this._config.isVisible){Jt(e);return}this._append(),this._config.isAnimated&&kn(this._getElement()),this._getElement().classList.add(Uc),this._emulateAnimation(()=>{Jt(e)})}hide(e){if(!this._config.isVisible){Jt(e);return}this._getElement().classList.remove(Uc),this._emulateAnimation(()=>{this.dispose(),Jt(e)})}_getElement(){if(!this._element){let e=document.createElement("div");e.className=CE,this._config.isAnimated&&e.classList.add(LE),this._element=e}return this._element}_getConfig(e){return e=K(K({},OE),typeof e=="object"?e:{}),e.rootElement=Mn(e.rootElement),vt(Yc,e,AE),e}_append(){this._isAppended||(this._config.rootElement.appendChild(this._getElement()),C.on(this._getElement(),Kc,()=>{Jt(this._config.clickCallback)}),this._isAppended=!0)}dispose(){!this._isAppended||(C.off(this._element,Kc),this._element.remove(),this._isAppended=!1)}_emulateAnimation(e){yc(e,this._getElement(),this._config.isAnimated)}},Gc="modal",DE="bs.modal",Re=`.${DE}`,ME=".data-api",Xc="Escape",Qc={backdrop:!0,keyboard:!0,focus:!0},IE={backdrop:"(boolean|string)",keyboard:"boolean",focus:"boolean"},kE=`hide${Re}`,PE=`hidePrevented${Re}`,Jc=`hidden${Re}`,Zc=`show${Re}`,NE=`shown${Re}`,Sr=`focusin${Re}`,eu=`resize${Re}`,ys=`click.dismiss${Re}`,tu=`keydown.dismiss${Re}`,RE=`mouseup.dismiss${Re}`,nu=`mousedown.dismiss${Re}`,jE=`click${Re}${ME}`,iu="modal-open",HE="fade",ru="show",Es="modal-static",qE=".modal-dialog",$E=".modal-body",FE='[data-bs-toggle="modal"]',BE='[data-bs-dismiss="modal"]',Nt=class extends Be{constructor(e,n){super(e);this._config=this._getConfig(n),this._dialog=B.findOne(qE,this._element),this._backdrop=this._initializeBackDrop(),this._isShown=!1,this._ignoreBackdropClick=!1,this._isTransitioning=!1,this._scrollBar=new _r}static get Default(){return Qc}static get NAME(){return Gc}toggle(e){return this._isShown?this.hide():this.show(e)}show(e){this._isShown||this._isTransitioning||C.trigger(this._element,Zc,{relatedTarget:e}).defaultPrevented||(this._isShown=!0,this._isAnimated()&&(this._isTransitioning=!0),this._scrollBar.hide(),document.body.classList.add(iu),this._adjustDialog(),this._setEscapeEvent(),this._setResizeEvent(),C.on(this._element,ys,BE,i=>this.hide(i)),C.on(this._dialog,nu,()=>{C.one(this._element,RE,i=>{i.target===this._element&&(this._ignoreBackdropClick=!0)})}),this._showBackdrop(()=>this._showElement(e)))}hide(e){if(e&&["A","AREA"].includes(e.target.tagName)&&e.preventDefault(),!this._isShown||this._isTransitioning||C.trigger(this._element,kE).defaultPrevented)return;this._isShown=!1;let i=this._isAnimated();i&&(this._isTransitioning=!0),this._setEscapeEvent(),this._setResizeEvent(),C.off(document,Sr),this._element.classList.remove(ru),C.off(this._element,ys),C.off(this._dialog,nu),this._queueCallback(()=>this._hideModal(),this._element,i)}dispose(){[window,this._dialog].forEach(e=>C.off(e,Re)),this._backdrop.dispose(),super.dispose(),C.off(document,Sr)}handleUpdate(){this._adjustDialog()}_initializeBackDrop(){return new bs({isVisible:Boolean(this._config.backdrop),isAnimated:this._isAnimated()})}_getConfig(e){return e=K(K(K({},Qc),be.getDataAttributes(this._element)),typeof e=="object"?e:{}),vt(Gc,e,IE),e}_showElement(e){let n=this._isAnimated(),i=B.findOne($E,this._dialog);(!this._element.parentNode||this._element.parentNode.nodeType!==Node.ELEMENT_NODE)&&document.body.appendChild(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.scrollTop=0,i&&(i.scrollTop=0),n&&kn(this._element),this._element.classList.add(ru),this._config.focus&&this._enforceFocus();let o=()=>{this._config.focus&&this._element.focus(),this._isTransitioning=!1,C.trigger(this._element,NE,{relatedTarget:e})};this._queueCallback(o,this._dialog,n)}_enforceFocus(){C.off(document,Sr),C.on(document,Sr,e=>{document!==e.target&&this._element!==e.target&&!this._element.contains(e.target)&&this._element.focus()})}_setEscapeEvent(){this._isShown?C.on(this._element,tu,e=>{this._config.keyboard&&e.key===Xc?(e.preventDefault(),this.hide()):!this._config.keyboard&&e.key===Xc&&this._triggerBackdropTransition()}):C.off(this._element,tu)}_setResizeEvent(){this._isShown?C.on(window,eu,()=>this._adjustDialog()):C.off(window,eu)}_hideModal(){this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._backdrop.hide(()=>{document.body.classList.remove(iu),this._resetAdjustments(),this._scrollBar.reset(),C.trigger(this._element,Jc)})}_showBackdrop(e){C.on(this._element,ys,n=>{if(this._ignoreBackdropClick){this._ignoreBackdropClick=!1;return}n.target===n.currentTarget&&(this._config.backdrop===!0?this.hide():this._config.backdrop==="static"&&this._triggerBackdropTransition())}),this._backdrop.show(e)}_isAnimated(){return this._element.classList.contains(HE)}_triggerBackdropTransition(){if(C.trigger(this._element,PE).defaultPrevented)return;let{classList:n,scrollHeight:i,style:o}=this._element,s=i>document.documentElement.clientHeight;!s&&o.overflowY==="hidden"||n.contains(Es)||(s||(o.overflowY="hidden"),n.add(Es),this._queueCallback(()=>{n.remove(Es),s||this._queueCallback(()=>{o.overflowY=""},this._dialog)},this._dialog),this._element.focus())}_adjustDialog(){let e=this._element.scrollHeight>document.documentElement.clientHeight,n=this._scrollBar.getWidth(),i=n>0;(!i&&e&&!De()||i&&!e&&De())&&(this._element.style.paddingLeft=`${n}px`),(i&&!e&&!De()||!i&&e&&De())&&(this._element.style.paddingRight=`${n}px`)}_resetAdjustments(){this._element.style.paddingLeft="",this._element.style.paddingRight=""}static jQueryInterface(e,n){return this.each(function(){let i=Nt.getOrCreateInstance(this,e);if(typeof e=="string"){if(typeof i[e]=="undefined")throw new TypeError(`No method named "${e}"`);i[e](n)}})}};C.on(document,jE,FE,function(t){let e=Mt(this);["A","AREA"].includes(this.tagName)&&t.preventDefault(),C.one(e,Zc,i=>{i.defaultPrevented||C.one(e,Jc,()=>{pr(this)&&this.focus()})}),Nt.getOrCreateInstance(e).toggle(this)});Fe(Nt);var ou="offcanvas",zE="bs.offcanvas",yt=`.${zE}`,su=".data-api",WE=`load${yt}${su}`,VE="Escape",au={backdrop:!0,keyboard:!0,scroll:!1},YE={backdrop:"boolean",keyboard:"boolean",scroll:"boolean"},lu="show",cu=".offcanvas.show",UE=`show${yt}`,KE=`shown${yt}`,GE=`hide${yt}`,uu=`hidden${yt}`,wr=`focusin${yt}`,XE=`click${yt}${su}`,QE=`click.dismiss${yt}`,JE=`keydown.dismiss${yt}`,ZE='[data-bs-dismiss="offcanvas"]',e_='[data-bs-toggle="offcanvas"]',sn=class extends Be{constructor(e,n){super(e);this._config=this._getConfig(n),this._isShown=!1,this._backdrop=this._initializeBackDrop(),this._addEventListeners()}static get NAME(){return ou}static get Default(){return au}toggle(e){return this._isShown?this.hide():this.show(e)}show(e){if(this._isShown||C.trigger(this._element,UE,{relatedTarget:e}).defaultPrevented)return;this._isShown=!0,this._element.style.visibility="visible",this._backdrop.show(),this._config.scroll||(new _r().hide(),this._enforceFocusOnElement(this._element)),this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.classList.add(lu);let i=()=>{C.trigger(this._element,KE,{relatedTarget:e})};this._queueCallback(i,this._element,!0)}hide(){if(!this._isShown||C.trigger(this._element,GE).defaultPrevented)return;C.off(document,wr),this._element.blur(),this._isShown=!1,this._element.classList.remove(lu),this._backdrop.hide();let n=()=>{this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._element.style.visibility="hidden",this._config.scroll||new _r().reset(),C.trigger(this._element,uu)};this._queueCallback(n,this._element,!0)}dispose(){this._backdrop.dispose(),super.dispose(),C.off(document,wr)}_getConfig(e){return e=K(K(K({},au),be.getDataAttributes(this._element)),typeof e=="object"?e:{}),vt(ou,e,YE),e}_initializeBackDrop(){return new bs({isVisible:this._config.backdrop,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:()=>this.hide()})}_enforceFocusOnElement(e){C.off(document,wr),C.on(document,wr,n=>{document!==n.target&&e!==n.target&&!e.contains(n.target)&&e.focus()}),e.focus()}_addEventListeners(){C.on(this._element,QE,ZE,()=>this.hide()),C.on(this._element,JE,e=>{this._config.keyboard&&e.key===VE&&this.hide()})}static jQueryInterface(e){return this.each(function(){let n=sn.getOrCreateInstance(this,e);if(typeof e=="string"){if(n[e]===void 0||e.startsWith("_")||e==="constructor")throw new TypeError(`No method named "${e}"`);n[e](this)}})}};C.on(document,XE,e_,function(t){let e=Mt(this);if(["A","AREA"].includes(this.tagName)&&t.preventDefault(),In(this))return;C.one(e,uu,()=>{pr(this)&&this.focus()});let n=B.findOne(cu);n&&n!==e&&sn.getInstance(n).hide(),sn.getOrCreateInstance(e).toggle(this)});C.on(window,WE,()=>B.find(cu).forEach(t=>sn.getOrCreateInstance(t).show()));Fe(sn);var t_=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),n_=/^aria-[\w-]*$/i,i_=/^(?:(?:https?|mailto|ftp|tel|file):|[^#&/:?]*(?:[#/?]|$))/i,r_=/^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[\d+/a-z]+=*$/i,o_=(t,e)=>{let n=t.nodeName.toLowerCase();if(e.includes(n))return t_.has(n)?Boolean(i_.test(t.nodeValue)||r_.test(t.nodeValue)):!0;let i=e.filter(o=>o instanceof RegExp);for(let o=0,s=i.length;o{o_(p,f)||u.removeAttribute(p.nodeName)})}return o.body.innerHTML}var fu="tooltip",a_="bs.tooltip",Ze=`.${a_}`,hu="bs-tooltip",l_=new RegExp(`(^|\\s)${hu}\\S+`,"g"),c_=new Set(["sanitize","allowList","sanitizeFn"]),u_={animation:"boolean",template:"string",title:"(string|element|function)",trigger:"string",delay:"(number|object)",html:"boolean",selector:"(string|boolean)",placement:"(string|function)",offset:"(array|string|function)",container:"(string|element|boolean)",fallbackPlacements:"array",boundary:"(string|element)",customClass:"(string|function)",sanitize:"boolean",sanitizeFn:"(null|function)",allowList:"object",popperConfig:"(null|object|function)"},d_={AUTO:"auto",TOP:"top",RIGHT:De()?"left":"right",BOTTOM:"bottom",LEFT:De()?"right":"left"},f_={animation:!0,template:'',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:[0,0],container:!1,fallbackPlacements:["top","right","bottom","left"],boundary:"clippingParents",customClass:"",sanitize:!0,sanitizeFn:null,allowList:s_,popperConfig:null},h_={HIDE:`hide${Ze}`,HIDDEN:`hidden${Ze}`,SHOW:`show${Ze}`,SHOWN:`shown${Ze}`,INSERTED:`inserted${Ze}`,CLICK:`click${Ze}`,FOCUSIN:`focusin${Ze}`,FOCUSOUT:`focusout${Ze}`,MOUSEENTER:`mouseenter${Ze}`,MOUSELEAVE:`mouseleave${Ze}`},Tr="fade",pu="modal",vi="show",bi="show",_s="out",p_=".tooltip-inner",yi="hover",Ss="focus",m_="click",g_="manual",et=class extends Be{constructor(e,n){if(typeof hr=="undefined")throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(e);this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this._config=this._getConfig(n),this.tip=null,this._setListeners()}static get Default(){return f_}static get NAME(){return fu}static get Event(){return h_}static get DefaultType(){return u_}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(e){if(!!this._isEnabled)if(e){let n=this._initializeOnDelegatedTarget(e);n._activeTrigger.click=!n._activeTrigger.click,n._isWithActiveTrigger()?n._enter(null,n):n._leave(null,n)}else{if(this.getTipElement().classList.contains(vi)){this._leave(null,this);return}this._enter(null,this)}}dispose(){clearTimeout(this._timeout),C.off(this._element.closest(`.${pu}`),"hide.bs.modal",this._hideModalHandler),this.tip&&this.tip.remove(),this._popper&&this._popper.destroy(),super.dispose()}show(){if(this._element.style.display==="none")throw new Error("Please use show on visible elements");if(!(this.isWithContent()&&this._isEnabled))return;let e=C.trigger(this._element,this.constructor.Event.SHOW),n=vc(this._element),i=n===null?this._element.ownerDocument.documentElement.contains(this._element):n.contains(this._element);if(e.defaultPrevented||!i)return;let o=this.getTipElement(),s=pc(this.constructor.NAME);o.setAttribute("id",s),this._element.setAttribute("aria-describedby",s),this.setContent(),this._config.animation&&o.classList.add(Tr);let a=typeof this._config.placement=="function"?this._config.placement.call(this,o,this._element):this._config.placement,c=this._getAttachment(a);this._addAttachmentClass(c);let{container:d}=this._config;Zt.set(o,this.constructor.DATA_KEY,this),this._element.ownerDocument.documentElement.contains(this.tip)||(d.appendChild(o),C.trigger(this._element,this.constructor.Event.INSERTED)),this._popper?this._popper.update():this._popper=fr(this._element,o,this._getPopperConfig(c)),o.classList.add(vi);let u=typeof this._config.customClass=="function"?this._config.customClass():this._config.customClass;u&&o.classList.add(...u.split(" ")),"ontouchstart"in document.documentElement&&[].concat(...document.body.children).forEach(f=>{C.on(f,"mouseover",mr)});let l=()=>{let f=this._hoverState;this._hoverState=null,C.trigger(this._element,this.constructor.Event.SHOWN),f===_s&&this._leave(null,this)},m=this.tip.classList.contains(Tr);this._queueCallback(l,this.tip,m)}hide(){if(!this._popper)return;let e=this.getTipElement(),n=()=>{this._isWithActiveTrigger()||(this._hoverState!==bi&&e.remove(),this._cleanTipClass(),this._element.removeAttribute("aria-describedby"),C.trigger(this._element,this.constructor.Event.HIDDEN),this._popper&&(this._popper.destroy(),this._popper=null))};if(C.trigger(this._element,this.constructor.Event.HIDE).defaultPrevented)return;e.classList.remove(vi),"ontouchstart"in document.documentElement&&[].concat(...document.body.children).forEach(s=>C.off(s,"mouseover",mr)),this._activeTrigger[m_]=!1,this._activeTrigger[Ss]=!1,this._activeTrigger[yi]=!1;let o=this.tip.classList.contains(Tr);this._queueCallback(n,this.tip,o),this._hoverState=""}update(){this._popper!==null&&this._popper.update()}isWithContent(){return Boolean(this.getTitle())}getTipElement(){if(this.tip)return this.tip;let e=document.createElement("div");return e.innerHTML=this._config.template,this.tip=e.children[0],this.tip}setContent(){let e=this.getTipElement();this.setElementContent(B.findOne(p_,e),this.getTitle()),e.classList.remove(Tr,vi)}setElementContent(e,n){if(e!==null){if(It(n)){n=Mn(n),this._config.html?n.parentNode!==e&&(e.innerHTML="",e.appendChild(n)):e.textContent=n.textContent;return}this._config.html?(this._config.sanitize&&(n=du(n,this._config.allowList,this._config.sanitizeFn)),e.innerHTML=n):e.textContent=n}}getTitle(){let e=this._element.getAttribute("data-bs-original-title");return e||(e=typeof this._config.title=="function"?this._config.title.call(this._element):this._config.title),e}updateAttachment(e){return e==="right"?"end":e==="left"?"start":e}_initializeOnDelegatedTarget(e,n){let i=this.constructor.DATA_KEY;return n=n||Zt.get(e.delegateTarget,i),n||(n=new this.constructor(e.delegateTarget,this._getDelegateConfig()),Zt.set(e.delegateTarget,i,n)),n}_getOffset(){let{offset:e}=this._config;return typeof e=="string"?e.split(",").map(n=>Number.parseInt(n,10)):typeof e=="function"?n=>e(n,this._element):e}_getPopperConfig(e){let n={placement:e,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"onChange",enabled:!0,phase:"afterWrite",fn:i=>this._handlePopperPlacementChange(i)}],onFirstUpdate:i=>{i.options.placement!==i.placement&&this._handlePopperPlacementChange(i)}};return K(K({},n),typeof this._config.popperConfig=="function"?this._config.popperConfig(n):this._config.popperConfig)}_addAttachmentClass(e){this.getTipElement().classList.add(`${hu}-${this.updateAttachment(e)}`)}_getAttachment(e){return d_[e.toUpperCase()]}_setListeners(){this._config.trigger.split(" ").forEach(n=>{if(n==="click")C.on(this._element,this.constructor.Event.CLICK,this._config.selector,i=>this.toggle(i));else if(n!==g_){let i=n===yi?this.constructor.Event.MOUSEENTER:this.constructor.Event.FOCUSIN,o=n===yi?this.constructor.Event.MOUSELEAVE:this.constructor.Event.FOCUSOUT;C.on(this._element,i,this._config.selector,s=>this._enter(s)),C.on(this._element,o,this._config.selector,s=>this._leave(s))}}),this._hideModalHandler=()=>{this._element&&this.hide()},C.on(this._element.closest(`.${pu}`),"hide.bs.modal",this._hideModalHandler),this._config.selector?this._config=tr(K({},this._config),{trigger:"manual",selector:""}):this._fixTitle()}_fixTitle(){let e=this._element.getAttribute("title"),n=typeof this._element.getAttribute("data-bs-original-title");(e||n!=="string")&&(this._element.setAttribute("data-bs-original-title",e||""),e&&!this._element.getAttribute("aria-label")&&!this._element.textContent&&this._element.setAttribute("aria-label",e),this._element.setAttribute("title",""))}_enter(e,n){if(n=this._initializeOnDelegatedTarget(e,n),e&&(n._activeTrigger[e.type==="focusin"?Ss:yi]=!0),n.getTipElement().classList.contains(vi)||n._hoverState===bi){n._hoverState=bi;return}if(clearTimeout(n._timeout),n._hoverState=bi,!n._config.delay||!n._config.delay.show){n.show();return}n._timeout=setTimeout(()=>{n._hoverState===bi&&n.show()},n._config.delay.show)}_leave(e,n){if(n=this._initializeOnDelegatedTarget(e,n),e&&(n._activeTrigger[e.type==="focusout"?Ss:yi]=n._element.contains(e.relatedTarget)),!n._isWithActiveTrigger()){if(clearTimeout(n._timeout),n._hoverState=_s,!n._config.delay||!n._config.delay.hide){n.hide();return}n._timeout=setTimeout(()=>{n._hoverState===_s&&n.hide()},n._config.delay.hide)}}_isWithActiveTrigger(){for(let e in this._activeTrigger)if(this._activeTrigger[e])return!0;return!1}_getConfig(e){let n=be.getDataAttributes(this._element);return Object.keys(n).forEach(i=>{c_.has(i)&&delete n[i]}),e=K(K(K({},this.constructor.Default),n),typeof e=="object"&&e?e:{}),e.container=e.container===!1?document.body:Mn(e.container),typeof e.delay=="number"&&(e.delay={show:e.delay,hide:e.delay}),typeof e.title=="number"&&(e.title=e.title.toString()),typeof e.content=="number"&&(e.content=e.content.toString()),vt(fu,e,this.constructor.DefaultType),e.sanitize&&(e.template=du(e.template,e.allowList,e.sanitizeFn)),e}_getDelegateConfig(){let e={};if(this._config)for(let n in this._config)this.constructor.Default[n]!==this._config[n]&&(e[n]=this._config[n]);return e}_cleanTipClass(){let e=this.getTipElement(),n=e.getAttribute("class").match(l_);n!==null&&n.length>0&&n.map(i=>i.trim()).forEach(i=>e.classList.remove(i))}_handlePopperPlacementChange(e){let{state:n}=e;!n||(this.tip=n.elements.popper,this._cleanTipClass(),this._addAttachmentClass(this._getAttachment(n.placement)))}static jQueryInterface(e){return this.each(function(){let n=et.getOrCreateInstance(this,e);if(typeof e=="string"){if(typeof n[e]=="undefined")throw new TypeError(`No method named "${e}"`);n[e]()}})}};Fe(et);var v_="popover",b_="bs.popover",tt=`.${b_}`,mu="bs-popover",y_=new RegExp(`(^|\\s)${mu}\\S+`,"g"),E_=tr(K({},et.Default),{placement:"right",offset:[0,8],trigger:"click",content:"",template:''}),__=tr(K({},et.DefaultType),{content:"(string|element|function)"}),S_={HIDE:`hide${tt}`,HIDDEN:`hidden${tt}`,SHOW:`show${tt}`,SHOWN:`shown${tt}`,INSERTED:`inserted${tt}`,CLICK:`click${tt}`,FOCUSIN:`focusin${tt}`,FOCUSOUT:`focusout${tt}`,MOUSEENTER:`mouseenter${tt}`,MOUSELEAVE:`mouseleave${tt}`},w_="fade",T_="show",gu=".popover-header",vu=".popover-body",an=class extends et{static get Default(){return E_}static get NAME(){return v_}static get Event(){return S_}static get DefaultType(){return __}isWithContent(){return this.getTitle()||this._getContent()}getTipElement(){return this.tip?this.tip:(this.tip=super.getTipElement(),this.getTitle()||B.findOne(gu,this.tip).remove(),this._getContent()||B.findOne(vu,this.tip).remove(),this.tip)}setContent(){let e=this.getTipElement();this.setElementContent(B.findOne(gu,e),this.getTitle());let n=this._getContent();typeof n=="function"&&(n=n.call(this._element)),this.setElementContent(B.findOne(vu,e),n),e.classList.remove(w_,T_)}_addAttachmentClass(e){this.getTipElement().classList.add(`${mu}-${this.updateAttachment(e)}`)}_getContent(){return this._element.getAttribute("data-bs-content")||this._config.content}_cleanTipClass(){let e=this.getTipElement(),n=e.getAttribute("class").match(y_);n!==null&&n.length>0&&n.map(i=>i.trim()).forEach(i=>e.classList.remove(i))}static jQueryInterface(e){return this.each(function(){let n=an.getOrCreateInstance(this,e);if(typeof e=="string"){if(typeof n[e]=="undefined")throw new TypeError(`No method named "${e}"`);n[e]()}})}};Fe(an);var ws="scrollspy",x_="bs.scrollspy",xr=`.${x_}`,O_=".data-api",bu={offset:10,method:"auto",target:""},A_={offset:"number",method:"string",target:"(string|element)"},C_=`activate${xr}`,L_=`scroll${xr}`,D_=`load${xr}${O_}`,yu="dropdown-item",ln="active",M_='[data-bs-spy="scroll"]',I_=".nav, .list-group",Ts=".nav-link",k_=".nav-item",Eu=".list-group-item",P_=".dropdown",N_=".dropdown-toggle",R_="offset",_u="position",Ei=class extends Be{constructor(e,n){super(e);this._scrollElement=this._element.tagName==="BODY"?window:this._element,this._config=this._getConfig(n),this._selector=`${this._config.target} ${Ts}, ${this._config.target} ${Eu}, ${this._config.target} .${yu}`,this._offsets=[],this._targets=[],this._activeTarget=null,this._scrollHeight=0,C.on(this._scrollElement,L_,()=>this._process()),this.refresh(),this._process()}static get Default(){return bu}static get NAME(){return ws}refresh(){let e=this._scrollElement===this._scrollElement.window?R_:_u,n=this._config.method==="auto"?e:this._config.method,i=n===_u?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),B.find(this._selector).map(s=>{let a=as(s),c=a?B.findOne(a):null;if(c){let d=c.getBoundingClientRect();if(d.width||d.height)return[be[n](c).top+i,a]}return null}).filter(s=>s).sort((s,a)=>s[0]-a[0]).forEach(s=>{this._offsets.push(s[0]),this._targets.push(s[1])})}dispose(){C.off(this._scrollElement,xr),super.dispose()}_getConfig(e){if(e=K(K(K({},bu),be.getDataAttributes(this._element)),typeof e=="object"&&e?e:{}),typeof e.target!="string"&&It(e.target)){let{id:n}=e.target;n||(n=pc(ws),e.target.id=n),e.target=`#${n}`}return vt(ws,e,A_),e}_getScrollTop(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop}_getScrollHeight(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)}_getOffsetHeight(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height}_process(){let e=this._getScrollTop()+this._config.offset,n=this._getScrollHeight(),i=this._config.offset+n-this._getOffsetHeight();if(this._scrollHeight!==n&&this.refresh(),e>=i){let o=this._targets[this._targets.length-1];this._activeTarget!==o&&this._activate(o);return}if(this._activeTarget&&e0){this._activeTarget=null,this._clear();return}for(let o=this._offsets.length;o--;)this._activeTarget!==this._targets[o]&&e>=this._offsets[o]&&(typeof this._offsets[o+1]=="undefined"||e`${o}[data-bs-target="${e}"],${o}[href="${e}"]`),i=B.findOne(n.join(","));i.classList.contains(yu)?(B.findOne(N_,i.closest(P_)).classList.add(ln),i.classList.add(ln)):(i.classList.add(ln),B.parents(i,I_).forEach(o=>{B.prev(o,`${Ts}, ${Eu}`).forEach(s=>s.classList.add(ln)),B.prev(o,k_).forEach(s=>{B.children(s,Ts).forEach(a=>a.classList.add(ln))})})),C.trigger(this._scrollElement,C_,{relatedTarget:e})}_clear(){B.find(this._selector).filter(e=>e.classList.contains(ln)).forEach(e=>e.classList.remove(ln))}static jQueryInterface(e){return this.each(function(){let n=Ei.getOrCreateInstance(this,e);if(typeof e=="string"){if(typeof n[e]=="undefined")throw new TypeError(`No method named "${e}"`);n[e]()}})}};C.on(window,D_,()=>{B.find(M_).forEach(t=>new Ei(t))});Fe(Ei);var j_="tab",H_="bs.tab",_i=`.${H_}`,q_=".data-api",$_=`hide${_i}`,F_=`hidden${_i}`,B_=`show${_i}`,z_=`shown${_i}`,W_=`click${_i}${q_}`,V_="dropdown-menu",Si="active",Su="fade",wu="show",Y_=".dropdown",U_=".nav, .list-group",Tu=".active",xu=":scope > li > .active",K_='[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',G_=".dropdown-toggle",X_=":scope > .dropdown-menu .active",cn=class extends Be{static get NAME(){return j_}show(){if(this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE&&this._element.classList.contains(Si))return;let e,n=Mt(this._element),i=this._element.closest(U_);if(i){let c=i.nodeName==="UL"||i.nodeName==="OL"?xu:Tu;e=B.find(c,i),e=e[e.length-1]}let o=e?C.trigger(e,$_,{relatedTarget:this._element}):null;if(C.trigger(this._element,B_,{relatedTarget:e}).defaultPrevented||o!==null&&o.defaultPrevented)return;this._activate(this._element,i);let a=()=>{C.trigger(e,F_,{relatedTarget:this._element}),C.trigger(this._element,z_,{relatedTarget:e})};n?this._activate(n,n.parentNode,a):a()}_activate(e,n,i){let s=(n&&(n.nodeName==="UL"||n.nodeName==="OL")?B.find(xu,n):B.children(n,Tu))[0],a=i&&s&&s.classList.contains(Su),c=()=>this._transitionComplete(e,s,i);s&&a?(s.classList.remove(wu),this._queueCallback(c,e,!0)):c()}_transitionComplete(e,n,i){if(n){n.classList.remove(Si);let s=B.findOne(X_,n.parentNode);s&&s.classList.remove(Si),n.getAttribute("role")==="tab"&&n.setAttribute("aria-selected",!1)}e.classList.add(Si),e.getAttribute("role")==="tab"&&e.setAttribute("aria-selected",!0),kn(e),e.classList.contains(Su)&&e.classList.add(wu);let o=e.parentNode;if(o&&o.nodeName==="LI"&&(o=o.parentNode),o&&o.classList.contains(V_)){let s=e.closest(Y_);s&&B.find(G_,s).forEach(a=>a.classList.add(Si)),e.setAttribute("aria-expanded",!0)}i&&i()}static jQueryInterface(e){return this.each(function(){let n=cn.getOrCreateInstance(this);if(typeof e=="string"){if(typeof n[e]=="undefined")throw new TypeError(`No method named "${e}"`);n[e]()}})}};C.on(document,W_,K_,function(t){if(["A","AREA"].includes(this.tagName)&&t.preventDefault(),In(this))return;cn.getOrCreateInstance(this).show()});Fe(cn);var Ou="toast",Q_="bs.toast",Et=`.${Q_}`,J_=`click.dismiss${Et}`,Z_=`mouseover${Et}`,eS=`mouseout${Et}`,tS=`focusin${Et}`,nS=`focusout${Et}`,iS=`hide${Et}`,rS=`hidden${Et}`,oS=`show${Et}`,sS=`shown${Et}`,aS="fade",Au="hide",wi="show",Cu="showing",lS={animation:"boolean",autohide:"boolean",delay:"number"},Lu={animation:!0,autohide:!0,delay:5e3},cS='[data-bs-dismiss="toast"]',_t=class extends Be{constructor(e,n){super(e);this._config=this._getConfig(n),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get DefaultType(){return lS}static get Default(){return Lu}static get NAME(){return Ou}show(){if(C.trigger(this._element,oS).defaultPrevented)return;this._clearTimeout(),this._config.animation&&this._element.classList.add(aS);let n=()=>{this._element.classList.remove(Cu),this._element.classList.add(wi),C.trigger(this._element,sS),this._maybeScheduleHide()};this._element.classList.remove(Au),kn(this._element),this._element.classList.add(Cu),this._queueCallback(n,this._element,this._config.animation)}hide(){if(!this._element.classList.contains(wi)||C.trigger(this._element,iS).defaultPrevented)return;let n=()=>{this._element.classList.add(Au),C.trigger(this._element,rS)};this._element.classList.remove(wi),this._queueCallback(n,this._element,this._config.animation)}dispose(){this._clearTimeout(),this._element.classList.contains(wi)&&this._element.classList.remove(wi),super.dispose()}_getConfig(e){return e=K(K(K({},Lu),be.getDataAttributes(this._element)),typeof e=="object"&&e?e:{}),vt(Ou,e,this.constructor.DefaultType),e}_maybeScheduleHide(){!this._config.autohide||this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout(()=>{this.hide()},this._config.delay))}_onInteraction(e,n){switch(e.type){case"mouseover":case"mouseout":this._hasMouseInteraction=n;break;case"focusin":case"focusout":this._hasKeyboardInteraction=n;break}if(n){this._clearTimeout();return}let i=e.relatedTarget;this._element===i||this._element.contains(i)||this._maybeScheduleHide()}_setListeners(){C.on(this._element,J_,cS,()=>this.hide()),C.on(this._element,Z_,e=>this._onInteraction(e,!0)),C.on(this._element,eS,e=>this._onInteraction(e,!1)),C.on(this._element,tS,e=>this._onInteraction(e,!0)),C.on(this._element,nS,e=>this._onInteraction(e,!1))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}static jQueryInterface(e){return this.each(function(){let n=_t.getOrCreateInstance(this,e);if(typeof e=="string"){if(typeof n[e]=="undefined")throw new TypeError(`No method named "${e}"`);n[e](this)}})}};Fe(_t);"use strict";var OT=it(),_f=Xs();OT({target:"Array",proto:!0,forced:[].forEach!=_f},{forEach:_f});var AT=de(),CT=Qs(),Js=Xs(),LT=St();for(wf in CT)if(Zs=AT[wf],Ii=Zs&&Zs.prototype,Ii&&Ii.forEach!==Js)try{LT(Ii,"forEach",Js)}catch(t){Ii.forEach=Js}var Zs,Ii,wf;var bo=Le(xf());"use strict";var NT=it(),RT=Fr().filter,jT=Af(),HT=jT("filter");NT({target:"Array",proto:!0,forced:!HT},{filter:function(e){return RT(this,e,arguments.length>1?arguments[1]:void 0)}});var o1=Le(ga());var $x=it(),_h=Eh();$x({target:"Object",stat:!0,forced:Object.assign!==_h},{assign:_h});var Xx=Kr(),Qx=pn(),Jx=Oh();Xx||Qx(Object.prototype,"toString",Jx,{unsafe:!0});var uO=it(),Ph=kh();uO({global:!0,forced:parseInt!=Ph},{parseInt:Ph});"use strict";var pO=_a().charAt,mO=$t(),jh=hn(),gO=pa(),Hh="String Iterator",vO=jh.set,bO=jh.getterFor(Hh);gO(String,"String",function(t){vO(this,{type:Hh,string:mO(t),index:0})},function(){var e=bO(this),n=e.string,i=e.index,o;return i>=n.length?{value:void 0,done:!0}:(o=pO(n,i),e.index+=o.length,{value:o,done:!1})});var u1=Le(Cp());var T0=de(),Lp=Qs(),ji=ga(),ja=St(),Dp=Se(),Ha=Dp("iterator"),Mp=Dp("toStringTag"),qa=ji.values;for(ro in Lp)if($a=T0[ro],rt=$a&&$a.prototype,rt){if(rt[Ha]!==qa)try{ja(rt,Ha,qa)}catch(t){rt[Ha]=qa}if(rt[Mp]||ja(rt,Mp,ro),Lp[ro]){for(vn in ji)if(rt[vn]!==ji[vn])try{ja(rt,vn,ji[vn])}catch(t){rt[vn]=ji[vn]}}}var $a,rt,vn,ro;var ml=Le(Rp()),gl=Le($p()),zm=Le(Gp());var We=[];var Xp=function(){return We.some(function(t){return t.activeTargets.length>0})};var Qp=function(){return We.some(function(t){return t.skippedTargets.length>0})};var Jp="ResizeObserver loop completed with undelivered notifications.",Zp=function(){var t;typeof ErrorEvent=="function"?t=new ErrorEvent("error",{message:Jp}):(t=document.createEvent("Event"),t.initEvent("error",!1,!1),t.message=Jp),window.dispatchEvent(t)};var En;(function(t){t.BORDER_BOX="border-box",t.CONTENT_BOX="content-box",t.DEVICE_PIXEL_CONTENT_BOX="device-pixel-content-box"})(En||(En={}));var Ue=function(t){return Object.freeze(t)};var Ua=function(){function t(e,n){this.inlineSize=e,this.blockSize=n,Ue(this)}return t}();var Ka=function(){function t(e,n,i,o){return this.x=e,this.y=n,this.width=i,this.height=o,this.top=this.y,this.left=this.x,this.bottom=this.top+this.height,this.right=this.left+this.width,Ue(this)}return t.prototype.toJSON=function(){var e=this,n=e.x,i=e.y,o=e.top,s=e.right,a=e.bottom,c=e.left,d=e.width,u=e.height;return{x:n,y:i,top:o,right:s,bottom:a,left:c,width:d,height:u}},t.fromRect=function(e){return new t(e.x,e.y,e.width,e.height)},t}();var qi=function(t){return t instanceof SVGElement&&"getBBox"in t},lo=function(t){if(qi(t)){var e=t.getBBox(),n=e.width,i=e.height;return!n&&!i}var o=t,s=o.offsetWidth,a=o.offsetHeight;return!(s||a||t.getClientRects().length)},Ga=function(t){var e,n;if(t instanceof Element)return!0;var i=(n=(e=t)===null||e===void 0?void 0:e.ownerDocument)===null||n===void 0?void 0:n.defaultView;return!!(i&&t instanceof i.Element)},em=function(t){switch(t.tagName){case"INPUT":if(t.type!=="image")break;case"VIDEO":case"AUDIO":case"EMBED":case"OBJECT":case"CANVAS":case"IFRAME":case"IMG":return!0}return!1};var _n=typeof window!="undefined"?window:{};var co=new WeakMap,tm=/auto|scroll/,FA=/^tb|vertical/,BA=/msie|trident/i.test(_n.navigator&&_n.navigator.userAgent),ot=function(t){return parseFloat(t||"0")},Fn=function(t,e,n){return t===void 0&&(t=0),e===void 0&&(e=0),n===void 0&&(n=!1),new Ua((n?e:t)||0,(n?t:e)||0)},nm=Ue({devicePixelContentBoxSize:Fn(),borderBoxSize:Fn(),contentBoxSize:Fn(),contentRect:new Ka(0,0,0,0)}),Xa=function(t,e){if(e===void 0&&(e=!1),co.has(t)&&!e)return co.get(t);if(lo(t))return co.set(t,nm),nm;var n=getComputedStyle(t),i=qi(t)&&t.ownerSVGElement&&t.getBBox(),o=!BA&&n.boxSizing==="border-box",s=FA.test(n.writingMode||""),a=!i&&tm.test(n.overflowY||""),c=!i&&tm.test(n.overflowX||""),d=i?0:ot(n.paddingTop),u=i?0:ot(n.paddingRight),l=i?0:ot(n.paddingBottom),m=i?0:ot(n.paddingLeft),f=i?0:ot(n.borderTopWidth),p=i?0:ot(n.borderRightWidth),g=i?0:ot(n.borderBottomWidth),v=i?0:ot(n.borderLeftWidth),h=m+u,y=d+l,_=v+p,A=f+g,O=c?t.offsetHeight-A-t.clientHeight:0,k=a?t.offsetWidth-_-t.clientWidth:0,M=o?h+_:0,H=o?y+A:0,$=i?i.width:ot(n.width)-M-k,G=i?i.height:ot(n.height)-H-O,Z=$+h+k+_,z=G+y+O+A,S=Ue({devicePixelContentBoxSize:Fn(Math.round($*devicePixelRatio),Math.round(G*devicePixelRatio),s),borderBoxSize:Fn(Z,z,s),contentBoxSize:Fn($,G,s),contentRect:new Ka(m,d,$,G)});return co.set(t,S),S},uo=function(t,e,n){var i=Xa(t,n),o=i.borderBoxSize,s=i.contentBoxSize,a=i.devicePixelContentBoxSize;switch(e){case En.DEVICE_PIXEL_CONTENT_BOX:return a;case En.BORDER_BOX:return o;default:return s}};var Qa=function(){function t(e){var n=Xa(e);this.target=e,this.contentRect=n.contentRect,this.borderBoxSize=Ue([n.borderBoxSize]),this.contentBoxSize=Ue([n.contentBoxSize]),this.devicePixelContentBoxSize=Ue([n.devicePixelContentBoxSize])}return t}();var fo=function(t){if(lo(t))return 1/0;for(var e=0,n=t.parentNode;n;)e+=1,n=n.parentNode;return e};var im=function(){var t=1/0,e=[];We.forEach(function(a){if(a.activeTargets.length!==0){var c=[];a.activeTargets.forEach(function(u){var l=new Qa(u.target),m=fo(u.target);c.push(l),u.lastReportedSize=uo(u.target,u.observedBox),mt?n.activeTargets.push(o):n.skippedTargets.push(o))})})};var rm=function(){var t=0;for(Ja(t);Xp();)t=im(),Ja(t);return Qp()&&Zp(),t>0};var Za,om=[],zA=function(){return om.splice(0).forEach(function(t){return t()})},sm=function(t){if(!Za){var e=0,n=document.createTextNode(""),i={characterData:!0};new MutationObserver(function(){return zA()}).observe(n,i),Za=function(){n.textContent=""+(e?e--:e++)}}om.push(t),Za()};var am=function(t){sm(function(){requestAnimationFrame(t)})};var ho=0,WA=function(){return!!ho},VA=250,YA={attributes:!0,characterData:!0,childList:!0,subtree:!0},lm=["resize","load","transitionend","animationend","animationstart","animationiteration","keyup","keydown","mouseup","mousedown","mouseover","mouseout","blur","focus"],cm=function(t){return t===void 0&&(t=0),Date.now()+t},el=!1,UA=function(){function t(){var e=this;this.stopped=!0,this.listener=function(){return e.schedule()}}return t.prototype.run=function(e){var n=this;if(e===void 0&&(e=VA),!el){el=!0;var i=cm(e);am(function(){var o=!1;try{o=rm()}finally{if(el=!1,e=i-cm(),!WA())return;o?n.run(1e3):e>0?n.run(e):n.start()}})}},t.prototype.schedule=function(){this.stop(),this.run()},t.prototype.observe=function(){var e=this,n=function(){return e.observer&&e.observer.observe(document.body,YA)};document.body?n():_n.addEventListener("DOMContentLoaded",n)},t.prototype.start=function(){var e=this;this.stopped&&(this.stopped=!1,this.observer=new MutationObserver(this.listener),this.observe(),lm.forEach(function(n){return _n.addEventListener(n,e.listener,!0)}))},t.prototype.stop=function(){var e=this;this.stopped||(this.observer&&this.observer.disconnect(),lm.forEach(function(n){return _n.removeEventListener(n,e.listener,!0)}),this.stopped=!0)},t}(),po=new UA,tl=function(t){!ho&&t>0&&po.start(),ho+=t,!ho&&po.stop()};var KA=function(t){return!qi(t)&&!em(t)&&getComputedStyle(t).display==="inline"},um=function(){function t(e,n){this.target=e,this.observedBox=n||En.CONTENT_BOX,this.lastReportedSize={inlineSize:0,blockSize:0}}return t.prototype.isActive=function(){var e=uo(this.target,this.observedBox,!0);return KA(this.target)&&(this.lastReportedSize=e),this.lastReportedSize.inlineSize!==e.inlineSize||this.lastReportedSize.blockSize!==e.blockSize},t}();var dm=function(){function t(e,n){this.activeTargets=[],this.skippedTargets=[],this.observationTargets=[],this.observer=e,this.callback=n}return t}();var mo=new WeakMap,fm=function(t,e){for(var n=0;n=0&&(s&&We.splice(We.indexOf(i),1),i.observationTargets.splice(o,1),tl(-1))},t.disconnect=function(e){var n=this,i=mo.get(e);i.observationTargets.slice().forEach(function(o){return n.unobserve(e,o.target)}),i.activeTargets.splice(0,i.activeTargets.length)},t}();var nl=function(){function t(e){if(arguments.length===0)throw new TypeError("Failed to construct 'ResizeObserver': 1 argument required, but only 0 present.");if(typeof e!="function")throw new TypeError("Failed to construct 'ResizeObserver': The callback provided as parameter 1 is not a function.");$i.connect(this,e)}return t.prototype.observe=function(e,n){if(arguments.length===0)throw new TypeError("Failed to execute 'observe' on 'ResizeObserver': 1 argument required, but only 0 present.");if(!Ga(e))throw new TypeError("Failed to execute 'observe' on 'ResizeObserver': parameter 1 is not of type 'Element");$i.observe(this,e,n)},t.prototype.unobserve=function(e){if(arguments.length===0)throw new TypeError("Failed to execute 'unobserve' on 'ResizeObserver': 1 argument required, but only 0 present.");if(!Ga(e))throw new TypeError("Failed to execute 'unobserve' on 'ResizeObserver': parameter 1 is not of type 'Element");$i.unobserve(this,e)},t.prototype.disconnect=function(){$i.disconnect(this)},t.toString=function(){return"function ResizeObserver () { [polyfill code] }"},t}();"use strict";var tC=it(),nC=mm().left,iC=Gs(),bm=Lr(),rC=vm(),oC=iC("reduce"),sC=!rC&&bm>79&&bm<83;tC({target:"Array",proto:!0,forced:!oC||sC},{reduce:function(e){return nC(this,e,arguments.length,arguments.length>1?arguments[1]:void 0)}});var aC=Rt(),lC=jt().f,il=Function.prototype,cC=il.toString,uC=/^\s*function ([^ (]*)/,ym="name";aC&&!(ym in il)&&lC(il,ym,{configurable:!0,get:function(){try{return cC.call(this).match(uC)[1]}catch(t){return""}}});var m1=Le(ll());"use strict";var NC=ul(),RC=He(),jC=mn(),hl=$t(),HC=un(),qC=dl(),qm=fl();NC("match",function(t,e,n){return[function(o){var s=HC(this),a=o==null?void 0:o[t];return a!==void 0?a.call(o,s):new RegExp(o)[t](hl(s))},function(i){var o=RC(this),s=hl(i),a=n(e,o,s);if(a.done)return a.value;if(!o.global)return qm(o,s);var c=o.unicode;o.lastIndex=0;for(var d=[],u=0,l;(l=qm(o,s))!==null;){var m=hl(l[0]);d[u]=m,m===""&&(o.lastIndex=qC(s,jC(o.lastIndex),c)),u++}return u===0?null:d}]});"use strict";var VC=ul(),YC=ye(),UC=He(),KC=Di(),GC=mn(),Bn=$t(),XC=un(),QC=dl(),JC=Fm(),ZC=fl(),eL=Se(),pl=eL("replace"),tL=Math.max,nL=Math.min,iL=function(t){return t===void 0?t:String(t)},rL=function(){return"a".replace(/./,"$0")==="$0"}(),Bm=function(){return/./[pl]?/./[pl]("a","$0")==="":!1}(),oL=!YC(function(){var t=/./;return t.exec=function(){var e=[];return e.groups={a:"7"},e},"".replace(t,"$")!=="7"});VC("replace",function(t,e,n){var i=Bm?"$":"$0";return[function(s,a){var c=XC(this),d=s==null?void 0:s[pl];return d!==void 0?d.call(s,c,a):e.call(Bn(c),s,a)},function(o,s){var a=UC(this),c=Bn(o);if(typeof s=="string"&&s.indexOf(i)===-1&&s.indexOf("$<")===-1){var d=n(e,a,c,s);if(d.done)return d.value}var u=typeof s=="function";u||(s=Bn(s));var l=a.global;if(l){var m=a.unicode;a.lastIndex=0}for(var f=[];;){var p=ZC(a,c);if(p===null||(f.push(p),!l))break;var g=Bn(p[0]);g===""&&(a.lastIndex=QC(c,GC(a.lastIndex),m))}for(var v="",h=0,y=0;y=h&&(v+=c.slice(h,A)+$,h=A+_.length)}return v+c.slice(h)}]},!oL||!rL||Bm);var yo=function(e){var n=Array.prototype.reduce.call(e,function(i,o){var s=o.name.match(/data-simplebar-(.+)/);if(s){var a=s[1].replace(/\W+(.)/g,function(c,d){return d.toUpperCase()});switch(o.value){case"true":i[a]=!0;break;case"false":i[a]=!1;break;case void 0:i[a]=!0;break;default:i[a]=o.value}}return i},{});return n};function Ft(t){return!t||!t.ownerDocument||!t.ownerDocument.defaultView?window:t.ownerDocument.defaultView}function Eo(t){return!t||!t.ownerDocument?document:t.ownerDocument}var zn=null,Wm=null;bo.default&&window.addEventListener("resize",function(){Wm!==window.devicePixelRatio&&(Wm=window.devicePixelRatio,zn=null)});function Vm(t){if(zn===null){var e=Eo(t);if(typeof e=="undefined")return zn=0,zn;var n=e.body,i=e.createElement("div");i.classList.add("simplebar-hide-scrollbar"),n.appendChild(i);var o=i.getBoundingClientRect().right;n.removeChild(i),zn=o}return zn}var he=function(){function t(n,i){var o=this;this.onScroll=function(){var s=Ft(o.el);o.scrollXTicking||(s.requestAnimationFrame(o.scrollX),o.scrollXTicking=!0),o.scrollYTicking||(s.requestAnimationFrame(o.scrollY),o.scrollYTicking=!0)},this.scrollX=function(){o.axis.x.isOverflowing&&(o.showScrollbar("x"),o.positionScrollbar("x")),o.scrollXTicking=!1},this.scrollY=function(){o.axis.y.isOverflowing&&(o.showScrollbar("y"),o.positionScrollbar("y")),o.scrollYTicking=!1},this.onMouseEnter=function(){o.showScrollbar("x"),o.showScrollbar("y")},this.onMouseMove=function(s){o.mouseX=s.clientX,o.mouseY=s.clientY,(o.axis.x.isOverflowing||o.axis.x.forceVisible)&&o.onMouseMoveForAxis("x"),(o.axis.y.isOverflowing||o.axis.y.forceVisible)&&o.onMouseMoveForAxis("y")},this.onMouseLeave=function(){o.onMouseMove.cancel(),(o.axis.x.isOverflowing||o.axis.x.forceVisible)&&o.onMouseLeaveForAxis("x"),(o.axis.y.isOverflowing||o.axis.y.forceVisible)&&o.onMouseLeaveForAxis("y"),o.mouseX=-1,o.mouseY=-1},this.onWindowResize=function(){o.scrollbarWidth=o.getScrollbarWidth(),o.hideNativeScrollbar()},this.hideScrollbars=function(){o.axis.x.track.rect=o.axis.x.track.el.getBoundingClientRect(),o.axis.y.track.rect=o.axis.y.track.el.getBoundingClientRect(),o.isWithinBounds(o.axis.y.track.rect)||(o.axis.y.scrollbar.el.classList.remove(o.classNames.visible),o.axis.y.isVisible=!1),o.isWithinBounds(o.axis.x.track.rect)||(o.axis.x.scrollbar.el.classList.remove(o.classNames.visible),o.axis.x.isVisible=!1)},this.onPointerEvent=function(s){var a,c;o.axis.x.track.rect=o.axis.x.track.el.getBoundingClientRect(),o.axis.y.track.rect=o.axis.y.track.el.getBoundingClientRect(),(o.axis.x.isOverflowing||o.axis.x.forceVisible)&&(a=o.isWithinBounds(o.axis.x.track.rect)),(o.axis.y.isOverflowing||o.axis.y.forceVisible)&&(c=o.isWithinBounds(o.axis.y.track.rect)),(a||c)&&(s.preventDefault(),s.stopPropagation(),s.type==="mousedown"&&(a&&(o.axis.x.scrollbar.rect=o.axis.x.scrollbar.el.getBoundingClientRect(),o.isWithinBounds(o.axis.x.scrollbar.rect)?o.onDragStart(s,"x"):o.onTrackClick(s,"x")),c&&(o.axis.y.scrollbar.rect=o.axis.y.scrollbar.el.getBoundingClientRect(),o.isWithinBounds(o.axis.y.scrollbar.rect)?o.onDragStart(s,"y"):o.onTrackClick(s,"y"))))},this.drag=function(s){var a,c=o.axis[o.draggedAxis].track,d=c.rect[o.axis[o.draggedAxis].sizeAttr],u=o.axis[o.draggedAxis].scrollbar,l=o.contentWrapperEl[o.axis[o.draggedAxis].scrollSizeAttr],m=parseInt(o.elStyles[o.axis[o.draggedAxis].sizeAttr],10);s.preventDefault(),s.stopPropagation(),o.draggedAxis==="y"?a=s.pageY:a=s.pageX;var f=a-c.rect[o.axis[o.draggedAxis].offsetAttr]-o.axis[o.draggedAxis].dragOffset,p=f/(d-u.size),g=p*(l-m);o.draggedAxis==="x"&&(g=o.isRtl&&t.getRtlHelpers().isRtlScrollbarInverted?g-(d+u.size):g,g=o.isRtl&&t.getRtlHelpers().isRtlScrollingInverted?-g:g),o.contentWrapperEl[o.axis[o.draggedAxis].scrollOffsetAttr]=g},this.onEndDrag=function(s){var a=Eo(o.el),c=Ft(o.el);s.preventDefault(),s.stopPropagation(),o.el.classList.remove(o.classNames.dragging),a.removeEventListener("mousemove",o.drag,!0),a.removeEventListener("mouseup",o.onEndDrag,!0),o.removePreventClickId=c.setTimeout(function(){a.removeEventListener("click",o.preventClick,!0),a.removeEventListener("dblclick",o.preventClick,!0),o.removePreventClickId=null})},this.preventClick=function(s){s.preventDefault(),s.stopPropagation()},this.el=n,this.minScrollbarWidth=20,this.options=Object.assign({},t.defaultOptions,{},i),this.classNames=Object.assign({},t.defaultOptions.classNames,{},this.options.classNames),this.axis={x:{scrollOffsetAttr:"scrollLeft",sizeAttr:"width",scrollSizeAttr:"scrollWidth",offsetSizeAttr:"offsetWidth",offsetAttr:"left",overflowAttr:"overflowX",dragOffset:0,isOverflowing:!0,isVisible:!1,forceVisible:!1,track:{},scrollbar:{}},y:{scrollOffsetAttr:"scrollTop",sizeAttr:"height",scrollSizeAttr:"scrollHeight",offsetSizeAttr:"offsetHeight",offsetAttr:"top",overflowAttr:"overflowY",dragOffset:0,isOverflowing:!0,isVisible:!1,forceVisible:!1,track:{},scrollbar:{}}},this.removePreventClickId=null,!t.instances.has(this.el)&&(this.recalculate=(0,ml.default)(this.recalculate.bind(this),64),this.onMouseMove=(0,ml.default)(this.onMouseMove.bind(this),64),this.hideScrollbars=(0,gl.default)(this.hideScrollbars.bind(this),this.options.timeout),this.onWindowResize=(0,gl.default)(this.onWindowResize.bind(this),64,{leading:!0}),t.getRtlHelpers=(0,zm.default)(t.getRtlHelpers),this.init())}t.getRtlHelpers=function(){var i=document.createElement("div");i.innerHTML='
';var o=i.firstElementChild;document.body.appendChild(o);var s=o.firstElementChild;o.scrollLeft=0;var a=t.getOffset(o),c=t.getOffset(s);o.scrollLeft=999;var d=t.getOffset(s);return{isRtlScrollingInverted:a.left!==c.left&&c.left-d.left!=0,isRtlScrollbarInverted:a.left!==c.left}},t.getOffset=function(i){var o=i.getBoundingClientRect(),s=Eo(i),a=Ft(i);return{top:o.top+(a.pageYOffset||s.documentElement.scrollTop),left:o.left+(a.pageXOffset||s.documentElement.scrollLeft)}};var e=t.prototype;return e.init=function(){t.instances.set(this.el,this),bo.default&&(this.initDOM(),this.scrollbarWidth=this.getScrollbarWidth(),this.recalculate(),this.initListeners())},e.initDOM=function(){var i=this;if(Array.prototype.filter.call(this.el.children,function(a){return a.classList.contains(i.classNames.wrapper)}).length)this.wrapperEl=this.el.querySelector("."+this.classNames.wrapper),this.contentWrapperEl=this.options.scrollableNode||this.el.querySelector("."+this.classNames.contentWrapper),this.contentEl=this.options.contentNode||this.el.querySelector("."+this.classNames.contentEl),this.offsetEl=this.el.querySelector("."+this.classNames.offset),this.maskEl=this.el.querySelector("."+this.classNames.mask),this.placeholderEl=this.findChild(this.wrapperEl,"."+this.classNames.placeholder),this.heightAutoObserverWrapperEl=this.el.querySelector("."+this.classNames.heightAutoObserverWrapperEl),this.heightAutoObserverEl=this.el.querySelector("."+this.classNames.heightAutoObserverEl),this.axis.x.track.el=this.findChild(this.el,"."+this.classNames.track+"."+this.classNames.horizontal),this.axis.y.track.el=this.findChild(this.el,"."+this.classNames.track+"."+this.classNames.vertical);else{for(this.wrapperEl=document.createElement("div"),this.contentWrapperEl=document.createElement("div"),this.offsetEl=document.createElement("div"),this.maskEl=document.createElement("div"),this.contentEl=document.createElement("div"),this.placeholderEl=document.createElement("div"),this.heightAutoObserverWrapperEl=document.createElement("div"),this.heightAutoObserverEl=document.createElement("div"),this.wrapperEl.classList.add(this.classNames.wrapper),this.contentWrapperEl.classList.add(this.classNames.contentWrapper),this.offsetEl.classList.add(this.classNames.offset),this.maskEl.classList.add(this.classNames.mask),this.contentEl.classList.add(this.classNames.contentEl),this.placeholderEl.classList.add(this.classNames.placeholder),this.heightAutoObserverWrapperEl.classList.add(this.classNames.heightAutoObserverWrapperEl),this.heightAutoObserverEl.classList.add(this.classNames.heightAutoObserverEl);this.el.firstChild;)this.contentEl.appendChild(this.el.firstChild);this.contentWrapperEl.appendChild(this.contentEl),this.offsetEl.appendChild(this.contentWrapperEl),this.maskEl.appendChild(this.offsetEl),this.heightAutoObserverWrapperEl.appendChild(this.heightAutoObserverEl),this.wrapperEl.appendChild(this.heightAutoObserverWrapperEl),this.wrapperEl.appendChild(this.maskEl),this.wrapperEl.appendChild(this.placeholderEl),this.el.appendChild(this.wrapperEl)}if(!this.axis.x.track.el||!this.axis.y.track.el){var o=document.createElement("div"),s=document.createElement("div");o.classList.add(this.classNames.track),s.classList.add(this.classNames.scrollbar),o.appendChild(s),this.axis.x.track.el=o.cloneNode(!0),this.axis.x.track.el.classList.add(this.classNames.horizontal),this.axis.y.track.el=o.cloneNode(!0),this.axis.y.track.el.classList.add(this.classNames.vertical),this.el.appendChild(this.axis.x.track.el),this.el.appendChild(this.axis.y.track.el)}this.axis.x.scrollbar.el=this.axis.x.track.el.querySelector("."+this.classNames.scrollbar),this.axis.y.scrollbar.el=this.axis.y.track.el.querySelector("."+this.classNames.scrollbar),this.options.autoHide||(this.axis.x.scrollbar.el.classList.add(this.classNames.visible),this.axis.y.scrollbar.el.classList.add(this.classNames.visible)),this.el.setAttribute("data-simplebar","init")},e.initListeners=function(){var i=this,o=Ft(this.el);this.options.autoHide&&this.el.addEventListener("mouseenter",this.onMouseEnter),["mousedown","click","dblclick"].forEach(function(c){i.el.addEventListener(c,i.onPointerEvent,!0)}),["touchstart","touchend","touchmove"].forEach(function(c){i.el.addEventListener(c,i.onPointerEvent,{capture:!0,passive:!0})}),this.el.addEventListener("mousemove",this.onMouseMove),this.el.addEventListener("mouseleave",this.onMouseLeave),this.contentWrapperEl.addEventListener("scroll",this.onScroll),o.addEventListener("resize",this.onWindowResize);var s=!1,a=o.ResizeObserver||nl;this.resizeObserver=new a(function(){!s||i.recalculate()}),this.resizeObserver.observe(this.el),this.resizeObserver.observe(this.contentEl),o.requestAnimationFrame(function(){s=!0}),this.mutationObserver=new o.MutationObserver(this.recalculate),this.mutationObserver.observe(this.contentEl,{childList:!0,subtree:!0,characterData:!0})},e.recalculate=function(){var i=Ft(this.el);this.elStyles=i.getComputedStyle(this.el),this.isRtl=this.elStyles.direction==="rtl";var o=this.heightAutoObserverEl.offsetHeight<=1,s=this.heightAutoObserverEl.offsetWidth<=1,a=this.contentEl.offsetWidth,c=this.contentWrapperEl.offsetWidth,d=this.elStyles.overflowX,u=this.elStyles.overflowY;this.contentEl.style.padding=this.elStyles.paddingTop+" "+this.elStyles.paddingRight+" "+this.elStyles.paddingBottom+" "+this.elStyles.paddingLeft,this.wrapperEl.style.margin="-"+this.elStyles.paddingTop+" -"+this.elStyles.paddingRight+" -"+this.elStyles.paddingBottom+" -"+this.elStyles.paddingLeft;var l=this.contentEl.scrollHeight,m=this.contentEl.scrollWidth;this.contentWrapperEl.style.height=o?"auto":"100%",this.placeholderEl.style.width=s?a+"px":"auto",this.placeholderEl.style.height=l+"px";var f=this.contentWrapperEl.offsetHeight;this.axis.x.isOverflowing=m>a,this.axis.y.isOverflowing=l>f,this.axis.x.isOverflowing=d==="hidden"?!1:this.axis.x.isOverflowing,this.axis.y.isOverflowing=u==="hidden"?!1:this.axis.y.isOverflowing,this.axis.x.forceVisible=this.options.forceVisible==="x"||this.options.forceVisible===!0,this.axis.y.forceVisible=this.options.forceVisible==="y"||this.options.forceVisible===!0,this.hideNativeScrollbar();var p=this.axis.x.isOverflowing?this.scrollbarWidth:0,g=this.axis.y.isOverflowing?this.scrollbarWidth:0;this.axis.x.isOverflowing=this.axis.x.isOverflowing&&m>c-g,this.axis.y.isOverflowing=this.axis.y.isOverflowing&&l>f-p,this.axis.x.scrollbar.size=this.getScrollbarSize("x"),this.axis.y.scrollbar.size=this.getScrollbarSize("y"),this.axis.x.scrollbar.el.style.width=this.axis.x.scrollbar.size+"px",this.axis.y.scrollbar.el.style.height=this.axis.y.scrollbar.size+"px",this.positionScrollbar("x"),this.positionScrollbar("y"),this.toggleTrackVisibility("x"),this.toggleTrackVisibility("y")},e.getScrollbarSize=function(i){if(i===void 0&&(i="y"),!this.axis[i].isOverflowing)return 0;var o=this.contentEl[this.axis[i].scrollSizeAttr],s=this.axis[i].track.el[this.axis[i].offsetSizeAttr],a,c=s/o;return a=Math.max(~~(c*s),this.options.scrollbarMinSize),this.options.scrollbarMaxSize&&(a=Math.min(a,this.options.scrollbarMaxSize)),a},e.positionScrollbar=function(i){if(i===void 0&&(i="y"),!!this.axis[i].isOverflowing){var o=this.contentWrapperEl[this.axis[i].scrollSizeAttr],s=this.axis[i].track.el[this.axis[i].offsetSizeAttr],a=parseInt(this.elStyles[this.axis[i].sizeAttr],10),c=this.axis[i].scrollbar,d=this.contentWrapperEl[this.axis[i].scrollOffsetAttr];d=i==="x"&&this.isRtl&&t.getRtlHelpers().isRtlScrollingInverted?-d:d;var u=d/(o-a),l=~~((s-c.size)*u);l=i==="x"&&this.isRtl&&t.getRtlHelpers().isRtlScrollbarInverted?l+(s-c.size):l,c.el.style.transform=i==="x"?"translate3d("+l+"px, 0, 0)":"translate3d(0, "+l+"px, 0)"}},e.toggleTrackVisibility=function(i){i===void 0&&(i="y");var o=this.axis[i].track.el,s=this.axis[i].scrollbar.el;this.axis[i].isOverflowing||this.axis[i].forceVisible?(o.style.visibility="visible",this.contentWrapperEl.style[this.axis[i].overflowAttr]="scroll"):(o.style.visibility="hidden",this.contentWrapperEl.style[this.axis[i].overflowAttr]="hidden"),this.axis[i].isOverflowing?s.style.display="block":s.style.display="none"},e.hideNativeScrollbar=function(){this.offsetEl.style[this.isRtl?"left":"right"]=this.axis.y.isOverflowing||this.axis.y.forceVisible?"-"+this.scrollbarWidth+"px":0,this.offsetEl.style.bottom=this.axis.x.isOverflowing||this.axis.x.forceVisible?"-"+this.scrollbarWidth+"px":0},e.onMouseMoveForAxis=function(i){i===void 0&&(i="y"),this.axis[i].track.rect=this.axis[i].track.el.getBoundingClientRect(),this.axis[i].scrollbar.rect=this.axis[i].scrollbar.el.getBoundingClientRect();var o=this.isWithinBounds(this.axis[i].scrollbar.rect);o?this.axis[i].scrollbar.el.classList.add(this.classNames.hover):this.axis[i].scrollbar.el.classList.remove(this.classNames.hover),this.isWithinBounds(this.axis[i].track.rect)?(this.showScrollbar(i),this.axis[i].track.el.classList.add(this.classNames.hover)):this.axis[i].track.el.classList.remove(this.classNames.hover)},e.onMouseLeaveForAxis=function(i){i===void 0&&(i="y"),this.axis[i].track.el.classList.remove(this.classNames.hover),this.axis[i].scrollbar.el.classList.remove(this.classNames.hover)},e.showScrollbar=function(i){i===void 0&&(i="y");var o=this.axis[i].scrollbar.el;this.axis[i].isVisible||(o.classList.add(this.classNames.visible),this.axis[i].isVisible=!0),this.options.autoHide&&this.hideScrollbars()},e.onDragStart=function(i,o){o===void 0&&(o="y");var s=Eo(this.el),a=Ft(this.el),c=this.axis[o].scrollbar,d=o==="y"?i.pageY:i.pageX;this.axis[o].dragOffset=d-c.rect[this.axis[o].offsetAttr],this.draggedAxis=o,this.el.classList.add(this.classNames.dragging),s.addEventListener("mousemove",this.drag,!0),s.addEventListener("mouseup",this.onEndDrag,!0),this.removePreventClickId===null?(s.addEventListener("click",this.preventClick,!0),s.addEventListener("dblclick",this.preventClick,!0)):(a.clearTimeout(this.removePreventClickId),this.removePreventClickId=null)},e.onTrackClick=function(i,o){var s=this;if(o===void 0&&(o="y"),!!this.options.clickOnTrack){var a=Ft(this.el);this.axis[o].scrollbar.rect=this.axis[o].scrollbar.el.getBoundingClientRect();var c=this.axis[o].scrollbar,d=c.rect[this.axis[o].offsetAttr],u=parseInt(this.elStyles[this.axis[o].sizeAttr],10),l=this.contentWrapperEl[this.axis[o].scrollOffsetAttr],m=o==="y"?this.mouseY-d:this.mouseX-d,f=m<0?-1:1,p=f===-1?l-u:l+u,g=function v(){if(f===-1){if(l>p){var h;l-=s.options.clickOnTrackSpeed,s.contentWrapperEl.scrollTo((h={},h[s.axis[o].offsetAttr]=l,h)),a.requestAnimationFrame(v)}}else if(l=i.left&&this.mouseX<=i.left+i.width&&this.mouseY>=i.top&&this.mouseY<=i.top+i.height},e.findChild=function(i,o){var s=i.matches||i.webkitMatchesSelector||i.mozMatchesSelector||i.msMatchesSelector;return Array.prototype.filter.call(i.children,function(a){return s.call(a,o)})[0]},t}();he.defaultOptions={autoHide:!0,forceVisible:!1,clickOnTrack:!0,clickOnTrackSpeed:40,classNames:{contentEl:"simplebar-content",contentWrapper:"simplebar-content-wrapper",offset:"simplebar-offset",mask:"simplebar-mask",wrapper:"simplebar-wrapper",placeholder:"simplebar-placeholder",scrollbar:"simplebar-scrollbar",track:"simplebar-track",heightAutoObserverWrapperEl:"simplebar-height-auto-observer-wrapper",heightAutoObserverEl:"simplebar-height-auto-observer",visible:"simplebar-visible",horizontal:"simplebar-horizontal",vertical:"simplebar-vertical",hover:"simplebar-hover",dragging:"simplebar-dragging"},scrollbarMinSize:25,scrollbarMaxSize:0,timeout:1e3};he.instances=new WeakMap;he.initDOMLoadedElements=function(){document.removeEventListener("DOMContentLoaded",this.initDOMLoadedElements),window.removeEventListener("load",this.initDOMLoadedElements),Array.prototype.forEach.call(document.querySelectorAll("[data-simplebar]"),function(t){t.getAttribute("data-simplebar")!=="init"&&!he.instances.has(t)&&new he(t,yo(t.attributes))})};he.removeObserver=function(){this.globalObserver.disconnect()};he.initHtmlApi=function(){this.initDOMLoadedElements=this.initDOMLoadedElements.bind(this),typeof MutationObserver!="undefined"&&(this.globalObserver=new MutationObserver(he.handleMutations),this.globalObserver.observe(document,{childList:!0,subtree:!0})),document.readyState==="complete"||document.readyState!=="loading"&&!document.documentElement.doScroll?window.setTimeout(this.initDOMLoadedElements):(document.addEventListener("DOMContentLoaded",this.initDOMLoadedElements),window.addEventListener("load",this.initDOMLoadedElements))};he.handleMutations=function(t){t.forEach(function(e){Array.prototype.forEach.call(e.addedNodes,function(n){n.nodeType===1&&(n.hasAttribute("data-simplebar")?!he.instances.has(n)&&document.documentElement.contains(n)&&new he(n,yo(n.attributes)):Array.prototype.forEach.call(n.querySelectorAll("[data-simplebar]"),function(i){i.getAttribute("data-simplebar")!=="init"&&!he.instances.has(i)&&document.documentElement.contains(i)&&new he(i,yo(i.attributes))}))}),Array.prototype.forEach.call(e.removedNodes,function(n){n.nodeType===1&&(n.getAttribute("data-simplebar")==="init"?he.instances.has(n)&&!document.documentElement.contains(n)&&he.instances.get(n).unMount():Array.prototype.forEach.call(n.querySelectorAll('[data-simplebar="init"]'),function(i){he.instances.has(i)&&!document.documentElement.contains(i)&&he.instances.get(i).unMount()}))})})};he.getOptions=yo;bo.default&&he.initHtmlApi();var Um=Le(Ym());function Km(t){return"error"in t&&"exception"in t}function Wn(t){return"error"in t}function Gm(t){return typeof t.next=="string"}function re(t){let e=["","null","undefined"];return Array.isArray(t)?t.length>0:typeof t=="string"&&!e.includes(t)||typeof t=="number"||typeof t=="boolean"?!0:typeof t=="object"&&t!==null}function Fi(t){return t.every(e=>typeof e!="undefined"&&e!==null)}function Bi(t){for(let e of t.options)e.selected&&(e.selected=!1);t.value=""}function bl(t){return typeof t!==null&&typeof t!="undefined"}function fL(){let{csrftoken:t}=Um.default.parse(document.cookie);if(typeof t=="undefined")throw new Error("Invalid or missing CSRF token");return t}function Xm(t,e,n){return Pe(this,null,function*(){let i=fL(),o=new Headers({"X-CSRFToken":i}),s;typeof n!="undefined"&&(s=JSON.stringify(n),o.set("content-type","application/json"));let a=yield fetch(t,{method:e,body:s,headers:o,credentials:"same-origin"}),c=a.headers.get("Content-Type");if(typeof c=="string"&&c.includes("text"))return{error:yield a.text()};let d=yield a.json();return!a.ok&&Array.isArray(d)?{error:d.join(` -`)}:!a.ok&&"detail"in d?{error:d.detail}:d})}function So(t,e){return Pe(this,null,function*(){return yield Xm(t,"PATCH",e)})}function hL(t){return Pe(this,null,function*(){return yield Xm(t,"GET")})}function Qm(t){return Pe(this,null,function*(){return yield hL(t)})}function*j(...t){for(let e of t)for(let n of document.querySelectorAll(e))n!==null&&(yield n)}function ae(t){return document.getElementById(t)}function Jm(t,e=0){let n=e,i=document.getElementById("content-title");i!==null&&(n+=i.getBoundingClientRect().bottom);let o=t.getBoundingClientRect().top+window.pageYOffset+n;window.scrollTo({top:o,behavior:"smooth"})}function Zm(t){let e=[];for(let n of t.querySelectorAll("select"))if(n!==null){let i={name:n.name,options:[]};for(let o of n.options)o.selected&&i.options.push(o.value);e=[...e,i]}return e}function zi(t,e){t!==null&&(typeof e=="undefined"?window.getComputedStyle(t).display==="none"?t.style.display="":t.style.display="none":e==="show"?t.style.display="":t.style.display="none")}function*eg(t){for(let e of t.querySelectorAll("td"))e!==null&&re(e.innerText)&&e.innerText!=="\u2014"&&(yield e.innerText.replaceAll(/[\n\r]/g,"").trim())}function Ve(t,e,n){function i(s){return!!(typeof n=="string"&&s!==null&&s.matches(n))}function o(s){if(s!==null&&s.parentElement!==null&&!i(s)){for(let a of s.parentElement.querySelectorAll(e))if(a!==null)return a;return o(s.parentElement.parentElement)}return null}return o(t)}function Vn(t,e,n=null,i=[]){let o=document.createElement(t);if(e!==null)for(let s of Object.keys(e)){let a=s,c=e[a];a in o&&(o[a]=c)}n!==null&&n.length>0&&o.classList.add(...n);for(let s of i)o.appendChild(s);return o}function tg(t,e){let n=new Map;for(let i of t){let o=i[e];n.has(o)||n.set(o,i)}return Array.from(n.values())}function pL(t,e){let n=new Set;for(let i of e.querySelectorAll("*[name]"))i.validity.valid?(i.classList.contains("is-invalid")&&i.classList.remove("is-invalid"),i.classList.contains("is-valid")||i.classList.add("is-valid")):(n.add(i.name),i.classList.contains("is-valid")&&i.classList.remove("is-valid"),i.classList.contains("is-invalid")||i.classList.add("is-invalid"));if(n.size!==0){let i=e.elements.namedItem(Array.from(n)[0]);Jm(i),t.preventDefault()}}function ng(){for(let t of j("form")){let e=t.querySelectorAll("button[type=submit]");for(let n of e)n.addEventListener("click",i=>pL(i,t))}}function ig(){for(let t of j("a.set_speed"))if(t!==null){let e=function(n){n.preventDefault();let i=t.getAttribute("data"),o=document.getElementById(t.target);o!==null&&i!==null&&(o.value=i)};t.addEventListener("click",e)}}var yl={vlangroup_edit:{region:{hide:["id_sitegroup","id_site","id_location","id_rack","id_clustergroup","id_cluster"],show:["id_region"]},"site group":{hide:["id_region","id_site","id_location","id_rack","id_clustergroup","id_cluster"],show:["id_sitegroup"]},site:{hide:["id_location","id_rack","id_clustergroup","id_cluster"],show:["id_region","id_sitegroup","id_site"]},location:{hide:["id_rack","id_clustergroup","id_cluster"],show:["id_region","id_sitegroup","id_site","id_location"]},rack:{hide:["id_clustergroup","id_cluster"],show:["id_region","id_sitegroup","id_site","id_location","id_rack"]},"cluster group":{hide:["id_region","id_sitegroup","id_site","id_location","id_rack","id_cluster"],show:["id_clustergroup"]},cluster:{hide:["id_region","id_sitegroup","id_site","id_location","id_rack"],show:["id_clustergroup","id_cluster"]},default:{hide:["id_region","id_sitegroup","id_site","id_location","id_rack","id_clustergroup","id_cluster"],show:[]}}};function El(t,e){var n;for(let i of j(t)){let o=(n=i.parentElement)==null?void 0:n.parentElement;o!==null&&(e==="show"?zi(o,"show"):zi(o,"hide"))}}function rg(t,e){let n=e.options[e.selectedIndex].innerText.toLowerCase();for(let[i,o]of Object.entries(yl[t]))if(n.endsWith(i)){for(let s of o.hide)El(`#${s}`,"hide");for(let s of o.show)El(`#${s}`,"show");break}else for(let s of yl[t].default.hide)El(`#${s}`,"hide")}function og(){for(let t of Object.keys(yl))for(let e of j(`html[data-netbox-url-name="${t}"] #id_scope_type`))rg(t,e),e.addEventListener("change",()=>rg(t,e))}function mL(t){var n,i;let e=(i=(n=t==null?void 0:t.parentElement)==null?void 0:n.parentElement)!=null?i:null;return e!==null&&e.classList.contains("row")?e:null}function st(t,e){let n=mL(t);if(t!==null&&n!==null){zi(n,e);let i=new Event(`netbox.select.disabled.${t.name}`);switch(e){case"hide":t.disabled=!0,t.dispatchEvent(i);break;case"show":t.disabled=!1,t.dispatchEvent(i)}}}function gL(){let t=[ae("id_tagged_vlans"),ae("id_untagged_vlan"),ae("id_vlan_group")];if(Fi(t)){let[e,n]=t;Bi(n),Bi(e);for(let i of t)st(i,"hide")}}function vL(){let t=[ae("id_tagged_vlans"),ae("id_untagged_vlan"),ae("id_vlan_group")];if(Fi(t)){let[e,n,i]=t;Bi(e),st(i,"show"),st(n,"show"),st(e,"hide")}}function bL(){let t=[ae("id_tagged_vlans"),ae("id_untagged_vlan"),ae("id_vlan_group")];if(Fi(t)){let[e,n,i]=t;st(e,"show"),st(i,"show"),st(n,"show")}}function yL(){let t=[ae("id_tagged_vlans"),ae("id_untagged_vlan"),ae("id_vlan_group")];if(Fi(t)){let[e,n,i]=t;Bi(e),st(i,"show"),st(n,"show"),st(e,"hide")}}function sg(t){switch(t.value){case"access":vL();break;case"tagged":bL();break;case"tagged-all":yL();break;case"":gL();break}}function ag(){let t=ae("id_mode");t!==null&&(t.addEventListener("change",()=>sg(t)),sg(t))}function lg(){for(let t of[ng,ig,og,ag])t()}var mg=Le(pg());window.Collapse=Me;window.Modal=Nt;window.Popover=an;window.Toast=_t;window.Tooltip=et;function EL(){for(let t of j(".masonry"))new mg.default(t,{itemSelector:".masonry-item",percentPosition:!0})}function _L(){for(let t of j('[data-bs-toggle="tooltip"]'))new et(t,{container:"body"})}function SL(){for(let t of j('[data-bs-toggle="modal"]'))new Nt(t)}function Sn(t,e,n,i){let o="mdi-alert";switch(t){case"warning":o="mdi-alert";break;case"success":o="mdi-check-circle";break;case"info":o="mdi-information";break;case"danger":o="mdi-alert";break}let s=document.createElement("div");s.setAttribute("class","toast-container position-fixed bottom-0 end-0 m-3");let a=document.createElement("div");a.setAttribute("class",`toast bg-${t}`),a.setAttribute("role","alert"),a.setAttribute("aria-live","assertive"),a.setAttribute("aria-atomic","true");let c=document.createElement("div");c.setAttribute("class",`toast-header bg-${t} text-body`);let d=document.createElement("i");d.setAttribute("class",`mdi ${o}`);let u=document.createElement("strong");u.setAttribute("class","me-auto ms-1"),u.innerText=e;let l=document.createElement("button");l.setAttribute("type","button"),l.setAttribute("class","btn-close"),l.setAttribute("data-bs-dismiss","toast"),l.setAttribute("aria-label","Close");let m=document.createElement("div");if(m.setAttribute("class","toast-body"),c.appendChild(d),c.appendChild(u),typeof i!="undefined"){let p=document.createElement("small");p.setAttribute("class","text-muted"),c.appendChild(p)}return c.appendChild(l),m.innerText=n.trim(),a.appendChild(c),a.appendChild(m),s.appendChild(a),document.body.appendChild(s),new _t(a)}function wL(){let{hash:t}=location;if(t&&t.match(/^#tab_.+$/)){let e=t.replace("tab_","");for(let n of j(`ul.nav.nav-tabs .nav-link[data-bs-target="${e}"]`))new cn(n).show()}}function TL(){let t=document.querySelectorAll(".sidebar .accordion-item");function e(n){for(let i of t)i!==n?i.classList.remove("is-open"):i.classList.toggle("is-open")}for(let n of t)for(let i of n.querySelectorAll(".accordion-button"))i.addEventListener("click",()=>{e(n)})}function xL(){for(let t of j("a.image-preview")){let e=`${Math.round(window.innerWidth/4)}px`,n=Vn("img",{src:t.href});n.style.maxWidth=e;let i=Vn("div",null,null,[n]);new an(t,{customClass:"image-preview-popover",trigger:"hover",html:!0,content:i})}}function gg(){for(let t of[_L,SL,EL,wL,xL,TL])t()}var wl=Le(Sl());function AL(t,e){var c;let n=t.currentTarget,i=Ve(n,"span.search-obj-selected"),o=Ve(n,"input.search-obj-type"),s=n.getAttribute("data-search-value"),a="";i!==null&&o!==null&&(re(s)&&a!==s?(a=s,i.innerHTML=(c=e.textContent)!=null?c:"Error",o.value=s):(a="",i.innerHTML="All Objects",o.value=""))}function CL(){for(let t of j(".search-obj-selector"))for(let e of t.querySelectorAll("li > button.dropdown-item"))e.addEventListener("click",n=>AL(n,e))}function LL(){var t;for(let e of j("input.interface-filter")){let o=function(s){let a=s.target,c=new RegExp(a.value.toLowerCase().trim());for(let d of i){let u=d.querySelector('input[type="checkbox"][name="pk"]');u!==null&&(u.checked=!1);let l=d.getAttribute("data-name");typeof l=="string"&&(c.test(l.toLowerCase().trim())?d.classList.contains("d-none")&&d.classList.remove("d-none"):d.classList.add("d-none"))}},n=Ve(e,"table"),i=Array.from((t=n==null?void 0:n.querySelectorAll("tbody > tr"))!=null?t:[]).filter(s=>s!==null);e.addEventListener("keyup",(0,wl.default)(o,300))}}function DL(){var t;for(let e of j("input.object-filter")){let o=function(s){let a=s.target,c=new RegExp(a.value.toLowerCase().trim());for(let d of i){let u=d.querySelector('input[type="checkbox"][name="pk"]');u!==null&&(u.checked=!1);for(let l of eg(d))if(c.test(l.toLowerCase())){d.classList.remove("d-none");break}else d.classList.add("d-none")}},n=Ve(e,"table"),i=Array.from((t=n==null?void 0:n.querySelectorAll("tbody > tr"))!=null?t:[]).filter(s=>s!==null);e.addEventListener("keyup",(0,wl.default)(o,300))}}function bg(){for(let t of[CL,DL,LL])t()}function yg(t,e,n){return Math.min(Math.max(t,n),e)}var Yn=class extends Error{constructor(e){super(`Failed to parse color: "${e}"`)}};function ML(t){if(typeof t!="string")throw new Yn(t);if(t.trim().toLowerCase()==="transparent")return[0,0,0,0];let e=t.trim();e=jL.test(t)?function(a){let c=a.toLowerCase().trim(),d=IL[function(u){let l=5381,m=u.length;for(;m;)l=33*l^u.charCodeAt(--m);return(l>>>0)%2341}(c)];if(!d)throw new Yn(a);return`#${d}`}(t):t;let n=kL.exec(e);if(n){let a=Array.from(n).slice(1);return[...a.slice(0,3).map(c=>parseInt(Wi(c,2),16)),parseInt(Wi(a[3]||"f",2),16)/255]}let i=PL.exec(e);if(i){let a=Array.from(i).slice(1);return[...a.slice(0,3).map(c=>parseInt(c,16)),parseInt(a[3]||"ff",16)/255]}let o=NL.exec(e);if(o){let a=Array.from(o).slice(1);return[...a.slice(0,3).map(c=>parseInt(c,10)),parseFloat(a[3]||"1")]}let s=RL.exec(e);if(s){let[a,c,d,u]=Array.from(s).slice(1).map(parseFloat);if(yg(0,100,c)!==c)throw new Yn(t);if(yg(0,100,d)!==d)throw new Yn(t);return[...HL(a,c,d),u||1]}throw new Yn(t)}var Eg=t=>parseInt(t.replace(/_/g,""),36),IL="1q29ehhb 1n09sgk7 1kl1ekf_ _yl4zsno 16z9eiv3 1p29lhp8 _bd9zg04 17u0____ _iw9zhe5 _to73___ _r45e31e _7l6g016 _jh8ouiv _zn3qba8 1jy4zshs 11u87k0u 1ro9yvyo 1aj3xael 1gz9zjz0 _3w8l4xo 1bf1ekf_ _ke3v___ _4rrkb__ 13j776yz _646mbhl _nrjr4__ _le6mbhl 1n37ehkb _m75f91n _qj3bzfz 1939yygw 11i5z6x8 _1k5f8xs 1509441m 15t5lwgf _ae2th1n _tg1ugcv 1lp1ugcv 16e14up_ _h55rw7n _ny9yavn _7a11xb_ 1ih442g9 _pv442g9 1mv16xof 14e6y7tu 1oo9zkds 17d1cisi _4v9y70f _y98m8kc 1019pq0v 12o9zda8 _348j4f4 1et50i2o _8epa8__ _ts6senj 1o350i2o 1mi9eiuo 1259yrp0 1ln80gnw _632xcoy 1cn9zldc _f29edu4 1n490c8q _9f9ziet 1b94vk74 _m49zkct 1kz6s73a 1eu9dtog _q58s1rz 1dy9sjiq __u89jo3 _aj5nkwg _ld89jo3 13h9z6wx _qa9z2ii _l119xgq _bs5arju 1hj4nwk9 1qt4nwk9 1ge6wau6 14j9zlcw 11p1edc_ _ms1zcxe _439shk6 _jt9y70f _754zsow 1la40eju _oq5p___ _x279qkz 1fa5r3rv _yd2d9ip _424tcku _8y1di2_ _zi2uabw _yy7rn9h 12yz980_ __39ljp6 1b59zg0x _n39zfzp 1fy9zest _b33k___ _hp9wq92 1il50hz4 _io472ub _lj9z3eo 19z9ykg0 _8t8iu3a 12b9bl4a 1ak5yw0o _896v4ku _tb8k8lv _s59zi6t _c09ze0p 1lg80oqn 1id9z8wb _238nba5 1kq6wgdi _154zssg _tn3zk49 _da9y6tc 1sg7cv4f _r12jvtt 1gq5fmkz 1cs9rvci _lp9jn1c _xw1tdnb 13f9zje6 16f6973h _vo7ir40 _bt5arjf _rc45e4t _hr4e100 10v4e100 _hc9zke2 _w91egv_ _sj2r1kk 13c87yx8 _vqpds__ _ni8ggk8 _tj9yqfb 1ia2j4r4 _7x9b10u 1fc9ld4j 1eq9zldr _5j9lhpx _ez9zl6o _md61fzm".split(" ").reduce((t,e)=>{let n=Eg(e.substring(0,3)),i=Eg(e.substring(3)).toString(16),o="";for(let s=0;s<6-i.length;s++)o+="0";return t[n]=`${o}${i}`,t},{}),Wi=(t,e)=>Array.from(Array(e)).map(()=>t).join(""),kL=new RegExp(`^#${Wi("([a-f0-9])",3)}([a-f0-9])?$`,"i"),PL=new RegExp(`^#${Wi("([a-f0-9]{2})",3)}([a-f0-9]{2})?$`,"i"),NL=new RegExp(`^rgba?\\(\\s*(\\d+)\\s*${Wi(",\\s*(\\d+)\\s*",2)}(?:,\\s*([\\d.]+))?\\s*\\)$`,"i"),RL=/^hsla?\(\s*([\d.]+)\s*,\s*([\d.]+)%\s*,\s*([\d.]+)%(?:\s*,\s*([\d.]+))?\s*\)$/i,jL=/^[a-z]+$/i,_g=t=>Math.round(255*t),HL=(t,e,n)=>{let i=n/100;if(e===0)return[i,i,i].map(_g);let o=(t%360+360)%360/60,s=(1-Math.abs(2*i-1))*(e/100),a=s*(1-Math.abs(o%2-1)),c=0,d=0,u=0;o>=0&&o<1?(c=s,d=a):o>=1&&o<2?(c=a,d=s):o>=2&&o<3?(d=s,u=a):o>=3&&o<4?(d=a,u=s):o>=4&&o<5?(c=a,u=s):o>=5&&o<6&&(c=s,u=a);let l=i-s/2;return[c+l,d+l,u+l].map(_g)};function qL(t){if(t==="transparent")return 0;function e(s){let a=s/255;return a<=.03928?a/12.92:Math.pow((a+.055)/1.055,2.4)}let[n,i,o]=ML(t);return .2126*e(n)+.7152*e(i)+.0722*e(o)}function $L(t){return qL(t)>.179}function Vi(t){return $L(t)?"#000":"#fff"}var Ug=Le(Sl()),Ol=Le($g());var Mo={};(function(t,e){typeof Mo=="object"&&typeof module=="object"?module.exports=e():typeof define=="function"&&define.amd?define([],e):typeof Mo=="object"?Mo.SlimSelect=e():t.SlimSelect=e()})(window,function(){return n={},t.m=e=[function(i,o,s){"use strict";function a(d,u){u=u||{bubbles:!1,cancelable:!1,detail:void 0};var l=document.createEvent("CustomEvent");return l.initCustomEvent(d,u.bubbles,u.cancelable,u.detail),l}var c;o.__esModule=!0,o.hasClassInTree=function(d,u){function l(m,f){return f&&m&&m.classList&&m.classList.contains(f)?m:null}return l(d,u)||function m(f,p){return f&&f!==document?l(f,p)?f:m(f.parentNode,p):null}(d,u)},o.ensureElementInView=function(d,u){var l=d.scrollTop+d.offsetTop,m=l+d.clientHeight,f=u.offsetTop,p=f+u.clientHeight;f=window.innerHeight?"above":l?u:"below"},o.debounce=function(d,u,l){var m;return u===void 0&&(u=100),l===void 0&&(l=!1),function(){for(var f=[],p=0;p[^<>]*'+v+"")},o.kebabCase=function(d){var u=d.replace(/[A-Z\u00C0-\u00D6\u00D8-\u00DE]/g,function(l){return"-"+l.toLowerCase()});return d[0]===d[0].toUpperCase()?u.substring(1):u},typeof(c=window).CustomEvent!="function"&&(a.prototype=c.Event.prototype,c.CustomEvent=a)},function(i,o,s){"use strict";o.__esModule=!0;var a=(c.prototype.newOption=function(u){return{id:u.id?u.id:String(Math.floor(1e8*Math.random())),value:u.value?u.value:"",text:u.text?u.text:"",innerHTML:u.innerHTML?u.innerHTML:"",selected:!!u.selected&&u.selected,display:u.display===void 0||u.display,disabled:!!u.disabled&&u.disabled,placeholder:!!u.placeholder&&u.placeholder,class:u.class?u.class:void 0,data:u.data?u.data:{},mandatory:!!u.mandatory&&u.mandatory}},c.prototype.add=function(u){this.data.push({id:String(Math.floor(1e8*Math.random())),value:u.value,text:u.text,innerHTML:"",selected:!1,display:!0,disabled:!1,placeholder:!1,class:void 0,mandatory:u.mandatory,data:{}})},c.prototype.parseSelectData=function(){this.data=[];for(var u=0,l=this.main.select.element.childNodes;u',placeholder:this.placeholder,searchPlaceholder:"Filter",onChange:()=>this.handleSlimChange()}),this.getStaticParams(),this.getDynamicParams(),this.getPathKeys();for(let[a,c]of this.staticParams.entries())this.queryParams.set(a,c);for(let a of this.dynamicParams.keys())this.updateQueryParams(a);for(let a of this.pathValues.keys())this.updatePathValues(a);this.queryParams.set("brief",[!0]),this.updateQueryUrl(),this.resetClasses(),this.setSlimStyles(),this.initResetButton(),this.initRefreshButton(),this.addEventListeners();let o=this.base.getAttribute("data-fetch-trigger"),s=this.base.closest(".content-container .collapse");switch(zg(o)?this.trigger=o:s!==null?this.trigger="collapse":this.trigger="load",this.trigger){case"collapse":s!==null&&(s.addEventListener("show.bs.collapse",()=>this.loadData()),s.addEventListener("hide.bs.collapse",()=>this.resetOptions()));break;case"open":this.slim.beforeOpen=()=>this.loadData();break;case"load":Promise.all([this.loadData()]);break}}get options(){return this.slim.data.data.filter(Yg)}set options(e){let n=e;this.nullOption!==null&&(n=[this.nullOption,...n]);let i=tg(n,"value"),o=typeof i.find(a=>a.value==="")!="undefined",s=i.findIndex(a=>a.value==="");o&&s>=0?i[s]=this.emptyOption:i.unshift(this.emptyOption),this.slim.setData(i)}resetOptions(){this.options=[this.emptyOption]}disable(){this.slim.slim.singleSelected!==null?this.slim.slim.singleSelected.container.hasAttribute("disabled")||this.slim.slim.singleSelected.container.setAttribute("disabled",""):this.slim.slim.multiSelected!==null&&(this.slim.slim.multiSelected.container.hasAttribute("disabled")||this.slim.slim.multiSelected.container.setAttribute("disabled","")),this.slim.disable()}enable(){this.slim.slim.singleSelected!==null?this.slim.slim.singleSelected.container.hasAttribute("disabled")&&this.slim.slim.singleSelected.container.removeAttribute("disabled"):this.slim.slim.multiSelected!==null&&this.slim.slim.multiSelected.container.hasAttribute("disabled")&&this.slim.slim.multiSelected.container.removeAttribute("disabled"),this.slim.enable()}addEventListeners(){let e=(0,Ug.default)(i=>this.handleSearch(i),300,!1);this.slim.slim.search.input.addEventListener("keyup",i=>{if(!i.key.match(/^(Arrow|Enter|Tab).*/))return e(i)}),this.slim.slim.search.input.addEventListener("paste",i=>e(i)),this.slim.slim.list.addEventListener("scroll",()=>this.handleScroll()),this.base.addEventListener(`netbox.select.atbottom.${this.name}`,()=>this.fetchOptions(this.more,"merge")),this.base.addEventListener(`netbox.select.disabled.${this.name}`,i=>this.handleDisableEnable(i));let n=new Set([...this.dynamicParams.keys(),...this.pathValues.keys()]);for(let i of n){let o=document.querySelector(`[name="${i}"]`);o!==null&&o.addEventListener("change",s=>this.handleEvent(s)),this.base.addEventListener(`netbox.select.onload.${i}`,s=>this.handleEvent(s))}}loadData(){return Pe(this,null,function*(){try{this.disable(),yield this.getOptions("replace")}catch(e){console.error(e)}finally{this.setOptionStyles(),this.enable(),this.base.dispatchEvent(this.loadEvent)}})}getPreselectedOptions(){return Array.from(this.base.options).filter(e=>e.selected).filter(e=>!(e.value==="---------"||e.innerText==="---------"))}processOptions(e,n="merge"){return Pe(this,null,function*(){let i=this.getPreselectedOptions(),o=i.map(c=>c.getAttribute("value")).filter(re),s=i.map(c=>({value:c.value,text:c.innerText,selected:!0,disabled:!1})),a=[];for(let c of e.results){let d=c.display;typeof c._depth=="number"&&c._depth>0&&(d=`${"\u2500".repeat(c._depth)} ${d}`);let u={},l=c.id.toString(),m,f,p;for(let[v,h]of Object.entries(c)){if(!["id","slug"].includes(v)&&["string","number","boolean"].includes(typeof h)){let y=v.replaceAll("_","-");u[y]=String(h)}this.disabledAttributes.some(y=>y.toLowerCase()===v.toLowerCase())&&(typeof h=="string"&&h.toLowerCase()!=="false"||typeof h=="boolean"&&h===!0||typeof h=="number"&&h>0)&&(p=!0)}o.some(v=>this.disabledOptions.includes(v))&&(p=!0),o.includes(l)&&(f=!0,p=!1);let g={value:l,text:d,data:u,style:m,selected:f,disabled:p};a=[...a,g]}switch(n){case"merge":this.options=[...this.options,...a];break;case"replace":this.options=[...s,...a];break}Gm(e)?this.more=e.next:this.more=null})}fetchOptions(e,n="merge"){return Pe(this,null,function*(){if(typeof e=="string"){let i=yield Qm(e);if(Wn(i))return Km(i)?this.handleError(i.exception,i.error):this.handleError(`Error Fetching Options for field '${this.name}'`,i.error);yield this.processOptions(i,n)}})}getOptions(e="merge"){return Pe(this,null,function*(){if(this.queryUrl.includes("{{")){this.resetOptions();return}yield this.fetchOptions(this.queryUrl,e)})}handleSearch(e){return Pe(this,null,function*(){let{value:n}=e.target,i=Ol.default.stringifyUrl({url:this.queryUrl,query:{q:n}});yield this.fetchOptions(i,"merge"),this.slim.data.search(n),this.slim.render()})}handleScroll(){let e=this.slim.slim.list.scrollTop+this.slim.slim.list.offsetHeight===this.slim.slim.list.scrollHeight;this.atBottom&&!e?(this.atBottom=!1,this.base.dispatchEvent(this.bottomEvent)):!this.atBottom&&e&&(this.atBottom=!0,this.base.dispatchEvent(this.bottomEvent))}handleEvent(e){let n=e.target;this.updateQueryParams(n.name),this.updatePathValues(n.name),this.updateQueryUrl(),Promise.all([this.loadData()])}handleDisableEnable(e){let n=e.target;n.disabled===!0?this.disable():n.disabled===!1&&this.enable()}handleError(e,n){Sn("danger",e,n).show(),this.resetOptions()}handleSlimChange(){let e=this.slim.slim;e&&(e.container.classList.contains("is-invalid")||this.base.classList.contains("is-invalid"))&&(e.container.classList.remove("is-invalid"),this.base.classList.remove("is-invalid")),this.base.dispatchEvent(this.loadEvent)}updateQueryUrl(){let e={};for(let[o,s]of this.queryParams.entries())e[o]=s;let n=this.url;for(let[o,s]of this.pathValues.entries())for(let a of this.url.matchAll(new RegExp(`({{${o}}})`,"g")))re(s)&&(n=n.replaceAll(a[1],s.toString()));let i=Ol.default.stringifyUrl({url:n,query:e});this.queryUrl!==i&&(this.queryUrl=i,this.base.setAttribute("data-url",i))}updateQueryParams(e){let n=document.querySelector(`[name="${e}"]`);if(n!==null){let i=[];if(n.multiple?i=Array.from(n.options).filter(o=>o.selected).map(o=>o.value):n.value!==""&&(i=[n.value]),i.length>0){this.dynamicParams.updateValue(e,i);let o=this.dynamicParams.get(e);if(typeof o!="undefined"){let{queryParam:s,queryValue:a}=o,c=[];if(this.staticParams.has(s)){let d=this.staticParams.get(s);typeof d!="undefined"&&(c=[...d,...a])}else c=a;c.length>0?this.queryParams.set(s,c):this.queryParams.delete(s)}}else{let o=this.dynamicParams.queryParam(e);o!==null&&this.queryParams.delete(o)}}}updatePathValues(e){let n=e.replaceAll(/^id_/gi,""),i=ae(`id_${n}`);i!==null&&this.url.includes("{{")&&Boolean(this.url.match(new RegExp(`({{(${e})}})`,"g")))&&(re(i.value)?this.pathValues.set(e,i.value):this.pathValues.set(e,""))}getPlaceholder(){let e=this.name;if(this.base.id){let n=document.querySelector(`label[for="${this.base.id}"]`);n!==null&&(e=`Select ${n.innerText.trim()}`)}return e}getDisabledOptions(){var n;let e=[];if(Bg(this.base))try{let i=JSON.parse((n=this.base.getAttribute("data-query-param-exclude"))!=null?n:"[]");e=[...e,...i]}catch(i){console.group(`Unable to parse data-query-param-exclude value on select element '${this.name}'`),console.warn(i),console.groupEnd()}return e}getDisabledAttributes(){let e=[...Kg],n=this.base.getAttribute("disabled-indicator");return re(n)&&(e=[...e,n]),e}getPathKeys(){for(let e of this.url.matchAll(new RegExp("{{(.+)}}","g")))this.pathValues.set(e[1],"")}getDynamicParams(){let e=this.base.getAttribute("data-dynamic-params");try{this.dynamicParams.addFromJson(e)}catch(n){console.group(`Unable to determine dynamic query parameters for select field '${this.name}'`),console.warn(n),console.groupEnd()}}getStaticParams(){let e=this.base.getAttribute("data-static-params");try{if(re(e)){let n=JSON.parse(e);if(Vg(n))for(let{queryParam:i,queryValue:o}of n)Array.isArray(o)?this.staticParams.set(i,o):this.staticParams.set(i,[o])}}catch(n){console.group(`Unable to determine static query parameters for select field '${this.name}'`),console.warn(n),console.groupEnd()}}setSlimStyles(){let{width:e,height:n}=this.slim.slim.container.getBoundingClientRect();this.base.style.opacity="0",this.base.style.width=`${e}px`,this.base.style.height=`${n}px`,this.base.style.display="block",this.base.style.position="absolute",this.base.style.pointerEvents="none"}setOptionStyles(){for(let e of this.options)if("data"in e&&"id"in e&&typeof e.data!="undefined"&&typeof e.id!="undefined"&&"color"in e.data){let n=e.id,i=e.data,o=document.createElement("style"),s=`#${i.color}`,a=Vi(s);o.setAttribute("data-netbox",n),o.innerHTML=` +`)}:!a.ok&&"detail"in d?{error:d.detail}:d})}function So(t,e){return Pe(this,null,function*(){return yield Xm(t,"PATCH",e)})}function hL(t){return Pe(this,null,function*(){return yield Xm(t,"GET")})}function Qm(t){return Pe(this,null,function*(){return yield hL(t)})}function*j(...t){for(let e of t)for(let n of document.querySelectorAll(e))n!==null&&(yield n)}function ae(t){return document.getElementById(t)}function Jm(t,e=0){let n=e,i=document.getElementById("content-title");i!==null&&(n+=i.getBoundingClientRect().bottom);let o=t.getBoundingClientRect().top+window.pageYOffset+n;window.scrollTo({top:o,behavior:"smooth"})}function Zm(t){let e=[];for(let n of t.querySelectorAll("select"))if(n!==null){let i={name:n.name,options:[]};for(let o of n.options)o.selected&&i.options.push(o.value);e=[...e,i]}return e}function zi(t,e){t!==null&&(typeof e=="undefined"?window.getComputedStyle(t).display==="none"?t.style.display="":t.style.display="none":e==="show"?t.style.display="":t.style.display="none")}function*eg(t){for(let e of t.querySelectorAll("td"))e!==null&&re(e.innerText)&&e.innerText!=="\u2014"&&(yield e.innerText.replaceAll(/[\n\r]/g,"").trim())}function Ve(t,e,n){function i(s){return!!(typeof n=="string"&&s!==null&&s.matches(n))}function o(s){if(s!==null&&s.parentElement!==null&&!i(s)){for(let a of s.parentElement.querySelectorAll(e))if(a!==null)return a;return o(s.parentElement.parentElement)}return null}return o(t)}function Vn(t,e,n=null,i=[]){let o=document.createElement(t);if(e!==null)for(let s of Object.keys(e)){let a=s,c=e[a];a in o&&(o[a]=c)}n!==null&&n.length>0&&o.classList.add(...n);for(let s of i)o.appendChild(s);return o}function tg(t,e){let n=new Map;for(let i of t){let o=i[e];n.has(o)||n.set(o,i)}return Array.from(n.values())}function pL(t,e){let n=new Set;for(let i of e.querySelectorAll("*[name]"))i.validity.valid?(i.classList.contains("is-invalid")&&i.classList.remove("is-invalid"),i.classList.contains("is-valid")||i.classList.add("is-valid")):(n.add(i.name),i.classList.contains("is-valid")&&i.classList.remove("is-valid"),i.classList.contains("is-invalid")||i.classList.add("is-invalid"));if(n.size!==0){let i=e.elements.namedItem(Array.from(n)[0]);Jm(i),t.preventDefault()}}function ng(){for(let t of j("form")){let e=t.querySelectorAll("button[type=submit]");for(let n of e)n.addEventListener("click",i=>pL(i,t))}}function ig(){for(let t of j("a.set_speed"))if(t!==null){let e=function(n){n.preventDefault();let i=t.getAttribute("data"),o=document.getElementById(t.target);o!==null&&i!==null&&(o.value=i)};t.addEventListener("click",e)}}var yl={vlangroup_edit:{region:{hide:["id_sitegroup","id_site","id_location","id_rack","id_clustergroup","id_cluster"],show:["id_region"]},"site group":{hide:["id_region","id_site","id_location","id_rack","id_clustergroup","id_cluster"],show:["id_sitegroup"]},site:{hide:["id_location","id_rack","id_clustergroup","id_cluster"],show:["id_region","id_sitegroup","id_site"]},location:{hide:["id_rack","id_clustergroup","id_cluster"],show:["id_region","id_sitegroup","id_site","id_location"]},rack:{hide:["id_clustergroup","id_cluster"],show:["id_region","id_sitegroup","id_site","id_location","id_rack"]},"cluster group":{hide:["id_region","id_sitegroup","id_site","id_location","id_rack","id_cluster"],show:["id_clustergroup"]},cluster:{hide:["id_region","id_sitegroup","id_site","id_location","id_rack"],show:["id_clustergroup","id_cluster"]},default:{hide:["id_region","id_sitegroup","id_site","id_location","id_rack","id_clustergroup","id_cluster"],show:[]}}};function El(t,e){var n;for(let i of j(t)){let o=(n=i.parentElement)==null?void 0:n.parentElement;o!==null&&(e==="show"?zi(o,"show"):zi(o,"hide"))}}function rg(t,e){let n=e.options[e.selectedIndex].innerText.toLowerCase();for(let[i,o]of Object.entries(yl[t]))if(n.endsWith(i)){for(let s of o.hide)El(`#${s}`,"hide");for(let s of o.show)El(`#${s}`,"show");break}else for(let s of yl[t].default.hide)El(`#${s}`,"hide")}function og(){for(let t of Object.keys(yl))for(let e of j(`html[data-netbox-url-name="${t}"] #id_scope_type`))rg(t,e),e.addEventListener("change",()=>rg(t,e))}function mL(t){var n,i;let e=(i=(n=t==null?void 0:t.parentElement)==null?void 0:n.parentElement)!=null?i:null;return e!==null&&e.classList.contains("row")?e:null}function st(t,e){let n=mL(t);if(t!==null&&n!==null){zi(n,e);let i=new Event(`netbox.select.disabled.${t.name}`);switch(e){case"hide":t.disabled=!0,t.dispatchEvent(i);break;case"show":t.disabled=!1,t.dispatchEvent(i)}}}function gL(){let t=[ae("id_tagged_vlans"),ae("id_untagged_vlan"),ae("id_vlan_group")];if(Fi(t)){let[e,n]=t;Bi(n),Bi(e);for(let i of t)st(i,"hide")}}function vL(){let t=[ae("id_tagged_vlans"),ae("id_untagged_vlan"),ae("id_vlan_group")];if(Fi(t)){let[e,n,i]=t;Bi(e),st(i,"show"),st(n,"show"),st(e,"hide")}}function bL(){let t=[ae("id_tagged_vlans"),ae("id_untagged_vlan"),ae("id_vlan_group")];if(Fi(t)){let[e,n,i]=t;st(e,"show"),st(i,"show"),st(n,"show")}}function yL(){let t=[ae("id_tagged_vlans"),ae("id_untagged_vlan"),ae("id_vlan_group")];if(Fi(t)){let[e,n,i]=t;Bi(e),st(i,"show"),st(n,"show"),st(e,"hide")}}function sg(t){switch(t.value){case"access":vL();break;case"tagged":bL();break;case"tagged-all":yL();break;case"":gL();break}}function ag(){let t=ae("id_mode");t!==null&&(t.addEventListener("change",()=>sg(t)),sg(t))}function lg(){for(let t of[ng,ig,og,ag])t()}var mg=Le(pg());window.Collapse=Me;window.Modal=Nt;window.Popover=an;window.Toast=_t;window.Tooltip=et;function EL(){for(let t of j(".masonry"))new mg.default(t,{itemSelector:".masonry-item",percentPosition:!0})}function _L(){for(let t of j('[data-bs-toggle="tooltip"]'))new et(t,{container:"body"})}function SL(){for(let t of j('[data-bs-toggle="modal"]'))new Nt(t)}function Sn(t,e,n,i){let o="mdi-alert";switch(t){case"warning":o="mdi-alert";break;case"success":o="mdi-check-circle";break;case"info":o="mdi-information";break;case"danger":o="mdi-alert";break}let s=document.createElement("div");s.setAttribute("class","toast-container position-fixed bottom-0 end-0 m-3");let a=document.createElement("div");a.setAttribute("class",`toast bg-${t}`),a.setAttribute("role","alert"),a.setAttribute("aria-live","assertive"),a.setAttribute("aria-atomic","true");let c=document.createElement("div");c.setAttribute("class",`toast-header bg-${t} text-body`);let d=document.createElement("i");d.setAttribute("class",`mdi ${o}`);let u=document.createElement("strong");u.setAttribute("class","me-auto ms-1"),u.innerText=e;let l=document.createElement("button");l.setAttribute("type","button"),l.setAttribute("class","btn-close"),l.setAttribute("data-bs-dismiss","toast"),l.setAttribute("aria-label","Close");let m=document.createElement("div");if(m.setAttribute("class","toast-body"),c.appendChild(d),c.appendChild(u),typeof i!="undefined"){let p=document.createElement("small");p.setAttribute("class","text-muted"),c.appendChild(p)}return c.appendChild(l),m.innerText=n.trim(),a.appendChild(c),a.appendChild(m),s.appendChild(a),document.body.appendChild(s),new _t(a)}function wL(){let{hash:t}=location;if(t&&t.match(/^#tab_.+$/)){let e=t.replace("tab_","");for(let n of j(`ul.nav.nav-tabs .nav-link[data-bs-target="${e}"]`))new cn(n).show()}}function TL(){let t=document.querySelectorAll(".sidebar .accordion-item");function e(n){for(let i of t)i!==n?i.classList.remove("is-open"):i.classList.toggle("is-open")}for(let n of t)for(let i of n.querySelectorAll(".accordion-button"))i.addEventListener("click",()=>{e(n)})}function xL(){for(let t of j("a.image-preview")){let e=`${Math.round(window.innerWidth/4)}px`,n=Vn("img",{src:t.href});n.style.maxWidth=e;let i=Vn("div",null,null,[n]);new an(t,{customClass:"image-preview-popover",trigger:"hover",html:!0,content:i})}}function gg(){for(let t of[_L,SL,EL,wL,xL,TL])t()}var wl=Le(Sl());function AL(t,e){var c;let n=t.currentTarget,i=Ve(n,"span.search-obj-selected"),o=Ve(n,"input.search-obj-type"),s=n.getAttribute("data-search-value"),a="";i!==null&&o!==null&&(re(s)&&a!==s?(a=s,i.innerHTML=(c=e.textContent)!=null?c:"Error",o.value=s):(a="",i.innerHTML="All Objects",o.value=""))}function CL(){for(let t of j(".search-obj-selector"))for(let e of t.querySelectorAll("li > button.dropdown-item"))e.addEventListener("click",n=>AL(n,e))}function LL(){var t;for(let e of j("input.interface-filter")){let o=function(s){let a=s.target,c=new RegExp(a.value.toLowerCase().trim());for(let d of i){let u=d.querySelector('input[type="checkbox"][name="pk"]');u!==null&&(u.checked=!1);let l=d.getAttribute("data-name");typeof l=="string"&&(c.test(l.toLowerCase().trim())?d.classList.contains("d-none")&&d.classList.remove("d-none"):d.classList.add("d-none"))}},n=Ve(e,"table"),i=Array.from((t=n==null?void 0:n.querySelectorAll("tbody > tr"))!=null?t:[]).filter(s=>s!==null);e.addEventListener("keyup",(0,wl.default)(o,300))}}function DL(){var t;for(let e of j("input.object-filter")){let o=function(s){let a=s.target,c=new RegExp(a.value.toLowerCase().trim()),d=[];for(let u of i){let l=u.querySelector('input[type="checkbox"][name="pk"]');l!==null&&(l.checked=!1);for(let m of eg(u))if(c.test(m.toLowerCase())){d.push(u);break}}for(let u of i)d.indexOf(u)>=0?u.classList.remove("d-none"):u.classList.add("d-none")},n=Ve(e,"table"),i=Array.from((t=n==null?void 0:n.querySelectorAll("tbody > tr"))!=null?t:[]).filter(s=>s!==null);e.addEventListener("keyup",(0,wl.default)(o,300))}}function bg(){for(let t of[CL,DL,LL])t()}function yg(t,e,n){return Math.min(Math.max(t,n),e)}var Yn=class extends Error{constructor(e){super(`Failed to parse color: "${e}"`)}};function ML(t){if(typeof t!="string")throw new Yn(t);if(t.trim().toLowerCase()==="transparent")return[0,0,0,0];let e=t.trim();e=jL.test(t)?function(a){let c=a.toLowerCase().trim(),d=IL[function(u){let l=5381,m=u.length;for(;m;)l=33*l^u.charCodeAt(--m);return(l>>>0)%2341}(c)];if(!d)throw new Yn(a);return`#${d}`}(t):t;let n=kL.exec(e);if(n){let a=Array.from(n).slice(1);return[...a.slice(0,3).map(c=>parseInt(Wi(c,2),16)),parseInt(Wi(a[3]||"f",2),16)/255]}let i=PL.exec(e);if(i){let a=Array.from(i).slice(1);return[...a.slice(0,3).map(c=>parseInt(c,16)),parseInt(a[3]||"ff",16)/255]}let o=NL.exec(e);if(o){let a=Array.from(o).slice(1);return[...a.slice(0,3).map(c=>parseInt(c,10)),parseFloat(a[3]||"1")]}let s=RL.exec(e);if(s){let[a,c,d,u]=Array.from(s).slice(1).map(parseFloat);if(yg(0,100,c)!==c)throw new Yn(t);if(yg(0,100,d)!==d)throw new Yn(t);return[...HL(a,c,d),u||1]}throw new Yn(t)}var Eg=t=>parseInt(t.replace(/_/g,""),36),IL="1q29ehhb 1n09sgk7 1kl1ekf_ _yl4zsno 16z9eiv3 1p29lhp8 _bd9zg04 17u0____ _iw9zhe5 _to73___ _r45e31e _7l6g016 _jh8ouiv _zn3qba8 1jy4zshs 11u87k0u 1ro9yvyo 1aj3xael 1gz9zjz0 _3w8l4xo 1bf1ekf_ _ke3v___ _4rrkb__ 13j776yz _646mbhl _nrjr4__ _le6mbhl 1n37ehkb _m75f91n _qj3bzfz 1939yygw 11i5z6x8 _1k5f8xs 1509441m 15t5lwgf _ae2th1n _tg1ugcv 1lp1ugcv 16e14up_ _h55rw7n _ny9yavn _7a11xb_ 1ih442g9 _pv442g9 1mv16xof 14e6y7tu 1oo9zkds 17d1cisi _4v9y70f _y98m8kc 1019pq0v 12o9zda8 _348j4f4 1et50i2o _8epa8__ _ts6senj 1o350i2o 1mi9eiuo 1259yrp0 1ln80gnw _632xcoy 1cn9zldc _f29edu4 1n490c8q _9f9ziet 1b94vk74 _m49zkct 1kz6s73a 1eu9dtog _q58s1rz 1dy9sjiq __u89jo3 _aj5nkwg _ld89jo3 13h9z6wx _qa9z2ii _l119xgq _bs5arju 1hj4nwk9 1qt4nwk9 1ge6wau6 14j9zlcw 11p1edc_ _ms1zcxe _439shk6 _jt9y70f _754zsow 1la40eju _oq5p___ _x279qkz 1fa5r3rv _yd2d9ip _424tcku _8y1di2_ _zi2uabw _yy7rn9h 12yz980_ __39ljp6 1b59zg0x _n39zfzp 1fy9zest _b33k___ _hp9wq92 1il50hz4 _io472ub _lj9z3eo 19z9ykg0 _8t8iu3a 12b9bl4a 1ak5yw0o _896v4ku _tb8k8lv _s59zi6t _c09ze0p 1lg80oqn 1id9z8wb _238nba5 1kq6wgdi _154zssg _tn3zk49 _da9y6tc 1sg7cv4f _r12jvtt 1gq5fmkz 1cs9rvci _lp9jn1c _xw1tdnb 13f9zje6 16f6973h _vo7ir40 _bt5arjf _rc45e4t _hr4e100 10v4e100 _hc9zke2 _w91egv_ _sj2r1kk 13c87yx8 _vqpds__ _ni8ggk8 _tj9yqfb 1ia2j4r4 _7x9b10u 1fc9ld4j 1eq9zldr _5j9lhpx _ez9zl6o _md61fzm".split(" ").reduce((t,e)=>{let n=Eg(e.substring(0,3)),i=Eg(e.substring(3)).toString(16),o="";for(let s=0;s<6-i.length;s++)o+="0";return t[n]=`${o}${i}`,t},{}),Wi=(t,e)=>Array.from(Array(e)).map(()=>t).join(""),kL=new RegExp(`^#${Wi("([a-f0-9])",3)}([a-f0-9])?$`,"i"),PL=new RegExp(`^#${Wi("([a-f0-9]{2})",3)}([a-f0-9]{2})?$`,"i"),NL=new RegExp(`^rgba?\\(\\s*(\\d+)\\s*${Wi(",\\s*(\\d+)\\s*",2)}(?:,\\s*([\\d.]+))?\\s*\\)$`,"i"),RL=/^hsla?\(\s*([\d.]+)\s*,\s*([\d.]+)%\s*,\s*([\d.]+)%(?:\s*,\s*([\d.]+))?\s*\)$/i,jL=/^[a-z]+$/i,_g=t=>Math.round(255*t),HL=(t,e,n)=>{let i=n/100;if(e===0)return[i,i,i].map(_g);let o=(t%360+360)%360/60,s=(1-Math.abs(2*i-1))*(e/100),a=s*(1-Math.abs(o%2-1)),c=0,d=0,u=0;o>=0&&o<1?(c=s,d=a):o>=1&&o<2?(c=a,d=s):o>=2&&o<3?(d=s,u=a):o>=3&&o<4?(d=a,u=s):o>=4&&o<5?(c=a,u=s):o>=5&&o<6&&(c=s,u=a);let l=i-s/2;return[c+l,d+l,u+l].map(_g)};function qL(t){if(t==="transparent")return 0;function e(s){let a=s/255;return a<=.03928?a/12.92:Math.pow((a+.055)/1.055,2.4)}let[n,i,o]=ML(t);return .2126*e(n)+.7152*e(i)+.0722*e(o)}function $L(t){return qL(t)>.179}function Vi(t){return $L(t)?"#000":"#fff"}var Ug=Le(Sl()),Ol=Le($g());var Mo={};(function(t,e){typeof Mo=="object"&&typeof module=="object"?module.exports=e():typeof define=="function"&&define.amd?define([],e):typeof Mo=="object"?Mo.SlimSelect=e():t.SlimSelect=e()})(window,function(){return n={},t.m=e=[function(i,o,s){"use strict";function a(d,u){u=u||{bubbles:!1,cancelable:!1,detail:void 0};var l=document.createEvent("CustomEvent");return l.initCustomEvent(d,u.bubbles,u.cancelable,u.detail),l}var c;o.__esModule=!0,o.hasClassInTree=function(d,u){function l(m,f){return f&&m&&m.classList&&m.classList.contains(f)?m:null}return l(d,u)||function m(f,p){return f&&f!==document?l(f,p)?f:m(f.parentNode,p):null}(d,u)},o.ensureElementInView=function(d,u){var l=d.scrollTop+d.offsetTop,m=l+d.clientHeight,f=u.offsetTop,p=f+u.clientHeight;f=window.innerHeight?"above":l?u:"below"},o.debounce=function(d,u,l){var m;return u===void 0&&(u=100),l===void 0&&(l=!1),function(){for(var f=[],p=0;p[^<>]*'+v+"")},o.kebabCase=function(d){var u=d.replace(/[A-Z\u00C0-\u00D6\u00D8-\u00DE]/g,function(l){return"-"+l.toLowerCase()});return d[0]===d[0].toUpperCase()?u.substring(1):u},typeof(c=window).CustomEvent!="function"&&(a.prototype=c.Event.prototype,c.CustomEvent=a)},function(i,o,s){"use strict";o.__esModule=!0;var a=(c.prototype.newOption=function(u){return{id:u.id?u.id:String(Math.floor(1e8*Math.random())),value:u.value?u.value:"",text:u.text?u.text:"",innerHTML:u.innerHTML?u.innerHTML:"",selected:!!u.selected&&u.selected,display:u.display===void 0||u.display,disabled:!!u.disabled&&u.disabled,placeholder:!!u.placeholder&&u.placeholder,class:u.class?u.class:void 0,data:u.data?u.data:{},mandatory:!!u.mandatory&&u.mandatory}},c.prototype.add=function(u){this.data.push({id:String(Math.floor(1e8*Math.random())),value:u.value,text:u.text,innerHTML:"",selected:!1,display:!0,disabled:!1,placeholder:!1,class:void 0,mandatory:u.mandatory,data:{}})},c.prototype.parseSelectData=function(){this.data=[];for(var u=0,l=this.main.select.element.childNodes;u',placeholder:this.placeholder,searchPlaceholder:"Filter",onChange:()=>this.handleSlimChange()}),this.getStaticParams(),this.getDynamicParams(),this.getPathKeys();for(let[a,c]of this.staticParams.entries())this.queryParams.set(a,c);for(let a of this.dynamicParams.keys())this.updateQueryParams(a);for(let a of this.pathValues.keys())this.updatePathValues(a);this.queryParams.set("brief",[!0]),this.updateQueryUrl(),this.resetClasses(),this.setSlimStyles(),this.initResetButton(),this.initRefreshButton(),this.addEventListeners();let o=this.base.getAttribute("data-fetch-trigger"),s=this.base.closest(".content-container .collapse");switch(zg(o)?this.trigger=o:s!==null?this.trigger="collapse":this.trigger="load",this.trigger){case"collapse":s!==null&&(s.addEventListener("show.bs.collapse",()=>this.loadData()),s.addEventListener("hide.bs.collapse",()=>this.resetOptions()));break;case"open":this.slim.beforeOpen=()=>this.loadData();break;case"load":Promise.all([this.loadData()]);break}}get options(){return this.slim.data.data.filter(Yg)}set options(e){let n=e;this.nullOption!==null&&(n=[this.nullOption,...n]);let i=tg(n,"value"),o=typeof i.find(a=>a.value==="")!="undefined",s=i.findIndex(a=>a.value==="");o&&s>=0?i[s]=this.emptyOption:i.unshift(this.emptyOption),this.slim.setData(i)}resetOptions(){this.options=[this.emptyOption]}disable(){this.slim.slim.singleSelected!==null?this.slim.slim.singleSelected.container.hasAttribute("disabled")||this.slim.slim.singleSelected.container.setAttribute("disabled",""):this.slim.slim.multiSelected!==null&&(this.slim.slim.multiSelected.container.hasAttribute("disabled")||this.slim.slim.multiSelected.container.setAttribute("disabled","")),this.slim.disable()}enable(){this.slim.slim.singleSelected!==null?this.slim.slim.singleSelected.container.hasAttribute("disabled")&&this.slim.slim.singleSelected.container.removeAttribute("disabled"):this.slim.slim.multiSelected!==null&&this.slim.slim.multiSelected.container.hasAttribute("disabled")&&this.slim.slim.multiSelected.container.removeAttribute("disabled"),this.slim.enable()}addEventListeners(){let e=(0,Ug.default)(i=>this.handleSearch(i),300,!1);this.slim.slim.search.input.addEventListener("keyup",i=>{if(!i.key.match(/^(Arrow|Enter|Tab).*/))return e(i)}),this.slim.slim.search.input.addEventListener("paste",i=>e(i)),this.slim.slim.list.addEventListener("scroll",()=>this.handleScroll()),this.base.addEventListener(`netbox.select.atbottom.${this.name}`,()=>this.fetchOptions(this.more,"merge")),this.base.addEventListener(`netbox.select.disabled.${this.name}`,i=>this.handleDisableEnable(i));let n=new Set([...this.dynamicParams.keys(),...this.pathValues.keys()]);for(let i of n){let o=document.querySelector(`[name="${i}"]`);o!==null&&o.addEventListener("change",s=>this.handleEvent(s)),this.base.addEventListener(`netbox.select.onload.${i}`,s=>this.handleEvent(s))}}loadData(){return Pe(this,null,function*(){try{this.disable(),yield this.getOptions("replace")}catch(e){console.error(e)}finally{this.setOptionStyles(),this.enable(),this.base.dispatchEvent(this.loadEvent)}})}getPreselectedOptions(){return Array.from(this.base.options).filter(e=>e.selected).filter(e=>!(e.value==="---------"||e.innerText==="---------"))}processOptions(e,n="merge"){return Pe(this,null,function*(){let i=this.getPreselectedOptions(),o=i.map(c=>c.getAttribute("value")).filter(re),s=i.map(c=>({value:c.value,text:c.innerText,selected:!0,disabled:!1})),a=[];for(let c of e.results){let d=c.display;typeof c._depth=="number"&&c._depth>0&&(d=`${"\u2500".repeat(c._depth)} ${d}`);let u={},l=c.id.toString(),m,f,p;for(let[v,h]of Object.entries(c)){if(!["id","slug"].includes(v)&&["string","number","boolean"].includes(typeof h)){let y=v.replaceAll("_","-");u[y]=String(h)}this.disabledAttributes.some(y=>y.toLowerCase()===v.toLowerCase())&&(typeof h=="string"&&h.toLowerCase()!=="false"||typeof h=="boolean"&&h===!0||typeof h=="number"&&h>0)&&(p=!0)}o.some(v=>this.disabledOptions.includes(v))&&(p=!0),o.includes(l)&&(f=!0,p=!1);let g={value:l,text:d,data:u,style:m,selected:f,disabled:p};a=[...a,g]}switch(n){case"merge":this.options=[...this.options,...a];break;case"replace":this.options=[...s,...a];break}Gm(e)?this.more=e.next:this.more=null})}fetchOptions(e,n="merge"){return Pe(this,null,function*(){if(typeof e=="string"){let i=yield Qm(e);if(Wn(i))return Km(i)?this.handleError(i.exception,i.error):this.handleError(`Error Fetching Options for field '${this.name}'`,i.error);yield this.processOptions(i,n)}})}getOptions(e="merge"){return Pe(this,null,function*(){if(this.queryUrl.includes("{{")){this.resetOptions();return}yield this.fetchOptions(this.queryUrl,e)})}handleSearch(e){return Pe(this,null,function*(){let{value:n}=e.target,i=Ol.default.stringifyUrl({url:this.queryUrl,query:{q:n}});yield this.fetchOptions(i,"merge"),this.slim.data.search(n),this.slim.render()})}handleScroll(){let e=this.slim.slim.list.scrollTop+this.slim.slim.list.offsetHeight===this.slim.slim.list.scrollHeight;this.atBottom&&!e?(this.atBottom=!1,this.base.dispatchEvent(this.bottomEvent)):!this.atBottom&&e&&(this.atBottom=!0,this.base.dispatchEvent(this.bottomEvent))}handleEvent(e){let n=e.target;this.updateQueryParams(n.name),this.updatePathValues(n.name),this.updateQueryUrl(),Promise.all([this.loadData()])}handleDisableEnable(e){let n=e.target;n.disabled===!0?this.disable():n.disabled===!1&&this.enable()}handleError(e,n){Sn("danger",e,n).show(),this.resetOptions()}handleSlimChange(){let e=this.slim.slim;e&&(e.container.classList.contains("is-invalid")||this.base.classList.contains("is-invalid"))&&(e.container.classList.remove("is-invalid"),this.base.classList.remove("is-invalid")),this.base.dispatchEvent(this.loadEvent)}updateQueryUrl(){let e={};for(let[o,s]of this.queryParams.entries())e[o]=s;let n=this.url;for(let[o,s]of this.pathValues.entries())for(let a of this.url.matchAll(new RegExp(`({{${o}}})`,"g")))re(s)&&(n=n.replaceAll(a[1],s.toString()));let i=Ol.default.stringifyUrl({url:n,query:e});this.queryUrl!==i&&(this.queryUrl=i,this.base.setAttribute("data-url",i))}updateQueryParams(e){let n=document.querySelector(`[name="${e}"]`);if(n!==null){let i=[];if(n.multiple?i=Array.from(n.options).filter(o=>o.selected).map(o=>o.value):n.value!==""&&(i=[n.value]),i.length>0){this.dynamicParams.updateValue(e,i);let o=this.dynamicParams.get(e);if(typeof o!="undefined"){let{queryParam:s,queryValue:a}=o,c=[];if(this.staticParams.has(s)){let d=this.staticParams.get(s);typeof d!="undefined"&&(c=[...d,...a])}else c=a;c.length>0?this.queryParams.set(s,c):this.queryParams.delete(s)}}else{let o=this.dynamicParams.queryParam(e);o!==null&&this.queryParams.delete(o)}}}updatePathValues(e){let n=e.replaceAll(/^id_/gi,""),i=ae(`id_${n}`);i!==null&&this.url.includes("{{")&&Boolean(this.url.match(new RegExp(`({{(${e})}})`,"g")))&&(re(i.value)?this.pathValues.set(e,i.value):this.pathValues.set(e,""))}getPlaceholder(){let e=this.name;if(this.base.id){let n=document.querySelector(`label[for="${this.base.id}"]`);n!==null&&(e=`Select ${n.innerText.trim()}`)}return e}getDisabledOptions(){var n;let e=[];if(Bg(this.base))try{let i=JSON.parse((n=this.base.getAttribute("data-query-param-exclude"))!=null?n:"[]");e=[...e,...i]}catch(i){console.group(`Unable to parse data-query-param-exclude value on select element '${this.name}'`),console.warn(i),console.groupEnd()}return e}getDisabledAttributes(){let e=[...Kg],n=this.base.getAttribute("disabled-indicator");return re(n)&&(e=[...e,n]),e}getPathKeys(){for(let e of this.url.matchAll(new RegExp("{{(.+)}}","g")))this.pathValues.set(e[1],"")}getDynamicParams(){let e=this.base.getAttribute("data-dynamic-params");try{this.dynamicParams.addFromJson(e)}catch(n){console.group(`Unable to determine dynamic query parameters for select field '${this.name}'`),console.warn(n),console.groupEnd()}}getStaticParams(){let e=this.base.getAttribute("data-static-params");try{if(re(e)){let n=JSON.parse(e);if(Vg(n))for(let{queryParam:i,queryValue:o}of n)Array.isArray(o)?this.staticParams.set(i,o):this.staticParams.set(i,[o])}}catch(n){console.group(`Unable to determine static query parameters for select field '${this.name}'`),console.warn(n),console.groupEnd()}}setSlimStyles(){let{width:e,height:n}=this.slim.slim.container.getBoundingClientRect();this.base.style.opacity="0",this.base.style.width=`${e}px`,this.base.style.height=`${n}px`,this.base.style.display="block",this.base.style.position="absolute",this.base.style.pointerEvents="none"}setOptionStyles(){for(let e of this.options)if("data"in e&&"id"in e&&typeof e.data!="undefined"&&typeof e.id!="undefined"&&"color"in e.data){let n=e.id,i=e.data,o=document.createElement("style"),s=`#${i.color}`,a=Vi(s);o.setAttribute("data-netbox",n),o.innerHTML=` div.ss-values div.ss-value[data-id="${n}"], div.ss-list div.ss-option:not(.ss-disabled)[data-id="${n}"] { diff --git a/netbox/project-static/dist/netbox.js.map b/netbox/project-static/dist/netbox.js.map index ba7d8cd2f..c2e1c5b4f 100644 --- a/netbox/project-static/dist/netbox.js.map +++ b/netbox/project-static/dist/netbox.js.map @@ -1,6 +1,6 @@ { "version": 3, "sources": ["../node_modules/core-js/internals/global.js", "../node_modules/core-js/internals/fails.js", "../node_modules/core-js/internals/descriptors.js", "../node_modules/core-js/internals/object-property-is-enumerable.js", "../node_modules/core-js/internals/create-property-descriptor.js", "../node_modules/core-js/internals/classof-raw.js", "../node_modules/core-js/internals/indexed-object.js", "../node_modules/core-js/internals/require-object-coercible.js", "../node_modules/core-js/internals/to-indexed-object.js", "../node_modules/core-js/internals/is-object.js", "../node_modules/core-js/internals/get-built-in.js", "../node_modules/core-js/internals/engine-user-agent.js", "../node_modules/core-js/internals/engine-v8-version.js", "../node_modules/core-js/internals/native-symbol.js", "../node_modules/core-js/internals/use-symbol-as-uid.js", "../node_modules/core-js/internals/is-symbol.js", "../node_modules/core-js/internals/ordinary-to-primitive.js", "../node_modules/core-js/internals/is-pure.js", "../node_modules/core-js/internals/set-global.js", "../node_modules/core-js/internals/shared-store.js", "../node_modules/core-js/internals/shared.js", "../node_modules/core-js/internals/to-object.js", "../node_modules/core-js/internals/has.js", "../node_modules/core-js/internals/uid.js", "../node_modules/core-js/internals/well-known-symbol.js", "../node_modules/core-js/internals/to-primitive.js", "../node_modules/core-js/internals/to-property-key.js", "../node_modules/core-js/internals/document-create-element.js", "../node_modules/core-js/internals/ie8-dom-define.js", "../node_modules/core-js/internals/object-get-own-property-descriptor.js", "../node_modules/core-js/internals/an-object.js", "../node_modules/core-js/internals/object-define-property.js", "../node_modules/core-js/internals/create-non-enumerable-property.js", "../node_modules/core-js/internals/inspect-source.js", "../node_modules/core-js/internals/native-weak-map.js", "../node_modules/core-js/internals/shared-key.js", "../node_modules/core-js/internals/hidden-keys.js", "../node_modules/core-js/internals/internal-state.js", "../node_modules/core-js/internals/redefine.js", "../node_modules/core-js/internals/to-integer.js", "../node_modules/core-js/internals/to-length.js", "../node_modules/core-js/internals/to-absolute-index.js", "../node_modules/core-js/internals/array-includes.js", "../node_modules/core-js/internals/object-keys-internal.js", "../node_modules/core-js/internals/enum-bug-keys.js", "../node_modules/core-js/internals/object-get-own-property-names.js", "../node_modules/core-js/internals/object-get-own-property-symbols.js", "../node_modules/core-js/internals/own-keys.js", "../node_modules/core-js/internals/copy-constructor-properties.js", "../node_modules/core-js/internals/is-forced.js", "../node_modules/core-js/internals/export.js", "../node_modules/core-js/internals/a-function.js", "../node_modules/core-js/internals/function-bind-context.js", "../node_modules/core-js/internals/is-array.js", "../node_modules/core-js/internals/array-species-constructor.js", "../node_modules/core-js/internals/array-species-create.js", "../node_modules/core-js/internals/array-iteration.js", "../node_modules/core-js/internals/array-method-is-strict.js", "../node_modules/core-js/internals/array-for-each.js", "../node_modules/core-js/internals/dom-iterables.js", "../node_modules/can-use-dom/index.js", "../node_modules/core-js/internals/array-method-has-species-support.js", "../node_modules/core-js/internals/object-keys.js", "../node_modules/core-js/internals/object-define-properties.js", "../node_modules/core-js/internals/html.js", "../node_modules/core-js/internals/object-create.js", "../node_modules/core-js/internals/add-to-unscopables.js", "../node_modules/core-js/internals/iterators.js", "../node_modules/core-js/internals/correct-prototype-getter.js", "../node_modules/core-js/internals/object-get-prototype-of.js", "../node_modules/core-js/internals/iterators-core.js", "../node_modules/core-js/internals/set-to-string-tag.js", "../node_modules/core-js/internals/create-iterator-constructor.js", "../node_modules/core-js/internals/a-possible-prototype.js", "../node_modules/core-js/internals/object-set-prototype-of.js", "../node_modules/core-js/internals/define-iterator.js", "../node_modules/core-js/modules/es.array.iterator.js", "../node_modules/core-js/internals/object-assign.js", "../node_modules/core-js/internals/to-string-tag-support.js", "../node_modules/core-js/internals/classof.js", "../node_modules/core-js/internals/object-to-string.js", "../node_modules/core-js/internals/to-string.js", "../node_modules/core-js/internals/whitespaces.js", "../node_modules/core-js/internals/string-trim.js", "../node_modules/core-js/internals/number-parse-int.js", "../node_modules/core-js/internals/string-multibyte.js", "../node_modules/core-js/internals/redefine-all.js", "../node_modules/core-js/internals/object-get-own-property-names-external.js", "../node_modules/core-js/internals/freezing.js", "../node_modules/core-js/internals/internal-metadata.js", "../node_modules/core-js/internals/is-array-iterator-method.js", "../node_modules/core-js/internals/get-iterator-method.js", "../node_modules/core-js/internals/get-iterator.js", "../node_modules/core-js/internals/iterator-close.js", "../node_modules/core-js/internals/iterate.js", "../node_modules/core-js/internals/an-instance.js", "../node_modules/core-js/internals/check-correctness-of-iteration.js", "../node_modules/core-js/internals/inherit-if-required.js", "../node_modules/core-js/internals/collection.js", "../node_modules/core-js/internals/collection-weak.js", "../node_modules/core-js/modules/es.weak-map.js", "../node_modules/lodash.throttle/index.js", "../node_modules/lodash.debounce/index.js", "../node_modules/lodash.memoize/index.js", "../node_modules/core-js/internals/array-reduce.js", "../node_modules/core-js/internals/engine-is-node.js", "../node_modules/core-js/internals/regexp-flags.js", "../node_modules/core-js/internals/regexp-sticky-helpers.js", "../node_modules/core-js/internals/regexp-unsupported-dot-all.js", "../node_modules/core-js/internals/regexp-unsupported-ncg.js", "../node_modules/core-js/internals/regexp-exec.js", "../node_modules/core-js/modules/es.regexp.exec.js", "../node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js", "../node_modules/core-js/internals/advance-string-index.js", "../node_modules/core-js/internals/regexp-exec-abstract.js", "../node_modules/core-js/internals/get-substitution.js", "../node_modules/cookie/index.js", "../node_modules/ev-emitter/ev-emitter.js", "../node_modules/get-size/get-size.js", "../node_modules/desandro-matches-selector/matches-selector.js", "../node_modules/fizzy-ui-utils/utils.js", "../node_modules/outlayer/item.js", "../node_modules/outlayer/outlayer.js", "../node_modules/masonry-layout/masonry.js", "../node_modules/just-debounce-it/index.js", "../node_modules/strict-uri-encode/index.js", "../node_modules/decode-uri-component/index.js", "../node_modules/split-on-first/index.js", "../node_modules/filter-obj/index.js", "../node_modules/query-string/index.js", "../node_modules/clipboard/dist/clipboard.js", "../node_modules/flatpickr/dist/flatpickr.js", "../node_modules/@popperjs/core/lib/index.js", "../node_modules/@popperjs/core/lib/enums.js", "../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js", "../node_modules/@popperjs/core/lib/dom-utils/getWindow.js", "../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js", "../node_modules/@popperjs/core/lib/modifiers/applyStyles.js", "../node_modules/@popperjs/core/lib/utils/getBasePlacement.js", "../node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js", "../node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js", "../node_modules/@popperjs/core/lib/dom-utils/contains.js", "../node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js", "../node_modules/@popperjs/core/lib/dom-utils/isTableElement.js", "../node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js", "../node_modules/@popperjs/core/lib/dom-utils/getParentNode.js", "../node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js", "../node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js", "../node_modules/@popperjs/core/lib/utils/math.js", "../node_modules/@popperjs/core/lib/utils/within.js", "../node_modules/@popperjs/core/lib/utils/getFreshSideObject.js", "../node_modules/@popperjs/core/lib/utils/mergePaddingObject.js", "../node_modules/@popperjs/core/lib/utils/expandToHashMap.js", "../node_modules/@popperjs/core/lib/modifiers/arrow.js", "../node_modules/@popperjs/core/lib/modifiers/computeStyles.js", "../node_modules/@popperjs/core/lib/modifiers/eventListeners.js", "../node_modules/@popperjs/core/lib/utils/getOppositePlacement.js", "../node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js", "../node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js", "../node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js", "../node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js", "../node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js", "../node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js", "../node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js", "../node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js", "../node_modules/@popperjs/core/lib/utils/rectToClientRect.js", "../node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js", "../node_modules/@popperjs/core/lib/utils/getVariation.js", "../node_modules/@popperjs/core/lib/utils/computeOffsets.js", "../node_modules/@popperjs/core/lib/utils/detectOverflow.js", "../node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js", "../node_modules/@popperjs/core/lib/modifiers/flip.js", "../node_modules/@popperjs/core/lib/modifiers/hide.js", "../node_modules/@popperjs/core/lib/modifiers/offset.js", "../node_modules/@popperjs/core/lib/modifiers/popperOffsets.js", "../node_modules/@popperjs/core/lib/utils/getAltAxis.js", "../node_modules/@popperjs/core/lib/modifiers/preventOverflow.js", "../node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js", "../node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js", "../node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js", "../node_modules/@popperjs/core/lib/utils/orderModifiers.js", "../node_modules/@popperjs/core/lib/utils/debounce.js", "../node_modules/@popperjs/core/lib/utils/mergeByName.js", "../node_modules/@popperjs/core/lib/createPopper.js", "../node_modules/@popperjs/core/lib/popper-lite.js", "../node_modules/@popperjs/core/lib/popper.js", "../node_modules/bootstrap/js/src/dom/selector-engine.js", "../node_modules/bootstrap/js/src/util/index.js", "../node_modules/bootstrap/js/src/dom/event-handler.js", "../node_modules/bootstrap/js/src/dom/data.js", "../node_modules/bootstrap/js/src/base-component.js", "../node_modules/bootstrap/js/src/alert.js", "../node_modules/bootstrap/js/src/button.js", "../node_modules/bootstrap/js/src/dom/manipulator.js", "../node_modules/bootstrap/js/src/carousel.js", "../node_modules/bootstrap/js/src/collapse.js", "../node_modules/bootstrap/js/src/dropdown.js", "../node_modules/bootstrap/js/src/util/scrollbar.js", "../node_modules/bootstrap/js/src/util/backdrop.js", "../node_modules/bootstrap/js/src/modal.js", "../node_modules/bootstrap/js/src/offcanvas.js", "../node_modules/bootstrap/js/src/util/sanitizer.js", "../node_modules/bootstrap/js/src/tooltip.js", "../node_modules/bootstrap/js/src/popover.js", "../node_modules/bootstrap/js/src/scrollspy.js", "../node_modules/bootstrap/js/src/tab.js", "../node_modules/bootstrap/js/src/toast.js", "../node_modules/core-js/modules/es.array.for-each.js", "../node_modules/core-js/modules/web.dom-collections.for-each.js", "../node_modules/core-js/modules/es.array.filter.js", "../node_modules/core-js/modules/es.object.assign.js", "../node_modules/core-js/modules/es.object.to-string.js", "../node_modules/core-js/modules/es.parse-int.js", "../node_modules/core-js/modules/es.string.iterator.js", "../node_modules/core-js/modules/web.dom-collections.iterator.js", "../node_modules/@juggle/resize-observer/lib/utils/resizeObservers.js", "../node_modules/@juggle/resize-observer/lib/algorithms/hasActiveObservations.js", "../node_modules/@juggle/resize-observer/lib/algorithms/hasSkippedObservations.js", "../node_modules/@juggle/resize-observer/lib/algorithms/deliverResizeLoopError.js", "../node_modules/@juggle/resize-observer/lib/ResizeObserverBoxOptions.js", "../node_modules/@juggle/resize-observer/lib/utils/freeze.js", "../node_modules/@juggle/resize-observer/lib/ResizeObserverSize.js", "../node_modules/@juggle/resize-observer/lib/DOMRectReadOnly.js", "../node_modules/@juggle/resize-observer/lib/utils/element.js", "../node_modules/@juggle/resize-observer/lib/utils/global.js", "../node_modules/@juggle/resize-observer/lib/algorithms/calculateBoxSize.js", "../node_modules/@juggle/resize-observer/lib/ResizeObserverEntry.js", "../node_modules/@juggle/resize-observer/lib/algorithms/calculateDepthForNode.js", "../node_modules/@juggle/resize-observer/lib/algorithms/broadcastActiveObservations.js", "../node_modules/@juggle/resize-observer/lib/algorithms/gatherActiveObservationsAtDepth.js", "../node_modules/@juggle/resize-observer/lib/utils/process.js", "../node_modules/@juggle/resize-observer/lib/utils/queueMicroTask.js", "../node_modules/@juggle/resize-observer/lib/utils/queueResizeObserver.js", "../node_modules/@juggle/resize-observer/lib/utils/scheduler.js", "../node_modules/@juggle/resize-observer/lib/ResizeObservation.js", "../node_modules/@juggle/resize-observer/lib/ResizeObserverDetail.js", "../node_modules/@juggle/resize-observer/lib/ResizeObserverController.js", "../node_modules/@juggle/resize-observer/lib/ResizeObserver.js", "../node_modules/core-js/modules/es.array.reduce.js", "../node_modules/core-js/modules/es.function.name.js", "../node_modules/core-js/modules/es.string.match.js", "../node_modules/core-js/modules/es.string.replace.js", "../node_modules/simplebar/src/helpers.js", "../node_modules/simplebar/src/scrollbar-width.js", "../node_modules/simplebar/src/simplebar.js", "../node_modules/simplebar/src/index.js", "../src/util.ts", "../src/forms/elements.ts", "../src/forms/speedSelector.ts", "../src/forms/scopeSelector.ts", "../src/forms/vlanTags.ts", "../src/forms/index.ts", "../src/bs.ts", "../src/search.ts", "../node_modules/color2k/src/guard.ts", "../node_modules/color2k/src/ColorError.ts", "../node_modules/color2k/src/parseToRgba.ts", "../node_modules/color2k/src/parseToHsla.ts", "../node_modules/color2k/src/hsla.ts", "../node_modules/color2k/src/adjustHue.ts", "../node_modules/color2k/src/darken.ts", "../node_modules/color2k/src/desaturate.ts", "../node_modules/color2k/src/getLuminance.ts", "../node_modules/color2k/src/getContrast.ts", "../node_modules/color2k/src/rgba.ts", "../node_modules/color2k/src/mix.ts", "../node_modules/color2k/src/getScale.ts", "../node_modules/color2k/src/hasBadContrast.ts", "../node_modules/color2k/src/lighten.ts", "../node_modules/color2k/src/transparentize.ts", "../node_modules/color2k/src/opacify.ts", "../node_modules/color2k/src/readableColorIsBlack.ts", "../node_modules/color2k/src/readableColor.ts", "../node_modules/color2k/src/saturate.ts", "../node_modules/color2k/src/toHex.ts", "../node_modules/color2k/src/toRgba.ts", "../node_modules/color2k/src/toHsla.ts", "../src/select/api/apiSelect.ts", "../node_modules/slim-select/dist/slimselect.min.mjs", "../src/select/util.ts", "../src/select/api/types.ts", "../src/select/api/dynamicParams.ts", "../src/select/api/index.ts", "../src/select/color.ts", "../src/select/static.ts", "../src/select/index.ts", "../src/buttons/connectionToggle.ts", "../src/state/index.ts", "../src/stores/objectDepth.ts", "../src/stores/rackImages.ts", "../src/buttons/depthToggle.ts", "../src/buttons/moveOptions.ts", "../src/buttons/pagination.ts", "../src/colorMode.ts", "../src/buttons/preferences.ts", "../src/buttons/reslug.ts", "../src/buttons/selectAll.ts", "../src/buttons/index.ts", "../src/messages.ts", "../src/clipboard.ts", "../src/dateSelector.ts", "../src/tableConfig.ts", "../src/tables/interfaceTable.ts", "../src/sidenav.ts", "../src/racks.ts", "../src/links.ts", "../src/netbox.ts"], - "mappings": "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", + "mappings": "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", "names": [] } diff --git a/netbox/project-static/src/search.ts b/netbox/project-static/src/search.ts index 120d833ea..3140b8d7f 100644 --- a/netbox/project-static/src/search.ts +++ b/netbox/project-static/src/search.ts @@ -107,6 +107,9 @@ function initTableFilter(): void { // Create a regex pattern from the input search text to match against. const filter = new RegExp(target.value.toLowerCase().trim()); + // List of which rows which match the query + const matchedRows: Array = []; + for (const row of rows) { // Find the row's checkbox and deselect it, so that it is not accidentally included in form // submissions. @@ -114,19 +117,26 @@ function initTableFilter(): void { if (checkBox !== null) { checkBox.checked = false; } + // Iterate through each row's cell values for (const value of getRowValues(row)) { if (filter.test(value.toLowerCase())) { - // If this row matches the search pattern, but is already hidden, unhide it and stop - // iterating through the rest of the cells. - row.classList.remove('d-none'); + // If this row matches the search pattern, add it to the list. + matchedRows.push(row); break; - } else { - // If none of the cells in this row match the search pattern, hide the row. - row.classList.add('d-none'); } } } + + // Iterate the rows again to set visibility. + // This results in a single reflow instead of one for each row. + for (const row of rows) { + if (matchedRows.indexOf(row) >= 0) { + row.classList.remove('d-none'); + } else { + row.classList.add('d-none'); + } + } } input.addEventListener('keyup', debounce(handleInput, 300)); } From bbdd3804c71bf9f6226c1cee03091559b220d604 Mon Sep 17 00:00:00 2001 From: bluikko <14869000+bluikko@users.noreply.github.com> Date: Fri, 26 Nov 2021 10:06:52 +0700 Subject: [PATCH 271/289] Add multistandard ITA power outlet type --- netbox/dcim/choices.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/netbox/dcim/choices.py b/netbox/dcim/choices.py index 36eb24c96..3616a8e68 100644 --- a/netbox/dcim/choices.py +++ b/netbox/dcim/choices.py @@ -552,6 +552,7 @@ class PowerOutletTypeChoices(ChoiceSet): TYPE_ITA_M = 'ita-m' TYPE_ITA_N = 'ita-n' TYPE_ITA_O = 'ita-o' + TYPE_ITA_MULTISTANDARD = 'ita-multistandard' # USB TYPE_USB_A = 'usb-a' TYPE_USB_MICROB = 'usb-micro-b' @@ -651,6 +652,7 @@ class PowerOutletTypeChoices(ChoiceSet): (TYPE_ITA_M, 'ITA Type M (BS 546)'), (TYPE_ITA_N, 'ITA Type N'), (TYPE_ITA_O, 'ITA Type O'), + (TYPE_ITA_MULTISTANDARD, 'ITA Multistandard'), )), ('USB', ( (TYPE_USB_A, 'USB Type A'), From 3b25db919a0586a25b100c8736e57f7c41db8796 Mon Sep 17 00:00:00 2001 From: Daniel Sheppard Date: Tue, 30 Nov 2021 09:43:14 -0600 Subject: [PATCH 272/289] Update changelog for #7940 --- docs/release-notes/version-3.1.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/release-notes/version-3.1.md b/docs/release-notes/version-3.1.md index cbcf5478b..a8422c208 100644 --- a/docs/release-notes/version-3.1.md +++ b/docs/release-notes/version-3.1.md @@ -15,6 +15,7 @@ * [#7812](https://github.com/netbox-community/netbox/issues/7812) - Enable change logging for image attachments * [#7858](https://github.com/netbox-community/netbox/issues/7858) - Standardize the representation of content types across import & export functions * [#7884](https://github.com/netbox-community/netbox/issues/7884) - Add FHRP groups column to interface tables +* [#7940](https://github.com/netbox-community/netbox/issues/7940) - Add ITA multistandard outlet ### Bug Fixes From 83010e278c3046a48368f2c5d7ca6bd3ee38e8ff Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Wed, 1 Dec 2021 09:18:31 -0500 Subject: [PATCH 273/289] Add changelog for #7932, #7941 --- docs/release-notes/version-3.0.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/docs/release-notes/version-3.0.md b/docs/release-notes/version-3.0.md index f7fbe06ab..ab32ea434 100644 --- a/docs/release-notes/version-3.0.md +++ b/docs/release-notes/version-3.0.md @@ -2,6 +2,11 @@ ## v3.0.12 (FUTURE) +### Enhancements + +* [#7932](https://github.com/netbox-community/netbox/issues/7932) - Improve performance of the "quick find" function +* [#7941](https://github.com/netbox-community/netbox/issues/7941) - Add multi-standard ITA power outlet type + --- ## v3.0.11 (2021-11-24) From f1466d6da36a97c37a2df6f3615b8e17fa8e9245 Mon Sep 17 00:00:00 2001 From: Rhys Barrie Date: Thu, 2 Dec 2021 12:27:30 -0500 Subject: [PATCH 274/289] netbox-community/netbox#7885: Linkify VLAN name in VLAN tables --- netbox/ipam/tables/vlans.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/netbox/ipam/tables/vlans.py b/netbox/ipam/tables/vlans.py index ffa6c5f40..a9e3dd48b 100644 --- a/netbox/ipam/tables/vlans.py +++ b/netbox/ipam/tables/vlans.py @@ -95,6 +95,9 @@ class VLANTable(BaseTable): template_code=VLAN_LINK, verbose_name='VID' ) + name = tables.Column( + linkify=True + ) site = tables.Column( linkify=True ) From 1377eda0bafa0d3f3ddb81010edb90480c71bad1 Mon Sep 17 00:00:00 2001 From: Jonathan Senecal Date: Fri, 3 Dec 2021 09:43:42 -0500 Subject: [PATCH 275/289] Add support for L22-30P power port type (#7915) * Add support for L22-30P power port type Fixes #7892 * Add support for L22-30R power outlet type --- netbox/dcim/choices.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/netbox/dcim/choices.py b/netbox/dcim/choices.py index 3616a8e68..d77a51c05 100644 --- a/netbox/dcim/choices.py +++ b/netbox/dcim/choices.py @@ -312,6 +312,7 @@ class PowerPortTypeChoices(ChoiceSet): TYPE_NEMA_L1560P = 'nema-l15-60p' TYPE_NEMA_L2120P = 'nema-l21-20p' TYPE_NEMA_L2130P = 'nema-l21-30p' + TYPE_NEMA_L2230P = 'nema-l22-30p' # California style TYPE_CS6361C = 'cs6361c' TYPE_CS6365C = 'cs6365c' @@ -417,6 +418,7 @@ class PowerPortTypeChoices(ChoiceSet): (TYPE_NEMA_L1560P, 'NEMA L15-60P'), (TYPE_NEMA_L2120P, 'NEMA L21-20P'), (TYPE_NEMA_L2130P, 'NEMA L21-30P'), + (TYPE_NEMA_L2230P, 'NEMA L22-30P'), )), ('California Style', ( (TYPE_CS6361C, 'CS6361C'), @@ -533,6 +535,7 @@ class PowerOutletTypeChoices(ChoiceSet): TYPE_NEMA_L1560R = 'nema-l15-60r' TYPE_NEMA_L2120R = 'nema-l21-20r' TYPE_NEMA_L2130R = 'nema-l21-30r' + TYPE_NEMA_L2230R = 'nema-l22-30r' # California style TYPE_CS6360C = 'CS6360C' TYPE_CS6364C = 'CS6364C' @@ -631,6 +634,7 @@ class PowerOutletTypeChoices(ChoiceSet): (TYPE_NEMA_L1560R, 'NEMA L15-60R'), (TYPE_NEMA_L2120R, 'NEMA L21-20R'), (TYPE_NEMA_L2130R, 'NEMA L21-30R'), + (TYPE_NEMA_L2230R, 'NEMA L22-30R'), )), ('California Style', ( (TYPE_CS6360C, 'CS6360C'), From 97f0414ff301ce24bfbca33f9043e0dbcdba2a10 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Fri, 3 Dec 2021 09:51:05 -0500 Subject: [PATCH 276/289] Changelog for #7751, #7885, #7892 --- docs/release-notes/version-3.0.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/release-notes/version-3.0.md b/docs/release-notes/version-3.0.md index ab32ea434..b84f2a3c0 100644 --- a/docs/release-notes/version-3.0.md +++ b/docs/release-notes/version-3.0.md @@ -4,6 +4,9 @@ ### Enhancements +* [#7751](https://github.com/netbox-community/netbox/issues/7751) - Get API user from LDAP only when `FIND_GROUP_PERMS` is enabled +* [#7885](https://github.com/netbox-community/netbox/issues/7885) - Linkify VLAN name in VLANs table +* [#7892](https://github.com/netbox-community/netbox/issues/7892) - Add L22-30 power port & outlet types * [#7932](https://github.com/netbox-community/netbox/issues/7932) - Improve performance of the "quick find" function * [#7941](https://github.com/netbox-community/netbox/issues/7941) - Add multi-standard ITA power outlet type From 68f322a03bfd9151a135222b0600111fcc134c47 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Fri, 3 Dec 2021 10:51:24 -0500 Subject: [PATCH 277/289] Closes #7925: Linkify contact phone and email attributes --- docs/release-notes/version-3.1.md | 2 +- netbox/templates/tenancy/contact.html | 16 ++++++++++++++-- netbox/tenancy/tables.py | 6 +++++- netbox/utilities/tables.py | 16 ++++++++++++++++ 4 files changed, 36 insertions(+), 4 deletions(-) diff --git a/docs/release-notes/version-3.1.md b/docs/release-notes/version-3.1.md index a8422c208..11e034fca 100644 --- a/docs/release-notes/version-3.1.md +++ b/docs/release-notes/version-3.1.md @@ -15,7 +15,7 @@ * [#7812](https://github.com/netbox-community/netbox/issues/7812) - Enable change logging for image attachments * [#7858](https://github.com/netbox-community/netbox/issues/7858) - Standardize the representation of content types across import & export functions * [#7884](https://github.com/netbox-community/netbox/issues/7884) - Add FHRP groups column to interface tables -* [#7940](https://github.com/netbox-community/netbox/issues/7940) - Add ITA multistandard outlet +* [#7925](https://github.com/netbox-community/netbox/issues/7925) - Linkify contact phone and email attributes ### Bug Fixes diff --git a/netbox/templates/tenancy/contact.html b/netbox/templates/tenancy/contact.html index 79878b1ac..2c7cef040 100644 --- a/netbox/templates/tenancy/contact.html +++ b/netbox/templates/tenancy/contact.html @@ -37,11 +37,23 @@
Phone{{ object.phone|placeholder }} + {% if object.phone %} + {{ object.phone }} + {% else %} + None + {% endif %} +
Email{{ object.email|placeholder }} + {% if object.phone %} + {{ object.email }} + {% else %} + None + {% endif %} +
Address
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Region - {% if object.region %} - {% for region in object.region.get_ancestors %} - {{ region }} / - {% endfor %} - {{ object.region }} - {% else %} - None - {% endif %} -
Group - {% if object.group %} - {% for group in object.group.get_ancestors %} - {{ group }} / - {% endfor %} - {{ object.group }} - {% else %} - None - {% endif %} -
Status - {{ object.get_status_display }} -
Tenant - {% if object.tenant %} - {% if object.tenant.group %} - {{ object.tenant.group }} / - {% endif %} - {{ object.tenant }} - {% else %} - None - {% endif %} -
Facility{{ object.facility|placeholder }}
Description{{ object.description|placeholder }}
AS Number{{ object.asn|placeholder }}
Time Zone - {% if object.time_zone %} - {{ object.time_zone }} (UTC {{ object.time_zone|tzoffset }})
- Site time: {% timezone object.time_zone %}{% annotated_now %}{% endtimezone %} - {% else %} - - {% endif %} -
-
-
-
-
Contact Info
-
- {% with deprecation_warning="This field will be removed in a future release. Please migrate this data to contact objects." %} - - - - - - - - - - - - - - - - - - - - - - - - - -
Physical Address - {% if object.physical_address %} - - {{ object.physical_address|linebreaksbr }} - {% else %} - - {% endif %} -
Shipping Address{{ object.shipping_address|linebreaksbr|placeholder }}
GPS Coordinates - {% if object.latitude and object.longitude %} - - {{ object.latitude }}, {{ object.longitude }} - {% else %} - - {% endif %} -
Contact Name - {% if object.contact_name %} -
- -
- {% endif %} - {{ object.contact_name|placeholder }} -
Contact Phone - {% if object.contact_phone %} -
- -
- {{ object.contact_phone }} - {% else %} - - {% endif %} -
Contact E-Mail - {% if object.contact_email %} -
- -
- {{ object.contact_email }} - {% else %} - - {% endif %} -
- {% endwith %} -
-
- {% include 'inc/panels/custom_fields.html' %} - {% include 'inc/panels/comments.html' %} - {% include 'inc/panels/contacts.html' %} - {% plugin_left_page object %} - -
-
-
- Stats -
-
-
- -
-

{{ stats.device_count }}

-

Devices

-
-
-

{{ stats.prefix_count }}

-

Prefixes

-
- -
-

{{ stats.circuit_count }}

-

Circuits

-
-
-

{{ stats.vm_count }}

-

Virtual Machines

-
- -
-
-
-
-
- Locations -
-
- {% if locations %} - - - - - - - - {% for location in locations %} - - - - - - - {% endfor %} -
LocationRacksDevices
- {% for i in location.level|as_range %}{% endfor %} - {{ location }} - - {{ location.rack_count }} - - {{ location.device_count }} - - - - -
- {% else %} - None - {% endif %} -
-
-
-
- ASNs -
-
- {% if asns %} - {% for asn in asns %} - {{ asn }} +
+
+
Site
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {# Legacy contact fields #} + {% with deprecation_warning="This field will be removed in a future release. Please migrate this data to contact objects." %} + {% if object.contact_name %} + + + + + {% endif %} + {% if object.contact_phone %} + + + + + {% endif %} + {% if object.contact_email %} + + + + + {% endif %} + {% endwith %} +
Region + {% if object.region %} + {% for region in object.region.get_ancestors %} + {{ region }} / {% endfor %} + {{ object.region }} {% else %} None {% endif %} +
Group + {% if object.group %} + {% for group in object.group.get_ancestors %} + {{ group }} / + {% endfor %} + {{ object.group }} + {% else %} + None + {% endif %} +
Status + {{ object.get_status_display }} +
Tenant + {% if object.tenant %} + {% if object.tenant.group %} + {{ object.tenant.group }} / + {% endif %} + {{ object.tenant }} + {% else %} + None + {% endif %} +
Facility{{ object.facility|placeholder }}
Description{{ object.description|placeholder }}
AS Number{{ object.asn|placeholder }}
Time Zone + {% if object.time_zone %} + {{ object.time_zone }} (UTC {{ object.time_zone|tzoffset }})
+ Site time: {% timezone object.time_zone %}{% annotated_now %}{% endtimezone %} + {% else %} + + {% endif %} +
Physical Address + {% if object.physical_address %} + + {{ object.physical_address|linebreaksbr }} + {% else %} + + {% endif %} +
Shipping Address{{ object.shipping_address|linebreaksbr|placeholder }}
GPS Coordinates + {% if object.latitude and object.longitude %} + + {{ object.latitude }}, {{ object.longitude }} + {% else %} + + {% endif %} +
Contact Name + {% if object.contact_name %} +
+ +
+ {% endif %} + {{ object.contact_name|placeholder }} +
Contact Phone + {% if object.contact_phone %} +
+ +
+ {{ object.contact_phone }} + {% else %} + + {% endif %} +
Contact E-Mail + {% if object.contact_email %} +
+ +
+ {{ object.contact_email }} + {% else %} + + {% endif %} +
+
+
+ {% include 'inc/panels/custom_fields.html' %} + {% include 'inc/panels/tags.html' %} + {% include 'inc/panels/comments.html' %} + {% plugin_left_page object %} +
+
+
+
Stats
+
+
+ + +
+

{{ stats.device_count }}

+

Devices

+
+
+

{{ stats.prefix_count }}

+

Prefixes

+
+ +
+

{{ stats.circuit_count }}

+

Circuits

+
+
+

{{ stats.vm_count }}

+

Virtual Machines

+
+ +
- {% include 'inc/panels/image_attachments.html' %} - {% plugin_right_page object %} +
+ {% include 'inc/panels/contacts.html' %} +
+
Locations
+
+ {% if locations %} + + + + + + + + {% for location in locations %} + + + + + + + {% endfor %} +
LocationRacksDevices
+ {% for i in location.level|as_range %}{% endfor %} + {{ location }} + + {{ location.rack_count }} + + {{ location.device_count }} + + + + +
+ {% else %} + None + {% endif %} +
+ {% if perms.dcim.add_location %} + + {% endif %} +
+
+
ASNs
+
+ {% if asns %} + + + + + + {% for asn in asns %} + + + + + {% endfor %} +
ASNDescription
{{ asn }}{{ asn.description|placeholder }}
+ {% else %} + None + {% endif %} +
+ {% if perms.ipam.add_asn %} + + {% endif %} +
+ {% include 'inc/panels/image_attachments.html' %} + {% plugin_right_page object %}
-
- {% plugin_full_width_page object %} -
+
+ {% plugin_full_width_page object %} +
{% endblock %} From 26b2431cbf07afd9889e67e6e669d2674ee452ce Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Mon, 6 Dec 2021 14:38:13 -0500 Subject: [PATCH 287/289] Bump django-taggit to 2.0.0 --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index a4a16aa2f..d728493dc 100644 --- a/requirements.txt +++ b/requirements.txt @@ -9,7 +9,7 @@ django-prometheus==2.1.0 django-redis==5.1.0 django-rq==2.5.1 django-tables2==2.4.1 -django-taggit==1.5.1 +django-taggit==2.0.0 django-timezone-field==4.2.1 djangorestframework==3.12.4 drf-yasg[validation]==1.20.0 From 5561b46a59616714ff2578f0eeaeb371c5597521 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Mon, 6 Dec 2021 14:58:49 -0500 Subject: [PATCH 288/289] Finalize release notes --- docs/release-notes/version-3.1.md | 56 +++++++++---------------------- 1 file changed, 16 insertions(+), 40 deletions(-) diff --git a/docs/release-notes/version-3.1.md b/docs/release-notes/version-3.1.md index 0ab4a611d..b117107b6 100644 --- a/docs/release-notes/version-3.1.md +++ b/docs/release-notes/version-3.1.md @@ -1,44 +1,6 @@ -## v3.1-beta2 (FUTURE) +# NetBox v3.1 -### Breaking Changes - -* Exported webhooks and custom fields now reference associated content types by raw string value (e.g. "dcim.site") rather than by human-friendly name. -* The 128GFC interface type has been corrected from `128gfc-sfp28` to `128gfc-qsfp28`. - -### Enhancements - -* [#5143](https://github.com/netbox-community/netbox/issues/5143) - Include a device's asset tag in its display value -* [#7619](https://github.com/netbox-community/netbox/issues/7619) - Permit custom validation rules to be defined as plain data or dotted path to class -* [#7761](https://github.com/netbox-community/netbox/issues/7761) - Extend cable tracing across bridged interfaces -* [#7769](https://github.com/netbox-community/netbox/issues/7769) - Enable assignment of IP addresses to an existing FHRP group -* [#7775](https://github.com/netbox-community/netbox/issues/7775) - Enable dynamic config for `CHANGELOG_RETENTION`, `CUSTOM_VALIDATORS`, and `GRAPHQL_ENABLED` -* [#7812](https://github.com/netbox-community/netbox/issues/7812) - Enable change logging for image attachments -* [#7858](https://github.com/netbox-community/netbox/issues/7858) - Standardize the representation of content types across import & export functions -* [#7884](https://github.com/netbox-community/netbox/issues/7884) - Add FHRP groups column to interface tables -* [#7924](https://github.com/netbox-community/netbox/issues/7924) - Include child groups on contact group view -* [#7925](https://github.com/netbox-community/netbox/issues/7925) - Linkify contact phone and email attributes - -### Bug Fixes - -* [#7589](https://github.com/netbox-community/netbox/issues/7589) - Correct 128GFC interface type identifier -* [#7756](https://github.com/netbox-community/netbox/issues/7756) - Fix AttributeError exception when editing an IP address assigned to a FHRPGroup -* [#7757](https://github.com/netbox-community/netbox/issues/7757) - Fix 404 when assigning multiple contacts/FHRP groups in succession -* [#7768](https://github.com/netbox-community/netbox/issues/7768) - Validate IP address status when creating a new FHRP group -* [#7771](https://github.com/netbox-community/netbox/issues/7771) - Group assignment should be optional when creating contacts via REST API -* [#7849](https://github.com/netbox-community/netbox/issues/7849) - Fix exception when creating an FHRPGroup with an invalid IP address -* [#7880](https://github.com/netbox-community/netbox/issues/7880) - Include assigned IP addresses in FHRP group object representation -* [#7960](https://github.com/netbox-community/netbox/issues/7960) - Prevent creation of regions/site groups/locations with duplicate names (see #7354) - -### REST API Changes - -* dcim.Device - * The `display` field now includes the device's asset tag, if set -* extras.ImageAttachment - * Added the `last_updated` field - ---- - -## v3.1-beta1 (2021-11-05) +## v3.1.0 (2021-12-06) !!! warning "PostgreSQL 10 Required" NetBox v3.1 requires PostgreSQL 10 or later. @@ -47,6 +9,8 @@ * The `tenant` and `tenant_id` filters for the Cable model now filter on the tenant assigned directly to each cable, rather than on the parent object of either termination. * The `cable_peer` and `cable_peer_type` attributes of cable termination models have been renamed to `link_peer` and `link_peer_type`, respectively, to accommodate wireless links between interfaces. +* Exported webhooks and custom fields now reference associated content types by raw string value (e.g. "dcim.site") rather than by human-friendly name. +* The 128GFC interface type has been corrected from `128gfc-sfp28` to `128gfc-qsfp28`. ### New Features @@ -116,6 +80,7 @@ Support for single sign-on (SSO) authentication has been added via the [python-s * [#1337](https://github.com/netbox-community/netbox/issues/1337) - Add WWN field to interfaces * [#1943](https://github.com/netbox-community/netbox/issues/1943) - Relax uniqueness constraint on cluster names * [#3839](https://github.com/netbox-community/netbox/issues/3839) - Add `airflow` field for devices types and devices +* [#5143](https://github.com/netbox-community/netbox/issues/5143) - Include a device's asset tag in its display value * [#6497](https://github.com/netbox-community/netbox/issues/6497) - Extend tag support to organizational models * [#6615](https://github.com/netbox-community/netbox/issues/6615) - Add filter lookups for custom fields * [#6711](https://github.com/netbox-community/netbox/issues/6711) - Add `longtext` custom field type with Markdown support @@ -125,6 +90,14 @@ Support for single sign-on (SSO) authentication has been added via the [python-s * [#7452](https://github.com/netbox-community/netbox/issues/7452) - Add `json` custom field type * [#7530](https://github.com/netbox-community/netbox/issues/7530) - Move device type component lists to separate views * [#7606](https://github.com/netbox-community/netbox/issues/7606) - Model transmit power for interfaces +* [#7619](https://github.com/netbox-community/netbox/issues/7619) - Permit custom validation rules to be defined as plain data or dotted path to class +* [#7761](https://github.com/netbox-community/netbox/issues/7761) - Extend cable tracing across bridged interfaces +* [#7812](https://github.com/netbox-community/netbox/issues/7812) - Enable change logging for image attachments +* [#7858](https://github.com/netbox-community/netbox/issues/7858) - Standardize the representation of content types across import & export functions + +### Bug Fixes + +* [#7589](https://github.com/netbox-community/netbox/issues/7589) - Correct 128GFC interface type identifier ### Other Changes @@ -175,6 +148,7 @@ Support for single sign-on (SSO) authentication has been added via the [python-s * `cable_peer` has been renamed to `link_peer` * `cable_peer_type` has been renamed to `link_peer_type` * dcim.Device + * The `display` field now includes the device's asset tag, if set * Added `airflow` field * dcim.DeviceType * Added `airflow` field @@ -209,6 +183,8 @@ Support for single sign-on (SSO) authentication has been added via the [python-s * `cable_peer_type` has been renamed to `link_peer_type` * dcim.Site * Added `asns` relationship to ipam.ASN +* extras.ImageAttachment + * Added the `last_updated` field * extras.Webhook * Added the `conditions` field * virtualization.VMInterface From 5164b78da14c26f313fffb83da0c2263a672e340 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Mon, 6 Dec 2021 15:01:36 -0500 Subject: [PATCH 289/289] Release v3.1.0 --- .github/ISSUE_TEMPLATE/bug_report.yaml | 2 +- .github/ISSUE_TEMPLATE/feature_request.yaml | 2 +- netbox/netbox/settings.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.yaml b/.github/ISSUE_TEMPLATE/bug_report.yaml index b041c7ff4..66ead4f47 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yaml +++ b/.github/ISSUE_TEMPLATE/bug_report.yaml @@ -14,7 +14,7 @@ body: attributes: label: NetBox version description: What version of NetBox are you currently running? - placeholder: v3.0.12 + placeholder: v3.1.0 validations: required: true - type: dropdown diff --git a/.github/ISSUE_TEMPLATE/feature_request.yaml b/.github/ISSUE_TEMPLATE/feature_request.yaml index 0852b4f9b..dcc0b1a5f 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.yaml +++ b/.github/ISSUE_TEMPLATE/feature_request.yaml @@ -14,7 +14,7 @@ body: attributes: label: NetBox version description: What version of NetBox are you currently running? - placeholder: v3.0.12 + placeholder: v3.1.0 validations: required: true - type: dropdown diff --git a/netbox/netbox/settings.py b/netbox/netbox/settings.py index bcea11e30..20a6d5d02 100644 --- a/netbox/netbox/settings.py +++ b/netbox/netbox/settings.py @@ -19,7 +19,7 @@ from netbox.config import PARAMS # Environment setup # -VERSION = '3.1-beta1' +VERSION = '3.1.0' # Hostname HOSTNAME = platform.node()